diff options
637 files changed, 38067 insertions, 57177 deletions
@@ -37,18 +37,17 @@ stamp-h1 *.gmo .dirstamp po/stamp-po -src/aethyra +src/tmw # files created during Windows build .objs *.dll -aethyra.exe -aethyra.depend -aethyra.layout +tmw.exe +tmw.depend +tmw.layout # files copied in on Windows include/* lib/* packaging/windows/upx/* data/music/*.ogg - diff --git a/.mailmap b/.mailmap new file mode 100644 index 00000000..53b50072 --- /dev/null +++ b/.mailmap @@ -0,0 +1,4 @@ +Bjørn Lindeijer <bjorn@lindeijer.nl> +Bjørn Lindeijer <thorbjorn.lindeijer@nokia.com> +Majin Sniper <sniper@livecd.janhome.net> +Victor Fury <frictor@unknown> @@ -1,34 +1,6 @@ ---------------------------- -Aethyra Dev Team ---------------------------- - - Tametomo <irarice@gmail.com> - -== Programmers == - - Kraant <kraant@gmail.com> - Tametomo <irarice@gmail.com> - -== Artists == - - Frictor <frictor2(at)hotmail.com> - Angeliex - -== Map Designers == - - Ichigo Black (aka Gonzo Dark) - Arkyan - -== Inactive/Retired == - - Blameu aka Kevin Day (blame@aethyra.com.com) - Sanga <sanga@aethyra.com> - Scraggy <DougABoffey@netscape.net> - Sertraline - ------------------------ -The Mana World Dev Team ------------------------ +--------------------------------- +-- The Mana World Contributors -- +--------------------------------- This file lists all contributors up to the current release. Check the wiki for the currently active development team. @@ -50,8 +22,10 @@ Eric Scrivner <zenogais gmail.com> Fate <fate.tmw googlemail.com> Fredrik Reveny <chetic gmail.com> Guillaume Melquiond (Silene) <guillaume.melquiond gmail.com> +Ira Rice <irarice gmail.com> Jan-Fabian Humann (Mra) <malastare gmx.net> José Ávila <linux javila.net> +Joshua Langley <joshlangley optusnet.com.au> Kiyoshi Kyokai <kiyoshi.kyokai gmail.com> Lloyd Bryant <lloyd_bryant netzero.net> Marcel W. Wysocki <maci satgnu.org> @@ -80,6 +54,13 @@ Scott Ellis <quiche_on_a_leash hotmail.co.uk> Tatjana Ti Sing Hao +== Translators == + +Bjørn Lindeijer (Dutch) <bjorn lindeijer.nl> +Eugenio Favalli (Italian) <elvenprogrammer gmail.com> +Leif Kildelund (Danish) <gonzo.dark gmail.com> +Matthias Hartmann (German) <hartmann.matthias gmail.com> + == Other contributors == Jean-Francois Lampron <sull.kf gmail.com> diff --git a/Aethyra.xcodeproj/TemplateIcon.icns b/Aethyra.xcodeproj/TemplateIcon.icns Binary files differdeleted file mode 100644 index 62cb7015..00000000 --- a/Aethyra.xcodeproj/TemplateIcon.icns +++ /dev/null diff --git a/Aethyra.xcodeproj/project.pbxproj b/Aethyra.xcodeproj/project.pbxproj deleted file mode 100644 index d2bb8e5c..00000000 --- a/Aethyra.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1505 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; - 69E431BC0F451EF00058B232 /* aethyra.rc in Resources */ = {isa = PBXBuildFile; fileRef = 69E4305C0F451EF00058B232 /* aethyra.rc */; }; - 69E431BD0F451EF00058B232 /* animatedsprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4305D0F451EF00058B232 /* animatedsprite.cpp */; }; - 69E431BE0F451EF00058B232 /* animationparticle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4305F0F451EF00058B232 /* animationparticle.cpp */; }; - 69E431BF0F451EF00058B232 /* being.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430610F451EF00058B232 /* being.cpp */; }; - 69E431C00F451EF00058B232 /* beingmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430630F451EF00058B232 /* beingmanager.cpp */; }; - 69E431C10F451EF00058B232 /* CMakeLists.txt in Resources */ = {isa = PBXBuildFile; fileRef = 69E430650F451EF00058B232 /* CMakeLists.txt */; }; - 69E431C20F451EF00058B232 /* configuration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430670F451EF00058B232 /* configuration.cpp */; }; - 69E431C30F451EF00058B232 /* effectmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430690F451EF00058B232 /* effectmanager.cpp */; }; - 69E431C40F451EF00058B232 /* emoteshortcut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4306B0F451EF00058B232 /* emoteshortcut.cpp */; }; - 69E431C50F451EF00058B232 /* engine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4306D0F451EF00058B232 /* engine.cpp */; }; - 69E431C60F451EF00058B232 /* equipment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4306F0F451EF00058B232 /* equipment.cpp */; }; - 69E431C70F451EF00058B232 /* floor_item.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430710F451EF00058B232 /* floor_item.cpp */; }; - 69E431C80F451EF00058B232 /* flooritemmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430730F451EF00058B232 /* flooritemmanager.cpp */; }; - 69E431C90F451EF00058B232 /* game.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430750F451EF00058B232 /* game.cpp */; }; - 69E431CA0F451EF00058B232 /* graphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430770F451EF00058B232 /* graphics.cpp */; }; - 69E431CB0F451EF00058B232 /* browserbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4307A0F451EF00058B232 /* browserbox.cpp */; }; - 69E431CC0F451EF00058B232 /* button.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4307C0F451EF00058B232 /* button.cpp */; }; - 69E431CD0F451EF00058B232 /* buy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4307E0F451EF00058B232 /* buy.cpp */; }; - 69E431CE0F451EF00058B232 /* buysell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430800F451EF00058B232 /* buysell.cpp */; }; - 69E431CF0F451EF00058B232 /* char_select.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430820F451EF00058B232 /* char_select.cpp */; }; - 69E431D00F451EF00058B232 /* char_server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430840F451EF00058B232 /* char_server.cpp */; }; - 69E431D10F451EF00058B232 /* chat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430860F451EF00058B232 /* chat.cpp */; }; - 69E431D20F451EF00058B232 /* chatinput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430880F451EF00058B232 /* chatinput.cpp */; }; - 69E431D30F451EF00058B232 /* checkbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4308A0F451EF00058B232 /* checkbox.cpp */; }; - 69E431D40F451EF00058B232 /* color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4308C0F451EF00058B232 /* color.cpp */; }; - 69E431D50F451EF00058B232 /* confirm_dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4308E0F451EF00058B232 /* confirm_dialog.cpp */; }; - 69E431D60F451EF00058B232 /* connection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430900F451EF00058B232 /* connection.cpp */; }; - 69E431D70F451EF00058B232 /* debugwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430920F451EF00058B232 /* debugwindow.cpp */; }; - 69E431D80F451EF00058B232 /* emotecontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430940F451EF00058B232 /* emotecontainer.cpp */; }; - 69E431D90F451EF00058B232 /* emoteshortcutcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430960F451EF00058B232 /* emoteshortcutcontainer.cpp */; }; - 69E431DA0F451EF00058B232 /* emotewindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430980F451EF00058B232 /* emotewindow.cpp */; }; - 69E431DB0F451EF00058B232 /* equipmentwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4309A0F451EF00058B232 /* equipmentwindow.cpp */; }; - 69E431DC0F451EF00058B232 /* focushandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4309C0F451EF00058B232 /* focushandler.cpp */; }; - 69E431DD0F451EF00058B232 /* gccontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4309E0F451EF00058B232 /* gccontainer.cpp */; }; - 69E431DE0F451EF00058B232 /* gui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430A00F451EF00058B232 /* gui.cpp */; }; - 69E431DF0F451EF00058B232 /* help.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430A20F451EF00058B232 /* help.cpp */; }; - 69E431E00F451EF00058B232 /* inttextfield.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430A40F451EF00058B232 /* inttextfield.cpp */; }; - 69E431E10F451EF00058B232 /* inventorywindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430A60F451EF00058B232 /* inventorywindow.cpp */; }; - 69E431E20F451EF00058B232 /* item_amount.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430A80F451EF00058B232 /* item_amount.cpp */; }; - 69E431E30F451EF00058B232 /* itemcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430AA0F451EF00058B232 /* itemcontainer.cpp */; }; - 69E431E40F451EF00058B232 /* itemlinkhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430AC0F451EF00058B232 /* itemlinkhandler.cpp */; }; - 69E431E50F451EF00058B232 /* itempopup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430AE0F451EF00058B232 /* itempopup.cpp */; }; - 69E431E60F451EF00058B232 /* itemshortcutcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430B00F451EF00058B232 /* itemshortcutcontainer.cpp */; }; - 69E431E70F451EF00058B232 /* listbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430B30F451EF00058B232 /* listbox.cpp */; }; - 69E431E80F451EF00058B232 /* login.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430B50F451EF00058B232 /* login.cpp */; }; - 69E431E90F451EF00058B232 /* menuwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430B70F451EF00058B232 /* menuwindow.cpp */; }; - 69E431EA0F451EF00058B232 /* minimap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430B90F451EF00058B232 /* minimap.cpp */; }; - 69E431EB0F451EF00058B232 /* ministatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430BB0F451EF00058B232 /* ministatus.cpp */; }; - 69E431EC0F451EF00058B232 /* npc_text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430BD0F451EF00058B232 /* npc_text.cpp */; }; - 69E431ED0F451EF00058B232 /* npcintegerdialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430BF0F451EF00058B232 /* npcintegerdialog.cpp */; }; - 69E431EE0F451EF00058B232 /* npclistdialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430C10F451EF00058B232 /* npclistdialog.cpp */; }; - 69E431EF0F451EF00058B232 /* npcstringdialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430C30F451EF00058B232 /* npcstringdialog.cpp */; }; - 69E431F00F451EF00058B232 /* ok_dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430C50F451EF00058B232 /* ok_dialog.cpp */; }; - 69E431F10F451EF00058B232 /* passwordfield.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430C70F451EF00058B232 /* passwordfield.cpp */; }; - 69E431F20F451EF00058B232 /* playerbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430C90F451EF00058B232 /* playerbox.cpp */; }; - 69E431F30F451EF00058B232 /* popupmenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430CB0F451EF00058B232 /* popupmenu.cpp */; }; - 69E431F40F451EF00058B232 /* progressbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430CD0F451EF00058B232 /* progressbar.cpp */; }; - 69E431F50F451EF00058B232 /* radiobutton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430CF0F451EF00058B232 /* radiobutton.cpp */; }; - 69E431F60F451EF00058B232 /* recorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430D10F451EF00058B232 /* recorder.cpp */; }; - 69E431F70F451EF00058B232 /* register.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430D30F451EF00058B232 /* register.cpp */; }; - 69E431F80F451EF00058B232 /* scrollarea.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430D50F451EF00058B232 /* scrollarea.cpp */; }; - 69E431F90F451EF00058B232 /* sdlinput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430D70F451EF00058B232 /* sdlinput.cpp */; }; - 69E431FA0F451EF00058B232 /* sell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430D90F451EF00058B232 /* sell.cpp */; }; - 69E431FB0F451EF00058B232 /* setup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430DB0F451EF00058B232 /* setup.cpp */; }; - 69E431FC0F451EF00058B232 /* setup_audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430DD0F451EF00058B232 /* setup_audio.cpp */; }; - 69E431FD0F451EF00058B232 /* setup_colors.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430DF0F451EF00058B232 /* setup_colors.cpp */; }; - 69E431FE0F451EF00058B232 /* setup_joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430E10F451EF00058B232 /* setup_joystick.cpp */; }; - 69E431FF0F451EF00058B232 /* setup_keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430E30F451EF00058B232 /* setup_keyboard.cpp */; }; - 69E432000F451EF00058B232 /* setup_players.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430E50F451EF00058B232 /* setup_players.cpp */; }; - 69E432010F451EF00058B232 /* setup_video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430E70F451EF00058B232 /* setup_video.cpp */; }; - 69E432020F451EF00058B232 /* shop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430EA0F451EF00058B232 /* shop.cpp */; }; - 69E432030F451EF00058B232 /* shoplistbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430EC0F451EF00058B232 /* shoplistbox.cpp */; }; - 69E432040F451EF00058B232 /* shortcutcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430EE0F451EF00058B232 /* shortcutcontainer.cpp */; }; - 69E432050F451EF00058B232 /* shortcutwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430F00F451EF00058B232 /* shortcutwindow.cpp */; }; - 69E432060F451EF00058B232 /* skill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430F20F451EF00058B232 /* skill.cpp */; }; - 69E432070F451EF00058B232 /* slider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430F40F451EF00058B232 /* slider.cpp */; }; - 69E432080F451EF00058B232 /* speechbubble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430F60F451EF00058B232 /* speechbubble.cpp */; }; - 69E432090F451EF00058B232 /* status.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430F80F451EF00058B232 /* status.cpp */; }; - 69E4320A0F451EF00058B232 /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430FA0F451EF00058B232 /* table.cpp */; }; - 69E4320B0F451EF00058B232 /* table_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430FC0F451EF00058B232 /* table_model.cpp */; }; - 69E4320C0F451EF00058B232 /* textbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E430FE0F451EF00058B232 /* textbox.cpp */; }; - 69E4320D0F451EF00058B232 /* textfield.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431000F451EF00058B232 /* textfield.cpp */; }; - 69E4320E0F451EF00058B232 /* trade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431020F451EF00058B232 /* trade.cpp */; }; - 69E4320F0F451EF00058B232 /* truetypefont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431040F451EF00058B232 /* truetypefont.cpp */; }; - 69E432100F451EF00058B232 /* updatewindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431060F451EF00058B232 /* updatewindow.cpp */; }; - 69E432110F451EF00058B232 /* viewport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431080F451EF00058B232 /* viewport.cpp */; }; - 69E432120F451EF00058B232 /* dropdown.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4310B0F451EF00058B232 /* dropdown.cpp */; }; - 69E432130F451EF00058B232 /* layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4310D0F451EF00058B232 /* layout.cpp */; }; - 69E432140F451EF00058B232 /* layouthelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4310F0F451EF00058B232 /* layouthelper.cpp */; }; - 69E432150F451EF00058B232 /* resizegrip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431110F451EF00058B232 /* resizegrip.cpp */; }; - 69E432160F451EF00058B232 /* tab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431130F451EF00058B232 /* tab.cpp */; }; - 69E432170F451EF00058B232 /* tabbedarea.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431150F451EF00058B232 /* tabbedarea.cpp */; }; - 69E432180F451EF00058B232 /* window.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431170F451EF00058B232 /* window.cpp */; }; - 69E432190F451EF00058B232 /* windowcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431190F451EF00058B232 /* windowcontainer.cpp */; }; - 69E4321A0F451EF00058B232 /* imageparticle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4311C0F451EF00058B232 /* imageparticle.cpp */; }; - 69E4321B0F451EF00058B232 /* inventory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4311E0F451EF00058B232 /* inventory.cpp */; }; - 69E4321C0F451EF00058B232 /* item.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431200F451EF00058B232 /* item.cpp */; }; - 69E4321D0F451EF00058B232 /* itemshortcut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431220F451EF00058B232 /* itemshortcut.cpp */; }; - 69E4321E0F451EF00058B232 /* joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431240F451EF00058B232 /* joystick.cpp */; }; - 69E4321F0F451EF00058B232 /* keyboardconfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431260F451EF00058B232 /* keyboardconfig.cpp */; }; - 69E432200F451EF00058B232 /* localplayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431280F451EF00058B232 /* localplayer.cpp */; }; - 69E432210F451EF00058B232 /* log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4312B0F451EF00058B232 /* log.cpp */; }; - 69E432220F451EF00058B232 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4312E0F451EF00058B232 /* main.cpp */; }; - 69E432230F451EF00058B232 /* Makefile.am in Resources */ = {isa = PBXBuildFile; fileRef = 69E431300F451EF00058B232 /* Makefile.am */; }; - 69E432240F451EF00058B232 /* map.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431310F451EF00058B232 /* map.cpp */; }; - 69E432250F451EF00058B232 /* monster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431330F451EF00058B232 /* monster.cpp */; }; - 69E432260F451EF00058B232 /* beinghandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431360F451EF00058B232 /* beinghandler.cpp */; }; - 69E432270F451EF00058B232 /* buysellhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431380F451EF00058B232 /* buysellhandler.cpp */; }; - 69E432280F451EF00058B232 /* charserverhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4313A0F451EF00058B232 /* charserverhandler.cpp */; }; - 69E432290F451EF00058B232 /* chathandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4313C0F451EF00058B232 /* chathandler.cpp */; }; - 69E4322A0F451EF00058B232 /* equipmenthandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4313E0F451EF00058B232 /* equipmenthandler.cpp */; }; - 69E4322B0F451EF00058B232 /* inventoryhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431400F451EF00058B232 /* inventoryhandler.cpp */; }; - 69E4322C0F451EF00058B232 /* itemhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431420F451EF00058B232 /* itemhandler.cpp */; }; - 69E4322D0F451EF00058B232 /* loginhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431440F451EF00058B232 /* loginhandler.cpp */; }; - 69E4322E0F451EF00058B232 /* maploginhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431460F451EF00058B232 /* maploginhandler.cpp */; }; - 69E4322F0F451EF00058B232 /* messagehandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431480F451EF00058B232 /* messagehandler.cpp */; }; - 69E432300F451EF00058B232 /* messagein.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4314A0F451EF00058B232 /* messagein.cpp */; }; - 69E432310F451EF00058B232 /* messageout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4314C0F451EF00058B232 /* messageout.cpp */; }; - 69E432320F451EF00058B232 /* network.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4314E0F451EF00058B232 /* network.cpp */; }; - 69E432330F451EF00058B232 /* npchandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431500F451EF00058B232 /* npchandler.cpp */; }; - 69E432340F451EF00058B232 /* partyhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431520F451EF00058B232 /* partyhandler.cpp */; }; - 69E432350F451EF00058B232 /* playerhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431540F451EF00058B232 /* playerhandler.cpp */; }; - 69E432360F451EF00058B232 /* protocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431560F451EF00058B232 /* protocol.cpp */; }; - 69E432370F451EF00058B232 /* skillhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431580F451EF00058B232 /* skillhandler.cpp */; }; - 69E432380F451EF00058B232 /* tradehandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4315A0F451EF00058B232 /* tradehandler.cpp */; }; - 69E432390F451EF00058B232 /* npc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4315C0F451EF00058B232 /* npc.cpp */; }; - 69E4323A0F451EF00058B232 /* openglgraphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4315E0F451EF00058B232 /* openglgraphics.cpp */; }; - 69E4323B0F451EF00058B232 /* particle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431600F451EF00058B232 /* particle.cpp */; }; - 69E4323C0F451EF00058B232 /* particlecontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431620F451EF00058B232 /* particlecontainer.cpp */; }; - 69E4323D0F451EF00058B232 /* particleemitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431640F451EF00058B232 /* particleemitter.cpp */; }; - 69E4323E0F451EF00058B232 /* party.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431670F451EF00058B232 /* party.cpp */; }; - 69E4323F0F451EF00058B232 /* player.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431690F451EF00058B232 /* player.cpp */; }; - 69E432400F451EF00058B232 /* player_relations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4316B0F451EF00058B232 /* player_relations.cpp */; }; - 69E432410F451EF00058B232 /* position.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4316D0F451EF00058B232 /* position.cpp */; }; - 69E432420F451EF00058B232 /* action.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431710F451EF00058B232 /* action.cpp */; }; - 69E432430F451EF00058B232 /* ambientoverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431730F451EF00058B232 /* ambientoverlay.cpp */; }; - 69E432440F451EF00058B232 /* animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431750F451EF00058B232 /* animation.cpp */; }; - 69E432450F451EF00058B232 /* colordb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431770F451EF00058B232 /* colordb.cpp */; }; - 69E432460F451EF00058B232 /* dye.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431790F451EF00058B232 /* dye.cpp */; }; - 69E432470F451EF00058B232 /* emotedb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4317B0F451EF00058B232 /* emotedb.cpp */; }; - 69E432480F451EF00058B232 /* image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4317D0F451EF00058B232 /* image.cpp */; }; - 69E432490F451EF00058B232 /* imageloader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4317F0F451EF00058B232 /* imageloader.cpp */; }; - 69E4324A0F451EF00058B232 /* imageset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431810F451EF00058B232 /* imageset.cpp */; }; - 69E4324B0F451EF00058B232 /* imagewriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431830F451EF00058B232 /* imagewriter.cpp */; }; - 69E4324C0F451EF00058B232 /* itemdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431850F451EF00058B232 /* itemdb.cpp */; }; - 69E4324D0F451EF00058B232 /* iteminfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431870F451EF00058B232 /* iteminfo.cpp */; }; - 69E4324E0F451EF00058B232 /* mapreader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431890F451EF00058B232 /* mapreader.cpp */; }; - 69E4324F0F451EF00058B232 /* monsterdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4318B0F451EF00058B232 /* monsterdb.cpp */; }; - 69E432500F451EF00058B232 /* monsterinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4318D0F451EF00058B232 /* monsterinfo.cpp */; }; - 69E432510F451EF00058B232 /* music.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4318F0F451EF00058B232 /* music.cpp */; }; - 69E432520F451EF00058B232 /* npcdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431910F451EF00058B232 /* npcdb.cpp */; }; - 69E432530F451EF00058B232 /* resource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431930F451EF00058B232 /* resource.cpp */; }; - 69E432540F451EF00058B232 /* resourcemanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431950F451EF00058B232 /* resourcemanager.cpp */; }; - 69E432550F451EF00058B232 /* soundeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431970F451EF00058B232 /* soundeffect.cpp */; }; - 69E432560F451EF00058B232 /* spritedef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431990F451EF00058B232 /* spritedef.cpp */; }; - 69E432570F451EF00058B232 /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 69E4319C0F451EF00058B232 /* SDLMain.m */; }; - 69E432580F451EF00058B232 /* shopitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E4319E0F451EF00058B232 /* shopitem.cpp */; }; - 69E432590F451EF00058B232 /* simpleanimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431A00F451EF00058B232 /* simpleanimation.cpp */; }; - 69E4325A0F451EF00058B232 /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431A20F451EF00058B232 /* sound.cpp */; }; - 69E4325B0F451EF00058B232 /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431A50F451EF00058B232 /* text.cpp */; }; - 69E4325C0F451EF00058B232 /* textmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431A70F451EF00058B232 /* textmanager.cpp */; }; - 69E4325D0F451EF00058B232 /* textparticle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431A90F451EF00058B232 /* textparticle.cpp */; }; - 69E4325E0F451EF00058B232 /* base64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431AD0F451EF00058B232 /* base64.cpp */; }; - 69E4325F0F451EF00058B232 /* strprintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431B30F451EF00058B232 /* strprintf.cpp */; }; - 69E432600F451EF00058B232 /* xml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431B70F451EF00058B232 /* xml.cpp */; }; - 69E432610F451EF00058B232 /* vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E431B90F451EF00058B232 /* vector.cpp */; }; - 69E432650F451F050058B232 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E432640F451F050058B232 /* OpenGL.framework */; }; - 69E4326F0F451F160058B232 /* guichan.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E432660F451F160058B232 /* guichan.framework */; }; - 69E432700F451F170058B232 /* libpng.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E432670F451F160058B232 /* libpng.framework */; }; - 69E432710F451F170058B232 /* libxml.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E432680F451F160058B232 /* libxml.framework */; }; - 69E432720F451F170058B232 /* physfs.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E432690F451F160058B232 /* physfs.framework */; }; - 69E432730F451F170058B232 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E4326A0F451F160058B232 /* SDL.framework */; }; - 69E432740F451F170058B232 /* SDL_image.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E4326B0F451F160058B232 /* SDL_image.framework */; }; - 69E432750F451F170058B232 /* SDL_mixer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E4326C0F451F160058B232 /* SDL_mixer.framework */; }; - 69E432760F451F170058B232 /* SDL_net.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E4326D0F451F160058B232 /* SDL_net.framework */; }; - 69E432770F451F170058B232 /* SDL_ttf.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E4326E0F451F160058B232 /* SDL_ttf.framework */; }; - 69E432AE0F451F330058B232 /* guichan.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 69E432660F451F160058B232 /* guichan.framework */; }; - 69E432AF0F451F330058B232 /* libpng.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 69E432670F451F160058B232 /* libpng.framework */; }; - 69E432B00F451F330058B232 /* libxml.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 69E432680F451F160058B232 /* libxml.framework */; }; - 69E432B10F451F330058B232 /* physfs.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 69E432690F451F160058B232 /* physfs.framework */; }; - 69E432B20F451F330058B232 /* SDL.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 69E4326A0F451F160058B232 /* SDL.framework */; }; - 69E432B30F451F330058B232 /* SDL_image.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 69E4326B0F451F160058B232 /* SDL_image.framework */; }; - 69E432B40F451F330058B232 /* SDL_mixer.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 69E4326C0F451F160058B232 /* SDL_mixer.framework */; }; - 69E432B50F451F330058B232 /* SDL_net.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 69E4326D0F451F160058B232 /* SDL_net.framework */; }; - 69E432B60F451F330058B232 /* SDL_ttf.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 69E4326E0F451F160058B232 /* SDL_ttf.framework */; }; - 69E4330E0F452B880058B232 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E4330D0F452B880058B232 /* CoreFoundation.framework */; }; - 69E433130F452BA50058B232 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E433120F452BA50058B232 /* Carbon.framework */; }; - 69E433190F452BD40058B232 /* data in Resources */ = {isa = PBXBuildFile; fileRef = 69E433180F452BD40058B232 /* data */; }; - 69E433620F45304B0058B232 /* aethyra.png in Resources */ = {isa = PBXBuildFile; fileRef = 69E433610F45304B0058B232 /* aethyra.png */; }; - 69E433660F45311B0058B232 /* aethyra.icns in Resources */ = {isa = PBXBuildFile; fileRef = 69E433650F45311B0058B232 /* aethyra.icns */; }; - 69E439DE0F453DAC0058B232 /* libcurl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E439DD0F453DAC0058B232 /* libcurl.framework */; }; - 69E439E10F453DB30058B232 /* libcurl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 69E439DD0F453DAC0058B232 /* libcurl.framework */; }; - 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; - 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 69E432B70F451F520058B232 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 69E439E10F453DB30058B232 /* libcurl.framework in CopyFiles */, - 69E432AE0F451F330058B232 /* guichan.framework in CopyFiles */, - 69E432AF0F451F330058B232 /* libpng.framework in CopyFiles */, - 69E432B00F451F330058B232 /* libxml.framework in CopyFiles */, - 69E432B10F451F330058B232 /* physfs.framework in CopyFiles */, - 69E432B20F451F330058B232 /* SDL.framework in CopyFiles */, - 69E432B30F451F330058B232 /* SDL_image.framework in CopyFiles */, - 69E432B40F451F330058B232 /* SDL_mixer.framework in CopyFiles */, - 69E432B50F451F330058B232 /* SDL_net.framework in CopyFiles */, - 69E432B60F451F330058B232 /* SDL_ttf.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; - 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; - 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; }; - 1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; }; - 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; }; - 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; - 32CA4F630368D1EE00C91783 /* Aethyra_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Aethyra_Prefix.pch; sourceTree = "<group>"; }; - 69E4305C0F451EF00058B232 /* aethyra.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aethyra.rc; sourceTree = "<group>"; }; - 69E4305D0F451EF00058B232 /* animatedsprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = animatedsprite.cpp; sourceTree = "<group>"; }; - 69E4305E0F451EF00058B232 /* animatedsprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = animatedsprite.h; sourceTree = "<group>"; }; - 69E4305F0F451EF00058B232 /* animationparticle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = animationparticle.cpp; sourceTree = "<group>"; }; - 69E430600F451EF00058B232 /* animationparticle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = animationparticle.h; sourceTree = "<group>"; }; - 69E430610F451EF00058B232 /* being.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = being.cpp; sourceTree = "<group>"; }; - 69E430620F451EF00058B232 /* being.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = being.h; sourceTree = "<group>"; }; - 69E430630F451EF00058B232 /* beingmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = beingmanager.cpp; sourceTree = "<group>"; }; - 69E430640F451EF00058B232 /* beingmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = beingmanager.h; sourceTree = "<group>"; }; - 69E430650F451EF00058B232 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; }; - 69E430660F451EF00058B232 /* configlistener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configlistener.h; sourceTree = "<group>"; }; - 69E430670F451EF00058B232 /* configuration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = configuration.cpp; sourceTree = "<group>"; }; - 69E430680F451EF00058B232 /* configuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configuration.h; sourceTree = "<group>"; }; - 69E430690F451EF00058B232 /* effectmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = effectmanager.cpp; sourceTree = "<group>"; }; - 69E4306A0F451EF00058B232 /* effectmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = effectmanager.h; sourceTree = "<group>"; }; - 69E4306B0F451EF00058B232 /* emoteshortcut.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emoteshortcut.cpp; sourceTree = "<group>"; }; - 69E4306C0F451EF00058B232 /* emoteshortcut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emoteshortcut.h; sourceTree = "<group>"; }; - 69E4306D0F451EF00058B232 /* engine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = engine.cpp; sourceTree = "<group>"; }; - 69E4306E0F451EF00058B232 /* engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = engine.h; sourceTree = "<group>"; }; - 69E4306F0F451EF00058B232 /* equipment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = equipment.cpp; sourceTree = "<group>"; }; - 69E430700F451EF00058B232 /* equipment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = equipment.h; sourceTree = "<group>"; }; - 69E430710F451EF00058B232 /* floor_item.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = floor_item.cpp; sourceTree = "<group>"; }; - 69E430720F451EF00058B232 /* floor_item.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = floor_item.h; sourceTree = "<group>"; }; - 69E430730F451EF00058B232 /* flooritemmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flooritemmanager.cpp; sourceTree = "<group>"; }; - 69E430740F451EF00058B232 /* flooritemmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flooritemmanager.h; sourceTree = "<group>"; }; - 69E430750F451EF00058B232 /* game.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = game.cpp; sourceTree = "<group>"; }; - 69E430760F451EF00058B232 /* game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = game.h; sourceTree = "<group>"; }; - 69E430770F451EF00058B232 /* graphics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = graphics.cpp; sourceTree = "<group>"; }; - 69E430780F451EF00058B232 /* graphics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphics.h; sourceTree = "<group>"; }; - 69E4307A0F451EF00058B232 /* browserbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = browserbox.cpp; sourceTree = "<group>"; }; - 69E4307B0F451EF00058B232 /* browserbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = browserbox.h; sourceTree = "<group>"; }; - 69E4307C0F451EF00058B232 /* button.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = button.cpp; sourceTree = "<group>"; }; - 69E4307D0F451EF00058B232 /* button.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = button.h; sourceTree = "<group>"; }; - 69E4307E0F451EF00058B232 /* buy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = buy.cpp; sourceTree = "<group>"; }; - 69E4307F0F451EF00058B232 /* buy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buy.h; sourceTree = "<group>"; }; - 69E430800F451EF00058B232 /* buysell.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = buysell.cpp; sourceTree = "<group>"; }; - 69E430810F451EF00058B232 /* buysell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buysell.h; sourceTree = "<group>"; }; - 69E430820F451EF00058B232 /* char_select.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = char_select.cpp; sourceTree = "<group>"; }; - 69E430830F451EF00058B232 /* char_select.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = char_select.h; sourceTree = "<group>"; }; - 69E430840F451EF00058B232 /* char_server.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = char_server.cpp; sourceTree = "<group>"; }; - 69E430850F451EF00058B232 /* char_server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = char_server.h; sourceTree = "<group>"; }; - 69E430860F451EF00058B232 /* chat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = chat.cpp; sourceTree = "<group>"; }; - 69E430870F451EF00058B232 /* chat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chat.h; sourceTree = "<group>"; }; - 69E430880F451EF00058B232 /* chatinput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = chatinput.cpp; sourceTree = "<group>"; }; - 69E430890F451EF00058B232 /* chatinput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chatinput.h; sourceTree = "<group>"; }; - 69E4308A0F451EF00058B232 /* checkbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = checkbox.cpp; sourceTree = "<group>"; }; - 69E4308B0F451EF00058B232 /* checkbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = checkbox.h; sourceTree = "<group>"; }; - 69E4308C0F451EF00058B232 /* color.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = color.cpp; sourceTree = "<group>"; }; - 69E4308D0F451EF00058B232 /* color.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = color.h; sourceTree = "<group>"; }; - 69E4308E0F451EF00058B232 /* confirm_dialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = confirm_dialog.cpp; sourceTree = "<group>"; }; - 69E4308F0F451EF00058B232 /* confirm_dialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = confirm_dialog.h; sourceTree = "<group>"; }; - 69E430900F451EF00058B232 /* connection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = connection.cpp; sourceTree = "<group>"; }; - 69E430910F451EF00058B232 /* connection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = connection.h; sourceTree = "<group>"; }; - 69E430920F451EF00058B232 /* debugwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = debugwindow.cpp; sourceTree = "<group>"; }; - 69E430930F451EF00058B232 /* debugwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debugwindow.h; sourceTree = "<group>"; }; - 69E430940F451EF00058B232 /* emotecontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emotecontainer.cpp; sourceTree = "<group>"; }; - 69E430950F451EF00058B232 /* emotecontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emotecontainer.h; sourceTree = "<group>"; }; - 69E430960F451EF00058B232 /* emoteshortcutcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emoteshortcutcontainer.cpp; sourceTree = "<group>"; }; - 69E430970F451EF00058B232 /* emoteshortcutcontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emoteshortcutcontainer.h; sourceTree = "<group>"; }; - 69E430980F451EF00058B232 /* emotewindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emotewindow.cpp; sourceTree = "<group>"; }; - 69E430990F451EF00058B232 /* emotewindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emotewindow.h; sourceTree = "<group>"; }; - 69E4309A0F451EF00058B232 /* equipmentwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = equipmentwindow.cpp; sourceTree = "<group>"; }; - 69E4309B0F451EF00058B232 /* equipmentwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = equipmentwindow.h; sourceTree = "<group>"; }; - 69E4309C0F451EF00058B232 /* focushandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = focushandler.cpp; sourceTree = "<group>"; }; - 69E4309D0F451EF00058B232 /* focushandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = focushandler.h; sourceTree = "<group>"; }; - 69E4309E0F451EF00058B232 /* gccontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gccontainer.cpp; sourceTree = "<group>"; }; - 69E4309F0F451EF00058B232 /* gccontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gccontainer.h; sourceTree = "<group>"; }; - 69E430A00F451EF00058B232 /* gui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gui.cpp; sourceTree = "<group>"; }; - 69E430A10F451EF00058B232 /* gui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gui.h; sourceTree = "<group>"; }; - 69E430A20F451EF00058B232 /* help.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = help.cpp; sourceTree = "<group>"; }; - 69E430A30F451EF00058B232 /* help.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = help.h; sourceTree = "<group>"; }; - 69E430A40F451EF00058B232 /* inttextfield.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inttextfield.cpp; sourceTree = "<group>"; }; - 69E430A50F451EF00058B232 /* inttextfield.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inttextfield.h; sourceTree = "<group>"; }; - 69E430A60F451EF00058B232 /* inventorywindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inventorywindow.cpp; sourceTree = "<group>"; }; - 69E430A70F451EF00058B232 /* inventorywindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inventorywindow.h; sourceTree = "<group>"; }; - 69E430A80F451EF00058B232 /* item_amount.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = item_amount.cpp; sourceTree = "<group>"; }; - 69E430A90F451EF00058B232 /* item_amount.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = item_amount.h; sourceTree = "<group>"; }; - 69E430AA0F451EF00058B232 /* itemcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itemcontainer.cpp; sourceTree = "<group>"; }; - 69E430AB0F451EF00058B232 /* itemcontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemcontainer.h; sourceTree = "<group>"; }; - 69E430AC0F451EF00058B232 /* itemlinkhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itemlinkhandler.cpp; sourceTree = "<group>"; }; - 69E430AD0F451EF00058B232 /* itemlinkhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemlinkhandler.h; sourceTree = "<group>"; }; - 69E430AE0F451EF00058B232 /* itempopup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itempopup.cpp; sourceTree = "<group>"; }; - 69E430AF0F451EF00058B232 /* itempopup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itempopup.h; sourceTree = "<group>"; }; - 69E430B00F451EF00058B232 /* itemshortcutcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itemshortcutcontainer.cpp; sourceTree = "<group>"; }; - 69E430B10F451EF00058B232 /* itemshortcutcontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemshortcutcontainer.h; sourceTree = "<group>"; }; - 69E430B20F451EF00058B232 /* linkhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linkhandler.h; sourceTree = "<group>"; }; - 69E430B30F451EF00058B232 /* listbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = listbox.cpp; sourceTree = "<group>"; }; - 69E430B40F451EF00058B232 /* listbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = listbox.h; sourceTree = "<group>"; }; - 69E430B50F451EF00058B232 /* login.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = login.cpp; sourceTree = "<group>"; }; - 69E430B60F451EF00058B232 /* login.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = login.h; sourceTree = "<group>"; }; - 69E430B70F451EF00058B232 /* menuwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = menuwindow.cpp; sourceTree = "<group>"; }; - 69E430B80F451EF00058B232 /* menuwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = menuwindow.h; sourceTree = "<group>"; }; - 69E430B90F451EF00058B232 /* minimap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = minimap.cpp; sourceTree = "<group>"; }; - 69E430BA0F451EF00058B232 /* minimap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = minimap.h; sourceTree = "<group>"; }; - 69E430BB0F451EF00058B232 /* ministatus.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ministatus.cpp; sourceTree = "<group>"; }; - 69E430BC0F451EF00058B232 /* ministatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ministatus.h; sourceTree = "<group>"; }; - 69E430BD0F451EF00058B232 /* npc_text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npc_text.cpp; sourceTree = "<group>"; }; - 69E430BE0F451EF00058B232 /* npc_text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npc_text.h; sourceTree = "<group>"; }; - 69E430BF0F451EF00058B232 /* npcintegerdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npcintegerdialog.cpp; sourceTree = "<group>"; }; - 69E430C00F451EF00058B232 /* npcintegerdialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npcintegerdialog.h; sourceTree = "<group>"; }; - 69E430C10F451EF00058B232 /* npclistdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npclistdialog.cpp; sourceTree = "<group>"; }; - 69E430C20F451EF00058B232 /* npclistdialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npclistdialog.h; sourceTree = "<group>"; }; - 69E430C30F451EF00058B232 /* npcstringdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npcstringdialog.cpp; sourceTree = "<group>"; }; - 69E430C40F451EF00058B232 /* npcstringdialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npcstringdialog.h; sourceTree = "<group>"; }; - 69E430C50F451EF00058B232 /* ok_dialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ok_dialog.cpp; sourceTree = "<group>"; }; - 69E430C60F451EF00058B232 /* ok_dialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ok_dialog.h; sourceTree = "<group>"; }; - 69E430C70F451EF00058B232 /* passwordfield.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = passwordfield.cpp; sourceTree = "<group>"; }; - 69E430C80F451EF00058B232 /* passwordfield.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = passwordfield.h; sourceTree = "<group>"; }; - 69E430C90F451EF00058B232 /* playerbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = playerbox.cpp; sourceTree = "<group>"; }; - 69E430CA0F451EF00058B232 /* playerbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = playerbox.h; sourceTree = "<group>"; }; - 69E430CB0F451EF00058B232 /* popupmenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = popupmenu.cpp; sourceTree = "<group>"; }; - 69E430CC0F451EF00058B232 /* popupmenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = popupmenu.h; sourceTree = "<group>"; }; - 69E430CD0F451EF00058B232 /* progressbar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = progressbar.cpp; sourceTree = "<group>"; }; - 69E430CE0F451EF00058B232 /* progressbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = progressbar.h; sourceTree = "<group>"; }; - 69E430CF0F451EF00058B232 /* radiobutton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = radiobutton.cpp; sourceTree = "<group>"; }; - 69E430D00F451EF00058B232 /* radiobutton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = radiobutton.h; sourceTree = "<group>"; }; - 69E430D10F451EF00058B232 /* recorder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = recorder.cpp; sourceTree = "<group>"; }; - 69E430D20F451EF00058B232 /* recorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = recorder.h; sourceTree = "<group>"; }; - 69E430D30F451EF00058B232 /* register.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = register.cpp; sourceTree = "<group>"; }; - 69E430D40F451EF00058B232 /* register.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = register.h; sourceTree = "<group>"; }; - 69E430D50F451EF00058B232 /* scrollarea.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scrollarea.cpp; sourceTree = "<group>"; }; - 69E430D60F451EF00058B232 /* scrollarea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scrollarea.h; sourceTree = "<group>"; }; - 69E430D70F451EF00058B232 /* sdlinput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sdlinput.cpp; sourceTree = "<group>"; }; - 69E430D80F451EF00058B232 /* sdlinput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sdlinput.h; sourceTree = "<group>"; }; - 69E430D90F451EF00058B232 /* sell.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sell.cpp; sourceTree = "<group>"; }; - 69E430DA0F451EF00058B232 /* sell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sell.h; sourceTree = "<group>"; }; - 69E430DB0F451EF00058B232 /* setup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = setup.cpp; sourceTree = "<group>"; }; - 69E430DC0F451EF00058B232 /* setup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setup.h; sourceTree = "<group>"; }; - 69E430DD0F451EF00058B232 /* setup_audio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = setup_audio.cpp; sourceTree = "<group>"; }; - 69E430DE0F451EF00058B232 /* setup_audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setup_audio.h; sourceTree = "<group>"; }; - 69E430DF0F451EF00058B232 /* setup_colors.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = setup_colors.cpp; sourceTree = "<group>"; }; - 69E430E00F451EF00058B232 /* setup_colors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setup_colors.h; sourceTree = "<group>"; }; - 69E430E10F451EF00058B232 /* setup_joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = setup_joystick.cpp; sourceTree = "<group>"; }; - 69E430E20F451EF00058B232 /* setup_joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setup_joystick.h; sourceTree = "<group>"; }; - 69E430E30F451EF00058B232 /* setup_keyboard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = setup_keyboard.cpp; sourceTree = "<group>"; }; - 69E430E40F451EF00058B232 /* setup_keyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setup_keyboard.h; sourceTree = "<group>"; }; - 69E430E50F451EF00058B232 /* setup_players.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = setup_players.cpp; sourceTree = "<group>"; }; - 69E430E60F451EF00058B232 /* setup_players.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setup_players.h; sourceTree = "<group>"; }; - 69E430E70F451EF00058B232 /* setup_video.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = setup_video.cpp; sourceTree = "<group>"; }; - 69E430E80F451EF00058B232 /* setup_video.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setup_video.h; sourceTree = "<group>"; }; - 69E430E90F451EF00058B232 /* setuptab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setuptab.h; sourceTree = "<group>"; }; - 69E430EA0F451EF00058B232 /* shop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shop.cpp; sourceTree = "<group>"; }; - 69E430EB0F451EF00058B232 /* shop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shop.h; sourceTree = "<group>"; }; - 69E430EC0F451EF00058B232 /* shoplistbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shoplistbox.cpp; sourceTree = "<group>"; }; - 69E430ED0F451EF00058B232 /* shoplistbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shoplistbox.h; sourceTree = "<group>"; }; - 69E430EE0F451EF00058B232 /* shortcutcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shortcutcontainer.cpp; sourceTree = "<group>"; }; - 69E430EF0F451EF00058B232 /* shortcutcontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shortcutcontainer.h; sourceTree = "<group>"; }; - 69E430F00F451EF00058B232 /* shortcutwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shortcutwindow.cpp; sourceTree = "<group>"; }; - 69E430F10F451EF00058B232 /* shortcutwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shortcutwindow.h; sourceTree = "<group>"; }; - 69E430F20F451EF00058B232 /* skill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = skill.cpp; sourceTree = "<group>"; }; - 69E430F30F451EF00058B232 /* skill.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = skill.h; sourceTree = "<group>"; }; - 69E430F40F451EF00058B232 /* slider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = slider.cpp; sourceTree = "<group>"; }; - 69E430F50F451EF00058B232 /* slider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = slider.h; sourceTree = "<group>"; }; - 69E430F60F451EF00058B232 /* speechbubble.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = speechbubble.cpp; sourceTree = "<group>"; }; - 69E430F70F451EF00058B232 /* speechbubble.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speechbubble.h; sourceTree = "<group>"; }; - 69E430F80F451EF00058B232 /* status.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = status.cpp; sourceTree = "<group>"; }; - 69E430F90F451EF00058B232 /* status.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = status.h; sourceTree = "<group>"; }; - 69E430FA0F451EF00058B232 /* table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = table.cpp; sourceTree = "<group>"; }; - 69E430FB0F451EF00058B232 /* table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = table.h; sourceTree = "<group>"; }; - 69E430FC0F451EF00058B232 /* table_model.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = table_model.cpp; sourceTree = "<group>"; }; - 69E430FD0F451EF00058B232 /* table_model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = table_model.h; sourceTree = "<group>"; }; - 69E430FE0F451EF00058B232 /* textbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = textbox.cpp; sourceTree = "<group>"; }; - 69E430FF0F451EF00058B232 /* textbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = textbox.h; sourceTree = "<group>"; }; - 69E431000F451EF00058B232 /* textfield.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = textfield.cpp; sourceTree = "<group>"; }; - 69E431010F451EF00058B232 /* textfield.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = textfield.h; sourceTree = "<group>"; }; - 69E431020F451EF00058B232 /* trade.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = trade.cpp; sourceTree = "<group>"; }; - 69E431030F451EF00058B232 /* trade.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trade.h; sourceTree = "<group>"; }; - 69E431040F451EF00058B232 /* truetypefont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = truetypefont.cpp; sourceTree = "<group>"; }; - 69E431050F451EF00058B232 /* truetypefont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = truetypefont.h; sourceTree = "<group>"; }; - 69E431060F451EF00058B232 /* updatewindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = updatewindow.cpp; sourceTree = "<group>"; }; - 69E431070F451EF00058B232 /* updatewindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = updatewindow.h; sourceTree = "<group>"; }; - 69E431080F451EF00058B232 /* viewport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = viewport.cpp; sourceTree = "<group>"; }; - 69E431090F451EF00058B232 /* viewport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = viewport.h; sourceTree = "<group>"; }; - 69E4310B0F451EF00058B232 /* dropdown.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dropdown.cpp; sourceTree = "<group>"; }; - 69E4310C0F451EF00058B232 /* dropdown.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dropdown.h; sourceTree = "<group>"; }; - 69E4310D0F451EF00058B232 /* layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = layout.cpp; sourceTree = "<group>"; }; - 69E4310E0F451EF00058B232 /* layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = layout.h; sourceTree = "<group>"; }; - 69E4310F0F451EF00058B232 /* layouthelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = layouthelper.cpp; sourceTree = "<group>"; }; - 69E431100F451EF00058B232 /* layouthelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = layouthelper.h; sourceTree = "<group>"; }; - 69E431110F451EF00058B232 /* resizegrip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resizegrip.cpp; sourceTree = "<group>"; }; - 69E431120F451EF00058B232 /* resizegrip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resizegrip.h; sourceTree = "<group>"; }; - 69E431130F451EF00058B232 /* tab.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tab.cpp; sourceTree = "<group>"; }; - 69E431140F451EF00058B232 /* tab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tab.h; sourceTree = "<group>"; }; - 69E431150F451EF00058B232 /* tabbedarea.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tabbedarea.cpp; sourceTree = "<group>"; }; - 69E431160F451EF00058B232 /* tabbedarea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tabbedarea.h; sourceTree = "<group>"; }; - 69E431170F451EF00058B232 /* window.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = window.cpp; sourceTree = "<group>"; }; - 69E431180F451EF00058B232 /* window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = window.h; sourceTree = "<group>"; }; - 69E431190F451EF00058B232 /* windowcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = windowcontainer.cpp; sourceTree = "<group>"; }; - 69E4311A0F451EF00058B232 /* windowcontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = windowcontainer.h; sourceTree = "<group>"; }; - 69E4311B0F451EF00058B232 /* guichanfwd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guichanfwd.h; sourceTree = "<group>"; }; - 69E4311C0F451EF00058B232 /* imageparticle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = imageparticle.cpp; sourceTree = "<group>"; }; - 69E4311D0F451EF00058B232 /* imageparticle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = imageparticle.h; sourceTree = "<group>"; }; - 69E4311E0F451EF00058B232 /* inventory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inventory.cpp; sourceTree = "<group>"; }; - 69E4311F0F451EF00058B232 /* inventory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inventory.h; sourceTree = "<group>"; }; - 69E431200F451EF00058B232 /* item.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = item.cpp; sourceTree = "<group>"; }; - 69E431210F451EF00058B232 /* item.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = item.h; sourceTree = "<group>"; }; - 69E431220F451EF00058B232 /* itemshortcut.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itemshortcut.cpp; sourceTree = "<group>"; }; - 69E431230F451EF00058B232 /* itemshortcut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemshortcut.h; sourceTree = "<group>"; }; - 69E431240F451EF00058B232 /* joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = joystick.cpp; sourceTree = "<group>"; }; - 69E431250F451EF00058B232 /* joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = joystick.h; sourceTree = "<group>"; }; - 69E431260F451EF00058B232 /* keyboardconfig.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = keyboardconfig.cpp; sourceTree = "<group>"; }; - 69E431270F451EF00058B232 /* keyboardconfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = keyboardconfig.h; sourceTree = "<group>"; }; - 69E431280F451EF00058B232 /* localplayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = localplayer.cpp; sourceTree = "<group>"; }; - 69E431290F451EF00058B232 /* localplayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = localplayer.h; sourceTree = "<group>"; }; - 69E4312A0F451EF00058B232 /* lockedarray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lockedarray.h; sourceTree = "<group>"; }; - 69E4312B0F451EF00058B232 /* log.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = log.cpp; sourceTree = "<group>"; }; - 69E4312C0F451EF00058B232 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; }; - 69E4312D0F451EF00058B232 /* logindata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = logindata.h; sourceTree = "<group>"; }; - 69E4312E0F451EF00058B232 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; }; - 69E4312F0F451EF00058B232 /* main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = "<group>"; }; - 69E431300F451EF00058B232 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; }; - 69E431310F451EF00058B232 /* map.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = map.cpp; sourceTree = "<group>"; }; - 69E431320F451EF00058B232 /* map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = map.h; sourceTree = "<group>"; }; - 69E431330F451EF00058B232 /* monster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = monster.cpp; sourceTree = "<group>"; }; - 69E431340F451EF00058B232 /* monster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = monster.h; sourceTree = "<group>"; }; - 69E431360F451EF00058B232 /* beinghandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = beinghandler.cpp; sourceTree = "<group>"; }; - 69E431370F451EF00058B232 /* beinghandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = beinghandler.h; sourceTree = "<group>"; }; - 69E431380F451EF00058B232 /* buysellhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = buysellhandler.cpp; sourceTree = "<group>"; }; - 69E431390F451EF00058B232 /* buysellhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buysellhandler.h; sourceTree = "<group>"; }; - 69E4313A0F451EF00058B232 /* charserverhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = charserverhandler.cpp; sourceTree = "<group>"; }; - 69E4313B0F451EF00058B232 /* charserverhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = charserverhandler.h; sourceTree = "<group>"; }; - 69E4313C0F451EF00058B232 /* chathandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = chathandler.cpp; sourceTree = "<group>"; }; - 69E4313D0F451EF00058B232 /* chathandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chathandler.h; sourceTree = "<group>"; }; - 69E4313E0F451EF00058B232 /* equipmenthandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = equipmenthandler.cpp; sourceTree = "<group>"; }; - 69E4313F0F451EF00058B232 /* equipmenthandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = equipmenthandler.h; sourceTree = "<group>"; }; - 69E431400F451EF00058B232 /* inventoryhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inventoryhandler.cpp; sourceTree = "<group>"; }; - 69E431410F451EF00058B232 /* inventoryhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inventoryhandler.h; sourceTree = "<group>"; }; - 69E431420F451EF00058B232 /* itemhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itemhandler.cpp; sourceTree = "<group>"; }; - 69E431430F451EF00058B232 /* itemhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemhandler.h; sourceTree = "<group>"; }; - 69E431440F451EF00058B232 /* loginhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loginhandler.cpp; sourceTree = "<group>"; }; - 69E431450F451EF00058B232 /* loginhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loginhandler.h; sourceTree = "<group>"; }; - 69E431460F451EF00058B232 /* maploginhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = maploginhandler.cpp; sourceTree = "<group>"; }; - 69E431470F451EF00058B232 /* maploginhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maploginhandler.h; sourceTree = "<group>"; }; - 69E431480F451EF00058B232 /* messagehandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = messagehandler.cpp; sourceTree = "<group>"; }; - 69E431490F451EF00058B232 /* messagehandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = messagehandler.h; sourceTree = "<group>"; }; - 69E4314A0F451EF00058B232 /* messagein.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = messagein.cpp; sourceTree = "<group>"; }; - 69E4314B0F451EF00058B232 /* messagein.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = messagein.h; sourceTree = "<group>"; }; - 69E4314C0F451EF00058B232 /* messageout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = messageout.cpp; sourceTree = "<group>"; }; - 69E4314D0F451EF00058B232 /* messageout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = messageout.h; sourceTree = "<group>"; }; - 69E4314E0F451EF00058B232 /* network.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = network.cpp; sourceTree = "<group>"; }; - 69E4314F0F451EF00058B232 /* network.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = network.h; sourceTree = "<group>"; }; - 69E431500F451EF00058B232 /* npchandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npchandler.cpp; sourceTree = "<group>"; }; - 69E431510F451EF00058B232 /* npchandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npchandler.h; sourceTree = "<group>"; }; - 69E431520F451EF00058B232 /* partyhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = partyhandler.cpp; sourceTree = "<group>"; }; - 69E431530F451EF00058B232 /* partyhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = partyhandler.h; sourceTree = "<group>"; }; - 69E431540F451EF00058B232 /* playerhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = playerhandler.cpp; sourceTree = "<group>"; }; - 69E431550F451EF00058B232 /* playerhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = playerhandler.h; sourceTree = "<group>"; }; - 69E431560F451EF00058B232 /* protocol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = protocol.cpp; sourceTree = "<group>"; }; - 69E431570F451EF00058B232 /* protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = protocol.h; sourceTree = "<group>"; }; - 69E431580F451EF00058B232 /* skillhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = skillhandler.cpp; sourceTree = "<group>"; }; - 69E431590F451EF00058B232 /* skillhandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = skillhandler.h; sourceTree = "<group>"; }; - 69E4315A0F451EF00058B232 /* tradehandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tradehandler.cpp; sourceTree = "<group>"; }; - 69E4315B0F451EF00058B232 /* tradehandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tradehandler.h; sourceTree = "<group>"; }; - 69E4315C0F451EF00058B232 /* npc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npc.cpp; sourceTree = "<group>"; }; - 69E4315D0F451EF00058B232 /* npc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npc.h; sourceTree = "<group>"; }; - 69E4315E0F451EF00058B232 /* openglgraphics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = openglgraphics.cpp; sourceTree = "<group>"; }; - 69E4315F0F451EF00058B232 /* openglgraphics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = openglgraphics.h; sourceTree = "<group>"; }; - 69E431600F451EF00058B232 /* particle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = particle.cpp; sourceTree = "<group>"; }; - 69E431610F451EF00058B232 /* particle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = particle.h; sourceTree = "<group>"; }; - 69E431620F451EF00058B232 /* particlecontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = particlecontainer.cpp; sourceTree = "<group>"; }; - 69E431630F451EF00058B232 /* particlecontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = particlecontainer.h; sourceTree = "<group>"; }; - 69E431640F451EF00058B232 /* particleemitter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = particleemitter.cpp; sourceTree = "<group>"; }; - 69E431650F451EF00058B232 /* particleemitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = particleemitter.h; sourceTree = "<group>"; }; - 69E431660F451EF00058B232 /* particleemitterprop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = particleemitterprop.h; sourceTree = "<group>"; }; - 69E431670F451EF00058B232 /* party.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = party.cpp; sourceTree = "<group>"; }; - 69E431680F451EF00058B232 /* party.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = party.h; sourceTree = "<group>"; }; - 69E431690F451EF00058B232 /* player.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = player.cpp; sourceTree = "<group>"; }; - 69E4316A0F451EF00058B232 /* player.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = player.h; sourceTree = "<group>"; }; - 69E4316B0F451EF00058B232 /* player_relations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = player_relations.cpp; sourceTree = "<group>"; }; - 69E4316C0F451EF00058B232 /* player_relations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = player_relations.h; sourceTree = "<group>"; }; - 69E4316D0F451EF00058B232 /* position.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = position.cpp; sourceTree = "<group>"; }; - 69E4316E0F451EF00058B232 /* position.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = position.h; sourceTree = "<group>"; }; - 69E4316F0F451EF00058B232 /* properties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = properties.h; sourceTree = "<group>"; }; - 69E431710F451EF00058B232 /* action.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = action.cpp; sourceTree = "<group>"; }; - 69E431720F451EF00058B232 /* action.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = action.h; sourceTree = "<group>"; }; - 69E431730F451EF00058B232 /* ambientoverlay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ambientoverlay.cpp; sourceTree = "<group>"; }; - 69E431740F451EF00058B232 /* ambientoverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ambientoverlay.h; sourceTree = "<group>"; }; - 69E431750F451EF00058B232 /* animation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = animation.cpp; sourceTree = "<group>"; }; - 69E431760F451EF00058B232 /* animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = animation.h; sourceTree = "<group>"; }; - 69E431770F451EF00058B232 /* colordb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = colordb.cpp; sourceTree = "<group>"; }; - 69E431780F451EF00058B232 /* colordb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = colordb.h; sourceTree = "<group>"; }; - 69E431790F451EF00058B232 /* dye.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dye.cpp; sourceTree = "<group>"; }; - 69E4317A0F451EF00058B232 /* dye.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dye.h; sourceTree = "<group>"; }; - 69E4317B0F451EF00058B232 /* emotedb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emotedb.cpp; sourceTree = "<group>"; }; - 69E4317C0F451EF00058B232 /* emotedb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emotedb.h; sourceTree = "<group>"; }; - 69E4317D0F451EF00058B232 /* image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = image.cpp; sourceTree = "<group>"; }; - 69E4317E0F451EF00058B232 /* image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = image.h; sourceTree = "<group>"; }; - 69E4317F0F451EF00058B232 /* imageloader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = imageloader.cpp; sourceTree = "<group>"; }; - 69E431800F451EF00058B232 /* imageloader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = imageloader.h; sourceTree = "<group>"; }; - 69E431810F451EF00058B232 /* imageset.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = imageset.cpp; sourceTree = "<group>"; }; - 69E431820F451EF00058B232 /* imageset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = imageset.h; sourceTree = "<group>"; }; - 69E431830F451EF00058B232 /* imagewriter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = imagewriter.cpp; sourceTree = "<group>"; }; - 69E431840F451EF00058B232 /* imagewriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = imagewriter.h; sourceTree = "<group>"; }; - 69E431850F451EF00058B232 /* itemdb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itemdb.cpp; sourceTree = "<group>"; }; - 69E431860F451EF00058B232 /* itemdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemdb.h; sourceTree = "<group>"; }; - 69E431870F451EF00058B232 /* iteminfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iteminfo.cpp; sourceTree = "<group>"; }; - 69E431880F451EF00058B232 /* iteminfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iteminfo.h; sourceTree = "<group>"; }; - 69E431890F451EF00058B232 /* mapreader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mapreader.cpp; sourceTree = "<group>"; }; - 69E4318A0F451EF00058B232 /* mapreader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mapreader.h; sourceTree = "<group>"; }; - 69E4318B0F451EF00058B232 /* monsterdb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = monsterdb.cpp; sourceTree = "<group>"; }; - 69E4318C0F451EF00058B232 /* monsterdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = monsterdb.h; sourceTree = "<group>"; }; - 69E4318D0F451EF00058B232 /* monsterinfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = monsterinfo.cpp; sourceTree = "<group>"; }; - 69E4318E0F451EF00058B232 /* monsterinfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = monsterinfo.h; sourceTree = "<group>"; }; - 69E4318F0F451EF00058B232 /* music.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = music.cpp; sourceTree = "<group>"; }; - 69E431900F451EF00058B232 /* music.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = music.h; sourceTree = "<group>"; }; - 69E431910F451EF00058B232 /* npcdb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npcdb.cpp; sourceTree = "<group>"; }; - 69E431920F451EF00058B232 /* npcdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npcdb.h; sourceTree = "<group>"; }; - 69E431930F451EF00058B232 /* resource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resource.cpp; sourceTree = "<group>"; }; - 69E431940F451EF00058B232 /* resource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = "<group>"; }; - 69E431950F451EF00058B232 /* resourcemanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resourcemanager.cpp; sourceTree = "<group>"; }; - 69E431960F451EF00058B232 /* resourcemanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resourcemanager.h; sourceTree = "<group>"; }; - 69E431970F451EF00058B232 /* soundeffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = soundeffect.cpp; sourceTree = "<group>"; }; - 69E431980F451EF00058B232 /* soundeffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = soundeffect.h; sourceTree = "<group>"; }; - 69E431990F451EF00058B232 /* spritedef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spritedef.cpp; sourceTree = "<group>"; }; - 69E4319A0F451EF00058B232 /* spritedef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spritedef.h; sourceTree = "<group>"; }; - 69E4319B0F451EF00058B232 /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMain.h; sourceTree = "<group>"; }; - 69E4319C0F451EF00058B232 /* SDLMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMain.m; sourceTree = "<group>"; }; - 69E4319D0F451EF00058B232 /* serverinfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serverinfo.h; sourceTree = "<group>"; }; - 69E4319E0F451EF00058B232 /* shopitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shopitem.cpp; sourceTree = "<group>"; }; - 69E4319F0F451EF00058B232 /* shopitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shopitem.h; sourceTree = "<group>"; }; - 69E431A00F451EF00058B232 /* simpleanimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simpleanimation.cpp; sourceTree = "<group>"; }; - 69E431A10F451EF00058B232 /* simpleanimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simpleanimation.h; sourceTree = "<group>"; }; - 69E431A20F451EF00058B232 /* sound.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sound.cpp; sourceTree = "<group>"; }; - 69E431A30F451EF00058B232 /* sound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sound.h; sourceTree = "<group>"; }; - 69E431A40F451EF00058B232 /* sprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sprite.h; sourceTree = "<group>"; }; - 69E431A50F451EF00058B232 /* text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = text.cpp; sourceTree = "<group>"; }; - 69E431A60F451EF00058B232 /* text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = text.h; sourceTree = "<group>"; }; - 69E431A70F451EF00058B232 /* textmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = textmanager.cpp; sourceTree = "<group>"; }; - 69E431A80F451EF00058B232 /* textmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = textmanager.h; sourceTree = "<group>"; }; - 69E431A90F451EF00058B232 /* textparticle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = textparticle.cpp; sourceTree = "<group>"; }; - 69E431AA0F451EF00058B232 /* textparticle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = textparticle.h; sourceTree = "<group>"; }; - 69E431AB0F451EF00058B232 /* tileset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tileset.h; sourceTree = "<group>"; }; - 69E431AD0F451EF00058B232 /* base64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = base64.cpp; sourceTree = "<group>"; }; - 69E431AE0F451EF00058B232 /* base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = "<group>"; }; - 69E431AF0F451EF00058B232 /* dtor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dtor.h; sourceTree = "<group>"; }; - 69E431B00F451EF00058B232 /* fastsqrt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fastsqrt.h; sourceTree = "<group>"; }; - 69E431B10F451EF00058B232 /* gettext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gettext.h; sourceTree = "<group>"; }; - 69E431B20F451EF00058B232 /* mutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mutex.h; sourceTree = "<group>"; }; - 69E431B30F451EF00058B232 /* strprintf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strprintf.cpp; sourceTree = "<group>"; }; - 69E431B40F451EF00058B232 /* strprintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strprintf.h; sourceTree = "<group>"; }; - 69E431B50F451EF00058B232 /* tostring.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tostring.h; sourceTree = "<group>"; }; - 69E431B60F451EF00058B232 /* trim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trim.h; sourceTree = "<group>"; }; - 69E431B70F451EF00058B232 /* xml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = xml.cpp; sourceTree = "<group>"; }; - 69E431B80F451EF00058B232 /* xml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xml.h; sourceTree = "<group>"; }; - 69E431B90F451EF00058B232 /* vector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vector.cpp; sourceTree = "<group>"; }; - 69E431BA0F451EF00058B232 /* vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = "<group>"; }; - 69E431BB0F451EF00058B232 /* winver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = winver.h; sourceTree = "<group>"; }; - 69E432640F451F050058B232 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; }; - 69E432660F451F160058B232 /* guichan.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = guichan.framework; path = Frameworks/guichan.framework; sourceTree = "<group>"; }; - 69E432670F451F160058B232 /* libpng.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libpng.framework; path = Frameworks/libpng.framework; sourceTree = "<group>"; }; - 69E432680F451F160058B232 /* libxml.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libxml.framework; path = Frameworks/libxml.framework; sourceTree = "<group>"; }; - 69E432690F451F160058B232 /* physfs.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = physfs.framework; path = Frameworks/physfs.framework; sourceTree = "<group>"; }; - 69E4326A0F451F160058B232 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = Frameworks/SDL.framework; sourceTree = "<group>"; }; - 69E4326B0F451F160058B232 /* SDL_image.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_image.framework; path = Frameworks/SDL_image.framework; sourceTree = "<group>"; }; - 69E4326C0F451F160058B232 /* SDL_mixer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_mixer.framework; path = Frameworks/SDL_mixer.framework; sourceTree = "<group>"; }; - 69E4326D0F451F160058B232 /* SDL_net.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_net.framework; path = Frameworks/SDL_net.framework; sourceTree = "<group>"; }; - 69E4326E0F451F160058B232 /* SDL_ttf.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_ttf.framework; path = Frameworks/SDL_ttf.framework; sourceTree = "<group>"; }; - 69E4330D0F452B880058B232 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; }; - 69E433120F452BA50058B232 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; }; - 69E433180F452BD40058B232 /* data */ = {isa = PBXFileReference; lastKnownFileType = folder; name = data; path = ../data; sourceTree = SOURCE_ROOT; }; - 69E433610F45304B0058B232 /* aethyra.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = aethyra.png; path = ../aethyra.png; sourceTree = SOURCE_ROOT; }; - 69E433650F45311B0058B232 /* aethyra.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = aethyra.icns; sourceTree = SOURCE_ROOT; }; - 69E439DD0F453DAC0058B232 /* libcurl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libcurl.framework; path = Frameworks/libcurl.framework; sourceTree = SOURCE_ROOT; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; - 8D1107320486CEB800E47090 /* Aethyra.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Aethyra.app; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D11072E0486CEB800E47090 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, - 69E432650F451F050058B232 /* OpenGL.framework in Frameworks */, - 69E4326F0F451F160058B232 /* guichan.framework in Frameworks */, - 69E432700F451F170058B232 /* libpng.framework in Frameworks */, - 69E432710F451F170058B232 /* libxml.framework in Frameworks */, - 69E432720F451F170058B232 /* physfs.framework in Frameworks */, - 69E432730F451F170058B232 /* SDL.framework in Frameworks */, - 69E432740F451F170058B232 /* SDL_image.framework in Frameworks */, - 69E432750F451F170058B232 /* SDL_mixer.framework in Frameworks */, - 69E432760F451F170058B232 /* SDL_net.framework in Frameworks */, - 69E432770F451F170058B232 /* SDL_ttf.framework in Frameworks */, - 69E4330E0F452B880058B232 /* CoreFoundation.framework in Frameworks */, - 69E433130F452BA50058B232 /* Carbon.framework in Frameworks */, - 69E439DE0F453DAC0058B232 /* libcurl.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 080E96DDFE201D6D7F000001 /* Classes */ = { - isa = PBXGroup; - children = ( - 69E4305B0F451EF00058B232 /* src */, - ); - name = Classes; - sourceTree = "<group>"; - }; - 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { - isa = PBXGroup; - children = ( - 69E439DD0F453DAC0058B232 /* libcurl.framework */, - 69E433120F452BA50058B232 /* Carbon.framework */, - 69E4330D0F452B880058B232 /* CoreFoundation.framework */, - 69E432660F451F160058B232 /* guichan.framework */, - 69E432670F451F160058B232 /* libpng.framework */, - 69E432680F451F160058B232 /* libxml.framework */, - 69E432690F451F160058B232 /* physfs.framework */, - 69E4326A0F451F160058B232 /* SDL.framework */, - 69E4326B0F451F160058B232 /* SDL_image.framework */, - 69E4326C0F451F160058B232 /* SDL_mixer.framework */, - 69E4326D0F451F160058B232 /* SDL_net.framework */, - 69E4326E0F451F160058B232 /* SDL_ttf.framework */, - 69E432640F451F050058B232 /* OpenGL.framework */, - 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, - ); - name = "Linked Frameworks"; - sourceTree = "<group>"; - }; - 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - 29B97324FDCFA39411CA2CEA /* AppKit.framework */, - 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, - 29B97325FDCFA39411CA2CEA /* Foundation.framework */, - ); - name = "Other Frameworks"; - sourceTree = "<group>"; - }; - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D1107320486CEB800E47090 /* Aethyra.app */, - ); - name = Products; - sourceTree = "<group>"; - }; - 29B97314FDCFA39411CA2CEA /* Aethyra */ = { - isa = PBXGroup; - children = ( - 080E96DDFE201D6D7F000001 /* Classes */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, - 29B97317FDCFA39411CA2CEA /* Resources */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - ); - name = Aethyra; - sourceTree = "<group>"; - }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 32CA4F630368D1EE00C91783 /* Aethyra_Prefix.pch */, - ); - name = "Other Sources"; - sourceTree = "<group>"; - }; - 29B97317FDCFA39411CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - 69E433650F45311B0058B232 /* aethyra.icns */, - 69E433610F45304B0058B232 /* aethyra.png */, - 69E433180F452BD40058B232 /* data */, - 8D1107310486CEB800E47090 /* Info.plist */, - 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, - 1DDD58140DA1D0A300B32029 /* MainMenu.xib */, - ); - name = Resources; - sourceTree = "<group>"; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, - 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, - ); - name = Frameworks; - sourceTree = "<group>"; - }; - 69E4305B0F451EF00058B232 /* src */ = { - isa = PBXGroup; - children = ( - 69E4305C0F451EF00058B232 /* aethyra.rc */, - 69E4305D0F451EF00058B232 /* animatedsprite.cpp */, - 69E4305E0F451EF00058B232 /* animatedsprite.h */, - 69E4305F0F451EF00058B232 /* animationparticle.cpp */, - 69E430600F451EF00058B232 /* animationparticle.h */, - 69E430610F451EF00058B232 /* being.cpp */, - 69E430620F451EF00058B232 /* being.h */, - 69E430630F451EF00058B232 /* beingmanager.cpp */, - 69E430640F451EF00058B232 /* beingmanager.h */, - 69E430650F451EF00058B232 /* CMakeLists.txt */, - 69E430660F451EF00058B232 /* configlistener.h */, - 69E430670F451EF00058B232 /* configuration.cpp */, - 69E430680F451EF00058B232 /* configuration.h */, - 69E430690F451EF00058B232 /* effectmanager.cpp */, - 69E4306A0F451EF00058B232 /* effectmanager.h */, - 69E4306B0F451EF00058B232 /* emoteshortcut.cpp */, - 69E4306C0F451EF00058B232 /* emoteshortcut.h */, - 69E4306D0F451EF00058B232 /* engine.cpp */, - 69E4306E0F451EF00058B232 /* engine.h */, - 69E4306F0F451EF00058B232 /* equipment.cpp */, - 69E430700F451EF00058B232 /* equipment.h */, - 69E430710F451EF00058B232 /* floor_item.cpp */, - 69E430720F451EF00058B232 /* floor_item.h */, - 69E430730F451EF00058B232 /* flooritemmanager.cpp */, - 69E430740F451EF00058B232 /* flooritemmanager.h */, - 69E430750F451EF00058B232 /* game.cpp */, - 69E430760F451EF00058B232 /* game.h */, - 69E430770F451EF00058B232 /* graphics.cpp */, - 69E430780F451EF00058B232 /* graphics.h */, - 69E430790F451EF00058B232 /* gui */, - 69E4311B0F451EF00058B232 /* guichanfwd.h */, - 69E4311C0F451EF00058B232 /* imageparticle.cpp */, - 69E4311D0F451EF00058B232 /* imageparticle.h */, - 69E4311E0F451EF00058B232 /* inventory.cpp */, - 69E4311F0F451EF00058B232 /* inventory.h */, - 69E431200F451EF00058B232 /* item.cpp */, - 69E431210F451EF00058B232 /* item.h */, - 69E431220F451EF00058B232 /* itemshortcut.cpp */, - 69E431230F451EF00058B232 /* itemshortcut.h */, - 69E431240F451EF00058B232 /* joystick.cpp */, - 69E431250F451EF00058B232 /* joystick.h */, - 69E431260F451EF00058B232 /* keyboardconfig.cpp */, - 69E431270F451EF00058B232 /* keyboardconfig.h */, - 69E431280F451EF00058B232 /* localplayer.cpp */, - 69E431290F451EF00058B232 /* localplayer.h */, - 69E4312A0F451EF00058B232 /* lockedarray.h */, - 69E4312B0F451EF00058B232 /* log.cpp */, - 69E4312C0F451EF00058B232 /* log.h */, - 69E4312D0F451EF00058B232 /* logindata.h */, - 69E4312E0F451EF00058B232 /* main.cpp */, - 69E4312F0F451EF00058B232 /* main.h */, - 69E431300F451EF00058B232 /* Makefile.am */, - 69E431310F451EF00058B232 /* map.cpp */, - 69E431320F451EF00058B232 /* map.h */, - 69E431330F451EF00058B232 /* monster.cpp */, - 69E431340F451EF00058B232 /* monster.h */, - 69E431350F451EF00058B232 /* net */, - 69E4315C0F451EF00058B232 /* npc.cpp */, - 69E4315D0F451EF00058B232 /* npc.h */, - 69E4315E0F451EF00058B232 /* openglgraphics.cpp */, - 69E4315F0F451EF00058B232 /* openglgraphics.h */, - 69E431600F451EF00058B232 /* particle.cpp */, - 69E431610F451EF00058B232 /* particle.h */, - 69E431620F451EF00058B232 /* particlecontainer.cpp */, - 69E431630F451EF00058B232 /* particlecontainer.h */, - 69E431640F451EF00058B232 /* particleemitter.cpp */, - 69E431650F451EF00058B232 /* particleemitter.h */, - 69E431660F451EF00058B232 /* particleemitterprop.h */, - 69E431670F451EF00058B232 /* party.cpp */, - 69E431680F451EF00058B232 /* party.h */, - 69E431690F451EF00058B232 /* player.cpp */, - 69E4316A0F451EF00058B232 /* player.h */, - 69E4316B0F451EF00058B232 /* player_relations.cpp */, - 69E4316C0F451EF00058B232 /* player_relations.h */, - 69E4316D0F451EF00058B232 /* position.cpp */, - 69E4316E0F451EF00058B232 /* position.h */, - 69E4316F0F451EF00058B232 /* properties.h */, - 69E431700F451EF00058B232 /* resources */, - 69E4319B0F451EF00058B232 /* SDLMain.h */, - 69E4319C0F451EF00058B232 /* SDLMain.m */, - 69E4319D0F451EF00058B232 /* serverinfo.h */, - 69E4319E0F451EF00058B232 /* shopitem.cpp */, - 69E4319F0F451EF00058B232 /* shopitem.h */, - 69E431A00F451EF00058B232 /* simpleanimation.cpp */, - 69E431A10F451EF00058B232 /* simpleanimation.h */, - 69E431A20F451EF00058B232 /* sound.cpp */, - 69E431A30F451EF00058B232 /* sound.h */, - 69E431A40F451EF00058B232 /* sprite.h */, - 69E431A50F451EF00058B232 /* text.cpp */, - 69E431A60F451EF00058B232 /* text.h */, - 69E431A70F451EF00058B232 /* textmanager.cpp */, - 69E431A80F451EF00058B232 /* textmanager.h */, - 69E431A90F451EF00058B232 /* textparticle.cpp */, - 69E431AA0F451EF00058B232 /* textparticle.h */, - 69E431AB0F451EF00058B232 /* tileset.h */, - 69E431AC0F451EF00058B232 /* utils */, - 69E431B90F451EF00058B232 /* vector.cpp */, - 69E431BA0F451EF00058B232 /* vector.h */, - 69E431BB0F451EF00058B232 /* winver.h */, - ); - name = src; - path = ../src; - sourceTree = SOURCE_ROOT; - }; - 69E430790F451EF00058B232 /* gui */ = { - isa = PBXGroup; - children = ( - 69E4307A0F451EF00058B232 /* browserbox.cpp */, - 69E4307B0F451EF00058B232 /* browserbox.h */, - 69E4307C0F451EF00058B232 /* button.cpp */, - 69E4307D0F451EF00058B232 /* button.h */, - 69E4307E0F451EF00058B232 /* buy.cpp */, - 69E4307F0F451EF00058B232 /* buy.h */, - 69E430800F451EF00058B232 /* buysell.cpp */, - 69E430810F451EF00058B232 /* buysell.h */, - 69E430820F451EF00058B232 /* char_select.cpp */, - 69E430830F451EF00058B232 /* char_select.h */, - 69E430840F451EF00058B232 /* char_server.cpp */, - 69E430850F451EF00058B232 /* char_server.h */, - 69E430860F451EF00058B232 /* chat.cpp */, - 69E430870F451EF00058B232 /* chat.h */, - 69E430880F451EF00058B232 /* chatinput.cpp */, - 69E430890F451EF00058B232 /* chatinput.h */, - 69E4308A0F451EF00058B232 /* checkbox.cpp */, - 69E4308B0F451EF00058B232 /* checkbox.h */, - 69E4308C0F451EF00058B232 /* color.cpp */, - 69E4308D0F451EF00058B232 /* color.h */, - 69E4308E0F451EF00058B232 /* confirm_dialog.cpp */, - 69E4308F0F451EF00058B232 /* confirm_dialog.h */, - 69E430900F451EF00058B232 /* connection.cpp */, - 69E430910F451EF00058B232 /* connection.h */, - 69E430920F451EF00058B232 /* debugwindow.cpp */, - 69E430930F451EF00058B232 /* debugwindow.h */, - 69E430940F451EF00058B232 /* emotecontainer.cpp */, - 69E430950F451EF00058B232 /* emotecontainer.h */, - 69E430960F451EF00058B232 /* emoteshortcutcontainer.cpp */, - 69E430970F451EF00058B232 /* emoteshortcutcontainer.h */, - 69E430980F451EF00058B232 /* emotewindow.cpp */, - 69E430990F451EF00058B232 /* emotewindow.h */, - 69E4309A0F451EF00058B232 /* equipmentwindow.cpp */, - 69E4309B0F451EF00058B232 /* equipmentwindow.h */, - 69E4309C0F451EF00058B232 /* focushandler.cpp */, - 69E4309D0F451EF00058B232 /* focushandler.h */, - 69E4309E0F451EF00058B232 /* gccontainer.cpp */, - 69E4309F0F451EF00058B232 /* gccontainer.h */, - 69E430A00F451EF00058B232 /* gui.cpp */, - 69E430A10F451EF00058B232 /* gui.h */, - 69E430A20F451EF00058B232 /* help.cpp */, - 69E430A30F451EF00058B232 /* help.h */, - 69E430A40F451EF00058B232 /* inttextfield.cpp */, - 69E430A50F451EF00058B232 /* inttextfield.h */, - 69E430A60F451EF00058B232 /* inventorywindow.cpp */, - 69E430A70F451EF00058B232 /* inventorywindow.h */, - 69E430A80F451EF00058B232 /* item_amount.cpp */, - 69E430A90F451EF00058B232 /* item_amount.h */, - 69E430AA0F451EF00058B232 /* itemcontainer.cpp */, - 69E430AB0F451EF00058B232 /* itemcontainer.h */, - 69E430AC0F451EF00058B232 /* itemlinkhandler.cpp */, - 69E430AD0F451EF00058B232 /* itemlinkhandler.h */, - 69E430AE0F451EF00058B232 /* itempopup.cpp */, - 69E430AF0F451EF00058B232 /* itempopup.h */, - 69E430B00F451EF00058B232 /* itemshortcutcontainer.cpp */, - 69E430B10F451EF00058B232 /* itemshortcutcontainer.h */, - 69E430B20F451EF00058B232 /* linkhandler.h */, - 69E430B30F451EF00058B232 /* listbox.cpp */, - 69E430B40F451EF00058B232 /* listbox.h */, - 69E430B50F451EF00058B232 /* login.cpp */, - 69E430B60F451EF00058B232 /* login.h */, - 69E430B70F451EF00058B232 /* menuwindow.cpp */, - 69E430B80F451EF00058B232 /* menuwindow.h */, - 69E430B90F451EF00058B232 /* minimap.cpp */, - 69E430BA0F451EF00058B232 /* minimap.h */, - 69E430BB0F451EF00058B232 /* ministatus.cpp */, - 69E430BC0F451EF00058B232 /* ministatus.h */, - 69E430BD0F451EF00058B232 /* npc_text.cpp */, - 69E430BE0F451EF00058B232 /* npc_text.h */, - 69E430BF0F451EF00058B232 /* npcintegerdialog.cpp */, - 69E430C00F451EF00058B232 /* npcintegerdialog.h */, - 69E430C10F451EF00058B232 /* npclistdialog.cpp */, - 69E430C20F451EF00058B232 /* npclistdialog.h */, - 69E430C30F451EF00058B232 /* npcstringdialog.cpp */, - 69E430C40F451EF00058B232 /* npcstringdialog.h */, - 69E430C50F451EF00058B232 /* ok_dialog.cpp */, - 69E430C60F451EF00058B232 /* ok_dialog.h */, - 69E430C70F451EF00058B232 /* passwordfield.cpp */, - 69E430C80F451EF00058B232 /* passwordfield.h */, - 69E430C90F451EF00058B232 /* playerbox.cpp */, - 69E430CA0F451EF00058B232 /* playerbox.h */, - 69E430CB0F451EF00058B232 /* popupmenu.cpp */, - 69E430CC0F451EF00058B232 /* popupmenu.h */, - 69E430CD0F451EF00058B232 /* progressbar.cpp */, - 69E430CE0F451EF00058B232 /* progressbar.h */, - 69E430CF0F451EF00058B232 /* radiobutton.cpp */, - 69E430D00F451EF00058B232 /* radiobutton.h */, - 69E430D10F451EF00058B232 /* recorder.cpp */, - 69E430D20F451EF00058B232 /* recorder.h */, - 69E430D30F451EF00058B232 /* register.cpp */, - 69E430D40F451EF00058B232 /* register.h */, - 69E430D50F451EF00058B232 /* scrollarea.cpp */, - 69E430D60F451EF00058B232 /* scrollarea.h */, - 69E430D70F451EF00058B232 /* sdlinput.cpp */, - 69E430D80F451EF00058B232 /* sdlinput.h */, - 69E430D90F451EF00058B232 /* sell.cpp */, - 69E430DA0F451EF00058B232 /* sell.h */, - 69E430DB0F451EF00058B232 /* setup.cpp */, - 69E430DC0F451EF00058B232 /* setup.h */, - 69E430DD0F451EF00058B232 /* setup_audio.cpp */, - 69E430DE0F451EF00058B232 /* setup_audio.h */, - 69E430DF0F451EF00058B232 /* setup_colors.cpp */, - 69E430E00F451EF00058B232 /* setup_colors.h */, - 69E430E10F451EF00058B232 /* setup_joystick.cpp */, - 69E430E20F451EF00058B232 /* setup_joystick.h */, - 69E430E30F451EF00058B232 /* setup_keyboard.cpp */, - 69E430E40F451EF00058B232 /* setup_keyboard.h */, - 69E430E50F451EF00058B232 /* setup_players.cpp */, - 69E430E60F451EF00058B232 /* setup_players.h */, - 69E430E70F451EF00058B232 /* setup_video.cpp */, - 69E430E80F451EF00058B232 /* setup_video.h */, - 69E430E90F451EF00058B232 /* setuptab.h */, - 69E430EA0F451EF00058B232 /* shop.cpp */, - 69E430EB0F451EF00058B232 /* shop.h */, - 69E430EC0F451EF00058B232 /* shoplistbox.cpp */, - 69E430ED0F451EF00058B232 /* shoplistbox.h */, - 69E430EE0F451EF00058B232 /* shortcutcontainer.cpp */, - 69E430EF0F451EF00058B232 /* shortcutcontainer.h */, - 69E430F00F451EF00058B232 /* shortcutwindow.cpp */, - 69E430F10F451EF00058B232 /* shortcutwindow.h */, - 69E430F20F451EF00058B232 /* skill.cpp */, - 69E430F30F451EF00058B232 /* skill.h */, - 69E430F40F451EF00058B232 /* slider.cpp */, - 69E430F50F451EF00058B232 /* slider.h */, - 69E430F60F451EF00058B232 /* speechbubble.cpp */, - 69E430F70F451EF00058B232 /* speechbubble.h */, - 69E430F80F451EF00058B232 /* status.cpp */, - 69E430F90F451EF00058B232 /* status.h */, - 69E430FA0F451EF00058B232 /* table.cpp */, - 69E430FB0F451EF00058B232 /* table.h */, - 69E430FC0F451EF00058B232 /* table_model.cpp */, - 69E430FD0F451EF00058B232 /* table_model.h */, - 69E430FE0F451EF00058B232 /* textbox.cpp */, - 69E430FF0F451EF00058B232 /* textbox.h */, - 69E431000F451EF00058B232 /* textfield.cpp */, - 69E431010F451EF00058B232 /* textfield.h */, - 69E431020F451EF00058B232 /* trade.cpp */, - 69E431030F451EF00058B232 /* trade.h */, - 69E431040F451EF00058B232 /* truetypefont.cpp */, - 69E431050F451EF00058B232 /* truetypefont.h */, - 69E431060F451EF00058B232 /* updatewindow.cpp */, - 69E431070F451EF00058B232 /* updatewindow.h */, - 69E431080F451EF00058B232 /* viewport.cpp */, - 69E431090F451EF00058B232 /* viewport.h */, - 69E4310A0F451EF00058B232 /* widgets */, - 69E431170F451EF00058B232 /* window.cpp */, - 69E431180F451EF00058B232 /* window.h */, - 69E431190F451EF00058B232 /* windowcontainer.cpp */, - 69E4311A0F451EF00058B232 /* windowcontainer.h */, - ); - path = gui; - sourceTree = "<group>"; - }; - 69E4310A0F451EF00058B232 /* widgets */ = { - isa = PBXGroup; - children = ( - 69E4310B0F451EF00058B232 /* dropdown.cpp */, - 69E4310C0F451EF00058B232 /* dropdown.h */, - 69E4310D0F451EF00058B232 /* layout.cpp */, - 69E4310E0F451EF00058B232 /* layout.h */, - 69E4310F0F451EF00058B232 /* layouthelper.cpp */, - 69E431100F451EF00058B232 /* layouthelper.h */, - 69E431110F451EF00058B232 /* resizegrip.cpp */, - 69E431120F451EF00058B232 /* resizegrip.h */, - 69E431130F451EF00058B232 /* tab.cpp */, - 69E431140F451EF00058B232 /* tab.h */, - 69E431150F451EF00058B232 /* tabbedarea.cpp */, - 69E431160F451EF00058B232 /* tabbedarea.h */, - ); - path = widgets; - sourceTree = "<group>"; - }; - 69E431350F451EF00058B232 /* net */ = { - isa = PBXGroup; - children = ( - 69E431360F451EF00058B232 /* beinghandler.cpp */, - 69E431370F451EF00058B232 /* beinghandler.h */, - 69E431380F451EF00058B232 /* buysellhandler.cpp */, - 69E431390F451EF00058B232 /* buysellhandler.h */, - 69E4313A0F451EF00058B232 /* charserverhandler.cpp */, - 69E4313B0F451EF00058B232 /* charserverhandler.h */, - 69E4313C0F451EF00058B232 /* chathandler.cpp */, - 69E4313D0F451EF00058B232 /* chathandler.h */, - 69E4313E0F451EF00058B232 /* equipmenthandler.cpp */, - 69E4313F0F451EF00058B232 /* equipmenthandler.h */, - 69E431400F451EF00058B232 /* inventoryhandler.cpp */, - 69E431410F451EF00058B232 /* inventoryhandler.h */, - 69E431420F451EF00058B232 /* itemhandler.cpp */, - 69E431430F451EF00058B232 /* itemhandler.h */, - 69E431440F451EF00058B232 /* loginhandler.cpp */, - 69E431450F451EF00058B232 /* loginhandler.h */, - 69E431460F451EF00058B232 /* maploginhandler.cpp */, - 69E431470F451EF00058B232 /* maploginhandler.h */, - 69E431480F451EF00058B232 /* messagehandler.cpp */, - 69E431490F451EF00058B232 /* messagehandler.h */, - 69E4314A0F451EF00058B232 /* messagein.cpp */, - 69E4314B0F451EF00058B232 /* messagein.h */, - 69E4314C0F451EF00058B232 /* messageout.cpp */, - 69E4314D0F451EF00058B232 /* messageout.h */, - 69E4314E0F451EF00058B232 /* network.cpp */, - 69E4314F0F451EF00058B232 /* network.h */, - 69E431500F451EF00058B232 /* npchandler.cpp */, - 69E431510F451EF00058B232 /* npchandler.h */, - 69E431520F451EF00058B232 /* partyhandler.cpp */, - 69E431530F451EF00058B232 /* partyhandler.h */, - 69E431540F451EF00058B232 /* playerhandler.cpp */, - 69E431550F451EF00058B232 /* playerhandler.h */, - 69E431560F451EF00058B232 /* protocol.cpp */, - 69E431570F451EF00058B232 /* protocol.h */, - 69E431580F451EF00058B232 /* skillhandler.cpp */, - 69E431590F451EF00058B232 /* skillhandler.h */, - 69E4315A0F451EF00058B232 /* tradehandler.cpp */, - 69E4315B0F451EF00058B232 /* tradehandler.h */, - ); - path = net; - sourceTree = "<group>"; - }; - 69E431700F451EF00058B232 /* resources */ = { - isa = PBXGroup; - children = ( - 69E431710F451EF00058B232 /* action.cpp */, - 69E431720F451EF00058B232 /* action.h */, - 69E431730F451EF00058B232 /* ambientoverlay.cpp */, - 69E431740F451EF00058B232 /* ambientoverlay.h */, - 69E431750F451EF00058B232 /* animation.cpp */, - 69E431760F451EF00058B232 /* animation.h */, - 69E431770F451EF00058B232 /* colordb.cpp */, - 69E431780F451EF00058B232 /* colordb.h */, - 69E431790F451EF00058B232 /* dye.cpp */, - 69E4317A0F451EF00058B232 /* dye.h */, - 69E4317B0F451EF00058B232 /* emotedb.cpp */, - 69E4317C0F451EF00058B232 /* emotedb.h */, - 69E4317D0F451EF00058B232 /* image.cpp */, - 69E4317E0F451EF00058B232 /* image.h */, - 69E4317F0F451EF00058B232 /* imageloader.cpp */, - 69E431800F451EF00058B232 /* imageloader.h */, - 69E431810F451EF00058B232 /* imageset.cpp */, - 69E431820F451EF00058B232 /* imageset.h */, - 69E431830F451EF00058B232 /* imagewriter.cpp */, - 69E431840F451EF00058B232 /* imagewriter.h */, - 69E431850F451EF00058B232 /* itemdb.cpp */, - 69E431860F451EF00058B232 /* itemdb.h */, - 69E431870F451EF00058B232 /* iteminfo.cpp */, - 69E431880F451EF00058B232 /* iteminfo.h */, - 69E431890F451EF00058B232 /* mapreader.cpp */, - 69E4318A0F451EF00058B232 /* mapreader.h */, - 69E4318B0F451EF00058B232 /* monsterdb.cpp */, - 69E4318C0F451EF00058B232 /* monsterdb.h */, - 69E4318D0F451EF00058B232 /* monsterinfo.cpp */, - 69E4318E0F451EF00058B232 /* monsterinfo.h */, - 69E4318F0F451EF00058B232 /* music.cpp */, - 69E431900F451EF00058B232 /* music.h */, - 69E431910F451EF00058B232 /* npcdb.cpp */, - 69E431920F451EF00058B232 /* npcdb.h */, - 69E431930F451EF00058B232 /* resource.cpp */, - 69E431940F451EF00058B232 /* resource.h */, - 69E431950F451EF00058B232 /* resourcemanager.cpp */, - 69E431960F451EF00058B232 /* resourcemanager.h */, - 69E431970F451EF00058B232 /* soundeffect.cpp */, - 69E431980F451EF00058B232 /* soundeffect.h */, - 69E431990F451EF00058B232 /* spritedef.cpp */, - 69E4319A0F451EF00058B232 /* spritedef.h */, - ); - path = resources; - sourceTree = "<group>"; - }; - 69E431AC0F451EF00058B232 /* utils */ = { - isa = PBXGroup; - children = ( - 69E431AD0F451EF00058B232 /* base64.cpp */, - 69E431AE0F451EF00058B232 /* base64.h */, - 69E431AF0F451EF00058B232 /* dtor.h */, - 69E431B00F451EF00058B232 /* fastsqrt.h */, - 69E431B10F451EF00058B232 /* gettext.h */, - 69E431B20F451EF00058B232 /* mutex.h */, - 69E431B30F451EF00058B232 /* strprintf.cpp */, - 69E431B40F451EF00058B232 /* strprintf.h */, - 69E431B50F451EF00058B232 /* tostring.h */, - 69E431B60F451EF00058B232 /* trim.h */, - 69E431B70F451EF00058B232 /* xml.cpp */, - 69E431B80F451EF00058B232 /* xml.h */, - ); - path = utils; - sourceTree = "<group>"; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D1107260486CEB800E47090 /* Aethyra */ = { - isa = PBXNativeTarget; - buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Aethyra" */; - buildPhases = ( - 8D1107290486CEB800E47090 /* Resources */, - 8D11072C0486CEB800E47090 /* Sources */, - 8D11072E0486CEB800E47090 /* Frameworks */, - 69E432B70F451F520058B232 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Aethyra; - productInstallPath = "$(HOME)/Applications"; - productName = Aethyra; - productReference = 8D1107320486CEB800E47090 /* Aethyra.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Aethyra" */; - compatibilityVersion = "Xcode 2.4"; - hasScannedForEncodings = 1; - mainGroup = 29B97314FDCFA39411CA2CEA /* Aethyra */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8D1107260486CEB800E47090 /* Aethyra */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8D1107290486CEB800E47090 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, - 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */, - 69E431BC0F451EF00058B232 /* aethyra.rc in Resources */, - 69E431C10F451EF00058B232 /* CMakeLists.txt in Resources */, - 69E432230F451EF00058B232 /* Makefile.am in Resources */, - 69E433190F452BD40058B232 /* data in Resources */, - 69E433620F45304B0058B232 /* aethyra.png in Resources */, - 69E433660F45311B0058B232 /* aethyra.icns in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D11072C0486CEB800E47090 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 69E431BD0F451EF00058B232 /* animatedsprite.cpp in Sources */, - 69E431BE0F451EF00058B232 /* animationparticle.cpp in Sources */, - 69E431BF0F451EF00058B232 /* being.cpp in Sources */, - 69E431C00F451EF00058B232 /* beingmanager.cpp in Sources */, - 69E431C20F451EF00058B232 /* configuration.cpp in Sources */, - 69E431C30F451EF00058B232 /* effectmanager.cpp in Sources */, - 69E431C40F451EF00058B232 /* emoteshortcut.cpp in Sources */, - 69E431C50F451EF00058B232 /* engine.cpp in Sources */, - 69E431C60F451EF00058B232 /* equipment.cpp in Sources */, - 69E431C70F451EF00058B232 /* floor_item.cpp in Sources */, - 69E431C80F451EF00058B232 /* flooritemmanager.cpp in Sources */, - 69E431C90F451EF00058B232 /* game.cpp in Sources */, - 69E431CA0F451EF00058B232 /* graphics.cpp in Sources */, - 69E431CB0F451EF00058B232 /* browserbox.cpp in Sources */, - 69E431CC0F451EF00058B232 /* button.cpp in Sources */, - 69E431CD0F451EF00058B232 /* buy.cpp in Sources */, - 69E431CE0F451EF00058B232 /* buysell.cpp in Sources */, - 69E431CF0F451EF00058B232 /* char_select.cpp in Sources */, - 69E431D00F451EF00058B232 /* char_server.cpp in Sources */, - 69E431D10F451EF00058B232 /* chat.cpp in Sources */, - 69E431D20F451EF00058B232 /* chatinput.cpp in Sources */, - 69E431D30F451EF00058B232 /* checkbox.cpp in Sources */, - 69E431D40F451EF00058B232 /* color.cpp in Sources */, - 69E431D50F451EF00058B232 /* confirm_dialog.cpp in Sources */, - 69E431D60F451EF00058B232 /* connection.cpp in Sources */, - 69E431D70F451EF00058B232 /* debugwindow.cpp in Sources */, - 69E431D80F451EF00058B232 /* emotecontainer.cpp in Sources */, - 69E431D90F451EF00058B232 /* emoteshortcutcontainer.cpp in Sources */, - 69E431DA0F451EF00058B232 /* emotewindow.cpp in Sources */, - 69E431DB0F451EF00058B232 /* equipmentwindow.cpp in Sources */, - 69E431DC0F451EF00058B232 /* focushandler.cpp in Sources */, - 69E431DD0F451EF00058B232 /* gccontainer.cpp in Sources */, - 69E431DE0F451EF00058B232 /* gui.cpp in Sources */, - 69E431DF0F451EF00058B232 /* help.cpp in Sources */, - 69E431E00F451EF00058B232 /* inttextfield.cpp in Sources */, - 69E431E10F451EF00058B232 /* inventorywindow.cpp in Sources */, - 69E431E20F451EF00058B232 /* item_amount.cpp in Sources */, - 69E431E30F451EF00058B232 /* itemcontainer.cpp in Sources */, - 69E431E40F451EF00058B232 /* itemlinkhandler.cpp in Sources */, - 69E431E50F451EF00058B232 /* itempopup.cpp in Sources */, - 69E431E60F451EF00058B232 /* itemshortcutcontainer.cpp in Sources */, - 69E431E70F451EF00058B232 /* listbox.cpp in Sources */, - 69E431E80F451EF00058B232 /* login.cpp in Sources */, - 69E431E90F451EF00058B232 /* menuwindow.cpp in Sources */, - 69E431EA0F451EF00058B232 /* minimap.cpp in Sources */, - 69E431EB0F451EF00058B232 /* ministatus.cpp in Sources */, - 69E431EC0F451EF00058B232 /* npc_text.cpp in Sources */, - 69E431ED0F451EF00058B232 /* npcintegerdialog.cpp in Sources */, - 69E431EE0F451EF00058B232 /* npclistdialog.cpp in Sources */, - 69E431EF0F451EF00058B232 /* npcstringdialog.cpp in Sources */, - 69E431F00F451EF00058B232 /* ok_dialog.cpp in Sources */, - 69E431F10F451EF00058B232 /* passwordfield.cpp in Sources */, - 69E431F20F451EF00058B232 /* playerbox.cpp in Sources */, - 69E431F30F451EF00058B232 /* popupmenu.cpp in Sources */, - 69E431F40F451EF00058B232 /* progressbar.cpp in Sources */, - 69E431F50F451EF00058B232 /* radiobutton.cpp in Sources */, - 69E431F60F451EF00058B232 /* recorder.cpp in Sources */, - 69E431F70F451EF00058B232 /* register.cpp in Sources */, - 69E431F80F451EF00058B232 /* scrollarea.cpp in Sources */, - 69E431F90F451EF00058B232 /* sdlinput.cpp in Sources */, - 69E431FA0F451EF00058B232 /* sell.cpp in Sources */, - 69E431FB0F451EF00058B232 /* setup.cpp in Sources */, - 69E431FC0F451EF00058B232 /* setup_audio.cpp in Sources */, - 69E431FD0F451EF00058B232 /* setup_colors.cpp in Sources */, - 69E431FE0F451EF00058B232 /* setup_joystick.cpp in Sources */, - 69E431FF0F451EF00058B232 /* setup_keyboard.cpp in Sources */, - 69E432000F451EF00058B232 /* setup_players.cpp in Sources */, - 69E432010F451EF00058B232 /* setup_video.cpp in Sources */, - 69E432020F451EF00058B232 /* shop.cpp in Sources */, - 69E432030F451EF00058B232 /* shoplistbox.cpp in Sources */, - 69E432040F451EF00058B232 /* shortcutcontainer.cpp in Sources */, - 69E432050F451EF00058B232 /* shortcutwindow.cpp in Sources */, - 69E432060F451EF00058B232 /* skill.cpp in Sources */, - 69E432070F451EF00058B232 /* slider.cpp in Sources */, - 69E432080F451EF00058B232 /* speechbubble.cpp in Sources */, - 69E432090F451EF00058B232 /* status.cpp in Sources */, - 69E4320A0F451EF00058B232 /* table.cpp in Sources */, - 69E4320B0F451EF00058B232 /* table_model.cpp in Sources */, - 69E4320C0F451EF00058B232 /* textbox.cpp in Sources */, - 69E4320D0F451EF00058B232 /* textfield.cpp in Sources */, - 69E4320E0F451EF00058B232 /* trade.cpp in Sources */, - 69E4320F0F451EF00058B232 /* truetypefont.cpp in Sources */, - 69E432100F451EF00058B232 /* updatewindow.cpp in Sources */, - 69E432110F451EF00058B232 /* viewport.cpp in Sources */, - 69E432120F451EF00058B232 /* dropdown.cpp in Sources */, - 69E432130F451EF00058B232 /* layout.cpp in Sources */, - 69E432140F451EF00058B232 /* layouthelper.cpp in Sources */, - 69E432150F451EF00058B232 /* resizegrip.cpp in Sources */, - 69E432160F451EF00058B232 /* tab.cpp in Sources */, - 69E432170F451EF00058B232 /* tabbedarea.cpp in Sources */, - 69E432180F451EF00058B232 /* window.cpp in Sources */, - 69E432190F451EF00058B232 /* windowcontainer.cpp in Sources */, - 69E4321A0F451EF00058B232 /* imageparticle.cpp in Sources */, - 69E4321B0F451EF00058B232 /* inventory.cpp in Sources */, - 69E4321C0F451EF00058B232 /* item.cpp in Sources */, - 69E4321D0F451EF00058B232 /* itemshortcut.cpp in Sources */, - 69E4321E0F451EF00058B232 /* joystick.cpp in Sources */, - 69E4321F0F451EF00058B232 /* keyboardconfig.cpp in Sources */, - 69E432200F451EF00058B232 /* localplayer.cpp in Sources */, - 69E432210F451EF00058B232 /* log.cpp in Sources */, - 69E432220F451EF00058B232 /* main.cpp in Sources */, - 69E432240F451EF00058B232 /* map.cpp in Sources */, - 69E432250F451EF00058B232 /* monster.cpp in Sources */, - 69E432260F451EF00058B232 /* beinghandler.cpp in Sources */, - 69E432270F451EF00058B232 /* buysellhandler.cpp in Sources */, - 69E432280F451EF00058B232 /* charserverhandler.cpp in Sources */, - 69E432290F451EF00058B232 /* chathandler.cpp in Sources */, - 69E4322A0F451EF00058B232 /* equipmenthandler.cpp in Sources */, - 69E4322B0F451EF00058B232 /* inventoryhandler.cpp in Sources */, - 69E4322C0F451EF00058B232 /* itemhandler.cpp in Sources */, - 69E4322D0F451EF00058B232 /* loginhandler.cpp in Sources */, - 69E4322E0F451EF00058B232 /* maploginhandler.cpp in Sources */, - 69E4322F0F451EF00058B232 /* messagehandler.cpp in Sources */, - 69E432300F451EF00058B232 /* messagein.cpp in Sources */, - 69E432310F451EF00058B232 /* messageout.cpp in Sources */, - 69E432320F451EF00058B232 /* network.cpp in Sources */, - 69E432330F451EF00058B232 /* npchandler.cpp in Sources */, - 69E432340F451EF00058B232 /* partyhandler.cpp in Sources */, - 69E432350F451EF00058B232 /* playerhandler.cpp in Sources */, - 69E432360F451EF00058B232 /* protocol.cpp in Sources */, - 69E432370F451EF00058B232 /* skillhandler.cpp in Sources */, - 69E432380F451EF00058B232 /* tradehandler.cpp in Sources */, - 69E432390F451EF00058B232 /* npc.cpp in Sources */, - 69E4323A0F451EF00058B232 /* openglgraphics.cpp in Sources */, - 69E4323B0F451EF00058B232 /* particle.cpp in Sources */, - 69E4323C0F451EF00058B232 /* particlecontainer.cpp in Sources */, - 69E4323D0F451EF00058B232 /* particleemitter.cpp in Sources */, - 69E4323E0F451EF00058B232 /* party.cpp in Sources */, - 69E4323F0F451EF00058B232 /* player.cpp in Sources */, - 69E432400F451EF00058B232 /* player_relations.cpp in Sources */, - 69E432410F451EF00058B232 /* position.cpp in Sources */, - 69E432420F451EF00058B232 /* action.cpp in Sources */, - 69E432430F451EF00058B232 /* ambientoverlay.cpp in Sources */, - 69E432440F451EF00058B232 /* animation.cpp in Sources */, - 69E432450F451EF00058B232 /* colordb.cpp in Sources */, - 69E432460F451EF00058B232 /* dye.cpp in Sources */, - 69E432470F451EF00058B232 /* emotedb.cpp in Sources */, - 69E432480F451EF00058B232 /* image.cpp in Sources */, - 69E432490F451EF00058B232 /* imageloader.cpp in Sources */, - 69E4324A0F451EF00058B232 /* imageset.cpp in Sources */, - 69E4324B0F451EF00058B232 /* imagewriter.cpp in Sources */, - 69E4324C0F451EF00058B232 /* itemdb.cpp in Sources */, - 69E4324D0F451EF00058B232 /* iteminfo.cpp in Sources */, - 69E4324E0F451EF00058B232 /* mapreader.cpp in Sources */, - 69E4324F0F451EF00058B232 /* monsterdb.cpp in Sources */, - 69E432500F451EF00058B232 /* monsterinfo.cpp in Sources */, - 69E432510F451EF00058B232 /* music.cpp in Sources */, - 69E432520F451EF00058B232 /* npcdb.cpp in Sources */, - 69E432530F451EF00058B232 /* resource.cpp in Sources */, - 69E432540F451EF00058B232 /* resourcemanager.cpp in Sources */, - 69E432550F451EF00058B232 /* soundeffect.cpp in Sources */, - 69E432560F451EF00058B232 /* spritedef.cpp in Sources */, - 69E432570F451EF00058B232 /* SDLMain.m in Sources */, - 69E432580F451EF00058B232 /* shopitem.cpp in Sources */, - 69E432590F451EF00058B232 /* simpleanimation.cpp in Sources */, - 69E4325A0F451EF00058B232 /* sound.cpp in Sources */, - 69E4325B0F451EF00058B232 /* text.cpp in Sources */, - 69E4325C0F451EF00058B232 /* textmanager.cpp in Sources */, - 69E4325D0F451EF00058B232 /* textparticle.cpp in Sources */, - 69E4325E0F451EF00058B232 /* base64.cpp in Sources */, - 69E4325F0F451EF00058B232 /* strprintf.cpp in Sources */, - 69E432600F451EF00058B232 /* xml.cpp in Sources */, - 69E432610F451EF00058B232 /* vector.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 089C165DFE840E0CC02AAC07 /* English */, - ); - name = InfoPlist.strings; - sourceTree = "<group>"; - }; - 1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 1DDD58150DA1D0A300B32029 /* English */, - ); - name = MainMenu.xib; - sourceTree = "<group>"; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - C01FCF4B08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "@executable_path/../Frameworks", - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/Frameworks\""; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Aethyra_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = USE_OPENGL; - HEADER_SEARCH_PATHS = ( - "@executable_path/../Frameworks/SDL_mixer.framework/Headers\n$(SRCROOT)/Frameworks/physfs.framework/Headers\n$(SRCROOT)/Frameworks/Lua.framework/Headers\n$(SRCROOT)/Frameworks/SDL_image.framework/Headers\n$(SRCROOT)/Frameworks/SDL_ttf.framework/Headers\n@executable_path/../Frameworks/libcurl.framework/Headers", - "$(SRCROOT)/Frameworks/libxml.framework/Headers", - "$(SRCROOT)/Frameworks/guichan.framework/Headers", - "$(SRCROOT)/Frameworks/SDL_net.framework/Headers", - "$(SRCROOT)/Frameworks/SDL_image.framework/Headers", - "$(SRCROOT)/Frameworks/SDL.framework/Headers", - "$(SRCROOT)/Frameworks/physfs.framework/Headers", - "$(SRCROOT)/Frameworks/libcurl.framework/Headers\n$(SRCROOT)/Frameworks/physfs.framework/Headers\n$(SRCROOT)/Frameworks/Lua.framework/Headers\n$(SRCROOT)/Frameworks/SDL_image.framework/Headers\n$(SRCROOT)/Frameworks/SDL_ttf.framework/Headers\n$(SRCROOT)/Frameworks/libcrul.framework/Headers", - "@executable_path/../Frameworks/SDL.framework/Headers\n$(SRCROOT)/Frameworks/physfs.framework/Headers\n$(SRCROOT)/Frameworks/Lua.framework/Headers\n$(SRCROOT)/Frameworks/SDL_image.framework/Headers\n$(SRCROOT)/Frameworks/SDL_ttf.framework/Headers\n@executable_path/../Frameworks/SDL.framework/Headers", - "@executable_path/../Frameworks/SDL_mixer.framework/Headers\n$(SRCROOT)/Frameworks/physfs.framework/Headers\n$(SRCROOT)/Frameworks/Lua.framework/Headers\n$(SRCROOT)/Frameworks/SDL_image.framework/Headers\n$(SRCROOT)/Frameworks/SDL_ttf.framework/Headers\n@executable_path/../Frameworks/SDL.framework/Headers", - "$(SRCROOT)/Frameworks/SDL_mixer.framework/Headers\n$(SRCROOT)/Frameworks/physfs.framework/Headers\n$(SRCROOT)/Frameworks/Lua.framework/Headers\n$(SRCROOT)/Frameworks/SDL_image.framework/Headers\n$(SRCROOT)/Frameworks/SDL_ttf.framework/Headers\n$(SRCROOT)/Frameworks/SDL.framework/Headers", - ); - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; - LD_OPENMP_FLAGS = "-fopenmp"; - LIBRARY_SEARCH_PATHS = ( - /usr/local/include, - /usr/local/lib, - /usr/lib, - ); - OTHER_LDFLAGS = ( - "-lxml2", - "-lcurl", - "-lz", - ); - PRODUCT_NAME = Aethyra; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Debug; - }; - C01FCF4C08A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = ( - "@executable_path/../Frameworks", - "$(inherited)", - "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/Frameworks\""; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Aethyra_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = USE_OPENGL; - HEADER_SEARCH_PATHS = ( - "$(SRCROOT)/Frameworks/libxml.framework/Headers", - "$(SRCROOT)/Frameworks/guichan.framework/Headers", - "$(SRCROOT)/Frameworks/SDL_net.framework/Headers", - "$(SRCROOT)/Frameworks/SDL_image.framework/Headers", - "$(SRCROOT)/Frameworks/SDL.framework/Headers", - "$(SRCROOT)/Frameworks/physfs.framework/Headers", - "$(SRCROOT)/Frameworks/libcurl.framework/Headers\n$(SRCROOT)/Frameworks/physfs.framework/Headers\n$(SRCROOT)/Frameworks/Lua.framework/Headers\n$(SRCROOT)/Frameworks/SDL_image.framework/Headers\n$(SRCROOT)/Frameworks/SDL_ttf.framework/Headers\n$(SRCROOT)/Frameworks/libcrul.framework/Headers", - "$(SRCROOT)/Frameworks/SDL_mixer.framework/Headers\n$(SRCROOT)/Frameworks/physfs.framework/Headers\n$(SRCROOT)/Frameworks/Lua.framework/Headers\n$(SRCROOT)/Frameworks/SDL_image.framework/Headers\n$(SRCROOT)/Frameworks/SDL_ttf.framework/Headers\n$(SRCROOT)/Frameworks/SDL.framework/Headers", - ); - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ( - /usr/local/include, - /usr/local/lib, - /usr/lib, - ); - OTHER_LDFLAGS = ( - "-lxml2", - "-lz", - ); - PRODUCT_NAME = Aethyra; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - VALID_ARCHS = "i386 x86_64"; - }; - name = Release; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ONLY_ACTIVE_ARCH_PRE_XCODE_3_1)"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - ONLY_ACTIVE_ARCH_PRE_XCODE_3_1 = "$(NATIVE_ARCH)"; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; - ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Aethyra" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4B08A954540054247B /* Debug */, - C01FCF4C08A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Aethyra" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/Aethyra.xcodeproj/trevor.pbxuser b/Aethyra.xcodeproj/trevor.pbxuser deleted file mode 100644 index d08e4226..00000000 --- a/Aethyra.xcodeproj/trevor.pbxuser +++ /dev/null @@ -1,432 +0,0 @@ -// !$*UTF8*$! -{ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - activeBuildConfigurationName = Release; - activeExecutable = 69E4304F0F451EE00058B232 /* Aethyra */; - activeTarget = 8D1107260486CEB800E47090 /* Aethyra */; - addToTargets = ( - 8D1107260486CEB800E47090 /* Aethyra */, - ); - codeSenseManager = 69E432630F451EF00058B232 /* Code sense */; - executables = ( - 69E4304F0F451EE00058B232 /* Aethyra */, - ); - perUserDictionary = { - PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 442, - 20, - 48, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 402, - 60, - 20, - 48, - 43, - 43, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXTargetDataSource_PrimaryAttribute, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - ); - }; - PBXPerProjectTemplateStateSaveDate = 256201633; - PBXWorkspaceStateSaveDate = 256201633; - }; - perUserProjectItems = { - 694D2A790F45543600254953 /* PBXTextBookmark */ = 694D2A790F45543600254953 /* PBXTextBookmark */; - 694D2A7A0F45543600254953 /* PBXTextBookmark */ = 694D2A7A0F45543600254953 /* PBXTextBookmark */; - 694D2A7B0F45543600254953 /* PBXTextBookmark */ = 694D2A7B0F45543600254953 /* PBXTextBookmark */; - 694D2A7C0F45543600254953 /* PBXTextBookmark */ = 694D2A7C0F45543600254953 /* PBXTextBookmark */; - 694D2A7D0F45543600254953 /* PBXTextBookmark */ = 694D2A7D0F45543600254953 /* PBXTextBookmark */; - 694D2A7E0F45543600254953 /* PBXTextBookmark */ = 694D2A7E0F45543600254953 /* PBXTextBookmark */; - 69E432D90F4527F50058B232 /* PBXTextBookmark */ = 69E432D90F4527F50058B232 /* PBXTextBookmark */; - 69E432DB0F4527F50058B232 /* PBXTextBookmark */ = 69E432DB0F4527F50058B232 /* PBXTextBookmark */; - 69E432DC0F4527F50058B232 /* PBXTextBookmark */ = 69E432DC0F4527F50058B232 /* PBXTextBookmark */; - 69E432DD0F4527F50058B232 /* PBXTextBookmark */ = 69E432DD0F4527F50058B232 /* PBXTextBookmark */; - 69E432DE0F4527F50058B232 /* PBXTextBookmark */ = 69E432DE0F4527F50058B232 /* PBXTextBookmark */; - 69E433420F452C7C0058B232 /* PBXTextBookmark */ = 69E433420F452C7C0058B232 /* PBXTextBookmark */; - 69E433430F452C7C0058B232 /* PBXTextBookmark */ = 69E433430F452C7C0058B232 /* PBXTextBookmark */; - 69E433440F452C7C0058B232 /* PBXTextBookmark */ = 69E433440F452C7C0058B232 /* PBXTextBookmark */; - 69E433450F452C7C0058B232 /* PBXTextBookmark */ = 69E433450F452C7C0058B232 /* PBXTextBookmark */; - 69E433490F452C7C0058B232 /* PBXTextBookmark */ = 69E433490F452C7C0058B232 /* PBXTextBookmark */; - 69E4334A0F452C7C0058B232 /* PBXTextBookmark */ = 69E4334A0F452C7C0058B232 /* PBXTextBookmark */; - 69E4334B0F452C7C0058B232 /* PBXTextBookmark */ = 69E4334B0F452C7C0058B232 /* PBXTextBookmark */; - 69E439D80F453D9B0058B232 /* PBXTextBookmark */ = 69E439D80F453D9B0058B232 /* PBXTextBookmark */; - 69E439DA0F453D9B0058B232 /* PBXTextBookmark */ = 69E439DA0F453D9B0058B232 /* PBXTextBookmark */; - 69E439DB0F453D9B0058B232 /* PBXTextBookmark */ = 69E439DB0F453D9B0058B232 /* PBXTextBookmark */; - 69E439EB0F453E840058B232 /* PBXTextBookmark */ = 69E439EB0F453E840058B232 /* PBXTextBookmark */; - }; - sourceControlManager = 69E432620F451EF00058B232 /* Source Control */; - userBuildSettings = { - }; - }; - 32CA4F630368D1EE00C91783 /* Aethyra_Prefix.pch */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {620, 248}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 145}"; - }; - }; - 694D2A790F45543600254953 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E4312E0F451EF00058B232 /* main.cpp */; - name = "main.cpp: 1099"; - rLen = 0; - rLoc = 34949; - rType = 0; - vrLen = 455; - vrLoc = 34714; - }; - 694D2A7A0F45543600254953 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E431980F451EF00058B232 /* soundeffect.h */; - name = "soundeffect.h: 30"; - rLen = 0; - rLoc = 1002; - rType = 0; - vrLen = 370; - vrLoc = 723; - }; - 694D2A7B0F45543600254953 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E431900F451EF00058B232 /* music.h */; - name = "music.h: 26"; - rLen = 85; - rLoc = 903; - rType = 0; - vrLen = 377; - vrLoc = 723; - }; - 694D2A7C0F45543600254953 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E4312E0F451EF00058B232 /* main.cpp */; - name = "main.cpp: 1099"; - rLen = 0; - rLoc = 34949; - rType = 0; - vrLen = 455; - vrLoc = 34714; - }; - 694D2A7D0F45543600254953 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E431980F451EF00058B232 /* soundeffect.h */; - name = "soundeffect.h: 30"; - rLen = 0; - rLoc = 1002; - rType = 0; - vrLen = 370; - vrLoc = 723; - }; - 694D2A7E0F45543600254953 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E431900F451EF00058B232 /* music.h */; - name = "music.h: 26"; - rLen = 85; - rLoc = 903; - rType = 0; - vrLen = 377; - vrLoc = 723; - }; - 69E4304F0F451EE00058B232 /* Aethyra */ = { - isa = PBXExecutable; - activeArgIndices = ( - ); - argumentStrings = ( - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 0; - configStateDict = { - }; - customDataFormattersEnabled = 1; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - dylibVariantSuffix = ""; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = Aethyra; - savedGlobals = { - }; - sourceDirectories = ( - ); - variableFormatDictionary = { - }; - }; - 69E4312B0F451EF00058B232 /* log.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {620, 1876}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{2656, 667}"; - }; - }; - 69E4312C0F451EF00058B232 /* log.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {620, 1190}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{1722, 495}"; - }; - }; - 69E4312E0F451EF00058B232 /* main.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {620, 16128}}"; - sepNavSelRange = "{34949, 0}"; - sepNavVisRange = "{34714, 455}"; - }; - }; - 69E431830F451EF00058B232 /* imagewriter.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {620, 1568}}"; - sepNavSelRange = "{942, 0}"; - sepNavVisRange = "{650, 374}"; - }; - }; - 69E431900F451EF00058B232 /* music.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {620, 1162}}"; - sepNavSelRange = "{903, 85}"; - sepNavVisRange = "{723, 377}"; - }; - }; - 69E431980F451EF00058B232 /* soundeffect.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {620, 1106}}"; - sepNavSelRange = "{1002, 0}"; - sepNavVisRange = "{723, 370}"; - }; - }; - 69E4319C0F451EF00058B232 /* SDLMain.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {474, 5376}}"; - sepNavSelRange = "{9149, 0}"; - sepNavVisRange = "{8840, 548}"; - }; - }; - 69E431A30F451EF00058B232 /* sound.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {620, 1750}}"; - sepNavSelRange = "{959, 23}"; - sepNavVisRange = "{787, 276}"; - }; - }; - 69E432620F451EF00058B232 /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - scmConfiguration = { - }; - }; - 69E432630F451EF00058B232 /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; - 69E432D90F4527F50058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E431A30F451EF00058B232 /* sound.h */; - name = "sound.h: 29"; - rLen = 23; - rLoc = 959; - rType = 0; - vrLen = 276; - vrLoc = 787; - }; - 69E432DB0F4527F50058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E431A30F451EF00058B232 /* sound.h */; - name = "sound.h: 29"; - rLen = 23; - rLoc = 959; - rType = 0; - vrLen = 288; - vrLoc = 787; - }; - 69E432DC0F4527F50058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E431830F451EF00058B232 /* imagewriter.cpp */; - name = "imagewriter.cpp: 23"; - rLen = 70; - rLoc = 870; - rType = 0; - vrLen = 408; - vrLoc = 650; - }; - 69E432DD0F4527F50058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E431900F451EF00058B232 /* music.h */; - name = "music.h: 29"; - rLen = 23; - rLoc = 959; - rType = 0; - vrLen = 447; - vrLoc = 653; - }; - 69E432DE0F4527F50058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E431980F451EF00058B232 /* soundeffect.h */; - name = "soundeffect.h: 26"; - rLen = 86; - rLoc = 917; - rType = 0; - vrLen = 439; - vrLoc = 653; - }; - 69E433420F452C7C0058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E431830F451EF00058B232 /* imagewriter.cpp */; - name = "imagewriter.cpp: 29"; - rLen = 0; - rLoc = 942; - rType = 0; - vrLen = 374; - vrLoc = 650; - }; - 69E433430F452C7C0058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E4312C0F451EF00058B232 /* log.h */; - name = "log.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 495; - vrLoc = 1722; - }; - 69E433440F452C7C0058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E4312B0F451EF00058B232 /* log.cpp */; - name = "log.cpp: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 667; - vrLoc = 2656; - }; - 69E433450F452C7C0058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E433460F452C7C0058B232 /* Cocoa.h */; - name = "Cocoa.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 485; - vrLoc = 0; - }; - 69E433460F452C7C0058B232 /* Cocoa.h */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = Cocoa.h; - path = /System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h; - sourceTree = "<absolute>"; - }; - 69E433490F452C7C0058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E4312C0F451EF00058B232 /* log.h */; - name = "log.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 495; - vrLoc = 1722; - }; - 69E4334A0F452C7C0058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E4312B0F451EF00058B232 /* log.cpp */; - name = "log.cpp: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 667; - vrLoc = 2656; - }; - 69E4334B0F452C7C0058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E4334C0F452C7C0058B232 /* Cocoa.h */; - name = "Cocoa.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 485; - vrLoc = 0; - }; - 69E4334C0F452C7C0058B232 /* Cocoa.h */ = { - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = Cocoa.h; - path = /System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h; - sourceTree = "<absolute>"; - }; - 69E439D80F453D9B0058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E4319C0F451EF00058B232 /* SDLMain.m */; - name = "SDLMain.m: 302"; - rLen = 0; - rLoc = 9149; - rType = 0; - vrLen = 548; - vrLoc = 8840; - }; - 69E439DA0F453D9B0058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 32CA4F630368D1EE00C91783 /* Aethyra_Prefix.pch */; - name = "Aethyra_Prefix.pch: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 145; - vrLoc = 0; - }; - 69E439DB0F453D9B0058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 69E4319C0F451EF00058B232 /* SDLMain.m */; - name = "SDLMain.m: 302"; - rLen = 0; - rLoc = 9149; - rType = 0; - vrLen = 548; - vrLoc = 8840; - }; - 69E439EB0F453E840058B232 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 32CA4F630368D1EE00C91783 /* Aethyra_Prefix.pch */; - name = "Aethyra_Prefix.pch: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 145; - vrLoc = 0; - }; - 8D1107260486CEB800E47090 /* Aethyra */ = { - activeExec = 0; - executables = ( - 69E4304F0F451EE00058B232 /* Aethyra */, - ); - }; -} diff --git a/AethyraProj.xcconfig b/AethyraProj.xcconfig deleted file mode 100644 index 73543b88..00000000 --- a/AethyraProj.xcconfig +++ /dev/null @@ -1,8 +0,0 @@ - GCC_ENABLE_CPP_EXCEPTIONS = YES; - GCC_ENABLE_CPP_RTTI = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - PREBINDING = NO; - INFOPLIST_EXPAND_BUILD_SETTINGS = YES;
\ No newline at end of file diff --git a/AethyraTarget.xcconfig b/AethyraTarget.xcconfig deleted file mode 100644 index d0b7f4a3..00000000 --- a/AethyraTarget.xcconfig +++ /dev/null @@ -1,7 +0,0 @@ - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Aethyra_Prefix.pch; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = $(HOME)/Applications; - PRODUCT_NAME = Aethyra; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = Dynamic; - GCC_SYMBOLS_PRIVATE_EXTERN = YES; diff --git a/Aethyra_Prefix.pch b/Aethyra_Prefix.pch deleted file mode 100644 index fa4feda6..00000000 --- a/Aethyra_Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'Aethyra' target in the 'Aethyra' project -// - -#ifdef __OBJC__ - #import <Cocoa/Cocoa.h> -#endif diff --git a/CMake/Modules/FindENet.cmake b/CMake/Modules/FindENet.cmake new file mode 100644 index 00000000..90560063 --- /dev/null +++ b/CMake/Modules/FindENet.cmake @@ -0,0 +1,41 @@ +# - Try to find enet +# Once done this will define +# +# ENET_FOUND - system has enet +# ENET_INCLUDE_DIR - the enet include directory +# ENET_LIBRARIES - the libraries needed to use enet +# ENET_DEFINITIONS - Compiler switches required for using enet + +IF (ENet_INCLUDE_DIR AND ENet_LIBRARY) + SET(ENet_FIND_QUIETLY TRUE) +ENDIF (ENet_INCLUDE_DIR AND ENet_LIBRARY) + +FIND_PATH(ENet_INCLUDE_DIR enet/enet.h + /usr/include + /usr/local/include + ) + +FIND_LIBRARY(ENet_LIBRARY + NAMES enet + PATHS /usr/lib /usr/local/lib + ) + +IF (ENet_INCLUDE_DIR AND ENet_LIBRARY) + SET(ENET_FOUND TRUE) + SET(ENET_INCLUDE_DIR ${ENet_INCLUDE_DIR}) + SET(ENET_LIBRARIES ${ENet_LIBRARY}) +ELSE (ENet_INCLUDE_DIR AND ENet_LIBRARY) + SET(ENET_FOUND FALSE) +ENDIF (ENet_INCLUDE_DIR AND ENet_LIBRARY) + +IF (ENET_FOUND) + IF (NOT ENet_FIND_QUIETLY) + MESSAGE(STATUS "Found enet: ${ENet_LIBRARY}") + ENDIF (NOT ENet_FIND_QUIETLY) +ELSE (ENET_FOUND) + IF (ENet_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could NOT find enet") + ENDIF (ENet_FIND_REQUIRED) +ENDIF (ENET_FOUND) + +MARK_AS_ADVANCED(ENet_INCLUDE_DIR ENet_LIBRARY) diff --git a/CMake/Modules/FindGuichan.cmake b/CMake/Modules/FindGuichan.cmake index fccfc499..b0cb9038 100644 --- a/CMake/Modules/FindGuichan.cmake +++ b/CMake/Modules/FindGuichan.cmake @@ -17,7 +17,6 @@ IF (Guichan_INCLUDE_DIR AND Guichan_LIBRARY) SET(Guichan_QUIET TRUE) ENDIF (Guichan_INCLUDE_DIR AND Guichan_LIBRARY) - FIND_PATH(Guichan_INCLUDE_DIR NAMES guichan.hpp PATHS /usr/include /usr/local/include @@ -53,15 +52,25 @@ FOREACH (COMPONENT ${Guichan_FIND_COMPONENTS}) IF (COMPONENT STREQUAL "SDL") SET(COMPONENT_FOUND TRUE) - SET(Guichan_HEADER "guichan/sdl.hpp") - SET(Guichan_LIBRARY "guichan_sdl") + IF (CMAKE_SYSTEM_NAME STREQUAL "Darwin") + SET(Guichan_HEADER "sdl.hpp") + SET(Guichan_LIBRARY_${COMPONENT} TRUE) + ELSE (CMAKE_SYSTEM_NAME STREQUAL "Darwin") + SET(Guichan_HEADER "guichan/sdl.hpp") + SET(Guichan_LIBRARY "guichan_sdl") + ENDIF (CMAKE_SYSTEM_NAME STREQUAL "Darwin") ENDIF (COMPONENT STREQUAL "SDL") IF (COMPONENT STREQUAL "OpenGL") SET(COMPONENT_FOUND TRUE) - SET(Guichan_HEADER "guichan/opengl.hpp") - SET(Guichan_LIBRARY "guichan_opengl") - ENDIF (COMPONENT STREQUAL "OpenGL") + IF (CMAKE_SYSTEM_NAME STREQUAL "Darwin") + SET(Guichan_HEADER "opengl.hpp") + SET(Guichan_LIBRARY_${COMPONENT} TRUE) + ELSE (CMAKE_SYSTEM_NAME STREQUAL "Darwin") + SET(Guichan_HEADER "guichan/opengl.hpp") + SET(Guichan_LIBRARY "guichan_opengl") + ENDIF (CMAKE_SYSTEM_NAME STREQUAL "Darwin") + ENDIF (COMPONENT STREQUAL "OpenGL") IF (NOT COMPONENT_FOUND) MESSAGE(FATAL_ERROR "Invalid Guichan component: ${COMPONENT}") diff --git a/CMakeLists.txt b/CMakeLists.txt index 49c21cbd..71d85b12 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT(AETHYRA) +PROJECT(TMW) SET(VERSION 0.0.29) @@ -11,11 +11,11 @@ IF (WIN32) SET(PKG_DATADIR ".") SET(PKG_BINDIR ".") ELSE (WIN32) - SET(PKG_DATADIR ${CMAKE_INSTALL_PREFIX}/share/aethyra) + SET(PKG_DATADIR ${CMAKE_INSTALL_PREFIX}/share/tmw) SET(PKG_BINDIR ${CMAKE_INSTALL_PREFIX}/bin) ENDIF (WIN32) ADD_SUBDIRECTORY(data) ADD_SUBDIRECTORY(src) -INSTALL(FILES aethyra.desktop DESTINATION share/applications) +INSTALL(FILES tmw.desktop DESTINATION share/applications) @@ -1,6144 +0,0 @@ -2008-11-01 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/openglgraphics.h, src/openglgraphics.cpp: Made an option around - the syncing, but no way to change it for now. - -2008-09-21 Kevin Day ("Blame") <blame@aethyra.com> - - * Added the update.sh script to work with autobuild.sh - -2008-09-16 Kevin Day ("Blame") <blame@aethyra.com> - - * Added autobuild.sh complete build script for the client - * Updated the gui graphics for the client for halloween - -2008-09-12 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Changed default port for Aethyra to 21001 - * Modified "/where" command to display X and Y coordinates - (Again - this was done on 2008-08-21, but the changes - were overwritten somehow) - * Added client support for Heal spell ("/cast heal") - * Added client support for Gather spell ("/cast gather") - * some changes to inventory system, to support the use of - "Kafra" storage (this is not yet operational - these - changes are only part of what's required to enable storage - in the client) - -2008-09-04 Douglas Boffey ("Scraggy") <scraggy@aethyra.com> - - * Added code to change colours in the chatlog - -2008-08-30 Kevin Day ("Blame") <blame@aethyra.com> - - * Updated the in game help files "/trunk/data/help" - -2008-08-28 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Patch to prevent crash if a map layer has too many - tiles (From TMW svn, r4544) - -2008-08-26 Douglas Boffey ("Scraggy") <DougABoffey@netscape.net> - - * Corrected position of registration dialogs - -2008-08-21 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Added configuration option "EnableSync" that causes - client to honor 0x88 "Stop Walking" packet. - * Added X and Y coordinates to output of "/where" - * Reformatted src/chat.cpp - it was missing indentation - in large areas - -2008-08-17 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Set the wallpaper based on the screen width. - * Added a usleep to the login sequence loop to - prevent it from unnecessarily maxing out the CPU - -2008-08-17 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Correctly show GP remaining after buying from NPC - vendor (from TMW svn, r4449) - -2008-08-17 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Fixed issues with unequipping some arrows failing. - * Removed hard-coded item ID's from several files - -2008-08-16 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Fixed bug where client would crash if another player - was targeted when you hit a warp point. - -2008-08-14 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Uncommented line so that MP status bar correctly - updates based on remaining mana - -2008-08-13 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Added code to display NPC and monster names using an - alternate colored font. Added support for a server - provided "GM flag", which prepends "(GM)" to the player's - name and changes the font color. - -2008-08-08 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Made "--skipupdate" skip the update download process, but - still load whatever updates have been previously downloaded. - -2008-07-25 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Added feature to remember window locations from one - session to the next (patch from TMW by ElvenProgrammer) - -2008-07-24 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Tweak in net/beinghandler.cpp to compensate for a visual - bug when using the TMW server. - -2008-07-23 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Added support for capes/misc1/misc2 into the character - selection display - -2008-07-23 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Added "chat" button to open/close chat window - * Added support for viewable cape/misc1/misc2 (new eAthena - version ONLY - -2008-07-22 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Added handler for 0x0086 movement packet (new eAthena). - * Changed startup sequence for game.cpp to send a ping packet - to the server after all the handlers have been initialized. - This is required by the new eAthena version. - * Added #deines for some "ping" packets. - -2008-07-19 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Removed unnecessary check ("weight") from itemdb loader - -2008-07-18 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Added code to provide viewable glove and shoe sprites - -2008-07-11 Douglas Boffey <DougABoffey@netscape.net> - - * Added code to avoid collision between different displayed text. - -2008-07-08 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Added handling for a "Stop Walking" packet. This will - force the client back into sync during those "can't run - away from a battle" sync error conditions. - -2008-07-07 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Added support for update host provided by login server - * Changed startup sequence to login first, then update - -2008-07-05 Lloyd Bryant ("Sanga") <sanga@aethyra.com> - - * Applied patch from kraant to convert into a TME branded client - * Removed redundant autoconf files - -2008-07-01 Douglas Boffey <DougABoffey@netscape.net> - - * Split ChatWindow into ChatWindow, Recorder and Party. - * Added /toggle command. - -2008-06-28 Kevin Day <blame582@gmail.com> - - * Updated configure and configure.ac to reflect tme version info. - -2008-06-25 Kevin Day <blame582@gmail.com> - - * Updated README added /commands and updated skill level listing. - -2008-06-25 Douglas Boffey <DougABoffey@netscape.net> - - * Added a command to display the characters present within hearing - distance (/help present for details). - * Removed the need to select the map server if only one available. - * Added a text entry for the port to the login dialog. - * Added the basis of the party subsystem. (/help party for details). - * Added the recording subsystem (/help record for details). - * Add a dropdown to the login dialog to make it easier to log in - on different servers. - * Made the chatlog entry sticky (Cancelled by a blank line) - - TODO Make an option. - -2008-06-24 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/particle.h, src/particleemitter.cpp, - src/particleemitter.h: Added particle property "follow-parent" which - makes the particle move when its parent particle is moved. - -2008-06-23 Philipp Sehmisch <tmw@crushnet.org> - - * src/imageparticle.cpp, src/particle.cpp, src/particle.h, - src/particleemitter.cpp, src/particleemitter.h, src/textparticle.cpp: - Implemented "alpha" particle property. - -2008-06-22 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/player_relations.h: Fixed warning about missing virtual - destructor. - -2008-06-17 Fate <fate.tmw@googlemail.com> - - * src/net/tradehandler.cpp: bug #333: Suppress `trade with X cancelled' - messages for ignored players. - -2008-06-16 Fate <fate.tmw@googlemail.com> - - * player_relations.h: Allow whispers by default. - -2008-06-14 David Athay <ko2fan@gmail.com> - - * src/gui/shop.cpp, src/gui/browserbox.cpp, src/net/tradehandler.cpp: - Fixed compilation errors. Fixed trade bug (although a little hacky - right now). - * src/net/tradehandler.cpp: Changed bug fix as requested by Bjørn. - -2008-06-08 Fate <fate.tmw@googlemail.com> - - * src/gui/table.cpp: Invalidate mTopWidget whenever the model is - regenerated to reflect that we have no current valid selection. - * src/player_relations.cpp: Proper handling of case where player, to - apply ignore strategy to, is NULL. - -2008-06-05 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/gui/setup_video.cpp: Lowered default particle - detail level. - -2008-06-05 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/updatewindow.cpp, src/gui/updatewindow.h, src/main.cpp, - src/resources/buddylist.cpp, src/resources/spritedef.cpp, - src/resources/resourcemanager.cpp: Added command line argument to - specify the update host (-H). Also, to avoid problems when files with - the same name are served by different update hosts, the updates are - now stored in an update host specific directory. Based on a patch by - Sanga. - -2008-06-04 Lloyd Bryant <sanga@aethyra.com> - - * src/net/charserverhandler.cpp: Display shield sprite also in - character select window. - -2008-05-30 Lloyd Bryant <sanga@aethyra.com> - - * src/net/equipmenthandler.cpp, src/net/beinghandler.cpp, - src/net/protocol.h, src/being.h: Merged handling for eAthena packets - 0x00c3 and 0x01d7 and added support for displaying a shield sprite. - -2008-05-28 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp: Changed the way particle emitter skip is handled - to make linear and circular emitters work with particleEmitterSkip - enabled. - * src/gui/setup.cpp, src/gui/setup_video.cpp, src/gui/setup_video.h: - Added slider for controlling particleEmitterSkip (overall quality of - particle effects) to video setup menu. - -2008-05-28 Dennis Friis <peavey@placid.dk> - - * src/being.cpp: Change order of direction to up/down/right/left in - Being::getSpriteDirection to fix inconsistancy of facing direction - when walking diagonally. - -2008-05-27 David Athay <ko2fan@gmail.com> - - * src/main.cpp, src/player_relations.cpp: Changed OSX tmw directory to - a more suitable location, and fixed compile error. - -2008-05-22 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/Makefile.am, src/CMakeLists.txt: Fixed linker error caused by - missing module. - -2008-05-19 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/setup_players.cpp, src/gui/popup_box.h, src/gui/viewport.h, - src/gui/popup_box.cpp, src/gui/setup_players.h, src/Makefile.am: - Removed the PopupBox class and used gcn::DropDown instead. It has - clipping issues, but it would be better to fix those instead of using - this complicated workaround. - -2008-05-19 Philipp Sehmisch <tmw@crushnet.org> - - * src/net/beinghandler.cpp: Implemented interpretation of names for - NPCs and monsters. - * src/npc.cpp, src/resources/npcdb.cpp, src/resources/npcdb.hpp: Added - the possibility to add particle effects to NPCs in npcs.xml. - -2008-05-16 David Athay <ko2fan@gmail.com> - - * src/gui/popupmenu.cpp: Applied QOAL's patch to fix popup bug. - -2008-05-14 fate <fate.tmw@googlemail.com> - - * src/configuration.cpp, src/game.cpp, src/player_relations.h, - src/beingmanager.h, src/gui/setup_players.cpp, src/gui/setup.cpp, - src/gui/table_model.h, src/gui/table_model.cpp, src/gui/popup_box.h, - src/gui/popup_box.cpp, src/gui/table.h, src/gui/setup.h, - src/gui/table.cpp, src/gui/setup_players.h, src/gui/popupmenu.cpp, - src/beingmanager.cpp, src/player.cpp, src/main.cpp, src/being.cpp, - src/player.h, src/net/tradehandler.h, src/net/beinghandler.cpp, - src/net/tradehandler.cpp, src/net/chathandler.cpp, - src/configuration.h, src/player_relations.cpp, src/Makefile.am, - src/being.h, data/graphics/gui/emotions.png, - data/graphics/gui/Makefile.am, data/help/commands.txt: Added ability - to define friends, players you want to ignore or disregard and - configure whether trading is allowed. Based on new popup code, - configuration improvements to store hierarchical data and a table - model. - -2008-05-08 Dennis Friis <peavey@placid.dk> - - * src/game.cpp: Make F8 toggle shortcut window as suggested by And1 - and fate. - * src/game.cpp, src/gui/chat.h, src/gui/chat.cpp: Allow page up and - page down to scroll the chat window, based on patch by fate. - -2008-05-06 Dennis Friis <peavey@placid.dk> - - * src/gui/itemshortcutcontainer.cpp: Don't allow dragging of empty - placeholders. - -2008-04-29 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/game.cpp, src/gui/chat.h, src/gui/chat.cpp: Fixed issue with - determining whether chat input is focused (method no longer virtual). - * src/gui/itemshortcutcontainer.cpp: Fixed sometimes rendering with - the wrong font. - * src/gui/window.h, src/gui/window.cpp: Fixed warnings about hiding - virtual method, Window now always deletes its children (the option not - to do so was never used anyway). - * src/gui/gccontainer.h, src/gui/gccontainer.cpp: Removed unused - option from GCContainer to not delete a child, fixing warnings about - hiding virtual method gcn::Container::add. - * src/log.h, src/resources/imageset.cpp: When compiling with GCC, use - the printf format attribute for the log method so that the compiler - checks the type of its parameters. - -2008-04-28 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/inventorywindow.h, src/gui/itemcontainer.h, - src/gui/inventorywindow.cpp, src/gui/scrollarea.h, - src/gui/itemcontainer.cpp, src/gui/scrollarea.cpp: Properly fix - problems with ItemContainer in InventoryWindow not resizing properly - since upgrade to Guichan 0.8.0. - -2008-04-28 Dennis Friis <peavey@placid.dk> - - * src/gui/scrollarea.h, src/gui/scrollarea.cpp: Add methods to get - width and height adjusted for any visible scrollbars. - * src/gui/itemcontainer.cpp: Fix buildup of whitespace by using - correct gridHeight and adding just 4px space to bottom. - * src/gui/inventorywindow.h, src/gui/inventorywindow.cpp: Switch to - use our extended ScrollArea and use adjusted width to proper calculate - the grid for itemcontainer. - * src/game.cpp: Tweak keyboard input handling a bit. This fixes using - emoticons triggering shortcut items to be used. - * src/game.cpp: Remove check for KMOD_NONE since this is not working - uniformly across systems. - -2008-04-27 Dennis Friis <peavey@placid.dk> - - * src/gui/inventorywindow.cpp: Fix ItemContainer not being resized - properly when resizing inventory window. - -2008-04-26 Dennis Friis <peavey@placid.dk> - - * src/inventory.cpp: Avoid stacking equipment other than arrows. Based on - similar fix in inventoryhandler. - * src/gui/trade.cpp: Text fix, z => GP. - * src/net/playerhandler.cpp: When picking up GP from trade or quest, - tell the user in the chat window like with items. - -2008-04-24 Dennis Friis <peavey@placid.dk> - - * src/itemshortcut.h, src/gui/itemshortcutcontainer.cpp, - src/gui/itemcontainer.cpp, src/net/inventoryhandler.cpp, - src/itemshortcut.cpp: Make shortcut container ID based instead of slot - based. Fixes items shifting around often causing equipment to be lost. - * data/help/commands.txt: Document anti-trade function. - -2008-04-22 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/beingmanager.cpp: Fixed a bug, thanks GCC 4.3! - -2008-04-18 David Athay <ko2fan@gmail.com> - - * src/game.cpp, src/openglgraphics.cpp: Mac now uses Apple key for - emoticons, so alt can be used for alternate characters. Disable vsync - on mac. - -2008-04-17 Dennis Friis <peavey@placid.dk> - - * src/gui/sell.cpp: Fix shop list not to scroll to top when selling. - Redo of revision 3801 due to changes in guichan 0.8.0. - * src/gui/minimap.cpp: Draw NPCs in yellow on minimap and skip drawing - of warps. Based on idea by leeor_net. - -2008-04-16 Dennis Friis <peavey@placid.dk> - - * src/gui/browserbox.cpp: Fix a basic_string::at sometimes being out - of range in BrowserBox::draw when checking for line separators and - color codes. - * src/localplayer.cpp: Cancel walking to a clicked monster if the - target is lost while getting to it (killed or otherwise removed). - -2008-04-16 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/npc_text.h, src/gui/textbox.cpp, src/gui/npc_text.cpp, - src/gui/scrollarea.h, src/gui/textbox.h: Restored the text wrapping in - TextBox, since it was based on overriding a method that is no longer - virtual in Guichan 0.8.0. - * src/gui/viewport.cpp: Fixed compilation warning. - -2008-04-15 David Athay <ko2fan@gmail.com> - - * src/gui/viewport.cpp, src/beingmanager.cpp, tmw.cbp: Fixed clicking - near player. - -2008-04-14 Dennis Friis <peavey@placid.dk> - - * src/gui/chat.cpp: Tweaked /whisper command to allow quoting of nicks - with spaces in them. - -2008-04-14 Philipp Sehmisch <tmw@crushnet.org> - - * src/resources/dye.cpp: Fixed multi-channel dyeing (patch by fate) - * src/gui/chat.h: Changed prefix of received whisper messages from - "says:" to "whispers:" - -2008-04-12 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/itemshortcutcontainer.h, src/gui/itemshortcutcontainer.cpp, - src/gui/itemshortcutwindow.cpp, src/gui/scrollarea.h, - src/gui/scrollarea.cpp, src/gui/itemshortcutwindow.h: Fixed display of - item shortcut container. gcn::Widget::setWidth is no longer virtual. - -2008-04-11 David Athay <ko2fan@gmail.com> - - * src/localplayer.cpp, src/beingmanager.h, src/gui/viewport.cpp, - src/beingmanager.cpp, src/localplayer.h, tmw.cbp: Players now need to - click on the monster sprites rather than the tile. Players will now - move to the target before attacking it. - -2008-04-10 Dennis Friis <peavey@placid.dk> - - * src/gui/chat.h, src/gui/chat.cpp, src/net/protocol.h, - src/net/chathandler.cpp: Implemented support for whispering to other - players. - -2008-04-10 Philipp Sehmisch <tmw@crushnet.org> - - * src/net/beinghandler.cpp: Critical hits are now displayed. - -2008-04-09 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/shoplistbox.cpp, src/gui/shoplistbox.h: Fixed problem with - row height in shop list box. - * src/game.cpp, src/gui/menuwindow.cpp, src/gui/itemcontainer.cpp, - src/main.cpp, src/CMakeLists.txt, src/net/inventoryhandler.cpp, - src/Makefile.am: Re-enabled non-functional item shortcut window, - planned to be fixed for 0.0.25. - -2008-04-07 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/particle.cpp, src/utils/xml.cpp, src/utils/xml.h, - src/resources/mapreader.cpp, src/resources/spritedef.cpp, - src/resources/npcdb.h, src/resources/monsterdb.cpp, - src/resources/itemdb.cpp, src/resources/npcdb.cpp, - src/resources/spritedef.h: Added XML::Document class which simplifies - parsing an XML document and automatically cleans it up again. - * src/being.cpp: Fixed crash on trying to show out of range emoticon. - * src/winver.h, README, configure.ac, data/help/changes.txt, - data/help/header.txt, NEWS, CMakeLists.txt: Updated version, release - date and changes. - -2008-04-03 David Athay <ko2fan@gmail.com> - - * src/game.cpp: Tweaked disconnect dialog, hoping to fix a crash bug. - -2008-03-31 Philipp Sehmisch <tmw@crushnet.org> - - * src/main.cpp, src/npc.cpp, src/npc.h, src/resources/npcdb.h, - src/resources/npcdb.cpp, data/npcs.xml, src/Makefile.am, tmc.cbp: - Implemented NPC XML database which maps NPC IDs to one or more - animation files and thus enables animated NPCs. - -2008-03-30 Dennis Friis <peavey@placid.dk> - - * configure.ac: Updated for tmwdata split. - -2008-03-27 Dennis Friis <peavey@placid.dk> - - * src/gui/progressbar.cpp, src/gui/scrollarea.cpp: Revert progress bar - changes and initialize mWalkTime. - -2008-03-26 Dennis Friis <peavey@placid.dk> - - * src/gui/progressbar.cpp, src/localplayer.cpp: Initialized some - uninitialized variables. - -2008-03-23 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/engine.h, src/gui/viewport.h, src/engine.cpp, - src/net/playerhandler.cpp: Removed unnecessary forwarding method. - -2008-03-16 Dennis Friis <peavey@placid.dk> - - * The Mana World.dev: Updated Dev-C++ project file. - -2008-03-11 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/gui/CMakeLists.txt, data/graphics/gui/Makefile.am: - Removed unused image here too. - -2008-03-11 Eugenio Favalli <elvenprogrammer@themanaworld.org> - - * data/graphics/gui/attack_target.png: Removed unused image. - -2008-03-09 Dennis Friis <peavey@placid.dk> - - * src/game.cpp: Pressing escape in the quit dialog closes the dialog. - * src/gui/chat.cpp, src/gui/chat.h: Fixed a bug with chat messages - without a sender which include semicolons. - * src/chat.cpp: Added "/clear" command to clear chat window. - -2008-03-08 Philipp Sehmisch <tmw@crushnet.org> - - * tools/tmxcopy/main.cpp, tools/tmxcopy/main.map.cpp, - tools/tmxcopy/zlibutils.cpp: Fixed some width/height mixups in - TMXCopy. - -2008-03-07 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/*: Moved dynamically released data to its own module (tmwdata). - -2008-03-07 Eugenio Favalli <elvenprogrammer@themanaworld.org> - - * data/equipment.xml, data/graphics/items/armor-legs-chaps.png, - data/graphics/items/armour-head-cowboyblack.png, - data/graphics/items/armour-head-cowboywhite.png, - data/graphics/items/generic-snakeskin.png, - data/graphics/sprites/head-cowboyblack.png, - data/graphics/sprites/head-cowboyblack.xml, - data/graphics/sprites/head-cowboywhite.png, - data/graphics/sprites/head-cowboywhite.xml, - data/graphics/sprites/leg-chaps-female.png, - data/graphics/sprites/leg-chaps-female.xml, - data/graphics/sprites/leg-chaps-male.png, - data/graphics/sprites/leg-chaps-male.xml, - data/graphics/sprites/monster-snake.png, - data/graphics/sprites/monster-snake.xml, - data/graphics/sprites/npcs.png, data/items.xml, data/monsters.xml: - Added new items by Black Don, new xml definitions by Peavey. - -2008-03-02 Eugenio Favalli <elvenprogrammer@themanaworld.org> - - * tmw.cbp: Upgraded project file to latest C::B release. - -2008-03-02 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/leg-jeans-female.png: fixed transparency issue. - -2008-02-26 Eugenio Favalli <elvenprogrammer@themanaworld.org> - - * src/gui/minimap.cpp: Keep minimap status. Based on a patch by Knivey. - * data/graphics/tiles/tulimshar1.png, data/maps/new_3-1.tmx: Added - Modanung's mud tileset and applyed to some houses in Tulimshar. - -2008-02-26 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/maps/new_14-1.tmx: Fixed some monster traps on - southwest woodland. - -2008-02-23 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/items/generic-ironore.png, data/items.xml: - Implemented iron ore item. - * data/maps/new_10-1.tmx, data/maps/new_11-1.tmx, - data/maps/new_12-1.tmx, data/maps/new_21-1.tmx: Map fixes by - QOAL. - * data/graphics/sprites/head-mask.xml, - data/graphics/sprites/head-warlordhelm.xml: - Animaton fixes by QOAL. - -2008-02-19 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_22-1.tmx: Map fixes at snake dungeon by QOAL. - -2008-02-18 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/hairstyle7-female.xml, src/sound.cpp, - src/utils/strprintf.cpp, tmw.cbp: Fixed image name. - -2008-02-13 Philipp Sehmisch <tmw@crushnet.org> - - * data/equipment.xml, data/items.xml, - data/graphics/items/armor-head-crusaderhelm.png, - data/graphics/items/armor-head-infantryhelm.png, - data/graphics/items/armor-head-knighthelm.png, - data/graphics/items/armor-head-warlordhelm.png, - data/graphics/sprites/head-crusaderhelm.png, - data/graphics/sprites/head-infantryhelm.png, - data/graphics/sprites/head-knighthelm.png, - data/graphics/sprites/head-warlordhelm.png, - data/graphics/sprites/head-crusaderhelm.xml, - data/graphics/sprites/head-infantryhelm.xml, - data/graphics/sprites/head-knighthelm.xml, - data/graphics/sprites/head-warlordhelm.xml: Added new headgears by - Black Don (thanks to QOAL for testing and implementation) - -2008-02-12 Dennis Friis <peavey@placid.dk> - - * src/localplayer.cpp, src/map.cpp, src/gui/viewport.cpp, src/being.cpp - src/map.h: Made pathfinding not halt on collision destination tile, - made moving around with mouse smoother. Added possibility to pass - through players with key controls. - -2008-02-11 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_22-1.tmx: Added music and overlay to snake dungeon. - -2008-02-10 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_23-1.tmx: Added Dimonds Cove outdoor map by MerlinX420. - -2008-02-08 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_14-1.tmx, data/maps/new_22-1.tmx: Added Dimonds Cove - outdoor map by MerlinX420. Fixed some map bugs in snake dungeon. - * data/items.xml: Added chicken leg meta information. - -2008-01-28 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/sell.cpp, src/gui/window.cpp, src/gui/inventorywindow.h, - src/gui/buy.h, src/gui/itemshortcutwindow.cpp, - src/gui/inventorywindow.cpp, src/gui/buy.cpp, src/gui/sell.h, - src/gui/window.h, src/gui/windowlistener.h, - src/gui/itemshortcutwindow.h, src/CMakeLists.txt, src/Makefile.am: - Used the gcn::WidgetListener instead of our WindowListener. - -2008-01-26 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/trade.h, src/game.h, src/being.h: Fixed a GCC 4.3 compile - error and constified the usage of auto_ptr, since that's the way in - which we are using them. - -2008-01-23 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/char_server.cpp, src/gui/window.cpp, src/gui/checkbox.h, - src/gui/playerbox.h, src/gui/button.cpp, src/gui/chat.cpp, - src/gui/slider.cpp, src/gui/tabbedcontainer.cpp, src/gui/textfield.h, - src/gui/shoplistbox.cpp, src/gui/register.cpp, - src/gui/radiobutton.cpp, src/gui/textbox.cpp, src/gui/login.cpp, - src/gui/setup_audio.cpp, src/gui/setup_video.cpp, - src/gui/textfield.cpp, src/gui/playerbox.cpp, - src/gui/setup_joystick.cpp, src/gui/scrollarea.h, - src/gui/windowlistener.h, src/gui/checkbox.cpp, - src/gui/scrollarea.cpp: Compile against Guichan 0.8.0. Some issues - with ShopListBox left and not trying to use their new TabbedArea, - SelectionListener and WidgetListener yet. Also needs more testing. - * src/gui/trade.cpp, src/gui/sell.cpp, src/gui/inventorywindow.h, - src/gui/selectionlistener.h, src/gui/itemcontainer.h, - src/gui/shoplistbox.cpp, src/gui/shoplistbox.h, src/gui/listbox.h, - src/gui/buy.h, src/gui/inventorywindow.cpp, src/gui/buy.cpp, - src/gui/itemcontainer.cpp, src/gui/sell.h, src/gui/trade.h, - src/gui/listbox.cpp, src/CMakeLists.txt, src/Makefile.am: Used the - gcn::SelectionListener instead of our own. - -2008-01-19 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_10-1.tmx, data/maps/new_11-1.tmx: Map fixes by 5t3v3 at - the new snow maps. Added hot spring particle effect to pond south of - snow village. - * data/graphics/particles/bubbles_32px, - data/graphics/particles/bubbles_12px, - data/graphics/particles/bubbles_8px, - data/graphics/particles/whirlpool.particle.xml: Added bubble particle - effect. - -2008-01-14 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_10-1.tmx, data/maps/new_11-1.tmx: Added new versions of - snow maps by 5t3v3. - * src/sound.cpp: Fixed an error in Davids last commit (couldn't compile - that way). - -2008-01-13 David Athay <ko2fan@gmail.com> - - * src/resources/resourcemanager.h, src/resources/resourcemanager.cpp, - src/main.cpp, src/sound.cpp, src/engine.cpp: Fixed music loading from - non-default location. - -2008-01-03 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_1-1.tmx, data/maps/new_3-1.tmx: Some map bugs reported - by Strump, fixed by Zipon. - -2007-12-30 Philipp Sehmisch <tmw@crushnet.org> - - * src/gui/viewport.cpp: Added config options to set the scroll center. - * src/engine.cpp, src/engine.h, src/gui/viewport.h, - src/net/playerhandler.cpp: Retained scroll offset during map change for - smoother map transitions. - -2007-12-30 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_22-1.tmx: Some mapping fixes at snake dungeon map. - * src/game.cpp, src/beingmanager.cpp, src/beingmanager.h, - src/keyboardconfig.cpp, src/keyboardconfig.h: Added a key for targeting - the nearest player character based on patches by Trinexx. - -2007-12-28 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_7-1.tmx, data/maps/new_22-1.tmx: Added new map by 5t3v3 - (east desert cave) and enhanced version of eastern desert by Len. - -2007-12-28 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_3-1.tmx: Some mapping errors fixed by Zipon. - * src/being.cpp, src/monster.cpp, src/resources/monsterinfo.cpp, - src/resources/monsterinfo.h: Added the possibility to assign particle - effects to monsters in the monster database. - * data/monsters.xml: Added flame particle effect to fire goblin as a - proof of concept. - -2007-12-26 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * README: Fixed year here too... - -2007-12-25 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/help/header.txt: Fixed year. :) - * debian/rules: Fixed missing backslash. - * src/CMakeLists.txt: Updated CMake file. - -2007-12-24 David Athay <ko2fan@gmail.com> - - * src/game.cpp: Fixed dialog for disconnections, so it says Ok, not - yes/no. - * src/openglgraphics.cpp: Changed type so it would compile on Leopard. - -2007-12-24 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * README, data/help/changes.txt, data/help/header.txt, NEWS: Updated - release date. - * src/game.cpp, src/gui/menuwindow.cpp, src/gui/itemcontainer.cpp, - src/main.cpp, src/CMakeLists.txt, src/net/inventoryhandler.cpp, - src/Makefile.am: Disabled non-functional item shortcut window. - * src/particleemitter.cpp: Fix compile warning. - -2007-12-23 Philipp Sehmisch <tmw@crushnet.org> - - * src/particleemitter.cpp, src/particleemitter.h: Particle images - are now reference-counted properly. - * src/resources/spritedef.cpp: Error placeholder is now used when - attempting to load a sprite definition file that doesn't exist. - * src/monster.cpp, src/player.cpp: Avoided attempts to load - "data/graphics/" when a monster or equipment piece has no sprite. - * data/graphics/particles/cookingfire.particle.xml: Removed some - particle properties that did nothing because they were misspelled. - -2007-12-22 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/winver.h, README, configure.ac, INSTALL, data/help/header.txt, - NEWS, CMakeLists.txt: Updated version to 0.0.24. - * src/net/chathandler.cpp, NEWS: Make sure chat messages are also - trimmed for the local player. - -2007-12-21 David Athay <ko2fan@gmail.com> - - * src/game.cpp, src/gui/updatewindow.cpp: Attempted to fix client - freeze when unable to connect to update host, and added exit dialog - when client loses connection. - -2007-12-21 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/shoplistbox.cpp: Fixed shop list box not to scroll up when - the selection is removed. - * src/resources/resourcemanager.h, src/resources/resourcemanager.cpp: - Added logging of error on PHYSFS_addToSearchPath. - * src/localplayer.cpp, src/inventory.h, src/gui/inventorywindow.cpp, - src/inventory.cpp, src/localplayer.h: Fixed inventory size not - matching the size assumed by eAthena, and related memory corruption. - * src/main.cpp: Increased default chat log length. - -2007-12-19 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_18-1.tmx: Fixed a map bug (monster trap) on - map 18 (woodland village surrounding) - -2007-12-19 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * tools/upalyzer/analyse.php: Fixed association of entries to update, - added no-cache headers, added a bit of error reporting in case of - invalid zip files, kept original ordering of the update list and - sorted the list of entries on their filename. - * tools/upalyzer/analyse.php: Added list of files in each update with - indication on whether they are still used. - -2007-12-18 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/main.cpp: Remember to delete the progressbar and label also when - the game was not started. - * tools/upalyzer/analyse.php: Added initial version of the update - analysis tool upalyzer. - * tools/upalyzer/analyse.php: Optimized with single loop approach and - nicer printing calls, inspired by doener's version. Also added list of - update entries and their respective update. - -2007-12-14 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/head-mask.png, - data/graphics/sprites/head-mask.xml, - data/graphics/sprites/head-mushroom.xml, - data/graphics/sprites/head-shroom.xml, - data/items.xml, data/equipment.xml: - Fixed some problems with the new items. - -2007-12-12 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/cave.png, data/graphics/tiles/cave_x2.png: - Fixed the blurred outlines of the new tiles. - -2007-12-12 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/tiles/cave.png, data/graphics/tiles/cave_x2.png, - data/maps/new_4-1.tmx: Added two new cave tiles by yosuhara. - -2007-12-12 Philipp Sehmisch <tmw@crushnet.org> - - * tools/tmxcopy/base64.cpp, - tools/tmxcopy/base64.h, tools/tmxcopy/main.cpp, - tools/tmxcopy/map.cpp, tools/tmxcopy/map.hpp, - tools/tmxcopy/readme.txt, tools/tmxcopy/tmxcopy.cbp, - tools/tmxcopy/tostring.h, tools/tmxcopy/xmlutils.cpp, - tools/tmxcopy/xmlutils.h, tools/tmxcopy/zlibutils.cpp, - tools/tmxcopy/zlibutils.h: Added my tmxcopy tool for copying - parts of maps to other maps. - -2007-12-10 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/being.cpp: Include cassert header. - -2007-12-10 Philipp Sehmisch <tmw@crushnet.org> - - * src/being.cpp, src/being.h, src/net/beinghandler.cpp, - src/net/charserverhandler.cpp, src/net/equipmenthandler.cpp, - src/player.cpp, src/player.h, data/items.xml: Simplified player - subsprite handling by treating equipment, hairstyle and base - sprites alike. This also enables gender-specific hairstyles. - * src/game.cpp, src/gui/chat.cpp, src/gui/chat.h, src/log.cpp, - src/log.h: Added an option to show log messages in the chat console. - * data/items.xml, - data/graphics/sprites/hairstyle1.png, - data/graphics/sprites/hairstyle1.xml, - data/graphics/sprites/hairstyle1-male.png, - data/graphics/sprites/hairstyle1-male.xml, - data/graphics/sprites/hairstyle1-female.png, - data/graphics/sprites/hairstyle1-female.xml, - data/graphics/sprites/hairstyle2.png, - data/graphics/sprites/hairstyle2.xml, - data/graphics/sprites/hairstyle2-male.png, - data/graphics/sprites/hairstyle2-male.xml, - data/graphics/sprites/hairstyle2-female.png, - data/graphics/sprites/hairstyle2-female.xml, - data/graphics/sprites/hairstyle3.png, - data/graphics/sprites/hairstyle3.xml, - data/graphics/sprites/hairstyle3-male.png, - data/graphics/sprites/hairstyle3-male.xml, - data/graphics/sprites/hairstyle3-female.png, - data/graphics/sprites/hairstyle3-female.xml, - data/graphics/sprites/hairstyle4.png, - data/graphics/sprites/hairstyle4.xml, - data/graphics/sprites/hairstyle4-male.png, - data/graphics/sprites/hairstyle4-male.xml, - data/graphics/sprites/hairstyle4-female.png, - data/graphics/sprites/hairstyle4-female.xml, - data/graphics/sprites/hairstyle5.png, - data/graphics/sprites/hairstyle5.xml, - data/graphics/sprites/hairstyle5-male.png, - data/graphics/sprites/hairstyle5-male.xml, - data/graphics/sprites/hairstyle5-female.png, - data/graphics/sprites/hairstyle5-female.xml, - data/graphics/sprites/hairstyle6.png, - data/graphics/sprites/hairstyle6.xml, - data/graphics/sprites/hairstyle6-male.png, - data/graphics/sprites/hairstyle6-male.xml, - data/graphics/sprites/hairstyle6-female.png, - data/graphics/sprites/hairstyle6-female.xml, - data/graphics/sprites/hairstyle7.png, - data/graphics/sprites/hairstyle7.xml, - data/graphics/sprites/hairstyle7-male.png, - data/graphics/sprites/hairstyle7-male.xml, - data/graphics/sprites/hairstyle7-female.png, - data/graphics/sprites/hairstyle7-female.xml: - Implemented female hairstyles. - -2007-12-09 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/head-funkywinter.png, - data/graphics/sprites/head-funkywinter.xml, - data/graphics/sprites/head-xmaself.png, - data/graphics/sprites/head-xmaself.xml: New versions of funky hat - and elf hat by QOAL. - -2007-12-04 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/items/generic-santacookie.png, - data/items.xml: Added a new drop item for the christmas event. - -2007-12-05 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/map.cpp, src/map.h: Fix drawing of very high fringe tiles by - keeping track of the maximum tile height. - * src/itemshortcut.h, src/gui/itemshortcutcontainer.h, - src/gui/itemshortcutcontainer.cpp, src/gui/itemshortcutwindow.cpp, - src/gui/itemshortcutwindow.h, src/itemshortcut.cpp: Random cleanups. - -2007-12-04 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/head-funkywinter.png, - data/graphics/sprites/head-funkywinter.xml, - data/graphics/sprites/head-mask.png, - data/graphics/sprites/head-mask.xml, - data/graphics/sprites/head-mushroom.png, - data/graphics/sprites/head-mushroom.xml, - data/graphics/sprites/head-shroom.png, - data/graphics/sprites/head-shroom.xml, - data/graphics/sprites/head-tophat.png, - data/graphics/sprites/head-tophat.xml, - data/graphics/sprites/head-xmaself.png, - data/graphics/sprites/head-xmaself.xml, - data/graphics/items/armor-head-xmaself.png, - data/graphics/items/armor-head-mask.png, - data/items.xml: Added/renamed some headgears for the christmas event. - -2007-11-20 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/maps/new_1-1.tmx, - data/graphics/maps/new_3-1.tmx, - data/graphics/maps/new_15-1.tmx: Updated desert maps with new - tiles by Len. - -2007-11-16 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/floor_item.cpp, src/localplayer.cpp, src/item.cpp, - src/inventory.h, src/gui/sell.cpp, src/gui/equipmentwindow.cpp, - src/gui/shop.cpp, src/gui/shoplistbox.cpp, src/gui/shop.h, - src/gui/itemshortcutcontainer.cpp, src/gui/buy.cpp, - src/gui/itemcontainer.cpp, src/inventory.cpp, src/item.h, - src/equipment.h, src/shopitem.cpp, src/CMakeLists.txt, - src/floor_item.h, src/net/inventoryhandler.cpp, src/equipment.cpp, - src/localplayer.h, src/Makefile.am, src/resources/iteminfo.h, - src/resources/itemdb.cpp, src/resources/iteminfo.cpp, src/shopitem.h: - Moved item icon from ItemInfo class to the Item class, so that it can - be loaded on demand. Results in faster startup time and reduced memory - usage. - -2007-11-16 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/resources/resourcemanager.h, src/resources/resource.h, - src/resources/resourcemanager.cpp, src/resources/resource.cpp: Delayed - resource deletion by 30 seconds. - * src/resources/image.cpp: Sped up recoloring of transparent pixels. - -2007-11-16 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/log.cpp, src/utils/wingettimeofday.h: Removed useless win32 - implementation of gettimeofday. - * src/log.cpp, tmw.cbp: Fixed minor issues. - -2007-11-11 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/item_amount.cpp, src/gui/item_amount.h, - src/gui/inventorywindow.cpp: Moved check on dropping 1 item to the - inventory dialog. - -2007-11-09 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/chest-chainmail-male, - data/graphics/sprites/chest-chainmail-female, - data/graphics/sprites/chest-cotton-male, - data/graphics/sprites/chest-cotton-female, - data/graphics/sprites/chest-leather-male, - data/graphics/sprites/chest-leather-female, - data/graphics/sprites/chest-tnecksweater-male, - data/graphics/sprites/chest-tnecksweater-female, - data/graphics/sprites/chest-vnecksweater-male, - data/graphics/sprites/chest-vnecksweater-female: - Modifications at the back shading of shirt sprites by Pauan. - -2007-11-04 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/resources/dye.cpp, src/resources/resourcemanager.cpp: Moved - palette qualifiers to the right as the code appends things on the left. - * src/resources/spritedef.cpp, src/resources/spritedef.h, - src/resources/resourcemanager.h: Added propagation of palettes through - sprite resource names. - * data/monsters.xml, data/graphics/sprites/monster-scorpion.xml: Used - palettes on sprite names. - * data/graphics/sprites/monster-scorpion-black.xml, - data/graphics/sprites/monster-scorpion-red.xml: Removed obsolete files. - * src/player.cpp: Added hair colors. - * data/graphics/sprites/hairstyle*.xml: Removed sprite variants. Set - replaceable color. - * data/graphics/sprites/hairstyle*.png: Reduced image sizes. - * data/monsters.xml, data/graphics/sprites/monster-slime.xml, - data/graphics/sprites/monster-slime.png: Added generic slime. - * data/graphics/sprites/monster-slime-{green,red,yellow}.png, - data/graphics/sprites/monster-slime-{green,red,yellow}.xml: Removed - obsolete files. - -2007-11-03 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/player.cpp, src/player.h, src/gui/char_select.cpp: Factored code. - * src/net/beinghandler.cpp, src/net/charserverhandler.cpp: Fixed double - load of hair graphics. - * src/Makefile.am, src/resources/dye.cpp, src/resources/dye.h: Added - palette holder and linear interpolator of colors. - * src/resources/image.h, src/resources/image.cpp: Added palette-based - recoloring of images. - * src/resources/resourcemanager.h, src/resources/resourcemanager.cpp: - Added automatic recoloring of images depending on their names. - * data/graphics/sprites/monster-scorpion.png: Flattened colors. - * data/graphics/sprites/monster-scorpion-black.png, - data/graphics/sprites/monster-scorpion-red.png: Removed obsolete files. - * data/graphics/sprites/monster-scorpion.xml, - data/graphics/sprites/monster-scorpion-black.xml, - data/graphics/sprites/monster-scorpion-red.xml: Added automatic - recoloring of scorpions. - -2007-11-01 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/particles/aniblaze.png, - data/graphics/particles/cookingfire.particle.xml, - data/graphics/particles/fireplace.particle.xml, - data/graphics/particles/flame.particle.xml: Improved fire particle - effects by using animated particles. - -2007-10-31 Philipp Sehmisch <tmw@crushnet.org> - - * data/items.xml, data/graphics/sprites/leg-skirt.png, - data/graphics/sprites/leg-skirt.xml, - data/graphics/items/armor-leg-skirt.png: Added skirt by Saphy. - ViewID is 26, item ID is 632, item properties are c&p from jeans - shorts. - -2007-10-27 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/properties.h, src/game.cpp, src/channel.h, src/log.cpp, - src/gui/window.cpp, src/gui/setup.cpp, src/gui/button.cpp, - src/gui/chat.h, src/gui/widgets/dropdown.cpp, src/gui/chat.cpp, - src/gui/tabbedcontainer.cpp, src/gui/windowcontainer.cpp, - src/gui/skill.cpp, src/gui/serverdialog.cpp, src/gui/textfield.cpp, - src/gui/playerbox.cpp, src/gui/scrollarea.cpp, src/beingmanager.cpp, - src/flooritemmanager.cpp, src/channelmanager.cpp, src/main.cpp, - src/particle.cpp, src/net/messageout.cpp, src/channel.cpp, - src/localplayer.h, src/resources/imageset.cpp, - src/resources/buddylist.cpp, src/resources/monsterinfo.h, - src/resources/iteminfo.h, src/resources/monsterdb.cpp, - src/resources/monsterinfo.cpp, src/resources/itemdb.cpp: Fixed missing - dependencies, spurious const qualifiers, and weak brackets, so that it - compiles with GCC 4.3. - -2007-10-26 Philipp Sehmisch <tmw@crushnet.org> - - * src/gui/item_ammount.cpp: Item amount dialog is now skipped - when there is only one item on the stack. - * src/browserbox.cpp, src/browserbox.h, src/chat.h, src/main.cpp: - Added possibility of length limitation to browserbox and used it - for the chatlog (length set by the config option "ChatLogLength"). - * src/chat.cpp, src/chat.h: Removed some completely useless code - from the chat class. - * src/monster.cpp, src/monster.h, data/sfx/logmonster-hurt1.ogg, - data/sfx/logmonster-hurt2.ogg, data/sfx/logmonster-hurt3.ogg, - data/sfx/logmonster-hurt4.ogg, data/sfx/logmonster-hurt5.ogg: - Implemented monster hurt sounds and added new sound effects by - Cosmostrator. - -2007-10-24 Philipp Sehmisch <tmw@crushnet.org> - - * data/items.xml, data/graphics/items/generic-darkcrystal.png: - Added a new quest loot item for the halloween event. - -2007-10-22 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/particle.cpp: Plugged memory leak. - * src/configuration.cpp, src/main.cpp: Plugged memory leak. Cleaned - code. - -2007-10-21 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/gui/window.cpp, src/gui/window.h: Removed redundant resizable - flag. Factored moving/resizing code, so that events are fired only - once per size change. - * src/resources/spritedef.cpp: Plugged memory leak in sprites. - * src/resources/action.cpp: Fixed double-free of sprite actions. - * src/resources/iteminfo.cpp, src/resources/iteminfo.h: Plugged memory - leak in equipment sound. - * src/resources/monsterdb.cpp: Plugged memory leak in database reader. - * src/engine.cpp, src/engine.h, src/game.cpp: Fixed current map not - deleted on server change. - * src/gui/trade.cpp: Added persistent positioning. - * src/gui/menuwindow.cpp: Fixed missing pixels at bottom and right. - * src/gui/window.cpp, src/gui/window.h: Changed to use default values - when restoring missing settings. - * src/gui/shoplistbox.cpp, src/gui/listbox.cpp: Fixed invisible text. - -2007-10-20 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/gui/playerbox.cpp: Centered sprite inside selection box. - -2007-10-19 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/resources/resource.cpp, src/resources/resource.h, - src/resources/imageset.cpp, src/resources/imageset.h: Removed mandatory - identifier path. - * src/resources/resourcemanager.cpp, src/resources/resourcemanager.h: - Factored code between resource handlers. - * src/resources/soundeffect.h, src/resources/soundeffect.cpp, - src/resources/music.h, src/resources/music.cpp, src/resources/image.h, - src/resources/image.cpp: Reworked resource loaders. - * src/resources/spritedef.h, src/resources/spritedef.cpp: Implemented - a failure-friendly loader. - * src/gui/truetypefont.cpp, src/resources/imageloader.cpp, - src/tileset.h: Removed dummy parameter. - -2007-10-19 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/images/ambient/fog.png: Added fog effect overlay - graphic. - -2007-10-18 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/resources/iteminfo.h, src/resources/itemdb.cpp: Removed unused - slot field. - * src/localplayer.cpp, src/localplayer.h: Removed specific type. - * src/gui/viewport.cpp, src/gui/minimap.cpp: Changed identification of - local player to a check of player_node. - * src/animatedsprite.cpp, src/animatedsprite.h, src/npc.cpp, - src/player.cpp, src/monster.cpp, src/resources/resourcemanager.cpp: - Prevented client from exiting on missing sprites. - * src/resources/spritedef.cpp: Added filename to fatal error messages. - * src/resources/iteminfo.cpp, src/resources/iteminfo.h, - src/resources/itemdb.cpp, data/items.xml: Merged weapon_type and - attacktype field. - -2007-10-18 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/hairstyle7-male.png, - data/graphics/sprites/hairstyle7-female.png: Readded hairstyle number - 7. - -2007-10-18 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/game.cpp, src/net/tradehandler.h, src/net/tradehandler.cpp: - Implemented automatic denying of trade requests based on a patch - submitted by Quiche_on_a_leash. - -2007-10-07 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/maps/new_18-1.tmx: Fixed some collision layer problems. - -2007-10-01 Philipp Sehmisch <tmw@crushnet.org> - - * src/player.cpp, data/graphics/sprites/hairstyle*: - Added support for different hairstyles for male and female characters - (current female hairstyles are copies of the male ones until the - real female ones are finished) - -2007-09-30 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/desert_x3.png: Removed the purple line from the - ruin tile. - -2007-09-27 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/desert2.png, data/graphics/tiles/desert_x3.png, - data/graphics/tiles/desert_x5.png: Added new desert tiles by Len. - -2007-09-20 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/equipment.xml, data/graphics/items/armor-head-funkyhat.png, - data/graphics/items/armor-head-mushroomhat.png, - data/graphics/items/armor-head-shroomhat.png, - data/graphics/items/armor-head-tophat.png, - data/graphics/sprites/item019.png, data/graphics/sprites/item019.xml, - data/graphics/sprites/item020.png, data/graphics/sprites/item020.xml, - data/graphics/sprites/item021.png, data/graphics/sprites/item021.xml, - data/graphics/sprites/item022.png, data/graphics/sprites/item022.xml, - data/items.xml, data/maps/new_21-1.tmx: Added 4 new items and a new ice - cave map. - -2007-09-12 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/items.xml, data/equipment.xml: Added temporary weapon IDs below - 256 to use as view-ID in eAthena's item DB. - * src/gui/shoplistbox.cpp, src/gui/buy.h, src/gui/buy.cpp: Allowed - selection of items that cannot be afforded, so that their descriptions - are still accessible. Also made sure the player's money value of - ShopItemList gets updated. - -2007-09-11 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/gui/chat.cpp, tmw.cbp: Fixed admin commands. - -2007-09-08 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/particles/aniblaze.png, - data/graphics/particles/cookingfire.particle.xml, - data/graphics/particles/fireplace.particle.xml, - data/graphics/particles/flame.particle.xml: Improved fire effects by - using animated particles. - -2007-09-06 Philipp Sehmisch <tmw@crushnet.org> - - * src/animationparticle.cpp, src/imageparticle.cpp: Fixed animated - particles. - -2007-09-01 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/Makefile.am: Fixed the entry for windowlistener.h. - -2007-08-30 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/localplayer.cpp, src/player.cpp, src/main.cpp, src/being.cpp, - src/CMakeLists.txt, src/Makefile.am, src/resources/iteminfo.h, - src/resources/equipmentdb.h, src/resources/equipmentinfo.h, - src/resources/itemdb.cpp, src/resources/iteminfo.cpp, - src/resources/equipmentdb.cpp, src/resources/equipmentinfo.cpp, - src/resources/spritedef.h, src/being.h, data/items.xml, - data/equipment.xml: Merged equipment database with items database and - got rid of the unused item art attribute. - * src/net/beinghandler.cpp, src/net/charserverhandler.cpp: Removed the - now unnecessary multiplication of weapon IDs with 10000. - * src/resources/iteminfo.cpp, data/graphics/items/unknown.png: Added - fallback item icon and use it for unknown items or when item image - fails to load. - * NEWS: Updated with changes since last update. - * data/items.xml, data/equipment.xml: Reverted equipment database and - included original low-ID items in items.xml for compatibility with - eAthena, which doesn't support View ID to come above 255. - * src/resources/itemdb.cpp: Accept items without a name. - -2007-08-29 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/sell.cpp, src/gui/inventorywindow.cpp, src/gui/sell.h: Made - sell dialog resizable and tweaked inventory resize code a bit. - * data/items.xml: Fixed typo in chainmail description. - -2007-08-28 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/window.cpp, src/gui/inventorywindow.h, - src/gui/selectionlistener.h, src/gui/buy.h, - src/gui/itemshortcutwindow.cpp, src/gui/inventorywindow.cpp, - src/gui/buy.cpp, src/gui/window.h, src/gui/windowlistener.h, - src/gui/itemshortcutwindow.h, src/CMakeLists.txt, src/Makefile.am: - Made buy dialog resizable and added a WindowListener class for - listening for window resize and move events. - * src/textparticle.h, src/particle.h, src/CMakeLists.txt, - src/particle.cpp, src/imageparticle.cpp, src/vector.h, - src/textparticle.cpp, src/Makefile.am: Added Vector class and used it - in the particle engine. - -2007-08-27 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/engine.cpp, src/resources/mapreader.cpp: Made client search for - both compressed and non-compressed map files. - -2007-08-27 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/game.cpp: Assigned unused emotions to Alt +/-. (applied a patch - by Quiche_on_a_leash). - * data/maps/new_1-1.tmx, data/maps/new_1-1.tmx.gz, - data/maps/new_10-1.tmx, data/maps/new_10-1.tmx.gz, - data/maps/new_11-1.tmx, data/maps/new_11-1.tmx.gz, - data/maps/new_12-1.tmx, data/maps/new_12-1.tmx.gz, - data/maps/new_13-1.tmx, data/maps/new_13-1.tmx.gz, - data/maps/new_14-1.tmx, data/maps/new_14-1.tmx.gz, - data/maps/new_15-1.tmx, data/maps/new_15-1.tmx.gz, - data/maps/new_16-1.tmx, data/maps/new_16-1.tmx.gz, - data/maps/new_17-1.tmx, data/maps/new_17-1.tmx.gz, - data/maps/new_18-1.tmx, data/maps/new_18-1.tmx.gz, - data/maps/new_19-1.tmx, data/maps/new_19-1.tmx.gz, - data/maps/new_2-1.tmx, data/maps/new_2-1.tmx.gz, - data/maps/new_20-1.tmx, data/maps/new_20-1.tmx.gz, - data/maps/new_3-1.tmx, data/maps/new_3-1.tmx.gz, - data/maps/new_4-1.tmx, data/maps/new_4-1.tmx.gz, - data/maps/new_5-1.tmx, data/maps/new_5-1.tmx.gz, - data/maps/new_6-1.tmx, data/maps/new_6-1.tmx.gz, - data/maps/new_7-1.tmx, data/maps/new_7-1.tmx.gz, - data/maps/new_8-1.tmx, data/maps/new_8-1.tmx.gz, - data/maps/new_9-1.tmx, data/maps/new_9-1.tmx.gz: Replaced compressed - maps with layer compressed maps. - -2007-08-26 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/gui/updatewindow.cpp, src/main.cpp, tmw.cbp: Removed home dir - from config file to avoid encoding issues. - -2007-08-26 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/gui/button.cpp: Fixed incorrect button dimensions, as they mess - OpenGL display with rectangle textures. - * src/graphics.cpp, src/openglgraphics.h, src/graphics.h, - src/openglgraphics.cpp: Fixed fonts not being recolored by adding an - explicit parameter to require it. - -2007-08-25 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * configure.ac: Removed dependency on Guichan's OpenGL library. - * src/Makefile.am, src/resources/sdlimageloader.cpp, - src/resources/sdlimageloader.h, src/resources/openglsdlimageloader.h, - src/resources/openglsdlimageloader.cpp, src/resources/imageloader.cpp, - src/resources/imageloader.h, src/gui/gui.cpp, src/gui/gui.h: Replaced - Guichan's image loaders with our owns, so that we have control over all - the images used as textures. - * src/resources/image.cpp, src/openglgraphics.h, src/resources/image.h, - src/openglgraphics.cpp, src/graphics.cpp, src/graphics.h: Added support - for rectangle OpenGL textures when available, in order to reduce video - memory usage. - -2007-08-24 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/gui.h, src/gui/gui.cpp: Removed useless logic method and - reverted mouse cursor to non-static since there can be only one Gui - instance so there is no point in supporting a shared resource. - * src/gui/window.cpp, src/gui/gui.h: Removed unnecessary - Gui::isCustomCursor method. - * src/gui/char_select.h, src/gui/char_select.cpp, src/utils/trim.h: - Added trimming of name for new character creation. - * src/net/chathandler.cpp: Added trimming of chat messages appearing - above players. - * src/gui/window.cpp, src/gui/window.h: Improved resize mouse cursor - indication, removing duplicated code and fixing indicator above resize - grip. - -2007-08-23 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/viewport.h, src/gui/viewport.cpp: Removed two useless popup - related methods. - * src/gui/debugwindow.h, src/gui/debugwindow.cpp: Use generic close - button functionality. - * src/particle.h, src/particleemitter.cpp, src/particle.cpp: Renamed - Particle::mVector to Particle::mVelocity for clarity. - * src/localplayer.cpp, src/gui/ministatus.cpp, src/gui/status.cpp, - src/being.cpp, src/net/charserverhandler.cpp, - src/net/playerhandler.cpp, src/localplayer.h, src/being.h: Changed XP - gaining effect to appear on the player instead. - * data/graphics/gui/hits_yellow.png: Restored shadow of yellow font. - -2007-08-22 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/itemshortcutcontainer.h: Fixed compiler warning. - * src/CMakeLists.txt, src/Makefile.am: Updated source lists. - * data/graphics/gui/CMakeLists.txt, data/graphics/gui/Makefile.am: - Added close button and item shortcut backgrounds to files that will be - installed. - * src/gui/itemshortcutcontainer.cpp: Make sure mGridWidth and - mGridHeight are initialized properly (fixes arithmetic exception in - ItemShortcutContainer::draw). - * src/keyboardconfig.cpp: Changed default sitting key back to 's'. - * src/net/equipmenthandler.cpp: Removed a line that attempted to set - the player's weapon sprite with each kind of equipment. Seems to work - fine without as well. - * src/gui/chat.cpp, src/utils/trim.h, src/CMakeLists.txt, - src/Makefile.am: Added trimming of chat messages. - -2007-08-22 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/chest-lightplatemail-male.png, - data/graphics/sprites/chest-lightplatemail-female.png, - data/graphics/items/armor-chest-lightplatemail.png, - data/graphics/tiles/woodland_indoor_x2.png: Another color correction - at the light platemail (looks more metalic now) - * data/maps/new_18-1.tmx.gz, data/maps/new_19-1.tmx.gz, - data/images/minimap_new_18-1.png, data/images/minimap_new_19-1.png: - Removed a tree that prevented people from sitting on one of the - benches properly. Added correct minimap to woodland village and - surrounding. - -2007-08-22 Joshua Langley <joshlangley[at]optusnet.com.au> - - * data/graphics/gui/item_shortcut_bgr.png, src/game.cpp, - src/gui/gui.cpp, src/gui/itemcontainer.cpp, - src/gui/itemshortcutcontainer.cpp, src/gui/itemshortcutcontainer.h, - src/gui/itemshortcutwindow.cpp, src/gui/itemshortcutwindow.h, - src/gui/menuwindow.cpp, src/gui/setup_keyboard.cpp, src/gui/window.h, - src/itemshortcut.cpp, src/itemshortcut.h, src/keyboardconfig.cpp, - src/keyboardconfig.h, src/localplayer.cpp, src/localplayer.h, - src/main.cpp, src/net/inventoryhandler.cpp, src/utils/tostring.h, - tmw.cbp: Added item shortcut bar. - -2007-08-20 Joshua Langley <joshlangley[at]optusnet.com.au> - - * data/graphics/gui/mouse.png, src/gui/equipmentwindow.cpp, - src/gui/gui.cpp, src/gui/gui.h, src/gui/inventorywindow.cpp, - src/gui/setup.cpp, src/gui/skill.cpp, src/gui/skill.h, - src/gui/status.cpp, src/gui/window.cpp, src/gui/window.h, - data/graphics/gui/close_button.png: Added close button functionality, - resize cursor cues. - * data/graphics/gui/hits_yellow.png, src/being.cpp, src/being.h, - src/gui/gui.cpp, src/localplayer.cpp, src/localplayer.h, - src/net/charserverhandler.cpp, src/net/playerhandler.cpp, - src/particle.cpp, src/particle.h: Added monster killed xp notification - effect. - -2007-08-19 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/equipment.xml: Fixed typo in female light plate mail. - * NEWS: Updated with changes since 0.0.23. - -2007-08-19 Joshua Langley <joshlangley[at]optusnet.com.au> - - * src/keyboardconfig.cpp, src/keyboardconfig.h: Minor cleanup. - * src/gui/buy.cpp, src/gui/sell.cpp: Buy/sell fixed minimum quantity. - * src/gui/setup_keyboard.cpp, src/gui/setup_keyboard.h: Fixed bug - - reverts unassigned key. - -2007-08-17 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * tools/adler32.c: Added little program for calculating adler32 - checksums of files. - * src/gui/setup_keyboard.cpp: Fixed compile issue related to array - bound not being an integer constant. - -2007-08-15 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/npcs.png, data/graphics/sprites/npc.xml: - Added farmer NPC for woodland village. - -2007-08-14 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/gui/popupmenu.cpp, src/gui/viewport.cpp, src/gui/viewport.h, - tmw.cbp: Fixed popup menu requiring one more click after being used. - -2007-08-09 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/chest-lightplatemail-male.png, - data/graphics/sprites/chest-lightplatemail-female.png, - data/graphics/items/armor-chest-lightplatemail.png, - data/graphics/tiles/woodland_indoor_x2.png: Gave the platemail - armor a blue tint. Looks less boring and makes recoloring through - hue shifting possible. - -2007-08-08 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/particles/cookingfire.particle.xml, - data/graphics/particles/fireplace.particle.xml, - data/maps/new_20-1.tmx.gz: Added particle effects and music to the - woodland village indoor map. - * data/maps/new_19-1.tmx.gz: Added overlay effect and music to - woodland village outdoor map. - * data/maps/new_18-1.tmx.gz: Fixed some collision map errors and added - music and overlay effect to the surrounding of the woodland village. - -2007-08-07 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/npcs.png: Added two new NPCs and gave some - of the older NPCs a makeover to look more like the style of the new - playerset. - * data/maps/new_20-1.tmx.gz: Corrected a few mapping errors in the - new woodland village. - * data/items.xml: Tweaked description and values of the scythe. - -2007-08-06 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/Makefile.am, src/utils/strprintf.h, src/utils/strprintf.cpp: - Added a helper function for printf-formatting a (gettext) C string - into a dynamically-sized C++ string. - -2007-08-05 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/woodland_indoor.png, - data/graphics/tiles/woodland_indoor_x2.png, - data/graphics/tiles/woodland_indoor_x3.png: Added woodland - village indoor tilesets. - * data/maps/new_20-1.tmx.gz: Added woodland village indoor map. - -2007-07-29 Björn Steinbrink <B.Steinbrink@gmx.de> - - * CMake/Modules/FindLibXml2.cmake, CMake/Modules/FindLibcurl.cmake, - src/CMakeLists.txt: Switch to upstream CMake modules for libxml2 and - curl. - -2007-07-27 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/resources/image.cpp: Added support for subimages of subimages. - * src/gui/equipmentwindow.cpp, src/gui/button.cpp, src/gui/slider.cpp, - src/gui/widgets/resizegrip.cpp, src/gui/widgets/dropdown.cpp, - src/gui/progressbar.cpp, src/gui/browserbox.cpp, src/gui/gui.cpp, - src/gui/radiobutton.cpp, src/gui/textfield.cpp, src/gui/playerbox.cpp, - src/gui/itemcontainer.cpp, src/gui/checkbox.cpp, src/gui/minimap.cpp, - src/gui/scrollarea.cpp, src/gui/popupmenu.cpp: Removed useless yet - costly dynamic casts. - -2007-07-25 Joshua Langley <joshlangley[at]optusnet.com.au> - - * src/gui/setup.cpp, src/gui/setup_keyboard.cpp, - src/gui/setup_keyboard.h, src/keyboardconfig.cpp, - src/keyboardconfig.h, src/main.cpp: Minor changes to keyboard config, - keyboard setup gui re-designed. - -2007-07-24 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/CMakeLists.txt, src/Makefile.am: Added setup_keyboard.* and - keyboardconfig.* to the list of source files. - * src/keyboardconfig.h: Fixed initialization order. - -2007-07-17 Joshua Langley <joshlangley[at]optusnet.com.au> - - * src/game.cpp: Only one key per function. - * src/main.cpp: Keyboard configuration included. - * src/gui/button.cpp, src/gui/button.h: Default constructor and - init function added. - * src/gui/setup.cpp: Keyboard setup tab added. - * src/gui/setup_keyboard.cpp, src/gui/setup_keyboard.h: Add to project - file, it is the keyboard setup tab. - * src/keyboardconfig.cpp, src/keyboardconfig.h: Add to project file, - the main keyboard config operations. - -2007-07-16 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/items.xml: Fixed description of silk headband. - -2007-07-11 Philipp Sehmisch <tmw@crushnet.org> - - * src/resources/monsterdb.cpp, src/resources/monsterinfo.cpp, - src/resources/monsterinfo.h, src/monster.cpp: Renamed SoundEvent - to MonsterSoundEvent. - * src/resources/equipmentdb.cpp, src/resources/equipmentinfo.cpp, - src/resources/equipmentinfo.h: EquipmentDB now holds the type of - attack animation and the sounds of weapons. - * src/being.cpp. src/being.h, src/localplayer.cpp, - src/net/beinghandler.cpp, src/net/charserverhandler.cpp, - src/net/equipmenthandler.cpp, src/player.cpp, src/player.h: The - type of weapon player characters are using is now set using - setVisibleEquipment() instead of setWeapon() or setWeaponById(). - * src/CMakeLists.txt, src/Makefile.AM, tmw.cbp, The Mana World.dev: - Updated project files and buildscripts. - * data/graphics/images/login-wallpaper.png: Replaced login wallpaper - with a new one by Irukard. - -2007-07-11 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/window.cpp: Fixed resizing windows by their resize grip. - -2007-07-07 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/gui.cpp, src/gui/chatinput.h, src/gui/chatinput.cpp, - INSTALL: Ported to Guichan 0.7.0. Unfortunately, since Guichan 0.6.x - didn't have a FocusListener, compatibility with older versions is - broken. - -2007-06-29 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/particleemitter.cpp: Corrected some perspective - issues of the particle engine and fixed a crash caused by particles - with child emitters that have an image than isn't used elsewhere. - * data/maps/new-3-1.tmx.gz: Added a particle effect at the spawn point - in Tulimshar. - -2007-06-21 Philipp Sehmisch <tmw@crushnet.org> - - * data/monsters.xml, data/graphics/sprites/monster-logmonster.png, - data/graphics/sprites/monster-logmonster.xml: Added logmonster by - Enigmatik (Monster ID is 23). - * data/items.xml, data/equipment.xml, - data/graphics/items/armor-chest-lightplatemail.png, - data/graphics/sprites/chest-lightplatemail-male.xml, - data/graphics/sprites/chest-lightplatemail-male.png, - data/graphics/sprites/chest-lightplatemail-female.png, - data/graphics/sprites/chest-lightplatemail-female.xml: - Added light platemail (see entry in items.xml for proposed specs). - -2007-06-16 Guillaume Melquiond <guillaume.melquiond@gmail.com> - - * src/resources/image.cpp: Set GL texture index to zero when an image - uses the SDL backend. - -2007-06-13 Philipp Sehmisch <tmw@crushnet.org> - - * The Mana World.dev: Updated DevCpp project file. - -2007-06-13 Philipp Sehmisch <tmw@crushnet.org> - - * src/main.cpp: Added logging of version number. - -2007-06-12 David Athay <ko2fan@gmail.com> - - * src/net/playerhandler.cpp: Fixed bug with DEF_BONUS not updating - Mantis id: 0000087 - * data/icons/The Mana World.icns: Added Mac OSX icon. - -2007-06-11 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.h, src/being.cpp: Fixed a bug that prevented - being-controlled particles from being deleted (thanks to tuchs for - reporting). - -2007-06-06 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/items.xml: Fixed defense of silk headband. - -2007-06-04 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/maps/new_17-1.tmx.gz: Changed the minimap image of the - lamp snake cave to the correct one. - -2007-06-03 David Athay <ko2fan@gmail.com> - - * src/main.cpp, src/game.cpp: Fixed screenshot taking on OSX. - -2007-06-03 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/CMakeLists.txt, src/Makefile.am, docs/Makefile.am: Added some - files to be included with the release. - * src/utils/fastsqrt.h: Fixed warning about strict-aliasing rules. - * src/Makefile.am: Don't die on warnings by default. - * src/resources/image.cpp: Fixed image loading in software mode to not - check for alpha layer when images aren't 32-bit. - * src/graphics.cpp, src/graphics.h, src/imageparticle.cpp: Removed - drawImageTransparent from Graphics class, should be set on image. - * src/imageparticle.h, src/particleemitter.h, src/particle.h, - src/particleemitter.cpp, src/particle.cpp, src/imageparticle.cpp: Have - ParticleEmitter load a possible particle image early on and don't - cause a crash when the image can't be found. - -2007-06-02 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/winver.h, README, NEWS, CMakeLists.txt, configure.ac, - data/help/changes.txt, data/help/header.txt: Updated version and - release date and summarized changes. - * src/gui/chat.h, src/gui/chat.cpp: Changed color of chat messages in - OpenGL mode from orange to black. - * src/gui/sell.cpp, src/gui/buy.h, src/gui/buy.cpp, src/gui/sell.h: - Some cleanup of buy/sell dialog code. - -2007-06-01 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/gui/CMakeLists.txt, data/graphics/gui/Makefile.am: - Added target cursors to installed files. - -2007-05-31 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_16-1.tmx.gz: Fixed an inconsistency with the neighbor - map (no new walkmap required). - -2007-05-23 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/sell.cpp, src/gui/buy.cpp, src/being.cpp: A bunch of - lingering syntactical changes. - * src/gui/viewport.cpp: Added a missing include and fixed a bug with - cleaning up target cursor animations. - -2007-05-23 Philipp Sehmisch <tmw@crushnet.org> - - * src/gui/viewport.cpp, - data/graphics/gui/target-cursor-blue-s.png, - data/graphics/gui/target-cursor-blue-m.png, - data/graphics/gui/target-cursor-blue-l.png, - data/graphics/gui/target-cursor-red-s.png, - data/graphics/gui/target-cursor-red-m.png, - data/graphics/gui/target-cursor-red-l.png: Replaced target cursor - graphics with higher quality ones by Pauan. - * src/particle.cpp: Made bouncing particles immune against death by - ground contact and removed a nonsensical debugging log message. Made - text splash effects fade out. - * src/textparticle.cpp: Implemented fading in and out for text - particles. - * src/being.cpp, src/particle.cpp, src/particle.h, - src/textparticle.cpp, src/textparticle.h: The color values of text - particles are now stored in 3 integers instead of a Guichan color - structure. - -2007-05-20 Eugenio Favalli <elvenprogrammer@gmail.com> - - * tmw.cbp: Updated Code::Blocks project file. - -2007-05-20 Philipp Sehmisch <tmw@crushnet.org> - - * src/gui/buy.cpp, src/gui/sell.cpp: Unified some differences between - buy and sell dialog. Money label now shows money after transaction - instead of current money. - * src/gui/sell.cpp: Fixed the amount-not-reset-when-using-scrollwheel - bug. - * src/being.h, src/gui/viewport.cpp, src/gui/viewport.h: Added 3 - different target cursor sizes. - * src/monster.h, src/monster.cpp, src/resources/monsterdb.cpp, - scr/resources/monsterinfo.h, data/monsters.xml: Target cursor size for - monster is read from the monsters.xml. - * data/graphics/gui/target-cursor-blue-s.png, - data/graphics/gui/target-cursor-blue-m.png, - data/graphics/gui/target-cursor-blue-l.png, - data/graphics/gui/target-cursor-red-s.png, - data/graphics/gui/target-cursor-red-m.png, - data/graphics/gui/target-cursor-red-l.png: Added temporary - placeholders for small and large target cursors until better versions - based on the original SVG are available. - -2007-05-08 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/monster-bat.png, - data/graphics/sprites/monster-bat.xml, - data/graphics/sprites/monster-flower.xml, - data/graphics/sprites/monster-fluffy.xml, - data/graphics/sprites/monster-fluffy.png, - data/graphics/sprites/monster-goblin-fire.xml, - data/graphics/sprites/monster-maggot-giant.xml, - data/graphics/sprites/monster-maggot.xml, - data/graphics/sprites/monster-mountsnake.xml, - data/graphics/sprites/monster-mushroom-red.xml, - data/graphics/sprites/monster-mushroom-spiky.xml, - data/graphics/sprites/monster-pinkie.xml, - data/graphics/sprites/monster-scorpion-black.xml, - data/graphics/sprites/monster-scorpion-red.png, - data/graphics/sprites/monster-scorpion-red.xml, - data/graphics/sprites/monster-skull-poison.xml, - data/graphics/sprites/monster-slime-green.xml, - data/graphics/sprites/monster-slime-red.xml, - data/graphics/sprites/monster-slime-rudolph.xml, - data/graphics/sprites/monster-slime-santa.png, - data/graphics/sprites/monster-slime-santa.xml, - data/graphics/sprites/monster-slime-yellow.xml, - data/graphics/sprites/monster-snake-cave.png, - data/graphics/sprites/monster-snake-cave.xml, - data/graphics/sprites/monster-snake.xml, - data/graphics/sprites/monster-spider.xml: - Adjusted offsets of monster sprites (thanks to Pauan for finding out - the correct offsets - I just subtracted 6 of all x offsets to take the - new position of the target circle in account) and committed some - modifications at some monster graphics by Pauan. - -2007-05-02 Philipp Sehmisch <tmw@crushnet.org> - - * src/sprite.h, src/being.cpp, src/being.h, src/animatedsprite.cpp, - src/animatedsprite.h: Added methods to get the width and height of the - graphical representation of a sprite. - * src/gui/viewport.cpp: Fixed positioning of monster names and target - circles. - -2007-05-02 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp: Fixed a compiler warning. - -2007-05-02 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/Makefile.am: Add the new particle subclasses to the automake - configuration. - * src/imageparticle.h, src/textparticle.h, src/particle.h, - src/animationparticle.h, src/CMakeLists.txt, src/particleemitter.cpp, - src/animationparticle.cpp, src/particle.cpp, src/imageparticle.cpp, - src/textparticle.cpp, src/utils/xml.cpp, src/utils/xml.h: Split the - particle class into subclasses based on their appearance. - -2007-04-24 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/particle.h: Some minor code cleanups, speed - optimizations and a bit of documentation. - -2007-04-23 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/particles/flame.particle.xml, - data/graphics/particles/blaze.png: Added two files I forgot with the - last commit. - * src/resources/mapreader.cpp, src/particle.cpp, - src/particleemitter.cpp: Using XML child node iteration macro. - -2007-04-22 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/configuration.cpp, src/utils/xml.h, src/resources/mapreader.cpp, - src/resources/spritedef.cpp, src/resources/monsterdb.cpp, - src/resources/itemdb.cpp, src/resources/equipmentdb.cpp: Added a macro - for XML child node iterations to make the code more terse and easier - to read. - * src/resources/itemdb.cpp: Made the parameter checks more terse and - manageable. - -2007-04-19 Philipp Sehmisch <tmw@crushnet.org> - - * src/resources/mapreader.cpp: Emitter positions are now read from map - files. - * src/engine.cpp: Removed the player follow effect used for testing. - * data/maps/new_4-1.tmx.gz, data/maps/new_5-1.tmx.gz: Added flame - effect to all lamps on the cave maps - * data/maps/new_9-1.tmx.gz: Added waterfall effect to the upper right - corner of NW woodland map. - -2007-04-15 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/openglgraphics.cpp: Rely on default 0 value for z axis. - * src/CMakeLists.txt, src/gui/window.cpp, src/gui/widgets, - src/gui/widgets/resizegrip.cpp, src/gui/widgets/resizegrip.h, - src/gui/inventorywindow.cpp, src/gui/window.h, src/Makefile.am: - Reimplemented window resizing. It is now once again possible to resize - windows using their borders (except for the top one, since that's the - title bar for Guichan) and the resize grip in the bottom right is much - easier to grab. - * src/gui/window.cpp: Increased minimum window height and fixed a - problem with setting window content size which was introduced with the - new resize grip. - -2007-04-13 Björn Steinbrink <B.Steinbrink@gmx.de> - - * data/graphics/gui/CMakeLists.txt: Added target cursor graphics to - the set of files to be installed. - -2007-03-25 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/particle.h, src/particleemitter.cpp, - src/particleemitter.h: Improved programming style and documentation - and added some small tweaks. - * src/engine.cpp, src/map.cpp, src/map.h, src/resources/mapreader.cpp: - Prepared getting the emitter positions from the map file by storing - them in the Map class and setting them up from the MapReader. - -2007-03-22 Philipp Sehmisch <tmw@crushnet.org> - - * src/simpleanimation.cpp, src/simpleanimation.h: Added new - constructor for simple animation that allows to build the animation - based on an xmlNodePtr pointing to an <animation> node. - * src/particle.cpp, src/particle.h: Added support for <image> and - <animation> childtags for effect root particles. - * data/graphics/particles/playerglow.particle.xml: New player follow - effect that demonstrates an animated root particle with an emitter. - -2007-04-05 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/main.cpp: Unified storage of configuration, updates and - screenshots in home directory. - -2007-04-03 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/items/generic-easteregg-blue.png, - data/graphics/items/generic-easteregg-green.png, - data/graphics/items/generic-easteregg-pink.png, - data/graphics/items/generic-easteregg-red.png, - data/graphics/items/generic-easteregg-teal.png, - data/graphics/items/generic-easteregg-yellow.png, - data/items.xml: Added six different easter egg item graphics for the - easter event. Item IDs are 1208 - 1213. - * data/graphics/sprites/npcs.png: Added bunny girl npc for the easter - event. - -2007-04-01 Philipp Sehmisch <tmw@crushnet.org> - - * src/game.cpp: Screenshots are no longer saved directly in the users - home directory on UNIX systems but in the sub folder /.tmw/. A chatlog - message about the success of the screenshot saving does appear now. - Based on a patch by Patrick "the-me" Matthäi. - -2007-03-27 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/main.cpp: Icon loading doesn't necessarily succeed, so better - not crash when it doesn't. - -2007-03-24 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/main.cpp: Changed the order of network message handling and - logic, in order to prevent an incoming character delete message from - deleting the player character that was about to be drawn. - * src/gui/char_select.cpp: Removed useless lock/unlock calls. - * src/logindata.h, src/main.cpp, src/gui/login.cpp: Go back to login - or register state on error, depending on what the user was doing. - * src/gui/register.cpp: Actually use the server that is filled in. - * src/net/loginhandler.cpp: Fixed error message. - * src/net/charserverhandler.cpp: Fixed crash since now logic is called - after non-selected characters are deleted, by properly setting deleted - instances to 0 and going back to initial selection. - * src/main.cpp, src/net/network.h, src/net/network.cpp: Make sure that - when a network error occurs, the error message is available and shown - to the user. - * src/gui/register.h, src/gui/register.cpp: Only enable Register - button when all necessary fields are filled in. - -2007-03-23 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/char_select.cpp, src/gui/char_select.h, - src/net/charserverhandler.h, src/net/charserverhandler.cpp: Clarified - the error message when character creation fails and made sure the - character creation dialog doesn't close when creation failed. - -2007-03-22 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/login.cpp, src/gui/login.h, src/gui/register.h, - src/gui/register.cpp: Only enable login button when a username, - password and server are filled in. Pass username, password and server - on to the register dialog. Go back to login dialog when canceling - registration. Fixed a crash caused by deleting an OkDialog twice (it - also deletes itself). Made the register dialog a bit wider. Register - dialog no longer clears username field when it is invalid. - * src/main.cpp, data/icons/CMakeLists.txt, data/icons/Makefile.am, - data/icons/tmw-32x32.png: Use a 32x32 non-alpha layered window icon. - * tmw.cbp: Updated project file. - * data/icons/CMakeLists.txt, data/icons/Makefile.am, src/main.cpp, - data/icons/tmw-32x32.png: Removed 32x32 non-alpha layered window icon - again, and instead used the icon in the executable on Windows. - -2007-03-21 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/main.cpp, src/gui/viewport.cpp, src/resources/image.h, - src/resources/image.cpp: Reduced amount of useless logging, calculate - nearest power of two in a function and only do the alpha check in - software mode. - * src/gui/login.cpp: Fixed small issue where default server didn't fit - in the server entry field properly. - * src/main.cpp: Display a progress bar and connecting status for each - server and display the version using a gcn::Label. - * src/gui/viewport.cpp, src/monster.h: Avoiding magic numbers where - possible (1002) and also display the target when other players are - targeted. - * src/floor_item.cpp, src/being.cpp, src/main.cpp, src/CMakeLists.txt, - src/gui/equipmentwindow.cpp, src/gui/viewport.cpp, - src/gui/itemcontainer.cpp, src/gui/viewport.h, src/engine.cpp, - src/animatedsprite.cpp, src/tileset.h, src/npc.cpp, src/Makefile.am, - src/being.h, src/resources/imageset.cpp, src/resources/animation.h, - src/resources/spritedef.cpp, src/resources/resourcemanager.h, - src/resources/spriteset.h, src/resources/imageset.h, - src/resources/resourcemanager.cpp, src/resources/spriteset.cpp, - src/resources/spritedef.h: Renamed Spriteset to ImageSet. - -2007-03-20 Philipp Sehmisch <tmw@crushnet.org> - - * src/gui/updatewindow.cpp: Cancel button is now disabled after - downloading is finished. - -2007-03-20 David Athay <ko2fan@gmail.com> - - * src/gui/viewport.cpp: Fixed target cursor animation, and changed - which layer it is drawn after. - * src/gui/viewport.cpp, src/gui/viewport.h: Split drawing the target - cursor and target name into functions. - -2007-03-20 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/gui/mouse.png: Positioned the cursor image more - accurate. - -2007-03-19 David Athay <ko2fan@gmail.com> - - * src/localplayer.cpp, src/gui/viewport.cpp, src/gui/viewport.h, - src/net/equipmenthandler.cpp, src/localplayer.h, - src/net/protocol.h: Added target cursor. - -2007-03-18 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * docs/Makefile.am, docs/tmw.6: Added man page by Patrick Matthäi. - * src/resources/image.cpp: Restored alpha layer check, since it should - be more efficient in software mode when SDL knows an image doesn't use - the alpha layer. - * data/graphics/gui/thickborder.png, - data/graphics/gui/vscroll_grey.png, data/graphics/gui/slider.png, - data/graphics/gui/vscroll_blue.png, data/graphics/gui/vscroll_red.png, - data/graphics/gui/deepbox.png, - data/graphics/sprites/monster-slime-red.png, - data/graphics/sprites/monster-scorpion-black.png, - data/graphics/sprites/monster-scorpion.png, - data/graphics/sprites/monster-slime-rudolph.png, - data/graphics/sprites/monster-snake.png, - data/graphics/sprites/monster-slime-santa.png, - data/graphics/sprites/monster-maggot.png, - data/graphics/sprites/monster-spider.png, - data/graphics/sprites/monster-scorpion-red.png, - data/graphics/sprites/monster-slime-yellow.png, - data/graphics/sprites/monster-slime-green.png, - data/graphics/sprites/monster-maggot-giant.png: Replaced pink pixels - with transparent ones. - -2007-03-18 Rogier Polak <rogier.l.a.polak@gmail.com> - - * src/main.cpp: Added (-v) version to the arguments. (Applied a patch - by Patrick Matthäi). - * src/resources/image.cpp: Deleted the "pink code", which added - transparancy with SDL_SetColorKey. - -2007-03-18 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * icons/tmw.ico, icons/tmw.png, icons/tmw.xpm: Replaced icons with the - green globe that is also used on the website. - -2007-03-14 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/main.cpp, src/tmw.rc, data/icons/tmw-icon.png, - data/icons/tmw-icon.xpm, data/icons/tmw.ico, data/icons/tmw-icon.ico, - data/icons/Makefile.am, data/icons/tmw.png, data/icons/tmw.xpm, - data/icons/CMakeLists.txt: Renamed icons to make things easier for - Debian packaging, and the "-icon" part was superfluous anyway. - -2007-03-12 Philipp Sehmisch <tmw@crushnet.org> - - * src/simpleanimation.cpp, src/simpleanimation.h, src/CmakeLists.txt, - src/Makefile.am: Added a simple animation class that hosts a looping - animation without the action and direction stuff from AnimatedSprite. - * src/particle.cpp, src/particle.h, src/particleemitter.cpp: Used said - simple animation class for animated particles. - -2007-03-12 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/items/armor-head-rangerhat.png: New version of ranger - hat icon by Pauan. - -2007-03-11 Philipp Sehmisch <tmw@crushnet.org> - - * src/map.cpp, src/gui/viewport.cpp: Fixed a bug that made the engine - not draw the last row and column of the map. - -2007-03-09 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp: Reimplemented physics mode that uses the default - square root function as fallback for systems where the fastInvSqrt - function doesn't work properly. - * src/particle.cpp, src/particle.h: Some performance optimizations - suggested by Rogier "Avaniel" Polak. - -2007-03-09 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/gui/target-cursor-blue.png, - data/graphics/gui/target-cursor-red.png: Added targeting cursors by - Pauan. - * data/graphics/sprites/chest-cotton-male.png, - data/graphics/sprites/chest-cotton-female.png: Replaced cotton shirt - with improved version by Pauan. - -2007-02-27 Philipp Sehmisch <tmw@crushnet.org> - - * gui/button.cpp, src/guibutton.h, - src/gui/tabbedcontainer.cpp, src/gui/tabbedcontainer.h:: Tabbed - containers now display the button of the active tab pressed all - the time. - -2007-02-26 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * configure.ac: Made OpenGL enabled by default. - -2007-02-26 Philipp Sehmisch <tmw@crushnet.org> - - * data/sfx/maggot-dying1.ogg, data/sfx/maggot-hit1.ogg, - data/sfx/maggot-hit2.ogg, data/sfx/maggot-miss1.ogg, - data/sfx/pinkie-hit1.ogg, data/sfx/pinkie-miss1.ogg, - data/monsters.xml: New sound effects by Cosmostrator. - -2007-02-25 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.h, src/particleemitter.h: Just some documentation work. - -2007-02-22 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/particle.h, src/particleemitter.cpp, - src/particleemitter.h: Added new particle property "bounce" that makes - particles bounce off the ground and use it with the damage numbers. - - -2007-02-21 Philipp Sehmisch <tmw@crushnet.org> - - * src/gui/char-server.cpp, src/gui/updatewindow.cpp, src/gui/main.cpp, - src/gui/main.h: Added a new state "LOADDATA_STATE" that loads the XML - databases. - * src/resourcemanager.cpp, src/resourcemanager.h, src/main.cpp, - customdata/: Added a customdata dir that allows to add custom user - data easily. Just create a zip file with the same structure like the - update archives and drop it in the customdata folder and the files in - it override the default data and the updates. - -2007-02-15 Philipp Sehmisch <tmw@crushnet.org> - - * src/engine.cpp: The name conflict problem with Guichan seems to be - solved with version 0.6.1. - * src/particle.cpp, src/particle.h, src/particleemitter.cpp, - src/particleemitter.h: Added support for animated particles. - * data/graphics/particles/playerglow.particle.xml: Created a new - player follow particle that spawns a swarm of animated bats that - follow the player. - -2007-02-09 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp: Fixed a misspelled include and another - optimisation at the vector calculation. - -2007-02-08 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/utils/fastsqrt.h: Added a faster function to - calculate square roots and using it for hypotenuse calculations. - Thanks to Rogier aka Avaniel for finding the function. - -2007-02-07 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/particle.h, src/particleemitter.cpp: Renamed - Particle::MAX_PARTICLES to Particle::maxCount and read the value from - config ("particleMaxCount") - * src/particle.cpp: Added fast physics mode that replaces the - trigonometric calculations made for calculating the acceleration by - much less cpu intense but also less accurate formulas. To enable it - set the config option "particleFastPhysics" to "1". - * src/particle.cpp: Added the config option "particleEmitterSkip" that - allows to reduces the output of the emitters by making them spawn - particles only every n-th game tick. - * src/graphics.cpp, src/graphics.h: Added a new method - "drawImageTransparent" to the graphic engine that blits an image with - an alpha factor. - * src/particle.cpp: Using new drawImageTransparent method. - -2007-02-01 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/particle.h, src/particleemitter.cpp, - src/particleemitter.h: Implemented die-distance (particles are deleted - when they reached a certain proximity to their target) - * src/particle.cpp: Fixed a bug in the acceleration vector calculation. - * src/particle.cpp, src/particle.h: Fixed a problem with particles with - unlimited lifetime and fade-in. - * data/graphics/particles/playerglow.particle.xml: And again a new - player follow particle. This time it demonstrates die-distance and the - fixed acceleration vector calculation. - * src/engine.cpp, data/graphics/particles/snow.particle.xml, - data/graphics/particles/snowflake.png: I can't stand the begging - anymore. Now it snows in the snow area... and the forest... and the - desert... and under the earth... and indoors... Are you happy now, - Rotonen and Elven? ;-) - * src/particle.cpp: Removed some debug log messages. - * src/being.cpp: Avoided crash when attempting to control an invalid - particle. - * src/particle.cpp, src/particle.h, src/particleemitter.cpp, - src/particleemitter.h: Cleaned the includes up. - -2007-01-31 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/particle.h, src/particleemitter.cpp, - src/particleemitter.h: Changed some variable names. - * data/graphics/particles/waterfall.particle.xml, - data/graphics/particles/waterfall-a.png: New waterfall with Modanungs - waterfall particle. - * src/particle.cpp: forgot to remove a svn conflict marker and changed - the order of initialisations to fix some compiler warnings. - -2007-01-30 Eugenio Favalli <elvenprogrammer@gmail.com> - - * tmw.cbp: Updated Code::blocks project file. - -2007-01-30 Philipp Sehmisch <tmw@crushnet.org> - - * src/net/beinghandler.cpp, - data/graphics/particles/skillup.particle.xml: Added different particle - effect for job levelup. - * src/particle.cpp, src/particle.h, src/particleemitter.cpp, - src/particleemitter.h: Renamed "alphafade" to "fade-out", added new - property "fade-in". - * data/graphics/particles/playerglow.particle.xml: Added a new player - effect (a fire) demonstrating how to use fade-in and fade-out to fade - one color into another. - -2007-01-29 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/particle.h, src/particleemitter.cpp, - src/particleemitter.h: Added a new particle property "alphafade" that - makes the particles fade into alpha before their lifetime ends. - * src/particle.cpp, src/particle.h: fixed an issue with particles that - have a lifetime of 0 and an issue with the momentum property. - * data/graphics/particles/waterfall.particle.xml, - data/graphics/particles/fog-medium-white-a.png, - data/graphics/particles/fog-medium-white-b.png, - data/graphics/particles/fog-medium-white-c.png: Added fog to the - waterfall effect demonstrating the new alphafade feature. - -2007-01-28 Philipp Sehmisch <tmw@crushnet.org> - - * src/utils/xml.cpp, src/utils/xml.h, src/particleemitter.cpp: Most - values are now read as floating point values from the emitter files. - * data/graphics/particles/fountain.particle.xml, - data/graphics/particles/hit.particle.xml, - data/graphics/particles/playerglow.particle.xml: Changed some values - as floating point values. Made the player follow effect magenta to - improve the visibility of the hit effects. - * src/engine.cpp, data/graphics/particles/waterfall.particle.xml: - Removed the fountain and added a waterfall instead. - * src/particle.h: Corrected the drawing order of the particles in - relation to the other sprites. - * src/gui/debugwindow.cpp, src/gui/debugwindow.h: Added particle count - to debug window. - * src/particle.cpp: Allowed momentum without acceleration and - implement the acceleration properly. - * src/utils/minmax.h, src/particleemitter.cpp, src/particleemitter.h: - Added a structure to hold a pair of numeric minimum and maximum values - and used it to store all numeric emitter properties. - * src/utils/randbetween.h: Removed (the functionality is now in struct - MinMax) - -2007-01-27 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/shoplistbox.cpp: Fixed compilation against Guichan 0.6.1. - * src/utils/randbetween.h: Fixed integer overflow causing the - randBetween function not to work properly on Linux. - -2007-01-27 Philipp Sehmisch <tmw@crushnet.org> - - * src/net/beinghandler.cpp: Fixed a compiler issue. - -2007-01-27 Philipp Sehmisch <tmw@crushnet.org> - * src/particle.cpp, src/particle.h, src/particleemitter.cpp, - src/particleemitter.h, src/engine.cpp: Emitter data is read from - external xml files. Reimplemented target-based particles with the - difference that they don't target beings or locations but other - particles (at the moment the host particle of the effect). - * src/being.cpp: Beings now move controlled particles to their center - instead of their upper left corner. - * data/graphics/particles/orb*: Added a bunch of new particles. - * data/graphics/particles/fountain.particle.xml: Reimplementation of - the fountain effect in XML. - * data/graphics/particles/playerglow.particle.xml: New effect that - spawns orbs that orbit around the origin. - * src/being.cpp, data/graphics/particles/hit.particle.xml: Added - particle effect on hit. - * src/net/beinghandler.cpp, - data/graphics/particles/levelup.particle.xml: Added particle effect on - levelup (own or other player). - -2007-01-24 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp: Initialized all variables of the particles in the - constructor. - * src/particleemitter.cpp, src/particleemitter.h: minor cleanups. - -2007-01-22 Philipp Sehmisch <tmw@crushnet.org> - - * src/being.cpp, src/being.h, src/particle.cpp, src/particle.h - src/particleemitter.cpp, src/particleemitter.h, src/engine.cpp: - Particle effects are now created in child particles of the root - particle. Particle emitters have no longer a being they check every - frame. Instead beings have the ability to take control of particles. - -2007-01-19 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/particle.h, src/particleemitter.cpp, - src/particleemitter.h: Implemented emitters that follow a being. - * src/engine.cpp: Added an emitter that follows the local player. - * src/particle.cpp: Fixed the crash on exit (reason was that the - mSpriteIterator wasn't initialized in every case) - -2007-01-18 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/particle.h, src/particle.cpp, src/CMakeLists.txt, - src/Makefile.am: Fixed compilation issues on Linux. - -2007-01-15 Philipp Sehmisch <tmw@crushnet.org> - - * src/game.cpp, src/particle.cpp, src/particle.h, - src/particleemitter.h: Made the particle count global and more - performant. - -2007-01-14 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/game.cpp, src/main.cpp, src/gui/trade.cpp, src/gui/sell.cpp, - src/gui/connection.cpp, src/gui/buddywindow.cpp, src/gui/browserbox.h, - src/gui/char_server.cpp, src/gui/window.cpp, src/gui/login.cpp, - src/gui/inttextbox.h, src/gui/viewport.cpp, src/gui/button.h, - src/gui/shoplistbox.h, src/gui/skill.h, src/gui/item_amount.h, - src/gui/setup_audio.h, src/gui/newskill.cpp, src/gui/listbox.h, - src/gui/register.h, src/gui/setup.cpp, src/gui/npclistdialog.h, - src/gui/updatewindow.cpp, src/gui/button.cpp, src/gui/char_select.cpp, - src/gui/login.h, src/gui/setup_audio.cpp, src/gui/item_amount.cpp, - src/gui/setup_joystick.h, src/gui/chat.h, src/gui/npc_text.cpp, - src/gui/setup_video.cpp, src/gui/ok_dialog.cpp, - src/gui/inventorywindow.h, src/gui/gccontainer.cpp, - src/gui/newskill.h, src/gui/buy.h, src/gui/setup.h, - src/gui/itemcontainer.h, src/gui/confirm_dialog.cpp, - src/gui/debugwindow.cpp, src/gui/chat.cpp, src/gui/setup_joystick.cpp, - src/gui/updatewindow.h, src/gui/char_select.h, src/gui/buysell.h, - src/gui/tabbedcontainer.cpp, src/gui/inventorywindow.cpp, - src/gui/help.cpp, src/gui/status.h, src/gui/npc_text.h, - src/gui/setup_video.h, src/gui/menuwindow.cpp, src/gui/browserbox.cpp, - src/gui/ok_dialog.h, src/gui/buy.cpp, src/gui/itemcontainer.cpp, - src/gui/gccontainer.h, src/gui/buddywindow.h, src/gui/sell.h, - src/gui/trade.h, src/gui/inttextbox.cpp, src/gui/char_server.h, - src/gui/window.h, src/gui/shoplistbox.cpp, src/gui/skill.cpp, - src/gui/buysell.cpp, src/gui/confirm_dialog.h, src/gui/debugwindow.h, - src/gui/status.cpp, src/gui/listbox.cpp, src/gui/register.cpp, - src/gui/viewport.h, src/gui/tabbedcontainer.h, - src/gui/npclistdialog.cpp, src/gui/help.h, src/gui/chatinput.h, - src/gui/chatinput.cpp, src/net/tradehandler.cpp, - src/net/playerhandler.cpp: Upgraded to Guichan 0.6.0 (merge from - guichan-0.6.0 branch). - * src/winver.h, configure.ac, data/help/header.txt, NEWS, README, - CMakeLists.txt: Updated version to 0.0.22.1. - -2007-01-14 Philipp Sehmisch <tmw@crushnet.org> - - * src/particle.cpp, src/particle.h; src/particleemitter.cpp, - src/particleemitter.h, src/utils/randbetween.h: - Implemented particle engine. - * src/engine.cpp, src/game.cpp: added calls to the particle engine - * data/graphics/particles/*: added a bunch of particle graphics for - testing purpose. - * particleengine-todo.txt: Added particle engine todo list (please - omit when merging) - -2007-01-13 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/sprites/Makefile.am, - data/graphics/sprites/CMakeLists.txt: Updated with regard to renaming - of cotton equipment. - -2006-01-13 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/gui/debugwindow.cpp, src/gui/viewport.h: Fixed mouse coordinates - display in debug window. - -2007-01-12 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/viewport.cpp: Fixed initialization of mPlayerFollowMouse, - the lack of which sometimes caused the player to start walking when - clicking on the GUI. - -2007-01-09 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/icecave.png: Added new tiles and fixes by Nickman and - made some other cosmetical corrections. - -2007-01-07 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/sprites/monster-mountsnake.xml, - data/graphics/sprites/monster-mountsnake.png, data/monsters.xml: Added - brown snake by Pauan. - -2007-01-07 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/chest-cottonshirt-male.png, - data/graphics/chest-cottonshirt-male.xml, - data/graphics/chest-cottonshirt-female.png, - data/graphics/chest-cottonshirt-female.xml, - data/graphics/item001.png, data/equipment.xml: Added female - cottonshirt sprites. - * data/equipment.xml: Fixed some wrong armor values. - -2007-01-05 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/CMakeLists.txt, data/graphics/images/ambient/Makefile.am, - data/graphics/sprites/CMakeLists.txt: Synchronized build files. - -2006-12-12 Eugenio Favalli <elvenprogrammer@gmail.com> - - * tools/Purger.java: Removed purger tool. - -2006-12-25 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/tiles/christmastree.png, data/maps/new_11-1.tmx.gz: - Added Christmas tree by Pauan. - * data/graphics/sprites/head-christmastree.xml: Fixed name of image. - * src/resources/spriteset.cpp: Fixed index check to prevent crashing. - * data/graphics/sprites/head-christmastreehat.png, - data/graphics/sprites/head-rangerhat.png, - data/graphics/sprites/head-christmastree.xml, - data/graphics/sprites/head-antlerhat.xml, - data/graphics/sprites/head-santabeardhat.xml, - data/graphics/sprites/head-santabeardhat.png, - data/graphics/sprites/head-rangerhat.xml: Updates to Pauan's recent - sprites by Pauan. - * data/items.xml: Fixes to descriptions and weights by Pauan. - -2006-12-24 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/shoplistbox.cpp: Don't try to draw an icon when it is not - defined or failed to load properly. - * src/resources/image.cpp: Major rendering performance increase in - software mode, by not using RLE compression on loaded images while - most of the time, we're only drawing a small subimage of them. - * README, data/help/header.txt, NEWS: Filled in release dates. - -2006-12-23 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * configure.ac, data/graphics/items/Makefile.am, - data/graphics/items/CMakeLists.txt, data/graphics/images/Makefile.am, - data/graphics/images/CMakeLists.txt, - data/graphics/sprites/Makefile.am, - data/graphics/sprites/CMakeLists.txt, data/graphics/Makefile.am, - data/graphics/CMakeLists.txt, data/maps/Makefile.am, - data/maps/CMakeLists.txt, data/sfx/Makefile.am, - data/sfx/CMakeLists.txt, data/Makefile.am, data/CMakeLists.txt: - Removed database files, minimaps, items, monster sprites, maps and - sounds from the release. They will be released dynamically only. - * data/graphics/tiles/snow_x3.png: Added bottom of Christmas tree by - pauan. - * src/main.cpp, src/resources/itemdb.h, src/resources/monsterdb.cpp, - src/resources/itemdb.cpp, src/resources/equipmentdb.cpp: Load the - databases at the start of the LOGIN state, after the updates are - loaded. - -2006-12-22 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/items/armor-head-rangerhat.png, - data/graphics/items/generic-redstocking.png, - data/graphics/items/armor-head-christmastree.png, - data/graphics/items/armor-head-antlerhat.png, - data/graphics/items/armor-head-santabeardhat.png, - data/graphics/sprites/head-christmastreehat.png, - data/graphics/sprites/head-rangerhat.png, - data/graphics/sprites/head-christmastree.xml, - data/graphics/sprites/head-antlerhat.xml, - data/graphics/sprites/head-santabeardhat.xml, - data/graphics/sprites/head-antlerhat.png, - data/graphics/sprites/head-santabeardhat.png, - data/graphics/sprites/head-rangerhat.xml, data/items.xml, - data/equipment.xml, data/monsters.xml: Added new Christmas themed - headwear by Pauan. - * data/graphics/items/Makefile.am, data/graphics/items/CMakeLists.txt, - data/graphics/sprites/Makefile.am, - data/graphics/sprites/CMakeLists.txt, data/Makefile.am, - data/CMakeLists.txt: Updated Makefiles. - -2006-12-21 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * configure.ac, CMakeLists.txt, README, data/help/header.txt: Updated - version to 0.0.22. - -2006-12-18 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/items/armor-chest-vnecksweater.png: New version of - the inventory icon for the V-neck sweater by Saphy. - -2006-12-17 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/sell.cpp, src/gui/shoplistbox.h, src/gui/listbox.h, - src/gui/shop.cpp, src/gui/buy.cpp, src/gui/shoplistbox.cpp, - src/gui/listbox.cpp: Subclassed ShopListBox from ListBox to get rid of - some duplicated code, and fixed a problem with scrolling to the - current selection. Also aligned the text a bit better and put the - price in parenthesis. - -2006-12-16 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/connection.cpp, src/gui/chargedialog.cpp: Fixed dialog - visibility. - * src/localplayer.cpp, src/game.cpp, src/localplayer.h: Fixed issues - with walking one tile too many and changing direction towards an - obstacle. - -2006-12-15 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/desert1.png: Removed some unused legacy tiles and - added variant tiles for the cliffs. - -2006-12-14 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/game.cpp, src/engine.h, src/engine.cpp: Removed the rather - useless remaining draw function from the engine class. - * src/being.cpp, src/being.h: Fixed an issue with fading out damage - texts (they were sometimes fully opaque at the end of fading out). - -2006-12-12 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, tmw.cbp: Updated project files. - * src/gui/updatewindow.cpp, src/gui/updatewindow.h, src/main.cpp: - Added Adler32 checksum for updates. - * src/net/playerhandler.cpp: Fixed crash when selecting an item after - death. - * data/items.xml: Fixed defense values for sweaters. - * src/net/playerhandler.cpp: Hide all NPC dialogs after death. - -2006-12-12 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/animatedsprite.h, src/CMakeLists.txt, src/animatedsprite.cpp, - src/resources/action.h, src/resources/animation.h, - src/resources/spritedef.cpp, src/resources/action.cpp, - src/resources/animation.cpp, src/resources/spritedef.h: Moved - Action, Animation and Frame (renamed from AnimationPhase) classes into - the resources directory, since they are part of the SpriteDef class. - * src/CMakeLists.txt, src/utils/base64.cpp, src/utils/base64.h, - src/Makefile.am, src/resources/mapreader.cpp: Moved base64 module into - utils directory. - * src/engine.cpp, src/npc.cpp: Cleaned up some unused stuff. - -2006-12-12 Philipp Sehmisch <tmw@crushnet.org> - - * data/sfx/bat-dying1.ogg, data/sfx/bat-hit1.ogg, - data/sfx/bow_shoot_1.ogg, data/sfx/fire-goblin-hit1.ogg - data/sfx/fire-goblin-hit2.ogg, data/sfx/fire-goblin-miss1.ogg, - data/sfx/fist-swish.ogg, data/sfx/flower-hit1.ogg, - data/sfx/flower-hit2.ogg, data/sfx/flower-miss1.ogg, - data/sfx/fluffy-hit1.ogg, data/sfx/fluffy-hit2.ogg, - data/sfx/fluffy-hit3.ogg, data/sfx/fluffy-hurt1.ogg, - data/sfx/fluffy-miss1.ogg, data/sfx/knife-hit1.ogg, - data/sfx/knife-miss1.ogg, data/sfx/levelup.ogg - data/sfx/scorpion-hit1.ogg, data/sfx/scorpion-hit2.ogg - data/sfx/scorpion-hit3.ogg, data/sfx/scorpion-hit4.ogg - data/sfx/scorpion-miss1.ogg, data/sfx/short-sword-hit1.ogg - data/sfx/short-sword-miss1.ogg, data/sfx/shroom-hit1.ogg - data/sfx/slime-hit1.ogg: - Normalized versions of sound effects by Cosmostrator. - -2006-12-11 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/updatewindow.cpp: Fixed visibility of the update window. - -2006-12-11 Philipp Sehmisch <tmw@crushnet.org> - - * data/equipment.xml, data/items.xml, - data/graphics/sprites/chest-tnecksweater-male.png, - data/graphics/sprites/chest-tnecksweater-female.png, - data/graphics/sprites/chest-vnecksweater-male.png, - data/graphics/sprites/chest-vnecksweater-female.png, - data/graphics/sprites/chest-tnecksweater-male.xml, - data/graphics/sprites/chest-tnecksweater-female.xml, - data/graphics/sprites/chest-vnecksweater-male.xml, - data/graphics/sprites/chest-vnecksweater-female.xml, - data/graphics/sprites/Makefile.AM, - data/graphics/sprites/CMakeLists.txt, - data/graphics/items/armor-chest-vnecksweater.png, - data/graphics/items/armor-chest-tnecksweater.png, - data/graphics/items/armor-chest-woolsweater.png, - data/graphics/items/Makefile.AM, data/graphics/items/CMakeLists.txt: - Added new sweaters by Saphy. Info for server admins: Item IDs are 564 - for turtleneck (should already be in there) and 624 for v-neck. The - visible sprite IDs are 19 for turtleneck and 20 for v-neck. - -2006-12-11 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/main.h, src/tmw.rc, src/winver.h, The Mana World.dev, tmw.cbp: - Fixed windows binary version. - -2006-12-10 Eugenio Favalli <elvenprogrammer@gmail.com> - - * docs/INSTALL/win32.txt: Added more detailed instructions for Dev-C++ - users. - -2006-12-09 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/npcs.png: Added pirate NPC. - -2006-12-09 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/sprite.h, src/gui/playerbox.h, src/gui/char_select.cpp, - src/gui/playerbox.cpp, src/gui/passwordfield.h, src/gui/char_select.h, - src/main.cpp, src/being.cpp, src/player.h, src/floor_item.h, - src/being.h: Use new animation system in character selection/creation. - Shows equipment and allowed for some cleanup. Had a bit of help from - the patch by VictorSan. - -2006-12-08 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/base64.cpp, src/base64.h, src/resources/mapreader.cpp: - Downgraded to base64 codec from PHP 3 to resolve licensing issues. - -2006-12-06 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, tmw.cbp: Updated project files. - -2006-12-06 Philipp Sehmisch <tmw@crushnet.org> - - * src/net/beinghandler.cpp: Fixed crashs when changing equipment. - * data/graphics/tiles/desert1.png, data/graphics/tiles/desert2.png: - More tiling related fixes at the cliffs. - -2006-12-06 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/item_amount.cpp: Fixed visibility of item amount window. - -2006-12-05 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/desert1.png: Improved the tiling behavior - of the cliffs (still not gridless but at least the edges fit - together in the most common situations) - -2006-12-04 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/game.cpp, src/engine.h, src/gui/windowcontainer.h, - src/gui/viewport.cpp, src/gui/gui.cpp, src/gui/gui.h, - src/gui/debugwindow.cpp, src/gui/inventorywindow.cpp, - src/gui/viewport.h, src/engine.cpp, src/CMakeLists.txt, - src/Makefile.am: Introduced a new class Viewport which combines the - drawing code from Engine with the (rather misplaced) input handling - from the Gui class. Also, it's a Container itself which should allow - for extending it to show Guichan widgets on map coordinates. - -2006-12-03 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/sound.cpp, src/monster.cpp, src/sound.h, - src/resources/soundeffect.cpp, src/resources/resourcemanager.cpp: - Don't try to play empty strings as sounds, and don't return a - SoundEffect instance when Mix_Chunk loading failed. - * src/beingmanager.cpp, src/npc.cpp, src/npc.h: Show NPC names. - * src/game.cpp, src/gui/char_server.cpp, src/gui/window.cpp, - src/gui/login.cpp, src/gui/char_select.cpp, src/gui/ok_dialog.cpp, - src/gui/confirm_dialog.cpp, src/gui/ok_dialog.h, src/gui/window.h, - src/gui/confirm_dialog.h, src/gui/register.cpp: Windows now default - to invisible, since this seems the most common case. - -2006-12-02 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/chest-leather-female.png: A little correction - at the female leather shirt by mangamaniac. - -2006-12-01 Philipp Sehmisch <tmw@crushnet.org> - - * src/net/beinghandler.cpp, src/being.h, src/being.cpp, src/monster.h, - src/gui/gui.cpp: Visible equipment slot numbers are now converted by - the beinghandler from eAthena to our system. No more distinction - between monster attacking and player attacking between beinghandler - and the being classes. - * src/being.cpp, src/monster.cpp, src/being.h, src/monster.h: Moved - the monster specific action handling into the monster class. - * monster.cpp, mosterinfo.cpp, monsterinfo.h: Monsters now make sounds - when they attack, gett hurt or die. - * src/being.cpp: Delayed the damage numbers a bit to synchronize them - better with the hurt sounds. - * data/monsters.xml, data/sfx//bat-dying1.ogg, data/sfx/bat-hit1.ogg, - data/sfx/bow_shoot_1.ogg, data/sfx/fire-goblin-hit1.ogg, - data/sfx/fire-goblin-hit2.ogg, data/sfx/fire-goblin-miss1.ogg, - data/sfx/fist-swish.ogg, data/sfx/flower-hit1.ogg, - data/sfx/flower-hit2.ogg, data/sfx/flower-miss1.ogg, - data/sfx/fluffy-hit1.ogg, data/sfx/fluffy-hit2.ogg, - data/sfx/fluffy-hit3.ogg, data/sfx/fluffy-hurt1.ogg, - data/sfx/fluffy-miss1.ogg, data/sfx/knife-hit1.ogg, - data/sfx/knife-miss1.ogg, data/sfx/levelup.ogg, - data/sfx/scorpion-hit1.ogg, data/sfx/scorpion-hit2.ogg, - data/sfx/scorpion-hit3.ogg, data/sfx/scorpion-hit4.ogg, - data/sfx/scorpion-miss1.ogg, data/sfx/short-sword-hit1.ogg, - data/sfx/short-sword-miss1.ogg, data/sfx/shroom-hit1.ogg, - data/sfx/slime-hit1.ogg, data/sfx/Makefile.AM, - data/sfx/CMakeLists.txt: Added a lot of sound effects by Cosmostrator. - -2006-11-30 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/maps/Makefile.am: Fixed small trailing slash issue. - * src/player.cpp: Optimized setSex and setWeapon by first loading the - new sprite and then deleting the old one (prevents potentially - unnecessary reload). - * src/net/beinghandler.cpp: Optimized handling of player walk - messages, by first setting the gender right and then setting the - equipment. Gets rid of reload of complete equipment in the case of - female. - -2006-11-30 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, tmw.cbp: Updated project files. - -2006-11-29 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/monster.cpp: Small fix to resource path. - -2006-11-29 Philipp Sehmisch <tmw@crushnet.org> - - * src/resources/equipment.h: Made getSprite return a constant - reference. - * src/resources/monsterdb.cpp, src/resources/monsterdb.h, - src/resources/monsterinfo.cpp, src/resources/monsterinfo.h, - src/Makefile.AM, src/CMakeLists.txt, src/main.cpp: - Added the MonsterDB namespace that reads the monsters.xml - and maps monster IDs to names, sprite definitions and sound effects. - * src/monster.cpp: Get sprite definition filenames from MonsterDB. - * src/engine.cpp: Show monster name when targeting a monster. - * data/monsters.xml, data/graphics/sprites/Makefile.AM, - data/graphics/sprites/CMakeLists.txt, data/graphics/sprites/monster*: - Renamed all monster sprites to more associative names (whew, we got to - train some monkeys for tasks like that). - -2006-11-27 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * tmw.cbp: Updated Code::Blocks project file. - -2006-11-27 Philipp Sehmisch <tmw@crushnet.org> - - * src/log.cpp, src/util/wingettimeofday.h: Added implementation of - gettimeofday() for windows machines. - -2006-11-26 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/log.cpp: Higher precision log timestamps. - * src/graphics.cpp, src/gui/gui.cpp, src/openglgraphics.cpp, - src/main.cpp, src/resources/equipmentdb.cpp, - src/resources/resourcemanager.cpp: Added some additional log - statements. - * src/resources/itemdb.cpp: Removed usage of READ_PROP in favour of - XML::getProperty and updated log statements. - * src/resources/image.cpp: Added support for loading TGA images. - -2006-11-26 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/resources/resourcemanager.cpp: Remove unnecessary check for - file existance, loading will just fail with the correct error message. - -2006-11-26 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/game.cpp, src/being.cpp, src/net/beinghandler.cpp, src/being.h: - Made Being::mDirection protected, forcing the use of setDirection. - * src/npc.cpp, src/player.cpp, src/animatedsprite.h, src/monster.cpp, - src/resources/resourcemanager.h: Defaulted variant argument to 0 since - this is the most common situation. - * src/resources/spritedef.cpp, src/resources/spritedef.h: Some - refactoring, splitting up the loading into several methods, in - preparation of adding support for including other sprites. - * src/main.cpp: ItemDB needs to be unloaded before deleting the - resource manager instance, since ItemInfo refers to an Image. - -2006-11-26 Philipp Sehmisch <tmw@crushnet.org> - - * src/being.cpp, src/being.h, src/engine.cpp, src/main.cpp, - src/player.cpp, src/player.h, src/resources/equipmentdb.h, - src/resources/equipmentdb.cpp, src/resources/equipmentinfo.h, - src/resources/itemdb.cpp, src/resources/itemdb.h, - data/graphics/images/error.png, data/graphics/sprites/error.xml: - Added the EquipmentDB namespace that reads the equipment.xml, maps - equipment IDs to sprite definition files and thus allows gender - specific equipment sprites. - * data/graphics/sprites/chest-leather-female.png, - data/graphics/sprites/chest-leather-male.png, - data/graphics/sprites/chest-leather-female.xml, - data/graphics/sprites/chest-leather-male.xml, - data/equipment.xml: Added and defined male and female leather shirt as - proof of concept of the gender specific equipment. - * data/graphics/images/Makefile.am, data/graphics/sprites/Makefile.am, - data/Makefile.am, src/Makefile.am, - data/graphics/images/CMakeLists.txt, - data/graphics/sprites/CMakeLists.txt, data/CMakeLists.txt, - src/CMakeLists.txt: Updated Makefiles and CMake Lists. - -2006-11-24 Philipp Sehmisch <tmw@crushnet.org> - - * src/engine.cpp, src/floor_item.cpp, src/item.h, src/main.cpp, - src/gui/buy.cpp, src/gui/popupmenu.cpp, src/gui/sell.cpp, - src/gui/shop.cpp, src/net/inventoryhandler.cpp, - src/resources/itemdb.cpp, src/resources/itemdb.h, - src/resources/iteminfo.h, src/resources/itemmanager.cpp, - src/resources/itemmanager.h: Refactored the Itemmanager class to an - ItemDB namespace. - -2006-11-23 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, tmw.cbp: Updated project files. - -2006-11-19 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/setup_joystick.cpp: Fixed joystick option to show enabled - when the joystick is enabled. - * src/localplayer.cpp, src/game.cpp, src/action.h, src/action.cpp, - src/player.cpp, src/animatedsprite.h, src/being.cpp, src/animation.h, - src/monster.cpp, src/CMakeLists.txt, src/player.h, - src/animatedsprite.cpp, src/localplayer.h, src/animation.cpp, - src/Makefile.am, src/being.h, src/resources/resourcemanager.cpp, - src/resources/spritedef.cpp, src/resources/resourcemanager.h, - src/resources/spriteset.h, src/resources/spritedef.cpp: Separated - sprite definition from playback. - -2006-11-17 Björn Steinbrink <B.Steinbrink@gmx.de> - - * data/graphics/sprites/CMakeLists.txt: Fixed some filenames. - -2006-11-17 Wai Ling Tsang <simotsa@gmail.com> - - * src/gui/gui.cpp: Added mouse following ability/feature under - logic(). - * src/gui/gui.h: Added mouseMotion(), mouseRelease() and private - variables for mouse following. - -2006-11-15 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/Woodland_village.png, - data/graphics/tiles/Woodland_village_x2.png, - data/graphics/tiles/Woodland_x2.png, - data/graphics/tiles/Makefile.AM, - data/graphics/tiles/CMakeList.txt, - data/maps/new_9-1.tmx.gz, data/maps/new_14-1.tmx.gz, - data/maps/new_15-1.tmx.gz, data/maps/new_16-1.tmx.gz, - data/maps/new_17-1.tmx.gz, data/maps/new_18-1.tmx.gz, - data/maps/new_19-1.tmx.gz, data/maps/CMakeList.txt, - data/maps/Makefile.AM: - Added woodland village outdoor tileset and maps. Modified gates on - the nearby maps. - -2006-11-15 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/animatedsprite.h, src/CMakeLists.txt, src/animatedsprite.cpp, - src/utils/xml.cpp, src/utils/xml.h, src/Makefile.am, - src/resources/mapreader.cpp: Separated getProperty method to an XML - utility namespace. - -2006-11-15 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, tmw.cbp: Updated project files. - * The Mana World.dev, tmw.cbp: Fixed dynamic linking of libcurl. - -2006-11-14 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/action.h, src/action.cpp, src/animation.h, src/CMakeLists.txt, - src/animatedsprite.cpp, src/animation.cpp, src/Makefile.am: Separated - Action class to its own module. - * src/action.h, src/action.cpp, src/animatedsprite.h, src/animation.h, - src/animatedsprite.cpp, src/animation.cpp: Resolve Image* of animation - phase at load time instead of storing just the spriteset index and - looking it up later (checking validity should still be added). Also - calculate animation length during loading instead of summing it up - each time it is requested. - -2006-11-12 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/map.cpp, src/map.h: Made pathfinding algorithm cope better with - beings blocking the road. This is done by allowing walking over other - beings, but at an additional cost so that it is preferable to walk - around them. - * src/game.cpp: Worked around a Guichan exception thrown for mice with - many buttons (patch by Roel van Dijk). - -2006-11-09 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/main.cpp, src/net/network.cpp, src/net/network.h, - The Mana World.dev, tmw.cbp: Fixed a conflict with Windows headers and - updated project files. - -2006-11-05 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/trade.cpp: Fixed money field to no longer hide below the - bottom of the window. - * src/CMakeLists.txt: Added shoplistbox.h/cpp files. - * src/gui/updatewindow.cpp: Fixed percentage indicator of update - window. - * src/main.cpp, src/net/beinghandler.cpp, src/net/skillhandler.cpp, - src/net/network.cpp: Changed some printf statements to log statements. - -2006-11-05 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/images/login_wallpaper.png: Reverted to standard - wallpaper. - * src/resources/resourcemanager.cpp: More useful logging about - resources that are being loaded (including source). - * src/graphics.cpp, src/gui/window.cpp, src/gui/button.cpp, - src/gui/widgets/dropdown.cpp, src/gui/textfield.cpp, - src/gui/playerbox.cpp, src/gui/progressbar.cpp, - src/gui/scrollarea.cpp, src/graphics.h, src/CMakeLists.txt, - src/Makefile.am, src/graphic, src/graphic/imagerect.h: Merged the - definition of ImageRect into graphics.h. - -2006-11-05 Yohann Ferreira <bertram@cegetel.net> - - * src/Makefile.am, src/gui/buy.cpp, src/gui/buy.h, src/gui/shop.h, - src/gui/shop.cpp, src/gui/sell.cpp, src/gui/shoplistbox.h, - src/gui/shoplistbox.cpp: Added pictures to items in buy dialogs. - Also too expensive items are highlighted in gray and can't be - selected. - * src/gui/shop.cpp, src/gui/shop.h, src/gui.sell.h, src/gui/sell.cpp, - src/net/buysellhandler.cpp, src/gui/shoplistbox.h, - src/gui/shoplistbox.cpp: Added item's pictures in sell dialogs, and - precisions about the total money in it. - * src/gui/shop.h, src/gui/shop.cpp, src/gui/sell.cpp: Fixes to Sell - dialog. - * src/gui/sell.cpp: Fixes the money value after selling something. - -2006-11-05 Björn Steinbrink <B.Steinbrink@gmx.de> - - * data/graphics/sprites/Makefile.am: Use tabs instead of spaces as - required by automake (AFAIK). - -2006-11-05 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/weapon0.png, - data/graphics/sprites/weapon2.png, - data/graphics/sprites/weapon-bow.xml, - data/graphics/sprites/weapon-dagger.xml, - data/graphics/sprites/weapon-fist.xml, - data/graphics/sprites/weapon-scythe.xml, - data/graphics/items/weapon-polearm-scythe.png, src/player.cpp, - src/player.h, src/being.cpp, src/being.h, data/items.xml: Added scythe - as a permanent weapon (ID: 623) - -2006-11-04 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/updatewindow.cpp, src/gui/updatewindow.h: Removed useless - addRow method. - -2006-11-04 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/maps/new_1-1.tmx.gz, data/maps/new_10-1.tmx.gz, - data/maps/new_11-1.tmx.gz, data/maps/new_14-1.tmx.gz, - data/maps/new_15-1.tmx.gz, data/maps/new_16-1.tmx.gz, - data/maps/new_3-1.tmx.gz, data/maps/new_7-1.tmx.gz, - data/maps/new_9-1.tmx.gz: Reverted Halloween map versions, except for - map 10 and 11 which include the latest fixes by Crush but now have - their night layer removed. - -2006-11-04 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_17-1.tmx.gz, - data/graphics/images/minimap_new_17-1.png, - data/graphics/images/Makefile.am, - data/graphics/images/CMakeLists.txt: - Added music and minimap to woodland cave level 2. - * data/maps/new_10-1.tmx.gz, maps/new_11-1.tmx.gz: - Fixed some map bugs (please update server sided walkmap) - -2006-11-03 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/updatewindow.cpp, src/main.cpp: Updated to the new default - updatehost. - -2006-11-01 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/gui.cpp, src/gui/browserbox.cpp, - data/graphics/gui/rpgfont_wider.png, - data/graphics/gui/browserfont.png, data/graphics/gui/fixedfont.png: - Added support for å and Å (with help of Håkan Rönn). - -2006-10-31 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/desert1.png, data/graphics/tiles/desert_x2.png: - Adding a bunch of graphical improvements made by VxD. - -2006-10-31 Frode Lindeijer <f.lindeijer@gmail.com> - - * data/graphics/sprites/item011.png, - data/graphics/sprites/item011.xml, data/graphics/sprites/item012.png, - data/graphics/sprites/item018.xml, - data/graphics/sprites/monster21.xml: Fixed some graphical issues, - mostly a cosmetic update. - -2006-10-30 Yohann Ferreira <bertram@cegetel.net> - - * debian/changelog: Updated the package's version. - -2006-10-30 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_9-1.tmx.gz: Removed the night effect that accidentally - sneaked in with the last map change. - -2006-10-30 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/tmw.rc: Updated Windows binary version. - * data/help/header.txt, NEWS, README: Fixed some release dates and - versions. - * data/graphics/items/armor-head-axehat.png, - data/graphics/items/armor-head-bandana.png, - data/graphics/items/armor-head-circlet.png, - data/graphics/items/armor-head-eyepatch.png, - data/graphics/items/armor-head-goggles.png, - data/graphics/items/armor-head-leathergoggles.png, - data/graphics/items/armor-head-piratehat.png, - data/graphics/items/armor-head-pumpkinhelmet.png, - data/graphics/items/Makefile.am, data/items.xml: Added new items. - * data/graphics/sprites/Makefile.am, - data/graphics/sprites/monster21.png, - data/graphics/sprites/monster21.xml, - data/graphics/sprites/monster22.png, - data/graphics/sprites/monster22.xml: Added new monsters. - * data/graphics/sprites/item011.png, data/graphics/sprites/item011.xml, - data/graphics/sprites/item012.png, data/graphics/sprites/item012.xml, - data/graphics/sprites/item013.png, data/graphics/sprites/item013.xml, - data/graphics/sprites/item014.png, data/graphics/sprites/item014.xml, - data/graphics/sprites/item015.png, data/graphics/sprites/item015.xml, - data/graphics/sprites/item016.png, data/graphics/sprites/item016.xml, - data/graphics/sprites/item017.png, data/graphics/sprites/item017.xml, - data/graphics/sprites/item018.png, data/graphics/sprites/item018.xml, - data/graphics/sprites/Makefile.am: Added new visible equipments. - * data/graphics/images/login_wallpaper.png, data/maps/new_1-1.tmx.gz, - data/maps/new_10-1.tmx.gz, data/maps/new_11-1.tmx.gz, - data/maps/new_14-1.tmx.gz, data/maps/new_15-1.tmx.gz, - data/maps/new_16-1.tmx.gz, data/maps/new_3-1.tmx.gz, - data/maps/new_7-1.tmx.gz, data/maps/new_9-1.tmx.gz: Halloween related - contents. - * data/graphics/items/Makefile.am: Fixed wrong filename. - * data/graphics/sprites/Makefile.am: Fixed wrong filenames. - * data/graphics/sprites/weapon0.png: Replaced knife with scythe. - -2006-10-30 Björn Steinbrink <B.Steinbrink@gmx.de> - - * data/graphics/items/CMakeLists.txt: Synced with autotools config. - * data/graphics/items/CMakeLists.txt: Added new items to CMake config. - * src/being.cpp: Properly initialize sprite vector. - -2006-10-29 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * configure.ac, The Mana World.dev, CMakeLists.txt, - data/help/header.txt, NEWS: Set version to 0.0.21.1. - * src/player.cpp: Fixed excessive unnecessary reloading of sprites. - -2006-10-28 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/main.c: Reload wallpaper after updates are fetched. - * data/graphics/sprites/Makefile.am: Added monster20. - -2006-10-28 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/monster20.png, - data/graphics/sprites/monster20.xml, - data/graphics/sprites/CMakeLists.txt: - Added pumpkin ghost monster for halloween event. - * data/maps/new_9-1.tmx.gz: Fixed a map discrepancy between - new_9-1 and new_14-1 (no new walkmap required). Thanks to QOAL - for reporting. - -2006-10-24 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/images/ambient/night.png: added graphic for night - ambient effect. - -2006-10-23 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * configure.ac: Added zlib check before PhysFS check. The PhysFS check - was failing on MSYS because of a missing -lz. - -2006-10-22 Björn Steinbrink <B.Steinbrink@gmx.de> - - * CMakeLists.txt, src/CMakeLists.txt: Add PACKAGE_VERSION support. - * CMakeLists.txt, src/CMakeLists.txt: Setup the binary dir in the main - CMakeLists.txt file. - * src/main.h: Include config.h only when we have it. - * src/CMakeLists.txt: Properly set build flags for the tmw target. - -2006-10-18 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/CMakeLists.txt, data/graphics/tiles/CMakeLists.txt, - data/graphics/items/CMakeLists.txt, data/graphics/gui/CMakeLists.txt, - data/graphics/images/ambient/CMakeLists.txt, - data/graphics/images/CMakeLists.txt, - data/graphics/sprites/CMakeLists.txt, data/maps/CMakeLists.txt, - data/sfx/CMakeLists.txt, data/help/CMakeLists.txt, - data/icons/CMakeLists.txt, data/CMakeLists.txt, CMakeLists.txt: Add - TMW_DATADIR definition. - -2006-10-16 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/CMakeLists.txt: Adjusted path for Windows. - -2006-10-16 Björn Steinbrink <B.Steinbrink@gmx.de> - - * CMakeLists.txt: Enable OpenGL by default. - * CMake/Modules/FindLibcurl.cmake: Fix libcurl library not being - marked as advanced option. - * CMakeLists.txt, src/CMakeLists.txt: Add OpenGL option. - * data/CMakeLists.txt: Adjust data destination for Windows. - * src/CMakeLists.txt: Adjust binary destination for Windows. - * src/CMakeLists.txt, data/graphics/tiles/CMakeLists.txt, - data/graphics/items/CMakeLists.txt, data/graphics/gui/CMakeLists.txt, - data/graphics/images/ambient/CMakeLists.txt, - data/graphics/images/CMakeLists.txt, - data/graphics/sprites/CMakeLists.txt, data/graphics/CMakeLists.txt, - data/maps/CMakeLists.txt, data/sfx/CMakeLists.txt, - data/help/CMakeLists.txt, data/icons/CMakeLists.txt, - data/CMakeLists.txt, CMakeLists.txt: Add CMake install support. - * CMake/Modules/FindGuichan.cmake, CMake/Modules/FindLibXml2.cmake, - CMake/Modules/FindLibcurl.cmake, CMakeLists.txt, src/CMakeLists.txt: - Add basic CMake support for building tmw. - -2006-10-12 Yohann Ferreira <bertram@cegetel.net> - - * debian/rules, debian/tmw-data.install, debian/tmw-data.dirs, - debian/tmw-music.install, debian/changelog: Updating Debian files for - bug fixing. - -2006-10-12 Frode Lindeijer <f.lindeijer@gmail.com> - - * /data/graphics/sprites/npcs.png: Updated the clothes salesman, - it was way out of date. - -2006-10-12 Cédric Borgese <cedric.borgese@gmail.com> - - * data/graphics/tiles/Woodland_x3.png: Enlarge the trunk and the - base of the trees in the woodland tileset. - -2006-10-09 Yohann Ferreira <bertram@cegetel.net> - - * src/gui/buysell.cpp, src/gui/buy.cpp : A little tweak to the buy - dialogs. - -2006-10-07 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/resources/mapreader.cpp: Added support for gzip compressed map - layers. - * configure.ac, The Mana World.dev: Increased version to 0.0.22. - * src/map.cpp: Removed unused setSize method. Also introduced - initializeOverlays method and removed the confusing setOverlay (which - actually added one). - * src/properties.h: Added convenience method to read a property as a - float. - * src/map.cpp, src/resources/ambientoverlay.cpp, - src/resources/ambientoverlay.h: Resolved some weirdness involving - the terms scroll and speed. - -2006-10-07 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, tmw.cbp: Updated project files. - -2006-10-03 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/sprites/item006.xml, - data/graphics/sprites/item007.xml, - data/graphics/sprites/item008.xml, - data/graphics/sprites/item009.xml, - data/graphics/sprites/item006.png, - data/graphics/sprites/item007.png, - data/graphics/sprites/item008.png, - data/graphics/sprites/item009.png, - data/graphics/sprites/item010.xml, - data/graphics/sprites/item010.png: Removed empty frames from - headgears. - -2006-10-03 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/map.cpp, src/map.h, src/Makefile.am, - src/resources/mapreader.cpp, src/resources/ambientoverlay.cpp, - src/resources/ambientoverlay.h: Turned AmbientOverlay into a class. - Cleaned up the associated code. - -2006-10-01 Eugenio Favalli <elvenprogrammer@gmail.com> - - * tools/Purger.java: Added a tool to purge old accounts from eAthena's - database files. - -2006-10-01 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/game.cpp, src/gui/trade.cpp, src/gui/inventorywindow.cpp: - Accepted patches by GDO and VictorSan that fix problems with hiding - windows using h and problems with trade window positioning. - -2006-09-28 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/map.cpp: Fix random crashes when map tiles are missing. - -2006-09-28 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/maps/new_2-1.tmx.gz: Matt Howe fixed up cave map. - -2006-09-26 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/maps/new_6-1.tmx.gz: Alderan fixed a map issue. - -2006-09-25 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/sprites/hairstyle*.png, - data/graphics/sprites/hairstyle*.xml, tools/Reorganize.java: Removed - unused frames from the hairsets. - * src/resources/image.h: Defined NO_SDL_GLEXT to prevent a - redefinition when gl.h also tries to define OpenGL extensions (patch - accepted from Rogier Polak). - -2006-09-23 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/maps/new_5-1.tmx.gz: Accepted new version by Matt Howe, fixing - several mapping issues. - -2006-09-21 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/tiles/Makefile.am: Added missing tileset. - * src/gui/updatewindow.cpp, src/gui/updatewindow.h: Made canceling the - update process non-blocking (Patch by VictorSan). - -2006-09-21 Philipp Sehmisch <tmw@crushnet.org> - - * src/animation.cpp, src/animation.h, src/animatedsprite.cpp, - src/animatedsprite.h: Removed some obsolete code and implemented - the posibility to define an <end /> token in the <animation>s - that allows to define an animation that doesn't loop and returns - to the STAND animation when finished. - * data/graphics/sprites/hairstyle*.xml, - data/graphics/sprites/item0*.xml, - data/graphics/sprites/monster*.xml, - data/graphics/sprites/weapons.xml: Used the <end /> token for all - attack animations fixing the problem with looping monster attack - animations. - -2006-09-20 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/items/generic-whitefur.png, - data/graphics/items/generic-cavesnakelamp.png, - data/graphics/items/generic-hardspike.png, - data/graphics/items/generic-pinkantennae.png, - data/graphics/items/Makefile.am, data/items.xml: Added drops for new - monsters. - * src/gui/setup.cpp, src/gui/setup_video.cpp, - src/gui/setup_video.h: Added a slider for controlling the overlay - detail to the video setup dialog based on a patch by VictorSan. - * data/maps/new_14-1.tmx.gz, data/maps/new_16-1.tmx.gz: Added cloud - effect and minimap. - * data/images/Makefile.am: Updated makefile. - -2006-09-19 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/sprites/Makefile.am: Added missing monster19 sprite. - -2006-09-17 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/maps/Makefile.am: Added missing maps. - * data/maps/new_10-1.tmx.gz: Disabled layer compression. - -2006-09-18 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_9-1.tmx.gz: Fixed some mapping bugs (new walkmap - required). - -2006-09-17 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/maps/new_10-1.tmx.gz: Fixed transparent snow issue (Fix by - Pajarico). - -2006-09-17 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp: Stop using the sticky window attribute which is - unneeded for the current implementation, instead adjust the set of - affected windows by the 'hide' shortcut. - -2006-09-17 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_14-1.tmx.gz, data/maps/new_15-1.tmx.gz, - data/maps/new_16-1.tmx.gz: fixed some mapping errors. - -2006-09-16 Philipp Sehmisch <tmw@crushnet.org> - - * src/animatedsprite.cpp, src/animatedsprite.h: Fixed the crash when - attacking without a weapon, some additional stability improvements and - more descriptive variable names in the parsing algorithmn. - -2006-09-16 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/help/changes.txt, data/help/header.txt, NEWS, README, - src/tmw.rc: Updated release infos. - -2006-09-14 Philipp Sehmisch <tmw@crushnet.org> - - * src/animation.h, src/animatedsprite.h, - data/graphics/sprites/weapon.xml: Some modifications at the animation - system. No more "undefined action foo" warnings in the tmw.log. Not - visible actions must now be declared explicitly. - * data/graphics/images/ambient/sandstorm.png, - data/graphics/images/ambient/clouds.png: Improved quality of the overlay - graphics. - -2006-09-14 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/char_select.cpp: Remove debug output. - * src/gui/char_select.cpp, src/main.cpp: Fix the character name - matching loop and add support for saving the last used character - (based on a patch by Andrew Harrison). - * src/gui/char_select.cpp, src/gui/char_select.h, src/main.cpp: Clean - up the player selection stuff, it's a bit nicer now. - * src/main.cpp: Fix up the player selection command line option. - -2006-09-12 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/game.cpp, src/game.h: Simplified fps limiting a bit and added - some comments. Now based on ConfigListener so that the fpslimit option - doesn't need to be queried the whole time. - * NEWS: Updated with some items. - -2006-09-11 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/game.cpp: Fixed more fps issues. - -2006-09-09 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/gui.cpp: Removed easy targeting functionality since it - interferes with walking around too much. Targeting can still be rather - conveniently done with 'a' or the middle mouse button. - -2006-09-07 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/resources/image.cpp: Fixed a typo. - * src/resources/image.cpp: Worked around a memory leak when using - OpenGL. - -2006-09-06 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/item010.png, data/graphics/sprites/item010.xml, - data/graphics/sprites/Makefile.am: Added santa hat sprites and updated - makefile. - -2006-09-06 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/game.cpp, src/gui/setup_video.cpp, src/main.cpp: Fixed fps - limiter issues and increased default limit to 60. - * src/game.cpp: Fixed fps limiter when disabled. - -2006-09-05 Philipp Sehmisch <tmw@crushnet.org> - * data/graphics/tiles/Woodland_ground.png, - data/graphics/tiles/Woodland_x2.png, - data/graphics/tiles/Woodland_x3.png: Some minor improvements and - additions at my tilesets. - * data/graphics/sprites/monster0.xml, - data/graphics/sprites/monster1.xml, - data/graphics/sprites/monster2.xml, - data/graphics/sprites/monster3.xml, - data/graphics/sprites/monster4.xml, - data/graphics/sprites/monster5.xml, - data/graphics/sprites/monster6.xml, - data/graphics/sprites/monster8.xml, - data/graphics/sprites/monster9.xml, - data/graphics/sprites/monster11.xml, - data/graphics/sprites/monster13.xml, - data/graphics/sprites/monster0.xml: Adjusted the animation speed of - several monsters. - -2006-09-03 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/floor_item.cpp, src/gui/equipmentwindow.cpp, src/gui/sell.cpp, - src/gui/trade.cpp, src/gui/inventorywindow.h, - src/gui/selectionlistener.h, src/gui/itemcontainer.h, - src/gui/inventorywindow.cpp, src/gui/buy.cpp, - src/gui/itemcontainer.cpp, src/gui/popupmenu.cpp, src/item.h, - src/net/inventoryhandler.cpp, src/Makefile.am, - src/resources/itemmanager.h, src/resources/iteminfo.cpp, - src/resources/iteminfo.h, src/resources/itemmanager.cpp: Introduced - SelectionListener to fix updating problem in inventory window (should - also be used to fix similar problem in trade, buy and sell dialogs). - Made the ItemInfo be passed around as a reference instead of a pointer, - since it is never NULL. - * src/gui/trade.cpp, src/gui/trade.h: Fixed updating of labels in - trade window. - * src/gui/sell.cpp, src/gui/listbox.h, src/gui/inventorywindow.h, - src/gui/buy.h, src/gui/buy.cpp, src/gui/sell.h, src/gui/listbox.cpp: - Fixed updating of labels in buy and sell dialogs. Also made our - listbox respond to mouse dragging to change the selection. - -2006-09-02 Bernard Lidicky <bernard@matfyz.cz> - - * src/game.cpp, src/beingmanager.h, src/gui/gui.cpp, - src/beingmanager.cpp, src/localplayer.h, README, - data/help/commands.txt, NEWS: Added targeting nearest monster with - either keyboard or mouse. Also made clicking beings in general a bit - easier (patch applied by Bjørn Lindeijer). - -2006-09-01 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/monster19.png, - data/graphics/sprites/monster19.xml, data/graphics/tiles/arena.png, - data/graphics/tiles/cave.png, data/maps/new_17-1.tmx.gz, - data/maps/new_6-1.tmx.gz: Added new big cave map, lamp-snake monster, - improved arena map. - -2006-08-30 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/item007.png, - data/graphics/sprites/item007.xml, data/graphics/sprites/item009.png, - data/graphics/sprites/item009.xml: - Added sprites for miners helm and standard headband. - -2006-08-29 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/map.cpp, src/beingmanager.h, src/gui/minimap.cpp, - src/engine.cpp, src/beingmanager.cpp: It's better to use a reference - when you don't need a pointer. - * NEWS: Updated with addition of config file option. - -2006-08-29 Andrew Harrison <atharris@users.sourceforge.net> - - * src/main.cpp: Added command line option to specify which - configuration file to use (patch applied by Bjørn Lindeijer). - -2006-08-29 Matthias Hartmann <hartmann.matthias@gmail.com> - - * data/graphics/sprites/item006.png, - data/graphics/sprites/item006.xml, data/graphics/sprites/item008.xml: - Fixed fancy hat + silk headband positions. - -2006-08-29 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/item008.png, - data/graphics/sprites/item008.xml, data/graphics/sprites/Makefile.am: - Added fancy hat sprite. - -2006-08-28 Philipp Sehmisch <tmw@crushnet.org> - - * src/gui/setup_video.cpp: Modified the ranges of the ScrollLaziness - and ScrollRadius sliders. - -2006-08-28 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/items/*: Changed svn properties. - * data/graphics/sprites/item001.xml, data/graphics/sprites/item002.xml, - data/graphics/sprites/item003.xml, data/graphics/sprites/item004.xml, - data/graphics/sprites/item005.xml, data/graphics/sprites/item006.png, - data/graphics/sprites/item006.xml, data/graphics/sprites/Makefile.am: - Added headband and fixed svn properties. - -2006-08-27 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/net/inventoryhandler.cpp: Applied patch by Andrew Harrison that - adds item pickup messages to the chat window. - * NEWS: Updated with some recently added and fixed issues. Doesn't - mention any of the recent content updates yet. - -2006-08-26 Pascal Ganaye <pascalganaye@users.sourceforge.net> - - * src/joystick.h, src/joystick.cpp, src/gui/setup.cpp, - src/gui/setup_joystick.h, src/gui/setup_video.cpp, - src/gui/setup_joystick.cpp, src/gui/setup_video.h: Added sliders to - the video section of the setup window to configure the laziness and - radius of the scrolling behaviour. Added a checkbox to the joystick - section to allow enabling/disabling the joystick (patch applied by - Bjørn Lindeijer). - -2006-08-26 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/ministatus.cpp, src/gui/ministatus.h: Applied patch by mrha - (Herbi), adding experience bar to the ministatus in the top left. - * configure.ac, data/graphics/items/Makefile.am, - data/graphics/Makefile.am: Added Makefile.am to make sure the item - icons are installed. - * src/player.cpp, src/animation.h, src/player.h, - src/animatedsprite.cpp, src/animation.cpp: Applied patch by Bahamut81 - which implements resetting of Animation, Action and AnimatedSprite. - This fixes the animation synchronization issues. - -2006-08-25 Matthias Hartmann <hartmann.matthias@gmail.com> - - * src/gui/char_select.cpp, src/gui/char_select.h, src/main.cpp: Added - --playername command line option for selecting the character you want - to play with (patch applied by Bjørn Lindeijer). - -2006-08-25 Philipp Sehmisch <tmw@crushnet.org> - - * src/engine.cpp, src/map.h, src/map.cpp: Addded new config variable - "OverlayDetail" to control the number of drawn overlays. - 2 (or more) = all (default), 1 = only the first one, 0 = none. - -2006-08-24 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/help/commands.txt, README, src/game.cpp, src/gui/chat.cpp, - src/gui/window.cpp, src/gui/window.h: Added support for sticky windows - as discussed with doener. Patch by Andrew Harrison. - * data/items.xml: Added jeans shorts. - -2006-08-24 Philipp Sehmisch <tmw@crushnet.org> - - * src/engine.cpp: Scrolling speed no longer affected by framerate. - * src/map.cpp, scr/map.h: Overlay speed no longer affected by - framerate. - * data/maps/new_1-1.tmx.gz, data/graphics/new_7-1.tmx.gz, - data/graphics/images/ambient/sandstorm.png: Redone sandstorm effect - (larger and more transparent image, tripple layer parallax scrolling) - -2006-08-24 Frode Lindeijer <f.lindeijer@gmail.com> - - * data/graphics/sprites/item004.png, - data/graphics/sprites/item005.png, data/graphics/sprites/Makefile.am, - data/graphics/items/armor-legs-cottonshorts, - data/graphics/items/armor-legs-jeanshorts: Added the equip graphics of - the short jeans and the cotton shorts and an inventory icon of the - cotton shorts. Also added all added files to the makefile. - -2006-08-23 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_7-1.tmx.gz: Fixed a minor mapping bug reported on the - forum (no new walkmap required). - * data/maps/new_9-1.tmx.gz: Fixed two minor mapping bugs (new walkmap - required). - -2006-08-22 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * configure.ac, data/graphics/images/ambient, - data/graphics/images/ambient/Makefile.am, - data/graphics/images/Makefile.am: Updated makefiles to account for new - ambient images and changed the version from 0.0.20.1 to 0.0.21. - -2006-08-21 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, tmw.cbp: Updated project files. - -2006-08-21 Philipp Sehmisch <tmw@crushnet.org> - - * src/mapreader.cpp: Added logic for initialisation of the overlays. - * src/map.cpp, src/map.h: Code for updating and drawing the overlays. - * src/engine.cpp, src/engine.h: Added smooth scrolling and the call - to draw the overlays. - * data/maps/new_1-1.tmx.gz, data/graphics/new_7-1.tmx.gz, - data/graphics/images/ambient/sandstorm.png: Added sandstorm effect - to the desert maps outside of the city (feedback, please). - * data/maps/new_2-1.tmx.gz, data/maps/new_4-1.tmx.gz, - data/maps/new_5-1.tmx.gz, data/graphics/images/ambient/spotlight.png - Added spotlight effect to the cave maps (feedback, please) - * data/graphics/maps/new_9-1.tmx.gz, - data/graphics/images/ambient/clouds.png: - Added cloudshadow effect to the woodland map (feedback, please). - -2006-08-20 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * configure.ac: Moved libpng check before SDL_image check, since the - latter requires the former. - -2006-08-20 Yohann Ferreira <bertram@cegetel.net> - - * data/graphics/sprites/Makefile.am: Following the splitting from - Philipp, moved out the items.png file from the Makefile.am. - * debian/control, debian/tmw-data.install: Updated debian package - creation process. - * src/Makefile.am: Added iteminfo.cpp to avoid an undefined reference - with gcc 4.1.2. Happy to be back :) - -2006-08-17 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/items/*: Splitted the items.png into separate images - with more distinctive names. (no, i won't list all 114) - * src/itemmanager.cpp, data/items.xml: Replaced indices on the item - spriteset with filenames. added names and descriptions for all missing - items. Changed names and descriptions of some items. - * src/engine.cpp: Removed global item spriteset. - * src/floor_item.cpp, src/floor_item.h, src/iteminfo.cpp, - src/iteminfo.h, src/equipmentwindow.cpp, src/equipmentwindow.h, - src/itemcontainer.cpp, src/itemcontainer.h: The iteminfo class now - provides a pointer to the item icon image instead of providing the - index on the item spriteset. - * data/graphics/tiles/trans_desert-woodland.png: Added transmission - tileset between desert and woodland. - -2006-08-13 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/Makefile.am, - data/graphics/sprites/monster18.png, - data/graphics/sprites/monster18.xml, - data/graphics/sprites/npcs.png: Added new monster and npcs. - * src/gui.cpp, tmw.cbp, The Mana World.dev: Fixed Guichan 0.5.0 - compilation issues. - -2006-08-13 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/openglgraphics.cpp, src/game.cpp, src/main.cpp, - src/gui/buddywindow.cpp, src/gui/connection.cpp, src/gui/sell.cpp, - src/gui/trade.cpp, src/gui/char_server.cpp, src/gui/window.cpp, - src/gui/login.cpp, src/gui/skill.h, src/gui/gui.cpp, - src/gui/item_amount.h, src/gui/setup_audio.h, src/gui/newskill.cpp, - src/gui/register.h, src/gui/setup.cpp, src/gui/npclistdialog.h, - src/gui/updatewindow.cpp, src/gui/char_select.cpp, src/gui/login.h, - src/gui/item_amount.cpp, src/gui/setup_audio.cpp, - src/gui/npc_text.cpp, src/gui/chat.h, src/gui/setup_joystick.h, - src/gui/setup_video.cpp, src/gui/ok_dialog.cpp, src/gui/textfield.cpp, - src/gui/inventorywindow.h, src/gui/newskill.h, src/gui/box.h, - src/gui/ministatus.cpp, src/gui/buy.h, src/gui/setup.h, - src/gui/confirm_dialog.cpp, src/gui/debugwindow.cpp, src/gui/vbox.cpp, - src/gui/chat.cpp, src/gui/setup_joystick.cpp, src/gui/updatewindow.h, - src/gui/char_select.h, src/gui/buysell.h, src/gui/tabbedcontainer.cpp, - src/gui/inventorywindow.cpp, src/gui/help.cpp, src/gui/status.h, - src/gui/npc_text.h, src/gui/setup_video.h, src/gui/menuwindow.cpp, - src/gui/ok_dialog.h, src/gui/buy.cpp, src/gui/buddywindow.h, - src/gui/sell.h, src/gui/trade.h, src/gui/char_server.h, - src/gui/skill.cpp, src/gui/buysell.cpp, src/gui/confirm_dialog.h, - src/gui/debugwindow.h, src/gui/status.cpp, src/gui/register.cpp, - src/gui/scrollarea.cpp, src/gui/tabbedcontainer.h, - src/gui/npclistdialog.cpp, src/gui/help.h, src/net/tradehandler.cpp, - src/net/playerhandler.cpp, src/Makefile.am, - src/resources/sdlimageloader.cpp, src/resources/sdlimageloader.h, - src/resources/openglsdlimageloader.cpp, - src/resources/resourcemanager.cpp, - src/resources/openglsdlimageloader.h, src/resources/resourcemanager.h: - Updated TMW to be compatible with Guichan 0.5.0 (merged from - guichan-0.5.0 branch). - * INSTALL, docs/INSTALL/win32.txt: Updated required Guichan to version - 0.5.0. - * configure.ac: Moved some basic checks above the checks on the - libraries we depend on, in order to get rid of the confusing - rpl_realloc error. - * src/resources/openglsdlimageloader.cpp, src/player.cpp: Fixed - several compiler warnings and a linker error when compiling without - OpenGL support. - -2006-08-12 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_9-1.tmx.gz, data/maps/new_14-1.tmx.gz, - data/maps/new_15-1.tmx.gz, data/maps/new_16-1.tmx.gz: Fixed some - inaccessible areas. - -2006-08-07 Philipp Sehmisch <tmw@crushnet.org> - * data/maps/new_9-1.tmx.gz, data/maps/new_14-1.tmx.gz, - data/maps/new_15-1.tmx.gz, data/maps/new_16-1.tmx.gz, - data/graphics/images/minimap_new_9-1.png, - data/graphics/images/minimap_new_14-1.png, - data/graphics/images/minimap_new_15-1.png, - data/graphics/images/minimap_new_16-1.png: Added minimaps for woodland - maps. - -2006-08-07 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_1-1.tmx.gz, data/maps/new_14-1.tmx.gz, - data/maps/new_15-1.tmx.gz, data/maps/new_16-1.tmx.gz: - Added a new woodland map and a connection map between desert and - woodland. - * data/graphics/woodland_ground.png: Added some new rocks. - -2006-08-07 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp, src/gui/chat.h, src/gui/chat.cpp, src/main.cpp: A - bunch of cleanups. - -2006-08-05 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/configuration.cpp, src/game.cpp, src/engine.cpp, src/player.cpp, - src/being.cpp, src/resources/mapreader.cpp, - src/resources/itemmanager.cpp: Some cleanups, mostly lowering - indentation. - * src/being.cpp: Small code cleanup. - -2006-08-04 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/animatedsprite.cpp: Fix enum being treated as string. - * src/animation.cpp: Small code cleanups. Removed unused headers. - * src/animatedsprite.cpp: Small code cleanup/lower indentation. - -2006-08-04 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/animatedsprite.cpp: Fixed presence of NULL actions. This is - doener's version of the fix, because it was more efficient in the more - common case. - -2006-08-04 Frode Lindeijer <f.lindeijer@gmail.com> - - * data/graphics/tiles/desert_x3.png: Replaced the old cactus with - a nice new high-res one. - -2006-08-03 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/player.cpp, src/being.cpp, src/being.h: Removed three - setDirection(mDirection) calls by instead specifically setting the - current direction on the newly added animated sprite. The same might - be done for the action later. - * src/animatedsprite.h, src/animatedsprite.cpp: Since this class isn't - subclassed and has no virtual functions, make protected members - private. Also added a start of a reset function which could be a - solution to unsynchronized animated sprites. - * src/net/network.cpp: Fixed two delete/delete[] errors. - -2006-08-01 Philipp Sehmisch <tmw@crushnet.org> - - * src/animation.h, src/animation.cpp, src/animatedsprite.h, - src/animatedsprite.cpp, src/being.cpp: Animations and directions - are now passed and stored as enums and no longer as strings. - -2006-07-30 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/animatedsprite.h, src/animatedsprite.cpp: Unified the play - methods. - -2006-07-30 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_5-1.tmx.gz: Fixed two minor mapping errors (no new - walkmap required). - -2006-07-29 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/animatedsprite.h, src/animatedsprite.cpp, src/animation.cpp: A - bunch of cleanups. - * src/animation.h, src/animatedsprite.cpp: Moved included from header - to source file. - -2006-07-28 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/npc.cpp, src/player.cpp, src/animatedsprite.h, src/animation.h, - src/being.cpp, src/main.cpp, src/monster.cpp, src/animatedsprite.cpp, - src/animation.cpp, src/Makefile.am, src/being.h: Moved AnimatedSprite - into its own files, removed useless includes. - * src/engine.cpp: Removed an unused var. - -2006-07-26 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/Makefile.am, data/graphics/tiles/Makefile.am, - data/maps/Makefile.am, data/maps/new_13-1.tmx.gz: Added map with - inside of snow village buildings and fixed makefiles. - * src/being.cpp, src/being.h, src/player.cpp: Fixed direction and - action issues when changing appeareance, frames are still out of sync. - * data/maps/Makefile.am, data/maps/new_14-1.tmx.gz, - data/maps/new_9-1.tmx.gz: Added new woodland map by Crush and fixed - connection with the old one. - -2006-07-26 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/maps/new_4-1.tmx.gz: Fixes to the collision layer. - -2006-07-26 Frode Lindeijer <f.lindeijer@gmail.com> - - * data/graphics/tiles/snowset.png, data/graphics/tiles/snow_x2.png, - data/graphics/tiles/snow_x3.png: Moved the lamppost, the rock and the - bench to seperate tall tilebitmaps. - * data/maps/new_11-1.tmx.gz: Improved the snow village map, main - changes are that the player can now walk better behind houses, - lampposts, rocks and benches. - * data/graphics/sprites/item003.png, data/graphics/sprites/item003.xml: - Added the leather shirt - -2006-07-25 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/log.cpp, src/log.h: Added support for writing log to standard - output. - * src/gui/updatewindow.cpp: Fixed updating on Windows. - -2006-07-24 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/main.cpp: Fixed the loading of updates and made skipping the - update process also skip the loading of updates. - -2006-07-24 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/localplayer.cpp, src/being.cpp: Fixed setDirection() semantics. - Removed a printf-leftover. - -2006-07-24 Frode Lindeijer <f.lindeijer@gmail.com> - - * data/graphics/sprites/npcs.png: Added the organdealer to the NPCs. - * data/graphics/sprites/player_male_base.png, - data/graphics/sprites/player_female_base.png: Fixed some transparency - issues. - -2006-07-24 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/being.cpp, src/being.h, src/localplayer, The Mana World.dev, - tmw.cbp: Removed unused code, fixed "change direction when not - walking" bug, updated project files. - * data/graphics/sprites/monster1.xml: Slowed down scorpions. - * data/graphics/sprites/monster2.xml: Red scorpions have got the same - problem. - * data/graphics/sprites/player_female_base.xml: Fixed female playerset - animation definition. - * data/help/about.txt, data/help/changes.txt, data/help/commands.txt, - data/help/header.txt, data/help/index.txt, data/help/skills.txt, - data/help/support.txt, data/help/team.txt: Forced to use UNIX end of - line character. - * src/net/equipmenthandler.cpp: Equipments now use real slot - positions. - -2006-07-24 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/floor_item.cpp, src/animation.h, src/being.cpp, src/main.cpp, - src/gui/equipmentwindow.cpp, src/gui/playerbox.cpp, - src/gui/itemcontainer.cpp, src/engine.cpp, src/tileset.h, - src/animation.cpp, src/Makefile.am, src/resources/mapreader.cpp, - src/resources/resourcemanager.cpp, src/resources/spriteset.cpp, - src/resources/resourcemanager.h, src/resources/spriteset.h, - src/being.h, src/graphic/spriteset.cpp, src/graphic/spriteset.h, - data/graphics/sprites/npc.xml, data/graphics/sprites/weapons.xml: - Implemented caching of spritesets, including a lot of cleanups to the - new animation system. Action now refers to the Spriteset directly and - AnimatedSprite refers to the current Action directly instead of using - the std::map with a std::string constantly. Some methods and - parameters are marked as const. The READ_PROP macro was replaced by - static methods. Warnings are logged when unnamed actions are defined - or when actions refer to undefined imagesets. Code is more tolerant - towards missing actions. - * NEWS: Rearranged some items. - -2006-07-21 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/animation.cpp, src/animation.h: Removed unused code, fixed a - numeric conversion, used a more meaningful speed. - -2006-07-20 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/help/header.txt, data/help/skills.txt, docs/FAQ.txt, README: - Updated some docs for the 0.0.20 release. - * NEWS: Added new features of 0.0.20. - * data/items.xml: Added shorts. - * src/tmw.rc, The Mana World.dev, tmw.cbp: Added a resource script to - let both Dev-Cpp and Code::Blocks share the same binary icon and - version infos. - * data/graphics/sprites/player_female_base.xml, - data/graphics/sprites/player_male_base.xml, src/animation.cpp, - src/animation.h, src/being.cpp: Fixed left bow attack animation, - made the attack animation stay in sync with attack speed. - -2006-07-19 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/minimap.cpp: Fixed dot size of local player. - * src/engine.cpp: Fixed color of "[TARGET]". - * src/resources/mapreader.cpp, src/resources/mapreader.h, - data/maps/new_12-1.tmx.gz, data/maps/new_3-1.tmx.gz, - data/maps/new_4-1.tmx.gz, data/maps/new_5-1.tmx.gz, - data/maps/new_6-1.tmx.gz, data/maps/new_7-1.tmx.gz, - data/maps/new_8-1.tmx.gz, data/maps/new_9-1.tmx.gz, - data/maps/new_1-1.tmx.gz, data/maps/new_10-1.tmx.gz, - data/maps/new_11-1.tmx.gz, data/maps/new_2-1.tmx.gz: Implemented - loading for the way Tiled saves properties since version 0.6.0 and - updated all current maps. - -2006-07-19 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/item001.png, data/graphics/sprites/item001.xml, - data/graphics/sprites/item002.png, data/graphics/sprites/item002.xml, - data/graphics/sprites/item1202.png, data/graphics/sprites/Makefile.am, - docs/INSTALL/win32.txt, src/animation.cpp, src/being.cpp, src/being.h, - src/gui/equipmentwindow.cpp, src/gui/newskill.cpp, src/main.cpp, - src/net/beinghandler.cpp, src/net/charserverhandler.cpp, - src/player.cpp, src/player.h: Merged trunk changes r2381:2397 into - new_animation branch. - * tmw.cbp: Updated Code::Blocks project file. - * src/gui/char_select.cpp: Fixed next/previous buttons behaviour in - character selection dialog. - * data/graphics/sprites/Makefile.am: Alphabetically correct. - -2006-07-19 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * tmw.cbp: Added Code::Blocks project file. - -2006-07-18 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/updatewindow.cpp, src/gui/updatewindow.h, src/main.cpp, - src/resources/resourcemanager.cpp, src/resources/resourcemanager.h: - Updated the updating system. It will now only load those updates - specified in the downloaded resources.txt file, and in the order - in which they are mentioned (the top one being the most - significant). - -2006-07-17 Frode Lindeijer <f.lindeijer@gmail.com> - - * data/graphics/sprites/items.png: Added shorts' icon to items.png - -2006-07-12 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/newskill.cpp: Fixed up a string comparison that caused a - warning with GCC 4.2. - -2006-07-12 Frode Lindeijer <f.lindeijer@gmail.com> - - * data/graphics/sprites/item001.png: Completed the cotton shirt - equipment graphic. - -2006-07-06 Philipp Sehmisch <tmw@crushnet.org> - - * src/animation.cpp, src/animation.h, src/being.cpp, src/being.h, - src/monster.cpp, src/npc.cpp, src/player.cpp: - Fixed some minor bugs, cleaned up general code style and added more - comments. - -2006-07-05 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/monster.cpp, src/npc.cpp, src/player.cpp: Fixed broken paths. - * data/graphics/sprites/Makefile.am: Added new files. - * src/animation.cpp: Added missing return value... - * src/Makefile.am: Added new files. - -2006-07-05 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/sprites/monster0.xml: Fixed frame size of maggot. - * src/being.h: drawName should be virtual, lest we want names to be - drawn. - -2006-07-03 Philipp Sehmisch <tmw@crushnet.org> - - * src/spriteset.cpp, src/spriteset.h: Spriteset::get() doesn't crash - anymore when requesting a sprite outside of the spriteset. (it returns - NULL instead and logs a warning). - -2006-07-03 Philipp Sehmisch <tmw@crushnet.org> - - * src/being.cpp: Fixed a compiler issue reported by Pajarico. - -2006-07-03 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * tools/Reorganize.java: Added tool used for reorganizing and - auto-cropping the monster spritesets. - -2006-07-03 Philipp Sehmisch <tmw@crushnet.org> - - * src/main.cpp, src/engine.cpp: Removed some no longer required old - style spritesets. - * src/being.h, src/being.cpp: Removed some no longer needed member - variables. - * src/monster.cpp: Monsters are now drawed with the new animation - system. - * src/npc.cpp, data/graphics/sprites/npcs.xml: NPCs are now drawed - with the new animation system. - * src/being.h, src/being.cpp, src/npc.cpp, src/npc.h, src/monster.cpp, - src/monster.h: Moved all drawing code from the Being based classes - into Being. - * data/graphics/sprites/monster*.png: Resized and reorganized the - monster spritesets to fit the new animation system (thanks, Bjørn). - * data/graphics/sprites/monster*.xml: Added animation files for all - monsters. - * src/animation.cpp: The offset values of the Frames of animated - sprites are now modified so every frame is drawn centered. - * data/graphics/sprites/hairstyle*.xml: Retuned the offsets of the - hair sprites. - * src/animation.cpp: Small stability fix. - * src/being.cpp, src/being.h: weapon animation now uses the new - animation system. - * data/graphics/sprites/player_male_base.xml - data/graphics/sprites/player_female_base.xml - data/graphics/sprites/hairstyle*.xml: Tuned walk speed and added bow - animations. - -2006-07-03 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/being.cpp: Removed an unnecessary parameter. - -2006-07-03 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/sprites/Makefile.am: Updated to new xml files. - -2006-07-02 Philipp Sehmisch <tmw@crushnet.org> - - * src/localplayer.cpp: Fixed the "walking against walls" bug. - * src/animation.cpp src/animation.h: fixed the "sliding" bug and - removed some unused variables. - -2006-07-01 Philipp Sehmisch <tmw@crushnet.org> - - * src/being.cpp, src/being.h, src/player.cpp, src/player.h, - src/localplayer.cpp: Sprites are now stored in a vector instead of a - list, so they can be replaced a lot easier; added female playerset; - added hairstyles and colors. - * src/animation.cpp, src/animation.h: added support for variations, - variations are animations stored in the same spriteset with the same - layout and sequence but starting at another index. - * data/graphics/sprites/player_female_base.xml: Added xml file for - female characters. - * data/graphics/sprites/hairstyle0.xml, - data/graphics/sprites/hairstyle1.xml, - data/graphics/sprites/hairstyle2.xml, - data/graphics/sprites/hairstyle3.xml, - data/graphics/sprites/hairstyle4.xml, - data/graphics/sprites/hairstyle5.xml, - data/graphics/sprites/hairstyle6.xml, - data/graphics/sprites/hairstyle7.xml: Added xml files for all - hairstyles (these xml files are using the new variation feature). - * src/being.cpp, src/being.h, src/localplayer.cpp, src/player.cpp: The - beings now haven't got one, but a list of animated sprites (named - mSprites). At the moment it contains the hair and the base sprite. - * src/animation.cpp, src/animation,h: Fixed a crash when substituting - an undefined direction; renamed completeDirections method to - substituteAction. - * data/graphics/sprites/hairstyle0.xml: Made a xml file for the hair - animation. - -2006-06-29 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/items.xml, src/being.cpp, src/being.h src/net/beinghandler.cpp, - src/player.cpp: Clients get notified of equipping visible items. - * src/net/beinghandler.cpp: GCC 4 fix. - -2006-06-28 Philipp Sehmisch <tmw@crushnet.org> - - * src/animation.cpp, src/animation.h: Parser now works like described - on the wiki; the single animation phases are now stored in structures; - drawing call for animatiedSprites moved into the animatiedSprite - class. - * src/being.cpp, src/being.h, src/localplayer.cpp, src/player.cpp: - Renamed mAnimatedSprite to mBaseSprite to distinct it from hair-equip - and other sprites that will also be part of the class. - * src/player.cpp: Drawing call for animatiedSprites moved into the - animatiedSprite class; time now correctly passed in ms to the - animatedSprite class. - * src/graphic/spriteset.cpp, src/graphic/spriteset.h: Width and height - of the subimages is now saved in the spritesheet class. - * src/graphics.cpp: Added an additional check to avoid crashes when - passing a NULL pointer as image argument. - * data/graphics/sprites/player_male_base.xml: Animation file now has - the syntax described on the wiki. - -2006-06-27 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/Makefile.am, - data/graphics/sprites/player_male_base.xml, src/being.cpp, - src/being.h, src/engine.cpp, src/localplayer.cpp, src/main.cpp, - src/net/beinghandler.cpp, src/net/playerhandler.cpp, - src/resources/itemmanager.cpp, The Mana World.dev: Added a beginning - of a new animation system to slow down player walking. - * src/animation.cpp, src/animation.h: Forgot 2 files. - * src/being.cpp, src/gui/equipmentwindow.cpp, src/player.cpp: - Equipment window now show all the slots, and adapted visible shirts to - head (middle) equipments. - -2006-06-27 Frode Lindeijer <f.lindeijer@gmail.com> - - * /tmw/trunk/data/graphics/sprites/player_male_base.png: - Fixed transparency issue with the north punching frames - -2006-06-26 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/net/messagein.cpp: Fixed the readString method (synchronized - with the server version by Guillaume Melquiond). - -2006-06-21 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/Makefile.am, - data/graphics/sprites/monster11.png, - data/graphics/sprites/monster17.png: Fixed attack animation of monster - 11 and added a new monster. - * data/graphics/sprites/Makefile.am, - data/graphics/sprites/player_female_base.png, src/being.cpp, - src/being.h, src/gui/char_select.cpp, src/gui/char_select.h, - src/gui/playerbox.cpp, src/gui/playerbox.h, src/gui/register.cpp, - src/main.cpp, src/net/beinghandler.cpp, src/net/charserverhandler.cpp, - src/player.cpp: Added female players. - -2006-06-19 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/sprites/monster16.png: added the little pink monster - -2006-05-22 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/tiles/icecave.png, data/graphics/tiles/Makefile.am, - data/maps/Makefile.am, data/maps/new_10-1.tmx.gz, - data/maps/new_11-1.tmx.gz, data/maps/new_4-1.tmx.gz, - data/maps/new_5-1.tmx.gz, src/resources/itemmanager.cpp: A bunch of - updates to the world and disabled art and type xml parser checks since - they're not used. - -2006-05-21 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev: Updated dev-cpp project file. - -2006-05-17 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/npcs.png, data/graphics/tiles/Makefile.am, - data/graphics/snow_building.png, data/graphics/tiles/snowset.png, - data/maps/Makefile.am, data/maps/new_11-1.tmx.gz: New NPCs, new snow - tiles and village. - -2006-05-15 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/item_amount.cpp: Set slider range to the real values instead - of mapping the amount between [0,1] and [1,max] all the time. - -2006-05-13 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/openglgraphics.cpp: Set color back to current color instead of - setting it to white. Fixes white rectangles in equipment window. - * src/being.cpp, src/being.h, src/player.cpp: Specify the color in - which speech and names are supposed to be drawn. Removed unused - mSpeechColor member. - -2006-05-12 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/being.cpp: Fixed initialization order in Being ctor. - -2006-05-12 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/item1202.png, - data/graphics/sprites/Makefile.am, src/being.cpp, src/being.h, - src/localplayer.cpp, src/localplayer.h, src/main.cpp, src/player.cpp, - The Mana World: You can now see the shirt when equipping a top - equipment. - -2006-05-05 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/gui/setup_video.cpp: Fixed some numeric conversions. - -2006-05-03 Eugenio Favalli <elvenprogrammer@gmail.com> - - * configure.ac, src/game.cpp, src/graphics.cpp, src/main.cpp, - src/openglgraphics.cpp, The Mana World: Increased fps limit - granularity and cleaned some code, fixed some xml library name in - Dev-C++ project file, switched version to 0.0.20. - * src/game.cpp, src/gui/setup.cpp, src/gui/setup_video.cpp, - src/gui/setup_video.h, src/main.cpp: FPS limit can now be set in setup - dialog. Default value for FPS is 50. (Code based on peoro's patch). - -2006-05-02 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/localplayer.cpp: Fixed the delay last move bug. - -2006-04-29 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/tiles/cave.png: Added tiles by yosuhara. - -2006-04-28 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/Woodland_ground.png: Graphical update of the - woodland tileset. Paths improved, and tiles that were redunant - replaced by new dirt tiles. - * data/maps/new_9.1.tmx.gz: Modified because of changes in the tileset - layout (no new server sided walkmap required). - * data/graphics/sprites/monster11.png: Improved the shading of the - mushroom monster. - * data/graphics/sprites/monster15.png: Added dropshadow to the bat - monster (note that the version 0.0.19 live update overrides the - changed file). - -2006-04-04 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * ChangeLog: Converted to UTF-8. - * NEWS: Spelling correction. - * docs/INSTALL/debian.txt, docs/INSTALL/win32.txt: Updated with - respect to the move from CVS to Subversion. - -2006-03-25 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/gui/window.cpp: Added window resize patch by peoro. - -2006-03-21 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev: Updated project. - -2006-03-20 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/engine.cpp: Fixed a crash on map change. - -2006-03-20 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/gui/char_select.cpp: Fixed an include. - -2006-03-19 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/register.h, src/gui/register.cpp: Fixed a memory leak and - removed some whitespace noise. - * src/lockedarray.h, src/game.cpp, src/gui/gui.cpp, - src/gui/browserbox.cpp, src/gui/register.cpp, - src/resources/resourcemanager.cpp: Removed some useless null pointer - checks. - * src/gui/login.cpp, src/gui/setup_audio.h, src/gui/setup.cpp, - src/gui/setup_audio.cpp, src/gui/setup_video.cpp, - src/gui/setup_video.h: Removed some duplicated initializations. - * src/gui/setup_audio.h, src/gui/setup.cpp, src/gui/setup_audio.cpp, - src/gui/setup_joystick.h, src/gui/setup_video.cpp, src/gui/setuptab.h, - src/gui/setup.h, src/gui/setup_joystick.cpp, src/gui/setup_video.h, - src/Makefile.am: Splitted setup window into manageable pieces - according to their tabs in the window. Fixed some memory leaks along - the way. Also fixed two settings not being stored on "apply". - -2006-03-18 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/chat.cpp, src/gui/menuwindow.cpp, src/gui/skill.cpp, - src/gui/status.cpp: Use the window container instead of the graphics - class to calculate window positions. - * src/utils/dtor.h: Fixed indentation. - * src/configuration.cpp, src/log.cpp, src/main.cpp, src/being.cpp, - src/monster.cpp, src/gui/equipmentwindow.cpp, src/gui/sell.cpp, - src/gui/trade.cpp, src/gui/char_server.cpp, src/gui/setup.cpp, - src/gui/updatewindow.cpp, src/gui/char_select.cpp, - src/gui/ministatus.cpp, src/gui/debugwindow.cpp, - src/gui/tabbedcontainer.cpp, src/gui/inventorywindow.cpp, - src/gui/buy.cpp, src/gui/itemcontainer.cpp, src/gui/inttextbox.cpp, - src/gui/debugwindow.h, src/gui/status.cpp, src/gui/register.cpp, - src/net/chathandler.cpp, src/engine.cpp, src/utils/tostring.h, - src/Makefile.am: Added a toString conversion function. - -2006-03-15 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/engine.h, src/main.cpp, src/gui/equipmentwindow.cpp, - src/gui/window.cpp, src/gui/login.cpp, src/gui/listbox.h, - src/gui/chat.h, src/gui/ministatus.cpp, src/gui/chat.cpp, - src/gui/help.cpp, src/gui/itemcontainer.cpp, src/gui/listbox.cpp, - src/gui/checkbox.cpp, src/engine.cpp, src/resources/image.cpp: A bunch - of cosmetic changes. - * src/net/network.cpp: Fixed connection not being shut down completely - in case of an error. - -2006-03-13 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/main.cpp: Fixed skip update option. - -2006-03-13 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_7.1.tmx.gz: Fixed some map bugs (update of server - sided walkmap required!) - -2006-03-11 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/hairstyle1.png, - data/graphics/sprites/hairstyle2.png, - data/graphics/sprites/hairstyle3.png, - data/graphics/sprites/hairstyle4.png, - data/graphics/sprites/hairstyle6.png, - data/graphics/sprites/hairstyle7.png, - data/graphics/sprites/Makefile.am: Fixed some hair positions, added a - new style, updated makefile. - -2006-03-09 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/utils/dtor.h: Added guards. - * src/game.cpp, src/main.cpp, src/gui/connection.cpp, - src/gui/menuwindow.cpp, src/net/tradehandler.cpp, - src/net/playerhandler.cpp: Made all local action listeners structs and - moved them into anonymous namespaces. - * src/gui/connection.cpp, src/gui/newskill.cpp, - src/gui/chargedialog.cpp, src/gui/updatewindow.cpp, - src/gui/progressbar.h, src/gui/ministatus.cpp, - src/gui/progressbar.cpp, src/gui/status.cpp: Removed coordinate - arguments from ProgressBar ctor. - * src/openglgraphics.cpp, src/localplayer.cpp, src/game.cpp, - src/map.cpp, src/log.cpp, src/being.cpp, src/monster.cpp, src/sound.h, - src/graphics.cpp, src/gui/equipmentwindow.cpp, src/gui/sell.cpp, - src/gui/trade.cpp, src/gui/char_server.cpp, src/gui/window.cpp, - src/gui/login.cpp, src/gui/inttextbox.h, src/gui/chargedialog.h, - src/gui/focushandler.h, src/gui/skill.h, src/gui/gui.cpp, - src/gui/newskill.cpp, src/gui/register.h, src/gui/popupmenu.h, - src/gui/setup.cpp, src/gui/npclistdialog.h, src/gui/chargedialog.cpp, - src/gui/playerbox.h, src/gui/char_select.cpp, src/gui/login.h, - src/gui/focushandler.cpp, src/gui/chat.h, src/gui/inventorywindow.h, - src/gui/newskill.h, src/gui/ministatus.cpp, src/gui/buy.h, - src/gui/playerbox.cpp, src/gui/setup.h, src/gui/itemcontainer.h, - src/gui/debugwindow.cpp, src/gui/chat.cpp, src/gui/char_select.h, - src/gui/inventorywindow.cpp, src/gui/help.cpp, src/gui/status.h, - src/gui/buy.cpp, src/gui/itemcontainer.cpp, src/gui/equipmentwindow.h, - src/gui/sell.h, src/gui/trade.h, src/gui/ministatus.h, - src/gui/inttextbox.cpp, src/gui/char_server.h, src/gui/window.h, - src/gui/skill.cpp, src/gui/debugwindow.h, src/gui/status.cpp, - src/gui/register.cpp, src/gui/popupmenu.cpp, src/gui/minimap.cpp, - src/gui/npclistdialog.cpp, src/gui/help.h, src/net/buysellhandler.cpp, - src/net/beinghandler.cpp, src/net/charserverhandler.cpp, - src/net/maploginhandler.cpp, src/net/playerhandler.cpp, - src/engine.cpp, src/localplayer.h, src/beingmanager.cpp, src/map.h, - src/log.h, src/sound.cpp, src/resources/itemmanager.h, - src/resources/buddylist.cpp, src/resources/buddylist.h, - src/resources/image.cpp, src/resources/image.h, - src/resources/itemmanager.cpp, src/being.h, src/player.cpp: Made all - class members named like mClassMember. - * src/floor_item.cpp, src/map.cpp, src/being.cpp, - src/gui/equipmentwindow.cpp, src/gui/playerbox.cpp, - src/gui/itemcontainer.cpp, src/graphic/spriteset.cpp, - src/graphic/spriteset.h, src/player.cpp: Added Spriteset::get() and - Spriteset::size() to hide the member vector and remove the weird - mySpriteset->spriteset stuff. - * src/gui/buddywindow.cpp, src/gui/connection.cpp, src/gui/sell.cpp, - src/gui/trade.cpp, src/gui/char_server.cpp, src/gui/login.cpp, - src/gui/button.h, src/gui/newskill.cpp, src/gui/setup.cpp, - src/gui/updatewindow.cpp, src/gui/button.cpp, src/gui/char_select.cpp - ,src/gui/item_amount.cpp, src/gui/npc_text.cpp, src/gui/ok_dialog.cpp, - src/gui/confirm_dialog.cpp, src/gui/debugwindow.cpp, - src/gui/tabbedcontainer.cpp, src/gui/inventorywindow.cpp, - src/gui/help.cpp, src/gui/menuwindow.cpp, src/gui/buy.cpp, - src/gui/skill.cpp, src/gui/buysell.cpp, src/gui/status.cpp, - src/gui/register.cpp, src/gui/npclistdialog.cpp: Made the Button ctor - accept eventId and action listener. - * src/localplayer.cpp, src/game.cpp, src/gui/trade.cpp, - src/gui/inventorywindow.cpp, src/gui/trade.h, src/localplayer.h, - src/game.h: Use std::auto_ptr in some places. - * src/lockedarray.h: Use fill_n instead of for-loop. - * src/gui/browserbox.cpp: Make the MouseOverLink functor dynamic and - use a STL algorithm in one more place. - -2006-03-08 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/browserbox.h, src/gui/menuwindow.cpp, src/gui/buysell.cpp: - Some fixes for compiling with pedantic compiler settings and const - char* checks. - * data/graphics/sprites/player_male_base.png: Use two rows for each - direction in order to make the texture less wide so that it stays - within the 1024 texture limit for OpenGL mode. - -2006-03-08 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/map.cpp, src/main.cpp, src/gui/button.cpp, - src/gui/textfield.cpp, src/gui/playerbox.cpp, - src/gui/windowcontainer.cpp, src/gui/skill.cpp, - src/gui/scrollarea.cpp, src/engine.cpp, src/beingmanager.cpp, - src/utils, src/utils/dtor.h, src/Makefile.am, - src/flooritemmanager.cpp, src/graphic/spriteset.cpp: Added a 'dtor' - helper functor to delete objects in arrays and containers using STL - algorithms. - * src/resources/image.cpp: Removed some conditional code. - * src/localplayer.cpp, src/gui/gui.cpp: Reverted changes from r2225, - it broke walking code as I missed the differences between tile and - being collisions. - * src/gui/itemcontainer.cpp, src/inventory.cpp: Made Inventory use STL - algorithms and fixed getLastUsedSlot semantics. - * src/engine.cpp, src/engine.h: Moved a variable definition into the - right place and made getCurrentMap inline. - * src/equipment.cpp, src/equipment.h: Use STL algorithms and make - destructor inline. - * src/localplayer.cpp, src/gui/gui.cpp: Let the LocalPlayer decide - whether it can walk to a destination. - -2006-03-07 Yohann Ferreira <bertram@cegetel.net> - - * debian/rules, debian/changelog, ChangeLog: Updating Debian files for - 0.0.19 release. - -2006-03-07 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/tiles/Makefile.am, data/graphics/tiles/Woodland.png: - Removed unused tileset. - -2006-03-06 Björn Steinbrink <B.Steinbrink@gmx.de> - - * configure.ac: Version changed to 0.0.19. - -2006-03-06 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_9.1.tmx.gz: Fixed some mapping bugs. - -2006-03-06 Eugenio Favalli <elvenprogrammer@gmail.com> - - * AUTHORS, NEWS, README, data/help/changes.txt, data/help/header.txt, - data/help/team.txt: A bunch of updates to docs, ready for 0.0.19. - * data/help/changes.txt, src/main.cpp: Small fixes before releasing. - -2006-03-05 Björn Steinbrink <B.Steinbrink@gmx.de> - - * data/graphics/sprites/Makefile.am: Remove trailing whitespace. - * src/engine.cpp: Re-add main.h header, Windows build needs it. - -2006-03-05 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/player_male_base.png: Added pants. - -2006-03-02 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/weapon1.png: Added missing frames. - * src/player.cpp: Fixed north shooting hair position. - * data/graphics/sprites/Makefile.am: Added new graphics. - * data/graphics/sprites/monster15.png: Added bat monster. - -2006-03-01 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev: Enabled -Wall switch. - * data/graphics/sprites/monster9.png: Fixed fire goblin north walking - animation. - * data/graphics/sprites/hairstyle1.png, - data/graphics/sprites/hairstyle2.png, - data/graphics/sprites/hairstyle3.png, - data/graphics/sprites/hairstyle4.png, - data/graphics/sprites/hairstyle5.png, - data/graphics/sprites/hairstyle6.png, - data/graphics/sprites/player_male_base.png, - data/graphics/sprites/weapon0.png, - data/graphics/sprites/weapon1.png: New graphics for hair styles, - player and weapons. - * src/being.cpp, src/being.h, src/engine.cpp, src/gui/playerbox.cpp, - src/localplayer.cpp, src/main.cpp, beinghandler.cpp, player.cpp, - src/resources/image.cpp: Hacked code to support the new playerset. - -2006-02-25 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/beingmanager.cpp, src/beingmanager.h, src/engine.cpp, - src/main.h, src/sound.h: Added a logic method to the being manager. - -2006-02-24 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/being.cpp, src/being.h, src/configuration.cpp, - src/configuration.h, src/engine.cpp, src/map.cpp, src/map.h, - src/properties.h, src/gui/browserbox.cpp, src/gui/browserbox.h, - src/gui/chat.cpp, src/gui/chat.h, src/gui/gccontainer.cpp, - src/gui/gccontainer.h, src/gui/minimap.cpp, - src/gui/tabbedcontainer.cpp, src/gui/tabbedcontainer.h, - src/net/network.cpp, src/net/network.h, src/resources/itemmanager.cpp, - src/resources/itemmanager.h: Another bunch of cosmetic cleanups, i.e. - mostly typedefs... - -2006-02-23 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/being.cpp, src/being.h, src/beingmanager.cpp, - src/beingmanager.h, src/engine.cpp, src/inventory.cpp, - src/inventory.h, src/logindata.h, src/main.cpp, src/main.h, - src/openglgraphics.cpp, src/gui/equipmentwindow.h, - src/gui/minimap.cpp, src/gui/minimap.h, src/gui/windowcontainer.cpp, - src/gui/windowcontainer.h, src/net/loginhandler.cpp: A bunch of mostly - cosmetic cleanups. - -2006-02-23 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_4.1.tmx.gz: I remapped the hermits cave. It looks much - more natural now. A new server sided walkmap is required. - -2006-02-22 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/cave.png: fixed two almost invisible pixel - errors - -2006-02-21 Philipp Sehmisch <tmw@crushnet.org> - - * data/maps/new_9.1.tmx.gz: fixed another map bug. - -2006-02-05 Yohann Ferreira <bertram@cegetel.net> - - * src/resources/itemmanager.cpp: Added warnings when parameters are - missing in the items xml file. - -2006-02-16 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/browserbox.cpp, src/gui/browserbox.h, src/gui/gui.cpp: Use - Widget::mFont instead of browerFont for drawing, fixes the "gui - needs to be valid real early" issue. - -2006-02-07 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/being.cpp, src/being.h, src/game.cpp, src/localplayer.cpp, - src/localplayer.h, src/monster.cpp, src/player.cpp, - src/net/messagein.cpp, src/net/protocol.cpp: Made the being directions - being stored in a bitfield. - -2006-02-06 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/Woodland_ground.png, - data/graphics/tiles/Woodland_x2.png, data/maps/new_9.1.tmx.gz: added - dynamic grass that covers the lower area of sprites (doesn't work for - flower beds yet). - -2006-02-06 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, src/net/tradehandler.cpp: Updated Dev-Cpp project - file, fixed a gcc 3.4 issue. - * src/net/tradehandler.cpp: Undone last changes because Bertram - already fixed the compiler issue. - -2006-02-06 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/Makefile.am, src/game.cpp, src/joystick.cpp, src/joystick.h, - src/gui/setup.cpp, src/gui/setup.h: Added a Joystick class. - * src/being.cpp, src/being.h, src/monster.cpp, src/npc.cpp: Unify some - of the drawing code for beings. - * src/being.cpp, src/being.h, src/localplayer.h, src/player.cpp, - src/player.h: Use virtual methods instead of getType() checks. - * data/graphics/gui/browserfont.png, - data/graphics/gui/fixedfont.png, data/graphics/gui/rpgfont_wider.png, - data/graphics/gui/sansserif8.png, src/Makefile.am, src/engine.cpp, - src/floor_item.cpp, src/floor_item.h, src/flooritemmanager.cpp, - src/flooritemmanager.h, src/game.cpp, src/gui/gui.cpp, - src/net/itemhandler.cpp: Introduced a FloorItemManager class. - -2006-02-05 Yohann Ferreira <bertram@cegetel.net> - - * data/graphics/gui/rpgfont_wider.png, - data/graphics/gui/fixedfont.png,data/graphics/gui/browserfont.png, - data/graphics/gui/sansserif8.png: Adding è accents mostly to the font - images. - * src/engine.cpp, src/being.h, src/being.cpp, src/player.cpp, - src/gui/char_select.h, src/gui/char_select.cpp: Made the nickname and - emotions displayed above every layers. Made the delete and ok buttons - be disabled once the character is selected at login. - * src/net/tradehandler.cpp, src/resources/itemmanager.cpp: Fixed a gcc - 4.0 issue in the tradehandler. Strengthen the xml parser in the - itemmanager so tmw doesn't crash anymore if an item lacks some - parameters. - -2006-02-05 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * INSTALL: Updated dependencies in response to patch by Hanno Braun. - -2006-02-05 Björn Steinbrink <B.Steinbrink@gmx.de> - - * data/graphics/tiles/Makefile.am: Added the new tilesets. - * src/localplayer.cpp, src/localplayer.h, src/gui/gui.cpp: Made the - player walk to items prior to picking them up. - -2006-02-04 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/Woodland.png: new path design - * data/graphics/tiles/Woodland_ground.png, - data/graphics/tiles/Woodland_x2.png, - data/graphics/tiles/Woodland_x3.png: splitted the tileset into three - tilesets with different tile sizes - (i kept the original tileset for backward compatiblity) - * data/maps/new_9.1.tmx.gz: remapped with the oversized tile - technology. made the forests less regular. made the unwalkable map - borders more visual appealing - -2006-02-04 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/localplayer.h, src/logindata.h, src/main.cpp, src/main.h, - src/gui/char_select.cpp, src/gui/char_server.cpp, - src/gui/char_server.h, src/net/charserverhandler.cpp, - src/net/charserverhandler.h, src/net/loginhandler.cpp, - src/net/loginhandler.h, src/net/network.cpp, src/net/network.h: Unify - the gui code for the various logins to use LoginData. - -2006-02-03 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/logindata.h, src/main.cpp, src/gui/login.cpp, src/gui/login.h: - Made the login dialog work on LoginData only, without playing with the - config, it's not its job to do so. - * src/net/protocol.cpp, src/net/protocol.h: Removed some unused code. - -2006-02-02 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/desert1.png, data/graphics/tiles/desert2.png, - data/graphics/tiles/desert_x2.png, data/graphics/tiles/desert_x3.png: - Replaced the old sand tile with Irucards new one. Added new crates. - Made some minor corrections. - -2006-02-01 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp, src/game.h, src/main.cpp: Created a Game class. - * src/gui/passwordfield.cpp: Removed duplicated code. - * src/Makefile.am, src/main.cpp, src/gui/error.cpp, src/gui/error.h: - Replaced ErrorDialog by OkDialog + listener. - * src/Makefile.am, src/game.cpp, src/gui/buysell.cpp, - src/gui/char_select.cpp, src/gui/confirm_dialog.cpp, - src/gui/confirm_dialog.h, src/gui/login.cpp, src/gui/login.h, - src/gui/menuwindow.cpp, src/gui/ok_dialog.cpp, src/gui/ok_dialog.h, - src/gui/register.cpp, src/gui/requesttrade.cpp, - src/gui/requesttrade.h, src/gui/setup.cpp, src/net/playerhandler.cpp, - src/net/tradehandler.cpp: Made the OkDialog and ConfirmDialog classes - proxies for their buttons' events. Removed the RequestTradeWindow - class, replaced with a plain ConfirmDialog. Fixed a memory leak along - the way. - - * src/gui/buysell.cpp, src/gui/menuwindow.cpp: Simplified button - creation code. - * src/gui/npc_text.cpp: Fixed a bug where the game crashes if there's a - message dialog from a npc that no longer exists. - * src/properties.h: Reverted properties to private. - -2006-01-31 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/setup.cpp: Cleanup. - * src/gui/requesttrade.cpp, src/gui/requesttrade.h: Made - RequestTradeDialog inherit from ConfirmDialog. - * src/Makefile.am, src/gui/buy.cpp, src/gui/buy.h, src/gui/sell.cpp, - src/gui/sell.h, src/gui/shop.cpp, src/gui/shop.h: Created a ListModel - for ShopItems. - * src/floor_item.cpp, src/graphics.h, src/map.cpp, src/map.h, - src/properties.h, src/sprite.h, src/gui/login.cpp, - src/gui/scrollarea.cpp, src/gui/windowcontainer.cpp, - src/resources/sdlimageloader.cpp: Various small cleanups. - * src/resources/resource.cpp, src/resources/resourcemanager.cpp, - src/resources/resource.h, src/resources/resourcemanager.h: Made - ResourceManager a friend of Resource to avoid looping over decRef, - which returns void now. - -2006-01-30 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/char_select.cpp, src/gui/confirm_dialog.cpp, - src/gui/confirm_dialog.h, src/gui/error.cpp, src/gui/error.h, - src/gui/ministatus.cpp, src/gui/ok_dialog.cpp, src/gui/ok_dialog.h, - src/gui/setup.cpp, src/net/charserverhandler.cpp: A few cleanups and - simplifications. - -2006-01-26 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp, src/game.h, src/main.cpp: Moved some setup code out of - the game loop into the setup functions. Setup functions are now called - from the outside. - -2006-01-22 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, src/main.cpp: Updated Dev-Cpp project file, fixed - a GDI issue. - -2006-01-22 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp, src/net/network.cpp: Make dispatchMessages actually - handle more than one message per call. - * src/main.cpp: Remove obsoleted action listeners. - * src/main.cpp: Use generic error method for sound failure. - * src/main.cpp, src/net/charserverhandler.cpp, - src/net/loginhandler.cpp, src/net/maploginhandler.cpp, - src/net/network.cpp: Unify some network stuff in the main loop and fix - a bug in the network class that triggers when a handlers survives the - network object. - -2006-01-21 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/browserbox.cpp: Applied a patch by Ar2ro that works around - the problems with line wrapping in the chatbox. Note though that this - while code should be properly rewritten later. - -2006-01-20 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev: Updated Dev-Cpp project file. - -2006-01-20 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/equipment.h, src/game.cpp, src/game.h, src/main.h, - src/gui/buddywindow.cpp, src/gui/buddywindow.h, - src/gui/chargedialog.h, src/gui/connection.cpp, src/gui/connection.h, - src/gui/equipmentwindow.cpp, src/gui/equipmentwindow.h, - src/gui/linkhandler.h, src/gui/ministatus.h, src/gui/register.h, - src/net/protocol.h, src/resources/mapreader.h: Header, class - declaration and include cleanup. - * src/localplayer.cpp, src/localplayer.h, src/gui/requesttrade.cpp, - src/net/tradehandler.cpp: Made the local player object care about its - trading state, later this could be used for different stuff, like the - player setting itself to auto-decline trade offers without messing up - the code in the tradehandler. Removed message sending code from the - trade handler. - * src/npc.cpp, src/npc.h: Added the files for real this time. - * src/npc.cpp, src/npc.h, src/Makefile.am, src/being.cpp, - src/beingmanager.cpp, src/beingmanager.h, src/engine.cpp, - src/engine.h, src/game.cpp, src/game.h, src/localplayer.cpp, - src/localplayer.h, src/map.cpp, src/gui/buy.cpp, src/gui/buysell.cpp, - src/gui/buysell.h, src/gui/gui.cpp, src/gui/minimap.cpp, - src/gui/npc.cpp, src/gui/npc.h, src/gui/npc_text.cpp, - src/gui/npc_text.h, src/gui/npclistdialog.cpp, - src/gui/npclistdialog.h, src/gui/popupmenu.cpp, - src/gui/requesttrade.cpp, src/gui/requesttrade.h, src/gui/sell.cpp, - src/gui/setup.cpp, src/gui/skill.cpp, src/gui/skill.h, - src/gui/status.cpp, src/gui/status.h, src/net/buysellhandler.cpp, - src/net/charserverhandler.cpp, src/net/chathandler.cpp, - src/net/equipmenthandler.cpp, src/net/npchandler.cpp, - src/net/playerhandler.cpp, src/net/protocol.cpp, - src/net/tradehandler.cpp: Added a class for NPCs. Removed network - stuff from a bunch of gui dialog classes. Cleaned up some gui class - declarations and checked a bunch of includes for being useless. - -2006-01-19 Eugenio Favalli <elvenprogrammer@gmail.com> - - * INSTALL, README, The Mana World.dev, data/help/support.txt, - docs/INSTALL/debian.txt, docs/INSTALL/win32.txt, docs/progression.txt: - Updated infos on new irc channel. - -2006-01-14 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/main.cpp, src/main.h, src/gui/char_server.cpp, - src/gui/char_server.h: Moved network code out of the - ServerSelectDialog. - * src/gui/char_select.cpp, src/gui/char_select.h: Change setPlayerInfo - to updatePlayerInfo, as there's now a convenient wrapper around the - plain data. - * src/Makefile.am, src/lockedarray.cpp, src/lockedarray.h, - src/main.cpp, src/gui/char_select.cpp, src/gui/char_select.h, - src/gui/char_server.cpp, src/net/charserverhandler.cpp, - src/net/charserverhandler.h, src/net/network.cpp, src/net/network.h: - Created a single CharServerHandler. Created a LockedArray class to - "synchronize" access to arrays. Moved a bunch of networking out of the - char server related gui classes. - * src/Makefile.am, src/logindata.h, src/main.cpp, src/main.h, - src/gui/login.cpp, src/gui/login.h, src/gui/register.cpp, - src/gui/register.h: Removed network code from login and register - dialogs. - * src/gui/login.cpp, src/gui/login.h: Removed unused var. - * src/main.cpp, src/gui/char_select.cpp, src/gui/char_select.h, - src/gui/char_server.cpp, src/gui/char_server.h, - src/gui/connection.cpp, src/gui/connection.h, src/gui/error.cpp, - src/gui/error.h, src/gui/login.cpp, src/gui/login.h, - src/gui/register.cpp, src/gui/register.h, src/gui/updatewindow.cpp, - src/gui/updatewindow.h: Removed the pre-game input handlers and - unified them in main.cpp. Some header and class cleanups. - * src/net/maploginhandler.cpp, src/net/maploginhandler.h, - src/Makefile.am, src/engine.cpp, src/engine.h, src/game.cpp, - src/main.cpp, src/gui/connection.cpp, src/gui/connection.h, - src/net/playerhandler.cpp: Made changeMap() care about sending the - map-loaded message. Removed network stuff from connection dialog. - -2006-01-13 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/Makefile.am, src/gui/login.cpp, src/gui/login.h, - src/gui/register.cpp, src/net/loginhandler.cpp, - src/net/loginhandler.h: Remove duplicated code by unifying the message - handlers for login and register. - * src/gui/char_server.cpp, src/gui/char_server.h: Removed the polling - loop. - * src/gui/char_select.cpp, src/gui/char_select.h: Remove destructor - again, no idea why the compiler complained earlier. - * src/gui/char_select.cpp, src/gui/char_select.h: Created a message - handler for character creation and cleaned up the header file. - * src/gui/register.cpp, src/gui/register.h: Added a message handler - and removed the polling loop. - * src/net/network.cpp: Add recognition of disconnects. - * src/gui/connection.cpp, src/gui/connection.h, - src/net/playerhandler.cpp: Removed the polling loop and the duplicate - login message handler. - * src/gui/login.cpp, src/gui/login.h: Remove polling loop, the new - network code takes care of all that. - * src/net/network.cpp: Make sure that we don't send anything when not - connected. - * src/gui/login.cpp: Added a handler for network messages. - * src/game.cpp, src/net/beinghandler.cpp, src/net/beinghandler.h, - src/net/buysellhandler.cpp, src/net/buysellhandler.h, - src/net/chathandler.cpp, src/net/chathandler.h, - src/net/equipmenthandler.cpp, src/net/equipmenthandler.h, - src/net/inventoryhandler.cpp, src/net/inventoryhandler.h, - src/net/itemhandler.cpp, src/net/itemhandler.h, - src/net/messagehandler.cpp, src/net/messagehandler.h, - src/net/npchandler.cpp, src/net/npchandler.h, - src/net/playerhandler.cpp, src/net/playerhandler.h, - src/net/skillhandler.cpp, src/net/skillhandler.h, - src/net/tradehandler.cpp, src/net/tradehandler.h: Reverted the patch - to make the handlers register themselves, this just cannot work. - * src/game.cpp: Small cleanup. - * src/game.cpp, src/localplayer.cpp, src/localplayer.h: Made emote() a - method of the LocalPlayer class. - -2006-01-12 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp, src/main.cpp, src/net/beinghandler.cpp, - src/net/beinghandler.h, src/net/buysellhandler.cpp, - src/net/buysellhandler.h, src/net/chathandler.cpp, - src/net/chathandler.h, src/net/equipmenthandler.cpp, - src/net/equipmenthandler.h, src/net/inventoryhandler.cpp, - src/net/inventoryhandler.h, src/net/itemhandler.cpp, - src/net/itemhandler.h, src/net/messagehandler.cpp, - src/net/messagehandler.h, src/net/npchandler.cpp, - src/net/npchandler.h, src/net/playerhandler.cpp, - src/net/playerhandler.h, src/net/skillhandler.cpp, - src/net/skillhandler.h, src/net/tradehandler.cpp, - src/net/tradehandler.h: Added a constructor parameter to the - MessageHandler class to support it self-registering to a network. - * src/game.cpp, src/net/beinghandler.cpp, src/net/network.cpp, - src/net/network.h, src/net/playerhandler.cpp: Moved the last few - messages out of the game loop into handlers. Added logging of - unhandled messages to the network class. - * src/Makefile.am, src/game.cpp, src/net/skillhandler.cpp, - src/net/skillhandler.h: Added a dedicated handler for skill messages. - * src/game.cpp, src/net/beinghandler.cpp: Moved some messages into the - being message handler. - * src/net/playerhandler.cpp: Fixed death listener. - * src/Makefile.am, src/game.cpp, src/net/playerhandler.cpp, - src/net/playerhandler.h: Added a dedicated handler for player - messages. - * src/game.cpp, src/net/chathandler.cpp: Moved WHO answer and some MVP - thing into the chat handler. - * src/Makefile.am, src/game.cpp, src/net/npchandler.cpp, - src/net/npchandler.h: Added a dedicated handler for npc messages. - * src/Makefile.am, src/game.cpp, src/net/itemhandler.cpp, - src/net/itemhandler.h: Added a dedicated handler for item messages. - * src/net/messagehandler.cpp, src/Makefile.am, src/game.cpp, - src/gui/char_select.cpp, src/gui/char_server.cpp, - src/gui/connection.cpp, src/net/messagehandler.h, src/net/network.cpp, - src/net/tradehandler.cpp, src/net/tradehandler.h: Made the - MessageHandler class aware of the network it is listening to and - unregistering itself. - * src/Makefile.am, src/beingmanager.cpp, src/beingmanager.h, - src/engine.cpp, src/game.cpp, src/net/beinghandler.cpp, - src/net/beinghandler.h: Added a dedicated handler for being messages. - Made the beingManager care about map changes. - * src/net/network.cpp: Removed some debug output. - * src/Makefile.am, src/game.cpp, src/net/inventoryhandler.cpp, - src/net/inventoryhandler.h: Added a dedicated handler for inventory - messages. - * src/game.cpp, src/inventory.cpp, src/inventory.h, - src/localplayer.cpp, src/localplayer.h, src/gui/trade.cpp, - src/net/buysellhandler.cpp, src/net/equipmenthandler.cpp, - src/net/tradehandler.cpp: Added delegation methods for inventory stuff - to the LocalPlayer class. Removed some unneeded includes. - * src/Makefile.am, src/game.cpp, src/net/equipmenthandler.cpp, - src/net/equipmenthandler.h: Added a dedicated handler for equipment - messages. - * src/game.cpp, src/localplayer.h: Removed unions, array are indexed - by the existing enums now. - * src/Makefile.am, src/game.cpp, src/net/buysellhandler.cpp, - src/net/buysellhandler.h: Added a dedicated handler for buy and sell - messages. - * src/Makefile.am, src/game.cpp, src/net/chathandler.cpp, - src/net/chathandler.h, src/net/tradehandler.cpp: Added a dedicated - handler for chat messages. - -2006-01-11 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/Makefile.am, src/game.cpp, src/game.h, src/gui/popupmenu.cpp, - src/gui/requesttrade.h, src/net/messagehandler.h, src/net/network.cpp, - src/net/network.h, src/net/tradehandler.cpp, src/net/tradehandler.h: - Added a dedicated handler for trade messages. - * gui/char_select.cpp, gui/char_server.cpp, gui/connection.cpp, - net/messagehandler.h, net/network.cpp: Fixed a memory leak. - * src/Makefile.am, src/game.cpp, src/localplayer.cpp, src/main.cpp, - src/gui/char_select.cpp, src/gui/char_select.h, - src/gui/char_server.cpp, src/gui/char_server.h, - src/gui/connection.cpp, src/gui/connection.h, src/gui/gui.cpp, - src/gui/popupmenu.cpp, src/net/messagehandler.h, src/net/network.cpp, - src/net/network.h, src/net/protocol.cpp, src/net/protocol.h: Fixed - networking thread. Made skip calls queuable. Added MessageHandler base - class and added derived message handlers for some stuff. - * src/being.h, src/beingmanager.cpp, src/beingmanager.h, - src/game.cpp, src/game.h, src/localplayer.cpp, src/localplayer.h, - src/main.cpp, src/gui/buy.cpp, src/gui/buy.h, src/gui/buysell.cpp, - src/gui/buysell.h, src/gui/char_select.cpp, src/gui/char_select.h, - src/gui/char_server.cpp, src/gui/char_server.h, src/gui/chat.cpp, - src/gui/chat.h, src/gui/connection.cpp, src/gui/connection.h, - src/gui/gui.cpp, src/gui/login.cpp, src/gui/login.h, src/gui/npc.cpp, - src/gui/npc.h, src/gui/npc_text.cpp, src/gui/npc_text.h, - src/gui/popupmenu.cpp, src/gui/register.cpp, src/gui/register.h, - src/gui/requesttrade.cpp, src/gui/requesttrade.h, src/gui/sell.cpp, - src/gui/sell.h, src/gui/skill.cpp, src/gui/skill.h, - src/gui/status.cpp, src/gui/status.h, src/gui/trade.cpp, - src/gui/trade.h, src/net/messageout.cpp, src/net/messageout.h, - src/net/network.cpp, src/net/network.h, src/net/protocol.cpp, - src/net/protocol.h: Created a network class. - -2006-01-10 Philipp Sehmisch <tmw@crushnet.org> - - * data/graphics/tiles/Woodland.png: color modifications - * data/maps/new_9-1.tmx.gz: some more errors fixed - -2006-01-09 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/game.cpp: Fixed canceled/cancelled inconsistency. - -2006-01-08 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/floor_item.cpp, src/floor_item.h, src/game.cpp, - src/localplayer.cpp, src/localplayer.h, src/gui/gui.cpp, - src/gui/popupmenu.cpp, src/net/protocol.cpp, src/net/protocol.h: Made - find_floor_item_by_cor return the item instead of its id. Made pickUp - a method of the LocalPlayer class. - * equipment.cpp, equipment.h, game.cpp, inventory.cpp, inventory.h, - localplayer.cpp, localplayer.h, gui/equipmentwindow.cpp, - gui/inventorywindow.cpp, gui/item_amount.cpp, gui/popupmenu.cpp: Made - inventory and equipment properties of the LocalPlayer class. - * src/game.cpp, src/game.h, src/gui/connection.cpp: Removed some - globals. - -2006-01-07 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp, src/localplayer.cpp, src/localplayer.h: Created a walk - method for LocalPlayer. - -2006-01-07 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/maps/new_9-1.tmx.gz: Crush fixed the issues reported on wiki. - * The Mana World.dev, src/game.cpp, src/gui/setup.cpp, src/gui/setup.h, - src/main.cpp: Removed --skipupdate option from Dev.Cpp project file, - splitted the setup window into 3 tabs and added a joystick calibration - tool. - -2006-01-06 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp, src/localplayer.cpp: Changed semantics for auto - target. The player now keeps attacking the select target till he - selects an other one, and not just by running into another one. - * src/being.cpp, src/beingmanager.cpp, src/beingmanager.h, - src/game.cpp, src/localplayer.h, src/gui/char_select.cpp, - src/gui/char_server.cpp: Fix local player id being wrongly assigned - causing various issues. - * src/gui/status.cpp: Fix attributes not being shown. - * src/Makefile.am, src/being.cpp, src/being.h, src/beingmanager.cpp, - src/beingmanager.h, src/engine.cpp, src/game.cpp, src/game.h, - src/localplayer.cpp, src/localplayer.h, src/main.cpp, src/map.cpp, - src/monster.cpp, src/monster.h, src/player.cpp, src/player.h, - src/playerinfo.h, src/gui/char_select.cpp, src/gui/char_select.h, - src/gui/char_server.cpp, src/gui/chargedialog.cpp, src/gui/chat.cpp, - src/gui/gui.cpp, src/gui/inventorywindow.cpp, src/gui/minimap.cpp, - src/gui/ministatus.cpp, src/gui/popupmenu.cpp, src/gui/skill.cpp, - src/gui/status.cpp, src/gui/status.h, src/net/protocol.cpp, - src/net/protocol.h: Created subclasses of the Being class to move - specific code there. Added a BeingManager to remove use of globals. - Moved PLAYERINFO stuff into the new LocalPlayer class. - -2006-01-05 Björn Steinbrink <B.Steinbrink@gmx.de> - - * engine.cpp, engine.h, game.cpp, game.h, gui/buysell.h, - gui/chargedialog.h, gui/debugwindow.cpp, gui/debugwindow.h, gui/gui.h, - gui/ministatus.h, gui/npc_text.h, gui/sell.h, gui/setup.h: Remove some - useless code. - -2006-01-04 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/Makefile.am, src/gui/char_select.cpp, src/gui/char_select.h, - src/gui/char_server.cpp, src/gui/confirm_dialog.cpp, - src/gui/confirm_dialog.h, src/gui/ok_dialog.cpp, src/gui/ok_dialog.h, - src/gui/trade.cpp, src/playerinfo.h: Reverted r0nny changes, enabled 3 - slots to create players, smoothed player deletion. - -2006-01-04 Icy <icywolf@web.de> - - * src/game.cpp, src/main.cpp, src/main.h: FreeBSD fixes to The Mana - World. - -2006-01-03 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/game.cpp, src/gui/chat.cpp, src/gui/chat.h, src/gui/login.cpp, - src/gui/trade.cpp: Really disabled /commands and added proper message - when logging in and banned. - * src/game.cpp, src/gui/chat.cpp, src/gui/chat.h, src/net/protocol.h: - Enabled some /commands. - * src/main.cpp: Fixed a compile warning with GCC 4.1. - -2006-01-02 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/gui/char_select.cpp, src/gui/char_select.h, - src/gui/char_server.cpp, src/gui/login.cpp, src/gui/register.cpp: - Smoothed also character creation, buttons are now disabled during - connection/data phase. - -2006-01-01 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/login.cpp, src/gui/login.h: Remove tracking of OkDialog, the - garbage collection stuff takes care of deletion and breaks manual - tracking. - -2006-01-01 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/main.cpp: Applied patch by pclouds that allows for a faster - login sequence by providing the username and password from the command - line, and allowing the client to choose the default server and - character. - -2005-12-30 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/gui/chat.cpp, src/gui/chat.h: Applied patch by pclouds to have - the chat window temporarily become visible when chatting while it is - hidden. - -2005-12-30 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, data/graphics/sprites/items.png, - data/items.xml, src/Makefile.am, src/gui/char_select.cpp, - src/gui/char_server.cpp, src/gui/login.cpp, src/gui/login.h, - src/main.cpp, src/main.h, src/net/network.cpp, src/net/network.h, - src/gui/register.cpp, src/gui/register.h: Added a new item, improved - smooth login sequence, added a registration window (a lot of - duplicated code to be removed). - -2005-12-29 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, data/maps/new_10-1.tmx.gz, - src/gui/char_select.cpp, src/gui/char_select.h, src/gui/char_server.cpp, - src/gui/char_server.h, src/gui/connection.cpp, src/gui/connection.h, - src/gui/login.cpp, src/gui/login.h, src/net/network.h: Restored Dev-Cpp - default execution options, updated walkmap in snow map, smoothed login - sequence. - -2005-12-29 Jan-Fabian Humann <malastare@gmx.net> - - * src/gui/gui.cpp: Added rather ugly workaround to prevent a on-start - crash by Doener. Fixed GCC 3.3.6 and 4.x paranthesis problem, patch - by r0nny. Fixed popupMenu not showing on items. - -2005-12-29 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp, src/gui/popupmenu.cpp, src/net/protocol.cpp: Remove - duplicated code for picking up items as patched by pclouds. - * src/game.cpp, src/gui/gui.cpp, src/gui/gui.h, - src/gui/inventorywindow.cpp, src/gui/popupmenu.h: Added popup support - to the Gui and moved the according code there to get rid of some nasty - hack that made them disappear. - * src/game.cpp, src/gui/gui.cpp, src/gui/gui.h, - src/gui/inventorywindow.cpp, src/gui/popupmenu.h, - src/net/protocol.cpp, src/net/protocol.h: Moved all mouse input code - into the Gui class. - -2005-12-26 Duane Bailey <nayryeliab@gmail.com> - - * src/main.h: Fixed define problems with The_Mana_World_private.h. - -2005-12-25 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/being.cpp: Small fix to prevent other stuff than the damage - numbers from fading out. - -2005-12-24 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/map.cpp: Worked around fringe layer drawing bug at the bottom. - * src/main.cpp: When compiling with OpenGL support, it'll default to - using OpenGL on only Windows and Mac. These systems are known to have - stable acceleration most of the time. - * NEWS, configure.ac, The Mana World.dev: Updated in preparation of - release 0.0.18.1. - -2005-12-20 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * configure.ac: Changed version to 0.0.18. - -2005-12-18 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/maps/new_10-1.tmx.gz, src/main.cpp: Removed unused code and - added changes to snowy map by Bertram. - -2005-12-15 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/game.cpp: Fixed setup window behaviour. - -2005-12-13 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/items.xml: Changed item properties according to eAthena scripting - capabilities. - * src/being.cpp: Enabled monster emotions. - -2005-12-12 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, data/graphics/tiles/Makefile.am, data/items.xml, - data/maps/Makefile.am, data/graphics/tiles/Woodland.png, - data/graphics/tiles/snowset.png, data/maps/new_9-1.tmx.gz, - data/maps/new_10-1.tmx.gz: Cleaned Dev-Cpp project file, added new - items definitions and new maps and tilesets. - -2005-12-08 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/graphics/sprites/monster11.png, - data/graphics/sprites/monster12.png, data/graphics/sprites/monster13.png, - data/graphics/sprites/monster14.png, data/graphics/sprites/Makefile.am, - data/graphics/sprites/items.png, data/graphics/sprites/npcs.png,: Added - new monsters, items and npcs. - -2005-12-05 Bjørn Lindeijer <bjorn@lindeijer.nl> - * src/gui/char_server.cpp: Avoid crashing on trying to log the name - of a non-existing character. - * src/main.h, src/main.cpp: Display TMW version on Windows too. - -2005-11-13 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev: Updated Dev-Cpp project file. - -2005-11-13 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/maps/new_1-1.tmx.gz, data/maps/new_3-1.tmx.gz, - data/maps/new_7-1.tmx.gz: Made the three desert maps use the fringe - layer for objects. Reveals bug with objects disappearing at the bottom - and still some draw order problems. - -2005-10-24 Ferreira Yohann <Bertram@cegetel.net> - - * src/main.cpp: Add version displaying at startup. - * docs/INSTALL/debian.txt: Updated Debian Install Doc. - -2005-10-20 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/item_amount.cpp: Fix scrollbar not being updated when the - amount is changed using the buttons. - * src/gui/buddywindow.cpp, src/gui/buddywindow.h, src/gui/buy.cpp, - src/gui/buy.h, src/gui/char_select.cpp, src/gui/char_select.h, - src/gui/char_server.cpp, src/gui/chat.cpp, src/gui/help.cpp, - src/gui/help.h, src/gui/inventorywindow.cpp, - src/gui/inventorywindow.h, src/gui/item_amount.cpp, src/gui/npc.cpp, - src/gui/npc.h, src/gui/npc_text.cpp, src/gui/npc_text.h, - src/gui/scrollarea.cpp, src/gui/scrollarea.h, src/gui/sell.cpp, - src/gui/sell.h, src/gui/setup.cpp ,src/gui/skill.cpp, - src/gui/trade.cpp, src/gui/updatewindow.cpp: Add garbage collection to - the ScrollArea class. - * src/gui/confirm_dialog.cpp, src/gui/confirm_dialog.h, - src/gui/connection.cpp, src/gui/connection.h, src/gui/debugwindow.cpp, - src/gui/debugwindow.h, src/gui/item_amount.cpp, src/gui/item_amount.h, - src/gui/menuwindow.cpp, src/gui/menuwindow.h, src/gui/ok_dialog.cpp, - src/gui/ok_dialog.h: Various cleanups and refactorisations. - * data/help/index.txt: Fix typo, remove spaces on empty lines. - -2005-10-19 Duane Bailey <nayryeliab@gmail.com> - - * data/help/index.txt: Added SDL_net reference. - -2005-10-19 Yohann Ferreira <bertram@cegetel.net> - - * debian/rules, debian/tmw.install, debian/copyright, debian/compat, - debian/changelog, debian/control, debian/docs, debian/tmw.menu: - Updated Debian files to get tmw ready for official ITP. - -2005-10-19 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/resources/resourcemanager.cpp: Fix empty lines not being read - from text files. - * src/gui/browserbox.cpp, src/gui/browserbox.h: Code cleanup. - * src/gui/gccontainer.cpp: Remove debug output. - -2005-10-18 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/Makefile.am, src/gui/buddywindow.cpp, src/gui/buddywindow.h, - src/gui/buy.cpp, src/gui/buy.h, src/gui/buysell.cpp, - src/gui/buysell.h, src/gui/char_select.cpp, src/gui/char_select.h, - src/gui/char_server.cpp, src/gui/char_server.h, - src/gui/chargedialog.cpp, src/gui/chargedialog.h, src/gui/chat.cpp, - src/gui/confirm_dialog.cpp, src/gui/confirm_dialog.h, - src/gui/connection.cpp, src/gui/connection.h, src/gui/debugwindow.cpp, - src/gui/debugwindow.h, src/gui/error.h, src/gui/hbox.cpp, - src/gui/hbox.h, src/gui/help.cpp, src/gui/inttextbox.cpp, - src/gui/inttextbox.h, src/gui/inventorywindow.cpp, - src/gui/item_amount.cpp, src/gui/item_amount.h, src/gui/login.cpp, - src/gui/login.h, src/gui/menuwindow.cpp, src/gui/menuwindow.h, - src/gui/ministatus.cpp, src/gui/ministatus.h, src/gui/newskill.cpp, - src/gui/newskill.h, src/gui/npc.cpp, src/gui/npc_text.cpp, - src/gui/ok_dialog.cpp, src/gui/popupmenu.cpp, src/gui/popupmenu.h, - src/gui/requesttrade.cpp, src/gui/requesttrade.h, src/gui/sell.cpp, - src/gui/setup.cpp, src/gui/skill.cpp, src/gui/status.cpp, - src/gui/status.h, src/gui/tabbedcontainer.cpp, src/gui/trade.cpp, - src/gui/updatewindow.cpp, src/gui/vbox.cpp, src/gui/vbox.h, - src/gui/window.cpp, src/gui/window.h, src/gui/windowcontainer.cpp: - Added automatic widget cleanup to the window class. - * src/gui/connection.cpp, src/gui/connection.h, src/gui/error.cpp, - src/gui/status.cpp, src/gui/window.h: Header, whitespace and - indentation cleanups. - -2005-10-16 Duane Bailey <nayryeliab@gmail.com> - - * src/main.cpp: OpenGL is now default for mac, win, and those who - define USE_OPENGL - * src/gui/setup.cpp: made it so those who use and go to fullscreen - requires a restart (texture/context baddies) - -2005-10-16 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/being.cpp, src/game.cpp, src/inventory.cpp, src/gui/buy.cpp, - src/gui/buysell.cpp, src/gui/char_select.cpp, src/gui/char_server.cpp, - src/gui/chat.cpp, src/gui/connection.cpp, src/gui/login.cpp, - src/gui/npc.cpp, src/gui/npc_text.cpp, src/gui/popupmenu.cpp, - src/gui/requesttrade.cpp, src/gui/sell.cpp, src/gui/skill.cpp, - src/gui/status.cpp, src/gui/trade.cpp, src/net/messagein.cpp, - src/net/messagein.h, src/net/messageout.cpp, src/net/messageout.h, - src/net/protocol.cpp: Rename {read,write}{Byte,Short,Long} to - {read,write}Int{8,16,32}. - * src/being.cpp, src/engine.cpp, src/engine.h, src/game.cpp, - src/main.cpp, src/gui/equipmentwindow.cpp, src/gui/itemcontainer.cpp, - src/resources/resourcemanager.cpp, src/resources/resourcemanager.h: - Use the ResourceManager to get spritesets. - * src/being.cpp: Reduce code duplication in the findNode functions and - use a functor to do the search. - * src/map.cpp: Some code improvements. - * src/Makefile.am: Added two missing files. - -2005-10-16 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, src/game.cpp, src/gui/char_select.cpp, - src/gui/char_server.cpp, src/gui/char_server.h, src/gui/connection.cpp, - src/gui/connection.h, src/gui/login.cpp, src/gui/login.h, src/main.cpp, - src/main.h, src/net/network.cpp, src/net/network.h, - src/net/protocol.cpp, src/net/protocol.h: The connection should be - non-blocking now and fixed the problem with sound not being played at - startup. - -2005-10-15 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/engine.cpp: Moved some variables into the conditional block - where they are used. - * src/being.cpp: A few changes that make the code look nicer. - * src/openglgraphics.cpp, src/resources/image.cpp, - src/resources/image.h: Some small cleanups. - * src/engine.cpp: Removed some legacy debug code. - -2005-10-13 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/game.cpp: Prevent Alt+p/s/f from appearing in chatbox. - * src/Makefile.am: Some updates for added/removed headers. - * src/being.cpp: Changed char to signed char for GNU/Linux PPC. - -2005-10-13 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/engine.cpp, src/gui/browserbox.cpp, src/gui/gui.cpp, - src/gui/gui.h: Use gcn::Font instead of gcn::ImageFont where the - former is sufficient. - -2005-10-10 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/being.cpp, src/being.h, src/game.cpp: Always compile with debug - window and hide it on startup. Also added fading out effect on damage - font (only works in OpenGL). - * src/Makefile.am: Don't include debugwindow.h/cpp twice. - * data/graphics/gui/browserfont.png, data/graphics/gui/fixedfont.png, - data/graphics/gui/rpgfont_wider.png, src/gui/browserbox.cpp, - src/gui/gui.cpp: Pajarico added more international characters to the - fixed font and rpg font. - * src/game.cpp, README, data/helps/commands.txt: Introduced new window - shortcuts. - * src/gui/status.cpp: Corrected position of job XP bar. - * src/data/graphics/tiles/Makefile.am: Forgot to add new tilesets - here. - * src/map.cpp: Another small fix to sprite rendering. - -2005-10-09 Yohann Ferreira <bertram@cegetel.net> - - * src/gui/browserbox.cpp, src/gui/ministatus.cpp, - src/gui/debugwindow.h, src/gui/debugwindow.cpp, src/game.cpp, - src/engine.cpp, src/Makefile.am: Corrected the white browser font - bug and the black hp/mp bug which were linked. Added a debug window - -2005-10-09 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/being.cpp, src/being.h, src/engine.cpp, src/engine.h, - src/floor_item.cpp, src/floor_item.h, src/map.cpp, src/map.h, - src/sprite.h: Made Sprite into an interface implemented by both - FloorItem and Being, which hook themselves into the map on - construction. The improved fringe layer is working as expected now. - * src/equipment.cpp, src/equipment.h, src/game.cpp, src/game.h, - src/graphics.cpp, src/guichanfwd.h, src/inventory.h, - src/openglgraphics.cpp, src/sound.cpp, src/gui/chargedialog.cpp, - src/gui/chargedialog.h, src/gui/chat.cpp, src/gui/chat.h, - src/gui/equipmentwindow.cpp, src/gui/equipmentwindow.h, - src/gui/gui.cpp, src/gui/help.cpp, src/gui/inventorywindow.cpp, - src/gui/item_amount.cpp, src/gui/itemcontainer.cpp, - src/gui/itemcontainer.h, src/gui/linkhandler.h, src/gui/login.cpp, - src/gui/menuwindow.cpp, src/gui/newskill.cpp, src/gui/npc_text.cpp, - src/gui/popupmenu.cpp, src/gui/popupmenu.h, src/gui/progressbar.cpp, - src/gui/progressbar.h, src/gui/scrollarea.cpp, src/gui/scrollarea.h, - src/gui/skill.cpp, src/gui/status.cpp, src/gui/trade.h, - src/gui/window.cpp, src/gui/window.h, src/net/messagein.cpp, - src/net/packet.cpp, src/net/packet.h, src/resources/image.cpp, - src/resources/image.h, src/resources/iteminfo.cpp, - src/resources/iteminfo.h, src/resources/music.cpp, - src/resources/music.h, src/resources/soundeffect.cpp, - src/resources/soundeffect.h: Made sure TMW compiles without warnings - even when using "-Wconversion -Wshadow -Wcast-qual -Wwrite-strings - -ansi -pedantic", lots of cleanups. - * src/data/maps/new_3-1.tmx.gz, src/graphics/tiles/desert_x2.png, - src/graphics/tiled/desert_x3.png: Added two new small tilesets that - contain the desert tiles that are twice and three times the height of - a normal tile. One well in new_3-1 has been converted to use the new - double tiles for testing purposes. - * src/being.cpp, src/game.cpp, src/engine.cpp: Fixed map switch - crashing the client, display of [TARGET], Alt keys for toggling - windows and names to overlap other players. - -2005-10-06 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/being.cpp: Modified finding NPC as by timonator's suggestion in - order to allow NPCs to be clicked on their heads too. - * src/engine.cpp, src/engine.h, src/floor_item.cpp, src/floor_item.h, - src/game.cpp, src/map.cpp, src/sprite.h: Added a Sprite class that - represents something on the map. The map will make sure to draw the - sprites top to bottom, at the same time as the fringe layer tiles. - This is currently still only used by the floor items. - * src/item.cpp, src/item.h: Changed formatting and added - documentation. - * src/properies.h: Separated properties class from Map class, in order - to simplify Map class and to allow properties to be used by other - classes. - -2005-10-06 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/being.cpp, src/being.h, src/game.cpp: Use integer types from SDL - and along the way fixed some long vs. int issues. - * src/inventory.cpp: Return NULL when no valid item index is given to - getItem() to bail out early. - -2005-10-05 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/engine.cpp, src/main.cpp, src/gui/char_select.cpp, - src/gui/skill.cpp, src/net/messagein.cpp: Fixed some resource cleanup - and memory leaks. - * src/resources/resource.h, src/resources/resourcemanager.cpp: - Changed the way dangling references to resources are reported to be - more informative. - -2005-10-04 Yohann Ferreira <bertram@cegetel.net> - - * src/game.cpp, src/gui/menuwindow.cpp, src/gui/inventorywindow.cpp, - src/gui/equipmentwindow.cpp: Move to top the requested window with - shortcuts or with menu button, also corrected the default position - of equipment and inventory windows. - * src/gui/chat.cpp: Fixed the Chat Window scrolling bug. - * src/gui/status.cpp, src/gui/ministatus.cpp: Changed the font used - in mini-status. Dynamised previously statically placed widgets in - status win to avoid some label over-drawings. - * src/gui/setup.cpp: Enable the OpenGL Checkbox only if tmw has been - compiled with its support. - -2005-10-02 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * configure.ac, src/Makefile.am: Added check for pthread library and - removed manual -lpthread and -lguichan linker flags. - * src/map.cpp: A small start on supporting other tile height than the - default (map) tile height. - * src/gui/window.cpp, src/gui/window.h, src/resources/buddylist.cpp, - src/resources/buddylist.h: Some cleanups (void argument list was - something you had to do in C times, not necessary in C++). - -2005-09-30 Yohann Ferreira <bertram@cegetel.net> - - * src/gui/inventorywindow.cpp, src/gui/inventorywindow.h, - src/gui/window.h src/gui/window.cpp src/gui/setup.cpp: Made the - inventory Win behave normally when resized by default size functions. - -2005-09-29 Yohann Ferreira <bertram@cegetel.net> - - * src/game.cpp, src/gui/window.h, src/gui/window.cpp, src/gui/setup.h, - src/gui/setup.cpp, src/gui/chat.cpp, src/gui/inventorywindow.h, - src/gui/inventorywindow.cpp, src/gui/skill.cpp, - src/gui/equipmentwindow.cpp, src/gui/menuwindow.cpp, - src/gui/ministatus.cpp, src/gui/minimap.cpp, src/gui/status.cpp: - Improved a lot windows reset to default size and pos. Also corrected - a few the default win position. And moved the setposition from game to - each win, to clarify the code. - -2005-09-29 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/map.cpp, src/map.h, src/tileset.h, src/resources/mapreader.cpp, - src/resources/mapreader.h: Moved tileset management into the map class - and made sure the tilesets are cleaned up properly on switching maps. - -2005-09-28 Yohann Ferreira <bertram@cegetel.net> - - * src/gui/updaterwindow.cpp: Fixed the scroll bug in the update window. - * src/gui/ministatus.h, src/gui/ministatus.cpp: Added HP, MP Display - in mini-status window. - * src/gui/window.h, src/gui/window.cpp, src/gui/skill.cpp, - src/gui/status.cpp, src/gui/equipmentwindow.cpp, src/gui/help.cpp, - src/gui/inventorywindow.cpp, src/gui/minimap.cpp, src/gui/chat.cpp: - Added window internal name to later get X, Y, height and width be - saved. - * src/gui/window.h, src/gui/window.cpp, src/game.cpp: Load and save X, - Y, Width and Height of windows when useful. - * src/gui/setup.cpp, src/gui/setup.h; src/gui/minimap.h: Added a 'Reset - Windows to Default' Button in the Setup Window. - -2005-09-28 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/browserbox.cpp: Fix deletion of the gui font because of a - missing check. - * src/Makefile.am: Added -Werror to the CXXFLAGS to catch warnings - easier. - * src/gui/error.h: Removed unnecessary ambigous inheritance. - -2005-09-26 Yohann Ferreira <bertram@cegetel.net> - - * src/gui/char_select.cpp, debian/control, debian/rules, - debian/tmw.install, debian/changelog: Updated Debian files and fixed a - typo let by Elven. - -2005-09-26 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, src/Makefile.am, src/game.cpp, - src/gui/char_select.cpp, src/gui/char_server.cpp, src/gui/error.cpp, - src/gui/error.h, src/gui/gui.cpp, src/gui/login.cpp, - src/gui/updatewindow.cpp, src/main.cpp, src/main.h, - src/net/network.cpp: Added a nicer handling of when you get - disconnected from the server. - * src/gui/char_select.cpp, src/gui/skill.cpp, src/main.cpp, src/main.h, - src/net/network.cpp: Now error message is displayed properly when the - map server is offline. - -2005-09-25 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/openglgraphics.cpp: Fixed taking OpenGL screenshots and in - addition made it flip the image using just a line buffer instead of a - buffer for the complete image. Still needs testing on MacOS X. - -2005-09-24 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/being.cpp, src/engine.cpp, src/game.cpp, src/main.cpp, - src/map.cpp, src/sound.cpp, src/gui/char_select.cpp, - src/gui/char_select.h, src/gui/char_server.cpp, src/gui/char_server.h, - src/gui/chargedialog.cpp, src/gui/chargedialog.h, src/gui/chat.cpp, - src/gui/equipmentwindow.cpp, src/gui/login.h, src/gui/setup.cpp, - src/gui/setup.h, src/gui/status.cpp, src/gui/updatewindow.cpp, - src/gui/updatewindow.h, src/resources/iteminfo.cpp, - src/resources/iteminfo.h, src/resources/itemmanager.cpp, - src/resources/itemmanager.h: Merged most of the changes in - biggeruniverse's second memory cleanup patch. - -2005-09-23 Duane Bailey <nayryeliab@gmail.com> - - * src/openglgraphics.cpp: Totally redid the OpenGL screenshot method. - Needs to be tested on lil endian systems. Also made it smoother on - OpenGL MacOSX. - -2005-09-23 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/resources/imagewriter.cpp: Reverted the last change that broke - the screenshots facility. - -2005-19-22 Duane Bailey <nayryeliab@gmail.com> - - * src/net/win2mac.h, src/net/win2mac.cpp: Removed - * src/net/network.h, src/net/messagein.h, src/net/messageout.h: - Removed references to win2mac.h - * src/net/messagein.cpp, src/net/messageout.cpp, src/net/network.cpp: - Changed byte swapping support to SDL_endian - -2005-09-21 Andrej Sinicyn <andrej4000@gmail.com> - - * src/gui/chat.cpp: Show time of the messages in the chat window. - * The Mana World.dev: Removed reference to src/gui/stats.* since they - are in the attic now. - -2005-09-20 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/game.cpp, src/gui/ok_dialog.cpp, src/gui/ok_dialog.h, - src/gui/window.cpp: Enter is used to dismiss dialogs currently, - removed the hacks for use in combination with non-modal dialogs that - made the game crash. - * src/openglgraphics.cpp: Changed glColor4f to glColor4ub. - -2005-09-19 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * configure.ac: Replaced custom function FIND_PATH with AC_PATH_PROG, - used for finding sdl-config. - * src/Makefile.am: Removed -lphysfs which should be added - automatically already. - * src/engine.cpp, src/game.h, src/game.cpp, src/openglgraphics.h, - src/gui/popupmenu.cpp, src/net/messagein.cpp, src/net/messageout.cpp, - src/net/win2mac.h, src/net/win2mac.cpp: Some cleanups. - * src/game.cpp: Actually show the overweight message, and only show it - once for each time weight goes above half the max weight (apparently - this code wasn't even tested once). - * src/graphics.cpp: Surfaces passed to SDL_BlitSurface shouldn't be - locked according to the manual. - * src/main.cpp: Minimal fps limit is now 10 fps. - * src/gui/updatewindow.cpp: Reverted change by Bertram that hardcoded - the updatehost value. - -2005-09-19 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/game.cpp, src/gui/trade.cpp, src/gui/updatewindow.cpp, - src/inventory.cpp: Removed useless flush() calls. - * src/being.cpp, src/game.cpp, src/gui/buy.cpp, src/gui/buysell.cpp, - src/gui/char_select.cpp, src/gui/char_server.cpp, src/gui/chat.cpp, - src/gui/login.cpp, src/gui/npc.cpp, src/gui, npc_text.cpp, - src/gui/popipmenu.cpp, src/gui/requesttrade.cpp, src/gui/sell.cpp, - src/gui/skill.cpp, src/gui/status.cpp, src/gui/trade.cpp, - src/inventory.cpp, src/net/messageout.cpp, src/net/network.cpp, - src/net/network.h, src/net/protocol.cpp: Got rid of writeSet() calls. - * data/graphics/sprites/monster2.png: Fixed some non very bright pixels. - -2005-09-18 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, src/gui/npc.cpp: Updated dev-cpp project file to - last changes, and fixed the bug with npc lists I introduced earlier. - * data/items.xml: Updated the defense value of fancy hat as pointed out - by xand. - * src/game.cpp, src/gui/gui.cpp, src/gui/updatewindow.cpp, - src/main.cpp, src/resources/mapreader.cpp: Applied biggeruniverse's - patch to fix memory leaks. - * src/game.cpp, src/main.cpp: Increased joypad tolerance which is safer - and simplifyed joypad state reset code. - -2005-09-18 Duane Bailey <nayryeliab@gmail.com> - - * game.cpp: Added weight notice; now notifies person when they - are carrying more then half their weight - -2005-09-18 Yohann Ferreira <bertram@cegetel.net> - - * src/game.cpp, src/graphics.cpp, src/graphics.h, - src/resources/imagewriter.cpp, src/resources/imagewriter.h: - Made the saveScreenShot makes its screenshots under user home dir in - *nices, made it more C++ way to avoid a leak, and made it check - for existence of a file with same name before writing; In that - case the screenshot's number is incremented until it finds - an adequate name. - * src/gui/updatewindow.cpp: Corrected a bug in the determination - of the update host I had. - * src/gui/updatewindow.cpp, src/playerinfo.h, debian/control, - debian/changelog: Corrected a range value bug for derived stats. - Fixed the percentage of the update win, updated debian information. - * src/gui/status.cpp: As m[a]tt noticed, made the status win a - little more wide, and resizable. - -2005-09-18 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp, src/graphics.cpp, src/graphics.h: Move the writing - logic out of the Graphics class once again... Some cleanups in the - screenshot filename selection code. - * src/resources/imagewriter.cpp: Small cleanups. - * src/Makefile.am, src/game.cpp, src/graphics.cpp, src/graphics.h, - src/openglgraphics.cpp, src/openglgraphics.h: Changed saveScreenshot - function in Graphics to getScreenshot. We now use the ImageWriter to - save that screenshot. - * src/resources/imagewriter.cpp, src/resources/imagewriter.h: Added - ImageWriter class that provides a function to save a SDL surface as - png. - -2005-09-17 Duane Bailey <nayryeliab@gmail.com> - - * src/net/messagin.cpp, src/net/messageout.cpp, src/net/network.cpp: - removed replaced MACOSX defines with big endian defines - * src/graphics.cpp, src/graphics.h: added screenshot method - * src/game.cpp: added code, so that when one presses 'alt-p' (for - picture), it takes a screenshot and saves it to a png - * src/Makefile.am, config.ac: added png library stuff - -2005-09-17 Matthias Hartmann <hartmann.matthias@gmail.com> - - * src/engine.cpp: [TARGET] text over player - * src/game.cpp, src/game.h: PVP - * src/gui/popupmenu.cpp: Added "attack" option to the popupmenu - * src/net/protocol.cpp: findPlayer - -2005-09-17 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/engine.cpp, src/game.cpp: Indent properly. - -2005-09-17 Björn Steinbrink <B.Steinbrink@gmx.de> - - * configure.ac: Fix typo. - * src/Makefile.am: Remove useless (duplicate) -lpng. - * src/graphics.cpp: Add missing cstdarg header. - * src/net/messagein.cpp: Fix some funny looking preprocessor - statement. - * src/net/messageout.cpp: Readd SDLnet header, for changed - preprocessor stuff. - * src/game.h: Remove inclusion of being.h, there was a forward - declaration of class Being anyways... - * src/openglgraphics.cpp: Use gl{Push,Pop}Matrix instead of - calculating offsets, cause the values are stored as float and aren't - accurate enough. - -2005-09-17 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, src/gui/skill.cpp: Updated to last changes, and - wrong names fixes. - * src/being.cpp, src/game.cpp, src/gui/buy.cpp, src/gui/buysell.cpp, - src/gui/char_select.cpp, src/gui/char_server, src/gui/chat.cpp, - src/gui/npc.cpp, src/gui/npc_text.cpp, src/gui/popupmenu.cpp, - src/gui/requesttrade.cpp, src/gui/sell.cpp, src/gui/skill.cpp, - src/gui/status.cpp, src/gui/trade.cpp, src/inventory.cpp, - src/net/messageout.cpp, src/net/network.cpp, src/net/network.h, - src/net/protocol.cpp, src/net/protocol.h: Completed transition to use - MessageOut. - -2005-09-17 Yohann Ferreira <bertram@cegetel.net> - - * src/game.cpp, src/gui/ministatus.cpp, src/gui/ministatus.h, - src/gui/menuwindow.h, src/gui/menuwindow.cpp, src/gui/status.cpp, - src/gui/status.h: Improving General Layout. - * src/games.cpp, src/playerinfo.h, src/gui/char_server.cpp, - src/gui/char_select.cpp, src/gui/ministatus.cpp, src/gui/skill.cpp, - src/gui/status.cpp, src/gui/status.h: Now the derived stats values - are got from the server, and then, are correct ones. - * src/gui/minimap.cpp: Only shows the Minimap Window if there's - actually a minimap to the current map. - * src/gui/status.cpp, src/game.cpp: The derived stats are now updated - correctly upon equipping/unequipping. - -2005-09-16 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/resources/image.cpp: Report which error occured when loading of - an image fails. - -2005-09-14 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp: Fix missing parentheses in a negated check. - * src/engine.cpp, src/engine.h, src/game.cpp: Moved Map management - code completely into engine.cpp. - * src/net/messagein.cpp, src/net/messagein.h, src/net/messageout.cpp, - src/net/messageout.h: Added stream operators for char, short and long - reading and writing. - * src/game.cpp, src/log.cpp, src/main.cpp, src/gui/char_select.cpp, - src/gui/char_server.cpp, src/gui/login.cpp, src/net/messageout.cpp, - src/net/messageout.h, src/net/network.cpp, src/net/network.h, - src/net/packet.cpp, src/net/protocol.cpp: Header cleanups. - * src/gui/popupmenu.cpp, src/gui/sell.cpp: Use cassert instead of - assert.h. - * src/net/network.cpp: Add missing cassert header, remove some unused - headers. - * src/net/messagein.cpp: Add missing cassert header. - * src/being.cpp, src/being.h, src/game.cpp: Made Being::setDamage - accept a short instead of a string. - * src/game.cpp, src/game.h, src/gui/char_select.cpp: Converted - map_path from char array to std::string. - -2005-09-13 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev: Updated to last changes. - * The Mana World.dev: Added latest changes to the proper branch. - * src/gui/login.cpp, src/net/messageout.cpp, src/net/messageout.h, - src/net/network.cpp, src/net/network.h: Started to use MessageOut to - send login data. - -2005-09-13 Björn Steinbrink <B.Steinbrink@gmx.de> - - * ChangeLog, The Mana World.dev, configure.ac, src/Makefile.am, - src/being.cpp, src/being.h, src/engine.cpp, src/floor_item.cpp, - src/floor_item.h, src/game.cpp, src/game.h, src/inventory.cpp, - src/log.h, src/main.cpp, src/playerinfo.h, src/serverinfo.h, - src/gui/buy.cpp, src/gui/buysell.cpp, src/gui/char_select.cpp, - src/gui/char_server.cpp, src/gui/chargedialog.cpp, src/gui/chat.cpp, - src/gui/inventorywindow.cpp, src/gui/login.cpp, src/gui/npc.cpp, - src/gui/npc.h, src/gui/npc_text.cpp, src/gui/npc_text.h, - src/gui/popupmenu.cpp, src/gui/requesttrade.cpp, - src/gui/requesttrade.h, src/gui/sell.cpp, src/gui/skill.cpp, - src/gui/stats.cpp, src/gui/status.cpp, src/gui/status.h, - src/gui/trade.cpp, src/net/messagein.cpp, src/net/messagein.h, - src/net/messageout.cpp, src/net/messageout.h, src/net/network.cpp, - src/net/network.h, src/net/packet.cpp, src/net/packet.h, - src/net/protocol.cpp, src/net/protocol.h, src/net/win2linux.h, - src/net/win2mac.cpp, src/net/win2mac.h: Merged with SDL_NET_TEST - branch. - * src/being.cpp, src/being.h, src/game.cpp: Simplify remove_node. - * src/being.cpp, src/being.h, src/game.cpp: Merged createBeing and - add_node into createBeing. - * src/main.cpp, src/main.h, src/gui/char_select.cpp, - src/gui/login.cpp: Removed some globals. - * src/main.cpp, src/main.h, src/gui/char_select.cpp, - src/gui/char_select.h, src/gui/char_server.cpp, src/gui/char_server.h, - src/gui/login.cpp, src/gui/login.h, src/gui/updatewindow.cpp, - src/gui/updatewindow.h: Unified the loops for the various dialogs that - are shown before the actual game starts. - * src/gui/login.cpp: Removed a close_session call i missed. - * src/gui/login.cpp: Close the session only when it was opened. - -2005-09-13 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/floor_item.cpp, src/floor_item.h, src/engine.cpp, - popupmenu.cpp: Made members private and provided more convenient - constructor. - * src/net/messageout.cpp: Fixed bug in destructor. - * src/net/network.cpp: Initialize buffers and enforce only a single - session at a time. - * src/game.cpp, src/net/protocol.h: Converted all incoming messages - handled in game.cpp to use the MessageIn class. This is a huge change - so please test if everything is still working correctly. - * src/gui/npc.cpp, src/gui/npc.h, src/gui/npc_text.cpp, - src/gui/npc_text.h: Changed argument from char* to std::string for - convenience. - * src/gui/setup.cpp, src/gui/setup.h: Enabled OpenGL checkbox and - added messagebox informing the user that apply this change requires - restarting the client. - * src/gui/updatewindow.cpp: Start displaying file progress at 0% and - some small fixes. - -2005-09-12 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/Makefile.am, src/gui/browserbox.cpp, src/gui/gui.cpp, - src/resources/resourcemanager.cpp, src/resources/resourcemanager.h, - src/resources/sdlimageloader.cpp, src/resources/sdlimageloader.h: - Added SDLImageLoader to make guichan support physfs. Removed - ResourceManager::getRealPath() because it's no longer needed. - -2005-09-12 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * data/graphics/gui/hits_blue.png, data/graphics/gui/hits_red.png, - data/graphics/gui/hits_yellow.png: Made shadow translucent. - * data/graphics/images/minimap_new_7-1.png: Added this minimap. - * data/help/changes.txt, data/help/commands.txt: Added 0.0.16 changes. - * data/maps/new_7-1.tmx.gz: Fixed well being in the wrong layer. - -2005-09-11 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/net/network.cpp: Improved error reporting a bit and got rid of - loop for sending data, which shouldn't be necessary according to - SDL_net documentation. - * src/Makefile.am, src/being.cpp, src/being.h, src/engine.cpp, - src/game.cpp, src/main.cpp, src/playerinfo.h, src/gui/char_server.cpp, - src/gui/chargedialog.cpp, src/gui/chat.cpp, - src/gui/inventorywindow.cpp, src/gui/popupmenu.cpp, src/gui/skill.cpp, - src/gui/stats.cpp, src/gui/status.cpp, src/gui/status.h, - src/net/protocol.cpp: Changed char_info into the array it's used as - for character selection and introduced player_info as the pointer to - the player information. Should help towards support for multiple - characters on the same account. Also changed PLAYER_INFO name field to - a std::string. - * src/net/win2mac.cpp, src/net/win2mac.h: A bit of clean up. - * src/net/packet.h, src/net/packet.cpp, src/net/messagein.h, - src/net/messagein.cpp, src/net/messageout.h, src/net/messageout.cpp: - Added these packet reading/writing helpers, taken from the new server - in development. - * src/gui/char_select.cpp: Made new character message be parsed - using MessageIn. Many other incoming messages should be ready to be - ported similarly, simplifying the parsing of packets because of - automatic incrementation of the read position. - * src/game.cpp, src/game.h, src/gui/popupmenu.cpp, - src/gui/requesttrade.cpp, src/gui/requesttrade.h: Changed - tradePartnerName to std::string. - * src/net/win2linux.h: Removed because it became redundant with - the use of SDL_net. - * src/game.cpp, src/game.h, src/gui/char_select.cpp, - src/net/messagein.cpp, src/net/messagein.h, src/net/network.cpp, - src/net/network.h: Got rid of usage of Packet by MessageIn, - simplifying both its usage and implementation. Now also handling - response to character selection through MessageIn. - * src/main.cpp, src/serverinfo.h, src/gui/char_select.cpp, - src/gui/char_server.cpp, src/gui/login.cpp, src/net/network.cpp, - src/net/network.h, src/net/protocol.cpp, src/net/protocol.h: - Introduced get_next_message function to reduce duplication of that - process. Also now MessageIn is used for all incoming messages handled - during the login sequence. - * src/being.cpp, src/being.h, src/game.cpp, src/game.h, - src/inventory.cpp, src/serverinfo.h, src/gui/login.cpp, - src/gui/trade.cpp, src/net/messagein.cpp, src/net/messagein.h, - src/net/network.cpp, src/net/protocol.cpp, src/net/protocol.h: Added - readCoordinates and readCoordinatePair to MessageIn for reading the - specific ways eAthena sends sends those, and converted part of - game.cpp to use the MessageIn class. Also simplified cases where - flush() was still called in a loop for sending and added asserts to - MessageIn methods. - -2005-09-10 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/log.cpp: Committed patch by Nayr for displaying a messagebox - when an error occurs on MacOS. - -2005-09-10 Björn Steinbrink <B.Steinbrink@gmx.de> - - * configure.ac: Add check for SDL_net. - -2005-09-09 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/game.cpp: Fixes to dropped items network code - -2005-09-09 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/net/win2linux.h: Removed inclusion of malloc.h header as it - doens't seem necessary and was problematic on FreeBSD. - -2005-09-08 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp: Clean the floor items when the map changes. - -2005-08-30 Eugenio Favalli <elvenprogrammer@gmail.com> - - * README, The Mana World.dev, data/graphics/sprites/items.png, - data/graphics/sprites/npcs.png, data/help/header.txt, - data/help/skills.txt, data/items.xml, data/maps/new_8-1.tmx.gz: - Updated docs for release, fixed Dev-Cpp project file, added more items - and npcs, fixed the new map and added it to the makefile. - -2005-08-31 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/openglgraphics.cpp: Fix push/pop of clip area, we need to - translate using the x/y offset, not the x/y coordinates of the clip - area. This fixes the broken scrollareas. - -2005-08-30 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev: Updated project file. - * data/graphics/sprites/npcs.png, src/gui/sell.cpp: Added empty sprite - and reorganized spriteset, fixed a typo. - -2005-08-29 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/Makefile.am, src/configlistener.cpp, src/configlistener.h: Made - the destructor inline, as it is an interface, we don't need a .cpp - file, thus it was removed. - * src/resources/image.cpp, src/resources/image.h, - src/resources/music.cpp, src/resources/music.h, - src/resources/resource.cpp, src/resources/resource.h, - src/resources/resourcemanager.cpp, src/resources/soundeffect.cpp, - src/resources/soundeffect.h: Removed the setIdPath() method from the - Resource class and added the idPath as a Constructor parameter, as - that value is not meant to be changed. - -2005-08-29 Eugenio Favalli <elvenprogrammer@gmail.com> - - * data/maps/new_8-1.tmx.gz: Some layer and walkability fixes. - -2005-08-28 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/openglgraphics.cpp, src/gui/browserbox.cpp, - src/gui/buddywindow.cpp, src/gui/buddywindow.h, src/gui/buysell.h, - src/gui/char_server.h, src/gui/chargedialog.h, src/gui/chat.cpp, - src/gui/chat.h, src/gui/confirm_dialog.h, src/gui/equipmentwindow.h, - src/gui/focushandler.h, src/gui/gui.cpp, src/gui/gui.h, - src/gui/help.h, src/gui/inttextbox.cpp, src/gui/inventorywindow.cpp, - src/gui/inventorywindow.h, src/gui/item_amount.h, - src/gui/itemcontainer.cpp, src/gui/listbox.cpp, src/gui/newskill.h, - src/gui/npc_text.h, src/gui/ok_dialog.h, src/gui/passwordfield.cpp, - src/gui/requesttrade.h, src/gui/setup.h, src/gui/stats.h, - src/gui/status.h, src/gui/textbox.cpp, src/gui/textfield.cpp, - src/gui/trade.h, src/gui/updatewindow.h: Add #include's that just - weren't necessary because the guichan folks don't provide clean - headers. This is preparatory for the case that they ever do. ;) - * src/gui/gui.cpp, src/gui/gui.h: Create a GuiConfigListener class. - * src/gui/window.h: Small cleanup. - * src/gui/window.cpp, src/gui/window.h: Create a static ConfigListener - for the Window class. (Fixes each Window listening to config changes, - although they only affect a static class member.) - -2005-08-27 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/npc.cpp: Fix a memory leak. - * src/game.cpp, src/gui/npc.cpp, src/gui/npc.h: Fix the bug when - sometimes the last entry in npc list windows is missing. The network - buffer isn't reset to all zeros, thus we can't rely on the received - string to be nul-terminated, instead we have to use the length - parameter we receive from eAthena (and this way we're also safe - against buffer overflows, because we can use strncpy()). - * src/gui/window.cpp: Bail out early if there's no window container. - * src/engine.cpp, src/game.cpp, src/gui/stats.cpp, src/gui/stats.h, - src/gui/status.cpp, src/gui/status.h: Update the stats and status - window contents only at a single location and let them do it - automagically. - * src/gui/updatewindow.cpp, src/gui/updatewindow.h: Small cleanups. - -2005-08-25 Ferreira Yohann <bertram@cegetel.net> - - * src/gui/buy.h, src/gui/buy.cpp, src/gui/sell.h, src/gui/sell.cpp, - src/gui/inventorywindow.h, src/gui/inventorywindow.cpp: Added effect - description to those each windows, and also made some improvements and - bugfixes as I was on it. - * data/maps/new_7-1.tmx.gz: Added eyecandy to the map 7-1. - -2005-08-26 Björn Steinbrink <B.Steinbrink@gmx.de> - - * ChangeLog: Fix indentation and line length. - * docs/HACKING.txt: Fix the example (OOPS!). - * src/configuration.cpp: Remove dependency on math.h. - * src/openglgraphics.cpp: Remove useless code. - * src/openglgraphics.cpp: Use glTranslatef instead of glTranslated. - Remove some useless code. - -2005-08-25 Ferreira Yohann <bertram@cegetel.net> - - * src/main.h, src/main.cpp, src/gui/login.cpp, - src/resources/buddylist.cpp, gui/char_select.cpp: Adding min and max - length check for password, more code cleanups in login and removing - possible buffer overflows by replacing some global char[] by - std::strings. - * src/items.h, src/items.cpp, src/resources/itemmanager.h, - src/resources/itemmanager.cpp, src/resources/iteminfo.h, - src/resources/iteminfo.cpp, data/items.xml, data/items.xsd: Added - Effects description to items. - -2005-08-25 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * ChangeLog: Fixed line length using tab size of 8. - * src/configuration.h, src/configuration.cpp: Removed some debug code - and updated documentation a bit. - * src/resources/resourcemanager.cpp: Removed unused (I think) headers - for Windows. - -2005-08-25 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/openglgraphics.cpp: Use the translation capabilities of OpenGL - instead of doing it ourselves all the time. - * src/graphics.cpp: Simplify the image rect drawing code a bit and - remove an obsolete included header. - * src/openglgraphics.cpp, src/openglgraphics.h: Reduce the code - duplication even further. - * src/engine.cpp, src/floor_item.cpp, src/floor_item.h: Move the - extern declaration for the floor item list into engine.cpp as it's - only used there. - * src/log.cpp: Lower indentation level. - * src/openglgraphics.cpp, src/openglgraphics.h: Reduce code - duplication. - * src/configuration.cpp: Fix compilation errors. - * src/graphics.cpp, src/openglgraphics.cpp, src/gui/button.cpp, - src/gui/checkbox.cpp, src/gui/equipmentwindow.cpp, - src/gui/itemcontainer.cpp, src/gui/minimap.cpp, - src/gui/passwordfield.cpp, src/gui/playerbox.cpp, - stc/gui/progressbar.cpp, src/gui/radiobutton.cpp, - src/gui/scrollarea.cpp, src/gui/slider.cpp, src/gui/textfield.cpp, - src/gui/window.cpp: Made our Graphics::drawImage() method respect the - clip area from the guichan part. Removed some obsolete code. - * src/gui/tabbedcontainer.h: Fix include path for guichanfwd.h. - * src/gui/tabbedcontainer.cpp, src/gui/tabbedcontainer.h: Added a new - container type, that allows switching between the contents through a - tab bar at the top of the container. - * ChangeLog: Fixed intendation and line length. - * docs/HACKING.txt: Added a notice about line length in ChangeLog and - an example for the ChangeLog format. - -2005-08-24 Ferreira Yohann <bertram@cegetel.net> - - * src/game.cpp: Simply don't show equipped items in sell dialog as it's - annoying. - * src/gui/login.h, src/gui/login.cpp: Code cleanups and improvements - to the login sequence. - -2005-08-23 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/shop.h: Fixed using a forward declaration for std::string, - where it was a class member. - * src/game.cpp, src/gui/sell.cpp, src/gui/sell.h: Made the sell dialog - accepts Items instead of looking them up in the inventory. - * src/gui/sell.cpp: Some code cleanups, simplifications and removal of - duplicate code. - * src/gui/buy.cpp, src/gui/sell.cpp, src/gui/shop.h: Avoid possible - buffer overflows by using a std::string instead of char[30]. - * src/gui/buy.cpp: Some code cleanups, simplifications and removal of - duplicate code. - -2005-08-22 Ferreira Yohann <bertram@cegetel.net> - - * src/gui/buy.cpp, src/gui/sell.cpp, src/game.cpp: Removed asserts as - they were not suitable for a stable implementation of buy/sell dialogs - and made some improvements on them. Still has to clean up code. - * src/gui/login.h, src/login.cpp: Code cleanups, little improvements of - the login function. - -2005-08-22 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/gui/skill.cpp: Disabled use button in skill dialog since is still - not being used. - -2005-08-20 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/openglgraphics.cpp: Added some missing state changes and checks. - * src/gui/inventorywindow.cpp, src/gui/item_amount.cpp, - src/gui/item_amount.h, src/gui/popupmenu.cpp, src/gui/trade.cpp: Made - the item amount dialog work on a provided item, instead of having it - ask the inventory window itself. - -2005-08-19 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/engine.cpp, src/game.cpp: The engine isn't connected to all the - gui windows, so move creation from its constructor into the game.cpp - where most of them are actually used. - * src/log.cpp, src/log.h, src/main.cpp: Added support for parsing - command line options. Added option to skip the update process. Made - logger being created immediately after startup, because some - destructors use it. - -2005-08-18 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, src/game.cpp, src/gui/skill.h, src/gui/skill.cpp: - Updated reference to latest libxml, fixed a bug in updating skills, - updated skill names database. - -2005-08-18 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/Makefile.am, src/graphics.cpp, src/graphics.h, src/main.cpp, - src/openglgraphics.cpp src/openglgraphics.h, src/gui/gui.cpp, - src/resources/image.h: Semi-separated OpenGL and SDL graphics classes, - improves OpenGL performance quite a bit, while rewriting a good bunch - of code provided by guichan (but maybe we'll diverge so much that we'd - need that anyways...) - -2005-08-17 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/configuration.cpp, src/resources/itemmanager.cpp, - src/resources/mapreader.cpp: Removed special #ifdefs for libxml2 - linking issues in Win32. - -2005-08-16 Ferreira Yohann <bertram@cegetel.net> - - * src/gui/window.h, src/gui/window.cpp: Bugfixing and simplifying - resize code. - * debian/*: Updates to the debian packaging files. (The actual update - was from a few days ago.) Now we have the tmw, tmw-data and tmw-music - packages. - * src/gui/setup.h, src/gui/setup.cpp: Now the setup (Config) windows - works as it should be. (The actual update was from a few days ago.) - -2005-08-16 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev, src/gui/status.cpp, src/gui/window.cpp, - src/gui/window.h, src/gui/windowcontainer.h, - data/graphics/gui/resize.png: Added a resize grip to resizable window, - fixed some compiling errors. - -2005-08-15 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/engine.cpp, src/gui/gui.cpp, src/gui/gui.h: Removed guiTop global - variable. - * src/graphics.cpp, src/graphics.h, src/main.cpp: Made the OpenGL - related code fully #ifdef'ed. - * src/main.cpp, src/gui/browserbox.cpp, src/gui/gui.cpp, - src/resources/image.cpp, src/resources/image.h: Fully faded out the - useOpenGL global. Image and Graphics keep track of the mode on their - own now (the latter will go away once we have separate classes...) - * src/graphics.cpp, src/graphics.h, src/main.cpp, src/main.h, - src/gui/browserbox.cpp, src/gui/gui.cpp, src/resources/image.cpp: - Started to fade out the useOpenGL global variable. - * src/engine.cpp, src/gui/char_select.cpp, src/gui/char_server.cpp, - src/gui/chat.cpp, src/gui/gui.cpp, src/gui/gui.h, src/gui/login.cpp, - src/gui/popupmenu.cpp, src/gui/setup.cpp, src/gui/updatewindow.cpp, - src/gui/window.cpp: Removed guiGraphics global pointer and removed - dependencies on gui.h in some places. - - -2005-08-14 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/graphics.cpp, src/graphics.h, src/resources/image.cpp, - src/resources/image.h: Moved the image drawing code into the graphics - class. - * src/being.cpp, src/engine.cpp, src/graphics.cpp, src/graphics.h: Made - the wrapper functions in the Graphics class conditional on whether we - compile with OpenGL support. - -2005-08-13 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/Makefile.am, src/being.cpp, src/being.h, src/configlistener.cpp, - src/configlistener.h, src/configuration.cpp, src/configuration.h, - src/engine.cpp, src/engine.h, src/equipment.cpp, src/equipment.h, - src/game.cpp, src/game.h, src/graphics.cpp, src/graphics.h, - src/guichanfwd.h, src/inventory.cpp, src/inventory.h, src/item.h, - src/log.cpp, src/log.h, src/main.cpp, src/main.h, src/map.cpp, - src/map.h, src/playerinfo.h, src/sound.cpp, src/sound.h, - src/graphic/imagerect.h, src/graphic/spriteset.cpp, - src/graphic/spriteset.h, src/gui/box.h, src/gui/browserbox.cpp, - src/gui/browserbox.h, src/gui/buddywindow.h, src/gui/button.cpp, - src/gui/button.h, src/gui/buy.cpp, src/gui/buy.h, src/gui/buysell.h, - src/gui/char_select.cpp, src/gui/char_select.h, - src/gui/char_server.cpp, src/gui/char_server.h, - src/gui/chargedialog.cpp, src/gui/chargedialog.h, src/gui/chat.cpp, - src/gui/chat.h, src/gui/chatinput.cpp, src/gui/checkbox.cpp, - src/gui/checkbox.h, src/gui/confirm_dialog.cpp, - src/gui/confirm_dialog.h, src/gui/equipmentwindow.cpp, - src/gui/equipmentwindow.h, src/gui/focushandler.h, src/gui/gui.cpp, - src/gui/gui.h, src/gui/help.cpp, src/gui/help.h, - src/gui/inttextbox.cpp, src/gui/inttextbox.h, - src/gui/inventorywindow.cpp, src/gui/inventorywindow.h, - src/gui/item_amount.cpp, src/gui/item_amount.h, - src/gui/itemcontainer.cpp, src/gui/itemcontainer.h, - src/gui/listbox.cpp, src/gui/listbox.h, src/gui/login.cpp, - src/gui/login.h, src/gui/minimap.cpp, src/gui/minimap.h, - src/gui/newskill.cpp, src/gui/newskill.h, src/gui/npc.h, - src/gui/npc_text.h, src/gui/ok_dialog.cpp, src/gui/ok_dialog.h, - src/gui/passwordfield.h, src/gui/playerbox.cpp, src/gui/playerbox.h, - src/gui/popupmenu.cpp, src/gui/popupmenu.h, src/gui/progressbar.cpp, - src/gui/progressbar.h, src/gui/radiobutton.cpp, src/gui/radiobutton.h, - src/gui/requesttrade.cpp, src/gui/requesttrade.h, - src/gui/scrollarea.cpp, src/gui/scrollarea.h, src/gui/sell.cpp, - src/gui/sell.h, src/gui/setup.cpp, src/gui/setup.h, src/gui/skill.h, - src/gui/slider.cpp, src/gui/slider.h, src/gui/stats.cpp, - src/gui/stats.h, src/gui/status.cpp, src/gui/status.h, - src/gui/textbox.cpp, src/gui/textbox.h, src/gui/textfield.cpp, - src/gui/textfield.h, src/gui/trade.cpp, src/gui/trade.h, - src/gui/updatewindow.cpp, src/gui/updatewindow.h, src/gui/window.cpp, - src/gui/window.h, src/gui/windowcontainer.h, src/net/protocol.cpp, - src/net/protocol.h, src/resources/buddylist.hm - src/resources/image.cpp, src/resources/image.h, - src/resources/itemmanager.cpp, src/resources/itemmanager.h, - src/resources/mapreader.cpp, src/resources/mapreader.h, - src/resources/music.h, src/resources/resource.cpp, - src/resources/resourcemanager.cpp, src/resources/resourcemanager.h, - src/resources/soundeffect.h: Huge header cleanup, removing nearly all - #include's from headers to reduce dependencies and compile time. - * src/engine.cpp, src/gui/char_select.cpp, src/gui/inventorywindow.cpp, - src/gui/skill.cpp, src/gui/skill.h, src/gui/stats.cpp, - src/gui/status.cpp: Another small header cleanup, should also solve - compilation problems on windows. - * src/gui/sell.cpp: Reset selection in the sell dialog if all items at - the selected slot are sold. - -2005-08-13 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/gui/status.h, src/gui/status.cpp: Reformatted status window - layout to avoid overlapping and lowered saturation of bars' colors. - * src/gui/status.cpp: Removed smooth color changing from xp bar which - was causing problems and doesn't act as the job xp bar. - * The Mana World.dev, src/game.cpp, src/playerinfo.h, - src/net/protocol.cpp, src/resources/itemmanager.cpp, - src/gui/inventorywindow.cpp: Updated dev-cpp project file, removed - unnecessary header, fixed some include paths. - -2005-08-12 Eugenio Favalli <elvenprogrammer@gmail.com> - - * src/buy.cpp, src/sell.cpp: Resetting quantity to 0 after selecting - other items in buy/sell dialogs. - -2005-08-11 Andrej Sinicyn <andrej4000@gmail.com> - - * src/resources/image.cpp: Little cleanup and simplification. - -2005-08-10 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/engine.cpp, src/graphics.cpp, src/graphics.h, - src/gui/browserbox.cpp, src/gui/gui.cpp, src/gui/listbox.cpp, - src/gui/minimap.cpp, src/gui/progressbar.cpp, src/gui/scrollarea.cpp: - Moved knowledge about whether we use OpenGL into the Graphics class (as - much as possible) - * src/game.cpp: Added helper function for being creation to reduce code - duplication. Some code simplifications. - -2005-08-09 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/engine.cpp: Adjust drawing offset to have the player centered in - higher resolutions as well. - -2005-08-04 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/main.cpp: Use "true" instead of "1" as bool argument. - * src/resources/resourcemanager.cpp, src/resources/resourcemanager.h: - Added a method to determine the real path of a file in the PhysFS - search path. - * src/gui/browserbox.cpp: Make use of then new resource manager method - to determine the real path of a file. - * src/gui/gui.cpp: Dynamically determine the path to graphic files - instead of using the try-catch fallback method. - -2005-08-03 Andrej Sinicyn <andrej4000@gmail.com> - - * src/game.cpp, src/game.h, src/gui/requesttrade.cpp, - src/gui/requesttrade.h: Moved my invented variable, since it makes more - sense. - * src/game.cpp, src/game.h, src/gui/requesttrade.cpp: Fix my previous - fix because it broke my own code. - -2005-08-03 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/main.cpp: Use PhysFS to determine user's home directory on unix - system. Removed an now unused header. - * src/game.cpp: Commented a switch case label that was left uncommented - though the rest was commented. - * src/resources/buddylist.cpp, src/main.h: Removed unneeded header from - main.h, added it to buddylist.cpp. - * src/engine.cpp: Converted two global variables to function-local - ones. - -2005-08-02 Andrej Sinicyn <andrej4000@gmail.com> - - * src/game.cpp: Fixed "Trade canceled" happening often. - -2005-08-02 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/engine.cpp: Cleanups in the drawing code. - * src/engine.cpp, src/game.cpp: Made autoTarget checks being handled at - a single location. - * src/being.cpp, src/being.h, src/engine.h: Small header cleanups. - * src/graphics.cpp, src/graphics.h, src/main.cpp, src/main.h, - src/gui/setup.cpp: Moved graphics setup code into the graphics class. - -2005-08-02 Marcel W. Wysocki <maci@satgnu.org> - - * tmw/src/gui/status.cpp: making setup dialog quitting when clicking - on setup button while dialog is opened - -2005-08-01 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/inventory.cpp, src/inventory.h, src/gui/itemcontainer.cpp, - src/gui/itemcontainer.h: Added a logic function to dynamically adjust - the size of the itemcontainer. - * src/game.cpp: Fixed autoTarget not being set to NULL on map change. - -2005-07-31 Andrej Sinicyn <andrej4000@gmail.com> - - * src/game.cpp, src/game.h, src/gui/popupmenu.cpp: Show the name of the - trade partner in the trade dialog. - -2005-07-31 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/listbox.cpp: Small cleanup of the drawing code. - * src/engine.cpp: Added a check to stop scrolling when we hit the map - border. - -2005-07-31 Andrej Sinicyn <andrej4000@gmail.com> - - * src/game.cpp: Don't allow more than one trade dialog or requesting it - at once; if a trade is canceled on the other side, close the trade - window. - -2005-07-30 Andrej Sinicyn <andrej4000@gmail.com> - - * src/main.cpp: Removed unnecessary value assignment to a variable. - -2005-07-30 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/main.cpp, src/resources/resourcemanager.h, - src/resources/resourcemanager.cpp: Fixed buggy check for the existence - of the updates directory. Extended the resource manager with some - physfs functions and moved the actual setup process from the resource - manager constructor into the main initialization. - -2005-07-29 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp: Fixed popup window not always being correctly hidden - when the player clicks somewhere else. - -2005-07-28 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/main.cpp, src/gui/update.cpp, src/resources/resourcemanager.cpp, - src/resources/resourcemanager.h: Added support for files downloaded - through the update manager to the resource manager. Changed directory - name for updates from "data" to "updates". - * src/game.cpp, src/gui/inventorywindow.cpp, src/gui/popupmenu.cpp, - src/gui/popupmenu.h: Cleaned up the showPopup() code, moved - "map"-related code into game.cpp, made the popup show up at mouse - coordinates instead of being aligned to tiles. - * src/being.cpp, src/being.h, src/engine.cpp, src/game.cpp, src/game.h, - src/gui/gui.cpp, src/net/protocol.cpp: Added an action enumeration to - the Being class and removed the old #define's. - * src/resources/resourcemanager.cpp: Fixed a location where a wrong - dir-separator was used. - * src/main.cpp: Fixed updates directory not being created on non-unix - systems. Started using PhysFS write support. - -2005-07-27 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * src/engine.cpp, src/game.cpp, src/graphics.cpp, src/graphics.h, - src/main.cpp, src/gui/browserbox.cpp, src/gui/button.cpp, - src/gui/gui.cpp, src/gui/listbox.cpp, src/gui/minimap.cpp, - src/gui/playerbox.cpp, src/gui/progressbar.cpp, - src/gui/scrollarea.cpp, src/gui/textfield.cpp, src/gui/window.cpp, - src/resources/image.cpp, src/resources/image.h, - src/resources/mapreader.h: Merged OpenGL/SDL merge patch by Andrej - Sinicyn, and his followup patch for fixing SDL-only build. - -2005-07-27 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/gui/gui.cpp, src/gui/gui.h: Removed continous mouse movement, - that implementation wasn't suitable for a release. - -2005-07-26 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/being.cpp, src/being.h, src/engine.cpp, src/game.cpp, - src/gui/minimap.cpp, src/gui/popupmenu.cpp, src/net/protocol.cpp: - Introduced a Being::Type enumeration. Added type-aware findNode() - function. - * src/being.cpp: Set font back to gui font after drawing speech. - Draw auto-target marker in engine instead of being. - * src/gui/popupmenu.cpp: Fixed empty popup window being shown when user - right clicks on an empty tile while the popup is visible. - -2005-07-26 Eugenio Favalli <elvenprogrammer@gmail.com> - - * The Mana World.dev: Updated release infos. - * data/graphics/sprites/emotions.png: Added Modanung's smilies. - * src/being.cpp, src/engine.cpp: Fixed text and smilies position. - * src/game.cpp: Cleanups. - * src/gui/skill.cpp: Added new skill names. - * src/main.cpp: Moved sound playback to update screen and changed song. - -2005-07-24 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/game.cpp: Made the key-event handler use switches instead of - if-else. - * src/gui/gui.cpp, src/gui/gui.h: Allow continous movement when holding - down the left mouse button. - -2005-07-23 Björn Steinbrink <B.Steinbrink@gmx.de> - - * src/being.h, src/being.cpp: Added a member to keep the current map, - restored setDestination. - * src/game.cpp, src/gui/gui.cpp: Change calls to Being::setPath() to - Being::setDestination(). - * src/map.h: Add a forward declaration for struct PATH_NODE. - -2005-07-23 Bjørn Lindeijer <bjorn@lindeijer.nl> - - * NEWS: Moved project news here. - * ChangeLog: Started standard ChangeLog file here. - * docs/HACKING.txt: Added info about member naming and ChangeLog - format. - * src/gui/updatewindow.h, src/gui/updatewindow.cpp: Changed member - names, set a 15 second timeout for connecting to update server and - restore some doxygen comments, improved size adaption and made the - window a shorter. - * data/graphics/images/login_wallpaper.png: New login wallpaper by - Momotaro. diff --git a/English.lproj/InfoPlist.strings b/English.lproj/InfoPlist.strings Binary files differindex 5e45963c..7080cf94 100644 --- a/English.lproj/InfoPlist.strings +++ b/English.lproj/InfoPlist.strings diff --git a/English.lproj/MainMenu.xib b/English.lproj/MainMenu.xib deleted file mode 100644 index c1d215fa..00000000 --- a/English.lproj/MainMenu.xib +++ /dev/null @@ -1,639 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03"> - <data> - <int key="IBDocument.SystemTarget">1050</int> - <string key="IBDocument.SystemVersion">9G55</string> - <string key="IBDocument.InterfaceBuilderVersion">677</string> - <string key="IBDocument.AppKitVersion">949.43</string> - <string key="IBDocument.HIToolboxVersion">353.00</string> - <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> - <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="57"/> - <integer value="371"/> - </object> - <object class="NSArray" key="IBDocument.PluginDependencies"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.apple.InterfaceBuilderKit</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - </object> - <object class="NSMutableDictionary" key="IBDocument.Metadata"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSCustomObject" id="1021"> - <string key="NSClassName">NSApplication</string> - </object> - <object class="NSCustomObject" id="1014"> - <string key="NSClassName">FirstResponder</string> - </object> - <object class="NSCustomObject" id="1050"> - <string key="NSClassName">NSApplication</string> - </object> - <object class="NSMenu" id="649796088"> - <string key="NSTitle">AMainMenu</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMenuItem" id="694149608"> - <reference key="NSMenu" ref="649796088"/> - <string key="NSTitle">Aethyra</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <object class="NSCustomResource" key="NSOnImage" id="35465992"> - <string key="NSClassName">NSImage</string> - <string key="NSResourceName">NSMenuCheckmark</string> - </object> - <object class="NSCustomResource" key="NSMixedImage" id="502551668"> - <string key="NSClassName">NSImage</string> - <string key="NSResourceName">NSMenuMixedState</string> - </object> - <string key="NSAction">submenuAction:</string> - <object class="NSMenu" key="NSSubmenu" id="110575045"> - <string key="NSTitle">Aethyra</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMenuItem" id="238522557"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">About Aethyra</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - <object class="NSMenuItem" id="481834944"> - <reference key="NSMenu" ref="110575045"/> - <bool key="NSIsDisabled">YES</bool> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - <object class="NSMenuItem" id="1046388886"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">Services</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - <string key="NSAction">submenuAction:</string> - <object class="NSMenu" key="NSSubmenu" id="752062318"> - <string key="NSTitle">Services</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <string key="NSName">_NSServicesMenu</string> - </object> - </object> - <object class="NSMenuItem" id="646227648"> - <reference key="NSMenu" ref="110575045"/> - <bool key="NSIsDisabled">YES</bool> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - <object class="NSMenuItem" id="755159360"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">Hide Aethyra</string> - <string key="NSKeyEquiv">h</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - <object class="NSMenuItem" id="342932134"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">Hide Others</string> - <string key="NSKeyEquiv">h</string> - <int key="NSKeyEquivModMask">1572864</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - <object class="NSMenuItem" id="908899353"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">Show All</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - <object class="NSMenuItem" id="1056857174"> - <reference key="NSMenu" ref="110575045"/> - <bool key="NSIsDisabled">YES</bool> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - <object class="NSMenuItem" id="632727374"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">Quit Aethyra</string> - <string key="NSKeyEquiv">q</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - </object> - <string key="NSName">_NSAppleMenu</string> - </object> - </object> - <object class="NSMenuItem" id="713487014"> - <reference key="NSMenu" ref="649796088"/> - <string key="NSTitle">Window</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - <string key="NSAction">submenuAction:</string> - <object class="NSMenu" key="NSSubmenu" id="835318025"> - <string key="NSTitle">Window</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMenuItem" id="1011231497"> - <reference key="NSMenu" ref="835318025"/> - <string key="NSTitle">Minimize</string> - <string key="NSKeyEquiv">m</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - <object class="NSMenuItem" id="575023229"> - <reference key="NSMenu" ref="835318025"/> - <string key="NSTitle">Zoom</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - <object class="NSMenuItem" id="299356726"> - <reference key="NSMenu" ref="835318025"/> - <bool key="NSIsDisabled">YES</bool> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - <object class="NSMenuItem" id="625202149"> - <reference key="NSMenu" ref="835318025"/> - <string key="NSTitle">Bring All to Front</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="35465992"/> - <reference key="NSMixedImage" ref="502551668"/> - </object> - </object> - <string key="NSName">_NSWindowsMenu</string> - </object> - </object> - </object> - <string key="NSName">_NSMainMenu</string> - </object> - <object class="NSWindowTemplate" id="972006081"> - <int key="NSWindowStyleMask">15</int> - <int key="NSWindowBacking">2</int> - <string key="NSWindowRect">{{335, 390}, {480, 360}}</string> - <int key="NSWTFlags">1946157056</int> - <string key="NSWindowTitle">Window</string> - <string key="NSWindowClass">NSWindow</string> - <nil key="NSViewClass"/> - <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> - <object class="NSView" key="NSWindowView" id="439893737"> - <reference key="NSNextResponder"/> - <int key="NSvFlags">256</int> - <string key="NSFrameSize">{480, 360}</string> - <reference key="NSSuperview"/> - </object> - <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> - <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> - </object> - <object class="NSCustomObject" id="755631768"> - <string key="NSClassName">NSFontManager</string> - </object> - </object> - <object class="IBObjectContainer" key="IBDocument.Objects"> - <object class="NSMutableArray" key="connectionRecords"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">performMiniaturize:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="1011231497"/> - </object> - <int key="connectionID">37</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">arrangeInFront:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="625202149"/> - </object> - <int key="connectionID">39</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">orderFrontStandardAboutPanel:</string> - <reference key="source" ref="1021"/> - <reference key="destination" ref="238522557"/> - </object> - <int key="connectionID">142</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">performZoom:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="575023229"/> - </object> - <int key="connectionID">240</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">hide:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="755159360"/> - </object> - <int key="connectionID">367</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">hideOtherApplications:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="342932134"/> - </object> - <int key="connectionID">368</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">unhideAllApplications:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="908899353"/> - </object> - <int key="connectionID">370</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">terminate:</string> - <reference key="source" ref="1050"/> - <reference key="destination" ref="632727374"/> - </object> - <int key="connectionID">449</int> - </object> - </object> - <object class="IBMutableOrderedSet" key="objectRecords"> - <object class="NSArray" key="orderedObjects"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBObjectRecord"> - <int key="objectID">0</int> - <object class="NSArray" key="object" id="1049"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <reference key="children" ref="1048"/> - <nil key="parent"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-2</int> - <reference key="object" ref="1021"/> - <reference key="parent" ref="1049"/> - <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-1</int> - <reference key="object" ref="1014"/> - <reference key="parent" ref="1049"/> - <string key="objectName">First Responder</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-3</int> - <reference key="object" ref="1050"/> - <reference key="parent" ref="1049"/> - <string key="objectName">Application</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">29</int> - <reference key="object" ref="649796088"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="713487014"/> - <reference ref="694149608"/> - </object> - <reference key="parent" ref="1049"/> - <string key="objectName">MainMenu</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">19</int> - <reference key="object" ref="713487014"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="835318025"/> - </object> - <reference key="parent" ref="649796088"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">56</int> - <reference key="object" ref="694149608"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="110575045"/> - </object> - <reference key="parent" ref="649796088"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">57</int> - <reference key="object" ref="110575045"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="238522557"/> - <reference ref="755159360"/> - <reference ref="908899353"/> - <reference ref="632727374"/> - <reference ref="646227648"/> - <reference ref="481834944"/> - <reference ref="1046388886"/> - <reference ref="1056857174"/> - <reference ref="342932134"/> - </object> - <reference key="parent" ref="694149608"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">58</int> - <reference key="object" ref="238522557"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">134</int> - <reference key="object" ref="755159360"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">150</int> - <reference key="object" ref="908899353"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">136</int> - <reference key="object" ref="632727374"/> - <reference key="parent" ref="110575045"/> - <string key="objectName">1111</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">144</int> - <reference key="object" ref="646227648"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">143</int> - <reference key="object" ref="481834944"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">131</int> - <reference key="object" ref="1046388886"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="752062318"/> - </object> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">149</int> - <reference key="object" ref="1056857174"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">145</int> - <reference key="object" ref="342932134"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">130</int> - <reference key="object" ref="752062318"/> - <reference key="parent" ref="1046388886"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">24</int> - <reference key="object" ref="835318025"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="299356726"/> - <reference ref="625202149"/> - <reference ref="575023229"/> - <reference ref="1011231497"/> - </object> - <reference key="parent" ref="713487014"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">92</int> - <reference key="object" ref="299356726"/> - <reference key="parent" ref="835318025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5</int> - <reference key="object" ref="625202149"/> - <reference key="parent" ref="835318025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">239</int> - <reference key="object" ref="575023229"/> - <reference key="parent" ref="835318025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">23</int> - <reference key="object" ref="1011231497"/> - <reference key="parent" ref="835318025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">371</int> - <reference key="object" ref="972006081"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="439893737"/> - </object> - <reference key="parent" ref="1049"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">372</int> - <reference key="object" ref="439893737"/> - <reference key="parent" ref="972006081"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">420</int> - <reference key="object" ref="755631768"/> - <reference key="parent" ref="1049"/> - </object> - </object> - </object> - <object class="NSMutableDictionary" key="flattenedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>-1.IBPluginDependency</string> - <string>-2.IBPluginDependency</string> - <string>-3.IBPluginDependency</string> - <string>130.IBPluginDependency</string> - <string>130.ImportedFromIB2</string> - <string>130.editorWindowContentRectSynchronizationRect</string> - <string>131.IBPluginDependency</string> - <string>131.ImportedFromIB2</string> - <string>134.IBPluginDependency</string> - <string>134.ImportedFromIB2</string> - <string>136.IBPluginDependency</string> - <string>136.ImportedFromIB2</string> - <string>143.IBPluginDependency</string> - <string>143.ImportedFromIB2</string> - <string>144.IBPluginDependency</string> - <string>144.ImportedFromIB2</string> - <string>145.IBPluginDependency</string> - <string>145.ImportedFromIB2</string> - <string>149.IBPluginDependency</string> - <string>149.ImportedFromIB2</string> - <string>150.IBPluginDependency</string> - <string>150.ImportedFromIB2</string> - <string>19.IBPluginDependency</string> - <string>19.ImportedFromIB2</string> - <string>23.IBPluginDependency</string> - <string>23.ImportedFromIB2</string> - <string>239.IBPluginDependency</string> - <string>239.ImportedFromIB2</string> - <string>24.IBEditorWindowLastContentRect</string> - <string>24.IBPluginDependency</string> - <string>24.ImportedFromIB2</string> - <string>24.editorWindowContentRectSynchronizationRect</string> - <string>29.IBEditorWindowLastContentRect</string> - <string>29.IBPluginDependency</string> - <string>29.ImportedFromIB2</string> - <string>29.WindowOrigin</string> - <string>29.editorWindowContentRectSynchronizationRect</string> - <string>371.IBEditorWindowLastContentRect</string> - <string>371.IBWindowTemplateEditedContentRect</string> - <string>371.NSWindowTemplate.visibleAtLaunch</string> - <string>371.editorWindowContentRectSynchronizationRect</string> - <string>371.windowTemplate.maxSize</string> - <string>372.IBPluginDependency</string> - <string>420.IBPluginDependency</string> - <string>5.IBPluginDependency</string> - <string>5.ImportedFromIB2</string> - <string>56.IBPluginDependency</string> - <string>56.ImportedFromIB2</string> - <string>57.IBEditorWindowLastContentRect</string> - <string>57.IBPluginDependency</string> - <string>57.ImportedFromIB2</string> - <string>57.editorWindowContentRectSynchronizationRect</string> - <string>58.IBPluginDependency</string> - <string>58.ImportedFromIB2</string> - <string>92.IBPluginDependency</string> - <string>92.ImportedFromIB2</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilderKit</string> - <string>com.apple.InterfaceBuilderKit</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <integer value="1" id="9"/> - <string>{{436, 809}, {64, 6}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{294, 212}, {197, 73}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{525, 802}, {197, 73}}</string> - <string>{{207, 285}, {170, 20}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{74, 862}</string> - <string>{{6, 978}, {478, 20}}</string> - <string>{{335, 390}, {480, 360}}</string> - <string>{{335, 390}, {480, 360}}</string> - <reference ref="9"/> - <string>{{33, 99}, {480, 360}}</string> - <string>{3.40282e+38, 3.40282e+38}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{219, 132}, {191, 153}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{23, 794}, {245, 183}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - </object> - </object> - <object class="NSMutableDictionary" key="unlocalizedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="activeLocalization"/> - <object class="NSMutableDictionary" key="localizations"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="sourceID"/> - <int key="maxID">449</int> - </object> - <object class="IBClassDescriber" key="IBDocument.Classes"/> - <int key="IBDocument.localizationMode">0</int> - <string key="IBDocument.LastKnownRelativeProjectPath">../Aethyra.xcodeproj</string> - <int key="IBDocument.defaultPropertyAccessControl">3</int> - </data> -</archive> diff --git a/English.lproj/main.xib b/English.lproj/main.xib deleted file mode 100644 index 2650d897..00000000 --- a/English.lproj/main.xib +++ /dev/null @@ -1,1492 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.Carbon.XIB" version="7.02"> - <data> - <int key="IBDocument.SystemTarget">1050</int> - <string key="IBDocument.SystemVersion">9D24</string> - <string key="IBDocument.InterfaceBuilderVersion">653</string> - <string key="IBDocument.AppKitVersion">949.32</string> - <string key="IBDocument.HIToolboxVersion">352.00</string> - <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSArray" key="IBDocument.PluginDependencies"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - </object> - <object class="NSMutableArray" key="IBDocument.RootObjects" id="730970675"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBHIWindowTemplate" id="954842773"> - <integer value="0" key="doesNotHide" id="8"/> - <reference key="squareCorners" ref="8"/> - <reference key="autoViewDragTracking" ref="8"/> - <integer value="1" key="receivesActivates" id="9"/> - <reference key="receivesUpdates" ref="8"/> - <reference key="hasCloseBox" ref="9"/> - <reference key="hasCollapseBox" ref="9"/> - <reference key="hasHorizontalZoom" ref="9"/> - <reference key="resizable" ref="9"/> - <reference key="hasSideTitle" ref="8"/> - <reference key="hasVerticalZoom" ref="9"/> - <reference key="standardHandler" ref="9"/> - <reference key="liveResize" ref="9"/> - <reference key="toolbarButton" ref="8"/> - <reference key="metal" ref="8"/> - <reference key="unifiedTitleAndToolbar" ref="8"/> - <reference key="compositing" ref="9"/> - <reference key="ignoreClicks" ref="8"/> - <reference key="asyncDrag" ref="8"/> - <reference key="constrained" ref="9"/> - <reference key="hideOnFullScreen" ref="8"/> - <reference key="hideOnSuspend" ref="8"/> - <reference key="hasShadow" ref="9"/> - <reference key="noMetalContentSeparator" ref="8"/> - <reference key="doesNotCycle" ref="8"/> - <reference key="inWindowMenu" ref="9"/> - <reference key="visibleWithoutLogin" ref="8"/> - <reference key="opaqueForEvents" ref="8"/> - <integer value="6" key="windowClass"/> - <reference key="themeBrush" ref="8"/> - <reference key="windowPosition" ref="8"/> - <integer value="1048576" key="scalingMode"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <nil key="classID"/> - <string key="title">Window</string> - <object class="IBHIRootControl" key="rootControl" id="109639387"> - <nil key="NSNextResponder"/> - <int key="NSvFlags">256</int> - <string key="NSFrameSize">{480, 360}</string> - <reference key="controlSignature" ref="8"/> - <reference key="controlID" ref="8"/> - <reference key="enabled" ref="9"/> - <reference key="hidden" ref="8"/> - <integer value="9999" key="fontStyle"/> - <reference key="controlSize" ref="8"/> - <reference key="command" ref="8"/> - <nil key="helpTagExtendedText"/> - <nil key="helpTagText"/> - <reference key="helpTagDisplaySide" ref="8"/> - <object class="NSArray" key="auxiliaryProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="IBCarbonHILayoutInfo" key="layoutInfo"> - <nil key="bindingTopView"/> - <reference key="bindingTopKind" ref="8"/> - <real value="0.000000e+00" key="bindingTopOffset"/> - <nil key="bindingLeftView"/> - <reference key="bindingLeftKind" ref="8"/> - <real value="0.000000e+00" key="bindingLeftOffset"/> - <nil key="bindingBottomView"/> - <reference key="bindingBottomKind" ref="8"/> - <real value="0.000000e+00" key="bindingBottomOffset"/> - <nil key="bindingRightView"/> - <reference key="bindingRightKind" ref="8"/> - <real value="0.000000e+00" key="bindingRightOffset"/> - <real value="0.000000e+00" key="scaleXRatio"/> - <nil key="scaleXView"/> - <reference key="scaleXKind" ref="8"/> - <real value="0.000000e+00" key="scaleYRatio"/> - <nil key="scaleYView"/> - <reference key="scaleYKind" ref="8"/> - <reference key="positionXKind" ref="8"/> - <nil key="positionXView"/> - <real value="0.000000e+00" key="positionXOffset"/> - <reference key="positionYKind" ref="8"/> - <nil key="positionYView"/> - <real value="0.000000e+00" key="positionYOffset"/> - </object> - <reference key="layoutSuspended" ref="8"/> - <object class="NSArray" key="instantiationProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <nil key="classID"/> - </object> - <reference key="autoPositionMask" ref="8"/> - <string key="windowRectAsNSRect">{{355, 390}, {480, 360}}</string> - <string key="autoScreenRectAsNSRect">{{0, 0}, {1024, 768}}</string> - <reference key="helpTagDisplaySide" ref="8"/> - <object class="NSArray" key="instantiationProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <object class="IBHIMenu" id="488802891"> - <string key="NSTitle">main</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBHIMenuItem" id="307734992"> - <reference key="NSMenu" ref="488802891"/> - <string type="base64-UTF8" key="NSTitle">77+9UFJPSkVDVE5BTUVBU1hNTO+/vQ</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <object class="NSImage" key="NSOnImage" id="491514580"> - <string key="NSName">NSMenuCheckmark</string> - <int key="NSImageFlags">1623195648</int> - </object> - <object class="NSImage" key="NSMixedImage" id="426606243"> - <string key="NSName">NSMenuMixedState</string> - <int key="NSImageFlags">1623195648</int> - </object> - <string key="NSAction">submenuAction:</string> - <object class="IBHIMenu" key="NSSubmenu" id="361625475"> - <string type="base64-UTF8" key="NSTitle">77+9UFJPSkVDVE5BTUVBU1hNTO+/vQ</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBHIMenuItem" id="661461591"> - <reference key="NSMenu" ref="361625475"/> - <string type="base64-UTF8" key="NSTitle">QWJvdXQg77+9UFJPSkVDVE5BTUVBU1hNTO+/vQ</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string type="base64-UTF8" key="title">QWJvdXQg77+9UFJPSkVDVE5BTUVBU1hNTO+/vQ</string> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <reference key="keyEquivalentModifierMask" ref="8"/> - <integer value="1633841013" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - </object> - <object class="NSMutableString" key="NSName" id="927192745"> - <characters key="NS.bytes">_NSAppleMenu</characters> - </object> - <string type="base64-UTF8" key="title">77+9UFJPSkVDVE5BTUVBU1hNTO+/vQ</string> - <reference key="menuID" ref="8"/> - <reference key="name" ref="927192745"/> - <reference key="excludesMarkColumn" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="usePencilGlyph" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="condenseSeparators" ref="8"/> - </object> - <string type="base64-UTF8" key="title">77+9UFJPSkVDVE5BTUVBU1hNTO+/vQ</string> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <reference key="command" ref="8"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="153487890"> - <reference key="NSMenu" ref="488802891"/> - <string key="NSTitle">File</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="NSAction">submenuAction:</string> - <object class="IBHIMenu" key="NSSubmenu" id="852883025"> - <string key="NSTitle">File</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBHIMenuItem" id="355504441"> - <reference key="NSMenu" ref="852883025"/> - <string key="NSTitle">New</string> - <string key="NSKeyEquiv">n</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">New</string> - <string key="keyEquivalent">n</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1852143392" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="882200333"> - <reference key="NSMenu" ref="852883025"/> - <string type="base64-UTF8" key="NSTitle">T3BlbuKApg</string> - <string key="NSKeyEquiv">o</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string type="base64-UTF8" key="title">T3BlbuKApg</string> - <string key="keyEquivalent">o</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1869636974" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="377997055"> - <reference key="NSMenu" ref="852883025"/> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title"/> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <reference key="command" ref="8"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="462187002"> - <reference key="NSMenu" ref="852883025"/> - <string key="NSTitle">Close</string> - <string key="NSKeyEquiv">w</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Close</string> - <string key="keyEquivalent">w</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1668050803" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="581088052"> - <reference key="NSMenu" ref="852883025"/> - <string key="NSTitle">Save</string> - <string key="NSKeyEquiv">s</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Save</string> - <string key="keyEquivalent">s</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1935767141" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="336480090"> - <reference key="NSMenu" ref="852883025"/> - <string type="base64-UTF8" key="NSTitle">U2F2ZSBBc+KApg</string> - <string key="NSKeyEquiv">S</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string type="base64-UTF8" key="title">U2F2ZSBBc+KApg</string> - <string key="keyEquivalent">S</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1937138035" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="487635443"> - <reference key="NSMenu" ref="852883025"/> - <string key="NSTitle">Revert</string> - <string key="NSKeyEquiv">r</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Revert</string> - <string key="keyEquivalent">r</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1920365172" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="698277588"> - <reference key="NSMenu" ref="852883025"/> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title"/> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <reference key="command" ref="8"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="91227184"> - <reference key="NSMenu" ref="852883025"/> - <string type="base64-UTF8" key="NSTitle">UGFnZSBTZXR1cOKApg</string> - <string key="NSKeyEquiv">P</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string type="base64-UTF8" key="title">UGFnZSBTZXR1cOKApg</string> - <string key="keyEquivalent">P</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1885431653" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="23501516"> - <reference key="NSMenu" ref="852883025"/> - <string type="base64-UTF8" key="NSTitle">UHJpbnTigKY</string> - <string key="NSKeyEquiv">p</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string type="base64-UTF8" key="title">UHJpbnTigKY</string> - <string key="keyEquivalent">p</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1886547572" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - </object> - <string key="title">File</string> - <reference key="menuID" ref="8"/> - <nil key="name"/> - <reference key="excludesMarkColumn" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="usePencilGlyph" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="condenseSeparators" ref="8"/> - </object> - <string key="title">File</string> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <reference key="command" ref="8"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="967622696"> - <reference key="NSMenu" ref="488802891"/> - <string key="NSTitle">Edit</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="NSAction">submenuAction:</string> - <object class="IBHIMenu" key="NSSubmenu" id="828488918"> - <string key="NSTitle">Edit</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBHIMenuItem" id="1006752977"> - <reference key="NSMenu" ref="828488918"/> - <string key="NSTitle">Undo</string> - <string key="NSKeyEquiv">z</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Undo</string> - <string key="keyEquivalent">z</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1970168943" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="826589559"> - <reference key="NSMenu" ref="828488918"/> - <string key="NSTitle">Redo</string> - <string key="NSKeyEquiv">Z</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Redo</string> - <string key="keyEquivalent">Z</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1919247471" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="667126936"> - <reference key="NSMenu" ref="828488918"/> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title"/> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <reference key="command" ref="8"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="922277995"> - <reference key="NSMenu" ref="828488918"/> - <string key="NSTitle">Cut</string> - <string key="NSKeyEquiv">x</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Cut</string> - <string key="keyEquivalent">x</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1668641824" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="983617670"> - <reference key="NSMenu" ref="828488918"/> - <string key="NSTitle">Copy</string> - <string key="NSKeyEquiv">c</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Copy</string> - <string key="keyEquivalent">c</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1668247673" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="244362314"> - <reference key="NSMenu" ref="828488918"/> - <string key="NSTitle">Paste</string> - <string key="NSKeyEquiv">v</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Paste</string> - <string key="keyEquivalent">v</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1885434740" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="1028751411"> - <reference key="NSMenu" ref="828488918"/> - <string key="NSTitle">Delete</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Delete</string> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1668048225" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="1035322719"> - <reference key="NSMenu" ref="828488918"/> - <string key="NSTitle">Select All</string> - <string key="NSKeyEquiv">a</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Select All</string> - <string key="keyEquivalent">a</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1935764588" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="494817777"> - <reference key="NSMenu" ref="828488918"/> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title"/> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <reference key="command" ref="8"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="628755742"> - <reference key="NSMenu" ref="828488918"/> - <string type="base64-UTF8" key="NSTitle">U3BlY2lhbCBDaGFyYWN0ZXJz4oCmA</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string type="base64-UTF8" key="title">U3BlY2lhbCBDaGFyYWN0ZXJz4oCmA</string> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1667789424" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - </object> - <string key="title">Edit</string> - <reference key="menuID" ref="8"/> - <nil key="name"/> - <reference key="excludesMarkColumn" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="usePencilGlyph" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="condenseSeparators" ref="8"/> - </object> - <string key="title">Edit</string> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <reference key="command" ref="8"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="625274859"> - <reference key="NSMenu" ref="488802891"/> - <string key="NSTitle">Window</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="NSAction">submenuAction:</string> - <object class="IBHIMenu" key="NSSubmenu" id="889821078"> - <string key="NSTitle">Window</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBHIMenuItem" id="411129436"> - <reference key="NSMenu" ref="889821078"/> - <string key="NSTitle">Minimize</string> - <string key="NSKeyEquiv">m</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Minimize</string> - <string key="keyEquivalent">m</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="9"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1835626089" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="172284061"> - <reference key="NSMenu" ref="889821078"/> - <string key="NSTitle">Minimize All</string> - <string key="NSKeyEquiv">m</string> - <int key="NSKeyEquivModMask">1572864</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Minimize All</string> - <string key="keyEquivalent">m</string> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="9"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1572864" key="keyEquivalentModifierMask"/> - <integer value="1835626081" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="293744021"> - <reference key="NSMenu" ref="889821078"/> - <string key="NSTitle">Zoom</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Zoom</string> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="2054123373" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="730590484"> - <reference key="NSMenu" ref="889821078"/> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title"/> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <reference key="command" ref="8"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="468221097"> - <reference key="NSMenu" ref="889821078"/> - <string key="NSTitle">Bring All to Front</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Bring All to Front</string> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="9"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <integer value="1650881140" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - <object class="IBHIMenuItem" id="792234517"> - <reference key="NSMenu" ref="889821078"/> - <string key="NSTitle">Arrange in Front</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1572864</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="491514580"/> - <reference key="NSMixedImage" ref="426606243"/> - <string key="title">Arrange in Front</string> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="9"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1572864" key="keyEquivalentModifierMask"/> - <integer value="1718775412" key="command"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - </object> - <object class="NSMutableString" key="NSName" id="557587535"> - <characters key="NS.bytes">_NSWindowsMenu</characters> - </object> - <string key="title">Window</string> - <reference key="menuID" ref="8"/> - <reference key="name" ref="557587535"/> - <reference key="excludesMarkColumn" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="usePencilGlyph" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="condenseSeparators" ref="8"/> - </object> - <string key="title">Window</string> - <string key="keyEquivalent"/> - <reference key="disabled" ref="8"/> - <reference key="checked" ref="8"/> - <reference key="submenuParentChoosable" ref="8"/> - <reference key="dynamic" ref="8"/> - <reference key="notPreviousAlternate" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="ignoreMeta" ref="8"/> - <reference key="sectionHeader" ref="8"/> - <reference key="customDraw" ref="8"/> - <reference key="autoRepeat" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="updateSingleItem" ref="8"/> - <reference key="includeInCmdKeyMatching" ref="8"/> - <integer value="1048576" key="keyEquivalentModifierMask"/> - <reference key="command" ref="8"/> - <nil key="helpTagText"/> - <nil key="helpTagExtendedText"/> - <reference key="helpTagDisplaySide" ref="8"/> - </object> - </object> - <object class="NSMutableString" key="NSName" id="286772869"> - <characters key="NS.bytes">_NSMainMenu</characters> - </object> - <string key="title">main</string> - <reference key="menuID" ref="8"/> - <reference key="name" ref="286772869"/> - <reference key="excludesMarkColumn" ref="8"/> - <reference key="autoDisable" ref="8"/> - <reference key="usePencilGlyph" ref="8"/> - <reference key="hidden" ref="8"/> - <reference key="condenseSeparators" ref="8"/> - </object> - </object> - <object class="IBObjectContainer" key="IBDocument.Objects"> - <object class="NSMutableArray" key="connectionRecords"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="IBMutableOrderedSet" key="objectRecords"> - <object class="NSArray" key="orderedObjects"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBObjectRecord"> - <int key="objectID">0</int> - <object class="NSArray" key="object" id="550325196"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <reference key="children" ref="730970675"/> - <nil key="parent"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">166</int> - <reference key="object" ref="954842773"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="109639387"/> - </object> - <reference key="parent" ref="550325196"/> - <string key="objectName">MainWindow</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">29</int> - <reference key="object" ref="488802891"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="625274859"/> - <reference ref="307734992"/> - <reference ref="967622696"/> - <reference ref="153487890"/> - </object> - <reference key="parent" ref="550325196"/> - <string key="objectName">MenuBar</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">167</int> - <reference key="object" ref="109639387"/> - <reference key="parent" ref="954842773"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">192</int> - <reference key="object" ref="625274859"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="889821078"/> - </object> - <reference key="parent" ref="488802891"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">185</int> - <reference key="object" ref="307734992"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="361625475"/> - </object> - <reference key="parent" ref="488802891"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">152</int> - <reference key="object" ref="967622696"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="828488918"/> - </object> - <reference key="parent" ref="488802891"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">127</int> - <reference key="object" ref="153487890"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="852883025"/> - </object> - <reference key="parent" ref="488802891"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">195</int> - <reference key="object" ref="889821078"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="411129436"/> - <reference ref="730590484"/> - <reference ref="468221097"/> - <reference ref="172284061"/> - <reference ref="792234517"/> - <reference ref="293744021"/> - </object> - <reference key="parent" ref="625274859"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">184</int> - <reference key="object" ref="361625475"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="661461591"/> - </object> - <reference key="parent" ref="307734992"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">147</int> - <reference key="object" ref="828488918"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="1006752977"/> - <reference ref="1035322719"/> - <reference ref="628755742"/> - <reference ref="922277995"/> - <reference ref="494817777"/> - <reference ref="667126936"/> - <reference ref="826589559"/> - <reference ref="983617670"/> - <reference ref="1028751411"/> - <reference ref="244362314"/> - </object> - <reference key="parent" ref="967622696"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">131</int> - <reference key="object" ref="852883025"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="336480090"/> - <reference ref="882200333"/> - <reference ref="23501516"/> - <reference ref="91227184"/> - <reference ref="698277588"/> - <reference ref="581088052"/> - <reference ref="377997055"/> - <reference ref="355504441"/> - <reference ref="462187002"/> - <reference ref="487635443"/> - </object> - <reference key="parent" ref="153487890"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">190</int> - <reference key="object" ref="411129436"/> - <reference key="parent" ref="889821078"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">194</int> - <reference key="object" ref="730590484"/> - <reference key="parent" ref="889821078"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">196</int> - <reference key="object" ref="468221097"/> - <reference key="parent" ref="889821078"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">191</int> - <reference key="object" ref="172284061"/> - <reference key="parent" ref="889821078"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">193</int> - <reference key="object" ref="792234517"/> - <reference key="parent" ref="889821078"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">197</int> - <reference key="object" ref="293744021"/> - <reference key="parent" ref="889821078"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">187</int> - <reference key="object" ref="661461591"/> - <reference key="parent" ref="361625475"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">141</int> - <reference key="object" ref="1006752977"/> - <reference key="parent" ref="828488918"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">148</int> - <reference key="object" ref="1035322719"/> - <reference key="parent" ref="828488918"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">198</int> - <reference key="object" ref="628755742"/> - <reference key="parent" ref="828488918"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">143</int> - <reference key="object" ref="922277995"/> - <reference key="parent" ref="828488918"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">199</int> - <reference key="object" ref="494817777"/> - <reference key="parent" ref="828488918"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">142</int> - <reference key="object" ref="667126936"/> - <reference key="parent" ref="828488918"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">146</int> - <reference key="object" ref="826589559"/> - <reference key="parent" ref="828488918"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">149</int> - <reference key="object" ref="983617670"/> - <reference key="parent" ref="828488918"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">151</int> - <reference key="object" ref="1028751411"/> - <reference key="parent" ref="828488918"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">144</int> - <reference key="object" ref="244362314"/> - <reference key="parent" ref="828488918"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">137</int> - <reference key="object" ref="336480090"/> - <reference key="parent" ref="852883025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">134</int> - <reference key="object" ref="882200333"/> - <reference key="parent" ref="852883025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">136</int> - <reference key="object" ref="23501516"/> - <reference key="parent" ref="852883025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">135</int> - <reference key="object" ref="91227184"/> - <reference key="parent" ref="852883025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">128</int> - <reference key="object" ref="698277588"/> - <reference key="parent" ref="852883025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">138</int> - <reference key="object" ref="581088052"/> - <reference key="parent" ref="852883025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">133</int> - <reference key="object" ref="377997055"/> - <reference key="parent" ref="852883025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">139</int> - <reference key="object" ref="355504441"/> - <reference key="parent" ref="852883025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">130</int> - <reference key="object" ref="462187002"/> - <reference key="parent" ref="852883025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">132</int> - <reference key="object" ref="487635443"/> - <reference key="parent" ref="852883025"/> - </object> - </object> - </object> - <object class="NSMutableDictionary" key="flattenedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>127.IBPluginDependency</string> - <string>128.IBPluginDependency</string> - <string>130.IBPluginDependency</string> - <string>131.IBPluginDependency</string> - <string>132.IBPluginDependency</string> - <string>133.IBPluginDependency</string> - <string>134.IBPluginDependency</string> - <string>135.IBPluginDependency</string> - <string>136.IBPluginDependency</string> - <string>137.IBPluginDependency</string> - <string>138.IBPluginDependency</string> - <string>139.IBPluginDependency</string> - <string>141.IBPluginDependency</string> - <string>142.IBPluginDependency</string> - <string>143.IBPluginDependency</string> - <string>144.IBPluginDependency</string> - <string>146.IBPluginDependency</string> - <string>147.IBPluginDependency</string> - <string>148.IBPluginDependency</string> - <string>149.IBPluginDependency</string> - <string>151.IBPluginDependency</string> - <string>152.IBPluginDependency</string> - <string>166.IBPluginDependency</string> - <string>167.IBPluginDependency</string> - <string>184.IBPluginDependency</string> - <string>185.IBPluginDependency</string> - <string>187.IBPluginDependency</string> - <string>190.IBPluginDependency</string> - <string>191.IBPluginDependency</string> - <string>192.IBPluginDependency</string> - <string>193.IBPluginDependency</string> - <string>194.IBPluginDependency</string> - <string>195.IBPluginDependency</string> - <string>196.IBPluginDependency</string> - <string>197.IBPluginDependency</string> - <string>198.IBPluginDependency</string> - <string>199.IBPluginDependency</string> - <string>29.IBPluginDependency</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - <string>com.apple.InterfaceBuilder.CarbonPlugin</string> - </object> - </object> - <object class="NSMutableDictionary" key="unlocalizedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="activeLocalization"/> - <object class="NSMutableDictionary" key="localizations"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <nil key="sourceID"/> - <int key="maxID">200</int> - </object> - <object class="IBClassDescriber" key="IBDocument.Classes"/> - <int key="IBDocument.localizationMode">0</int> - <nil key="IBDocument.LastKnownRelativeProjectPath"/> - <int key="IBDocument.defaultPropertyAccessControl">3</int> - </data> -</archive> @@ -1,34 +1,34 @@ -How to compile and run Aethyra on your GNU/Linux Box +How to compile and run TMW on your GNU/Linux Box ================================================ -Homepage: http://www.aethyra.org/ -IRC: irc.freenode.net / #aethyra +Homepage: http://themanaworld.org/ +IRC: irc.freenode.net / #themanaworld 1) Requirements -2) Compiling Aethyra +2) Compiling And Installing The Mana World 3) Notes 1. Requirements =============== -You are expected to have either checked out Aethyra from git or you have downloaded -a source release. To get Aethyra to compile, you need a compiler -(GCC) and some libraries. The required libraries are: +You are expected to have either checked out TMW from Git or you have downloaded +a source release. To get The Mana World to compile, you need a compiler (GCC) +and some libraries. The required libraries are: * SDL http://www.libsdl.org/ * SDL_mixer http://www.libsdl.org/projects/SDL_mixer/ * SDL_image http://www.libsdl.org/projects/SDL_image/ * SDL_net http://www.libsdl.org/projects/SDL_net/ * SDL_ttf http://www.libsdl.org/projects/SDL_ttf/ +* ENet 1.2 http://enet.bespin.org/ * Guichan 0.8.x http://guichan.sourceforge.net/ * libxml2 http://www.xmlsoft.org/ * physfs 1.0.x http://icculus.org/physfs/ * zlib 1.2.x http://www.gzip.org/zlib/ * libcurl http://curl.haxx.se/libcurl/ -If you cloned Aethyra from the Git repository, you will also need these tools to -compile: +If you've cloned the Git repository, you will also need these tools to compile: * GNU automake 1.9 http://www.gnu.org/software/automake/ * GNU autoconf http://www.gnu.org/software/autoconf/ @@ -44,8 +44,8 @@ Installing these dependencies is distributions-specific, and we'll leave it to you to figure this out. -2. Compiling And Installing Aethyra -=============================================== +2. Compiling And Installing The Mana World +========================================== 1) Go to the directory you have extracted the source to. 2) If you've cloned the Git repository, run "autoreconf -i" to generate @@ -54,21 +54,12 @@ you to figure this out. 4) Run "make" 5) Run "make install" as root -It should have installed Aethyra on your system now, and you can -run it with "aethyra". By default all files are installed to /usr/local, you can -pass a different prefix to configure as usual. +It should have installed The Mana World on your system now, and you can run it +with "tmw". By default all files are installed to /usr/local, you can pass a +different prefix to configure as usual. - NOTE: if the autobuild.sh fails - 1.) autoreconf -i - 2.) ./configure - 3.) make - 4.) su -c "make install" - you can get help from A.) IRC channel irc.freenode.net #aedev or #aethyra - B.) http://www.aethyra.org/forums/ - Make sure you record the output from the konsole window - - NOTE: It is possible to compile Aethyra without support for OpenGL rendering. + NOTE: It is possible to compile TMW without support for OpenGL rendering. To do this perform step 3 as follows: ./configure --without-opengl @@ -82,4 +73,4 @@ pass a different prefix to configure as usual. If you have any problems, you are welcome to post your questions on our forums, or talk about them in our IRC channel. -- Aethyra Dev Team +- The Mana World Dev Team @@ -7,22 +7,24 @@ <key>CFBundleExecutable</key> <string>${EXECUTABLE_NAME}</string> <key>CFBundleIconFile</key> - <string>aethyra.icns</string> + <string>The Mana World.icns</string> <key>CFBundleIdentifier</key> - <string>com.aethyra</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> + <string>TMW</string> <key>CFBundleName</key> <string>${PRODUCT_NAME}</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleSignature</key> - <string>????</string> + <string>tmw.</string> <key>CFBundleVersion</key> - <string>0.29</string> + <string>1.0</string> + <key>NSHumanReadableCopyright</key> + <string>Copyright 2008 The Mana World Development Team</string> <key>NSMainNibFile</key> - <string>MainMenu</string> + <string>SDLMain</string> <key>NSPrincipalClass</key> <string>NSApplication</string> + <key>NSPrincipleClass</key> + <string>NSApplication</string> </dict> </plist> diff --git a/LICENSE.rtf b/LICENSE.rtf deleted file mode 100644 index 2592d38a..00000000 --- a/LICENSE.rtf +++ /dev/null @@ -1,15 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf949 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\paperw11900\paperh16840\margl1440\margr1440\vieww9480\viewh8400\viewkind0 -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural - -\f0\fs24 \cf0 The Mana World is released under the GPL - more info at www.themanaworld.org\ -\ -SDL is used under the LGPL - more info at www.libsdl.org\ -\ -SDL_image, SDL_ttf, SDL_mixer and SDL_net are used under the LGPL - more info at www.libsdl.org/libs\ -\ -physfs is used under the BSD license - more info at http://icculus.org/physfs/\ -\ -zlib is used under the BSD license - more info at www.zlib.net}
\ No newline at end of file diff --git a/Makefile.am b/Makefile.am index ae62a99b..72c7461c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3,10 +3,10 @@ SUBDIRS = data docs po src desktopdir = $(datadir)/applications -desktop_DATA = aethyra.desktop +desktop_DATA = tmw.desktop # Extra files to include -EXTRA_DIST = $(desktop_DATA) +EXTRA_DIST = $(desktop_DATA) tmw.cbp # Autopoint m4 stuff ACLOCAL_AMFLAGS = -I m4 diff --git a/Aethyra.vcproj b/ManaWorld.vcproj index 7a42b19d..478a345c 100644 --- a/Aethyra.vcproj +++ b/ManaWorld.vcproj @@ -2,9 +2,9 @@ <VisualStudioProject ProjectType="Visual C++" Version="8,00" - Name="Aethyra" + Name="ManaWorld" ProjectGUID="{DE31E83E-62BD-460E-8E6A-648CF98CC5A4}" - RootNamespace="Aethyra" + RootNamespace="ManaWorld" Keyword="Win32Proj" SignManifests="true" > @@ -65,11 +65,11 @@ <Tool Name="VCLinkerTool" AdditionalDependencies="physfs.lib sdl.lib sdlmain.lib sdl_image.lib sdl_mixer.lib guichan.lib guichan_sdl.lib ws2_32.lib libxml2.lib iconv.lib zlib.lib libcurl.lib" - OutputFile="$(OutDir)/Aethyra.exe" + OutputFile="$(OutDir)/ManaWorld.exe" LinkIncremental="2" IgnoreDefaultLibraryNames="libc.lib" GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)/Aethyra.pdb" + ProgramDatabaseFile="$(OutDir)/ManaWorld.pdb" SubSystem="2" TargetMachine="1" /> @@ -144,7 +144,7 @@ <Tool Name="VCLinkerTool" AdditionalDependencies="physfs.lib alleg.lib guichan.lib guichan_sdl.lib sdl.lib sdlmain.lib sdl_mixer.lib sdl_image.lib ws2_32.lib libxml2.lib iconv.lib zlib.lib libcurl.lib" - OutputFile="aethyra.exe" + OutputFile="tmw.exe" LinkIncremental="1" IgnoreDefaultLibraryNames="LIBC.lib" GenerateDebugInformation="true" @@ -254,19 +254,11 @@ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" > <File - RelativePath=".\src\animatedsprite.cpp" + RelativePath=".\src\base64.cpp" > </File> <File - RelativePath=".\src\animatedsprite.h" - > - </File> - <File - RelativePath=".\src\animationparticle.cpp" - > - </File> - <File - RelativePath=".\src\animationparticle.h" + RelativePath=".\src\base64.h" > </File> <File @@ -278,18 +270,6 @@ > </File> <File - RelativePath=".\src\beingmanager.cpp" - > - </File> - <File - RelativePath=".\src\beingmanager.h" - > - </File> - <File - RelativePath=".\src\configlistener.h" - > - </File> - <File RelativePath=".\src\configuration.cpp" > </File> @@ -306,18 +286,6 @@ > </File> <File - RelativePath=".\src\equipment.cpp" - > - </File> - <File - RelativePath=".\src\equipment.h" - > - </File> - <File - RelativePath=".\src\extensions.h" - > - </File> - <File RelativePath=".\src\floor_item.cpp" > </File> @@ -342,66 +310,6 @@ > </File> <File - RelativePath=".\src\guichanfwd.h" - > - </File> - <File - RelativePath=".\src\imageparticle.cpp" - > - </File> - <File - RelativePath=".\src\imageparticle.h" - > - </File> - <File - RelativePath=".\src\inventory.cpp" - > - </File> - <File - RelativePath=".\src\inventory.h" - > - </File> - <File - RelativePath=".\src\item.cpp" - > - </File> - <File - RelativePath=".\src\item.h" - > - </File> - <File - RelativePath=".\src\itemshortcut.cpp" - > - </File> - <File - RelativePath=".\src\itemshortcut.h" - > - </File> - <File - RelativePath=".\src\joystick.cpp" - > - </File> - <File - RelativePath=".\src\joystick.h" - > - </File> - <File - RelativePath=".\src\keyboardconfig.cpp" - > - </File> - <File - RelativePath=".\src\keyboardconfig.h" - > - </File> - <File - RelativePath=".\src\localplayer.cpp" - > - </File> - <File - RelativePath=".\src\localplayer.h" - > - </File> - <File RelativePath=".\src\log.cpp" > </File> @@ -410,10 +318,6 @@ > </File> <File - RelativePath=".\src\logindata.h" - > - </File> - <File RelativePath=".\src\main.cpp" > </File> @@ -430,102 +334,6 @@ > </File> <File - RelativePath=".\src\monster.cpp" - > - </File> - <File - RelativePath=".\src\monster.h" - > - </File> - <File - RelativePath=".\src\npc.cpp" - > - </File> - <File - RelativePath=".\src\npc.h" - > - </File> - <File - RelativePath=".\src\openglgraphics.cpp" - > - </File> - <File - RelativePath=".\src\openglgraphics.h" - > - </File> - <File - RelativePath=".\src\particle.cpp" - > - </File> - <File - RelativePath=".\src\particle.h" - > - </File> - <File - RelativePath=".\src\particleemitter.cpp" - > - </File> - <File - RelativePath=".\src\particleemitter.h" - > - </File> - <File - RelativePath=".\src\party.cpp" - > - </File> - <File - RelativePath=".\src\party.h" - > - </File> - <File - RelativePath=".\src\player.cpp" - > - </File> - <File - RelativePath=".\src\player.h" - > - </File> - <File - RelativePath=".\src\player_relations.cpp" - > - </File> - <File - RelativePath=".\src\player_relations.h" - > - </File> - <File - RelativePath=".\src\properties.h" - > - </File> - <File - RelativePath=".\src\recorder.cpp" - > - </File> - <File - RelativePath=".\src\recorder.h" - > - </File> - <File - RelativePath=".\src\serverinfo.h" - > - </File> - <File - RelativePath=".\src\shopitem.cpp" - > - </File> - <File - RelativePath=".\src\shopitem.h" - > - </File> - <File - RelativePath=".\src\simpleanimation.cpp" - > - </File> - <File - RelativePath=".\src\simpleanimation.h" - > - </File> - <File RelativePath=".\src\sound.cpp" > </File> @@ -534,104 +342,20 @@ > </File> <Filter - Name="net" + Name="graphic" > <File - RelativePath=".\src\net\beinghandler.cpp" - > - </File> - <File - RelativePath=".\src\net\beinghandler.h" - > - </File> - <File - RelativePath=".\src\net\buysellhandler.cpp" - > - </File> - <File - RelativePath=".\src\net\buysellhandler.h" - > - </File> - <File - RelativePath=".\src\net\charservhandler.cpp" - > - </File> - <File - RelativePath=".\src\net\charservhandler.h" - > - </File> - <File - RelativePath=".\src\net\chathandler.cpp" - > - </File> - <File - RelativePath=".\src\net\chathandler.h" - > - </File> - <File - RelativePath=".\src\net\equipmenthandler.cpp" - > - </File> - <File - RelativePath=".\src\net\equipmenthandler.h" - > - </File> - <File - RelativePath=".\src\net\inventoryhandler.cpp" - > - </File> - <File - RelativePath=".\src\net\inventoryhandler.h" - > - </File> - <File - RelativePath=".\src\net\itemhandler.cpp" - > - </File> - <File - RelativePath=".\src\net\itemhandler.h" - > - </File> - <File - RelativePath=".\src\net\loginhandler.cpp" - > - </File> - <File - RelativePath=".\src\net\loginhandler.h" - > - </File> - <File - RelativePath=".\src\net\maploginhandler.cpp" - > - </File> - <File - RelativePath=".\src\net\maploginhandler.h" - > - </File> - <File - RelativePath=".\src\net\messagehandler.cpp" - > - </File> - <File - RelativePath=".\src\net\messagehandler.h" - > - </File> - <File - RelativePath=".\src\net\messagein.cpp" - > - </File> - <File - RelativePath=".\src\net\messagein.h" - > - </File> - <File - RelativePath=".\src\net\messageout.cpp" + RelativePath=".\src\graphic\spriteset.cpp" > </File> <File - RelativePath=".\src\net\messageout.h" + RelativePath=".\src\graphic\spriteset.h" > </File> + </Filter> + <Filter + Name="net" + > <File RelativePath=".\src\net\network.cpp" > @@ -641,30 +365,6 @@ > </File> <File - RelativePath=".\src\net\npchandler.cpp" - > - </File> - <File - RelativePath=".\src\net\npchandler.h" - > - </File> - <File - RelativePath=".\src\net\partyhandler.cpp" - > - </File> - <File - RelativePath=".\src\net\partyhandler.h" - > - </File> - <File - RelativePath=".\src\net\playerhandler.cpp" - > - </File> - <File - RelativePath=".\src\net\playerhandler.h" - > - </File> - <File RelativePath=".\src\net\protocol.cpp" > </File> @@ -673,19 +373,15 @@ > </File> <File - RelativePath=".\src\net\skillhandler.cpp" - > - </File> - <File - RelativePath=".\src\net\skillhandler.h" + RelativePath=".\src\net\win2linux.h" > </File> <File - RelativePath=".\src\net\tradehandler.cpp" + RelativePath=".\src\net\win2mac.cpp" > </File> <File - RelativePath=".\src\net\tradehandler.h" + RelativePath=".\src\net\win2mac.h" > </File> </Filter> @@ -709,19 +405,19 @@ > </File> <File - RelativePath=".\src\gui\button.cpp" + RelativePath=".\src\gui\buddywindow.cpp" > </File> <File - RelativePath=".\src\gui\button.h" + RelativePath=".\src\gui\buddywindow.h" > </File> <File - RelativePath=".\src\gui\buttonbox.cpp" + RelativePath=".\src\gui\button.cpp" > </File> <File - RelativePath=".\src\gui\buttonbox.h" + RelativePath=".\src\gui\button.h" > </File> <File @@ -797,35 +493,11 @@ > </File> <File - RelativePath=".\src\gui\connection.cpp" + RelativePath=".\src\gui\equipment.cpp" > </File> <File - RelativePath=".\src\gui\connection.h" - > - </File> - <File - RelativePath=".\src\gui\coulor.cpp" - > - </File> - <File - RelativePath=".\src\gui\coulor.h" - > - </File> - <File - RelativePath=".\src\gui\debugwindow.cpp" - > - </File> - <File - RelativePath=".\src\gui\debugwindow.h" - > - </File> - <File - RelativePath=".\src\gui\equipmentwindow.cpp" - > - </File> - <File - RelativePath=".\src\gui\equipmentwindow.h" + RelativePath=".\src\gui\equipment.h" > </File> <File @@ -837,14 +509,6 @@ > </File> <File - RelativePath=".\src\gui\gccontainer.cpp" - > - </File> - <File - RelativePath=".\src\gui\gccontainer.h" - > - </File> - <File RelativePath=".\src\gui\gui.cpp" > </File> @@ -877,11 +541,11 @@ > </File> <File - RelativePath=".\src\gui\inventorywindow.cpp" + RelativePath=".\src\gui\inventory.cpp" > </File> <File - RelativePath=".\src\gui\inventorywindow.h" + RelativePath=".\src\gui\inventory.h" > </File> <File @@ -901,22 +565,6 @@ > </File> <File - RelativePath=".\src\gui\itemshortcutcontainer.cpp" - > - </File> - <File - RelativePath=".\src\gui\itemshortcutcontainer.h" - > - </File> - <File - RelativePath=".\src\gui\itemshortcutwindow.cpp" - > - </File> - <File - RelativePath=".\src\gui\itemshortcutwindow.h" - > - </File> - <File RelativePath=".\src\gui\linkhandler.h" > </File> @@ -937,14 +585,6 @@ > </File> <File - RelativePath=".\src\gui\menuwindow.cpp" - > - </File> - <File - RelativePath=".\src\gui\menuwindow.h" - > - </File> - <File RelativePath=".\src\gui\minimap.cpp" > </File> @@ -953,14 +593,6 @@ > </File> <File - RelativePath=".\src\gui\ministatus.cpp" - > - </File> - <File - RelativePath=".\src\gui\ministatus.h" - > - </File> - <File RelativePath=".\src\gui\newskill.cpp" > </File> @@ -969,11 +601,11 @@ > </File> <File - RelativePath=".\src\gui\npclistdialogue.cpp" + RelativePath=".\src\gui\npc.cpp" > </File> <File - RelativePath=".\src\gui\npclistdialogue.h" + RelativePath=".\src\gui\npc.h" > </File> <File @@ -1033,11 +665,11 @@ > </File> <File - RelativePath=".\src\gui\register.cpp" + RelativePath=".\src\gui\requesttrade.cpp" > </File> <File - RelativePath=".\src\gui\register.h" + RelativePath=".\src\gui\requesttrade.h" > </File> <File @@ -1065,58 +697,6 @@ > </File> <File - RelativePath=".\src\gui\setup_audio.cpp" - > - </File> - <File - RelativePath=".\src\gui\setup_audio.h" - > - </File> - <File - RelativePath=".\src\gui\setup_colours.cpp" - > - </File> - <File - RelativePath=".\src\gui\setup_colours.h" - > - </File> - <File - RelativePath=".\src\gui\setup_joystick.cpp" - > - </File> - <File - RelativePath=".\src\gui\setup_joystick.h" - > - </File> - <File - RelativePath=".\src\gui\setup_keyboard.cpp" - > - </File> - <File - RelativePath=".\src\gui\setup_keyboard.h" - > - </File> - <File - RelativePath=".\src\gui\setup_players.cpp" - > - </File> - <File - RelativePath=".\src\gui\setup_players.h" - > - </File> - <File - RelativePath=".\src\gui\setup_video.cpp" - > - </File> - <File - RelativePath=".\src\gui\setup_video.h" - > - </File> - <File - RelativePath=".\src\gui\setuptab.h" - > - </File> - <File RelativePath=".\src\gui\shop.cpp" > </File> @@ -1125,14 +705,6 @@ > </File> <File - RelativePath=".\src\gui\shoplistbox.cpp" - > - </File> - <File - RelativePath=".\src\gui\shoplistbox.h" - > - </File> - <File RelativePath=".\src\gui\skill.cpp" > </File> @@ -1149,11 +721,11 @@ > </File> <File - RelativePath=".\src\gui\speechbubble.cpp" + RelativePath=".\src\gui\stats.cpp" > </File> <File - RelativePath=".\src\gui\speechbubble.h" + RelativePath=".\src\gui\stats.h" > </File> <File @@ -1165,30 +737,6 @@ > </File> <File - RelativePath=".\src\gui\tabbedcontainer.cpp" - > - </File> - <File - RelativePath=".\src\gui\tabbedcontainer.h" - > - </File> - <File - RelativePath=".\src\gui\table.cpp" - > - </File> - <File - RelativePath=".\src\gui\table.h" - > - </File> - <File - RelativePath=".\src\gui\table_model.cpp" - > - </File> - <File - RelativePath=".\src\gui\table_model.h" - > - </File> - <File RelativePath=".\src\gui\textbox.cpp" > </File> @@ -1229,14 +777,6 @@ > </File> <File - RelativePath=".\src\gui\viewport.cpp" - > - </File> - <File - RelativePath=".\src\gui\viewport.h" - > - </File> - <File RelativePath=".\src\gui\window.cpp" > </File> @@ -1252,59 +792,11 @@ RelativePath=".\src\gui\windowcontainer.h" > </File> - <Filter - Name="widgets" - > - <File - RelativePath=".\src\gui\dropdown.cpp" - > - </File> - <File - RelativePath=".\src\gui\dropdown.h" - > - </File> - <File - RelativePath=".\src\gui\gettext.h" - > - </File> - <File - RelativePath=".\src\gui\resizegrip.cpp" - > - </File> - <File - RelativePath=".\src\gui\resizegrip.h" - > - </File> - </Filter> </Filter> <Filter Name="resources" > <File - RelativePath=".\src\resources\action.cpp" - > - </File> - <File - RelativePath=".\src\resources\action.h" - > - </File> - <File - RelativePath=".\src\resources\ambiantoverlay.cpp" - > - </File> - <File - RelativePath=".\src\resources\ambiantoverlay.h" - > - </File> - <File - RelativePath=".\src\resources\animation.cpp" - > - </File> - <File - RelativePath=".\src\resources\animation.h" - > - </File> - <File RelativePath=".\src\resources\buddylist.cpp" > </File> @@ -1313,14 +805,6 @@ > </File> <File - RelativePath=".\src\resources\dye.cpp" - > - </File> - <File - RelativePath=".\src\resources\dye.h" - > - </File> - <File RelativePath=".\src\resources\image.cpp" > </File> @@ -1329,38 +813,6 @@ > </File> <File - RelativePath=".\src\resources\imageloader.cpp" - > - </File> - <File - RelativePath=".\src\resources\imageloader.h" - > - </File> - <File - RelativePath=".\src\resources\imageset.cpp" - > - </File> - <File - RelativePath=".\src\resources\imageset.h" - > - </File> - <File - RelativePath=".\src\resources\imagewriter.cpp" - > - </File> - <File - RelativePath=".\src\resources\imagewriter.h" - > - </File> - <File - RelativePath=".\src\resources\itemdb.cpp" - > - </File> - <File - RelativePath=".\src\resources\itemdb.h" - > - </File> - <File RelativePath=".\src\resources\iteminfo.cpp" > </File> @@ -1369,27 +821,19 @@ > </File> <File - RelativePath=".\src\resources\mapreader.cpp" + RelativePath=".\src\resources\itemmanager.cpp" > </File> <File - RelativePath=".\src\resources\mapreader.h" - > - </File> - <File - RelativePath=".\src\resources\monsterdb.cpp" + RelativePath=".\src\resources\itemmanager.h" > </File> <File - RelativePath=".\src\resources\monsterdb.h" - > - </File> - <File - RelativePath=".\src\resources\monsterinfo.cpp" + RelativePath=".\src\resources\mapreader.cpp" > </File> <File - RelativePath=".\src\resources\monsterinfo.h" + RelativePath=".\src\resources\mapreader.h" > </File> <File @@ -1401,14 +845,6 @@ > </File> <File - RelativePath=".\src\resources\npcdb.cpp" - > - </File> - <File - RelativePath=".\src\resources\npcdb.h" - > - </File> - <File RelativePath=".\src\resources\resource.cpp" > </File> @@ -1432,62 +868,6 @@ RelativePath=".\src\resources\soundeffect.h" > </File> - <File - RelativePath=".\src\resources\spritedef.cpp" - > - </File> - <File - RelativePath=".\src\resources\spritedef.h" - > - </File> - </Filter> - <Filter - Name="utils" - > - <File - RelativePath=".\src\utils\base64.cpp" - > - </File> - <File - RelativePath=".\src\utils\base64.h" - > - </File> - <File - RelativePath=".\src\utils\dtor.h" - > - </File> - <File - RelativePath=".\src\utils\fastsqrt.h" - > - </File> - <File - RelativePath=".\src\utils\minmax.h" - > - </File> - <File - RelativePath=".\src\utils\strprintf.cpp" - > - </File> - <File - RelativePath=".\src\utils\strprintf.h" - > - </File> - <File - RelativePath=".\src\utils\tostring.h" - > - </File> - <File - RelativePath=".\src\utils\trim.h" - > - </File> - <File - RelativePath=".\src\utils\xml.cpp" - > - </File> - <File - RelativePath=".\src\utils\xml.h" - > - </File> </Filter> </Filter> </Files> @@ -1,9 +1,43 @@ -0.0.27 (...) +0.0.29 (...) +* Added ability to record the chatlog to a file +* Added support for dynamic emotes +* Added speech balloons that wrap the text +* Added item popup for showing detailed information +* Added support for external tilesets +* Added ability to refer to items in chat +* Added the ability to see your own name in game +* Made smily shortcuts customizable in more detail +* Made chat colors customizable +* Made it possible to change resolution +* GUI opacity now effects more widgets +* Redesigned equipment window and allow unequip from there +* Next level percentage is now displayed in hundredths +* Player and NPC names now appear in bold for better readability + +0.0.28.1 (12 February 2009) +- Enabled translations on Windows +- Added command line option to set home directory path +- Tweaked green chat color to be a bit more readable +- Made font size configurable in the config file +- Fixed restoring of punching animation after weapon removal +- Fixed inability to chat while talking to NPCs +- Updated Swedish translation + +0.0.28 (25 January 2009) +- Added support for animated map tiles +- Added support for internationalization, plus many translations +- Added support for TrueType fonts +- Trade window is now resizable +- Obscure precise home directory name when making screenshots +- Fixed follow-parent of nested and being-following particle emitters + +0.0.27 (9 December 2008) - Added support for showing map name above minimap - Added showing how long the ban is when banned - Added --data parameter for developers - Added particle effect for critical hits - Added support for dynamic skill names and hair colors +- Added support for status effects - Added ability to add equipment to the shortcut bar - Added ability to change configuration during login phase (from Aethyra) - Mouse cursor will now hide when not used for some time @@ -14,12 +48,14 @@ - Only require a restart to switch to full screen with OpenGL on Windows - Make sure news and update file list aren't cached (from Aethyra) - Made NPC dialogs resizable (from Aethyra) +- Made window shortcuts configurable - Fixed visibility of trade window on startup - Fixed a client input freeze when closing NPC script from server - Fixed dead players to lie on the ground instead of standing around - Fixed shortcuts being activated when trade window was visible - Fixed a crash when equipment window is open - Fixed money value on failing to buy (from Aethyra) +- Fixed crash in right-click menu when used after a being disappeared 0.0.26 (29 August 2008) - Added support for a newer version of eAthena server @@ -365,7 +401,7 @@ - Added 'enter' key support in login screen - Added RLE sprites for tiles - Added collision detection with beings -- Fix for mapserver segfault-bug in chatsystem (broken pipe for all users on +- Fix for mapserver segfault-bug in chatsystem (broken pipe for all users on screen) - Partially added TMW GUI to inventory - Added soundpool that can preload, play and remove items to/from ram @@ -1,14 +1,14 @@ -AETHYRA -=================== +THE MANA WORLD +============== - Version: 0.0.27 Date: 12/07/2008 + Version: 0.0.29 Date: XX/XX/2009 Development team: - See AUTHORS file for a list Powered by: - - SDL, SDL_image, SDL_mixer (Media framework) + - SDL, SDL_image, SDL_mixer, SDL_ttf, SDL_net (Media framework) - Guichan (GUI framework) - libxml2 (XML parsing and writing) - PhysFS (Data files) @@ -122,10 +122,9 @@ level 10: enables not used If you're having troubles, please first of all read the FAQ. If you can't find a solution to your problem, feel free to check our Bugs/Support section of the forum: -- http://www.aethyra.org/forums +- http://themanaworld.org/phpBB2/viewforum.php?f=3 or come visit us on our IRC channel: -- #aethyra @ irc.freenode.net -- #aedev @ irc.freenode.net +- #themanaworld @ irc.freenode.net Otherwise check the AUTHORS file to have a list of developers and how to contact them. diff --git a/Aethyra.dev b/The Mana World.dev index 6bfb1bfa..76728f25 100644 --- a/Aethyra.dev +++ b/The Mana World.dev @@ -1,13 +1,13 @@ [Project] -FileName=Aethyra.dev -Name=aethyra +FileName=The Mana World.dev +Name=tmw UnitCount=277 Type=0 Ver=1 ObjFiles= Includes= Libs= -PrivateResource=Aethyra_private.rc +PrivateResource=The_Mana_World_private.rc ResourceIncludes= MakeIncludes= Compiler= @@ -18,7 +18,7 @@ Icon= ExeOutput= ObjectOutput=obj OverrideOutput=1 -OverrideOutputName=aethyra.exe +OverrideOutputName=tmw.exe HostApplication= Folders=gui,gui/header,gui/source,header,header/widgets,net,net/header,net/source,resources,utils CommandLine= @@ -77,6 +77,16 @@ Priority=1000 OverrideBuildCmd=0 BuildCmd= +[Unit22] +FileName=src\gui\buddywindow.cpp +CompileCpp=1 +Folder=gui/source +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + [Unit25] FileName=src\gui\button.h CompileCpp=1 diff --git a/The Mana World.icns b/The Mana World.icns Binary files differnew file mode 100644 index 00000000..7230a099 --- /dev/null +++ b/The Mana World.icns diff --git a/WinReadMe.txt b/WinReadMe.txt deleted file mode 100644 index a77ce944..00000000 --- a/WinReadMe.txt +++ /dev/null @@ -1,22 +0,0 @@ -To run aethyra double click on aethyra.exe in this folder. - -There are a couple of known bugs you might run into first run... - -aethyra.exe might complain about not being able to create it's -configuration folder. If it crashes out just run it again. - -You may also have issues with the aethyra crashing with lots of -updates. Again just run it again and it should continue the update -from where it left off. - -To install the client, just copy this folder to your Program Files -folder and add a shortcut to aethyra.exe to your Start Menu. - -For any further questions pop onto the forums at http://www.aethyra.org/forums/ -especially the Windows Way forum, or pop onto the IRC channel #aethyra on the -FreeNode network - -If you don't have an IRC client you can still get to the -channel through this page: http://www.aethyra.com/ircchat.html - -Thanks for playing from the Aethyra team. diff --git a/aethyra.icns b/aethyra.icns Binary files differdeleted file mode 100644 index 38659b2c..00000000 --- a/aethyra.icns +++ /dev/null diff --git a/aethyra.png b/aethyra.png Binary files differdeleted file mode 100644 index b3c128f7..00000000 --- a/aethyra.png +++ /dev/null diff --git a/autobuild.sh b/autobuild.sh deleted file mode 100755 index 7ebbeaad..00000000 --- a/autobuild.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh -# auto build script based on fedora but usable for other distros -#author=Blame <blame582@gmail.com> -#last modified date 2008-09-29 Blameu -# right now thes should be ok for testing -file=/etc/fedora-release -file1=/etc/lsb-release - -echo "Generating build information using aclocal, autoheader, automake and autoconf." -echo - -# Regerate configuration files -autoreconf -i - -echo -echo "Now you are ready to run ./configure" - -./configure - -echo -echo "now running make" - -make - -echo -echo "now running make install please input your root password"; -# we must test for fedora first otherwise we get an error -if [ -e $file ]; then - echo "Fedora found"; - su -c "make install"; - su -c "make clean"; - echo "Done"; - aethyra & - exit 1; -elif [ -e $file1 ];then - echo "ubuntu found"; - sudo make install; - aethyra & - exit 1; -else - echo "login as root and run make install" -fi -echo "done" - diff --git a/configure.ac b/configure.ac index a774df8f..89a62d96 100755 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,6 @@ AC_PREREQ(2.59) -AC_INIT([Aethyra], [0.0.29], [irarice@gmail.com], [aethyra]) +AC_INIT([The Mana World], [0.0.29], [themanaworld-devel@lists.sourceforge.net], [tmw]) +AM_INIT_AUTOMAKE AC_CONFIG_HEADERS([config.h:config.h.in]) AC_LANG_CPLUSPLUS @@ -32,26 +33,44 @@ AC_CHECK_LIB([pthread], [pthread_create], , AC_MSG_ERROR([ *** Unable to find pthread library])) AC_CHECK_LIB([guichan], [gcnGuichanVersion], , -AC_MSG_ERROR([ *** Unable to find Guichan library (guichan.sf.net)])) +AC_MSG_ERROR([ *** Unable to find Guichan library (http://guichan.sf.net/)])) +AC_CHECK_HEADERS([guichan.hpp], , +AC_MSG_ERROR([ *** Guichan library found but cannot find headers (http://guichan.sf.net/)])) -#AC_CHECK_LIB([guichan_sdl], [gcnSDL], , -#AC_MSG_ERROR([ *** Unable to find Guichan SDL library (guichan.sf.net)])) +if test -n "$SDL_CONFIG"; then + LIBS="$LIBS `$SDL_CONFIG --libs`" + CPPFLAGS="$CPPFLAGS `$SDL_CONFIG --cflags`" +fi +AC_CHECK_LIB([SDL], [SDL_Init], , +AC_MSG_ERROR([ *** Unable to find SDL library (http://www.libsdl.org/)])) +AC_CHECK_HEADERS([SDL.h], , +AC_MSG_ERROR([ *** SDL library found but cannot find headers (http://www.libsdl.org/)])) AC_CHECK_LIB([z], [inflate], , AC_MSG_ERROR([ *** Unable to find zlib (http://www.gzip.org/zlib/)])) AC_CHECK_LIB([physfs], [PHYSFS_init], , -AC_MSG_ERROR([ *** Unable to find PhysFS library (icculus.org/physfs/)])) +AC_MSG_ERROR([ *** Unable to find PhysFS library (http://icculus.org/physfs/)])) +AC_CHECK_HEADERS([physfs.h], , +AC_MSG_ERROR([ *** PhysFS library found but cannot find headers (http://icculus.org/physfs/)])) +if test -n "$CURL_CONFIG"; then + LIBS="$LIBS `$CURL_CONFIG --libs`" + CPPFLAGS="$CPPFLAGS `$CURL_CONFIG --cflags`" +fi AC_CHECK_LIB([curl], [curl_global_init], , AC_MSG_ERROR([ *** Unable to find CURL library (http://curl.haxx.se/)])) -CURL_LIBS=" `curl-config --libs`" -CURL_CFLAGS=" `curl-config --cflags` " -AC_SUBST(CURL_LIBS) -AC_SUBST(CURL_CFLAGS) +AC_CHECK_HEADERS([curl/curl.h], , +AC_MSG_ERROR([ *** CURL library found but cannot find headers (http://curl.haxx.se/)])) +if test -n "$PKG_CONFIG"; then + LIBS="$LIBS `$PKG_CONFIG --libs libxml-2.0`" + CPPFLAGS="$CPPFLAGS `$PKG_CONFIG --cflags libxml-2.0`" +fi AC_CHECK_LIB([xml2], [xmlInitParser], , -AC_MSG_ERROR([ *** Unable to find libxml2 library (xmlsoft.org)])) +AC_MSG_ERROR([ *** Unable to find libxml2 library (http://xmlsoft.org/)])) +AC_CHECK_HEADERS([libxml/xmlreader.h], , +AC_MSG_ERROR([ *** libxml2 library found but cannot find headers (http://xmlsoft.org/)])) AC_CHECK_LIB(png, png_write_info, , AC_MSG_ERROR([ *** Unable to find png library])) @@ -66,19 +85,13 @@ AC_MSG_ERROR([ *** Unable to find SDL_ttf library (http://www.libsdl.org/project AC_CHECK_LIB([SDL_mixer], [Mix_OpenAudio], , AC_MSG_ERROR([ *** Unable to find SDL_mixer library (http://www.libsdl.org/projects/SDL_mixer/)])) -AC_CHECK_LIB(SDL_net, SDLNet_Init, , -AC_MSG_ERROR([ *** Unable to find SDL_net library])) +AC_CHECK_LIB([guichan_sdl], [gcnSDL], , +AC_MSG_ERROR([ *** Unable to find Guichan SDL library (http://guichan.sf.net/)])) # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([arpa/inet.h fcntl.h malloc.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h unistd.h]) -# Check for guichan headers -AC_CHECK_HEADERS([guichan.hpp], , -AC_MSG_ERROR([*** Library found but cannot find headers (guichan.sf.net) *** ])) - -AM_INIT_AUTOMAKE - # Option to enable OpenGL AC_ARG_WITH(opengl,[ --without-opengl don't use OpenGL ] ) if test "x$with_opengl" == "xno"; then @@ -87,26 +100,43 @@ else with_opengl=yes AC_CHECK_LIB([GL], [glBegin], , AC_MSG_ERROR([ *** Unable to find OpenGL library])) - AC_DEFINE(USE_OPENGL, 1, [Defines if aethyra should use an OpenGL display]) + AC_DEFINE(USE_OPENGL, 1, [Defines if tmw should use an OpenGL display]) fi -# Search for sdl-config -AC_PATH_PROG(LIBSDL_CONFIG, sdl-config) - -if test -n "$LIBSDL_CONFIG"; then - LIBSDL_LIBS="`$LIBSDL_CONFIG --libs` -lSDL_image -lSDL_mixer -lSDL_ttf" - LIBSDL_CFLAGS="`$LIBSDL_CONFIG --cflags`" - AC_SUBST(LIBSDL_LIBS) - AC_SUBST(LIBSDL_CFLAGS) - - AC_DEFINE_UNQUOTED(HAVE_LIBSDL, 1, - [Defines if your system has the LIBSDL library]) +# Enable either tmwserv or eAthena +AC_ARG_WITH( + [server], + AS_HELP_STRING( + [--with-server=ARG], + [which server to use [[ARG=tmwserv,eathena]] + [(default=eathena)]] + ), + [if test "$withval" = "yes"; then + # default is eathena + with_server="eathena" + elif test "$withval" = "no"; then + AC_MSG_ERROR([$PACKAGE_NAME cannot run without a server.]) + else + with_server="$withval" + fi], + [with_server="eathena"] +) + +if test "$with_server" = "tmwserv"; then + AC_CHECK_LIB([enet], [enet_initialize], , + AC_MSG_ERROR([ *** Unable to find enet library (http://enet.bespin.org/)])) + AC_DEFINE(TMWSERV_SUPPORT, 1, [Defines if tmwserv support is enabled]) +elif test "$with_server" = "eathena"; then + AC_CHECK_LIB(SDL_net, SDLNet_Init, , + AC_MSG_ERROR([ *** Unable to find SDL_net library])) + AC_DEFINE(EATHENA_SUPPORT, 1, [Defines if eAthena support is enabled]) else - AC_DEFINE_UNQUOTED(HAVE_LIBSDL, 0, - [Defines if your system has the LIBSDL library]) - AC_MSG_ERROR([Could not find sdl-config, check http://www.libsdl.org]) + AC_MSG_ERROR([unknown server: $with_server]) fi +AM_CONDITIONAL(SERVER_TMWSERV, test "$with_server" = "tmwserv") +AM_CONDITIONAL(SERVER_EATHENA, test "$with_server" = "eathena") + AC_CONFIG_FILES([ Makefile src/Makefile @@ -124,7 +154,8 @@ po/Makefile.in AC_OUTPUT echo -echo Build with OpenGL: $with_opengl +echo "Build with OpenGL: $with_opengl" +echo "Supported server: $with_server" echo -echo configure complete, now type \"make\" +echo "configure complete, now type \"make\"" echo diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 4aa0cdd5..35b9d4e2 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -4,3 +4,4 @@ ADD_SUBDIRECTORY(fonts) ADD_SUBDIRECTORY(graphics) ADD_SUBDIRECTORY(help) ADD_SUBDIRECTORY(icons) +ADD_SUBDIRECTORY(fonts) diff --git a/data/Makefile.am b/data/Makefile.am index 44f795ef..62672207 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,4 +1,4 @@ SUBDIRS = fonts graphics help icons -aethyradatadir = $(pkgdatadir)/data +tmwdatadir = $(pkgdatadir)/data diff --git a/data/branding.xml b/data/branding.xml new file mode 100644 index 00000000..ea3ee467 --- /dev/null +++ b/data/branding.xml @@ -0,0 +1,24 @@ +<?xml version="1.0"?> + +<!-- +Branding information + +All values in here are the default values which are hardcoded into the TMW client. +So it would make no difference for the official version when this file is missing. It is +basically an example for developers of tmw forks to help them writing a branding.xml +for their forks. +--> + +<configuration> + <option name="appName" value="The Mana World"/> + <option name="appShort" value="tmw"/> + <option name="appIcon" value="icons/tmw.png"/> + <option name="loginWallpaper" value="graphics/images/login_wallpaper.png"/> + <option name="loginMusic" value="The Mana World - Hurnscald.ogg"/> + <option name="defaultServer" value="server.themanaworld.org"/> + <option name="defaultPort" value="9601"/> + <option name="defaultUpdateHost" value="http://updates.themanaworld.org"/> + <option name="guiFont" value="fonts/dejavusans.ttf" /> + <option name="speechFont" value="fonts/dejavusans.ttf" /> + +</configuration> diff --git a/data/fonts/Makefile.am b/data/fonts/Makefile.am index 1b575f7d..5aa02999 100644 --- a/data/fonts/Makefile.am +++ b/data/fonts/Makefile.am @@ -1,9 +1,8 @@ +fontsdir = $(pkgdatadir)/data/fonts -fontdir = $(pkgdatadir)/data/fonts - -font_DATA = \ +fonts_DATA = \ dejavusans.ttf \ dejavusans-bold.ttf EXTRA_DIST = \ - $(font_DATA) + $(fonts_DATA) diff --git a/data/graphics/gui/CMakeLists.txt b/data/graphics/gui/CMakeLists.txt index a562b8f1..cca412f2 100644 --- a/data/graphics/gui/CMakeLists.txt +++ b/data/graphics/gui/CMakeLists.txt @@ -1,13 +1,17 @@ SET (FILES bg_quad_dis.png + bubble.png button.png button_disabled.png buttonhi.png buttonpress.png checkbox.png + circle-gray.png + circle-green.png close_button.png deepbox.png default.png + equip_bg.png gui.xml hscroll_left_default.png hscroll_left_highlight.png @@ -22,8 +26,7 @@ SET (FILES resize.png selection.png slider.png - speech_bubble.png - speech_bubble.xml + speechbubble.xml tab.png tabselected.png target-cursor-blue-l.png diff --git a/data/graphics/gui/Makefile.am b/data/graphics/gui/Makefile.am index f2b62698..aaaac211 100644 --- a/data/graphics/gui/Makefile.am +++ b/data/graphics/gui/Makefile.am @@ -3,11 +3,14 @@ guidir = $(pkgdatadir)/data/graphics/gui gui_DATA = \ bg_quad_dis.png \ + bubble.png \ button.png \ button_disabled.png \ buttonhi.png \ buttonpress.png \ checkbox.png \ + circle-gray.png \ + circle-green.png \ close_button.png \ deepbox.png \ default.png \ @@ -25,7 +28,6 @@ gui_DATA = \ resize.png \ selection.png \ slider.png \ - speech_bubble.png \ speechbubble.xml \ tab.png \ tabselected.png \ diff --git a/data/graphics/gui/bg_quad_dis.png b/data/graphics/gui/bg_quad_dis.png Binary files differindex b79b9ca7..3a0354bb 100644 --- a/data/graphics/gui/bg_quad_dis.png +++ b/data/graphics/gui/bg_quad_dis.png diff --git a/data/graphics/gui/bubble.png b/data/graphics/gui/bubble.png Binary files differnew file mode 100644 index 00000000..45322eb2 --- /dev/null +++ b/data/graphics/gui/bubble.png diff --git a/data/graphics/gui/button.png b/data/graphics/gui/button.png Binary files differindex 77123707..9ebbea63 100644 --- a/data/graphics/gui/button.png +++ b/data/graphics/gui/button.png diff --git a/data/graphics/gui/button_disabled.png b/data/graphics/gui/button_disabled.png Binary files differindex 00cdb650..0ce3aa6f 100644 --- a/data/graphics/gui/button_disabled.png +++ b/data/graphics/gui/button_disabled.png diff --git a/data/graphics/gui/buttonhi.png b/data/graphics/gui/buttonhi.png Binary files differindex a308c6c0..c4772634 100644 --- a/data/graphics/gui/buttonhi.png +++ b/data/graphics/gui/buttonhi.png diff --git a/data/graphics/gui/buttonpress.png b/data/graphics/gui/buttonpress.png Binary files differindex 439634aa..e9cd1765 100644 --- a/data/graphics/gui/buttonpress.png +++ b/data/graphics/gui/buttonpress.png diff --git a/data/graphics/gui/checkbox.png b/data/graphics/gui/checkbox.png Binary files differindex bf8e9052..669ecf03 100644 --- a/data/graphics/gui/checkbox.png +++ b/data/graphics/gui/checkbox.png diff --git a/data/graphics/gui/circle-gray.png b/data/graphics/gui/circle-gray.png Binary files differnew file mode 100644 index 00000000..719b0b10 --- /dev/null +++ b/data/graphics/gui/circle-gray.png diff --git a/data/graphics/gui/circle-green.png b/data/graphics/gui/circle-green.png Binary files differnew file mode 100644 index 00000000..bab39e05 --- /dev/null +++ b/data/graphics/gui/circle-green.png diff --git a/data/graphics/gui/close_button.png b/data/graphics/gui/close_button.png Binary files differindex 4c0356fb..f87cc2a9 100644 --- a/data/graphics/gui/close_button.png +++ b/data/graphics/gui/close_button.png diff --git a/data/graphics/gui/deepbox.png b/data/graphics/gui/deepbox.png Binary files differindex 39ee2032..084b5f61 100644 --- a/data/graphics/gui/deepbox.png +++ b/data/graphics/gui/deepbox.png diff --git a/data/graphics/gui/default.png b/data/graphics/gui/default.png Binary files differindex 93877ad8..a8bc5baf 100644 --- a/data/graphics/gui/default.png +++ b/data/graphics/gui/default.png diff --git a/data/graphics/gui/equip_bg.png b/data/graphics/gui/equip_bg.png Binary files differnew file mode 100644 index 00000000..77ac63d8 --- /dev/null +++ b/data/graphics/gui/equip_bg.png diff --git a/data/graphics/gui/hscroll_left_default.png b/data/graphics/gui/hscroll_left_default.png Binary files differindex eac8bc59..2f763d30 100644 --- a/data/graphics/gui/hscroll_left_default.png +++ b/data/graphics/gui/hscroll_left_default.png diff --git a/data/graphics/gui/hscroll_left_highlight.png b/data/graphics/gui/hscroll_left_highlight.png Binary files differindex fa37f442..6be5ae25 100644 --- a/data/graphics/gui/hscroll_left_highlight.png +++ b/data/graphics/gui/hscroll_left_highlight.png diff --git a/data/graphics/gui/hscroll_left_pressed.png b/data/graphics/gui/hscroll_left_pressed.png Binary files differindex c893406a..b8ebcb46 100644 --- a/data/graphics/gui/hscroll_left_pressed.png +++ b/data/graphics/gui/hscroll_left_pressed.png diff --git a/data/graphics/gui/hscroll_right_default.png b/data/graphics/gui/hscroll_right_default.png Binary files differindex 04bcec2f..33fdddd0 100644 --- a/data/graphics/gui/hscroll_right_default.png +++ b/data/graphics/gui/hscroll_right_default.png diff --git a/data/graphics/gui/hscroll_right_highlight.png b/data/graphics/gui/hscroll_right_highlight.png Binary files differindex 598f7f29..e9e633ea 100644 --- a/data/graphics/gui/hscroll_right_highlight.png +++ b/data/graphics/gui/hscroll_right_highlight.png diff --git a/data/graphics/gui/hscroll_right_pressed.png b/data/graphics/gui/hscroll_right_pressed.png Binary files differindex da9113d1..53972f2b 100644 --- a/data/graphics/gui/hscroll_right_pressed.png +++ b/data/graphics/gui/hscroll_right_pressed.png diff --git a/data/graphics/gui/item_shortcut_bgr.png b/data/graphics/gui/item_shortcut_bgr.png Binary files differindex cdc12dd4..57b90141 100644 --- a/data/graphics/gui/item_shortcut_bgr.png +++ b/data/graphics/gui/item_shortcut_bgr.png diff --git a/data/graphics/gui/mouse.png b/data/graphics/gui/mouse.png Binary files differindex 6c1b7e8e..84dc2ad1 100644 --- a/data/graphics/gui/mouse.png +++ b/data/graphics/gui/mouse.png diff --git a/data/graphics/gui/radioin.png b/data/graphics/gui/radioin.png Binary files differindex de43c28a..12e027fe 100644 --- a/data/graphics/gui/radioin.png +++ b/data/graphics/gui/radioin.png diff --git a/data/graphics/gui/radioout.png b/data/graphics/gui/radioout.png Binary files differindex 26287484..5eb67bd8 100644 --- a/data/graphics/gui/radioout.png +++ b/data/graphics/gui/radioout.png diff --git a/data/graphics/gui/resize.png b/data/graphics/gui/resize.png Binary files differindex 327787a0..6b31ac64 100644 --- a/data/graphics/gui/resize.png +++ b/data/graphics/gui/resize.png diff --git a/data/graphics/gui/slider.png b/data/graphics/gui/slider.png Binary files differindex c0a3b6f2..465ad0e8 100644 --- a/data/graphics/gui/slider.png +++ b/data/graphics/gui/slider.png diff --git a/data/graphics/gui/speech_bubble.png b/data/graphics/gui/speech_bubble.png Binary files differindex 3f17af8c..3e678099 100644 --- a/data/graphics/gui/speech_bubble.png +++ b/data/graphics/gui/speech_bubble.png diff --git a/data/graphics/gui/speechbubble.xml b/data/graphics/gui/speechbubble.xml index 1b11ea85..84b6557b 100644 --- a/data/graphics/gui/speechbubble.xml +++ b/data/graphics/gui/speechbubble.xml @@ -1,18 +1,18 @@ -<skinset name="SpeechBubble" image="speech_bubble.png"> +<skinset name="SpeechBubble" image="bubble.png"> <widget type="Window"> <!-- Top Row --> - <part type="top-left-corner" xpos="0" ypos="0" width="14" height="14" /> - <part type="top-edge" xpos="15" ypos="0" width="1" height="14" /> - <part type="top-right-corner" xpos="17" ypos="0" width="17" height="14" /> + <part type="top-left-corner" xpos="0" ypos="0" width="5" height="5" /> + <part type="top-edge" xpos="5" ypos="0" width="5" height="5" /> + <part type="top-right-corner" xpos="10" ypos="0" width="5" height="5" /> - <!-- Middle Row --> - <part type="left-edge" xpos="0" ypos="15" width="14" height="1" /> - <part type="bg-quad" xpos="34" ypos="0" width="32" height="32" /> - <part type="right-edge" xpos="17" ypos="15" width="17" height="1" /> + <!-- Middle Row --> + <part type="left-edge" xpos="0" ypos="5" width="5" height="5" /> + <part type="bg-quad" xpos="5" ypos="5" width="5" height="5" /> + <part type="right-edge" xpos="10" ypos="5" width="5" height="5" /> - <!-- Bottom Row --> - <part type="bottom-left-corner" xpos="0" ypos="17" width="14" height="17" /> - <part type="bottom-edge" xpos="15" ypos="17" width="1" height="17" /> - <part type="bottom-right-corner" xpos="17" ypos="17" width="17" height="17" /> + <!-- Bottom Row --> + <part type="bottom-left-corner" xpos="0" ypos="10" width="5" height="5" /> + <part type="bottom-edge" xpos="5" ypos="10" width="5" height="5" /> + <part type="bottom-right-corner" xpos="10" ypos="10" width="5" height="5" /> </widget> -</skinset>
\ No newline at end of file +</skinset> diff --git a/data/graphics/gui/tab.png b/data/graphics/gui/tab.png Binary files differindex b277a5f8..91eadf08 100644 --- a/data/graphics/gui/tab.png +++ b/data/graphics/gui/tab.png diff --git a/data/graphics/gui/tabselected.png b/data/graphics/gui/tabselected.png Binary files differindex d84fabc7..e2983060 100644 --- a/data/graphics/gui/tabselected.png +++ b/data/graphics/gui/tabselected.png diff --git a/data/graphics/gui/vscroll_blue.png b/data/graphics/gui/vscroll_blue.png Binary files differindex 95708aba..094a05d7 100644 --- a/data/graphics/gui/vscroll_blue.png +++ b/data/graphics/gui/vscroll_blue.png diff --git a/data/graphics/gui/vscroll_down_default.png b/data/graphics/gui/vscroll_down_default.png Binary files differindex 5c4c30cd..c4292489 100644 --- a/data/graphics/gui/vscroll_down_default.png +++ b/data/graphics/gui/vscroll_down_default.png diff --git a/data/graphics/gui/vscroll_down_highlight.png b/data/graphics/gui/vscroll_down_highlight.png Binary files differindex 47c9d155..ac88f7c7 100644 --- a/data/graphics/gui/vscroll_down_highlight.png +++ b/data/graphics/gui/vscroll_down_highlight.png diff --git a/data/graphics/gui/vscroll_down_pressed.png b/data/graphics/gui/vscroll_down_pressed.png Binary files differindex dfea0eb8..9dcc89f6 100644 --- a/data/graphics/gui/vscroll_down_pressed.png +++ b/data/graphics/gui/vscroll_down_pressed.png diff --git a/data/graphics/gui/vscroll_grey.png b/data/graphics/gui/vscroll_grey.png Binary files differindex 8bb4180e..f99da467 100644 --- a/data/graphics/gui/vscroll_grey.png +++ b/data/graphics/gui/vscroll_grey.png diff --git a/data/graphics/gui/vscroll_red.png b/data/graphics/gui/vscroll_red.png Binary files differindex bcc45c89..6a733ecc 100644 --- a/data/graphics/gui/vscroll_red.png +++ b/data/graphics/gui/vscroll_red.png diff --git a/data/graphics/gui/vscroll_up_default.png b/data/graphics/gui/vscroll_up_default.png Binary files differindex 2556998f..1cecc351 100644 --- a/data/graphics/gui/vscroll_up_default.png +++ b/data/graphics/gui/vscroll_up_default.png diff --git a/data/graphics/gui/vscroll_up_highlight.png b/data/graphics/gui/vscroll_up_highlight.png Binary files differindex 3cbcd861..7b5009f3 100644 --- a/data/graphics/gui/vscroll_up_highlight.png +++ b/data/graphics/gui/vscroll_up_highlight.png diff --git a/data/graphics/gui/vscroll_up_pressed.png b/data/graphics/gui/vscroll_up_pressed.png Binary files differindex 8762d118..2320ec42 100644 --- a/data/graphics/gui/vscroll_up_pressed.png +++ b/data/graphics/gui/vscroll_up_pressed.png diff --git a/data/graphics/images/Makefile.am b/data/graphics/images/Makefile.am index e003bc7a..4df6b7ed 100644 --- a/data/graphics/images/Makefile.am +++ b/data/graphics/images/Makefile.am @@ -2,11 +2,7 @@ imagesdir = $(pkgdatadir)/data/graphics/images images_DATA = \ error.png \ - login_wallpaper.png \ - login_wallpaper_1024x768.png \ - login_wallpaper_1280x960.png \ - login_wallpaper_1440x1080.png \ - login_wallpaper_1600x1200.png + login_wallpaper.png EXTRA_DIST = \ $(images_DATA) diff --git a/data/graphics/images/copyright.txt b/data/graphics/images/copyright.txt deleted file mode 100644 index 2eb4c9df..00000000 --- a/data/graphics/images/copyright.txt +++ /dev/null @@ -1,6 +0,0 @@ -The login wallpaper (Mitsukai Hana) is used by permission of Kayla Shirley (kai_kaiyla@live.com). All rights are reserved by her. - -The login wallpaper with permission of the author is now licenced under -a CC-NC (Creative Commons Non-Commercial) licence. - -http://creativecommons.org/licenses/by-nc/3.0/ diff --git a/data/graphics/images/login_wallpaper.png b/data/graphics/images/login_wallpaper.png Binary files differindex 96389618..7af4f913 100644 --- a/data/graphics/images/login_wallpaper.png +++ b/data/graphics/images/login_wallpaper.png diff --git a/data/graphics/images/login_wallpaper_1024x768.png b/data/graphics/images/login_wallpaper_1024x768.png Binary files differdeleted file mode 100644 index 1239c6b0..00000000 --- a/data/graphics/images/login_wallpaper_1024x768.png +++ /dev/null diff --git a/data/graphics/images/login_wallpaper_1280x960.png b/data/graphics/images/login_wallpaper_1280x960.png Binary files differdeleted file mode 100644 index a7cf1242..00000000 --- a/data/graphics/images/login_wallpaper_1280x960.png +++ /dev/null diff --git a/data/graphics/images/login_wallpaper_1440x1080.png b/data/graphics/images/login_wallpaper_1440x1080.png Binary files differdeleted file mode 100644 index f0659073..00000000 --- a/data/graphics/images/login_wallpaper_1440x1080.png +++ /dev/null diff --git a/data/graphics/images/login_wallpaper_1600x1200.png b/data/graphics/images/login_wallpaper_1600x1200.png Binary files differdeleted file mode 100644 index 9e8d6663..00000000 --- a/data/graphics/images/login_wallpaper_1600x1200.png +++ /dev/null diff --git a/data/help/about.txt b/data/help/about.txt index 79840ad6..812aad84 100644 --- a/data/help/about.txt +++ b/data/help/about.txt @@ -1,40 +1,17 @@ <- @@index|Back to Index@@ -##3 === ABOUT Aethyra === +##3 === ABOUT THE MANA WORLD === - ##2Aethyra (Ae)##P Aethyra is a 2D MMORPG, using the eAthena server - (an open-source clone of the commercial Ragnarok Online server). It - features expanding lands and community-made graphics, making for a - fun, free, open source community project. - - ##PAethyra started out as "The Mana Experiment," an experimental - test-server for community-developed content designed for The Mana - World which was put into action by Blame, Sanga, and Sertaline. - ##PSoon thereafter, it became evident that it was taking far too - long for the elitist development team at The Mana World to - implement good tested-content. They made excuses and treated the - long-awaited custom server TMWServ as the answer to all the problems, - and left the eAthena server (which The Mana World still runs on) - to rot. Many development team members lost interest in helping, and - the programmers forsook the eAthena server saying that it would - simply delay TMWServ progress for months to fix the simplest of - errors. In response to this, The Mana Experiment became a fork - project, and an official game server. - ##PTime passed, and more and more content was tested and implemented. - Soon, discussion began for a name. Aethyra was chosen, and the Game - you see now was setup. Content development has never been better, and - the staff never more motivated! Stay on the lookout for more exciting - Aethyra developments! - -##3 === Aethyra's Goal === - - ##PAethyra is a community driven experiment that utilizes eAthena at - its core with the end goal of getting its players as involved in the - process as much as possible. It's originally forked from The Mana - World when its developers came up with the idea of "Why should we - have to wait for an MMORPG game in development when we've already got - a great server setup here that does everything we've been promised - and more?" ##P As such, we are trying to implement as many functions - of eAthena as possible while creating our own in the process based - on what our players want to see. + ##2The Mana World (TMW)##P is a serious effort to create an innovative free + and open source MMORPG. TMW uses 2D graphics and aims to create a + large and diverse interactive world. It is licensed under the GPL, + making sure this game can't ever run away from you. + + The project includes the development of both a client and a server, + as well as the development of an online world. At the moment we're + making alpha releases of the client, while our server is in early + development. The eAthena free software Ragnarok Online server is used + until our own server has matured enough to replace it. Once ready, + we'll be making releases of our server too so anybody will be free to + set up their own server and start building their own online world. diff --git a/data/help/changes.txt b/data/help/changes.txt index 60e78419..50242b50 100644 --- a/data/help/changes.txt +++ b/data/help/changes.txt @@ -2,7 +2,74 @@ ##3 === RECENT CHANGES === - -Go to http://gitorious.org/projects/tmw/repos/aethyra for a detailed -list of changes. - + + 0.0.28.1 (12 February 2009) + - Enabled translations on Windows + - Added command line option to set home directory path + - Tweaked green chat color to be a bit more readable + - Made font size configurable in the config file + - Fixed restoring of punching animation after weapon removal + - Fixed inability to chat while talking to NPCs + - Updated Swedish translation + + 0.0.28 (25 January 2009) + - Added support for animated map tiles + - Added support for internationalization, plus many translations + - Added support for TrueType fonts + - Trade window is now resizable + - Obscure precise home directory name when making screenshots + - Fixed follow-parent of nested and being-following particle emitters + + 0.0.27 (9 December 2008) + - Added support for showing map name above minimap + - Added showing how long the ban is when banned + - Added --data parameter for developers + - Added particle effect for critical hits + - Added support for dynamic skill names and hair colors + - Added support for status effects + - Added ability to add equipment to the shortcut bar + - Added ability to change configuration during login phase (from Aethyra) + - Mouse cursor will now hide when not used for some time + - Inventory window now displays amount of slots used + - Center minimap on player when it is larger than the minimap window + - Extended particle emitters with properties that can change over time + - Extended the GUI font to support more characters + - Only require a restart to switch to full screen with OpenGL on Windows + - Make sure news and update file list aren't cached (from Aethyra) + - Made NPC dialogs resizable (from Aethyra) + - Made window shortcuts configurable + - Fixed visibility of trade window on startup + - Fixed a client input freeze when closing NPC script from server + - Fixed dead players to lie on the ground instead of standing around + - Fixed shortcuts being activated when trade window was visible + - Fixed a crash when equipment window is open + - Fixed money value on failing to buy (from Aethyra) + - Fixed crash in right-click menu when used after a being disappeared + + 0.0.26 (29 August 2008) + - Added support for a newer version of eAthena server + - Added support for showing custom being effects + - Added new features to the particle engine + - Position names and chat such that there is no overlap, when possible + - Fixed a crash when loading a corrupt map that has too much layer data + + 0.0.25 (27 July 2008) + - Added support for whispering to other players + - Added ability to ignore other players + - Added command line argument for specifying the update host (-H) + - Added support for receiving the update host from the server + - Added support for displaying a shield sprite + - Added shortcut window, allowing you to quickly access inventory items + - Added message when gaining money from trade or quest + - Added support for an arbitrary number of map layers + - Added support for basing one sprite definition on another + - Added the possibility to assign particle effects to NPCs + - Added remembering whether windows are visible or not + - Updated to work with Guichan 0.8.x + - Improved accuracy of monster targeting with the mouse + - Page up and page down will now scroll the chat window + - Item icons are now loaded on demand and unloaded when no longer used + - Fixed display of critical hits + - Fixed multi-channel image dyeing + - Fixed updating of money display after buying + diff --git a/data/help/commands.txt b/data/help/commands.txt index 2785869c..c4795050 100644 --- a/data/help/commands.txt +++ b/data/help/commands.txt @@ -48,9 +48,10 @@ /whisper <name> <message> - This will send <message> to player <name>, if that player is logged in. - to whisper to users with spaces in there name you must incase the user name in qoutes - (e.g. /whisper "user name" <message>) + This will send <message> to player <name>, if that player is logged in. If the + name has a space in it, put double quotes around it like this: + + /whisper "<name>" <message> For further help type /help in the chat console. diff --git a/data/help/header.txt b/data/help/header.txt index 28535aeb..0309b970 100644 --- a/data/help/header.txt +++ b/data/help/header.txt @@ -1,9 +1,9 @@ -##1 AETHYRA +##1 T H E M A N A W O R L D ##1 ========================================== - - ##2Version:##6 Aethyra 0.0.29 ##2Date:##12 February 2008 -##2 Website: http://www.aethyra.org + ##2Version:##6 0.0.29 ##2Date:##3 [Day] [Month] 2009 + +##2 Website: http://themanaworld.org diff --git a/data/help/index.txt b/data/help/index.txt index 4dcc2332..b7262f85 100644 --- a/data/help/index.txt +++ b/data/help/index.txt @@ -1,6 +1,6 @@ ##3 === INDEX === - -> @@about|About Aethyra@@ + -> @@about|About The Mana World@@ -> @@team|Development Team@@ -> @@changes|Recent Changes@@ diff --git a/data/help/support.txt b/data/help/support.txt index 5d7d019f..dfbd588d 100644 --- a/data/help/support.txt +++ b/data/help/support.txt @@ -7,11 +7,11 @@ can't find a solution to your problem, feel free to check our Bugs/Support section of the forum: -##2 http://www.aethyra.org/forums/ +##2 http://forums.themanaworld.org/viewforum.php?f=3 or come visit us on our IRC channel: -##2 #aethyra ##P@##2 irc.freenode.net +##2 #themanaworld ##P@##2 irc.freenode.net Otherwise see the @@team|Development Team@@ section to have a list of developers and how to contact them. diff --git a/data/help/team.txt b/data/help/team.txt index 6b2fae88..e17771d5 100644 --- a/data/help/team.txt +++ b/data/help/team.txt @@ -2,71 +2,131 @@ ##3 === DEVELOPMENT TEAM === - -##2 Administration: - - ##9Blua Server Administrator/Content Development - - ##9MrDan Forum Administrator/GM - - ##9Slinker Game Server Host - - ##9Tametomo Project Head/Artist/Client Developer/Ubuntu Package Maintainer/Misc. - + +##2 Project Leader: + + ##9Eugenio Favalli (aka ElvenProgrammer) + elvenprogrammer@gmail.com + + ##2 Programmers: - - ##9Kraant Developer - <kraant@gmail.com> - - ##9Forge Developer + + ##9Bjorn Lindeijer (aka Hammerbear) + b_lindeijer@users.sourceforge.net + (various parts, GUI, graphics, A* and map rewrites) + + ##9Björn Steinbrink (aka Doener) + der_doener@users.sourceforge.net + (various parts) + + ##9Eric Scrivner (aka zenogais) + bitshift2002@users.sourceforge.net + (resource manager) + + ##9J. Avila (aka Javila) + javila@users.sourceforge.net + (various parts, GUI) + + ##9Jan-Fabian Humann (aka Mra) + malastare@users.sourceforge.net + (some GUI parts) + + ##9Kiyoshi Kyokai (aka Kiokay) + kyokai@users.sourceforge.net + (game systems designer) + + ##9Mateusz Kaduk (aka Usiu) + usiu@users.sourceforge.net + (several GUI parts) + + ##9Aaron Marks (aka nym) + nymacro@users.sourceforge.net + (several GUI parts) + + ##9Shura + kth5@users.sourceforge.net + (configuration, sound, misc. ports) + + ##9Yohann Ferreira (aka Bertram) + bertram25@users.sourceforge.net + (SDL input, progress bar drawing, Debian package) + ##2 Artists: - - ##9Angeliex Artist - - ##9Bawabawa/Kyron/Pyrestriker Artist/SuSe Package Contributor - - ##9Frictor Head Artist - -##2 Mappers: - - ##9Arkyan Mapper - - ##9GonzoDark Mapper - - ##9Solo Mapper - -##2 Content Development: - - ##9Moose - -##2 GMs - - ##9Grimmjow - - ##9SoftLace1 - - ##9Mr. and Mrs. Solo - - ##9Srauls + + ##9Clef + (tiles, concepts) + + ##9Frode Lindeijer (aka Modanung) + f.lindeijer@xs4all.nl + (arts) + + ##9Gnulia + (conceptual art) + + ##9Magick + (music and sound effects) + + ##9Neko-mon + (player sprites, various things) + + ##9Neorice + (monster sprites, tiles) + + ##9Pajarico + pajarico@users.sourceforge.net + (conceptual arts) + + ##9Romulo Fernandes + razor85@users.sourceforge.net + (arts) + + ##9Rotonen + rotonen@users.sourceforge.net + (backstory, art director, music, sound) + + ##9Talaroc + talaroc@users.sourceforge.net + (sprites) + + ##9Ti Sing Hao + (music) + ##2 Misc. thanks: - - ##9doorsman Testing - - ##9Snoopy Testing - - ##9Tarax Testing - -##2 Leave of Absence - - ##9Blame Developer/GM - <blame@aethyra.com> - - ##9Sanga Head Developer/GM ("Sanga") - <sanga@aethyra.com> - - ##9Scraggy Client Developer - <DougABoffey@netscape.net> - - ##9Sert Head Artist/GM + + ##9David Smith (aka catfish_man) + catfish_man@users.sourceforge.net + (Mac package) + + ##9Igor Morgado (aka imorgado) + imorgado@users.sourceforge.net + (tester) + + ##9maci + maci321@users.sourceforge.net + (technical support) + + ##9Rodney Dawes (aka dobey) + dobey@users.sourceforge.net + (Mac package) + + ##9Ultramichy + (hosting test server) + + +##2 Inactive/retired: + + ##9Chetic + chetic@users.sourceforge.net + (maps) + + ##9Simon Edwardsson (aka SimEdw) + simonedw@users.sourceforge.net + (network code, Mac package) + + ##9Sull + (hosting CVS and related services) + + ##9Vlady + (several items) diff --git a/data/icons/CMakeLists.txt b/data/icons/CMakeLists.txt index 8eb46d77..e50c7ab9 100644 --- a/data/icons/CMakeLists.txt +++ b/data/icons/CMakeLists.txt @@ -1,5 +1,5 @@ SET(FILES - aethyra.png + tmw.png ) INSTALL(FILES ${FILES} DESTINATION ${DATA_DIR}/icons) diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am index fee51e4f..375edef7 100644 --- a/data/icons/Makefile.am +++ b/data/icons/Makefile.am @@ -1,14 +1,14 @@ iconsdir = $(pkgdatadir)/data/icons -icons_DATA = aethyra.png +icons_DATA = tmw.png install-data-local: $(mkinstalldirs) $(DESTDIR)$(datadir)/pixmaps - $(INSTALL) $(srcdir)/aethyra.png $(DESTDIR)$(datadir)/pixmaps/aethyra.png + $(INSTALL) $(srcdir)/tmw.png $(DESTDIR)$(datadir)/pixmaps/tmw.png uninstall-local: - rm -f $(DESTDIR)$(datadir)/pixmaps/aethyra.png + rm -f $(DESTDIR)$(datadir)/pixmaps/tmw.png EXTRA_DIST = \ $(icons_DATA) diff --git a/data/icons/The Mana World.icns b/data/icons/The Mana World.icns Binary files differnew file mode 100644 index 00000000..7230a099 --- /dev/null +++ b/data/icons/The Mana World.icns diff --git a/data/icons/aethyra.ico b/data/icons/aethyra.ico Binary files differdeleted file mode 100644 index 016e752f..00000000 --- a/data/icons/aethyra.ico +++ /dev/null diff --git a/data/icons/aethyra.png b/data/icons/aethyra.png Binary files differdeleted file mode 100644 index e686289c..00000000 --- a/data/icons/aethyra.png +++ /dev/null diff --git a/data/icons/aethyra.xpm b/data/icons/aethyra.xpm deleted file mode 100644 index 515be72e..00000000 --- a/data/icons/aethyra.xpm +++ /dev/null @@ -1,312 +0,0 @@ -/* XPM */
-static char * Aethyra_xpm[] = {
-"32 32 277 2",
-" c None",
-". c #840000",
-"+ c #7E0000",
-"@ c #4F0000",
-"# c #810000",
-"$ c #830000",
-"% c #7B0000",
-"& c #460000",
-"* c #4C0000",
-"= c #4B0000",
-"- c #750000",
-"; c #860000",
-"> c #850000",
-", c #5D0000",
-"' c #490000",
-") c #450000",
-"! c #4A0000",
-"~ c #440000",
-"{ c #6A0000",
-"] c #7A0000",
-"^ c #8B0000",
-"/ c #990000",
-"( c #960000",
-"_ c #720000",
-": c #6E0000",
-"< c #740000",
-"[ c #6B0202",
-"} c #550505",
-"| c #420404",
-"1 c #440101",
-"2 c #4D0000",
-"3 c #4E0000",
-"4 c #480000",
-"5 c #9D0000",
-"6 c #9B0000",
-"7 c #6F0000",
-"8 c #710000",
-"9 c #760000",
-"0 c #680404",
-"a c #4B0C0C",
-"b c #3C0909",
-"c c #470202",
-"d c #450101",
-"e c #500000",
-"f c #510000",
-"g c #790000",
-"h c #890000",
-"i c #920000",
-"j c #710706",
-"k c #7D381F",
-"l c #934A1A",
-"m c #7B1A09",
-"n c #6B1609",
-"o c #521E13",
-"p c #4F2517",
-"q c #5D230F",
-"r c #4D0F04",
-"s c #350A0A",
-"t c #360909",
-"u c #470303",
-"v c #930000",
-"w c #840202",
-"x c #712C1C",
-"y c #A58248",
-"z c #866621",
-"A c #835819",
-"B c #98681F",
-"C c #845C1D",
-"D c #BB964A",
-"E c #856225",
-"F c #3D1B0B",
-"G c #241818",
-"H c #251717",
-"I c #360A0A",
-"J c #430000",
-"K c #6C0000",
-"L c #800000",
-"M c #730404",
-"N c #6A431E",
-"O c #473C1C",
-"P c #534420",
-"Q c #806125",
-"R c #53290B",
-"S c #461C09",
-"T c #BB9432",
-"U c #65490F",
-"V c #1F1110",
-"W c #1A2323",
-"X c #1A2222",
-"Y c #261212",
-"Z c #440202",
-"` c #7F0000",
-" . c #870000",
-".. c #6D0505",
-"+. c #422522",
-"@. c #454434",
-"#. c #A18744",
-"$. c #8F7237",
-"%. c #A37F48",
-"&. c #AD8847",
-"*. c #C6A657",
-"=. c #644C14",
-"-. c #211615",
-";. c #1C2626",
-">. c #1B2323",
-",. c #231313",
-"'. c #420202",
-"). c #6C0404",
-"!. c #532D23",
-"~. c #A8915B",
-"{. c #967C37",
-"]. c #6E5926",
-"^. c #453512",
-"/. c #473713",
-"(. c #A4832A",
-"_. c #594310",
-":. c #241F1E",
-"<. c #232828",
-"[. c #1C2020",
-"}. c #241111",
-"|. c #430202",
-"1. c #7C5030",
-"2. c #967C3D",
-"3. c #3E3318",
-"4. c #3D3930",
-"5. c #454442",
-"6. c #524D44",
-"7. c #C09E45",
-"8. c #654F17",
-"9. c #262524",
-"0. c #252929",
-"a. c #410202",
-"b. c #6B0302",
-"c. c #A78041",
-"d. c #6A5621",
-"e. c #414543",
-"f. c #696B6B",
-"g. c #747676",
-"h. c #7B7566",
-"i. c #C9A84F",
-"j. c #665017",
-"k. c #282725",
-"l. c #252A2A",
-"m. c #1B2222",
-"n. c #3D0202",
-"o. c #750802",
-"p. c #B48E41",
-"q. c #564418",
-"r. c #4A4B4B",
-"s. c #6D6F6F",
-"t. c #797A7A",
-"u. c #867C62",
-"v. c #AE9040",
-"w. c #664F12",
-"x. c #2D2A25",
-"y. c #242828",
-"z. c #1E1E1E",
-"A. c #291010",
-"B. c #400202",
-"C. c #860B02",
-"D. c #B78C32",
-"E. c #594013",
-"F. c #433E3E",
-"G. c #606464",
-"H. c #74736C",
-"I. c #7C6D44",
-"J. c #433719",
-"K. c #413311",
-"L. c #322F1E",
-"M. c #1C2121",
-"N. c #271212",
-"O. c #3C0606",
-"P. c #8C0200",
-"Q. c #B5771D",
-"R. c #765513",
-"S. c #3F3636",
-"T. c #555B5B",
-"U. c #686969",
-"V. c #5A5957",
-"W. c #3C3832",
-"X. c #403826",
-"Y. c #2F3023",
-"Z. c #1C1F1D",
-"`. c #2E0A0A",
-" + c #460101",
-".+ c #8F0101",
-"++ c #A03F0C",
-"@+ c #AC7E19",
-"#+ c #4B3625",
-"$+ c #474747",
-"%+ c #5B5C5A",
-"&+ c #83775A",
-"*+ c #8C7539",
-"=+ c #67541F",
-"-+ c #6B551C",
-";+ c #8C6D24",
-">+ c #4E1C09",
-",+ c #4A0101",
-"'+ c #8A0606",
-")+ c #8D1203",
-"!+ c #A76713",
-"~+ c #87611B",
-"{+ c #453A32",
-"]+ c #52554E",
-"^+ c #A38A45",
-"/+ c #715818",
-"(+ c #7A6424",
-"_+ c #443212",
-":+ c #947026",
-"<+ c #7D4E11",
-"[+ c #490400",
-"}+ c #420000",
-"|+ c #7F0808",
-"1+ c #8B0101",
-"2+ c #800F01",
-"3+ c #915E11",
-"4+ c #504F40",
-"5+ c #4E4834",
-"6+ c #5A4715",
-"7+ c #5B4814",
-"8+ c #382813",
-"9+ c #917035",
-"0+ c #533209",
-"a+ c #3F0400",
-"b+ c #8E0101",
-"c+ c #8A0000",
-"d+ c #671104",
-"e+ c #663D12",
-"f+ c #786023",
-"g+ c #74612B",
-"h+ c #665320",
-"i+ c #675321",
-"j+ c #785C24",
-"k+ c #684718",
-"l+ c #380B00",
-"m+ c #400000",
-"n+ c #8C0303",
-"o+ c #8D0000",
-"p+ c #780101",
-"q+ c #510808",
-"r+ c #291A16",
-"s+ c #26291C",
-"t+ c #2D2B18",
-"u+ c #321F0E",
-"v+ c #370A02",
-"w+ c #3E0100",
-"x+ c #850202",
-"y+ c #600202",
-"z+ c #331313",
-"A+ c #1E2121",
-"B+ c #1A1E1E",
-"C+ c #270D0D",
-"D+ c #470000",
-"E+ c #7B0404",
-"F+ c #720101",
-"G+ c #4B0D0D",
-"H+ c #2D1717",
-"I+ c #261414",
-"J+ c #380808",
-"K+ c #7E0202",
-"L+ c #5D0606",
-"M+ c #3B0E0E",
-"N+ c #300C0C",
-"O+ c #430303",
-"P+ c #7A0505",
-"Q+ c #7C0000",
-"R+ c #640404",
-"S+ c #430D0D",
-"T+ c #460202",
-"U+ c #610505",
-"V+ c #440E0E",
-"W+ c #390B0B",
-"X+ c #560202",
-"Y+ c #480707",
-"Z+ c #410505",
-"`+ c #4B0101",
-" @ c #480101",
-" ",
-" ",
-" ",
-" . + @ ",
-" # $ % & * @ = ",
-" - # ; > $ , ' ) ! @ * ~ ",
-" { ] ^ / ( $ _ : < [ } | 1 ) ~ ' 2 2 3 3 4 ",
-" ] ^ 5 6 . 7 8 9 0 a b c * d 4 e f @ 3 4 ",
-" g h / i j k l m n o p q r s t u e 3 2 4 ",
-" 8 > v w x y z A B C D E F G H I = @ ' J ",
-" K L ^ M N O P Q R S T U V W X Y Z e ) ",
-" ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.e & ",
-" ` . ).!.~.{.].^./.(._.:.<.[.}.|.@ 4 ",
-" # [ 1.2.3.4.5.6.7.8.9.0.[.}.a.= ",
-" ` b.c.d.e.f.g.h.i.j.k.l.m.,.n.) ",
-" L o.p.q.r.s.t.u.v.w.x.y.z.A.B.~ ",
-" ; C.D.E.F.G.H.I.J.K.L.M.N.O.4 ",
-" P.Q.R.S.T.U.V.W.X.Y.Z.`. +2 ",
-" .+++@+#+$+%+&+*+=+-+;+>+,+= ",
-" '+)+!+~+{+]+^+/+(+_+:+<+[+}+ ",
-" |+1+2+3+z 4+5+6+7+8+9+0+a+ ",
-" b+c+d+e+f+g+h+i+j+k+l+m+ ",
-" n+o+p+q+r+s+t+u+v+w+) ) ",
-" x+` y+z+A+B+C+1 e D+ ",
-" E+# F+G+H+I+J+3 @ ~ ",
-" K+% L+M+N+O+e ' ",
-" P+Q+R+S+I T+@ ) ",
-" 9 U+V+W+u 2 ",
-" X+Y+Z+ + ",
-" * `+ @ ",
-" ",
-" "};
diff --git a/data/icons/tmw.ico b/data/icons/tmw.ico Binary files differnew file mode 100644 index 00000000..61d559a3 --- /dev/null +++ b/data/icons/tmw.ico diff --git a/data/icons/tmw.png b/data/icons/tmw.png Binary files differnew file mode 100644 index 00000000..93e6c9ae --- /dev/null +++ b/data/icons/tmw.png diff --git a/data/icons/tmw.xpm b/data/icons/tmw.xpm new file mode 100644 index 00000000..06ec2865 --- /dev/null +++ b/data/icons/tmw.xpm @@ -0,0 +1,784 @@ +/* XPM */ +static char * tmw_xpm[] = { +"32 32 749 2", +" c None", +". c #E4EB6D", +"+ c #EFF271", +"@ c #E7EF65", +"# c #DDED61", +"$ c #D6E955", +"% c #DAED4D", +"& c #F6F5A0", +"* c #EFEF89", +"= c #ECF084", +"- c #EDF077", +"; c #EAF075", +"> c #E0E960", +", c #D9E757", +"' c #D4EA52", +") c #CFE74D", +"! c #BEE140", +"~ c #C2E43E", +"{ c #B6DF33", +"] c #F8F7C2", +"^ c #F9F7AB", +"/ c #F2F099", +"( c #EEEF80", +"_ c #F3F077", +": c #F8F8B1", +"< c #E8EE6F", +"[ c #E1EB69", +"} c #DBEB5E", +"| c #D5E852", +"1 c #CDE445", +"2 c #CEE843", +"3 c #B6DC34", +"4 c #A9DA2F", +"5 c #B3E02F", +"6 c #B6E630", +"7 c #F1F2E2", +"8 c #F9F9D4", +"9 c #F9F8C5", +"0 c #F8F8CE", +"a c #F9F8D6", +"b c #F9F7CB", +"c c #F9F7B1", +"d c #F9F7A7", +"e c #E7EE73", +"f c #E4EC69", +"g c #DEEB60", +"h c #D8E755", +"i c #D5EB55", +"j c #C2E33F", +"k c #BEE33C", +"l c #B5E339", +"m c #A7DF2E", +"n c #9BDA28", +"o c #95DA24", +"p c #8DD724", +"q c #F9F9F5", +"r c #F9F9EA", +"s c #F9F9E1", +"t c #F9F9F4", +"u c #F9F7DF", +"v c #F9F7D1", +"w c #F9F7C9", +"x c #F9F7B6", +"y c #F9F7AE", +"z c #D7E363", +"A c #E1EC6B", +"B c #DDEC60", +"C c #D8EC61", +"D c #CDE552", +"E c #C6E543", +"F c #BCE440", +"G c #BEE73E", +"H c #ABDF30", +"I c #ACE230", +"J c #8FD720", +"K c #80D01C", +"L c #80D51A", +"M c #F9F9F7", +"N c #F9F9EB", +"O c #F9F9F9", +"P c #F9F7E6", +"Q c #F9F7D3", +"R c #F9F7CE", +"S c #F9F7BF", +"T c #F9F8B9", +"U c #E6EF8F", +"V c #E1EB65", +"W c #E0ED63", +"X c #D1E452", +"Y c #D3E84D", +"Z c #C3E340", +"` c #BBE13E", +" . c #B0DD35", +".. c #ABDD2E", +"+. c #A0DB2A", +"@. c #95D923", +"#. c #7ED31C", +"$. c #7ED31A", +"%. c #80DA18", +"&. c #F4F3EF", +"*. c #F9F9F6", +"=. c #F9F8F5", +"-. c #F9F7EE", +";. c #F9F7E2", +">. c #F9F7D5", +",. c #F9F6C2", +"'. c #F8F69C", +"). c #D4E56D", +"!. c #E4ED73", +"~. c #DBEA60", +"{. c #DDE961", +"]. c #C9E54E", +"^. c #BFE242", +"/. c #BEE33E", +"(. c #B1DE34", +"_. c #ABDE33", +":. c #95D826", +"<. c #8DD620", +"[. c #8DDB20", +"}. c #91DD1E", +"|. c #71D116", +"1. c #50B910", +"2. c #F9F8F7", +"3. c #F9F8F4", +"4. c #F9F7EB", +"5. c #F9F7E1", +"6. c #F9F5CF", +"7. c #F9F6C9", +"8. c #F9F6BF", +"9. c #D6E471", +"0. c #E9F075", +"a. c #E3EC6B", +"b. c #D9E96D", +"c. c #CEE558", +"d. c #CBE44E", +"e. c #BEDE3E", +"f. c #ACDA37", +"g. c #BCE639", +"h. c #AEE135", +"i. c #9EDB2A", +"j. c #8FD822", +"k. c #7CD31B", +"l. c #82DA1C", +"m. c #63CE13", +"n. c #61CE12", +"o. c #F9F9F8", +"p. c #F9F7F5", +"q. c #F9F4DD", +"r. c #F9F5D7", +"s. c #F9F5C9", +"t. c #F9F5B6", +"u. c #E3ED8D", +"v. c #DEE865", +"w. c #E3ED6D", +"x. c #DDEB5E", +"y. c #D3E755", +"z. c #CAE349", +"A. c #CFEB4D", +"B. c #C1E33B", +"C. c #BCE743", +"D. c #B0E02D", +"E. c #95DB28", +"F. c #95DB26", +"G. c #C6E627", +"H. c #E8F433", +"I. c #CAED26", +"J. c #60CD0F", +"K. c #58CD0E", +"L. c #F9F7EC", +"M. c #F9F7F1", +"N. c #F9F4E4", +"O. c #F9F3D7", +"P. c #F9F3CA", +"Q. c #F9F5CA", +"R. c #F9F5BB", +"S. c #F9F8B6", +"T. c #F6F89E", +"U. c #DFEB5C", +"V. c #CEE453", +"W. c #D0E753", +"X. c #CDE543", +"Y. c #C7E842", +"Z. c #C1E53C", +"`. c #A7DC30", +" + c #E6F453", +".+ c #E2F448", +"++ c #D8F03C", +"@+ c #D1ED2E", +"#+ c #D0F033", +"$+ c #CAED2C", +"%+ c #ACE51F", +"&+ c #55CF0F", +"*+ c #F5F6EF", +"=+ c #F9F9F2", +"-+ c #F9F9F1", +";+ c #F9F8F0", +">+ c #F9F7E7", +",+ c #F9F5F0", +"'+ c #F9F3E1", +")+ c #F9F5DB", +"!+ c #F9F6DB", +"~+ c #F9F6BE", +"{+ c #F8F59B", +"]+ c #F9F5A2", +"^+ c #F8F68D", +"/+ c #F7F689", +"(+ c #D7EC65", +"_+ c #CEE84E", +":+ c #BBE23F", +"<+ c #B6E238", +"[+ c #A2DC30", +"}+ c #EBF553", +"|+ c #E4F443", +"1+ c #DCF340", +"2+ c #D4F033", +"3+ c #CEEF2D", +"4+ c #C2E926", +"5+ c #BEEB20", +"6+ c #5CD50E", +"7+ c #53CE0D", +"8+ c #F9F7D9", +"9+ c #F9F6F2", +"0+ c #F9F5EB", +"a+ c #F9F3DA", +"b+ c #F9F6DF", +"c+ c #F9F7D0", +"d+ c #F9F7C2", +"e+ c #F9F7BB", +"f+ c #F8F68F", +"g+ c #F7F58D", +"h+ c #F6F58B", +"i+ c #EEF68B", +"j+ c #BFDF43", +"k+ c #B5DE37", +"l+ c #B5E234", +"m+ c #A7DD30", +"n+ c #E7F248", +"o+ c #D6EF40", +"p+ c #DBF239", +"q+ c #D0ED2F", +"r+ c #C3EB2A", +"s+ c #BCEB26", +"t+ c #B5E81E", +"u+ c #52CE0F", +"v+ c #4ECB0B", +"w+ c #F9F9D9", +"x+ c #F9F9D7", +"y+ c #F9F8F8", +"z+ c #F9F7E9", +"A+ c #F9F6E9", +"B+ c #F9F5E0", +"C+ c #F8F2D6", +"D+ c #F9F3CE", +"E+ c #F9F7CA", +"F+ c #F9F8B5", +"G+ c #F6F691", +"H+ c #F9F699", +"I+ c #F5F68F", +"J+ c #F3F579", +"K+ c #E8F575", +"L+ c #C7E646", +"M+ c #B5DF37", +"N+ c #B9E438", +"O+ c #9CD928", +"P+ c #D7F348", +"Q+ c #DBEF3B", +"R+ c #D1EF35", +"S+ c #D7F230", +"T+ c #C1EA25", +"U+ c #B5E91F", +"V+ c #63DC1E", +"W+ c #48CA0C", +"X+ c #F4F4DC", +"Y+ c #F9F9C3", +"Z+ c #F9F9C5", +"`+ c #F9F9C7", +" @ c #F9F9E8", +".@ c #F9F6DD", +"+@ c #F9F6D6", +"@@ c #F9F3C1", +"#@ c #F9F3BF", +"$@ c #F9F5B8", +"%@ c #F8F8A6", +"&@ c #F6F68F", +"*@ c #F4F791", +"=@ c #ABD746", +"-@ c #C5E449", +";@ c #C1E448", +">@ c #BBE23E", +",@ c #BBE237", +"'@ c #A9DC30", +")@ c #99D927", +"!@ c #D3E32C", +"~@ c #E2F340", +"{@ c #D3ED2D", +"]@ c #CAED2B", +"^@ c #CDF028", +"/@ c #C5EB27", +"(@ c #B0E51C", +"_@ c #91DC13", +":@ c #49CA08", +"<@ c #25B305", +"[@ c #F5F6BE", +"}@ c #F5F5A9", +"|@ c #F3F4B0", +"1@ c #F6F6B0", +"2@ c #F7F8B5", +"3@ c #EDF097", +"4@ c #F5F18F", +"5@ c #F9F7B8", +"6@ c #F9F4B0", +"7@ c #F9F3AE", +"8@ c #F9F3A4", +"9@ c #F9F7A4", +"0@ c #F7F7A0", +"a@ c #F5F682", +"b@ c #D3E75E", +"c@ c #CAE646", +"d@ c #CBE846", +"e@ c #EDF05A", +"f@ c #C6E432", +"g@ c #A9E02E", +"h@ c #99DA27", +"i@ c #B9DB20", +"j@ c #E1F33F", +"k@ c #CEEB2E", +"l@ c #C7EB27", +"m@ c #BBEA26", +"n@ c #B9E722", +"o@ c #A6DF19", +"p@ c #ABE815", +"q@ c #48CB09", +"r@ c #3ECA08", +"s@ c #F8F7A7", +"t@ c #F3F4A0", +"u@ c #F4F59C", +"v@ c #F0F49C", +"w@ c #F2F5A4", +"x@ c #F5F6A0", +"y@ c #EFF28F", +"z@ c #F9F8CD", +"A@ c #F9F6A7", +"B@ c #F9F3A0", +"C@ c #F8F399", +"D@ c #F8F493", +"E@ c #F8F693", +"F@ c #F7F58B", +"G@ c #E8EF65", +"H@ c #C7E445", +"I@ c #C7DB30", +"J@ c #E1ED48", +"K@ c #E8F353", +"L@ c #C3E227", +"M@ c #D9EB2E", +"N@ c #E7F549", +"O@ c #D3EE3B", +"P@ c #CBED2D", +"Q@ c #CDEF27", +"R@ c #BFEC23", +"S@ c #B6E81E", +"T@ c #A9E518", +"U@ c #B1EB1B", +"V@ c #35BE06", +"W@ c #38C306", +"X@ c #F9F9A7", +"Y@ c #F2F38F", +"Z@ c #F2F495", +"`@ c #F3F38D", +" # c #F9F9E9", +".# c #F7F8C5", +"+# c #F8F7D1", +"@# c #F8F6A2", +"## c #F9F7A9", +"$# c #F8F59C", +"%# c #F8F291", +"&# c #F8F58F", +"*# c #F6F789", +"=# c #F2F477", +"-# c #F0F571", +";# c #EAEE52", +"># c #DCEA45", +",# c #EBEF43", +"'# c #E4F04D", +")# c #DEEF45", +"!# c #E1F246", +"~# c #E4F448", +"{# c #DBF039", +"]# c #D9F235", +"^# c #C9ED2B", +"/# c #CAEF2C", +"(# c #CEF22B", +"_# c #B6E91E", +":# c #B1EB21", +"<# c #A9E815", +"[# c #48CF09", +"}# c #40CD06", +"|# c #EDEF6B", +"1# c #EBF07C", +"2# c #E7EB71", +"3# c #E8E865", +"4# c #F8F79E", +"5# c #F8F7A4", +"6# c #F9F69E", +"7# c #F8F48F", +"8# c #F6F280", +"9# c #F6F482", +"0# c #F3F473", +"a# c #EFF169", +"b# c #EDF467", +"c# c #EAF35C", +"d# c #EAF258", +"e# c #E4F052", +"f# c #E4F046", +"g# c #E0F03F", +"h# c #D5EE3B", +"i# c #DFF23E", +"j# c #D7F137", +"k# c #CEED2E", +"l# c #C9EF28", +"m# c #CAF025", +"n# c #B9EA1E", +"o# c #B3E91D", +"p# c #B1EB1A", +"q# c #A6E817", +"r# c #39C506", +"s# c #35C505", +"t# c #B3BC3E", +"u# c #E9F07C", +"v# c #DEE867", +"w# c #F9F79E", +"x# c #F8F793", +"y# c #F8F78F", +"z# c #F7F684", +"A# c #F5F27E", +"B# c #F4F26D", +"C# c #F4F36F", +"D# c #EDF061", +"E# c #EEF363", +"F# c #EDF35C", +"G# c #EEF45C", +"H# c #EAF357", +"I# c #E8F34B", +"J# c #DCEE43", +"K# c #E1F03F", +"L# c #D6ED37", +"M# c #D5EE33", +"N# c #D5F134", +"O# c #D9F232", +"P# c #CEF22D", +"Q# c #C7F22A", +"R# c #9BDB18", +"S# c #A7E518", +"T# c #AEEB1B", +"U# c #95E514", +"V# c #37C306", +"W# c #3CC705", +"X# c #E0EC60", +"Y# c #D1E455", +"Z# c #F7F78F", +"`# c #F7F891", +" $ c #F8F78B", +".$ c #F5F782", +"+$ c #F8F791", +"@$ c #EFF06B", +"#$ c #F3F36D", +"$$ c #EFF36D", +"%$ c #F1F56F", +"&$ c #EDF260", +"*$ c #EDF461", +"=$ c #E7F150", +"-$ c #E9F355", +";$ c #E8F349", +">$ c #E8F442", +",$ c #DDF13E", +"'$ c #DAF038", +")$ c #CEEB26", +"!$ c #D0EE2C", +"~$ c #B9E82A", +"{$ c #C1ED26", +"]$ c #A0E41C", +"^$ c #ABE71B", +"/$ c #99E315", +"($ c #99E415", +"_$ c #33B306", +":$ c #2BBB05", +"<$ c #D9EB5E", +"[$ c #CDE44E", +"}$ c #F6F579", +"|$ c #F4F577", +"1$ c #F3F571", +"2$ c #F4F57C", +"3$ c #F3F363", +"4$ c #F2F475", +"5$ c #F0F567", +"6$ c #A2D93F", +"7$ c #C3E43F", +"8$ c #B6D92E", +"9$ c #A7CD1F", +"0$ c #E4F042", +"a$ c #E4F248", +"b$ c #E5F348", +"c$ c #D7EC39", +"d$ c #DBF33C", +"e$ c #DDF23E", +"f$ c #D1EF2D", +"g$ c #C1E825", +"h$ c #BFEB26", +"i$ c #AEE61B", +"j$ c #A7E318", +"k$ c #B0E818", +"l$ c #9EE615", +"m$ c #6DD30D", +"n$ c #27A603", +"o$ c #2CBE05", +"p$ c #E2ED50", +"q$ c #CBE348", +"r$ c #F6F780", +"s$ c #F5F577", +"t$ c #F3F56F", +"u$ c #EFF469", +"v$ c #F3F471", +"w$ c #F3F46F", +"x$ c #EFF461", +"y$ c #E7F053", +"z$ c #C6E83F", +"A$ c #A4D733", +"B$ c #ABDD2F", +"C$ c #B0DF2E", +"D$ c #A7DD2B", +"E$ c #E4F240", +"F$ c #E8F555", +"G$ c #DDF33C", +"H$ c #E1F53E", +"I$ c #D4F032", +"J$ c #CEF02E", +"K$ c #CAEF2D", +"L$ c #C2EF28", +"M$ c #B5E91B", +"N$ c #93DD13", +"O$ c #93E215", +"P$ c #93E213", +"Q$ c #80DB0D", +"R$ c #45CA05", +"S$ c #2FC204", +"T$ c #CEE743", +"U$ c #C1E23E", +"V$ c #F0F365", +"W$ c #F5F473", +"X$ c #F2F269", +"Y$ c #E9EF57", +"Z$ c #EFF363", +"`$ c #E8F052", +" % c #EBF358", +".% c #B8E439", +"+% c #BCE839", +"@% c #A4DC2A", +"#% c #ABE22D", +"$% c #95D822", +"%% c #E1F240", +"&% c #D6ED32", +"*% c #CFEC2C", +"=% c #D4F02F", +"-% c #CAEE2B", +";% c #C3EB27", +">% c #C6EE25", +",% c #C3EE21", +"'% c #B8ED21", +")% c #AEEA16", +"!% c #79D90F", +"~% c #2EB106", +"{% c #26B808", +"]% c #2CBF05", +"^% c #C9E73B", +"/% c #C5E63C", +"(% c #F0F56B", +"_% c #EEF258", +":% c #F0F265", +"<% c #EFF155", +"[% c #EDF358", +"}% c #EBF550", +"|% c #EBF54D", +"1% c #C9E83B", +"2% c #A4DB28", +"3% c #9EDC2B", +"4% c #8FD622", +"5% c #82D01E", +"6% c #7EC512", +"7% c #C9E827", +"8% c #D0EE2E", +"9% c #C7ED2C", +"0% c #C7EE27", +"a% c #C1EE2A", +"b% c #C2EF24", +"c% c #BEED22", +"d% c #A9E718", +"e% c #3EC307", +"f% c #39C306", +"g% c #38C606", +"h% c #23B603", +"i% c #ACDB2F", +"j% c #B0DF34", +"k% c #EDF35A", +"l% c #EDF553", +"m% c #E2F045", +"n% c #E6F350", +"o% c #E6F448", +"p% c #9CD01E", +"q% c #8BC916", +"r% c #B8DC1B", +"s% c #7CBC0F", +"t% c #95D618", +"u% c #7ED319", +"v% c #BFE118", +"w% c #C6ED2A", +"x% c #C1EA21", +"y% c #C1ED22", +"z% c #B8EA1D", +"A% c #B6EB1D", +"B% c #BCEF1F", +"C% c #53CA07", +"D% c #3FC708", +"E% c #2EBC05", +"F% c #2FBE04", +"G% c #2DBF04", +"H% c #A2CF1F", +"I% c #B1E12F", +"J% c #B5E32E", +"K% c #E8F243", +"L% c #D7EB45", +"M% c #E8F245", +"N% c #DDEF40", +"O% c #E2F342", +"P% c #DFF33E", +"Q% c #E4F542", +"R% c #DAF138", +"S% c #D8F230", +"T% c #CBEB28", +"U% c #D1F02E", +"V% c #C6EC24", +"W% c #CAEF25", +"X% c #BCEB21", +"Y% c #B6EB1E", +"Z% c #ABE91B", +"`% c #A2E616", +" & c #3CC508", +".& c #3EC906", +"+& c #37C305", +"@& c #27B903", +"#& c #209B02", +"$& c #A9DF27", +"%& c #A4DD27", +"&& c #91D623", +"*& c #E3F13C", +"=& c #E4F340", +"-& c #E4F33F", +";& c #E4F43E", +">& c #E2F439", +",& c #D6F033", +"'& c #D5F034", +")& c #CEEF2E", +"!& c #CBED26", +"~& c #CFEF27", +"{& c #D5F22E", +"]& c #B5E620", +"^& c #B9EA1F", +"/& c #84E620", +"(& c #3EB508", +"_& c #58CE0D", +":& c #39CA11", +"<& c #3EC607", +"[& c #3BCA08", +"}& c #28BB04", +"|& c #28BC03", +"1& c #8FD620", +"2& c #97D823", +"3& c #A6E22B", +"4& c #69CB1D", +"5& c #86D61F", +"6& c #E5F740", +"7& c #DCF338", +"8& c #CAEC2D", +"9& c #CDED2B", +"0& c #D1F02C", +"a& c #CDEE27", +"b& c #C1EB22", +"c& c #CFF228", +"d& c #BCE922", +"e& c #3CBB09", +"f& c #50CD0C", +"g& c #4BCD0B", +"h& c #3CC207", +"i& c #42CD09", +"j& c #2EBB04", +"k& c #28B905", +"l& c #28B903", +"m& c #61B113", +"n& c #7ED41A", +"o& c #89D71B", +"p& c #8DDB1A", +"q& c #7CD518", +"r& c #8FDA1B", +"s& c #71D314", +"t& c #7CDA18", +"u& c #BEF232", +"v& c #8BD715", +"w& c #63C207", +"x& c #55C108", +"y& c #5AD111", +"z& c #4BC90B", +"A& c #3EC108", +"B& c #46C908", +"C& c #40CB08", +"D& c #34C205", +"E& c #32C505", +"F& c #22A003", +"G& c #79D818", +"H& c #75D314", +"I& c #67D012", +"J& c #69D313", +"K& c #71D613", +"L& c #67D413", +"M& c #4BC20C", +"N& c #4DCB0E", +"O& c #5AD510", +"P& c #50CA0B", +"Q& c #4BC909", +"R& c #3CC708", +"S& c #42C906", +"T& c #35C206", +"U& c #33C306", +"V& c #30C504", +"W& c #49C30E", +"X& c #71D913", +"Y& c #84E318", +"Z& c #5ECF0E", +"`& c #58D00D", +" * c #5ED40D", +".* c #48C70A", +"+* c #57D40B", +"@* c #37BE06", +"#* c #39C707", +"$* c #37C505", +"%* c #34C705", +"&* c #49BE0B", +"** c #4BD00C", +"=* c #46C609", +"-* c #46D00A", +";* c #33BE06", +">* c #20A904", +" . + @ # $ % ", +" & * = - ; > , ' ) ! ~ { ", +" ] ^ / ( _ : < [ } | 1 2 3 4 5 6 ", +" 7 8 9 0 a b c d e f g h i j k l m n o p ", +" q r s t u v w x y z A B C D E F G H I J K L ", +" M M N O P u Q R S T U V W X Y Z ` ...+.@.#.$.%. ", +" &.O *.O =.-.;.>.R ,.'.).!.~.{.].^./.(._.:.<.[.}.|.1. ", +" O O O 2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n. ", +" o.O *.p.p.3.-.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K. ", +" O o.q L.p.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+%+&+ ", +" *+=+-+;+>+p.,+'+)+!+~+8.{+]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+7+ ", +" r N N 8+p.9+0+a+b+c+d+e+d f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+ ", +" w+x+w+y+z+A+B+C+D+E+S F+G+H+I+J+K+L+M+N+O+P+Q+R+S+$+T+U+V+W+ ", +"X+Y+Z+`+ @.@+@6.@@#@$@^ %@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@", +"[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@) c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@", +"s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@>@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@", +"X@Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[#}#", +"|#1#2#3#4###5#'.6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#", +"t#u#v#w#s@x#y#z#a@A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#", +" X#Y#Z#`# $.$+$@$#$$$%$&$*$=$-$I#;$>$,$'$)$!$~${$]$^$/$($_$:$ ", +" <$[$}$|$*#1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$ ", +" p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$ ", +" T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%&%*%=%-%;%>%,%'%)%!%~%{%]% ", +" ^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%8%9%0%a%b%c%d%($e%f%g%h% ", +" i%j%k%l%a$m%n%o%p%q%r%s%t%u%v%w%x%y%z%A%B%C%D%E%F%G% ", +" H%I%J%K%L%M%N%O%P%Q%G$R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#& ", +" $&%&&&*&=&-&;&>&,&'&)&!&~&{&]&^&/&(&_&:&<&[&}&|& ", +" 1&2&3&4&5&6&7&8&9&0&a&b&c&d&e&f&g&h&i&j&k&l& ", +" m&n&o&p&q&r&s&t&u&v&w&x&y&z&A&B&C&D&E&F& ", +" G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V& ", +" W&X&Y&Z&`& *.*+*@*#*$*%* ", +" &***=*-*;*>* "}; diff --git a/docs/FAQ.txt b/docs/FAQ.txt index 5a3baace..b214672e 100644 --- a/docs/FAQ.txt +++ b/docs/FAQ.txt @@ -7,12 +7,12 @@ Q: How to get help? A: The fastest way is to come on our IRC channel. There you can find a lot of nice people that will help you until you solve your problem. Server: - irc.freenode.net Channel: #aethyra. + irc.freenode.net Channel: #themanaworld. If you don't like IRC just come to our forums: - http://www.aethyra.org/ . Ok, do you think forums are evil? - Don't worry, send me an e-mail at blame582@gmail.com and you're done. + http://forums.themanaworld.org. Ok, do you think forums are evil? Don't + worry, send me an e-mail at elvenprogrammer@gmail.com and you're done. That's not enough? No, I won't give you my phone number! ;P - + GAME Q: I always get "Unregistered ID" error message, why? @@ -21,7 +21,7 @@ A: First of all check that your username is at least 4 characters long. Is the first time you login? Have you registered an account? If not use the "Register" button in game. If you already succesfully connected before, but now you're getting this message, please send an e-mail to - blame582@gmail.com. + elvenprogrammer@gmail.com. Q: I always get "Wrong password" but I'm sure I typed it right, why? @@ -50,9 +50,7 @@ Q: What's SVN? A: It's a system where is stored the latest development version. It's not assured that it's stable, but surely it has the latest updates. (SVN version is updated quite frequently). If you want to check it out, read this guide - http://themanaworld.org/svn-tutorial.txt - -(We need our own svn tut -- kraant) + http://themanaworld.org/svn-tutorial.txt DEVELOPMENT @@ -60,20 +58,24 @@ DEVELOPMENT Q: When will the next version be released? A: We have scheduled releases. Usually a new release is available every month. - Check http://www.aethyra.org/ for further info. + Check http://themanaworld.org/ for further info. Q: How can I contribute? A: There are a lot of ways: - + - If you're a programmer, an artist or just willing to help in any way, you can become part of the development team. Send an e-mail to - irarice@gmail.com explaining what you want to do, or join our irc - channel: #aethyra @ irc.freenode.net. - - - You can be a beta tester. Just play with Aethyra and report - every error on the forum. - - - Play with Aethyra: more players, more fun! Simple as that! ;-) + elvenprogrammer@gmail.com explaining what you want to do, or join our irc + channel: #themanaworld @ irc.freenode.net. + + - You can donate money. Follow the link on the project page: + + http://sourceforge.net/projects/themanaworld/ + + - You can be a beta tester. Just play The Mana World and report every + error to the tracker or on the forum. + + - Play with The Mana World: more players, more fun! Simple as that! ;-) diff --git a/docs/HACKING.txt b/docs/HACKING.txt index 85ad0d8c..88d22e7e 100644 --- a/docs/HACKING.txt +++ b/docs/HACKING.txt @@ -1,6 +1,9 @@ ---------------------------------- -Aethyra Hacking Guide ---------------------------------- +---------------------------- +The Mana World Hacking Guide +---------------------------- + +This guide is also available at http://wiki.themanaworld.org/index.php/Hacking +including more tips about C++ programming in general. With multiple coders working on the same source files, there needs to be a standard specifying how code is written down. Not doing so can cause quite some @@ -54,16 +57,33 @@ necessary. { }; - For if, for and while constructs, opening parenthesis may be placed on the - same line to save space. + When there is only one statement you may leave out the braces, but don't + place the statement on the same line as the condition: - In most cases these are bad: + Good: if (condition) statement; + Bad: + if (condition) statement; +* Includes: + Source files should include their header first, to make sure the headers are + self-contained. After that follow other project includes, grouped by + directory and alphabetically ordered. System includes come last. All project + includes are done relative from the 'src' directory. + + Good (subdirectory/source.cpp): + + #include "subdirectory/header.h" + + #include "somesub/bar.h" + #include "somesub/zaro.h" + + #include <systemlib.h> + * Comments: Single line C++ style comments are indented the same as the previous line. @@ -115,20 +135,3 @@ necessary. * Whenever you add a new source file somewhere in ./src do not forget to add them in ./src/Makefile.am as well! -* ChangeLog file format: - - YYYY-MM-DD[space][space]Firstname[space]Lastname[space][space]<email@address> - [newline] - [tab]*[space]filename:[space]Comment - [newline] - - The last character on each line is at max at column 79. - - Example: - -1234-12-24 Some Body <mymail@mailserver.tld> - - * some/file: My comment. - * some/file, anotherfile: This is a pretty long comment and needs a - line break, to avoid characters at colums > 79. - diff --git a/docs/INSTALL/debian.txt b/docs/INSTALL/debian.txt index 4e643a55..9a74d91b 100644 --- a/docs/INSTALL/debian.txt +++ b/docs/INSTALL/debian.txt @@ -1,43 +1,31 @@ -How to install Aethyra on my GNU/Debian Box +How to install TMW on my GNU/Debian Box ================================================== Author: FERREIRA Yohann (Bertram) Email: Bertram@cegetel.net -With slight edits by Daniel Thomas (kraant@gmail.com) -to for Aethyra... - -WARNING! These instructions are probably outdated! - -Check the forums (http://www.aethyra.org/forums/) where better help can be found. - -Aethyra project +The Mana World project ====================== -Homepage: http://www.aethyra.org/ -IRC: irc.freenode.net / #aethyra +Homepage: http://themanaworld.org/ +IRC: irc.freenode.net / #themanaworld -1) Installing Aethyra and dependencies +1) Installing The Mana World and dependencies 2) Creating a Debian Package using DebHelper Tools 3) Notes -1. Installing Aethyra and Dependencies +1. Installing The Mana World and Dependencies ============================================= -Aethyra Debian Package can be installed under the Debian Testing and -Unstable (Sarge/Sid). In order to have Mana Experiment working, you'll need +The Mana World Debian Package can be installed under the Debian Testing and +Unstable (Sarge/Sid). In order to have Mana World working, you'll need packages for SDL, SDL_mixer, SDL_image, libxml2, libphysfs and libguichan0. To install the dependencies, you can do type (as root): - apt-get install libsdl-mixer1.2 libsdl-image1.2 libxml2 libphysfs-1.0-0 + apt-get install libsdl-mixer1.2 libsdl-image1.2 libxml2 libphysfs-1.0-0 libguichan0 -(You'll need to compile libguichan from source since we've moved to 8.1 -and there is no package for this as of yet. This could create -problems, any debian users trying this out and giving us fixes -would be much appreciated -- kraant) - -Type aethyra as a normal user to play! (Enjoy!) +Type tmw as a normal user to play! (Enjoy!) 2. Creating a Debian Package using DebHelper Tools ================================================== @@ -53,9 +41,9 @@ And the debhelper tools: Download tmw from Subversion using the command (You'll need Subversion installed on your system): - svn co svn://www.aethyra.org/client/trunk aethyra + svn https://svn.sourceforge.net/svnroot/themanaworld/tmw/trunk tmw -Rename the aethyra folder into aethyra-XXX and open a console in it. +Rename the tmw folder into tmw-XXX and open a console in it. You can now type: fakeroot dpkg-buildpackage @@ -65,16 +53,16 @@ file. Install it: - dpkg -i aethyra_XXXXXX_i386.deb + dpkg -i tmw_XXXXXX_i386.deb (If you've got a previous one already installed with the same version number, don't forget to remove it with :) - apt-get remove aethyra + apt-get remove tmw (Don't worry, you configuration files are not removed...) -And now the final step: type 'aethyra' as a normal user in a shell and you're in! +And now the final step: type 'tmw' as a normal user in a shell and you're in! KDE/GNOME menu entries are created in Arcade Games upon installation. @@ -83,10 +71,6 @@ KDE/GNOME menu entries are created in Arcade Games upon installation. A Debian Repository has been created. -(This repository is for The Mana World not Aethyra, volunteers to make a -package would be nice, basically if you follow these instructions -you won't get aethyra as of now -- kraant) - Simply add in your /etc/apt/sources.list file: deb http://bertram.ifrance.com ./ @@ -95,11 +79,9 @@ Simply add in your /etc/apt/sources.list file: Then, as root, do: apt-get update - apt-get install aethyra + apt-get install tmw and you're done! -N.B.: The t_me-music, libguichan0, and libguichan0-dev packages are also +N.B.: The tmw-music, libguichan0, and libguichan0-dev packages are also provided in this repository. - -(Added '_' to avoid picking this file up in grep, fix this later -- kraant) diff --git a/docs/INSTALL/ubuntu.txt b/docs/INSTALL/ubuntu.txt new file mode 100644 index 00000000..cf830ccc --- /dev/null +++ b/docs/INSTALL/ubuntu.txt @@ -0,0 +1,43 @@ +How to build a .deb for TMW on Ubuntu +===================================== + +This documentation is for those who are interested in building the .deb files +of The Mana World. Most people do not need to do this, but can instead use the +repository. You can find information about how to use the repository on our +downloads page. + + +1. Installing the dependencies +============================== + +First of all you need a working compiler and package building environment. If +you don't have this yet, install the following packages: + + apt-get install gcc g++ dh-make fakeroot dpkg-dev build-essentials + +In order to compile The Mana World, you'll need the developer packages for +SDL, SDL_mixer, SDL_image, SDL_net, libxml2, libphysfs and libguichan0. + + apt-get install libsdl1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev ... + +(todo: add missing entries) +(todo: include information about installing Guichan development package) + + +2. Creating the .debs using DebHelper Tools +=========================================== + +Either download the source release of TMW that you want to build a package for, +or check out the appropriate version from Subversion, for example by using the +tag. + +Make sure the files in the debian directory are up to date. You can do this by +checking out the appropriate directory from Subversion (will be either +tmw/branches/0.0/debian or tmw/trunk/debian for the latest release). + +Now we can build the packages using the following command. + + fakeroot dpkg-buildpackage + +The packages will be created in the parent folder. + diff --git a/docs/INSTALL/win32.txt b/docs/INSTALL/win32.txt index 34d26e3f..fb758c43 100644 --- a/docs/INSTALL/win32.txt +++ b/docs/INSTALL/win32.txt @@ -1,12 +1,10 @@ -How setup Dev-C++ to compile Aethyra on a Win32 Box +How setup Dev-C++ to compile TMW on a Win32 Box =============================================== -(I think Dev-C++ support is broken as of now -- kraant) - -Aethyra project -=========================== -Homepage: http://www.aethyra.org -IRC: irc.freenode.net / #aethyra +The Mana World project +====================== +Homepage: themanaworld.sourceforge.net +IRC: irc.freenode.net / #themanaworld 0. Index @@ -14,7 +12,7 @@ IRC: irc.freenode.net / #aethyra 1. Requirements 2. Installing Dev-C++ 3. Installing the required libraries -4. Compiling Aethyra +4. Compiling The Mana World 1. Requirements @@ -25,7 +23,7 @@ free IDE for Win32 built around GCC. Remember, Win32 was not meant for GCC and stuff so you will probably run into trouble unless you really know what you're doing, so best stick with Dev-C++. -Besides a C++ compiler, Aethyra depends on the following libraries: +Besides a C++ compiler, TMW depends on the following libraries: 1) SDL 2) SDL_mixer @@ -97,36 +95,36 @@ Install them all through the Dev-C++ package manager. iconv-1.9.1.win32.zip From each file, copy the headers to your include directory, the libs to - the lib direcotry and the dlls (in bin direcotry) to your aethyra directory. + the lib direcotry and the dlls (in bin direcotry) to your tmw directory. **) For PhysFS copy the headers to your include directory, the libs to - the lib directory and the dlls (in bin direcotry) to your aethyra directory. + the lib directory and the dlls (in bin direcotry) to your tmw directory. ***) Download developer files and put headers and libs in to include and lib - directories of Dev-Cpp. Download binaries and place the dll inside aethyra + directories of Dev-Cpp. Download binaries and place the dll inside tmw folder. ****) Get latest win32 - mingw package and install as usual. -You should now be fully equipped for compiling the latest Aethyra development +You should now be fully equipped for compiling the latest TMW development code! -4. Compiling Aethyra -================================ +4. Compiling The Mana World +=========================== -Check out The Mana Experiment from Subversion using either the command line svn +Check out The Mana World from Subversion using either the command line svn tool or TortoiseSVN, pick what you like to use most and install that. Next, check out the following directory from our repository: - svn://www.aethyra.org/client/trunk + https://svn.sourceforge.net/svnroot/themanaworld/tmw/trunk -Open "Aethyra.dev" in Dev-C++. From there on you should be able to -start compilition with Excute -> Compile. A file called aethyra.exe should appear +Open "The Mana World.dev" in Dev-C++. From there on you should be able to +start compilition with Excute -> Compile. A file called tmw.exe should appear in the same directory as where you opened the .dev from. Before you can actually run the executable be sure to copy over the following -DLLs from your Dev-Cpp/dll directory to the directory containing aethyra.exe (or +DLLs from your Dev-Cpp/dll directory to the directory containing tmw.exe (or alternatively into your c:\windows\system\ for a more universal solution): SDL.dll @@ -145,7 +143,7 @@ And also make sure you have: zlib1.dll Additionally don't forget to copy any updated .dll (when libs are updated, -the dll are usually updated too) to the folder containing aethyra.exe (or to the +the dll are usually updated too) to the folder containing tmw.exe (or to the c:\windows\system\). -Have fun hacking Aethyra! +Have fun hacking The Mana World! diff --git a/docs/Makefile.am b/docs/Makefile.am index 8b311f85..0f9e7d2c 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -1,11 +1,10 @@ -man6_MANS = aethyra.6 +man6_MANS = tmw.6 EXTRA_DIST = $(man6_MANS) \ packages.txt \ FAQ.txt \ HACKING.txt \ - SOURCE/aethyradox.sh \ - SOURCE/aethyra.doxcfg \ + SOURCE/Doxyfile \ items.txt \ progression.txt \ INSTALL/debian.txt \ diff --git a/docs/SOURCE/aethyra.doxcfg b/docs/SOURCE/Doxyfile index cbc22910..96541dc8 100644 --- a/docs/SOURCE/aethyra.doxcfg +++ b/docs/SOURCE/Doxyfile @@ -17,7 +17,7 @@ # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. -PROJECT_NAME = Aethyra +PROJECT_NAME = "The Mana World" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or @@ -30,7 +30,7 @@ PROJECT_NUMBER = # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. -OUTPUT_DIRECTORY = ../docs/SOURCE/ +OUTPUT_DIRECTORY = # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output @@ -406,7 +406,7 @@ WARN_FORMAT = "$file:$line: $text" # and error messages should be written. If left blank the output is written # to stderr. -WARN_LOGFILE = +WARN_LOGFILE = "warnings.log" #--------------------------------------------------------------------------- # configuration options related to the input files @@ -417,7 +417,7 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = +INPUT = "../../src" # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp @@ -625,7 +625,7 @@ GENERATE_HTMLHELP = NO # can add a path in front of the file if the result should not be # written to the html output directory. -CHM_FILE = aethyra.chm +CHM_FILE = tmw.chm # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of @@ -1085,7 +1085,7 @@ CALL_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. -GRAPHICAL_HIERARCHY = YES +GRAPHICAL_HIERARCHY = NO # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif diff --git a/docs/SOURCE/aethyradox.sh b/docs/SOURCE/aethyradox.sh deleted file mode 100644 index e0f299a8..00000000 --- a/docs/SOURCE/aethyradox.sh +++ /dev/null @@ -1 +0,0 @@ -cd ../../src/ && doxygen ../docs/SOURCE/aethyra.doxcfg diff --git a/docs/items.txt b/docs/items.txt index efba35ac..19c6b10c 100644 --- a/docs/items.txt +++ b/docs/items.txt @@ -1,5 +1,5 @@ ------------------------------- - AETHYRA INVENTORY SYSTEM +THE MANA WORLD INVENTORY SYSTEM ------------------------------- 1. INTRODUCTION diff --git a/docs/packages.txt b/docs/packages.txt index e29112c0..3d794a1b 100644 --- a/docs/packages.txt +++ b/docs/packages.txt @@ -1,6 +1,6 @@ ----------------------------------- -AETHYRA PACKAGE SYSTEM ----------------------------------- +----------------------------- +THE MANA WORLD PACKAGE SYSTEM +----------------------------- 1. INTRODUCTION 2. LOCATION OF DATA @@ -10,46 +10,39 @@ AETHYRA PACKAGE SYSTEM 6. LOADING A REQUESTED RESOURCE 7. RESOURCE MANAGEMENT DETAILS -(Note this file is a _little_ outdated in some ways -- kraant) - 1. INTRODUCTION -Aethyra (Was The Mana Experiment, originally part of The Mana World) is expected to grow continuously with updates to the game -world occurring relatively frequently. More often so than for example new -releases of the game client. To make sure players don't have to update their -data manually all the time, by for example downloading the latest from the -website, the Aethyra client should be able to automatically obtain new data -packages from the server. +The Mana World is expected to grow continuously with updates to the game world +occurring relatively frequently. More often so than for example new releases +of the game client. To make sure players don't have to update their data +manually all the time, by for example downloading the latest from the website, +the TMW client should be able to automatically obtain new data packages from +the server. Note: To reduce the load on the server (which isn't expected to have huge free uploading resources), the idea is that the server will only send a torrent file to the client and that the file is subsequently downloaded from - several locations that have volunteered to spread Aethyra data files. Ultimately + several locations that have volunteered to spread TMW data files. Ultimately a simple option on the client will even allow players to contribute their excess bandwidth to help other players get the updates faster. -(This doesn't seem to have occurred we're still using http all the way -up to now even into Aethyra) - 2. LOCATION OF DATA -There are two locations where Aethyra can look for game data. The install data +There are two locations where TMW can look for game data. The install data directory and the data directory in the user's home directory. The latter one doesn't have to be used for Windows users, but is required for dynamic updates for UNIX users, who generally won't have write permissions to the install data directory. So for UNIX the two locations are: - /usr/local/share/aethyra/data/* - - ~/.aethyra/updates/* + /usr/local/share/manaworld/data/* - ~/.aethyra/customdata + ~/.manaworld/data/* While for Windows all the data will be located at: - C:\Program Files\Aethyra\data\* + C:\Program Files\The Mana World\data\* In the UNIX case it doesn't matter in which order the data directories are examined. @@ -90,7 +83,7 @@ package is irrelevant. An example of the contents is given by: 5. INITIALIZING PACKAGE MANAGEMENT -When Aethyra starts it will scan its data directories for both packages (archives) +When TMW starts it will scan its data directories for both packages (archives) and directories. When a directory is found with the same name as a package, the directory is the preferred location to load data from as it is assumed to be more up to date. @@ -132,9 +125,9 @@ the data while working on the next package to be released. The resource management technique is critical to the overall success of the package management system as a whole. Resources are loaded at runtime as they -are needed, and unloaded as they become unused. In order to ensure the -autonomous functioning of this process reference counting is the agreed upon -technique for managing loaded resources in Aethyra. +are needed, and unloaded as they become unused. In order to ensure the +autonomous functioning of this process reference counting is the agreed upon +technique for managing loaded resources in TMW. For those unfamiliar with the practice of reference counting, it involves every resource object having a variable containing the number of references to diff --git a/docs/progression.txt b/docs/progression.txt index cbec77e2..a25cf11f 100644 --- a/docs/progression.txt +++ b/docs/progression.txt @@ -1,5 +1,5 @@ ----------------------------------- - AETHYRA PLAYER'S PROGRESSION +THE MANA WORLD PLAYER'S PROGRESSION ----------------------------------- 1. PLAYER'S STATS @@ -126,4 +126,4 @@ Peon 17 Double Hit, Hard Hit(JL:5) Beginner Lvl:10 Every of these notes have to be discussed, if you have any feedback, suggestions, updates, commit or tell them at: -address: irc://irc.freenode.net channel: #aethyra +address: irc://irc.freenode.net channel: #themanaworld diff --git a/docs/sounddev.txt b/docs/sounddev.txt index 1c83157a..149150ba 100644 --- a/docs/sounddev.txt +++ b/docs/sounddev.txt @@ -1,6 +1,6 @@ -------------------------------------- -AETHYRA SOUND DEVELOPMENT -------------------------------------- +-------------------------------- +THE MANA WORLD SOUND DEVELOPMENT +-------------------------------- 1. INTRODUCTION 2. SPECS @@ -9,7 +9,7 @@ AETHYRA SOUND DEVELOPMENT 1. INTRODUCTION -In Aethyra we plan to have both background music and sound effects +In The Mana World we plan to have both background music and sound effects linked to beings actions. 2. SPECS @@ -35,4 +35,4 @@ all. 4. SUGGESTIONS -As placeholders we could use Wesnoth SFX/BGM to test the sound engine. +As placeholders we could use Wesnoth SFX/BGM to test the sound engine.
\ No newline at end of file diff --git a/docs/aethyra.6 b/docs/tmw.6 index a130a3a5..0dee82c7 100644 --- a/docs/aethyra.6 +++ b/docs/tmw.6 @@ -1,13 +1,13 @@ -.TH "AETHYRA" "6" +.TH "TMW" "6" .SH "NAME" -aethyra \- aethyra is Aethyra: A fantasy online game +tmw \- tmw is The Mana World: A fantasy online game .SH "SYNOPSIS" -\fBaethyra\fR +\fBtmw\fR .SH "DESCRIPTION" This manual page documents briefly the -\fBaethyra\fR ingame +\fBtmw\fR ingame commands. -\fBaethyra\fR is a great online game based upon the Seiken Densetsu Serie. +\fBtmw\fR is a great online game based upon the Seiken Densetsu Serie. It has its own universe, and and its own character management system, which will give you the opportunity to play in a 2D heroic-fantasy world forever. .SH "BINARY PARAMETERS" @@ -49,49 +49,26 @@ Make your character attack. .B Key A: Target nearest monster. .TP -.B Key Z: +.B Key G: Get items on the ground or in a chest. .TP -.B Key S: -Make your character sit. -.TP .B Alt + 1...9: Shows an emoticon above your character. .TP -.B F1: -Displays / Hides in game help. -.TP -.B F2: -Displays / Hides status window. -.TP -.B F3: -Displays / Hides inventory window. -.TP -.B F4: -Displays / Hides equipment window. -.TP -.B F5: -Displays / Hides skills window. -.TP -.B F6: -Displays / Hides map. -.TP -.B F7 -Displays / Hides messages. +.B Alt + I: +Shows / Hide inventory window. .TP -.B F8 -Displays / Hides hot-keys. +.B Alt + K: +Shows / Hide skills window. .TP -.B F9: -Displays / Hides configuration window. +.B Alt + E: +Shows / Hide equipment window. .TP -.B F10 -Displays / Hides debug window. +.B Alt + C: +Shows configuration window. .SH "AUTHOR" This manual page was written by Patrick Matth\[:a]i <patrick.matthaei@web.de> for The Mana World project. -With slight alterations by Daniel Thomas\[:a]i <kraant@gmail.com>, -for Aethyra. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 any later version published by the Free Software Foundation. diff --git a/docs/win32-release.txt b/docs/win32-release.txt index 5bd837d0..a8696897 100644 --- a/docs/win32-release.txt +++ b/docs/win32-release.txt @@ -1,6 +1,6 @@ -------------------------------------------- -AETHYRA WIN32 RELEASE CHECKLIST -------------------------------------------- +-------------------------------------- +THE MANA WORLD WIN32 RELEASE CHECKLIST +-------------------------------------- Every Win32 releaser should follow this checklist when creating a new package. @@ -11,10 +11,7 @@ Every Win32 releaser should follow this checklist when creating a new package. * Eventually Legal Copyright - Update README and ChangeLog if not already - Compile OpenGL version (Using -DUSE_OPENGL option) and rename the executable - from aethyra.exe to aethyra_opengl.exe - (This isn't actually how it's happening because I'm cross compiling - and therefore flying blind. As it is aethyra.exe is the OpenGL version - and no sdl version is generated -- kraant) + from tmw.exe to tmw_opengl.exe - Compile normal version (Do not use special flags as __DEBUG or USE_OPENGL) - Check if the dlls were compressed (SDL.dll, SDL_Image.dll, SDL_Mixer.dll) - Check config.xml for default values: @@ -22,9 +19,9 @@ Every Win32 releaser should follow this checklist when creating a new package. <configuration> <option name="chatlog" value="chatlog.txt"/> <option name="guialpha" value="0.8"/> - <option name="host" value="www.aethyra.org"/> + <option name="host" value="server.themanaworld.org"/> <option name="hwaccel" value="0"/> - <option name="port" value="21001"/> + <option name="port" value="6901"/> <option name="remember" value="0"/> <option name="screen" value="0"/> <option name="sfxVolume" value="100"/> diff --git a/packaging/debian/aethyra-data.install b/packaging/debian/aethyra-data.install deleted file mode 100644 index c652dff3..00000000 --- a/packaging/debian/aethyra-data.install +++ /dev/null @@ -1,6 +0,0 @@ -data/graphics/gui/*.png usr/share/games/aethyra/data/graphics/gui -data/graphics/gui/*.xml usr/share/games/aethyra/data/graphics/gui -data/graphics/images/*.png usr/share/games/aethyra/data/graphics/images -data/graphics/images/ambient/*.png usr/share/games/aethyra/data/graphics/images/ambient -data/graphics/tiles/*.png usr/share/games/aethyra/data/graphics/tiles -data/help/*.txt usr/share/games/aethyra/data/help diff --git a/packaging/debian/aethyra.desktop b/packaging/debian/aethyra.desktop deleted file mode 100644 index 221d2258..00000000 --- a/packaging/debian/aethyra.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=1.0 -Encoding=UTF-8 -Name=Aethyra -Comment=Aethyra is a 2D MMORPG using eAthena. -Exec=aethyra -StartupNotify=false -Terminal=false -Type=Game -Icon=aethyra.png -Categories=Game diff --git a/packaging/debian/aethyra.install b/packaging/debian/aethyra.install deleted file mode 100644 index 66ba5126..00000000 --- a/packaging/debian/aethyra.install +++ /dev/null @@ -1,5 +0,0 @@ -debian/aethyra.desktop usr/share/applications -debian/aethyra.xpm usr/share/pixmaps -data/icons/aethyra.png usr/share/icons -docs/aethyra.6 usr/share/man/man6 -src/aethyra usr/games diff --git a/packaging/debian/aethyra.menu b/packaging/debian/aethyra.menu deleted file mode 100644 index 42035107..00000000 --- a/packaging/debian/aethyra.menu +++ /dev/null @@ -1,4 +0,0 @@ -?package(aethyra):needs="X11" section="Games/Adventure"\ - title="Aethyra"\ - description="Aethyra is a 2D MMORPG using eAthena."\ - command="/usr/games/aethyra" icon="/usr/share/pixmaps/aethyra.xpm" diff --git a/packaging/debian/aethyra.xpm b/packaging/debian/aethyra.xpm deleted file mode 100644 index 8d8550bd..00000000 --- a/packaging/debian/aethyra.xpm +++ /dev/null @@ -1,312 +0,0 @@ -/* XPM */ -static char * Aethyra_xpm[] = { -"32 32 277 2", -" c None", -". c #840000", -"+ c #7E0000", -"@ c #4F0000", -"# c #810000", -"$ c #830000", -"% c #7B0000", -"& c #460000", -"* c #4C0000", -"= c #4B0000", -"- c #750000", -"; c #860000", -"> c #850000", -", c #5D0000", -"' c #490000", -") c #450000", -"! c #4A0000", -"~ c #440000", -"{ c #6A0000", -"] c #7A0000", -"^ c #8B0000", -"/ c #990000", -"( c #960000", -"_ c #720000", -": c #6E0000", -"< c #740000", -"[ c #6B0202", -"} c #550505", -"| c #420404", -"1 c #440101", -"2 c #4D0000", -"3 c #4E0000", -"4 c #480000", -"5 c #9D0000", -"6 c #9B0000", -"7 c #6F0000", -"8 c #710000", -"9 c #760000", -"0 c #680404", -"a c #4B0C0C", -"b c #3C0909", -"c c #470202", -"d c #450101", -"e c #500000", -"f c #510000", -"g c #790000", -"h c #890000", -"i c #920000", -"j c #710706", -"k c #7D381F", -"l c #934A1A", -"m c #7B1A09", -"n c #6B1609", -"o c #521E13", -"p c #4F2517", -"q c #5D230F", -"r c #4D0F04", -"s c #350A0A", -"t c #360909", -"u c #470303", -"v c #930000", -"w c #840202", -"x c #712C1C", -"y c #A58248", -"z c #866621", -"A c #835819", -"B c #98681F", -"C c #845C1D", -"D c #BB964A", -"E c #856225", -"F c #3D1B0B", -"G c #241818", -"H c #251717", -"I c #360A0A", -"J c #430000", -"K c #6C0000", -"L c #800000", -"M c #730404", -"N c #6A431E", -"O c #473C1C", -"P c #534420", -"Q c #806125", -"R c #53290B", -"S c #461C09", -"T c #BB9432", -"U c #65490F", -"V c #1F1110", -"W c #1A2323", -"X c #1A2222", -"Y c #261212", -"Z c #440202", -"` c #7F0000", -" . c #870000", -".. c #6D0505", -"+. c #422522", -"@. c #454434", -"#. c #A18744", -"$. c #8F7237", -"%. c #A37F48", -"&. c #AD8847", -"*. c #C6A657", -"=. c #644C14", -"-. c #211615", -";. c #1C2626", -">. c #1B2323", -",. c #231313", -"'. c #420202", -"). c #6C0404", -"!. c #532D23", -"~. c #A8915B", -"{. c #967C37", -"]. c #6E5926", -"^. c #453512", -"/. c #473713", -"(. c #A4832A", -"_. c #594310", -":. c #241F1E", -"<. c #232828", -"[. c #1C2020", -"}. c #241111", -"|. c #430202", -"1. c #7C5030", -"2. c #967C3D", -"3. c #3E3318", -"4. c #3D3930", -"5. c #454442", -"6. c #524D44", -"7. c #C09E45", -"8. c #654F17", -"9. c #262524", -"0. c #252929", -"a. c #410202", -"b. c #6B0302", -"c. c #A78041", -"d. c #6A5621", -"e. c #414543", -"f. c #696B6B", -"g. c #747676", -"h. c #7B7566", -"i. c #C9A84F", -"j. c #665017", -"k. c #282725", -"l. c #252A2A", -"m. c #1B2222", -"n. c #3D0202", -"o. c #750802", -"p. c #B48E41", -"q. c #564418", -"r. c #4A4B4B", -"s. c #6D6F6F", -"t. c #797A7A", -"u. c #867C62", -"v. c #AE9040", -"w. c #664F12", -"x. c #2D2A25", -"y. c #242828", -"z. c #1E1E1E", -"A. c #291010", -"B. c #400202", -"C. c #860B02", -"D. c #B78C32", -"E. c #594013", -"F. c #433E3E", -"G. c #606464", -"H. c #74736C", -"I. c #7C6D44", -"J. c #433719", -"K. c #413311", -"L. c #322F1E", -"M. c #1C2121", -"N. c #271212", -"O. c #3C0606", -"P. c #8C0200", -"Q. c #B5771D", -"R. c #765513", -"S. c #3F3636", -"T. c #555B5B", -"U. c #686969", -"V. c #5A5957", -"W. c #3C3832", -"X. c #403826", -"Y. c #2F3023", -"Z. c #1C1F1D", -"`. c #2E0A0A", -" + c #460101", -".+ c #8F0101", -"++ c #A03F0C", -"@+ c #AC7E19", -"#+ c #4B3625", -"$+ c #474747", -"%+ c #5B5C5A", -"&+ c #83775A", -"*+ c #8C7539", -"=+ c #67541F", -"-+ c #6B551C", -";+ c #8C6D24", -">+ c #4E1C09", -",+ c #4A0101", -"'+ c #8A0606", -")+ c #8D1203", -"!+ c #A76713", -"~+ c #87611B", -"{+ c #453A32", -"]+ c #52554E", -"^+ c #A38A45", -"/+ c #715818", -"(+ c #7A6424", -"_+ c #443212", -":+ c #947026", -"<+ c #7D4E11", -"[+ c #490400", -"}+ c #420000", -"|+ c #7F0808", -"1+ c #8B0101", -"2+ c #800F01", -"3+ c #915E11", -"4+ c #504F40", -"5+ c #4E4834", -"6+ c #5A4715", -"7+ c #5B4814", -"8+ c #382813", -"9+ c #917035", -"0+ c #533209", -"a+ c #3F0400", -"b+ c #8E0101", -"c+ c #8A0000", -"d+ c #671104", -"e+ c #663D12", -"f+ c #786023", -"g+ c #74612B", -"h+ c #665320", -"i+ c #675321", -"j+ c #785C24", -"k+ c #684718", -"l+ c #380B00", -"m+ c #400000", -"n+ c #8C0303", -"o+ c #8D0000", -"p+ c #780101", -"q+ c #510808", -"r+ c #291A16", -"s+ c #26291C", -"t+ c #2D2B18", -"u+ c #321F0E", -"v+ c #370A02", -"w+ c #3E0100", -"x+ c #850202", -"y+ c #600202", -"z+ c #331313", -"A+ c #1E2121", -"B+ c #1A1E1E", -"C+ c #270D0D", -"D+ c #470000", -"E+ c #7B0404", -"F+ c #720101", -"G+ c #4B0D0D", -"H+ c #2D1717", -"I+ c #261414", -"J+ c #380808", -"K+ c #7E0202", -"L+ c #5D0606", -"M+ c #3B0E0E", -"N+ c #300C0C", -"O+ c #430303", -"P+ c #7A0505", -"Q+ c #7C0000", -"R+ c #640404", -"S+ c #430D0D", -"T+ c #460202", -"U+ c #610505", -"V+ c #440E0E", -"W+ c #390B0B", -"X+ c #560202", -"Y+ c #480707", -"Z+ c #410505", -"`+ c #4B0101", -" @ c #480101", -" ", -" ", -" ", -" . + @ ", -" # $ % & * @ = ", -" - # ; > $ , ' ) ! @ * ~ ", -" { ] ^ / ( $ _ : < [ } | 1 ) ~ ' 2 2 3 3 4 ", -" ] ^ 5 6 . 7 8 9 0 a b c * d 4 e f @ 3 4 ", -" g h / i j k l m n o p q r s t u e 3 2 4 ", -" 8 > v w x y z A B C D E F G H I = @ ' J ", -" K L ^ M N O P Q R S T U V W X Y Z e ) ", -" ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.e & ", -" ` . ).!.~.{.].^./.(._.:.<.[.}.|.@ 4 ", -" # [ 1.2.3.4.5.6.7.8.9.0.[.}.a.= ", -" ` b.c.d.e.f.g.h.i.j.k.l.m.,.n.) ", -" L o.p.q.r.s.t.u.v.w.x.y.z.A.B.~ ", -" ; C.D.E.F.G.H.I.J.K.L.M.N.O.4 ", -" P.Q.R.S.T.U.V.W.X.Y.Z.`. +2 ", -" .+++@+#+$+%+&+*+=+-+;+>+,+= ", -" '+)+!+~+{+]+^+/+(+_+:+<+[+}+ ", -" |+1+2+3+z 4+5+6+7+8+9+0+a+ ", -" b+c+d+e+f+g+h+i+j+k+l+m+ ", -" n+o+p+q+r+s+t+u+v+w+) ) ", -" x+` y+z+A+B+C+1 e D+ ", -" E+# F+G+H+I+J+3 @ ~ ", -" K+% L+M+N+O+e ' ", -" P+Q+R+S+I T+@ ) ", -" 9 U+V+W+u 2 ", -" X+Y+Z+ + ", -" * `+ @ ", -" ", -" "}; diff --git a/packaging/debian/control b/packaging/debian/control index 0d94b4fd..4372aaea 100644 --- a/packaging/debian/control +++ b/packaging/debian/control @@ -1,43 +1,37 @@ -Source: aethyra +Source: tmw Section: games Priority: optional -Homepage: http://www.aethyra.org/ -Maintainer: Aethyra Project <www.aethyra.org> -Build-Depends: debhelper (>= 5), dpkg-dev (>= 1.13.19), dpatch, autotools-dev, libcurl4-gnutls-dev, libgl1-mesa-dev, libguichan-dev (>= 0.8.1-3), libsdl1.2-dev, libsdl-image1.2-dev, libsdl-net1.2-dev, libsdl-mixer1.2-dev, libphysfs-dev, libpng12-dev, libxml2-dev, zlib1g-dev +Homepage: http://www.themanaworld.org/ +Maintainer: Patrick Matthäi <patrick.matthaei@web.de> +Build-Depends: debhelper (>= 5), dpkg-dev (>= 1.13.19), dpatch, autotools-dev, libcurl4-gnutls-dev, libgl1-mesa-dev, libguichan2-dev (>= 0.7.1), libsdl1.2-dev, libsdl-image1.2-dev, libsdl-net1.2-dev, libsdl-mixer1.2-dev, libphysfs-dev, libpng12-dev, libxml2-dev, zlib1g-dev Standards-Version: 3.7.3 -Package: aethyra +Package: tmw Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, aethyra-data (= ${source:Version}) -Recommends: aethyra-music -Description: Aethyra is a community driven experiment that utilizes eAthena at its core with the end goal of - getting its players as involved in the process as much as possible. It's originally forked from - The Mana World when its developers came up with the idea of "Why should we have to wait for an - MMORPG game in development when we've already got a great server setup here that does everything - we've been promised and more?" As such, we are trying to implement as many functions of eAthena - as possible while creating our own in the process based on what our players want to see. +Depends: ${shlibs:Depends}, ${misc:Depends}, tmw-data (= ${source:Version}) +Recommends: tmw-music +Description: The Mana World is a great Online Rolegame + based upon the Seiken Densetsu serie. It has its own universe, and its own + character management system, which will give you the opportunity to play in a + 2D heroic-fantasy world forever. -Package: aethyra-dbg +Package: tmw-dbg Architecture: any Priority: extra -Depends: aethyra (= ${binary:Version}) -Description: Aethyra is a community driven experiment that utilizes eAthena at its core with the end goal of - getting its players as involved in the process as much as possible. It's originally forked from - The Mana World when its developers came up with the idea of "Why should we have to wait for an - MMORPG game in development when we've already got a great server setup here that does everything - we've been promised and more?" As such, we are trying to implement as many functions of eAthena - as possible while creating our own in the process based on what our players want to see. +Depends: tmw (= ${binary:Version}) +Description: The Mana World is a great Online Rolegame (debugging symbols) + based upon the Seiken Densetsu serie. It has its own universe, and its own + character management system, which will give you the opportunity to play in a + 2D heroic-fantasy world forever. . - This package provides debugging symbols for the aethyra package. + This package provides debugging symbols for the tmw package. -Package: aethyra-data +Package: tmw-data Architecture: all -Recommends: aethyra, aethyra-music -Description: Aethyra is a community driven experiment that utilizes eAthena at its core with the end goal of - getting its players as involved in the process as much as possible. It's originally forked from - The Mana World when its developers came up with the idea of "Why should we have to wait for an - MMORPG game in development when we've already got a great server setup here that does everything - we've been promised and more?" As such, we are trying to implement as many functions of eAthena - as possible while creating our own in the process based on what our players want to see. +Recommends: tmw, tmw-music +Description: The Mana World is a great Online Rolegame (data files) + based upon the Seiken Densetsu serie. It has its own universe, and its own + character management system, which will give you the opportunity to play in a + 2D heroic-fantasy world forever. . This package contains the data files. diff --git a/packaging/debian/rules b/packaging/debian/rules index 6ee08a3b..614ee701 100644 --- a/packaging/debian/rules +++ b/packaging/debian/rules @@ -56,7 +56,7 @@ binary-arch: build install dh_install -a dh_desktop -a dh_installmenu -a - dh_strip -a --dbg-package=aethyra-dbg + dh_strip -a --dbg-package=tmw-dbg dh_compress -a dh_fixperms -a dh_installdeb -a diff --git a/packaging/debian/tmw-data.install b/packaging/debian/tmw-data.install new file mode 100644 index 00000000..c9f6cb7b --- /dev/null +++ b/packaging/debian/tmw-data.install @@ -0,0 +1,5 @@ +data/graphics/gui/*.png usr/share/games/tmw/data/graphics/gui +data/graphics/images/*.png usr/share/games/tmw/data/graphics/images +data/graphics/images/ambient/*.png usr/share/games/tmw/data/graphics/images/ambient +data/graphics/tiles/*.png usr/share/games/tmw/data/graphics/tiles +data/help/*.txt usr/share/games/tmw/data/help diff --git a/packaging/debian/tmw.desktop b/packaging/debian/tmw.desktop new file mode 100644 index 00000000..f094f668 --- /dev/null +++ b/packaging/debian/tmw.desktop @@ -0,0 +1,15 @@ +[Desktop Entry] +Version=1.0 +Name=The Mana World +Name[fr]=Le Monde de Mana +Comment=An online fantasy role playing game +Comment[fr]=Un jeu en ligne dans un univers fantastique +Comment[de]=ein Online Fantasy Spiel +Comment[it]=Un gioco fantasy online +Comment[nl]=Een online role playing game +Exec=tmw +StartupNotify=false +Terminal=false +Type=Game +Icon=tmw.png +Categories=Game diff --git a/packaging/debian/aethyra.docs b/packaging/debian/tmw.docs index d622a527..d622a527 100644 --- a/packaging/debian/aethyra.docs +++ b/packaging/debian/tmw.docs diff --git a/packaging/debian/tmw.install b/packaging/debian/tmw.install new file mode 100644 index 00000000..037ccf54 --- /dev/null +++ b/packaging/debian/tmw.install @@ -0,0 +1,5 @@ +debian/tmw.desktop usr/share/applications +debian/tmw.xpm usr/share/pixmaps +data/icons/tmw.png usr/share/icons +docs/tmw.6 usr/share/man/man6 +src/tmw usr/games diff --git a/packaging/debian/tmw.menu b/packaging/debian/tmw.menu new file mode 100644 index 00000000..4af5ad0a --- /dev/null +++ b/packaging/debian/tmw.menu @@ -0,0 +1,4 @@ +?package(tmw):needs="X11" section="Games/Adventure"\ + title="The Mana World"\ + description="The Mana World is an Online Fantasy adventure game."\ + command="/usr/games/tmw" icon="/usr/share/pixmaps/tmw.xpm" diff --git a/packaging/debian/aethyra.sgml b/packaging/debian/tmw.sgml index 0ed18199..0ed18199 100644 --- a/packaging/debian/aethyra.sgml +++ b/packaging/debian/tmw.sgml diff --git a/packaging/debian/tmw.xpm b/packaging/debian/tmw.xpm new file mode 100644 index 00000000..46ce5c87 --- /dev/null +++ b/packaging/debian/tmw.xpm @@ -0,0 +1,776 @@ +/* XPM */ +static char * tmw_xpm[] = { +"32 32 741 2", +" c None", +". c #E8ED72", +"+ c #E7ED6A", +"@ c #E1EB62", +"# c #D4E758", +"$ c #D2E750", +"% c #CDE748", +"& c #F5F4A1", +"* c #F3F294", +"= c #EBEE81", +"- c #EAEE77", +"; c #E6ED6F", +"> c #E1EB68", +", c #D9E859", +"' c #D3E851", +") c #CCE549", +"! c #C7E643", +"~ c #BEE239", +"{ c #B3DF32", +"] c #F8F8C4", +"^ c #F9F7B3", +"/ c #F4F3A2", +"( c #F4F397", +"_ c #F5F39A", +": c #F2F399", +"< c #E2EA6D", +"[ c #DFEA66", +"} c #DAE95C", +"| c #D3E753", +"1 c #CAE54B", +"2 c #C7E545", +"3 c #BFE23C", +"4 c #B7E034", +"5 c #B1E130", +"6 c #A5DC28", +"7 c #F9F9DA", +"8 c #F9F8CA", +"9 c #F8F7C9", +"0 c #F8F7CD", +"a c #F9F7C7", +"b c #F9F7B8", +"c c #F7F5A8", +"d c #E6EC73", +"e c #E0EA68", +"f c #DBE95D", +"g c #D8E956", +"h c #D2E850", +"i c #C4E343", +"j c #BEE23D", +"k c #B2E036", +"l c #A9DE2E", +"m c #A0DC29", +"n c #91D823", +"o c #F9F9F5", +"p c #F9F9EA", +"q c #F9F9E2", +"r c #F9F8E9", +"s c #F9F8E1", +"t c #F9F7D3", +"u c #F9F7BC", +"v c #F9F7AF", +"w c #E8EE80", +"x c #E2EC6F", +"y c #DBEA61", +"z c #D3E755", +"A c #CAE44C", +"B c #C6E446", +"C c #BDE441", +"D c #B8E337", +"E c #AADE30", +"F c #9DDA2A", +"G c #91D722", +"H c #87D61F", +"I c #7FD61B", +"J c #F9F9F8", +"K c #F9F9F7", +"L c #F9F9F0", +"M c #F9F8EC", +"N c #F9F7E1", +"O c #F9F7D7", +"P c #F9F7C9", +"Q c #F9F7B4", +"R c #EBF092", +"S c #E1EB69", +"T c #DBE95F", +"U c #D3E654", +"V c #CCE44A", +"W c #C9E647", +"X c #BDE13D", +"Y c #B1DE35", +"Z c #A8DD30", +"` c #9BDA29", +" . c #94D823", +".. c #8CD921", +"+. c #82D71C", +"@. c #7CD716", +"#. c #F9F9F9", +"$. c #F9F8F5", +"%. c #F9F7EE", +"&. c #F9F7E4", +"*. c #F9F7D5", +"=. c #F9F7CB", +"-. c #F9F7BF", +";. c #F4F39E", +">. c #E1EA76", +",. c #E0EA69", +"'. c #D9E85D", +"). c #D7E859", +"!. c #CCE64E", +"~. c #C1E343", +"{. c #BBE23C", +"]. c #B0DF34", +"^. c #A9DD2F", +"/. c #9AD928", +"(. c #90D822", +"_. c #8AD81F", +":. c #81D81B", +"<. c #76D517", +"[. c #F9F7F6", +"}. c #F9F7F4", +"|. c #F9F5D3", +"1. c #F9F6C7", +"2. c #F9F6B9", +"3. c #E6EC86", +"4. c #E6ED72", +"5. c #E3ED6C", +"6. c #D6E75E", +"7. c #D1E655", +"8. c #C7E34A", +"9. c #C1E141", +"0. c #B2DD39", +"a. c #B3E135", +"b. c #A6DE30", +"c. c #9BDB29", +"d. c #97DA24", +"e. c #87D71E", +"f. c #82D71B", +"g. c #87DA1F", +"h. c #63CF12", +"i. c #F8F8F8", +"j. c #F9F7F5", +"k. c #F9F5E3", +"l. c #F9F5D4", +"m. c #F9F6B8", +"n. c #EDF198", +"o. c #E1EB6F", +"p. c #E1EC68", +"q. c #D8E95C", +"r. c #D3E752", +"s. c #C9E44A", +"t. c #C7E746", +"u. c #BEE43D", +"v. c #B0E138", +"w. c #A8E02D", +"x. c #A3DF29", +"y. c #B4E226", +"z. c #CDEB2C", +"A. c #B9E925", +"B. c #6DD213", +"C. c #56C90F", +"D. c #F9F8F4", +"E. c #F9F7EB", +"F. c #F9F7F2", +"G. c #F9F5EA", +"H. c #F9F3DE", +"I. c #F9F4CF", +"J. c #F9F5C5", +"K. c #F9F5B8", +"L. c #F8F7B2", +"M. c #F1F495", +"N. c #E3EC6B", +"O. c #D8E859", +"P. c #CEE650", +"Q. c #C8E449", +"R. c #C2E441", +"S. c #BAE139", +"T. c #E7F24F", +"U. c #E3F347", +"V. c #DCF13E", +"W. c #D9F137", +"X. c #CDEE30", +"Y. c #C3EB27", +"Z. c #85D919", +"`. c #4FC90E", +" + c #F7F7F2", +".+ c #F9F9F2", +"++ c #F9F8ED", +"@+ c #F9F5EE", +"#+ c #F9F4E4", +"$+ c #F9F5DC", +"%+ c #F9F6D1", +"&+ c #F9F6C2", +"*+ c #F9F6B7", +"=+ c #F9F6A6", +"-+ c #F8F599", +";+ c #F7F591", +">+ c #F4F584", +",+ c #D7EB61", +"'+ c #C5E447", +")+ c #BAE13E", +"!+ c #B8E23A", +"~+ c #B8E132", +"{+ c #E6F349", +"]+ c #E1F343", +"^+ c #DAF13B", +"/+ c #D2EF33", +"(+ c #CBEE2E", +"_+ c #C1EA25", +":+ c #A9E61F", +"<+ c #55CE10", +"[+ c #4FC60D", +"}+ c #F8F8E9", +"|+ c #F9F9E8", +"1+ c #F9F9E7", +"2+ c #F9F8E4", +"3+ c #F9F7F0", +"4+ c #F9F6EF", +"5+ c #F9F5E7", +"6+ c #F9F3DB", +"7+ c #F9F5D6", +"8+ c #F9F7CE", +"9+ c #F9F7BE", +"0+ c #F9F7B7", +"a+ c #F9F7A5", +"b+ c #F7F691", +"c+ c #F6F588", +"d+ c #F5F580", +"e+ c #DBEE6B", +"f+ c #BAE13D", +"g+ c #B5E137", +"h+ c #A5DB2E", +"i+ c #E0F041", +"j+ c #DBF140", +"k+ c #DAF138", +"l+ c #D1EE32", +"m+ c #C6EB2B", +"n+ c #C0EC27", +"o+ c #BAEB22", +"p+ c #65D517", +"q+ c #4FCC0B", +"r+ c #F9F9D7", +"s+ c #F9F9D6", +"t+ c #F9F8EA", +"u+ c #F9F7E8", +"v+ c #F9F5E5", +"w+ c #F9F5DD", +"x+ c #F9F2D2", +"y+ c #F9F3CA", +"z+ c #F9F6C3", +"A+ c #F9F7BA", +"B+ c #F9F8B2", +"C+ c #F8F89E", +"D+ c #F8F58E", +"E+ c #F5F583", +"F+ c #EFF479", +"G+ c #C5E557", +"H+ c #C5E543", +"I+ c #B9E13B", +"J+ c #9FDA2A", +"K+ c #CEEC3B", +"L+ c #D9EF38", +"M+ c #D4EE32", +"N+ c #D1EF30", +"O+ c #C8ED2A", +"P+ c #C2EB26", +"Q+ c #B5E81E", +"R+ c #80DC1C", +"S+ c #46C80B", +"T+ c #F0F1C0", +"U+ c #F9F8C7", +"V+ c #F9F9C6", +"W+ c #F9F8D5", +"X+ c #F9F7DF", +"Y+ c #F9F6D6", +"Z+ c #F9F5D0", +"`+ c #F9F3C4", +" @ c #F9F3BC", +".@ c #F9F5B5", +"+@ c #F9F7B0", +"@@ c #F9F8A4", +"#@ c #F7F796", +"$@ c #EFF386", +"%@ c #D3E865", +"&@ c #C7E450", +"*@ c #C0E242", +"=@ c #BEE33F", +"-@ c #B5E036", +";@ c #A7DB2F", +">@ c #A0DC2B", +",@ c #C4E32F", +"'@ c #DCF139", +")@ c #D2ED2E", +"!@ c #CAEC2A", +"~@ c #CBEF2B", +"{@ c #BEEA22", +"]@ c #B2E81E", +"^@ c #8FDD17", +"/@ c #3DC209", +"(@ c #33BC07", +"_@ c #F5F5B4", +":@ c #F6F6AE", +"<@ c #F6F6B1", +"[@ c #F7F7B3", +"}@ c #F2F3AB", +"|@ c #F3F198", +"1@ c #F8F5BA", +"2@ c #F9F4B6", +"3@ c #F9F3AF", +"4@ c #F9F4A4", +"5@ c #F8F7A2", +"6@ c #F7F799", +"7@ c #F6F68A", +"8@ c #DDEC69", +"9@ c #CEE74F", +"0@ c #C0E03C", +"a@ c #D5EA4C", +"b@ c #BEE23A", +"c@ c #A9DF2F", +"d@ c #9EDD2A", +"e@ c #BEE22A", +"f@ c #DCF23A", +"g@ c #D4F033", +"h@ c #CBED2A", +"i@ c #C5ED29", +"j@ c #BDEB22", +"k@ c #B4E81E", +"l@ c #A5E618", +"m@ c #41C209", +"n@ c #3ABF07", +"o@ c #DCDC8A", +"p@ c #F3F49B", +"q@ c #F3F49D", +"r@ c #F2F49D", +"s@ c #F4F59F", +"t@ c #F4F59D", +"u@ c #F1F498", +"v@ c #F8F7BF", +"w@ c #F9F6AF", +"x@ c #F8F39A", +"y@ c #F8F594", +"z@ c #F5F57D", +"A@ c #DDEC66", +"B@ c #C2E144", +"C@ c #BDE13F", +"D@ c #BFD82E", +"E@ c #E6EF4E", +"F@ c #E1F04A", +"G@ c #C2E433", +"H@ c #CDEA34", +"I@ c #DDF03F", +"J@ c #D4EF36", +"K@ c #CFEF30", +"L@ c #CBEE2A", +"M@ c #C2EC26", +"N@ c #B7E91F", +"O@ c #ADE71C", +"P@ c #A0E517", +"Q@ c #3FC008", +"R@ c #33BD06", +"S@ c #DDD97B", +"T@ c #F2F392", +"U@ c #F0F28F", +"V@ c #F1F38C", +"W@ c #F6F7BE", +"X@ c #F5F6B7", +"Y@ c #F5F5B2", +"Z@ c #F9F6A7", +"`@ c #F9F6A3", +" # c #F8F59C", +".# c #F8F38D", +"+# c #F7F58C", +"@# c #F5F687", +"## c #F3F576", +"$# c #F0F575", +"%# c #DDEC57", +"&# c #D8EA49", +"*# c #DDE946", +"=# c #E8F14F", +"-# c #E3F148", +";# c #E2F346", +"># c #E1F345", +",# c #D8F039", +"'# c #D1EF31", +")# c #CAED2C", +"!# c #C4EC27", +"~# c #C1ED24", +"{# c #B6EA1F", +"]# c #AFEA1C", +"^# c #A4E717", +"/# c #3EBF08", +"(# c #37C206", +"_# c #E8EB6C", +":# c #E6ED76", +"<# c #E4EC73", +"[# c #ECEF86", +"}# c #F8F7A7", +"|# c #F9F7A7", +"1# c #F8F7A3", +"2# c #F8F69D", +"3# c #F8F69A", +"4# c #F7F48A", +"5# c #F6F27B", +"6# c #F6F482", +"7# c #F3F57B", +"8# c #F1F574", +"9# c #F0F46C", +"0# c #EBF25E", +"a# c #EBF259", +"b# c #E7F152", +"c# c #E1EF44", +"d# c #DFEF40", +"e# c #D7EE3B", +"f# c #DAF039", +"g# c #D7F137", +"h# c #D1F032", +"i# c #CCEF2C", +"j# c #C6EE26", +"k# c #B7EA1F", +"l# c #AAE81A", +"m# c #97E415", +"n# c #37BE07", +"o# c #2CAF05", +"p# c #D5DC5B", +"q# c #E4ED6F", +"r# c #E9F082", +"s# c #F8F7A1", +"t# c #F8F79D", +"u# c #F7F696", +"v# c #F6F68B", +"w# c #F5F37B", +"x# c #F5F378", +"y# c #F3F372", +"z# c #F1F36C", +"A# c #EEF468", +"B# c #ECF35D", +"C# c #EAF256", +"D# c #E7F151", +"E# c #E4F148", +"F# c #E0F043", +"G# c #E1F143", +"H# c #D9EF39", +"I# c #D2ED31", +"J# c #CEF030", +"K# c #C9EF2A", +"L# c #C0ED25", +"M# c #ADE61C", +"N# c #A7E619", +"O# c #A5E818", +"P# c #80D913", +"Q# c #34BE06", +"R# c #35BF05", +"S# c #E0EC61", +"T# c #E4ED72", +"U# c #F7F792", +"V# c #F7F791", +"W# c #F8F78F", +"X# c #F6F687", +"Y# c #F6F688", +"Z# c #F3F377", +"`# c #F4F474", +" $ c #F1F472", +".$ c #EEF46D", +"+$ c #DEEB59", +"@$ c #E7F059", +"#$ c #E9F356", +"$$ c #E9F255", +"%$ c #E7F24D", +"&$ c #E6F245", +"*$ c #E4F243", +"=$ c #DFF240", +"-$ c #D7EF36", +";$ c #CCEB2B", +">$ c #CDEE2C", +",$ c #C5ED2A", +"'$ c #BDEB25", +")$ c #ADE71E", +"!$ c #A6E51A", +"~$ c #9AE316", +"{$ c #93E214", +"]$ c #5CC30B", +"^$ c #34BD05", +"/$ c #DDEC59", +"($ c #D6E858", +"_$ c #F5F57C", +":$ c #F5F680", +"<$ c #F5F67E", +"[$ c #F5F67C", +"}$ c #F4F574", +"|$ c #F1F26A", +"1$ c #F2F46F", +"2$ c #EFF468", +"3$ c #BCE24A", +"4$ c #BBDF38", +"5$ c #B9DB30", +"6$ c #C3DF33", +"7$ c #DDED42", +"8$ c #E5F249", +"9$ c #DEF03D", +"0$ c #D5EF35", +"a$ c #CEEE2E", +"b$ c #C1E925", +"c$ c #B9E923", +"d$ c #B1E71E", +"e$ c #ABE619", +"f$ c #A8E517", +"g$ c #94E113", +"h$ c #83DE11", +"i$ c #35AD06", +"j$ c #2FBB04", +"k$ c #CEE249", +"l$ c #CFE54B", +"m$ c #E8F16F", +"n$ c #F5F578", +"o$ c #F4F674", +"p$ c #F1F46D", +"q$ c #F2F268", +"r$ c #F1F366", +"s$ c #EFF462", +"t$ c #DEEF5B", +"u$ c #B3E039", +"v$ c #B4E037", +"w$ c #AEDE31", +"x$ c #A6DB2B", +"y$ c #BBE331", +"z$ c #E3F243", +"A$ c #DFF141", +"B$ c #D9F038", +"C$ c #D9F136", +"D$ c #CDEF2E", +"E$ c #C7EE2A", +"F$ c #BDEB24", +"G$ c #B7EA1D", +"H$ c #A0E316", +"I$ c #96E214", +"J$ c #93E212", +"K$ c #6DD10D", +"L$ c #2CAD04", +"M$ c #2AB303", +"N$ c #CDE746", +"O$ c #CDE74B", +"P$ c #F0F56D", +"Q$ c #F2F46A", +"R$ c #F0F264", +"S$ c #ECF15A", +"T$ c #EFF361", +"U$ c #EDF45A", +"V$ c #EBF45C", +"W$ c #B9E239", +"X$ c #B6E335", +"Y$ c #ADE02E", +"Z$ c #A9E02B", +"`$ c #A4DE28", +" % c #DFF243", +".% c #D7EF35", +"+% c #D5EF31", +"@% c #D4F031", +"#% c #CDEF2C", +"$% c #C7ED28", +"%% c #C6EE27", +"&% c #C1EE23", +"*% c #B6EC1F", +"=% c #A7E818", +"-% c #67CC0E", +";% c #47C208", +">% c #34B906", +",% c #2DBD04", +"'% c #C1E23C", +")% c #C3E53E", +"!% c #D7EB4F", +"~% c #EEF257", +"{% c #ECF057", +"]% c #EAF051", +"^% c #EBF255", +"/% c #EBF452", +"(% c #E9F450", +"_% c #B8E137", +":% c #A3DB2A", +"<% c #A5DF2B", +"[% c #98DA26", +"}% c #8CD621", +"|% c #90D41D", +"1% c #BFE326", +"2% c #D0EE2D", +"3% c #CEEF2E", +"4% c #C8EE28", +"5% c #C1ED26", +"6% c #BCEC22", +"7% c #B9ED20", +"8% c #9FE419", +"9% c #70CD0F", +"0% c #35B906", +"a% c #34C005", +"b% c #30C005", +"c% c #26B503", +"d% c #B7E036", +"e% c #B7E239", +"f% c #E2EF4B", +"g% c #EBF451", +"h% c #E5F14B", +"i% c #E4F04B", +"j% c #E7F451", +"k% c #E6F44B", +"l% c #B6DD2C", +"m% c #ABDC25", +"n% c #B4DF23", +"o% c #A3D61D", +"p% c #96D91D", +"q% c #86D218", +"r% c #B3DE21", +"s% c #CAED2B", +"t% c #C6EC25", +"u% c #BEEB22", +"v% c #BDEC20", +"w% c #B3EA1D", +"x% c #9AE017", +"y% c #46BC07", +"z% c #40C107", +"A% c #35C206", +"B% c #2EBE05", +"C% c #2BBD04", +"D% c #B2E130", +"E% c #B5E334", +"F% c #DFF042", +"G% c #E4F147", +"H% c #E5F348", +"I% c #E2F246", +"J% c #E4F445", +"K% c #DFF33F", +"L% c #E0F33D", +"M% c #DCF238", +"N% c #D8F034", +"O% c #D2EF2E", +"P% c #CBEB29", +"Q% c #D1EF2D", +"R% c #C7ED26", +"S% c #C5EE26", +"T% c #B7EA20", +"U% c #B5EA1D", +"V% c #AEEA1B", +"W% c #85D813", +"X% c #3FC208", +"Y% c #3AC507", +"Z% c #33C005", +"`% c #2BBB04", +" & c #26A903", +".& c #A9E029", +"+& c #A5DF29", +"@& c #A5DE29", +"#& c #D8EE3D", +"$& c #E4F341", +"%& c #E2F340", +"&& c #E0F33C", +"*& c #DDF239", +"=& c #D9F236", +"-& c #D6F133", +";& c #D3F131", +">& c #CEEE2A", +",& c #CEEF28", +"'& c #CBEF29", +")& c #BFEB22", +"!& c #B2EB23", +"~& c #81DD1D", +"{& c #6DCF11", +"]& c #68D10F", +"^& c #4CCB0E", +"/& c #39C407", +"(& c #33C106", +"_& c #2ABB04", +":& c #27B803", +"<& c #97DA23", +"[& c #98DC24", +"}& c #95DC23", +"|& c #93DB25", +"1& c #99DF2A", +"2& c #C6EC31", +"3& c #C6EB2E", +"4& c #ADE026", +"5& c #C1E928", +"6& c #CCEE29", +"7& c #C9ED26", +"8& c #B9EA21", +"9& c #8FD718", +"0& c #4FC30C", +"a& c #4DCB0B", +"b& c #49CB0A", +"c& c #3DC508", +"d& c #3DC808", +"e& c #34C306", +"f& c #2DBC04", +"g& c #2CBF04", +"h& c #88D81D", +"i& c #87D81A", +"j& c #86D81A", +"k& c #7ED518", +"l& c #75D015", +"m& c #71D113", +"n& c #84DB1A", +"o& c #9DE524", +"p& c #7CD316", +"q& c #62CA0E", +"r& c #5AC80B", +"s& c #55C90B", +"t& c #46CA0A", +"u& c #41C708", +"v& c #3DC907", +"w& c #36C406", +"x& c #30C205", +"y& c #27AA04", +"z& c #75D016", +"A& c #79D516", +"B& c #73D515", +"C& c #6AD113", +"D& c #6CD413", +"E& c #65D211", +"F& c #5BCD0F", +"G& c #56CD0E", +"H& c #58D10E", +"I& c #50CC0C", +"J& c #48C809", +"K& c #40C708", +"L& c #3FC607", +"M& c #40C907", +"N& c #38C706", +"O& c #32C105", +"P& c #57BE0F", +"Q& c #61D111", +"R& c #66D411", +"S& c #62D20F", +"T& c #57CD0D", +"U& c #57D00C", +"V& c #4DCC0C", +"W& c #4BCD0A", +"X& c #40C608", +"Y& c #3DC807", +"Z& c #30B505", +"`& c #4BBC0B", +" * c #4CC20A", +".* c #48BF0A", +"+* c #45C109", +"@* c #38B507", +"#* c #31B506", +" . + @ # $ % ", +" & * = - ; > , ' ) ! ~ { ", +" ] ^ / ( _ : < [ } | 1 2 3 4 5 6 ", +" 7 8 9 0 a b c d e f g h i j k l m n ", +" o p q r s t a u v w x y z A B C D E F G H I ", +" J K L o M N O P u Q R S T U V W X Y Z ` ...+.@. ", +" #.K J $.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<. ", +" #.#.J [.}.%.&.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h. ", +" i.#.K [.j.}.%.k.l.1.m.n.o.p.q.r.s.t.u.v.E w.x.y.z.A.B.C. ", +" #.K D.E.}.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.D T.U.V.W.X.Y.Z.`. ", +" +.+.+++&.F.@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+ ", +" }+|+1+2+3+4+5+6+7+8+9+0+a+b+c+d+e+9.f+g+h+i+j+k+l+m+n+o+p+q+ ", +" r+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+].J+K+L+M+N+O+P+Q+R+S+ ", +"T+U+V+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@", +"_@:@<@[@[@}@|@1@2@3@4@5@6@7@8@9@W 0@a@b@c@d@e@f@g@h@i@j@k@l@m@n@", +"o@p@q@r@s@t@u@v@w@4@x@y@b+z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@", +"S@T@U@V@W@X@Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#", +"_#:#<#[#}#|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#O@l#m#n#o#", +"p#q#r#5@s#t#u#b+v#w#x#y#z#A#B#C#D#E#F#G#H#I#'#J#K#L#M#N#O#P#Q#R#", +" S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$-$;$>$,$'$)$!$~${$]$^$ ", +" /$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$G#9$k+0$a$b$c$d$e$f$g$h$i$j$ ", +" k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$'#D$E$F$G$H$I$J$K$L$M$ ", +" N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%&%*%=%-%;%>%,% ", +" '%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%8%9%0%a%b%c% ", +" d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%A%B%C% ", +" D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% & ", +" .&+&@&#&$&%&&&*&=&-&;&>&,&'&)&!&~&{&]&^&/&(&_&:& ", +" <&[&}&|&1&2&3&4&5&6&7&{@8&9&0&a&b&c&d&e&f&g& ", +" h&i&j&k&l&m&n&o&p&q&r&s&a&t&u&v&w&x&y& ", +" z&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O& ", +" P&Q&R&S&T&U&V&W&X&Y&v&Z& ", +" `& *.*+*@*#* "}; diff --git a/packaging/debian/watch b/packaging/debian/watch index 5fd35272..01aa13f7 100644 --- a/packaging/debian/watch +++ b/packaging/debian/watch @@ -1,2 +1,2 @@ version=3 -http://aethyra.org/downloads/aethyra-(.*)\.tar\.gz +http://sf.net/themanaworld/tmw-(.*)\.tar\.gz diff --git a/packaging/windows/make-translations.vbs b/packaging/windows/make-translations.vbs index 4d2b44c3..f349b25e 100644 --- a/packaging/windows/make-translations.vbs +++ b/packaging/windows/make-translations.vbs @@ -29,7 +29,7 @@ do while not stream.AtEndOfStream CreateFolderIfNonexistent("..\..\translations\" + s + "\LC_MESSAGES") 'build the translate command infile = "../../po/" + s + ".po" - outfile = "../../translations/" + s +"/LC_MESSAGES/aethyra.mo" + outfile = "../../translations/" + s +"/LC_MESSAGES/tmw.mo" command = "msgfmt -c -o " + outfile + " " + infile 'execute translate command errval = WshShell.run(command, 0, true) diff --git a/packaging/windows/setup.nsi b/packaging/windows/setup.nsi index 9c4c5ae6..834c2d3b 100644 --- a/packaging/windows/setup.nsi +++ b/packaging/windows/setup.nsi @@ -5,14 +5,14 @@ SetCompressor /SOLID lzma !define SRCDIR "..\.." ;--- (and without !defines ) --- -!System "upx\upx.exe --best --crp-ms=999999 --compress-icons=0 --nrv2d ${SRCDIR}\aethyra.exe" +!System "upx\upx.exe --best --crp-ms=999999 --compress-icons=0 --nrv2d ${SRCDIR}\tmw.exe" ; HM NIS Edit helper defines -!define PRODUCT_NAME "Aethyra" +!define PRODUCT_NAME "The Mana World" !define PRODUCT_VERSION "0.0.29" -!define PRODUCT_PUBLISHER "Aethyra Development Team" -!define PRODUCT_WEB_SITE "http://aethyra.org" -!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\aethyra.exe" +!define PRODUCT_PUBLISHER "The Mana World Development Team" +!define PRODUCT_WEB_SITE "http://themanaworld.org" +!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\tmw.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" @@ -22,14 +22,14 @@ SetCompressor /SOLID lzma ; MUI Settings !define MUI_ABORTWARNING ;!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\win-install.ico" -!define MUI_ICON "${SRCDIR}\data\icons\aethyra.ico" +!define MUI_ICON "${SRCDIR}\data\icons\tmw.ico" ;!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\win-uninstall.ico" -!define MUI_UNICON "${SRCDIR}\data\icons\aethyra.ico" +!define MUI_UNICON "${SRCDIR}\data\icons\tmw.ico" ;Language Selection Dialog Settings ;Remember the installer language !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" -!define MUI_LANGDLL_REGISTRY_KEY "Software\Aethyra" +!define MUI_LANGDLL_REGISTRY_KEY "Software\The Mana World" !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" !define MUI_WELCOMEFINISHPAGE_BITMAP "setup_welcome.bmp" @@ -49,16 +49,16 @@ SetCompressor /SOLID lzma !insertmacro MUI_PAGE_INSTFILES ; Finish page !define MUI_FINISHPAGE_RUN -!define MUI_FINISHPAGE_RUN_FUNCTION Runaethyra +!define MUI_FINISHPAGE_RUN_FUNCTION RunTMW !define MUI_FINISHPAGE_SHOWREADME 'notepad.exe "$\"$INSTDIR\README$\""' !define MUI_PAGE_CUSTOMFUNCTION_PRE changeFinishImage -!define MUI_FINISHPAGE_LINK "Visit the Aethyra website for the latest news, FAQs and support" -!define MUI_FINISHPAGE_LINK_LOCATION "http://aethyra.org" +!define MUI_FINISHPAGE_LINK "Visit TMW website for the latest news, FAQs and support" +!define MUI_FINISHPAGE_LINK_LOCATION "http://themanaworld.org" !insertmacro MUI_PAGE_FINISH -Function Runaethyra +Function RunTMW SetOutPath $INSTDIR -Exec "$INSTDIR\aethyra.exe" +Exec "$INSTDIR\tmw.exe" FunctionEnd Function changeFinishImage @@ -130,8 +130,8 @@ ReserveFile "setup_finish.bmp" ; MUI end ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" -OutFile "aethyra-${PRODUCT_VERSION}-win32.exe" -InstallDir "$PROGRAMFILES\Aethyra" +OutFile "tmw-${PRODUCT_VERSION}-win32.exe" +InstallDir "$PROGRAMFILES\The Mana World" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show @@ -146,9 +146,9 @@ Section "Core files (required)" SecCore SectionIn RO SetOutPath "$INSTDIR" SetOverwrite ifnewer - CreateDirectory "$SMPROGRAMS\Aethyra" - CreateShortCut "$SMPROGRAMS\Aethyra\Aethyra.lnk" "$INSTDIR\aethyra.exe" - CreateShortCut "$DESKTOP\Aethyra.lnk" "$INSTDIR\aethyra.exe" + CreateDirectory "$SMPROGRAMS\The Mana World" + CreateShortCut "$SMPROGRAMS\The Mana World\The Mana World.lnk" "$INSTDIR\tmw.exe" + CreateShortCut "$DESKTOP\The Mana World.lnk" "$INSTDIR\tmw.exe" CreateDirectory "$INSTDIR\data" CreateDirectory "$INSTDIR\data\fonts" CreateDirectory "$INSTDIR\data\graphics" @@ -161,7 +161,7 @@ Section "Core files (required)" SecCore SetOverwrite ifnewer SetOutPath "$INSTDIR" - File "${SRCDIR}\aethyra.exe" + File "${SRCDIR}\tmw.exe" File "${SRCDIR}\*.dll" File "${SRCDIR}\AUTHORS" File "${SRCDIR}\COPYING" @@ -177,7 +177,7 @@ Section "Core files (required)" SecCore SetOutPath "$INSTDIR\data\help" File "${SRCDIR}\data\help\*.txt" SetOutPath "$INSTDIR\data\icons\" - File "${SRCDIR}\data\icons\aethyra.ico" + File "${SRCDIR}\data\icons\tmw.ico" SetOutPath "$INSTDIR\docs" File "${SRCDIR}\docs\FAQ.txt" SectionEnd @@ -204,18 +204,18 @@ SectionEnd Section -AdditionalIcons WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" - CreateShortCut "$SMPROGRAMS\Aethyra\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" - CreateShortCut "$SMPROGRAMS\Aethyra\Readme.lnk" "notepad.exe" "$INSTDIR\README" - CreateShortCut "$SMPROGRAMS\Aethyra\FAQ.lnk" "$INSTDIR\docs\FAQ.txt" - CreateShortCut "$SMPROGRAMS\Aethyra\Uninstall.lnk" "$INSTDIR\uninst.exe" + CreateShortCut "$SMPROGRAMS\The Mana World\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" + CreateShortCut "$SMPROGRAMS\The Mana World\Readme.lnk" "notepad.exe" "$INSTDIR\README" + CreateShortCut "$SMPROGRAMS\The Mana World\FAQ.lnk" "$INSTDIR\docs\FAQ.txt" + CreateShortCut "$SMPROGRAMS\The Mana World\Uninstall.lnk" "$INSTDIR\uninst.exe" SectionEnd Section -Post WriteUninstaller "$INSTDIR\uninst.exe" - WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\aethyra.exe" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\tmw.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\aethyra.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\tmw.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" @@ -226,21 +226,21 @@ Function un.onInit FunctionEnd Section Uninstall - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Aethyra" + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\The Mana World" Delete "$INSTDIR\*.*" - Delete "$SMPROGRAMS\Aethyra\Uninstall.lnk" - Delete "$DESKTOP\Aethyra.lnk" - Delete "$SMPROGRAMS\Aethyra\Aethyra.lnk" - Delete "$SMPROGRAMS\Aethyra\Website.lnk" - Delete "$SMPROGRAMS\Aethyra\Readme.lnk" - Delete "$SMPROGRAMS\Aethyra\FAQ.lnk" + Delete "$SMPROGRAMS\The Mana World\Uninstall.lnk" + Delete "$DESKTOP\The Mana World.lnk" + Delete "$SMPROGRAMS\The Mana World\The Mana World.lnk" + Delete "$SMPROGRAMS\The Mana World\Website.lnk" + Delete "$SMPROGRAMS\The Mana World\Readme.lnk" + Delete "$SMPROGRAMS\The Mana World\FAQ.lnk" + + RMDir "$SMPROGRAMS\The Mana World" - RMDir "$SMPROGRAMS\Aethyra" RMDir /r "$INSTDIR\data" RMDir /r "$INSTDIR\docs" - RMDir /r "$INSTDIR\po" RMDir /r "$INSTDIR\updates" RMDir "$INSTDIR" @@ -22,4 +22,4 @@ ru sk sv th -zh_CN +#zh_CN diff --git a/po/Makevars b/po/Makevars index 73f2a51b..76e72f50 100644 --- a/po/Makevars +++ b/po/Makevars @@ -1,7 +1,7 @@ # Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. -DOMAIN = aethyra +DOMAIN = tmw # These two variables depend on the location of this directory. subdir = po diff --git a/po/POTFILES.in b/po/POTFILES.in index 9a2cf604..f4bd14bb 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -19,18 +19,20 @@ src/gui/itempopup.cpp src/gui/login.cpp src/gui/menuwindow.cpp src/gui/minimap.cpp +src/gui/npc_text.cpp src/gui/npcintegerdialog.cpp src/gui/npclistdialog.cpp src/gui/npcstringdialog.cpp -src/gui/npc_text.cpp src/gui/ok_dialog.cpp src/gui/popupmenu.cpp +src/gui/quitdialog.cpp src/gui/recorder.cpp src/gui/recorder.h src/gui/register.cpp src/gui/sell.cpp -src/gui/setup_audio.cpp +src/gui/serverdialog.cpp src/gui/setup.cpp +src/gui/setup_audio.cpp src/gui/setup_colors.cpp src/gui/setup_joystick.cpp src/gui/setup_keyboard.cpp diff --git a/po/aethyra.pot b/po/aethyra.pot deleted file mode 100644 index e21fcec0..00000000 --- a/po/aethyra.pot +++ /dev/null @@ -1,2150 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR The Mana World Development Team -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 -msgid "Buy" -msgstr "" - -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 -#, c-format -msgid "Price: %d GP / Total: %d GP" -msgstr "" - -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 -msgid "Quit" -msgstr "" - -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 -#, c-format -msgid "Description: %s" -msgstr "" - -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 -#, c-format -msgid "Effect: %s" -msgstr "" - -#: src/gui/buysell.cpp:30 -msgid "Shop" -msgstr "" - -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 -msgid "Sell" -msgstr "" - -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 -msgid "Cancel" -msgstr "" - -#: src/gui/char_select.cpp:64 -msgid "Confirm Character Delete" -msgstr "" - -#: src/gui/char_select.cpp:65 -msgid "Are you sure you want to delete this character?" -msgstr "" - -#: src/gui/char_select.cpp:83 -msgid "Select Character" -msgstr "" - -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 -#, c-format -msgid "Name: %s" -msgstr "" - -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 -#, c-format -msgid "Level: %d" -msgstr "" - -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 -#, c-format -msgid "Job Level: %d" -msgstr "" - -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 -#, c-format -msgid "Money: %d" -msgstr "" - -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "" - -#: src/gui/char_select.cpp:180 -#, c-format -msgid "Gold: %d" -msgstr "" - -#: src/gui/char_select.cpp:249 -msgid "Create Character" -msgstr "" - -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 -msgid "Name:" -msgstr "" - -#: src/gui/char_select.cpp:262 -msgid "Hair Color:" -msgstr "" - -#: src/gui/char_select.cpp:265 -msgid "Hair Style:" -msgstr "" - -#: src/gui/char_select.cpp:266 -msgid "Create" -msgstr "" - -#: src/gui/char_server.cpp:49 -msgid "Select Server" -msgstr "" - -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 -msgid "OK" -msgstr "" - -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -msgid "Chat" -msgstr "" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " -msgstr "" - -#: src/gui/chat.cpp:151 -#, c-format -msgid "Global announcement from %s: " -msgstr "" - -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 -msgid "Server:" -msgstr "" - -#: src/gui/chat.cpp:327 -#, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." -msgstr "" - -#: src/gui/chat.cpp:599 -msgid "Unknown command" -msgstr "" - -#: src/gui/chat.cpp:611 -msgid "Trade failed!" -msgstr "" - -#: src/gui/chat.cpp:614 -msgid "Emote failed!" -msgstr "" - -#: src/gui/chat.cpp:617 -msgid "Sit failed!" -msgstr "" - -#: src/gui/chat.cpp:620 -msgid "Chat creating failed!" -msgstr "" - -#: src/gui/chat.cpp:623 -msgid "Could not join party!" -msgstr "" - -#: src/gui/chat.cpp:626 -msgid "Cannot shout!" -msgstr "" - -#: src/gui/chat.cpp:635 -msgid "You have not yet reached a high enough lvl!" -msgstr "" - -#: src/gui/chat.cpp:638 -msgid "Insufficient HP!" -msgstr "" - -#: src/gui/chat.cpp:641 -msgid "Insufficient SP!" -msgstr "" - -#: src/gui/chat.cpp:644 -msgid "You have no memos!" -msgstr "" - -#: src/gui/chat.cpp:647 -msgid "You cannot do that right now!" -msgstr "" - -#: src/gui/chat.cpp:650 -msgid "Seems you need more Zeny... ;-)" -msgstr "" - -#: src/gui/chat.cpp:653 -msgid "You cannot use this skill with that kind of weapon!" -msgstr "" - -#: src/gui/chat.cpp:656 -msgid "You need another red gem!" -msgstr "" - -#: src/gui/chat.cpp:659 -msgid "You need another blue gem!" -msgstr "" - -#: src/gui/chat.cpp:662 -msgid "You're carrying to much to do this!" -msgstr "" - -#: src/gui/chat.cpp:665 -msgid "Huh? What's that?" -msgstr "" - -#: src/gui/chat.cpp:674 -msgid "Warp failed..." -msgstr "" - -#: src/gui/chat.cpp:677 -msgid "Could not steal anything..." -msgstr "" - -#: src/gui/chat.cpp:680 -msgid "Poison had no effect..." -msgstr "" - -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -msgid "Changing prefix to " -msgstr "" - -#: src/gui/chat.cpp:789 -msgid "-- Help --" -msgstr "" - -#: src/gui/chat.cpp:792 -msgid "/announce: Global announcement (GM only)" -msgstr "" - -#: src/gui/chat.cpp:793 -msgid "/clear: Clears this window" -msgstr "" - -#: src/gui/chat.cpp:794 -msgid "/help: Display this help" -msgstr "" - -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 -msgid "/where: Display map name" -msgstr "" - -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" -msgstr "" - -#: src/gui/chat.cpp:806 -msgid "/who: Display number of online users" -msgstr "" - -#: src/gui/chat.cpp:807 -msgid "For more information, type /help <command>" -msgstr "" - -#: src/gui/chat.cpp:811 -msgid "Command: /announce <msg>" -msgstr "" - -#: src/gui/chat.cpp:812 -msgid "*** only available to a GM ***" -msgstr "" - -#: src/gui/chat.cpp:813 -msgid "This command sends the message <msg> to all players currently online." -msgstr "" - -#: src/gui/chat.cpp:818 -msgid "Command: /clear" -msgstr "" - -#: src/gui/chat.cpp:819 -msgid "This command clears the chat log of previous chat." -msgstr "" - -#: src/gui/chat.cpp:824 -msgid "Command: /help" -msgstr "" - -#: src/gui/chat.cpp:825 -msgid "This command displays a list of all commands available." -msgstr "" - -#: src/gui/chat.cpp:827 -msgid "Command: /help <command>" -msgstr "" - -#: src/gui/chat.cpp:828 -msgid "This command displays help on <command>." -msgstr "" - -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 -msgid "Command: /where" -msgstr "" - -#: src/gui/chat.cpp:864 -msgid "This command displays the name of the current map." -msgstr "" - -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 -msgid "Command: /whisper <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:871 -msgid "Command: /w <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:872 -msgid "This command sends the message <msg> to <nick>." -msgstr "" - -#: src/gui/chat.cpp:874 -msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." -msgstr "" - -#: src/gui/chat.cpp:879 -msgid "Command: /who" -msgstr "" - -#: src/gui/chat.cpp:880 -msgid "This command displays the number of players currently online." -msgstr "" - -#: src/gui/chat.cpp:885 -msgid "Unknown command." -msgstr "" - -#: src/gui/chat.cpp:886 -msgid "Type /help for a list of commands." -msgstr "" - -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -msgid "Highlight" -msgstr "" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -msgid "Party" -msgstr "" - -#: src/gui/colour.cpp:38 -msgid "Server" -msgstr "" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 -msgid "Yes" -msgstr "" - -#: src/gui/confirm_dialog.cpp:41 -msgid "No" -msgstr "" - -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 -msgid "Connecting..." -msgstr "" - -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 -msgid "Equipment" -msgstr "" - -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 -msgid "Help" -msgstr "" - -#: src/gui/help.cpp:45 -msgid "Close" -msgstr "" - -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 -msgid "Inventory" -msgstr "" - -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "" - -#: src/gui/inventorywindow.cpp:72 -msgid "Drop" -msgstr "" - -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " -msgstr "" - -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " -msgstr "" - -#: src/gui/item_amount.cpp:76 -msgid "Select amount of items to trade." -msgstr "" - -#: src/gui/item_amount.cpp:80 -msgid "Select amount of items to drop." -msgstr "" - -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 -msgid "Login" -msgstr "" - -#: src/gui/login.cpp:52 src/gui/register.cpp:77 -msgid "Password:" -msgstr "" - -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 -msgid "Register" -msgstr "" - -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 -msgid "Status" -msgstr "" - -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 -msgid "Skills" -msgstr "" - -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 -msgid "Shortcut" -msgstr "" - -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 -msgid "Setup" -msgstr "" - -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 -msgid "MiniMap" -msgstr "" - -#: src/gui/npcintegerdialog.cpp:33 -msgid "NPC Number Request" -msgstr "" - -#: src/gui/npcintegerdialog.cpp:41 -msgid "Reset" -msgstr "" - -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "" - -#: src/gui/npcstringdialog.cpp:33 -msgid "NPC Text Request" -msgstr "" - -#: src/gui/popupmenu.cpp:78 -#, c-format -msgid "@@trade|Trade With %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:79 -#, c-format -msgid "@@attack|Attack %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "" - -#: src/gui/popupmenu.cpp:113 -msgid "@@talk|Talk To NPC@@" -msgstr "" - -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 -msgid "@@cancel|Cancel@@" -msgstr "" - -#: src/gui/popupmenu.cpp:135 -#, c-format -msgid "@@pickup|Pick Up %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:287 -msgid "@@use|Unequip@@" -msgstr "" - -#: src/gui/popupmenu.cpp:289 -msgid "@@use|Equip@@" -msgstr "" - -#: src/gui/popupmenu.cpp:292 -msgid "@@use|Use@@" -msgstr "" - -#: src/gui/popupmenu.cpp:294 -msgid "@@drop|Drop@@" -msgstr "" - -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -msgid "Recorder" -msgstr "" - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -msgid "Already recording." -msgstr "" - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -msgid "Recording..." -msgstr "" - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 -msgid "Confirm:" -msgstr "" - -#: src/gui/register.cpp:86 -msgid "Male" -msgstr "" - -#: src/gui/register.cpp:87 -msgid "Female" -msgstr "" - -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 -#, c-format -msgid "The username needs to be at least %d characters long." -msgstr "" - -#: src/gui/register.cpp:172 -#, c-format -msgid "The username needs to be less than %d characters long." -msgstr "" - -#: src/gui/register.cpp:180 -#, c-format -msgid "The password needs to be at least %d characters long." -msgstr "" - -#: src/gui/register.cpp:188 -#, c-format -msgid "The password needs to be less than %d characters long." -msgstr "" - -#: src/gui/register.cpp:195 -msgid "Passwords do not match." -msgstr "" - -#: src/gui/register.cpp:215 src/main.cpp:1056 -msgid "Error" -msgstr "" - -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "" - -#: src/gui/setup.cpp:57 -msgid "Apply" -msgstr "" - -#: src/gui/setup.cpp:57 -msgid "Reset Windows" -msgstr "" - -#: src/gui/setup.cpp:78 -msgid "Video" -msgstr "" - -#: src/gui/setup.cpp:82 -msgid "Audio" -msgstr "" - -#: src/gui/setup.cpp:86 -msgid "Joystick" -msgstr "" - -#: src/gui/setup.cpp:90 -msgid "Keyboard" -msgstr "" - -#: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 -msgid "Players" -msgstr "" - -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" - -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" - -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" - -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 -msgid "Press the button to start calibration" -msgstr "" - -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 -msgid "Calibrate" -msgstr "" - -#: src/gui/setup_joystick.cpp:40 -msgid "Enable joystick" -msgstr "" - -#: src/gui/setup_joystick.cpp:84 -msgid "Stop" -msgstr "" - -#: src/gui/setup_joystick.cpp:85 -msgid "Rotate the stick" -msgstr "" - -#: src/gui/setup_keyboard.cpp:86 -msgid "Assign" -msgstr "" - -#: src/gui/setup_keyboard.cpp:90 -msgid "Default" -msgstr "" - -#: src/gui/setup_keyboard.cpp:119 -msgid "Key Conflict(s) Detected." -msgstr "" - -#: src/gui/setup_keyboard.cpp:120 -msgid "Resolve them, or gameplay may result in strange behaviour." -msgstr "" - -#: src/gui/setup_players.cpp:56 -msgid "Name" -msgstr "" - -#: src/gui/setup_players.cpp:57 -msgid "Relation" -msgstr "" - -#: src/gui/setup_players.cpp:61 -msgid "Neutral" -msgstr "" - -#: src/gui/setup_players.cpp:62 -msgid "Friend" -msgstr "" - -#: src/gui/setup_players.cpp:63 -msgid "Disregarded" -msgstr "" - -#: src/gui/setup_players.cpp:64 -msgid "Ignored" -msgstr "" - -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 -msgid "Save player list" -msgstr "" - -#: src/gui/setup_players.cpp:224 -msgid "Allow trading" -msgstr "" - -#: src/gui/setup_players.cpp:226 -msgid "Allow whispers" -msgstr "" - -#: src/gui/setup_players.cpp:257 -msgid "When ignoring:" -msgstr "" - -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 -msgid "Full screen" -msgstr "" - -#: src/gui/setup_video.cpp:118 -msgid "OpenGL" -msgstr "" - -#: src/gui/setup_video.cpp:119 -msgid "Custom cursor" -msgstr "" - -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 -msgid "FPS Limit:" -msgstr "" - -#: src/gui/setup_video.cpp:145 -msgid "Gui opacity" -msgstr "" - -#: src/gui/setup_video.cpp:146 -msgid "Scroll radius" -msgstr "" - -#: src/gui/setup_video.cpp:147 -msgid "Scroll laziness" -msgstr "" - -#: src/gui/setup_video.cpp:148 -msgid "Ambient FX" -msgstr "" - -#: src/gui/setup_video.cpp:149 -msgid "Particle Detail" -msgstr "" - -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 -msgid "off" -msgstr "" - -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 -msgid "low" -msgstr "" - -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 -msgid "high" -msgstr "" - -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 -msgid "medium" -msgstr "" - -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 -msgid "max" -msgstr "" - -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "fullscreen" -msgstr "" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 -msgid "Switching to full screen" -msgstr "" - -#: src/gui/setup_video.cpp:313 -msgid "Restart needed for changes to take effect." -msgstr "" - -#: src/gui/setup_video.cpp:325 -msgid "Changing OpenGL" -msgstr "" - -#: src/gui/setup_video.cpp:326 -msgid "Applying change to OpenGL requires restart." -msgstr "" - -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -msgid "Restart your client for the change to take effect." -msgstr "" - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -msgid "Restart your client or change maps for the change to take effect." -msgstr "" - -#: src/gui/skill.cpp:41 -msgid "skills.xml" -msgstr "" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 -#, c-format -msgid "Skill points: %d" -msgstr "" - -#: src/gui/skill.cpp:143 -msgid "Up" -msgstr "" - -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -msgid "use" -msgstr "" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 -#, c-format -msgid "Job: %d" -msgstr "" - -#: src/gui/status.cpp:52 src/gui/status.cpp:171 -#, c-format -msgid "Money: %d GP" -msgstr "" - -#: src/gui/status.cpp:54 -msgid "HP:" -msgstr "" - -#: src/gui/status.cpp:57 -msgid "Exp:" -msgstr "" - -#: src/gui/status.cpp:60 -msgid "MP:" -msgstr "" - -#: src/gui/status.cpp:63 -msgid "Job:" -msgstr "" - -#: src/gui/status.cpp:71 -msgid "Stats" -msgstr "" - -#: src/gui/status.cpp:72 -msgid "Total" -msgstr "" - -#: src/gui/status.cpp:73 -msgid "Cost" -msgstr "" - -#: src/gui/status.cpp:77 -msgid "Attack:" -msgstr "" - -#: src/gui/status.cpp:78 -msgid "Defense:" -msgstr "" - -#: src/gui/status.cpp:79 -msgid "M.Attack:" -msgstr "" - -#: src/gui/status.cpp:80 -msgid "M.Defense:" -msgstr "" - -#: src/gui/status.cpp:81 -#, c-format -msgid "% Accuracy:" -msgstr "" - -#: src/gui/status.cpp:82 -#, c-format -msgid "% Evade:" -msgstr "" - -#: src/gui/status.cpp:83 -msgid "% Reflex:" -msgstr "" - -#: src/gui/status.cpp:211 -msgid "Strength" -msgstr "" - -#: src/gui/status.cpp:212 -msgid "Agility" -msgstr "" - -#: src/gui/status.cpp:213 -msgid "Vitality" -msgstr "" - -#: src/gui/status.cpp:214 -msgid "Intelligence" -msgstr "" - -#: src/gui/status.cpp:215 -msgid "Dexterity" -msgstr "" - -#: src/gui/status.cpp:216 -msgid "Luck" -msgstr "" - -#: src/gui/status.cpp:234 -#, c-format -msgid "Remaining Status Points: %d" -msgstr "" - -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - -#: src/gui/trade.cpp:61 -msgid "Add" -msgstr "" - -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 -#, c-format -msgid "You get %d GP." -msgstr "" - -#: src/gui/trade.cpp:81 -msgid "You give:" -msgstr "" - -#: src/gui/trade.cpp:250 -msgid "Failed adding item. You can not overlap one kind of item on the window." -msgstr "" - -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - -#: src/gui/updatewindow.cpp:93 -msgid "Updating..." -msgstr "" - -#: src/gui/updatewindow.cpp:115 -msgid "Play" -msgstr "" - -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 -msgid "Completed" -msgstr "" - -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -msgid " cancelled" -msgstr "" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -msgid "Are you sure you want to quit?" -msgstr "" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -msgid "Attack" -msgstr "" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -msgid "Stop Attack" -msgstr "" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -msgid "Hide Windows" -msgstr "" - -#: src/keyboardconfig.cpp:55 -msgid "Sit" -msgstr "" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, c-format -msgid "Item Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:71 -msgid "Help Window" -msgstr "" - -#: src/keyboardconfig.cpp:72 -msgid "Status Window" -msgstr "" - -#: src/keyboardconfig.cpp:73 -msgid "Inventory Window" -msgstr "" - -#: src/keyboardconfig.cpp:74 -msgid "Equipment WIndow" -msgstr "" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -msgid "Chat Window" -msgstr "" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -msgid "Setup Window" -msgstr "" - -#: src/keyboardconfig.cpp:80 -msgid "Debug Window" -msgstr "" - -#: src/keyboardconfig.cpp:81 -msgid "Emote Window" -msgstr "" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, c-format -msgid "Emote Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -msgid "Select OK" -msgstr "" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -msgid "Trying to connect to account server..." -msgstr "" - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -msgid "Trying to connect to char server..." -msgstr "" - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -msgid "Trying to connect to map server..." -msgstr "" - -#: src/main.cpp:700 -#, c-format -msgid "Map: %s" -msgstr "" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 -msgid "Got disconnected from server!" -msgstr "" - -#: src/main.cpp:1068 -msgid "Connecting to map server..." -msgstr "" - -#: src/main.cpp:1076 -msgid "Connecting to character server..." -msgstr "" - -#: src/main.cpp:1084 -msgid "Connecting to account server..." -msgstr "" - -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -msgid "Invite to party" -msgstr "" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -msgid " /create" -msgstr "" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." -msgstr "" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-07-16 18:28+0000\n" "Last-Translator: صقر بن عبدالله <Unknown>\n" "Language-Team: Arabic <ar@li.org>\n" @@ -17,608 +17,420 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "شراء" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "السعر: %d GP / الإجمالي: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "مغادرة" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "الوصÙ: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "التأثير: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 #, fuzzy msgid "Shop" msgstr "إيقاÙ" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "بيع" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "إلغاء" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "هل أنت متأكّد من ØØ°Ù هذه الشخصيّة؟" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "إنتقاء الشخصيّة" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "مواÙÙ‚" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "جديد" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "ØØ°Ù" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "السّابق" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "التّالي" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "الاسم: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "المستوى: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "المستوى: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "النقود: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "جديد" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "ØØ°Ù" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "السّابق" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "التّالي" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "مواÙÙ‚" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "إنشاء شخصيّة" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "الاسم:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "لون الشعر:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "قصّة الشعر:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "إنشاء" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 #, fuzzy msgid "Select Server" msgstr "إنتقاء الشخصيّة" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "إنشاء" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "الخادوم:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "تغيير OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "Ù…Ø±ØªÙØ¹" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Ø§Ù„Ù…Ù†ÙØ°:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "الخادوم:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "نعم" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "لا" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "جار٠الاتّصال..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "استخدام" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "العتاد" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "تجريد من العتاد" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "الجردة" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "استعمال العتاد" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "استخدام" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "إسقاط" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "تجريد من العتاد" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "استعمال العتاد" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "انتقاء كمّيّة من المواد للمتاجرة بها." @@ -627,245 +439,149 @@ msgstr "انتقاء كمّيّة من المواد للمتاجرة بها." msgid "Select amount of items to drop." msgstr "انتقاء كمّيّة من المواد لإسقاطها." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "ولوج" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "كلمة السرّ:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Ø§Ù„Ù…Ù†ÙØ°:" - -#: src/gui/login.cpp:55 -msgid "Recent:" +#: src/gui/login.cpp:50 +msgid "Remember Username" msgstr "" -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "ترك" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "تسجيل" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Ø§Ù„ØØ§Ù„Ø©" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "مهارات" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "اختصار" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "تثبيت" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "خارطة صغيرة" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "تسجيل" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@تجارة|متاجرة مع %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@مهاجمة|هاجم %s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "الجردة" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@Ù…ØØ§Ø¯Ø«Ø©|ØªØØ¯Ù‘Ø« مع NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@إلغاء|إلغاء@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@اقتطاÙ|اقتطا٠%s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 #, fuzzy msgid "@@use|Unequip@@" msgstr "@@استخدام|استخدام العتاد@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@استخدام|استخدام العتاد@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@استخدم|استخدم@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@إسقاط|إسقاط@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "جار٠الاتّصال..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "جار٠الاتّصال..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@الوصÙ|الوصÙ@@" -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "جار٠الاتّصال..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "تأكيد:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "يجب أن يكون طول اسم المستخدم على الأقل %d Ù…ØØ§Ø±Ù." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "يجب أن يكون طول اسم المستخدم أقل من %d Ù…ØØ§Ø±Ù." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "يجب أن تكون طول كلمة السرّ على الأقل %d Ù…ØØ§Ø±Ù." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "يجب أن يكون طول كلمة السرّ أقل من %d Ù…ØØ§Ø±Ù." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "كلمات السرّ غير متطابقة." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "خطأ" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "صوت" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "ØØ¬Ù… صوت المؤثرّات" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "ØØ¬Ù… صوت الموسيقا" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "تطبيق" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "تصÙير Ø§Ù„Ù†ÙˆØ§ÙØ°" @@ -886,393 +602,304 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "صوت" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "ØØ¬Ù… صوت المؤثرّات" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "ØØ¬Ù… صوت الموسيقا" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "إضغط على الزرّ لبدأ المعايرة" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "معايرة" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "ØªÙØ¹ÙŠÙ„ عصا الألعاب" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "إيقاÙ" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "تدوير العصا" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "ØØ°Ù" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "الاسم:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "ملء الشاشة" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "مؤشّر مخصّص" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "ØØ¯Ù‘ FPS:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "عتمة واجهة المستخدم" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "نص٠قطر اللÙÙ‘" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "كسل اللÙÙ‘" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "مؤثّرات Ù…ØÙŠØ·Ø©" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "واقÙ" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "Ù…Ù†Ø®ÙØ¶" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "Ù…Ø±ØªÙØ¹" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "ملء الشاشة" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "جار٠ملء الشاشة" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "يجب إعادة التشغيل Ù„ØªÙØ¹Ù‘Ù„ التغييرات." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "تغيير OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "تطبيق التغيير على OpenGL ÙŠØØªØ§Ø¬ لإعادة تشغيل." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "يجب إعادة التشغيل Ù„ØªÙØ¹Ù‘Ù„ التغييرات." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "يجب إعادة التشغيل Ù„ØªÙØ¹Ù‘Ù„ التغييرات." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "مهارات" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "استخدام" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "المستوى: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "النقود: %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "المستوى: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "Ø§Ù„ØØ§Ù„Ø©" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 #, fuzzy msgid "Attack:" msgstr "مهاجمة %+d" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 #, fuzzy msgid "Defense:" msgstr "Ø¯ÙØ§Ø¹ %+d" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 #, fuzzy msgid "M.Attack:" msgstr "مهاجمة %+d" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 #, fuzzy msgid "M.Defense:" msgstr "Ø¯ÙØ§Ø¹ %+d" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "القوّة:" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "Ø®Ùّة Ø§Ù„ØØ±ÙƒØ©:" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "نشاط:" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "ذكاء:" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "المهارة:" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Ø¥Ø¶Ø§ÙØ©" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "أنت ØªØØµÙ„ على %d GP." @@ -1281,933 +908,43 @@ msgstr "أنت ØªØØµÙ„ على %d GP." msgid "You give:" msgstr "أنت تقدّم:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "إلغاء" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "هل أنت متأكّد من ØØ°Ù هذه الشخصيّة؟" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "مهاجمة %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "مهاجمة %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "تصÙير Ø§Ù„Ù†ÙˆØ§ÙØ°" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "قسم" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "اختصار" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "تصÙير Ø§Ù„Ù†ÙˆØ§ÙØ°" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Ø§Ù„ØØ§Ù„Ø©" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "الجردة" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "العتاد" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "تصÙير Ø§Ù„Ù†ÙˆØ§ÙØ°" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "تصÙير Ø§Ù„Ù†ÙˆØ§ÙØ°" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "تصÙير Ø§Ù„Ù†ÙˆØ§ÙØ°" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "تصÙير Ø§Ù„Ù†ÙˆØ§ÙØ°" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "اختصار" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "إنتقاء الشخصيّة" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "جار٠الاتّصال..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "جار٠الاتّصال..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "جار٠الاتّصال..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "الاسم: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "جار٠الاتّصال..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "الجردة" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "إنشاء" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#, fuzzy -#~ msgid "Map" -#~ msgstr "خارطة صغيرة" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@الوصÙ|الوصÙ@@" - #~ msgid "Unregister" #~ msgstr "إلغاء التسجيل" @@ -2226,6 +963,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "رجاء ØØ°Ù %d نقطة" +#~ msgid "Split" +#~ msgstr "قسم" + #~ msgid "Select amount of items to split." #~ msgstr "انتقاء كمّيّة من المواد لقسمها." @@ -2244,6 +984,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "اختار خادومك لـMana World" +#~ msgid "Port:" +#~ msgstr "Ø§Ù„Ù…Ù†ÙØ°:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "رجاء طباعة عنوان ÙˆÙ…Ù†ÙØ° الخادوم." @@ -2270,3 +1013,6 @@ msgstr "" #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "الوزن الإجماليّ: %d - وزن Ø§Ù„ØØ¯Ù‘ الأقصى: %d" + +#~ msgid "Keep" +#~ msgstr "ترك" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-07-03 17:21+0000\n" "Last-Translator: Habari <thomas.becerril@gmail.com>\n" "Language-Team: Catalan <ca@li.org>\n" @@ -17,600 +17,416 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "preu %d GP / total %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "sortir" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 -#, c-format -msgid "Name: %s" -msgstr "" +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "ok" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 -#, c-format -msgid "Level: %d" +#: src/gui/char_select.cpp:86 +msgid "New" msgstr "" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 -#, c-format -msgid "Job Level: %d" +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" msgstr "" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 -#, c-format -msgid "Money: %d" +#: src/gui/char_select.cpp:88 +msgid "Previous" msgstr "" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" +#: src/gui/char_select.cpp:89 +msgid "Next" msgstr "" -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 +#, c-format +msgid "Name: %s" msgstr "" -#: src/gui/char_select.cpp:99 -msgid "Previous" +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 +#, c-format +msgid "Level: %d" msgstr "" -#: src/gui/char_select.cpp:100 -msgid "Next" +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 +#, c-format +msgid "Job Level: %d" msgstr "" -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "ok" +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 +#, c-format +msgid "Money: %d" +msgstr "" -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "nom" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 msgid "Select Server" msgstr "" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "canvi" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -msgid "Changing prefix to " -msgstr "" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -msgid "Highlight" -msgstr "" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -msgid "Party" -msgstr "" - -#: src/gui/colour.cpp:38 -msgid "Server" -msgstr "" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "si" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "no" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "" -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" msgstr "" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" msgstr "" #: src/gui/item_amount.cpp:76 @@ -621,240 +437,147 @@ msgstr "" msgid "Select amount of items to drop." msgstr "" -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" +#: src/gui/login.cpp:50 +msgid "Remember Username" msgstr "" -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "" -#: src/gui/npcintegerdialog.cpp:33 -msgid "NPC Number Request" +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 -msgid "Reset" +#: src/gui/npcintegerdialog.cpp:38 +msgid "NPC Number Request" msgstr "" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" +#: src/gui/npcintegerdialog.cpp:45 +msgid "Reset" msgstr "" -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 +#: src/gui/popupmenu.cpp:81 #, c-format msgid "@@trade|Trade With %s@@" msgstr "" -#: src/gui/popupmenu.cpp:79 +#: src/gui/popupmenu.cpp:83 #, c-format msgid "@@attack|Attack %s@@" msgstr "" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" msgstr "" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -msgid "Recorder" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" msgstr "" -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -msgid "Already recording." -msgstr "" - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -msgid "Recording..." -msgstr "" - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "" -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "" @@ -875,376 +598,292 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " +#: src/gui/setup_audio.cpp:42 +msgid "Sound" msgstr "" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" msgstr "" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" msgstr "" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 msgid "Default" msgstr "" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "nom" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "fullscreen" -msgstr "" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "" -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "" -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:399 -msgid "Restart your client for the change to take effect." -msgstr "" - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -msgid "Restart your client or change maps for the change to take effect." -msgstr "" - -#: src/gui/skill.cpp:41 -msgid "skills.xml" -msgstr "" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -msgid "use" -msgstr "" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, c-format msgid "Job: %d" msgstr "" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, c-format msgid "Money: %d GP" msgstr "" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 msgid "Job:" msgstr "" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 msgid "Stats" msgstr "" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 msgid "Attack:" msgstr "" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 msgid "Defense:" msgstr "" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 msgid "M.Attack:" msgstr "" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 msgid "M.Defense:" msgstr "" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 msgid "Strength" msgstr "" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 msgid "Agility" msgstr "" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 msgid "Vitality" msgstr "" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 msgid "Intelligence" msgstr "" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 msgid "Dexterity" msgstr "" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" +#: src/gui/trade.cpp:61 +msgid "Add" msgstr "" -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 +#: src/gui/trade.cpp:64 msgid "Trade" msgstr "" -#: src/gui/trade.cpp:61 -msgid "Add" -msgstr "" - -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "" @@ -1253,901 +892,41 @@ msgstr "" msgid "You give:" msgstr "" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -msgid " cancelled" -msgstr "" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -msgid "Are you sure you want to quit?" -msgstr "" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -msgid "Attack" -msgstr "" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -msgid "Stop Attack" -msgstr "" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -msgid "Hide Windows" -msgstr "" - -#: src/keyboardconfig.cpp:55 -msgid "Sit" -msgstr "" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, c-format -msgid "Item Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:71 -msgid "Help Window" -msgstr "" - -#: src/keyboardconfig.cpp:72 -msgid "Status Window" -msgstr "" - -#: src/keyboardconfig.cpp:73 -msgid "Inventory Window" -msgstr "" - -#: src/keyboardconfig.cpp:74 -msgid "Equipment WIndow" -msgstr "" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -msgid "Chat Window" -msgstr "" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -msgid "Setup Window" -msgstr "" - -#: src/keyboardconfig.cpp:80 -msgid "Debug Window" -msgstr "" - -#: src/keyboardconfig.cpp:81 -msgid "Emote Window" -msgstr "" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, c-format -msgid "Emote Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -msgid "Select OK" -msgstr "" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -msgid "Trying to connect to account server..." -msgstr "" - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -msgid "Trying to connect to char server..." -msgstr "" - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -msgid "Trying to connect to map server..." -msgstr "" - -#: src/main.cpp:700 -#, c-format -msgid "Map: %s" -msgstr "" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 msgid "Connecting to map server..." msgstr "" -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -msgid "Invite to party" -msgstr "" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -msgid " /create" -msgstr "" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#: src/party.cpp:215 -msgid "Type /help party for a list of options." -msgstr "" +#~ msgid "Change" +#~ msgstr "canvi" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-12-17 16:31+0000\n" "Last-Translator: Lubos <alvinx12@centrum.cz>\n" "Language-Team: Czech <cs@li.org>\n" @@ -17,606 +17,420 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Nákup" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Popis: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Prodej" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "ZruÅ¡it" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "PotvrÄte vymazánà postavy" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Jste si jistÃ, že chcete vymazat tuto postavu?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 #, fuzzy msgid "Select Character" msgstr "VytvoÅ™it postavu" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Nová" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Odstranit" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "PÅ™edchozÃ" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "DalÅ¡Ã" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Jméno: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "Úroveň: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "Úroveň: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "PenÃze: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Nová" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Odstranit" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "PÅ™edchozÃ" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "DalÅ¡Ã" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "VytvoÅ™it postavu" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Jméno:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Barva vlasů:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Styl vlasů:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "VytvoÅ™it" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 #, fuzzy msgid "Select Server" msgstr "Server:" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "VytvoÅ™it" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Server:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -msgid "Changing prefix to " -msgstr "" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -msgid "Highlight" -msgstr "" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Port:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Server:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Ano" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Ne" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "PÅ™ipojuji se..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "VybavenÃ" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventář" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Vybavit" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Upustit" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" msgstr "" +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Vybavit" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "Vyberte množstvà zbožÃ, se kterým budete obchodovat." @@ -625,244 +439,148 @@ msgstr "Vyberte množstvà zbožÃ, se kterým budete obchodovat." msgid "Select amount of items to drop." msgstr "Vyberte množstvà zbožÃ, které chcete upustit." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Heslo:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Port:" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "Zapamatovat uživatelské jméno" -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Registrace" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Stav" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Dovednosti" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Zkratka" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "NastavenÃ" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "MiniMapa" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Registrace" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 +#: src/gui/popupmenu.cpp:81 #, c-format msgid "@@trade|Trade With %s@@" msgstr "" -#: src/gui/popupmenu.cpp:79 +#: src/gui/popupmenu.cpp:83 #, c-format msgid "@@attack|Attack %s@@" msgstr "" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "Inventář" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" msgstr "" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "PÅ™ipojuji se..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" msgstr "" -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "PÅ™ipojuji se..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "PÅ™ipojuji se..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "Muž" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "Žena" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "Uživatelské jméno musà být nejménÄ› %d znaků dlouhé." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "Uživatelské jméno musà být kratšà než %d znaků." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "Heslo musà být kratšà než %d znaků." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Hesla se neshodujÃ." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Chyba" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Zvuk" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "" @@ -883,388 +601,303 @@ msgid "Keyboard" msgstr "Klávesnice" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Zvuk" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" msgstr "" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" msgstr "" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Kalibrovat" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "Odstranit" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "Jméno:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "fullscreen" -msgstr "" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "" -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "" -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -msgid "Restart your client for the change to take effect." +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -msgid "Restart your client or change maps for the change to take effect." -msgstr "" - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Dovednosti" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -msgid "use" -msgstr "" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "Úroveň: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "PenÃze: %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "Úroveň: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "Stav" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 #, fuzzy msgid "Attack:" msgstr "Útok %+d" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 #, fuzzy msgid "Defense:" msgstr "Obrana %+d" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 #, fuzzy msgid "M.Attack:" msgstr "Útok %+d" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 #, fuzzy msgid "M.Defense:" msgstr "Obrana %+d" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "SÃla:" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "Vitalita:" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "Vitalita:" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "Inteligence:" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 msgid "Dexterity" msgstr "" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" +#: src/gui/trade.cpp:61 +msgid "Add" msgstr "" -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 +#: src/gui/trade.cpp:64 msgid "Trade" msgstr "" -#: src/gui/trade.cpp:61 -msgid "Add" -msgstr "" - -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "" @@ -1273,927 +906,43 @@ msgstr "" msgid "You give:" msgstr "" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "ZruÅ¡it" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Jste si jistÃ, že chcete vymazat tuto postavu?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Útok %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Útok %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -msgid "Hide Windows" -msgstr "" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "RozdÄ›lit" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Zkratka" - -#: src/keyboardconfig.cpp:71 -msgid "Help Window" -msgstr "" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Stav" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventář" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "VybavenÃ" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -msgid "Chat Window" -msgstr "" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -msgid "Setup Window" -msgstr "" - -#: src/keyboardconfig.cpp:80 -msgid "Debug Window" -msgstr "" - -#: src/keyboardconfig.cpp:81 -msgid "Emote Window" -msgstr "" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Zkratka" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Server:" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "PÅ™ipojuji se..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "PÅ™ipojuji se..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "PÅ™ipojuji se..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Jméno: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "PÅ™ipojuji se..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventář" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "VytvoÅ™it" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#, fuzzy -#~ msgid "Map" -#~ msgstr "MiniMapa" - -#~ msgid "Remember Username" -#~ msgstr "Zapamatovat uživatelské jméno" - #~ msgid "Account and Character Management" #~ msgstr "Správa úÄtu a postavy" @@ -2215,6 +964,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "Odstraňte prosÃm %d bodů." +#~ msgid "Split" +#~ msgstr "RozdÄ›lit" + #~ msgid "Guilds" #~ msgstr "Gildy" @@ -2224,6 +976,9 @@ msgstr "" #~ msgid "Email:" #~ msgstr "E-mail:" +#~ msgid "Port:" +#~ msgstr "Port:" + #~ msgid "Propose trade" #~ msgstr "NabÃdnout obchod" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-12-28 14:45+0000\n" "Last-Translator: GonzoDark AKA IchigoBlack <Gonzo.Dark@gmail.com>\n" "Language-Team: Danish <none@none.none>\n" @@ -17,628 +17,423 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Køb" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Pris: %d GP / Total: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Afslut" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Beskrivelse: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Effekt: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 #, fuzzy msgid "Shop" msgstr "Butik" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Sælg" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Fortryd" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "Bekræft sletning af karakter" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Er du sikker pÃ¥ at du vil slette denne karakter?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Vælg Karakter" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Opret" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Slet" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Forrige" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Næste" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Navn: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "Niveau: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "Niveau: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Penge: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Opret" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Slet" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Forrige" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Næste" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "Guld: %d" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Lav Bruger" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Navn:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "HÃ¥rfarve:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Frisure:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Opret" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 #, fuzzy msgid "Select Server" msgstr "Vælg Server" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "OK" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Chat" - -#: src/gui/chat.cpp:146 +#: src/gui/chat.cpp:115 #, fuzzy -msgid "Global announcement: " +msgid "Global announcement:" msgstr "Global meddelelse: " -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, fuzzy, c-format -msgid "Global announcement from %s: " -msgstr "Global meddelelse fra %s: " +msgid "Global announcement from %s:" +msgstr "Global meddelelse fra " -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Server:" -#: src/gui/chat.cpp:327 -#, c-format -msgid "Whispering to %s: %s" -msgstr "Hvisker til %s: %s" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "Prøver at sende en blank gruppe besked." - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "Ukendt genstand" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "Retur bringer focus pÃ¥ chatten." - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "Besked lukker chat." - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "Enter bringer nu focus pÃ¥ chatten." - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "Besked lukker nu chat." - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" -"Mulighederne til /toggle er \"yes\", \"no\", \"true\", \"false\", \"1\", \"0" -"\"." - -#: src/gui/chat.cpp:510 -#, fuzzy -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "Ukendt gruppe kommando... Skriv \"/help party\" for mere information." - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "Trylleformularen findes ikke!" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "Til stede: " +#: src/gui/chat.cpp:139 +#, fuzzy, c-format +msgid "%s whispers:" +msgstr "Tillad hviskere" -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." -msgstr "Fremmøde skrives til loggen" +#: src/gui/chat.cpp:276 +#, fuzzy, c-format +msgid "Whispering to %s: %s" +msgstr "Hvisker til " -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "Ukendt kommando" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "Handel fejlede!" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "Emote fejlede!" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "Sæt dig fejlede!" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "Chat skabelsen fejlede!" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "Kunne ikke tilslutte sig gruppen!" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "Kan ikke rÃ¥be!" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "Du er ikke nÃ¥et til det rette Niveau endnu!" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "Utilstrækkelig HP!" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "Utilstrækkelig SP!" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "Du har ingen memorandaer!" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "Det kan du ikke gøre lige nu!" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "Det ser ud til at du har behov for flere Zeny... ;-)" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "Du kan ikke bruge denne færdighed med dette slags vÃ¥ben!" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "Du har behov for en rød krystal mere" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "Du har behov for en blÃ¥ krystal mere" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "Du har for meget pÃ¥ dig, til at kunne gøre dette" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "Hmm? Hvad er det?" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "Warp mislykkede..." -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "Kunne ikke stjæle noget som helst..." -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "Giften havde ingen effekt..." -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "Det nuværende gruppe præfiks er " - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "Gruppens præfiks skal være et bogstav langt. " - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "Kan ikke bruge '/' som præfikset" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Ændre præfikset til " - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "--Hjælp--" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "/announce: Global meddelelse (Kun for GM)" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "/clear: Rydder dette vindue" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "/help: Viser denne hjælp" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "/msg <navn> <besked>: Alternativ form for /whisper" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "/present: FÃ¥r listen af tilstedeværende brugere" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "/toggle: Bestemmer om <retur> bringer focus pÃ¥ chat loggen." - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "/where: Viser bane navnet" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" -msgstr "/w <navn> <besked>: Kort form for /whisper" - -#: src/gui/chat.cpp:804 +#: src/gui/chat.cpp:496 msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" "/whisper <navn> <besked>: Sender en privat besked til det givne brugernavn" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" +msgstr "/w <navn> <besked>: Kort form for /whisper" + +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "/who: Viser antalet af online brugere" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "For at fÃ¥ mere information, skriv /help <kommando>" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "Kommando: /announce <besked>" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "*** kun tilgængelig for en GM ***" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "Denne kommando sender beskeden <besked> til alle brugere online." -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "Kommando: /clear" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "Denne commando rydder chat loggen" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "Kommando: /help" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "Denne kommando viser en liste over alle tilgængelige kommandoer" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "Kommando: /help <kommando>" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "Denne kommando viser hjælp for <kommando>" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "Kommando: /present" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" -"Denne kommando finder en liste over brugere, der er inden for en " -"lytteradius, og sender listen til enten record loggen, hvis du optager, " -"ellers er det chat loggen." - -#: src/gui/chat.cpp:843 -#, fuzzy -msgid "Command: /record <filename>" -msgstr "Kommando: /clear" - -#: src/gui/chat.cpp:844 -#, fuzzy -msgid "This command starts recording the chat log to the file <filename>." -msgstr "Denne commando rydder chat loggen" - -#: src/gui/chat.cpp:846 -#, fuzzy -msgid "Command: /record" -msgstr "Kommando: /clear" - -#: src/gui/chat.cpp:847 -#, fuzzy -msgid "This command finishes a recording session." -msgstr "Denne kommando viser hjælp for <kommando>" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "Kommando /toggle <tilstand>" - -#: src/gui/chat.cpp:852 -#, fuzzy -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" -"Denne kommando bestemmer om retur, skal bruges til at fokusere pÃ¥ chat " -"loggen, ellerom chat om chat loggen, automatisk skal slÃ¥ fra." - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" -"<tilstand> kan være en ud af \"1\", \"yes\", \"true\" for at slÃ¥ fokusering " -"af chat vindue til, eller \"0\", \"no\", \"false\" for at slÃ¥ fokusering af " -"chat vindue fra." - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "Kommando: /toggle" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "Denne kommando viser fokusering af chat vinduets status." - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "kommando: /where" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "Denne kommando viser det nuværende bane navn." -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "Kommando: /msg <navn> <besked>" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "Kommando: /whisper <navn> <besked>" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "Kommando: /w <navn> <besked>" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "Denne kommando sender beskeden <besked> til <navn>." -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "Hvis navnet har mellemrum i det, skal det omringes med følgende (\")." -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "Kommando: /who" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" "Denne kommando viser det antal af online brugere, der nuværende er online." -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "Ukendt kommando" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "Skriv /help for at fÃ¥ en liste med kommandoer" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "GM" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "høj" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "Bruger" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "Hvisk" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "Er" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Gruppe" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Server" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "Logger" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "Hyperlink" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Ja" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Nej" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Opretter forbindelse..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "Kan ikke loade valgte-billede.png" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "Emote" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Brug" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Udstyr" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Tag af" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "Hjælp" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "Luk" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventarliste" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Tag pÃ¥" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Brug" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Smid" -#: src/gui/inventorywindow.cpp:84 -#, fuzzy -msgid "Slots: " -msgstr " g Pladser: " +#: src/gui/inventorywindow.cpp:99 +#, fuzzy, c-format +msgid "Weight: %d / %d" +msgstr "Vægt: " -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Tag af" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Tag pÃ¥" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "Vælg hvor mange genstande du vil bytte." @@ -647,246 +442,149 @@ msgstr "Vælg hvor mange genstande du vil bytte." msgid "Select amount of items to drop." msgstr "Vælg hvor mange genstande du vil smide." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Log Ind" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Adgangskode:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Port:" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "Husk Brugernavn" -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "Nuværende:" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "Behold" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Registrer" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Status" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Færdigheder" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Genvej" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Opsætning" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "MiniKort" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Nuværende:" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 +#: src/gui/popupmenu.cpp:81 #, fuzzy, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Byt Med " -#: src/gui/popupmenu.cpp:79 +#: src/gui/popupmenu.cpp:83 #, fuzzy, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|Angrib " -#: src/gui/popupmenu.cpp:85 -#, fuzzy, c-format -msgid "@@friend|Befriend %s@@" -msgstr "@@friend|Bliv ven med " - -#: src/gui/popupmenu.cpp:88 -#, fuzzy, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "@@disregard|Se bort fra " - -#: src/gui/popupmenu.cpp:89 -#, fuzzy, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "@@ignore|Bloker " - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, fuzzy, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "@@unignore|Fjern blokering " - -#: src/gui/popupmenu.cpp:94 -#, fuzzy, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "@@ignore|Bloker fuldstændig " - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "@@party-invite|Inviter " - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Snak Til NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Annuller@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|Saml Op %s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 #, fuzzy msgid "@@use|Unequip@@" msgstr "@@use|Tag af@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Tag pÃ¥@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Brug@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Smid@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Opretter forbindelse..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Opretter forbindelse..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -#, fuzzy -msgid "Failed to start recording." -msgstr "Fejlede i at skifte til " - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Opretter forbindelse..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|Beskrivelse@@" -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Bekræft:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "Mand" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "Kvinde" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "RegisterDialog::register Brugernavn er %s" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "Brugernavnet skal mindst være %d bogstaver langt." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "Brugernavnet skal være mindre end %d bogstaver langt." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "Adgangskoden skal mindst være %d bogstaver langt." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "Adgangskoden skal være mindre end %d bogstaver langt." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "De indtastede adgangskoder stemmer ikke overens." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Fejl" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Lyd" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Lydstyrke pÃ¥ effekter" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Lydstyrke pÃ¥ musik" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Anvend" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Nulstil Vinduer" @@ -907,395 +605,304 @@ msgid "Keyboard" msgstr "Tastatur" #: src/gui/setup.cpp:94 -#, fuzzy -msgid "Colors" -msgstr "Farver:" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "Brugere" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -#, fuzzy -msgid "Green: " -msgstr "Til stede: " +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Lyd" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Lydstyrke pÃ¥ effekter" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Lydstyrke pÃ¥ musik" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Tryk pÃ¥ knappen for at starte justeringen." -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Justering" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Aktiver joystick" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Stop" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Rotere joysticket" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "Tildel" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "Standart" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "Tast Konfikt(er) Opdaget." -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "Løs problemet, ellers kan spillet risikere at opfører sig ustabilt." -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "Navn:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "Relation" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "Neutral" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "Ven" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "Se bort fra" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "Ignorer" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "???" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "Gem bruger liste" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "Tillad handel" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "Tillad hviskere" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "NÃ¥r ignorer:" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "Ingen opsætning tilgængelig" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "Alle opløsninger er tilgængelige" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Fuld Skærm" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Brugerdefineret Musepil" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "Partikel effekter" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "Snakke bobler" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "Vis navn" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "FPS grænse:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Gennemsigtighed" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Følsomhed pÃ¥ mus" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "Acceleration pÃ¥ mus" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Omgivende FX" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "Partikel Detalje" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "fra" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "lav" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "høj" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "mellem" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "maks" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "Fejlede i at skifte til " - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "vinduet" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Fuld Skærm" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "opsætning og genoprettelse af gammel opsætning fejlede ogsÃ¥!" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Skifter til fuld skærm" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "Ændringerne kræver at du genstarter klienten." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Skrifter til OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "Ændringerne til OpenGL kræver at du genstarter klienten." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "Skærm opløsning ændret" - -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "Ændringerne kræver at du genstarter klienten." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "Partikel effekt opsætningen er ændret" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "Ændringerne kræver at du genstarter klienten, eller skifter bane." - -#: src/gui/skill.cpp:41 -msgid "skills.xml" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "Færdigheds points: %d" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "Op" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "inc" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Brug" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "Fejl under loading af færdigheds fil: %s" - -#: src/gui/speechbubble.cpp:35 -#, fuzzy -msgid "Speech" -msgstr "Snakke" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "Karriere: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "Penge: %d GP" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "Karriere: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "Status" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "Total" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "Pris" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 #, fuzzy msgid "Attack:" msgstr "Angrib:" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 #, fuzzy msgid "Defense:" msgstr "Forsvar:" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 #, fuzzy msgid "M.Attack:" msgstr "M.Angrib:" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 #, fuzzy msgid "M.Defense:" msgstr "M.Forsvar:" -#: src/gui/status.cpp:81 -#, fuzzy, c-format +#: src/gui/status.cpp:137 +#, fuzzy, no-c-format msgid "% Accuracy:" msgstr "% Nøjagtighed:" -#: src/gui/status.cpp:82 -#, fuzzy, c-format +#: src/gui/status.cpp:139 +#, fuzzy, no-c-format msgid "% Evade:" msgstr "% Undvig:" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "% Refleks:" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "Styrke" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "Adræthed" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "Helbred" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "Intelligens" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "Behændighed" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "Held" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "Tilgode Status Points: %d" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "Handel: Dig" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "Handel" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Tilføj" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "Handel" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Du fÃ¥r %d GP." @@ -1304,985 +911,696 @@ msgstr "Du fÃ¥r %d GP." msgid "You give:" msgstr "Du giver:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" "Fejlede i at tilføje genstand. Du kan ikke overlappe en slags genstand pÃ¥ " "vinduet." -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "Kunne ikke loade tekst fil: %s" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "Updatere..." -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "Spil" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "Kunne ikke loade nyhederne" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "curl fejl " - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr " host: " - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "Checksum for fil %s fejlede: (%lx/%lx)" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "Kunne ikke skabe mThread" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "##1 Opdateringsprocessen er ikke færdiggjort" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "##1 Det er varmt anbefalet at" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "##1 du prøver igen senere" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "%s allerede her" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "Udført" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "Besked" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" -"Du bære pÃ¥ mere en halvdelen af din vægt. Du kan derfor ikke genvinde liv." +#: src/main.cpp:778 +msgid "Got disconnected from server!" +msgstr "Blev smidt af serveren!" -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "Du er død." +#: src/main.cpp:965 +#, fuzzy +msgid "Connecting to map server..." +msgstr "Opretter forbindelse til bane serveren..." -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" -"Vi er ked af at mÃ¥tte informere dig, om at din karakter var dræbt i kamp." +#: src/main.cpp:973 +msgid "Connecting to character server..." +msgstr "Opretter forbindelse til karakter serveren..." -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "Du er ikke sÃ¥ levende som du engang har været." +#: src/main.cpp:981 +msgid "Connecting to account server..." +msgstr "Opretter forbindelse til bruger serveren..." -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "De kolder hænder der tilhøre Grim Reaper, griber ud efter din sjæl" +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" +msgstr "Unavngivet" -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "Game Over!" +#, fuzzy +#~ msgid "Chat" +#~ msgstr "Chat" -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "Indsæt en mønt for at fortsætte" +#~ msgid "Welcome" +#~ msgstr "Velkommen" -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" -"Nej, børn. Din karakter døde ikke rigtigt. Den.. err... tog til et bedre " -"sted." +#~ msgid "Trying to send a blank party message." +#~ msgstr "Prøver at sende en blank gruppe besked." -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "Din plan om at smadre fjendens vÃ¥ben, ved at benytte din hals fejlede." +#~ msgid "Return toggles chat." +#~ msgstr "Retur bringer focus pÃ¥ chatten." -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "Jeg gÃ¥r ud fra at dette ikke gik alt for godt." +#~ msgid "Message closes chat." +#~ msgstr "Besked lukker chat." -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "Du vil gerne have dine ejendele identificeret?" +#~ msgid "Return now toggles chat." +#~ msgstr "Enter bringer nu focus pÃ¥ chatten." -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "Desværre, blev der aldrig fundet noget spor efter dig..." +#~ msgid "Message now closes chat." +#~ msgstr "Besked lukker nu chat." -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "Udslettet." +#~ msgid "" +#~ "Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." +#~ msgstr "" +#~ "Mulighederne til /toggle er \"yes\", \"no\", \"true\", \"false\", \"1\", " +#~ "\"0\"." -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "Det ser ud til at du fik du hoved udleveret til dig." +#~ msgid "" +#~ "Unknown party command... Type \"/help party\" party for more information." +#~ msgstr "" +#~ "Ukendt gruppe kommando... Skriv \"/help party\" for mere information." -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "Du kvajede dig igen, smid din krop ned i kloakken og find dig en ny." +#~ msgid "No such spell!" +#~ msgstr "Trylleformularen findes ikke!" -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "Du er ikke død endnu. Du hviler dig bare." +#~ msgid "The current server doesn't support spells" +#~ msgstr "Den nuværende server understøtter ikke trylleformulare" -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "Du er ikke mere." +#~ msgid "Present: " +#~ msgstr "Til stede: " -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "Du er holdt op med at være til." +#~ msgid "Attendance written to record log." +#~ msgstr "Fremmøde skrives til loggen" -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "Du er udløbet og er gÃ¥et hen for at møde din skaber." +#~ msgid "The current party prefix is " +#~ msgstr "Det nuværende gruppe præfiks er " -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "Du er en hÃ¥rd nød at knække, men desværre død." +#~ msgid "Party prefix must be one character long." +#~ msgstr "Gruppens præfiks skal være et bogstav langt. " -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "Du siver langtsomt ud af din krop, du kan nu endelig slappe af." +#~ msgid "Cannot use a '/' as the prefix." +#~ msgstr "Kan ikke bruge '/' som præfikset" -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" -"Hvis det ikke var fordi du var sÃ¥ animeret, kunne du sikker imponere Chuck " -"Norris." +#, fuzzy +#~ msgid "Changing prefix to " +#~ msgstr "Ændre præfikset til " -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "Din tid er ovre." +#~ msgid "/msg <nick> <message>: Alternate form for /whisper" +#~ msgstr "/msg <navn> <besked>: Alternativ form for /whisper" -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "Drik noget syre." +#~ msgid "/present: Get list of players present" +#~ msgstr "/present: FÃ¥r listen af tilstedeværende brugere" -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "Du har stillet træskoene." +#~ msgid "/toggle: Determine whether <return> toggles the chat log." +#~ msgstr "/toggle: Bestemmer om <retur> bringer focus pÃ¥ chat loggen." -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "Du har spist af dødens pølse for den sidste gang." +#~ msgid "Command: /present" +#~ msgstr "Kommando: /present" -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "Du er en forhenværende spiller." +#~ msgid "" +#~ "This command gets a list of players within hearing and sends it to either " +#~ "the record log if recording, or the chat log otherwise." +#~ msgstr "" +#~ "Denne kommando finder en liste over brugere, der er inden for en " +#~ "lytteradius, og sender listen til enten record loggen, hvis du optager, " +#~ "ellers er det chat loggen." -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "Du er tabt bag en vogn." +#~ msgid "Command: /toggle <state>" +#~ msgstr "Kommando /toggle <tilstand>" -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "Du samlede op " +#~ msgid "" +#~ "This command sets whether the return key should toggle the chat log, or " +#~ "whether the chat log turns off automatically." +#~ msgstr "" +#~ "Denne kommando bestemmer om retur, skal bruges til at fokusere pÃ¥ chat " +#~ "loggen, ellerom chat om chat loggen, automatisk skal slÃ¥ fra." -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "Tag først pile pÃ¥" +#~ msgid "" +#~ "<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or " +#~ "\"0\", \"no\", \"false\" to turn the toggle off." +#~ msgstr "" +#~ "<tilstand> kan være en ud af \"1\", \"yes\", \"true\" for at slÃ¥ " +#~ "fokusering af chat vindue til, eller \"0\", \"no\", \"false\" for at slÃ¥ " +#~ "fokusering af chat vindue fra." -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "0x013b: Unbehandlet besked %i" +#~ msgid "Command: /toggle" +#~ msgstr "Kommando: /toggle" -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "Ansøg om lov til at handle" +#~ msgid "This command displays the return toggle status." +#~ msgstr "Denne kommando viser fokusering af chat vinduets status." -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr " vil gerne handle med dig, vil du acceptere?" +#~ msgid "Command: /msg <nick> <msg>" +#~ msgstr "Kommando: /msg <navn> <besked>" -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "Du kan ikke handle. Handle partneren er for langt væk." +#~ msgid "GM" +#~ msgstr "GM" -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "Du kan ikke handle. Karakteren findes ikke." +#~ msgid "Player" +#~ msgstr "Bruger" -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "Handlen blev annulleret af en ukendt grund." +#~ msgid "Whisper" +#~ msgstr "Hvisk" -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "Handel: Dig og " +#~ msgid "Is" +#~ msgstr "Er" -#: src/net/tradehandler.cpp:127 #, fuzzy -msgid "Trade with " -msgstr "Handel med " +#~ msgid "Party" +#~ msgstr "Gruppe" -#: src/net/tradehandler.cpp:128 #, fuzzy -msgid " cancelled" -msgstr " afbrudt" +#~ msgid "Server" +#~ msgstr "Server" -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "Ubehandlet handel annullerede pakken" +#~ msgid "Logger" +#~ msgstr "Logger" -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "Fejlede i at tilføje genstand. Handels partneren bære pÃ¥ for meget." +#~ msgid "Hyperlink" +#~ msgstr "Hyperlink" -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" -"Fejlede i at tilføje genstand. Handels partneren har ikke flere frie pladser." +#~ msgid "Unable to load selection.png" +#~ msgstr "Kan ikke loade valgte-billede.png" -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "Fejlede i at tilføje genstand af en ukendt grund." +#~ msgid "Emote" +#~ msgstr "Emote" -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "Handel annulleret." +#~ msgid " g Slots: " +#~ msgstr " g Pladser: " -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "Handel er komplet." +#~ msgid " g Slots: " +#~ msgstr " g Pladser: " -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "Prøver TMW's farve fil, %s." +#~ msgid "Port:" +#~ msgstr "Port:" -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "ColorDB: Fejlede" +#~ msgid "Keep" +#~ msgstr "Behold" -#: src/resources/colordb.cpp:83 -#, fuzzy, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "ColorDB: Ny definition af genstand ID %d" +#, fuzzy +#~ msgid "Map" +#~ msgstr "MiniKort" -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "Udlæser farve database..." +#~ msgid "@@friend|Befriend " +#~ msgstr "@@friend|Bliv ven med " -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "ColorDB: Fejl, ukendt dye ID# %d" +#~ msgid "@@disregard|Disregard " +#~ msgstr "@@disregard|Se bort fra " -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "startede emote database..." +#~ msgid "@@ignore|Ignore " +#~ msgstr "@@ignore|Bloker " -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "Emote Database: Fejl under læsning af emotes.xml!" +#~ msgid "@@unignore|Un-Ignore " +#~ msgstr "@@unignore|Fjern blokering " -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "Emote Database: Emote med manglende ID i emotes.xml!" +#~ msgid "@@ignore|Completely ignore " +#~ msgstr "@@ignore|Bloker fuldstændig " -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "EmoteDB: Warning, unknown emote ID %d requested" +#~ msgid "@@party-invite|Invite " +#~ msgstr "@@party-invite|Inviter " -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "Startede genstans database..." +#~ msgid "RegisterDialog::register Username is %s" +#~ msgstr "RegisterDialog::register Brugernavn er %s" -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" +#, fuzzy +#~ msgid "Colors" +#~ msgstr "Farver:" -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "ItemDB: Fejl under læsningen af items.xml!" +#, fuzzy +#~ msgid "Color:" +#~ msgstr "Farve:" -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "ItemDB: Ugyldig eller manglende genstand ID i items.xml!" +#~ msgid "???" +#~ msgstr "???" -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "ItemDB: Ny definition af genstand ID %d" +#~ msgid "No modes available" +#~ msgstr "Ingen opsætning tilgængelig" -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "Unavngivet" +#~ msgid "All resolutions available" +#~ msgstr "Alle opløsninger er tilgængelige" -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" +#~ msgid "Particle effects" +#~ msgstr "Partikel effekter" -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "Udlæser genstands databasen..." +#~ msgid "Speech bubbles" +#~ msgstr "Snakke bobler" -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "ItemDB: Fejl, ukendt genstand ID# %d" +#~ msgid "Show name" +#~ msgstr "Vis navn" -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "ItemDB: Ignorerer ukendt lyd begivenhed '%s'" +#~ msgid "Failed to switch to " +#~ msgstr "Fejlede i at skifte til " -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "unavngivet" +#~ msgid "windowed" +#~ msgstr "vinduet" -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "Starter monster database..." +#, fuzzy +#~ msgid "fullscreen" +#~ msgstr "Fuld Skærm" -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" +#~ msgid "mode and restoration of old mode also failed!" +#~ msgstr "opsætning og genoprettelse af gammel opsætning fejlede ogsÃ¥!" -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "Monster Database: Fejl under indlæsningen ad monster.xml!" +#~ msgid "Couldn't set " +#~ msgstr "Kunne ikke definere " -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" -"MonsterDB: Ukendt mÃ¥l mus skriver \"%s\" for %s - at bruge en mellem størelse" +#~ msgid " video mode: " +#~ msgstr " skærm opsætning: " -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" -"MonsterDB: Advarsel, lyd effekt %s for ukendt begivenhed %s af monster %s" +#~ msgid "Screen resolution changed" +#~ msgstr "Skærm opløsning ændret" -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "MonsterDB: Advarsel, ukendt monster ID %d efterspurgt" +#, fuzzy +#~ msgid "Restart your client for the change to take effect." +#~ msgstr "Ændringerne kræver at du genstarter klienten." -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "Starter NPC database..." +#~ msgid "Particle effect settings changed" +#~ msgstr "Partikel effekt opsætningen er ændret" -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "NPC Database: Fejl under indlæsning af npcs.xml!" +#, fuzzy +#~ msgid "Restart your client or change maps for the change to take effect." +#~ msgstr "Ændringerne kræver at du genstarter klienten, eller skifter bane." -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "NPC Database: NPC med manglende ID i npcs.xml!" +#~ msgid "inc" +#~ msgstr "inc" -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "NPCDB: Advarsel, ukendt NPC ID %d efterspurgt" +#, fuzzy +#~ msgid "use" +#~ msgstr "Brug" -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "Skærmbillede gemt under ~/" +#~ msgid "Error loading skills file: %s" +#~ msgstr "Fejl under loading af færdigheds fil: %s" -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "Gemningen af skærmbilledet fejlede!" +#~ msgid "Message" +#~ msgstr "Besked" -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "Fejl: kunne ikke gemme skærmbilledet." +#~ msgid "Trade: You" +#~ msgstr "Handel: Dig" -#: src/game.cpp:471 -msgid "Network Error" -msgstr "Netværk Fejl" +#~ msgid "Couldn't load text file: %s" +#~ msgstr "Kunne ikke loade tekst fil: %s" -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "Forbindelsen til serveren er tabt, programmet vil nu lukke" +#~ msgid "Couldn't load news" +#~ msgstr "Kunne ikke loade nyhederne" -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Er du sikker pÃ¥ at du gerne vil stoppe?" +#~ msgid "curl error " +#~ msgstr "curl fejl " -#: src/game.cpp:610 -msgid "no" -msgstr "nej" +#~ msgid " host: " +#~ msgstr " host: " -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "Ignorer indkomne handels anmodninger" +#~ msgid "Checksum for file %s failed: (%lx/%lx)" +#~ msgstr "Checksum for fil %s fejlede: (%lx/%lx)" -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "Accepter indkomne handels anmodninger" +#~ msgid "Unable to create mThread" +#~ msgstr "Kunne ikke skabe mThread" -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "Advarsel: guichan indput untagelse: %s" +#~ msgid "##1 The update process is incomplete." +#~ msgstr "##1 Opdateringsprocessen er ikke færdiggjort" -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" +#~ msgid "##1 It is strongly recommended that" +#~ msgstr "##1 Det er varmt anbefalet at" -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" +#~ msgid "##1 you try again later" +#~ msgstr "##1 du prøver igen senere" -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" +#~ msgid "%s already here" +#~ msgstr "%s allerede her" -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" +#~ msgid "" +#~ "You are carrying more then half your weight. You are unable to regain " +#~ "health." +#~ msgstr "" +#~ "Du bære pÃ¥ mere en halvdelen af din vægt. Du kan derfor ikke genvinde liv." -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Angrib:" +#~ msgid "You are dead." +#~ msgstr "Du er død." -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" +#~ msgid "We regret to inform you that your character was killed in battle." +#~ msgstr "" +#~ "Vi er ked af at mÃ¥tte informere dig, om at din karakter var dræbt i kamp." -#: src/keyboardconfig.cpp:48 -#, fuzzy -msgid "Talk" -msgstr "Total" +#~ msgid "You are not that alive anymore." +#~ msgstr "Du er ikke sÃ¥ levende som du engang har været." -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Angrib:" +#~ msgid "The cold hands of the grim reaper are grabbing for your soul." +#~ msgstr "De kolder hænder der tilhøre Grim Reaper, griber ud efter din sjæl" -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" +#~ msgid "Game Over!" +#~ msgstr "Game Over!" -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -#, fuzzy -msgid "Target Player" -msgstr "Bruger" +#~ msgid "Insert coin to continue" +#~ msgstr "Indsæt en mønt for at fortsætte" -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" +#~ msgid "" +#~ "No, kids. Your character did not really die. It... err... went to a " +#~ "better place." +#~ msgstr "" +#~ "Nej, børn. Din karakter døde ikke rigtigt. Den.. err... tog til et bedre " +#~ "sted." -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Nulstil Vinduer" +#~ msgid "" +#~ "Your plan of breaking your enemies weapon by bashing it with your throat " +#~ "failed." +#~ msgstr "" +#~ "Din plan om at smadre fjendens vÃ¥ben, ved at benytte din hals fejlede." -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Opdel" +#~ msgid "I guess this did not run too well." +#~ msgstr "Jeg gÃ¥r ud fra at dette ikke gik alt for godt." -#: src/keyboardconfig.cpp:56 -#, fuzzy -msgid "Screenshot" -msgstr "Skærmbillede gemt under ~/" +#~ msgid "Do you want your possessions identified?" +#~ msgstr "Du vil gerne have dine ejendele identificeret?" -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" +#~ msgid "Sadly, no trace of you was ever found..." +#~ msgstr "Desværre, blev der aldrig fundet noget spor efter dig..." -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" +#~ msgid "Annihilated." +#~ msgstr "Udslettet." -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Genvej" +#~ msgid "Looks like you got your head handed to you." +#~ msgstr "Det ser ud til at du fik du hoved udleveret til dig." -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Nulstil Vinduer" +#~ msgid "" +#~ "You screwed up again, dump your body down the tubes and get you another " +#~ "one." +#~ msgstr "" +#~ "Du kvajede dig igen, smid din krop ned i kloakken og find dig en ny." -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Status" +#~ msgid "You're not dead yet. You're just resting." +#~ msgstr "Du er ikke død endnu. Du hviler dig bare." -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventarliste" +#~ msgid "You are no more." +#~ msgstr "Du er ikke mere." -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Udstyr" +#~ msgid "You have ceased to be." +#~ msgstr "Du er holdt op med at være til." -#: src/keyboardconfig.cpp:75 -#, fuzzy -msgid "Skill Window" -msgstr "Færdigheds points: %d" +#~ msgid "You've expired and gone to meet your maker." +#~ msgstr "Du er udløbet og er gÃ¥et hen for at møde din skaber." -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" +#~ msgid "You're a stiff." +#~ msgstr "Du er en hÃ¥rd nød at knække, men desværre død." -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Nulstil Vinduer" +#~ msgid "Bereft of life, you rest in peace." +#~ msgstr "Du siver langtsomt ud af din krop, du kan nu endelig slappe af." -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" +#~ msgid "If you weren't so animated, you'd be pushing up the daisies." +#~ msgstr "" +#~ "Hvis det ikke var fordi du var sÃ¥ animeret, kunne du sikker imponere " +#~ "Chuck Norris." -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Nulstil Vinduer" +#~ msgid "Your metabolic processes are now history." +#~ msgstr "Din tid er ovre." -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Nulstil Vinduer" +#~ msgid "You're off the twig." +#~ msgstr "Drik noget syre." -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Emote fejlede!" +#~ msgid "You've kicked the bucket." +#~ msgstr "Du har stillet træskoene." -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" +#~ msgid "" +#~ "You've shuffled off your mortal coil, run down the curtain and joined the " +#~ "bleedin' choir invisibile." +#~ msgstr "Du har spist af dødens pølse for den sidste gang." -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Genvej" +#~ msgid "You are an ex-player." +#~ msgstr "Du er en forhenværende spiller." -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" +#~ msgid "You're pining for the fjords." +#~ msgstr "Du er tabt bag en vogn." -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" +#~ msgid "You picked up " +#~ msgstr "Du samlede op " -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" +#~ msgid "Equip arrows first" +#~ msgstr "Tag først pile pÃ¥" -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Vælg Server" +#~ msgid "0x013b: Unhandled message %i" +#~ msgstr "0x013b: Unbehandlet besked %i" -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "Fejl: Ugyldigt opdaterings host: %s" +#~ msgid "Request for trade" +#~ msgstr "Ansøg om lov til at handle" -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "Ugyldigt opdaterings host: " +#~ msgid " wants to trade with you, do you accept?" +#~ msgstr " vil gerne handle med dig, vil du acceptere?" -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "Advarsel: ingen protocol var aktiv som opdate host" +#~ msgid "Trading isn't possible. Trade partner is too far away." +#~ msgstr "Du kan ikke handle. Handle partneren er for langt væk." -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "Fejl: %s kan ikke laves, men findes ikke!" +#~ msgid "Trading isn't possible. Character doesn't exist." +#~ msgstr "Du kan ikke handle. Karakteren findes ikke." -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "Fejl under oprettelsen af opdateringen mappen!" +#~ msgid "Trade cancelled due to an unknown reason." +#~ msgstr "Handlen blev annulleret af en ukendt grund." -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "Fejl: %s/%s kan ikke laves, men findes ikke!" +#~ msgid "Trade: You and " +#~ msgstr "Handel: Dig og " -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr " kan ikke laves, men det findes ikke! Lukker." +#, fuzzy +#~ msgid "Trade with " +#~ msgstr "Handel med " -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "Starter Aethyra Version %s" +#, fuzzy +#~ msgid " cancelled" +#~ msgstr " afbrudt" -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "Starter Aethyra - Version er ikke defineret" +#~ msgid "Unhandled trade cancel packet" +#~ msgstr "Ubehandlet handel annullerede pakken" -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "Starter SDL..." +#~ msgid "Failed adding item. Trade partner is over weighted." +#~ msgstr "Fejlede i at tilføje genstand. Handels partneren bære pÃ¥ for meget." -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "Kunne ikke starte SDL: " +#~ msgid "Failed adding item. Trade partner has no free slot." +#~ msgstr "" +#~ "Fejlede i at tilføje genstand. Handels partneren har ikke flere frie " +#~ "pladser." -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr " kunne ikke blive sat til hjemmemappen! Lukker." +#~ msgid "Failed adding item for unknown reason." +#~ msgstr "Fejlede i at tilføje genstand af en ukendt grund." -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "Kan ikke finde ressourcernes mappe\n" +#~ msgid "Trade canceled." +#~ msgstr "Handel annulleret." -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "Starter configurationen..." +#~ msgid "Trade completed." +#~ msgstr "Handel er komplet." -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "Kunne ikke definere " +#~ msgid "Trying TMW's color file, %s." +#~ msgstr "Prøver TMW's farve fil, %s." -#: src/main.cpp:427 -msgid " video mode: " -msgstr " skærm opsætning: " +#~ msgid "ColorDB: Failed" +#~ msgstr "ColorDB: Fejlede" -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "Advarsel: %s" +#~ msgid "Unloading color database..." +#~ msgstr "Udlæser farve database..." -#: src/main.cpp:499 -msgid "aethyra" -msgstr "aethyra" +#~ msgid "ColorDB: Error, unknown dye ID# %d" +#~ msgstr "ColorDB: Fejl, ukendt dye ID# %d" -#: src/main.cpp:500 -msgid "Options: " -msgstr "Opsætning: " +#~ msgid "Initializing emote database..." +#~ msgstr "startede emote database..." -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr " -C --configfile : Configurations fil til brug" +#~ msgid "Emote Database: Error while loading emotes.xml!" +#~ msgstr "Emote Database: Fejl under læsning af emotes.xml!" -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr " -d --data : Mappen at indlæse spillets data fra" +#~ msgid "Emote Database: Emote with missing ID in emotes.xml!" +#~ msgstr "Emote Database: Emote med manglende ID i emotes.xml!" -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" -" -D --default : Overskriv login processen med normale indstillinger" +#~ msgid "EmoteDB: Warning, unknown emote ID %d requested" +#~ msgstr "EmoteDB: Warning, unknown emote ID %d requested" -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr " -h --help : Viser denne hjælp" +#~ msgid "Initializing item database..." +#~ msgstr "Startede genstans database..." -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr " -H --updatehost : Brug denne opdaterings host" +#~ msgid "Unknown item" +#~ msgstr "Ukendt genstand" -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr " -p --playername : Logind med denne bruger" +#~ msgid "ItemDB: Error while loading items.xml!" +#~ msgstr "ItemDB: Fejl under læsningen af items.xml!" -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr " -P --password : Logind med denne adgangskode" +#~ msgid "ItemDB: Invalid or missing item ID in items.xml!" +#~ msgstr "ItemDB: Ugyldig eller manglende genstand ID i items.xml!" -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr " -u --skipupdate : Spring opdateringerne over" +#~ msgid "ItemDB: Redefinition of item ID %d" +#~ msgstr "ItemDB: Ny definition af genstand ID %d" -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr " -U --username : Logind med dette brugernavn" +#~ msgid "Unloading item database..." +#~ msgstr "Udlæser genstands databasen..." -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr " -v --version : Viser den nuværende version" +#~ msgid "ItemDB: Error, unknown item ID# %d" +#~ msgstr "ItemDB: Fejl, ukendt genstand ID# %d" -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "Aethyra version " +#~ msgid "ItemDB: Ignoring unknown sound event '%s'" +#~ msgstr "ItemDB: Ignorerer ukendt lyd begivenhed '%s'" -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "(lokalt build?, PACKAGE_VERSION er ikke defineret)" +#~ msgid "unnamed" +#~ msgstr "unavngivet" -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Prøver at opretter forbindelse til bruger serveren..." +#~ msgid "Initializing monster database..." +#~ msgstr "Starter monster database..." -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "Brugernavn er %s" +#~ msgid "Monster Database: Error while loading monster.xml!" +#~ msgstr "Monster Database: Fejl under indlæsningen ad monster.xml!" -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Prøver at oprette forbindelse til karakter serveren..." +#~ msgid "" +#~ "MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized " +#~ "one" +#~ msgstr "" +#~ "MonsterDB: Ukendt mÃ¥l mus skriver \"%s\" for %s - at bruge en mellem " +#~ "størelse" -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "Husk den valgte karakter %s" +#~ msgid "" +#~ "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" +#~ msgstr "" +#~ "MonsterDB: Advarsel, lyd effekt %s for ukendt begivenhed %s af monster %s" -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Prøver at oprette forbindelse til bane serveren..." +#~ msgid "MonsterDB: Warning, unknown monster ID %d requested" +#~ msgstr "MonsterDB: Advarsel, ukendt monster ID %d efterspurgt" -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Bane; %s" +#~ msgid "Initializing NPC database..." +#~ msgstr "Starter NPC database..." -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "Kunne ikke indlæse %s som background" +#~ msgid "NPC Database: Error while loading npcs.xml!" +#~ msgstr "NPC Database: Fejl under indlæsning af npcs.xml!" -#: src/main.cpp:863 -msgid "Got disconnected from server!" -msgstr "Blev smidt af serveren!" +#~ msgid "NPC Database: NPC with missing ID in npcs.xml!" +#~ msgstr "NPC Database: NPC med manglende ID i npcs.xml!" -#: src/main.cpp:1068 -#, fuzzy -msgid "Connecting to map server..." -msgstr "Opretter forbindelse til bane serveren..." +#~ msgid "NPCDB: Warning, unknown NPC ID %d requested" +#~ msgstr "NPCDB: Advarsel, ukendt NPC ID %d efterspurgt" -#: src/main.cpp:1076 -msgid "Connecting to character server..." -msgstr "Opretter forbindelse til karakter serveren..." +#~ msgid "Screenshot saved to ~/" +#~ msgstr "Skærmbillede gemt under ~/" -#: src/main.cpp:1084 -msgid "Connecting to account server..." -msgstr "Opretter forbindelse til bruger serveren..." +#~ msgid "Saving screenshot failed!" +#~ msgstr "Gemningen af skærmbilledet fejlede!" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" +#~ msgid "Error: could not save screenshot." +#~ msgstr "Fejl: kunne ikke gemme skærmbilledet." -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" +#~ msgid "Network Error" +#~ msgstr "Netværk Fejl" -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" +#~ msgid "The connection to the server was lost, the program will now quit" +#~ msgstr "Forbindelsen til serveren er tabt, programmet vil nu lukke" -#: src/party.cpp:84 -msgid "Left party." -msgstr "" +#~ msgid "Ignoring incoming trade requests" +#~ msgstr "Ignorer indkomne handels anmodninger" -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" +#~ msgid "Accepting incoming trade requests" +#~ msgstr "Accepter indkomne handels anmodninger" -#: src/party.cpp:97 #, fuzzy -msgid "Could not create party." -msgstr "Kunne ikke tilslutte sig gruppen!" +#~ msgid "Are you sure you want to quit?" +#~ msgstr "Er du sikker pÃ¥ at du gerne vil stoppe?" -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" +#~ msgid "no" +#~ msgstr "nej" -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" +#~ msgid "Warning: guichan input exception: %s" +#~ msgstr "Advarsel: guichan indput untagelse: %s" -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" +#~ msgid "Error: Invalid update host: %s" +#~ msgstr "Fejl: Ugyldigt opdaterings host: %s" -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" +#~ msgid "Invalid update host: " +#~ msgstr "Ugyldigt opdaterings host: " -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventarliste" +#~ msgid "Warning: no protocol was specified for the update host" +#~ msgstr "Advarsel: ingen protocol var aktiv som opdate host" -#: src/party.cpp:131 -#, fuzzy, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr " vil gerne handle med dig, vil du acceptere?" +#~ msgid "Error: %s/%s can't be made, but doesn't exist!" +#~ msgstr "Fejl: %s/%s kan ikke laves, men findes ikke!" -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" +#~ msgid "Error creating updates directory!" +#~ msgstr "Fejl under oprettelsen af opdateringen mappen!" -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" +#~ msgid " can't be created, but it doesn't exist! Exiting." +#~ msgstr " kan ikke laves, men det findes ikke! Lukker." -#: src/party.cpp:173 -#, fuzzy -msgid "Command: /party <command> <args>" -msgstr "Kommando: /help <kommando>" +#~ msgid "Initializing SDL..." +#~ msgstr "Starter SDL..." -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" +#~ msgid "Could not initialize SDL: " +#~ msgstr "Kunne ikke starte SDL: " -#: src/party.cpp:175 -msgid " /new" -msgstr "" +#~ msgid " couldn't be set as home directory! Exiting." +#~ msgstr " kunne ikke blive sat til hjemmemappen! Lukker." -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Opret" +#~ msgid "Can't find Resources directory\n" +#~ msgstr "Kan ikke finde ressourcernes mappe\n" -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" +#~ msgid "Initializing configuration..." +#~ msgstr "Starter configurationen..." -#: src/party.cpp:178 -msgid " /leave" -msgstr "" +#~ msgid "Warning: %s" +#~ msgstr "Advarsel: %s" -#: src/party.cpp:179 -#, fuzzy -msgid "This command implements the partying function." -msgstr "Denne kommando viser hjælp for <kommando>" +#~ msgid "aethyra" +#~ msgstr "aethyra" -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" +#~ msgid "Options: " +#~ msgstr "Opsætning: " -#: src/party.cpp:187 -#, fuzzy -msgid "Command: /party new <party-name>" -msgstr "Kommando /toggle <tilstand>" +#~ msgid " -C --configfile : Configuration file to use" +#~ msgstr " -C --configfile : Configurations fil til brug" -#: src/party.cpp:188 -#, fuzzy -msgid "Command: /party create <party-name>" -msgstr "Kommando /toggle <tilstand>" +#~ msgid " -d --data : Directory to load game data from" +#~ msgstr " -d --data : Mappen at indlæse spillets data fra" -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" +#~ msgid " -D --default : Bypass the login process with default settings" +#~ msgstr "" +#~ " -D --default : Overskriv login processen med normale indstillinger" -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" +#~ msgid " -h --help : Display this help" +#~ msgstr " -h --help : Viser denne hjælp" -#: src/party.cpp:196 -#, fuzzy -msgid "This command sets the party prefix character." -msgstr "Denne commando rydder chat loggen" +#~ msgid " -H --updatehost : Use this update host" +#~ msgstr " -H --updatehost : Brug denne opdaterings host" -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" +#~ msgid " -p --playername : Login with this player" +#~ msgstr " -p --playername : Logind med denne bruger" -#: src/party.cpp:200 -#, fuzzy -msgid "Command: /party prefix" -msgstr "Kommando: /present" +#~ msgid " -P --password : Login with this password" +#~ msgstr " -P --password : Logind med denne adgangskode" -#: src/party.cpp:201 -#, fuzzy -msgid "This command reports the current party prefix character." -msgstr "Denne commando rydder chat loggen" +#~ msgid " -u --skipupdate : Skip the update downloads" +#~ msgstr " -u --skipupdate : Spring opdateringerne over" -#: src/party.cpp:209 -#, fuzzy -msgid "Command: /party leave" -msgstr "Kommando: /present" +#~ msgid " -U --username : Login with this username" +#~ msgstr " -U --username : Logind med dette brugernavn" -#: src/party.cpp:210 -#, fuzzy -msgid "This command causes the player to leave the party." -msgstr "Denne kommando viser fokusering af chat vinduets status." +#~ msgid " -v --version : Display the version" +#~ msgstr " -v --version : Viser den nuværende version" -#: src/party.cpp:214 -#, fuzzy -msgid "Unknown /party command." -msgstr "Ukendt kommando" +#~ msgid "(local build?, PACKAGE_VERSION is not defined)" +#~ msgstr "(lokalt build?, PACKAGE_VERSION er ikke defineret)" -#: src/party.cpp:215 #, fuzzy -msgid "Type /help party for a list of options." -msgstr "Skriv /help for at fÃ¥ en liste med kommandoer" +#~ msgid "Trying to connect to account server..." +#~ msgstr "Prøver at opretter forbindelse til bruger serveren..." -#~ msgid "The current server doesn't support spells" -#~ msgstr "Den nuværende server understøtter ikke trylleformulare" +#~ msgid "Username is %s" +#~ msgstr "Brugernavn er %s" #, fuzzy -#~ msgid "Weight: %d g / %d g" -#~ msgstr "Vægt: %d g / %d g" +#~ msgid "Trying to connect to char server..." +#~ msgstr "Prøver at oprette forbindelse til karakter serveren..." -#, fuzzy -#~ msgid "Map" -#~ msgstr "MiniKort" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|Beskrivelse@@" +#~ msgid "Memorizing selected character %s" +#~ msgstr "Husk den valgte karakter %s" #, fuzzy -#~ msgid "%s whispers:" -#~ msgstr "Tillad hviskere" - -#~ msgid "Remember Username" -#~ msgstr "Husk Brugernavn" - -#~ msgid "Welcome" -#~ msgstr "Velkommen" - -#~ msgid " g Slots: " -#~ msgstr " g Pladser: " +#~ msgid "Trying to connect to map server..." +#~ msgstr "Prøver at oprette forbindelse til bane serveren..." #, fuzzy -#~ msgid "Color:" -#~ msgstr "Farve:" +#~ msgid "Map: %s" +#~ msgstr "Bane; %s" + +#~ msgid "Couldn't load %s as wallpaper" +#~ msgstr "Kunne ikke indlæse %s som background" #, fuzzy #~ msgid "Description:" @@ -2334,6 +1652,9 @@ msgstr "Skriv /help for at fÃ¥ en liste med kommandoer" #~ msgid "Please remove %d points" #~ msgstr "Du skal fjerne %d points" +#~ msgid "Split" +#~ msgstr "Opdel" + #~ msgid "Select amount of items to split." #~ msgstr "Vælg hvor mange genstande du vil opdele." @@ -2359,7 +1680,7 @@ msgstr "Skriv /help for at fÃ¥ en liste med kommandoer" #~ msgstr "E-mail:" #~ msgid "Choose your Mana World Server" -#~ msgstr "Vælg din Aethyra Server" +#~ msgstr "Vælg din Mana World Server" #~ msgid "Please type both the address and the port of a server." #~ msgstr "Skriv bÃ¥de adressen og porten pÃ¥ serveren." @@ -6,619 +6,428 @@ msgid "" msgstr "" "Project-Id-Version: The Mana World 0.1.0\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" -"PO-Revision-Date: 2009-01-19 20:15+0000\n" -"Last-Translator: Bjørn Lindeijer <bjorn@lindeijer.nl>\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" +"PO-Revision-Date: 2009-01-28 16:16+0000\n" +"Last-Translator: Philipp Sehmisch <Unknown>\n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-01-25 22:24+0000\n" +"X-Launchpad-Export-Date: 2009-02-12 19:04+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Kaufen" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Preis: %d GP / Summe: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Beenden" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Beschreibung: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Effekt: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "Geschäft" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Verkaufen" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Abbrechen" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "Bestätige Charakter-Löschung" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Bist du sicher, dass du diesen Charakter löschen möchtest?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Spielfigur auswählen" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Neu" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Löschen" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Zurück" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Weiter" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Name : %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "Stufe: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, c-format msgid "Job Level: %d" msgstr "" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Geld: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Neu" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Löschen" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Zurück" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Weiter" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "Gold: %d" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Charakter erstellen" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Name :" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Haarfarbe" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Frisur" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Erstellen" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 msgid "Select Server" msgstr "Server auswählen" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "Ok" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Erstellen" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " -msgstr "" +#: src/gui/chat.cpp:115 +msgid "Global announcement:" +msgstr "Globale Ansage:" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " -msgstr "" +msgid "Global announcement from %s:" +msgstr "Globale Ansage von %s:" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Server:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 +#, c-format +msgid "%s whispers:" +msgstr "%s flüstert:" + +#: src/gui/chat.cpp:276 #, c-format msgid "Whispering to %s: %s" msgstr "Flüsternd zu %s: %s" -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -#, fuzzy -msgid "Unknown item" -msgstr "Unbekannter Befehl" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." -msgstr "" - -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "Unbekannter Befehl" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "Handel fehlgeschlagen!" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "Emote fehlgeschlagen!" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "Sitzen fehlgeschlagen!" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "Chat-Erstellung fehlgeschlagen!" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" -msgstr "" +msgstr "Dein Level ist noch nicht hoch genug!" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" -msgstr "" +msgstr "Nicht genug HP!" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" -msgstr "" +msgstr "NIcht genug SP!" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "Du kannst dies momentan nicht tun!" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "Schmalhans ist dein Küchenmeister... ;-)" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "Du kannst diese Fähigkeit nicht mit dieser Waffenart benutzen!" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "Du brauchst noch einen roten Edelstein!" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "Du brauchst noch einen blauen Edelstein!" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "Du schleppst zuviel herum um das zu machen!" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "Eha? Was ist das?" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "Warp fehlgeschlagen..." -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "Konnte nichts stehlen..." -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "Das Gift hatte keine Wirkung..." -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Ändere OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "Unbekannter Befehl." -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "Hoch" - -#: src/gui/colour.cpp:34 -#, fuzzy -msgid "Player" -msgstr "Spieler" - -#: src/gui/colour.cpp:35 -#, fuzzy -msgid "Whisper" -msgstr "%s flüstert:" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Los!" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Server:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Ja" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Nein" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Verbinde..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Benutzen" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Ausrüstung" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Ablegen" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "Hilfe" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "Schließen" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventar" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Ausrüsten" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Benutzen" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Wegwerfen" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " -msgstr "" +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "Gewicht: %d / %d" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " -msgstr "" +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" +msgstr "Sockel benutzt: %d / %d" + +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Ablegen" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Ausrüsten" #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." @@ -628,244 +437,148 @@ msgstr "Wähle aus, wieviele Gegenstände Du tauschen möchtest." msgid "Select amount of items to drop." msgstr "Wähle aus, wieviele Gegenstände Du wegwerfen möchtest." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Anmelden" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Passwort:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Port:" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "Erinnern" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "Benutzernamen merken" -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Registrieren" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Status" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Fertigkeiten" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Tastenkürzel" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Einstellungen" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "Übersichtskarte" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Registrieren" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Mit %s handeln@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|%s angreifen@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, fuzzy, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "@@guild|%s einladen@@" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "@@party|%s in deine Gruppe einladen@@" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Mit NSC reden@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Abbrechen@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|%s aufheben@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" msgstr "" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Ausrüsten@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Nutzen@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Fallen lassen@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Verbinde..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Verbinde..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Verbinde..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|Beschreibung@@" -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Bestätigen:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "Männlich" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "Weiblich" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "Der Nutzername muss aus mindestens %d Zeichen bestehen." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "Der Nutzername muss kürzer als %d Zeichen sein." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "Das Passwort muss aus mindestens %d bestehen." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "Das Passwort muss kürzer als %d Zeichen sein." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Passwörter stimmen nicht überein." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Fehler" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Ton" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Lautstärke der Klangeffekte" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Latustärke der Musik" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Anwenden" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Fenster zurücksetzen" @@ -886,384 +599,293 @@ msgid "Keyboard" msgstr "Tastatur" #: src/gui/setup.cpp:94 -#, fuzzy -msgid "Colors" -msgstr "Schließen" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "Spieler" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Ton" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Lautstärke der Klangeffekte" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Latustärke der Musik" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Knopf drücken um die Kalibrierung zu starten" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Kalibrieren" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Joystick aktivieren" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Stopp" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Kreise den Steuerknüppel" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "Zuordnen" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 msgid "Default" msgstr "Standard" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." -msgstr "" +msgstr "Tastenkonflikte entdeckt." -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." -msgstr "" +msgstr "Bitte beheben, oder es wird zu merkwürdigem Verhalten im Spiel kommen." -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 msgid "Name" msgstr "Name" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "Beziehung" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "Neutral" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "Freund" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "Ignoriert" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "Spielerliste sichern" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "Handeln erlauben" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "Flüstern erlauben" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Vollbild" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Benutzerdefinierten Zeiger" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "FPS-Limit:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "GUI Transparenz" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Scroll-Radius" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "Scroll-Trägheit" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Hintergrundeffekte" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" -msgstr "" +msgstr "Partikeldetail" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "Aus" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "Niedrig" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "Hoch" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "Mittel" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "max" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Vollbild" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Wechsle zum Vollbildmodus" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "Änderungen treten erst nach einem Neustart des Programmes in Kraft." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Ändere OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "" "Änderungen an OpenGL werden erst nach einem Neustart der Anwendung " "übernommen." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "Änderungen treten erst nach einem Neustart des Programmes in Kraft." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "Änderungen treten erst nach einem Neustart des Programmes in Kraft." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Fertigkeiten" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" -msgstr "" +msgstr "Fähigkeitspunkte: %d" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "Erhöhen" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Benutzen" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, c-format msgid "Job: %d" msgstr "" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, c-format msgid "Money: %d GP" msgstr "Geld: %d GP" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 msgid "Job:" msgstr "" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 msgid "Stats" msgstr "Statistiken" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "Gesamt" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "Preis" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 msgid "Attack:" msgstr "Angriff:" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 msgid "Defense:" msgstr "Verteidigung:" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 msgid "M.Attack:" msgstr "M.Angriff:" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 msgid "M.Defense:" msgstr "M.Verteidigung:" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "% Genauigkeit" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "% Ausweichen:" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "% Reaktion:" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 msgid "Strength" msgstr "Stärke" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 msgid "Agility" msgstr "Beweglichkeit" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 msgid "Vitality" msgstr "Gesundheit" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 msgid "Intelligence" msgstr "Intelligenz" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 msgid "Dexterity" msgstr "Ausdauer" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "Glück" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" -msgstr "" - -#: src/gui/trade.cpp:49 -#, fuzzy -msgid "Trade: You" -msgstr "Handeln" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "Handeln" +msgstr "Verbleibende Statuspunkte: %d" #: src/gui/trade.cpp:61 msgid "Add" msgstr "Hinzufügen" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "Handeln" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Du erhälst %d GP." @@ -1272,951 +894,41 @@ msgstr "Du erhälst %d GP." msgid "You give:" msgstr "Du gibst:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "Aktualisiere..." -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "Los!" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "Fertig" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -#, fuzzy -msgid "You are not that alive anymore." -msgstr "Du kannst dies momentan nicht tun!" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -#, fuzzy -msgid "Trade with " -msgstr "Handeln" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Abbrechen" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -#, fuzzy -msgid "Trade canceled." -msgstr "Handel fehlgeschlagen!" - -#: src/net/tradehandler.cpp:214 -#, fuzzy -msgid "Trade completed." -msgstr "Fertig" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "Unbenannt" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -#, fuzzy -msgid "unnamed" -msgstr "Unbenannt" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -#, fuzzy -msgid "Saving screenshot failed!" -msgstr "Sitzen fehlgeschlagen!" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Bist du sicher, dass du diesen Charakter löschen möchtest?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Angriff:" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -#, fuzzy -msgid "Talk" -msgstr "Gesamt" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Angriff:" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -#, fuzzy -msgid "Target Player" -msgstr "Spieler" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Fenster zurücksetzen" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Aufteilen" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Tastenkürzel" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Fenster zurücksetzen" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Status" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventar" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Ausrüstung" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Fenster zurücksetzen" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Fenster zurücksetzen" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Fenster zurücksetzen" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Emote fehlgeschlagen!" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Tastenkürzel" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Server auswählen" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Verbinde zu [account server]..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Verbinde zu [character server]..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Verbinde zu [map server]..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Name : %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" -msgstr "" +msgstr "Verbindung zum Server unterbrochen!" -#: src/main.cpp:1068 +#: src/main.cpp:965 msgid "Connecting to map server..." msgstr "Verbinde zu [map server]..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "Verbinde zu [character server]..." -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "Verbinde zu [account server]..." -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -#, fuzzy -msgid "Could not create party." -msgstr "Konnte nichts stehlen..." - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventar" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Erstellen" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -#, fuzzy -msgid "Unknown /party command." -msgstr "Unbekannter Befehl." - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." -msgstr "" - -#, fuzzy -#~ msgid "Weight: %d g / %d g" -#~ msgstr "Gewicht: %d / %d" - -#~ msgid "Slots used: %d / %d" -#~ msgstr "Sockel benutzt: %d / %d" - -#, fuzzy -#~ msgid "Map" -#~ msgstr "Übersichtskarte" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|Beschreibung@@" - -#~ msgid "Remember Username" -#~ msgstr "Benutzernamen merken" +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" +msgstr "Unbenannt" #~ msgid "Change" #~ msgstr "Ändern" @@ -2239,6 +951,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "Bitte entferne %d Punkte" +#~ msgid "Split" +#~ msgstr "Aufteilen" + #~ msgid "Select amount of items to split." #~ msgstr "Wähle aus, wieviel Gegenstände Du aufteilen möchtest." @@ -2257,6 +972,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "Wähle Deinen Mana World Spielserver" +#~ msgid "Port:" +#~ msgstr "Port:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "Bitte die Adresse und den Port eines Servers eingeben" @@ -2281,6 +999,9 @@ msgstr "" #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "Gesamtgewicht : %d - Maximales Gewicht : %d" +#~ msgid "Keep" +#~ msgstr "Erinnern" + #~ msgid "Account and Character Management" #~ msgstr "Account- und Charakterverwaltung" @@ -2296,5 +1017,11 @@ msgstr "" #~ msgid "Guilds" #~ msgstr "Gilden" +#~ msgid "@@guild|Invite %s@@" +#~ msgstr "@@guild|%s einladen@@" + +#~ msgid "@@party|Invite %s to join your party@@" +#~ msgstr "@@party|%s in deine Gruppe einladen@@" + #~ msgid "Visible names" #~ msgstr "Sichtbare Namen" diff --git a/po/en_GB.po b/po/en_GB.po index 672445dd..c38967e9 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-05-10 16:51+0000\n" "Last-Translator: Me <Glich.Glich@googlemail.com>\n" "Language-Team: English (United Kingdom) <en_GB@li.org>\n" @@ -17,608 +17,420 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Buy" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Price: %d GP / Total: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Exit" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Description: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Effect: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 #, fuzzy msgid "Shop" msgstr "Stop" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Sell" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Cancel" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Are you sure you want to delete this character?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Select Character" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "New" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Delete" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Previous" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Next" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Name: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "Level: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "Level: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Money: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "New" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Delete" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Previous" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Next" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Create Character" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Name:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Hair Colour:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Hair Style:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Create" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 #, fuzzy msgid "Select Server" msgstr "Select Character" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Create" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Server:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Changing OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "high" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Port:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Server:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Yes" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "No" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Connecting..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Use" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Equipment" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Unequip" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventory" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Equip" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Use" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Drop" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Unequip" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Equip" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "Select amount of items to trade." @@ -627,245 +439,149 @@ msgstr "Select amount of items to trade." msgid "Select amount of items to drop." msgstr "Select amount of items to drop." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Login" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Password:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Port:" - -#: src/gui/login.cpp:55 -msgid "Recent:" +#: src/gui/login.cpp:50 +msgid "Remember Username" msgstr "" -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "Keep" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Register" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Status" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Skills" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Shortcut" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Setup" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "MiniMap" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Register" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Trade With %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|Attack %s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "Inventory" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Talk To NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Cancel@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|Pick Up %s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 #, fuzzy msgid "@@use|Unequip@@" msgstr "@@use|Equip@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Equip@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Use@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Drop@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Connecting..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Connecting..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|Description@@" -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Connecting..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Confirm:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "The username needs to be at least %d characters long." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "The username needs to be less than %d characters long." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "The password needs to be at least %d characters long." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "The password needs to be less than %d characters long." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Passwords do not match." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Error" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Sound" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Sfx volume" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Music volume" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Apply" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Reset Windows" @@ -886,393 +602,304 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "Colours" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Sound" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Sfx volume" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Music volume" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Press the button to start calibration" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Calibrate" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Enable joystick" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Stop" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Rotate the stick" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "Delete" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "Name:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Full screen" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Custom cursor" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "FPS Limit:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Gui opacity" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Scroll radius" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "Scroll laziness" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Ambient FX" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "off" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "low" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "high" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Full screen" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Switching to full screen" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "Restart needed for changes to take effect." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Changing OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "Applying change to OpenGL requires restart." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "Restart needed for changes to take effect." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "Restart needed for changes to take effect." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Skills" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Use" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "Level: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "Money: %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "Level: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "Status" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 #, fuzzy msgid "Attack:" msgstr "Attack %+d" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 #, fuzzy msgid "Defense:" msgstr "Defense %+d" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 #, fuzzy msgid "M.Attack:" msgstr "Attack %+d" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 #, fuzzy msgid "M.Defense:" msgstr "Defense %+d" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "Strength:" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "Agility:" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "Vitality:" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "Intelligence:" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "Dexterity:" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Add" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "You get %d GP." @@ -1281,933 +908,43 @@ msgstr "You get %d GP." msgid "You give:" msgstr "You give:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Cancel" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Are you sure you want to delete this character?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Attack %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Attack %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Reset Windows" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Split" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Shortcut" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Reset Windows" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Status" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventory" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Equipment" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Reset Windows" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Reset Windows" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Reset Windows" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Reset Windows" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Shortcut" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Select Character" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Connecting..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Connecting..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Connecting..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Name: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "Connecting..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventory" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Create" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#, fuzzy -#~ msgid "Map" -#~ msgstr "MiniMap" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|Description@@" - #~ msgid "Unregister" #~ msgstr "Unregister" @@ -2226,6 +963,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "Please remove %d points" +#~ msgid "Split" +#~ msgstr "Split" + #~ msgid "Select amount of items to split." #~ msgstr "Select amount of items to split." @@ -2244,6 +984,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "Choose your Mana World Server" +#~ msgid "Port:" +#~ msgstr "Port:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "Please type both the address and the port of a server." @@ -2270,3 +1013,6 @@ msgstr "" #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "Total Weight: %d - Maximum Weight: %d" + +#~ msgid "Keep" +#~ msgstr "Keep" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-11-10 22:03+0000\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: Esperanto <eo@li.org>\n" @@ -17,599 +17,416 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 -#, c-format -msgid "Name: %s" +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" msgstr "" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 -#, c-format -msgid "Level: %d" +#: src/gui/char_select.cpp:86 +msgid "New" msgstr "" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 -#, c-format -msgid "Job Level: %d" +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" msgstr "" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 -#, c-format -msgid "Money: %d" +#: src/gui/char_select.cpp:88 +msgid "Previous" msgstr "" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" +#: src/gui/char_select.cpp:89 +msgid "Next" msgstr "" -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 +#, c-format +msgid "Name: %s" msgstr "" -#: src/gui/char_select.cpp:99 -msgid "Previous" +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 +#, c-format +msgid "Level: %d" msgstr "" -#: src/gui/char_select.cpp:100 -msgid "Next" +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 +#, c-format +msgid "Job Level: %d" msgstr "" -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 +#, c-format +msgid "Money: %d" msgstr "" -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 msgid "Select Server" msgstr "" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -msgid "Chat" +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:146 -msgid "Global announcement: " -msgstr "" - -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -msgid "Changing prefix to " -msgstr "" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -msgid "Highlight" -msgstr "" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -msgid "Party" -msgstr "" - -#: src/gui/colour.cpp:38 -msgid "Server" -msgstr "" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "" -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" msgstr "" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" msgstr "" #: src/gui/item_amount.cpp:76 @@ -620,240 +437,147 @@ msgstr "" msgid "Select amount of items to drop." msgstr "" -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" +#: src/gui/login.cpp:50 +msgid "Remember Username" msgstr "" -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "" -#: src/gui/npcintegerdialog.cpp:33 -msgid "NPC Number Request" +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 -msgid "Reset" +#: src/gui/npcintegerdialog.cpp:38 +msgid "NPC Number Request" msgstr "" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" +#: src/gui/npcintegerdialog.cpp:45 +msgid "Reset" msgstr "" -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 +#: src/gui/popupmenu.cpp:81 #, c-format msgid "@@trade|Trade With %s@@" msgstr "" -#: src/gui/popupmenu.cpp:79 +#: src/gui/popupmenu.cpp:83 #, c-format msgid "@@attack|Attack %s@@" msgstr "" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" msgstr "" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" msgstr "" -#: src/gui/recorder.cpp:37 -msgid "Recorder" -msgstr "" - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -msgid "Already recording." -msgstr "" - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -msgid "Recording..." -msgstr "" - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "" -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "" @@ -874,375 +598,291 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " +#: src/gui/setup_audio.cpp:42 +msgid "Sound" msgstr "" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" msgstr "" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" msgstr "" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 msgid "Default" msgstr "" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 msgid "Name" msgstr "" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "fullscreen" -msgstr "" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "" -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "" -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -msgid "Restart your client for the change to take effect." -msgstr "" - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:418 -msgid "Restart your client or change maps for the change to take effect." -msgstr "" - -#: src/gui/skill.cpp:41 -msgid "skills.xml" -msgstr "" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -msgid "use" -msgstr "" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, c-format msgid "Job: %d" msgstr "" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, c-format msgid "Money: %d GP" msgstr "" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 msgid "Job:" msgstr "" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 msgid "Stats" msgstr "" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 msgid "Attack:" msgstr "" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 msgid "Defense:" msgstr "" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 msgid "M.Attack:" msgstr "" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 msgid "M.Defense:" msgstr "" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 msgid "Strength" msgstr "" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 msgid "Agility" msgstr "" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 msgid "Vitality" msgstr "" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 msgid "Intelligence" msgstr "" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 msgid "Dexterity" msgstr "" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" +#: src/gui/trade.cpp:61 +msgid "Add" msgstr "" -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 +#: src/gui/trade.cpp:64 msgid "Trade" msgstr "" -#: src/gui/trade.cpp:61 -msgid "Add" -msgstr "" - -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "" @@ -1251,901 +891,38 @@ msgstr "" msgid "You give:" msgstr "" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -msgid " cancelled" -msgstr "" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -msgid "Are you sure you want to quit?" -msgstr "" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -msgid "Attack" -msgstr "" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -msgid "Stop Attack" -msgstr "" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -msgid "Hide Windows" -msgstr "" - -#: src/keyboardconfig.cpp:55 -msgid "Sit" -msgstr "" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, c-format -msgid "Item Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:71 -msgid "Help Window" -msgstr "" - -#: src/keyboardconfig.cpp:72 -msgid "Status Window" -msgstr "" - -#: src/keyboardconfig.cpp:73 -msgid "Inventory Window" -msgstr "" - -#: src/keyboardconfig.cpp:74 -msgid "Equipment WIndow" -msgstr "" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -msgid "Chat Window" -msgstr "" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -msgid "Setup Window" -msgstr "" - -#: src/keyboardconfig.cpp:80 -msgid "Debug Window" -msgstr "" - -#: src/keyboardconfig.cpp:81 -msgid "Emote Window" -msgstr "" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, c-format -msgid "Emote Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -msgid "Select OK" -msgstr "" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -msgid "Trying to connect to account server..." -msgstr "" - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -msgid "Trying to connect to char server..." -msgstr "" - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -msgid "Trying to connect to map server..." -msgstr "" - -#: src/main.cpp:700 -#, c-format -msgid "Map: %s" -msgstr "" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 msgid "Connecting to map server..." msgstr "" -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -msgid "Invite to party" -msgstr "" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -msgid " /create" -msgstr "" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" @@ -6,618 +6,429 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" -"PO-Revision-Date: 2008-10-15 01:37+0000\n" -"Last-Translator: catalania <Unknown>\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" +"PO-Revision-Date: 2009-01-27 13:52+0000\n" +"Last-Translator: Habari <thomas.becerril@gmail.com>\n" "Language-Team: Spanish <es@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" +"X-Launchpad-Export-Date: 2009-02-12 19:04+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Comprar" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Precio: %d GP / Total: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Salir" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Descripción: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Efecto: %s" -#: src/gui/buysell.cpp:30 -#, fuzzy +#: src/gui/buysell.cpp:31 msgid "Shop" -msgstr "Detener" +msgstr "tienda" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Vender" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Cancelar" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" -msgstr "" +msgstr "confirmar borrado de personaje" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "¿Seguro que quieres borrar este personaje?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Seleccionar personaje" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 -#, c-format -msgid "Name: %s" -msgstr "Nombre: %s" - -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 -#, c-format -msgid "Level: %d" -msgstr "Nivel: %d" - -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 -#, fuzzy, c-format -msgid "Job Level: %d" -msgstr "Nivel: %d" - -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 -#, c-format -msgid "Money: %d" -msgstr "Dinero: %d" +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Aceptar" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 +#: src/gui/char_select.cpp:86 msgid "New" msgstr "Nuevo" -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 msgid "Delete" msgstr "Eliminar" -#: src/gui/char_select.cpp:99 +#: src/gui/char_select.cpp:88 msgid "Previous" msgstr "Anterior" -#: src/gui/char_select.cpp:100 +#: src/gui/char_select.cpp:89 msgid "Next" msgstr "Siguiente" -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Aceptar" +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 +#, c-format +msgid "Name: %s" +msgstr "Nombre: %s" + +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 +#, c-format +msgid "Level: %d" +msgstr "Nivel: %d" + +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 +#, c-format +msgid "Job Level: %d" +msgstr "nivel de trabajo %d" + +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 +#, c-format +msgid "Money: %d" +msgstr "Dinero: %d" -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" -msgstr "" +msgstr "oro: %d" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Crear Personaje" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Nombre:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Color de pelo:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "corte de pelo" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Crear" -#: src/gui/char_server.cpp:49 -#, fuzzy +#: src/gui/char_server.cpp:52 msgid "Select Server" -msgstr "Seleccionar personaje" +msgstr "Seleccionar servidor" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" -msgstr "" - -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Crear" +msgstr "Aceptar" -#: src/gui/chat.cpp:146 -msgid "Global announcement: " -msgstr "" +#: src/gui/chat.cpp:115 +msgid "Global announcement:" +msgstr "Anuncio Global" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " -msgstr "" +msgid "Global announcement from %s:" +msgstr "Anuncio global de %s" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Servidor:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" +msgid "%s whispers:" +msgstr "%s susurra" -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." -msgstr "" +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" +msgstr "susurrando a %s: %s" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" -msgstr "" +msgstr "Comando desconocido" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" -msgstr "" +msgstr "comercio fallido" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" -msgstr "" +msgstr "emcion fallida" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" -msgstr "" +msgstr "sentarse fallido" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" -msgstr "" +msgstr "creacion de chat fallida" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" -msgstr "" +msgstr "no pudiste unirte al grupo" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" -msgstr "" +msgstr "no puedes gritar" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" -msgstr "" +msgstr "no has alcanzado un nivel suficientemente alto" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" -msgstr "" +msgstr "puntos de vida insuficientes" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" -msgstr "" +msgstr "SP insuficientes" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" -msgstr "" +msgstr "No tienes ningun memo" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" -msgstr "" +msgstr "no puedes hacer eso ahora mismo" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" -msgstr "" +msgstr "parece ser que necesitas mas zeny" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" -msgstr "" +msgstr "no puedes usar esa habilidad con este tipo de arma" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" -msgstr "" +msgstr "necesitas otra gmea roja" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" -msgstr "" +msgstr "necesitas otra gema azul" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" -msgstr "" +msgstr "estas cargando demasiado de esto" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" -msgstr "" +msgstr "¿eh? que es eso?" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." -msgstr "" +msgstr "teletransporte fallido" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." -msgstr "" +msgstr "No pudiste robar nada" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." -msgstr "" - -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" +msgstr "el veneno no tuvo efecto" -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Cambiar a OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" -msgstr "" +msgstr "ayuda" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" -msgstr "" +msgstr "/announce ; anuncio global (GM solo)" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" -msgstr "" +msgstr "/clear : limpia esta ventana" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" -msgstr "" - -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" +msgstr "/help : muestra esta ayuda" -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" -msgstr "" +msgstr "/where : muestra nombre del mapa" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:804 +#: src/gui/chat.cpp:496 msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" -msgstr "" +msgstr "/whisper <nick> <mensaje> : manda un <mensaje> privado para <nick>" + +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" +msgstr "/w <nicl> <mensaje> abreviatura de /whisper" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" -msgstr "" +msgstr "/who muestra el numero de jugadores online" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" -msgstr "" +msgstr "Par mas ayuda teclea el comando /help" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" -msgstr "" +msgstr "comando : /announce <mensaje>" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" -msgstr "" +msgstr "solo disponible para GM" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." -msgstr "" +msgstr "este comando manda un mensaje a todos los jugadores que esten online" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" -msgstr "" +msgstr "comando: /clear" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." -msgstr "" +msgstr "este comando borra" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" -msgstr "" +msgstr "comando: /help" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." -msgstr "" +msgstr "este comando da una lista de todos los comandos que hay" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" -msgstr "" +msgstr "comando: /help <comando>" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." -msgstr "" - -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" +msgstr "este comando muestra ayuda sobre <otro comando>" -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" -msgstr "" +msgstr "comando: /where" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." -msgstr "" +msgstr "este comando muestra el nombre del mapa actual" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" -msgstr "" +msgstr "comando: /whisper <mote> <mensaje>" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" -msgstr "" +msgstr "comando: /w <mote> <mensaje>" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." -msgstr "" +msgstr "este comando manda un mensaje <mensaje> a <mote>" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." -msgstr "" +msgstr "si el <mote> incluye espacios , escribelo entre comillas (\"\")" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" -msgstr "" +msgstr "comando: /who" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" +"este comando muestra el numero de jugadores que actualmente estan conectados" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." -msgstr "" +msgstr "Orden desconocida." -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." -msgstr "" - -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "alto" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" +msgstr "teclea /help para una lista de comandos" -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Puerto:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Servidor:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "SÃ" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "No" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Conectando…" -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Usar" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Equipo" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "quitarselo" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" -msgstr "" +msgstr "Ayuda" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" -msgstr "" +msgstr "Cerrar" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventario" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Equipar" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Usar" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "tirar" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " -msgstr "" +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "peso: %d / %d" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " -msgstr "" +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" +msgstr "ranuras usadas : %d / %d" + +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "quitarselo" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Equipar" #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." @@ -627,245 +438,148 @@ msgstr "Seleccione objetos para comerciar." msgid "Select amount of items to drop." msgstr "Seleccione objetos para soltar." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "conectarse" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Contraseña:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Puerto:" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "recordar nombre de usuario" -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "Mantener" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Registrar" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Estado" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Habilidades" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Atajos" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Configuración" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "Minimapa" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Registrar" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Comerciar con %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|Atacar a %s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "Inventario" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Hablar al NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Cancelar@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|Recoger %s@@" -#: src/gui/popupmenu.cpp:287 -#, fuzzy +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" -msgstr "@@use|Equipar@@" +msgstr "@@usar|quitarselo@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Equipar@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Usar@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Tirar@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Conectando…" - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Conectando…" - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Conectando…" - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|Descripción@@" -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Confirmar:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" -msgstr "" +msgstr "Hombre" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" -msgstr "" +msgstr "Mujer" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "El nombre de usuario debe tener al menos %d caracteres." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "El nombre de usuario puede tener como máximo %d caracteres." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "La contraseña debe tener al menos %d caracteres." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "La contraseña puede tener como máximo %d caracteres." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Las contraseñas no coinciden." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Error" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Sonido" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Volumen efectos" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Volumen musica" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Aplicar" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Reiniciar ventanas" @@ -886,393 +600,292 @@ msgid "Keyboard" msgstr "Teclado" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" -msgstr "" +msgstr "Jugadores" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Sonido" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Volumen efectos" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Volumen musica" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Presione el botón para comenzar la calibración" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Calibrar" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Activar joystick" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Detener" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Gire el stick" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" -msgstr "" +msgstr "Asignar" -#: src/gui/setup_keyboard.cpp:90 -#, fuzzy +#: src/gui/setup_keyboard.cpp:92 msgid "Default" -msgstr "Eliminar" +msgstr "Predeterminado" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." -msgstr "" +msgstr "conflictos entre teclas detectados" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." -msgstr "" +msgstr "resuelvelo , o el juego puede comportarse de manera extraña" -#: src/gui/setup_players.cpp:56 -#, fuzzy +#: src/gui/setup_players.cpp:55 msgid "Name" msgstr "Nombre:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" -msgstr "" +msgstr "Relacion" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" -msgstr "" +msgstr "Neutral" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" -msgstr "" +msgstr "Amigo" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" -msgstr "" +msgstr "desestimado" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" -msgstr "" +msgstr "Ingnorado" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" -msgstr "" +msgstr "guardar lista de jugdores" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" -msgstr "" +msgstr "permitir comercio" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" -msgstr "" +msgstr "permitir susurros" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" -msgstr "" - -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" +msgstr "cuando ignorando" -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Pantalla completa" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Cursor propio" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "LÃmite de FPS:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Transparencia menus" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Ratio de scroll" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "Velocidad de scroll" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Efectos ambientales" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" -msgstr "" +msgstr "detalle particulas" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "desactivado" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "bajo" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "alto" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" -msgstr "" +msgstr "Medio" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" -msgstr "" - -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Pantalla completa" +msgstr "max" -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Cambiar a pantalla completa" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "Se necesita reiniciar para aplicar los cambios." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Cambiar a OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "Se necesita reiniciar para aplicar los cambios hechos a OpenGL." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "Se necesita reiniciar para aplicar los cambios." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "Se necesita reiniciar para aplicar los cambios." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Habilidades" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" +msgstr "habilidad mis" -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" -msgstr "" +msgstr "puntos de habilidad: %d" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" -msgstr "" - -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Usar" +msgstr "Arriba" -#: src/gui/skill.cpp:262 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 -#, fuzzy, c-format msgid "Job: %d" -msgstr "Nivel: %d" +msgstr "trabajo : %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 -#, fuzzy, c-format +#: src/gui/status.cpp:53 src/gui/status.cpp:241 +#, c-format msgid "Money: %d GP" -msgstr "Dinero: %d" +msgstr "dinero: %d GP" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" -msgstr "Nivel: %d" +msgstr "trabajo : %d" -#: src/gui/status.cpp:71 -#, fuzzy +#: src/gui/status.cpp:127 msgid "Stats" -msgstr "Estado" +msgstr "EstadÃsticas" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" -msgstr "" +msgstr "Total" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" -msgstr "" +msgstr "Coste" -#: src/gui/status.cpp:77 -#, fuzzy +#: src/gui/status.cpp:132 msgid "Attack:" -msgstr "Ataque %+d" +msgstr "Ataque:" -#: src/gui/status.cpp:78 -#, fuzzy +#: src/gui/status.cpp:133 msgid "Defense:" -msgstr "Defensa %+d" +msgstr "defensa" -#: src/gui/status.cpp:79 -#, fuzzy +#: src/gui/status.cpp:134 msgid "M.Attack:" -msgstr "Ataque %+d" +msgstr "ataque magico" -#: src/gui/status.cpp:80 -#, fuzzy +#: src/gui/status.cpp:135 msgid "M.Defense:" -msgstr "Defensa %+d" +msgstr "defensa magica" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" -msgstr "" +msgstr "% AcPunteria" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" -msgstr "" +msgstr "% agilidad" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" -msgstr "" +msgstr "% reflejos" -#: src/gui/status.cpp:211 -#, fuzzy +#: src/gui/status.cpp:285 msgid "Strength" -msgstr "Fuerza:" +msgstr "Fuerza" -#: src/gui/status.cpp:212 -#, fuzzy +#: src/gui/status.cpp:286 msgid "Agility" -msgstr "Agilidad:" +msgstr "agilidad2" -#: src/gui/status.cpp:213 -#, fuzzy +#: src/gui/status.cpp:287 msgid "Vitality" -msgstr "Vitalidad:" +msgstr "vitalidad" -#: src/gui/status.cpp:214 -#, fuzzy +#: src/gui/status.cpp:288 msgid "Intelligence" -msgstr "Inteligencia:" +msgstr "inteligencia" -#: src/gui/status.cpp:215 -#, fuzzy +#: src/gui/status.cpp:289 msgid "Dexterity" -msgstr "Destreza:" +msgstr "Destreza" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" -msgstr "" +msgstr "Suerte" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" -msgstr "" - -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" +msgstr "puntos de estatus que te quedan: %d" #: src/gui/trade.cpp:61 msgid "Add" msgstr "Añadir" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "Comercio" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Tu consigues %d GP." @@ -1281,932 +894,46 @@ msgstr "Tu consigues %d GP." msgid "You give:" msgstr "Tu das:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" - -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" +"no se pudo añadir objeto: No puedes sobreponer un tipo de objeto en la " +"ventana" #: src/gui/updatewindow.cpp:93 msgid "Updating..." -msgstr "" +msgstr "Actualizando ..." -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" -msgstr "" +msgstr "Jugar" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" -msgstr "" - -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" +msgstr "Terminado" -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Cancelar" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "¿Seguro que quieres borrar este personaje?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Ataque %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Ataque %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Reiniciar ventanas" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Dividir" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Atajos" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Reiniciar ventanas" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Estado" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventario" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Equipo" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Reiniciar ventanas" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Reiniciar ventanas" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Reiniciar ventanas" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Reiniciar ventanas" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Atajos" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Seleccionar personaje" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Conectando…" - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Conectando…" - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Conectando…" - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Nombre: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" -msgstr "" +msgstr "fuiste desconectado del servidor!!" -#: src/main.cpp:1068 -#, fuzzy +#: src/main.cpp:965 msgid "Connecting to map server..." -msgstr "Conectando…" +msgstr "conectando al servidor de mapas...." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." -msgstr "" +msgstr "conectando al servidor de personajes..." -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." -msgstr "" - -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventario" +msgstr "conectando al servidor de cuentas de usuario..." -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Crear" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." -msgstr "" - -#, fuzzy -#~ msgid "Map" -#~ msgstr "Minimapa" +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" +msgstr "sin nombre" -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|Descripción@@" +#~ msgid "Change" +#~ msgstr "Modificar" #~ msgid "Unregister" #~ msgstr "Cancelar Cuenta" @@ -2226,6 +953,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "por favor quita %d puntos" +#~ msgid "Split" +#~ msgstr "Dividir" + #~ msgid "Select amount of items to split." #~ msgstr "Seleccione objetos para dividir." @@ -2244,6 +974,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "Elija su servidor de Mana World" +#~ msgid "Port:" +#~ msgstr "Puerto:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "Escriba la dirección y el puerto de un servidor." @@ -2253,9 +986,6 @@ msgstr "" #~ msgid "Confirm trade" #~ msgstr "Confirmar" -#~ msgid "Change" -#~ msgstr "Modificar" - #~ msgid "HP %+d" #~ msgstr "HP %+d" @@ -2270,3 +1000,6 @@ msgstr "" #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "Peso Total: %d - Peso Máximo: %d" + +#~ msgid "Keep" +#~ msgstr "Mantener" @@ -6,620 +6,429 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" -"PO-Revision-Date: 2008-12-30 10:23+0000\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" +"PO-Revision-Date: 2009-02-02 12:09+0000\n" "Last-Translator: ville-v <villev90@gmail.com>\n" "Language-Team: Finnish <fi@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" +"X-Launchpad-Export-Date: 2009-02-12 19:08+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Osta" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Kappalehinta: %d GP / Yhteensä: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Sulje" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Kuvaus: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Vaikutus: %s" -#: src/gui/buysell.cpp:30 -#, fuzzy +#: src/gui/buysell.cpp:31 msgid "Shop" -msgstr "Lopeta" +msgstr "Kauppa" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Myy" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Peru" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "Vahvista hahmon poistopyyntö" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Oletko varma, että haluat poistaa tämän hahmon?" -#: src/gui/char_select.cpp:83 -#, fuzzy +#: src/gui/char_select.cpp:81 msgid "Select Character" -msgstr "Luo hahmo" - -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 -#, c-format -msgid "Name: %s" -msgstr "Nimi: %s" - -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 -#, c-format -msgid "Level: %d" -msgstr "Taso: %d" +msgstr "Valitse hahmo" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 -#, fuzzy, c-format -msgid "Job Level: %d" -msgstr "Taso: %d" - -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 -#, c-format -msgid "Money: %d" -msgstr "Rahatilanne: %d" +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 +#: src/gui/char_select.cpp:86 msgid "New" msgstr "Uusi" -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 msgid "Delete" msgstr "Poista" -#: src/gui/char_select.cpp:99 +#: src/gui/char_select.cpp:88 msgid "Previous" msgstr "Edellinen" -#: src/gui/char_select.cpp:100 +#: src/gui/char_select.cpp:89 msgid "Next" msgstr "Seuraava" -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 +#, c-format +msgid "Name: %s" +msgstr "Nimi: %s" -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format -msgid "Gold: %d" +msgid "Level: %d" +msgstr "Taso: %d" + +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 +#, c-format +msgid "Job Level: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 +#, c-format +msgid "Money: %d" +msgstr "Rahatilanne: %d" + +#: src/gui/char_select.cpp:174 +#, c-format +msgid "Gold: %d" +msgstr "Raha: %d" + +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Luo hahmo" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Nimi:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Hiusten väri:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Hiustyyli:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Luo" -#: src/gui/char_server.cpp:49 -#, fuzzy +#: src/gui/char_server.cpp:52 msgid "Select Server" -msgstr "Vaihda palvelinta" +msgstr "Valitse palvelin" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" -msgstr "" - -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Luo" +msgstr "Ok" -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Palvelin:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Vaihdetaan OpenGL -toimintatilaan" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "korkea" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Portti:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Palvelin:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Kyllä" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Ei" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Yhdistetään..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Käytä" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Varusteet" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Poista varuste käytöstä" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Tavaraluettelo" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Ota käyttöön" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Käytä" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Pudota" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Poista varuste käytöstä" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Ota käyttöön" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "Anna vaihdettavien tavaroiden määrä." @@ -628,245 +437,148 @@ msgstr "Anna vaihdettavien tavaroiden määrä." msgid "Select amount of items to drop." msgstr "Anna pudotettavien tavaroiden määrä." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Kirjaudu sisään" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Salasana:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Portti:" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "Muista käyttäjätunnus" -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Rekisteröidy" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Hahmon tiedot" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Taidot" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Pikavalinnat" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Asetukset" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "Apukartta" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "Epäpelattava hahmo" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Rekisteröidy" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "Epäpelattava hahmo" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Vaihda tavaroita %s kanssa@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|Hyökkää %s kimppuun@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, fuzzy, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "@@guild|Kutsu %s mukaan kiltaan@@" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "@@party|Kutsu %s mukaan ryhmääsi@@" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Puhu epäpelattavalle hahmolle@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Peruuta@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|Poimi %s@@" -#: src/gui/popupmenu.cpp:287 -#, fuzzy +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" -msgstr "@@use|Ota varuste käyttöön@@" +msgstr "" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Ota varuste käyttöön@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Käytä@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Pudota maahan@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Yhdistetään..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Yhdistetään..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Yhdistetään..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|Kuvaus@@" -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Vahvista:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "Miespuolinen" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "Naispuolinen" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "Käyttäjänimen tulee olla vähintään %d merkkiä pitkä" -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "Käyttäjänimen tulee olla alle %d merkkiä pitkä." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "Salasanan tulee olla vähintään %d merkkiä pitkä" -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "Salasanan tulee olla alle %d merkkiä pitkä." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Salasanat eivät täsmää." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Virhe" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Ääni" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Äänitehosteiden voimakkuus" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Musiikin voimakkuus" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Käytä" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Palauta ikkunoiden oletusasetukset" @@ -887,393 +599,291 @@ msgid "Keyboard" msgstr "Näppäimistö" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Ääni" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Äänitehosteiden voimakkuus" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Musiikin voimakkuus" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Paina tätä nappia aloittaaksesi peliohjaimen kalibroinnin" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Kalibroi" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Peliohjaintuki päälle" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Lopeta" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Käytä ohjain ääriasennoissaan pyörittämällä" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 -#, fuzzy +#: src/gui/setup_keyboard.cpp:92 msgid "Default" -msgstr "Poista" +msgstr "" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 -#, fuzzy +#: src/gui/setup_players.cpp:55 msgid "Name" -msgstr "Nimi:" +msgstr "" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Kokoruututila" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Tyylitelty hiiren osoitin" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "Piirtonopeusrajoitin (kuvaa / sekunti)" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Käyttöliittymän läpinäkyvyys" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Kameran perässälaahaus" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "Kameran perässälaahauksen tiukkuus" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Taustaäänet" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "pois päältä" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "matala" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "korkea" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Kokoruututila" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Kokoruututilaan siirtyminen" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "Ohjelma pitää käynnistää uudelleen, jotta muutokset astuvat voimaan." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Vaihdetaan OpenGL -toimintatilaan" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "OpenGL -asetusten muutokset vaativat ohjelman uudelleenkäynnistyksen" -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "Ohjelma pitää käynnistää uudelleen, jotta muutokset astuvat voimaan." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "Ohjelma pitää käynnistää uudelleen, jotta muutokset astuvat voimaan." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Taidot" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Käytä" - -#: src/gui/skill.cpp:262 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 -#, fuzzy, c-format msgid "Job: %d" -msgstr "Taso: %d" +msgstr "" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 -#, fuzzy, c-format +#: src/gui/status.cpp:53 src/gui/status.cpp:241 +#, c-format msgid "Money: %d GP" -msgstr "Rahatilanne: %d" +msgstr "" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 -#, fuzzy +#: src/gui/status.cpp:67 msgid "Job:" -msgstr "Taso: %d" +msgstr "" -#: src/gui/status.cpp:71 -#, fuzzy +#: src/gui/status.cpp:127 msgid "Stats" -msgstr "Hahmon tiedot" +msgstr "" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 -#, fuzzy +#: src/gui/status.cpp:132 msgid "Attack:" -msgstr "Hyökkäys %+d" +msgstr "" -#: src/gui/status.cpp:78 -#, fuzzy +#: src/gui/status.cpp:133 msgid "Defense:" -msgstr "Puolustus %+d" +msgstr "" -#: src/gui/status.cpp:79 -#, fuzzy +#: src/gui/status.cpp:134 msgid "M.Attack:" -msgstr "Hyökkäys %+d" +msgstr "" -#: src/gui/status.cpp:80 -#, fuzzy +#: src/gui/status.cpp:135 msgid "M.Defense:" -msgstr "Puolustus %+d" +msgstr "" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 -#, fuzzy +#: src/gui/status.cpp:285 msgid "Strength" -msgstr "Voima:" +msgstr "" -#: src/gui/status.cpp:212 -#, fuzzy +#: src/gui/status.cpp:286 msgid "Agility" -msgstr "Ketteryys:" +msgstr "" -#: src/gui/status.cpp:213 -#, fuzzy +#: src/gui/status.cpp:287 msgid "Vitality" -msgstr "Elinvoima:" +msgstr "" -#: src/gui/status.cpp:214 -#, fuzzy +#: src/gui/status.cpp:288 msgid "Intelligence" -msgstr "Älykkyys:" +msgstr "" -#: src/gui/status.cpp:215 -#, fuzzy +#: src/gui/status.cpp:289 msgid "Dexterity" -msgstr "Näppäryys:" +msgstr "" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Lisää" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Sait %d GP" @@ -1282,951 +892,48 @@ msgstr "Sait %d GP" msgid "You give:" msgstr "Annat:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Peru" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Oletko varma, että haluat poistaa tämän hahmon?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Hyökkäys %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Hyökkäys %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Palauta ikkunoiden oletusasetukset" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Jaa" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Pikavalinnat" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Palauta ikkunoiden oletusasetukset" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Hahmon tiedot" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Tavaraluettelo" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Varusteet" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Palauta ikkunoiden oletusasetukset" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Palauta ikkunoiden oletusasetukset" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Palauta ikkunoiden oletusasetukset" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Palauta ikkunoiden oletusasetukset" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Pikavalinnat" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Vaihda palvelinta" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Yhdistetään..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Yhdistetään..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Yhdistetään..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Nimi: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 -#, fuzzy +#: src/main.cpp:965 msgid "Connecting to map server..." -msgstr "Yhdistetään..." +msgstr "" -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Tavaraluettelo" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Luo" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#, fuzzy -#~ msgid "Map" -#~ msgstr "Apukartta" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|Kuvaus@@" - -#~ msgid "Remember Username" -#~ msgstr "Muista käyttäjätunnus" - -#~ msgid "Account and Character Management" -#~ msgstr "Tilin ja hahmojen hallinta" +#~ msgid "Change" +#~ msgstr "Muuta" #~ msgid "Unregister" #~ msgstr "Poista palvelimelta" -#~ msgid "Change Password" -#~ msgstr "Vaihda salasana" - -#~ msgid "Change Email Address" -#~ msgstr "Vaihda sähköpostiosoite" - -#~ msgid "Account: %s" -#~ msgstr "Tili: %s" - #~ msgid "Willpower:" #~ msgstr "Tahdonvoima:" @@ -2242,12 +949,12 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "%d pistettä liikaa" +#~ msgid "Split" +#~ msgstr "Jaa" + #~ msgid "Select amount of items to split." #~ msgstr "Anna eri pinoon jaettavien tavaroiden määrä." -#~ msgid "Guilds" -#~ msgstr "Kiltatoiminta" - #~ msgid "@@split|Split@@" #~ msgstr "@@split|Pinon jako@@" @@ -2260,23 +967,44 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "Valitse Mana World -palvelimesi" +#~ msgid "Port:" +#~ msgstr "Portti:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "Kirjoita kenttiin sekä palvelimen osoite että portti" -#~ msgid "Visible names" -#~ msgstr "Näytä nimet" - #~ msgid "Propose trade" #~ msgstr "Ehdota vaihtokauppaa" #~ msgid "Confirm trade" #~ msgstr "Suostu vaihtokauppaan" -#~ msgid "Change" -#~ msgstr "Muuta" - #~ msgid "HP %+d" #~ msgstr "Iskupisteet %+d" #~ msgid "MP %+d" #~ msgstr "Taikapisteet %+d" + +#~ msgid "Account and Character Management" +#~ msgstr "Tilin ja hahmojen hallinta" + +#~ msgid "Change Password" +#~ msgstr "Vaihda salasana" + +#~ msgid "Change Email Address" +#~ msgstr "Vaihda sähköpostiosoite" + +#~ msgid "Account: %s" +#~ msgstr "Tili: %s" + +#~ msgid "Guilds" +#~ msgstr "Kiltatoiminta" + +#~ msgid "@@guild|Invite %s@@" +#~ msgstr "@@guild|Kutsu %s mukaan kiltaan@@" + +#~ msgid "@@party|Invite %s to join your party@@" +#~ msgstr "@@party|Kutsu %s mukaan ryhmääsi@@" + +#~ msgid "Visible names" +#~ msgstr "Näytä nimet" @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: The Mana World 0.1.0\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-12-26 10:43+0000\n" "Last-Translator: Johan Serre <Unknown>\n" "Language-Team: French\n" @@ -18,608 +18,420 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Acheter" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Prix : %d PO / Total : %d PO" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Quitter" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Description : %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Effet : %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 #, fuzzy msgid "Shop" msgstr "Stop" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Vendre" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Annuler" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "Confirmer la suppression du personnage" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Êtes-vous certain de vouloir supprimer ce personnage ?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Choix du personnage" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Nouveau" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Supprimer" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Précédent" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Suivant" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Nom : %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "Niveau : %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "Niveau : %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Argent : %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Nouveau" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Supprimer" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Précédent" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Suivant" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Création du personnage" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Nom :" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Couleur des cheveux" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Coiffure :" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Créer" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 #, fuzzy msgid "Select Server" msgstr "Choix du personnage" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Créer" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Serveur :" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Changement OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "complet" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Port :" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Serveur :" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Oui" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Non" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Connexion..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Utiliser" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Équipement" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Retirer" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventaire" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Équiper" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Utiliser" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Lâcher" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Retirer" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Équiper" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "Choisissez le nombre d'objets à troquer." @@ -628,245 +440,149 @@ msgstr "Choisissez le nombre d'objets à troquer." msgid "Select amount of items to drop." msgstr "Choisissez le nombre d'objets à lâcher." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Connexion" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Mot de passe :" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Port :" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "Conserver" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "Se souvenir du nom d'utilisateur" -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "S'inscrire" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Statut" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Compétences" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Raccourci" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Configuration" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "Plan" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "PNJ" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "S'inscrire" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "PNJ" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Troquer avec %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|Attaquer %s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, fuzzy, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "@@guilde|Invite %s@@" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "@@partie| Invitation de %s à joindre votre partie @@" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Parler au PNJ@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Annuler@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|Ramasser %s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 #, fuzzy msgid "@@use|Unequip@@" msgstr "@@use|Équiper@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Équiper@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Utiliser@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Lâcher@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Connexion..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Connexion..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|Description@@" -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Connexion..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Vérification :" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "Masculin" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "Féminin" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "Le nom d'utilisateur doit faire au moins %d caractères." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "Le nom d'utilisateur doit faire moins de %d caractères." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "Le mot de passe doit faire au moins %d caractères." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "Le mot de passe doit faire moins de %d caractères." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Les deux mots de passe ne correspondent pas." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Erreur" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Son" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Volume des effets sonores" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Volume de la musique" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Appliquer" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Rétablir les fenêtres" @@ -887,397 +603,306 @@ msgid "Keyboard" msgstr "Clavier" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Son" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Volume des effets sonores" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Volume de la musique" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Presser le bouton pour démarrer la calibration" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Calibrer" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Activer le joystick" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Stop" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Tourner le joystick" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "Supprimer" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "Nom :" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Plein écran" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Curseur personnalisé" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "Limite FPS :" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Opacité de l'interface" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Rayon du scrolling" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "Paresse du scrolling" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Effets ambiants" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "aucun" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "léger" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "complet" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Plein écran" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Passage en plein écran" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "" "Les changements ne seront pris en compte qu'au prochain démarrage du jeu." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Changement OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "" "Le changement OpenGL ne sera pris en compte qu'au prochain démarrage du jeu." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "" -"Les changements ne seront pris en compte qu'au prochain démarrage du jeu." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -"Les changements ne seront pris en compte qu'au prochain démarrage du jeu." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Compétences" -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Utiliser" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "Niveau : %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "Argent : %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "Niveau : %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "Statut" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 #, fuzzy msgid "Attack:" msgstr "Attaque %+d" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 #, fuzzy msgid "Defense:" msgstr "Défense %+d" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 #, fuzzy msgid "M.Attack:" msgstr "Attaque %+d" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 #, fuzzy msgid "M.Defense:" msgstr "Défense %+d" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "Force :" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "Agilité :" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "Vitalité :" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "Intelligence :" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "Dextérité :" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Ajouter" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Vous obtenez %d PO." @@ -1286,936 +911,43 @@ msgstr "Vous obtenez %d PO." msgid "You give:" msgstr "Vous donnez :" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Annuler" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Êtes-vous certain de vouloir supprimer ce personnage ?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Attaque %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Attaque %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Rétablir les fenêtres" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Partager" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Raccourci" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Rétablir les fenêtres" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Statut" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventaire" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Équipement" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Rétablir les fenêtres" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Rétablir les fenêtres" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Rétablir les fenêtres" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Rétablir les fenêtres" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Raccourci" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Choix du personnage" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Connexion..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Connexion..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Connexion..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Nom : %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "Connexion..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventaire" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Créer" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#, fuzzy -#~ msgid "Map" -#~ msgstr "Plan" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|Description@@" - -#~ msgid "Remember Username" -#~ msgstr "Se souvenir du nom d'utilisateur" - #~ msgid "Account and Character Management" #~ msgstr "Gestion du compte et du personnage" @@ -2246,12 +978,21 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "Veuillez retirer %d points" +#~ msgid "Split" +#~ msgstr "Partager" + #~ msgid "Select amount of items to split." #~ msgstr "Choisissez le nombre d'objets à déplacer." #~ msgid "Guilds" #~ msgstr "Guildes" +#~ msgid "@@guild|Invite %s@@" +#~ msgstr "@@guilde|Invite %s@@" + +#~ msgid "@@party|Invite %s to join your party@@" +#~ msgstr "@@partie| Invitation de %s à joindre votre partie @@" + #~ msgid "@@split|Split@@" #~ msgstr "@@split|Partager@@" @@ -2267,6 +1008,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "Choisissez votre serveur The Mana World" +#~ msgid "Port:" +#~ msgstr "Port :" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "Veuillez entrer l'adresse et le port du serveur." @@ -2296,3 +1040,6 @@ msgstr "" #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "Poids total : %d - Poids maximal : %d" + +#~ msgid "Keep" +#~ msgstr "Conserver" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-10-20 00:23+0000\n" "Last-Translator: Ddorda <d.dorda@gmail.com>\n" "Language-Team: Hebrew <he@li.org>\n" @@ -17,609 +17,421 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "×§× ×”" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "מחיר: %d זהב / סה\"×› %d זהב" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "יצי××”" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "תי×ור: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "השפעה: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 #, fuzzy msgid "Shop" msgstr "עצור" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "מכר" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "ביטול" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "×שר מחיקת שחקן" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "×”×× ×תה בטוח ×›×™ ×‘×¨×¦×•× ×š למחוק ×ת השחקן?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 #, fuzzy msgid "Select Character" msgstr "צור שחקן" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "×ישור" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "חדש" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "מחק" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "הקוד×" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "הב×" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "ש×: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "רמה: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "רמה: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "זהב: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "חדש" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "מחק" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "הקוד×" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "הב×" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "×ישור" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "צור שחקן" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "ש×:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "צבע שיער:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "תיספורת:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "צור" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 #, fuzzy msgid "Select Server" msgstr "החלף שרת" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "צור" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "שרת:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "×ž×©× ×” OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "גבוה" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "פורט:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "שרת:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "כן" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "ל×" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "מתחבר..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "השתמש" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "ציוד" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "הורד" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "ציוד" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "×”×—×–×§" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "השתמש" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "השלך" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "הורד" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "×”×—×–×§" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "בחר כמות ×—×¤×¦×™× ×œ×¡×—×•×¨." @@ -628,245 +440,149 @@ msgstr "בחר כמות ×—×¤×¦×™× ×œ×¡×—×•×¨." msgid "Select amount of items to drop." msgstr "בחר כמות ×—×¤×¦×™× ×œ×”×©×œ×™×š." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "התחברות" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "סיסמה:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "פורט:" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "זכור ×©× ×ž×©×ª×ž×©" -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "הרש×" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "מצב" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "כישורי×" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "קיצור-דרך" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "הגדרות" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "×ž×™× ×™-מפה" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "הרש×" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|סחור ×¢× %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|תקוף ×ת %s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, fuzzy, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "@@guild|הזמן ×ת %s@@" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "@@party|הזמן ×ת %s להצטרף למסיבה@@" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|דבר ×ל NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|ביטול@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|×”×¨× %s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 #, fuzzy msgid "@@use|Unequip@@" msgstr "@@use|×”×—×–×§@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|×”×—×–×§@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Use@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|השלך@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "מתחבר..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|תי×ור@@" -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "מתחבר..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "מתחבר..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "×שר:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "זכר" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "× ×§×‘×”" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "×©× ×”×ž×©×ª×ž×© חייב להכיל לפחות %d תוי×." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "×©× ×”×ž×©×ª×ž×© חייב להכיל פחות מ-%d תוי×." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "הסיסמה חייבת להכיל לפחות %d תוי×." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "הסיסמה חייבת להכיל פחות מ-%d תוי×." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "הסיסמ×ות ××™× ×Ÿ תו×מות." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "שגי××”" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "צליל" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "עוצמת SFX" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "עוצמת מוזיקה" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "×שר" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "×תחל ×—×œ×•× ×•×ª" @@ -887,393 +603,304 @@ msgid "Keyboard" msgstr "מקלדת" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "צליל" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "עוצמת SFX" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "עוצמת מוזיקה" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "לחץ על הכפתור בכדי להתחיל בכיול" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "כייל" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "×פשר ×’'ויסטיק" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "עצור" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "סובב ×ת המקל" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "מחק" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "ש×:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "מסך מל×" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "â€OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "סמן-עכבר מות××" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "הגבלת FPS:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "×טימות Gui" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "תווך גלילה" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "×¢×¦×œ× ×•×ª גלילה" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "×ופף FX" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "כבוי" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "× ×ž×•×š" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "גבוה" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "מסך מל×" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "מחליף למסך מל×" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "× ×“×¨×© ×יתחול כדי ×©×”×©×™× ×•×™×™× ×™×”×™×• ברי-תוקף." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "×ž×©× ×” OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "×ישור ×©×™× ×•×™×™× ×¢×‘×•×¨ OpenGL דורש ×יתחול." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "× ×“×¨×© ×יתחול כדי ×©×”×©×™× ×•×™×™× ×™×”×™×• ברי-תוקף." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "× ×“×¨×© ×יתחול כדי ×©×”×©×™× ×•×™×™× ×™×”×™×• ברי-תוקף." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "כישורי×" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "השתמש" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "רמה: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "זהב: %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "רמה: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "מצב" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 #, fuzzy msgid "Attack:" msgstr "התקפה %+d" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 #, fuzzy msgid "Defense:" msgstr "×”×’× ×” %+d" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 #, fuzzy msgid "M.Attack:" msgstr "התקפה %+d" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 #, fuzzy msgid "M.Defense:" msgstr "×”×’× ×” %+d" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "עוצמה:" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "זריזות:" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "×—×™×•× ×™×•×ª:" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "×ª×‘×•× ×”:" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "×ž×™×•×ž× ×•×ª:" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "הוסף" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "×תה מקבל %d זהב." @@ -1282,936 +909,43 @@ msgstr "×תה מקבל %d זהב." msgid "You give:" msgstr "×תה × ×•×ª×Ÿ:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "ביטול" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "×”×× ×תה בטוח ×›×™ ×‘×¨×¦×•× ×š למחוק ×ת השחקן?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "התקפה %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "התקפה %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "×תחל ×—×œ×•× ×•×ª" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "פצל" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "קיצור-דרך" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "×תחל ×—×œ×•× ×•×ª" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "מצב" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "ציוד" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "ציוד" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "×תחל ×—×œ×•× ×•×ª" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "×תחל ×—×œ×•× ×•×ª" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "×תחל ×—×œ×•× ×•×ª" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "×תחל ×—×œ×•× ×•×ª" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "קיצור-דרך" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "החלף שרת" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "מתחבר..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "מתחבר..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "מתחבר..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "ש×: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "מתחבר..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "ציוד" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "צור" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#, fuzzy -#~ msgid "Map" -#~ msgstr "×ž×™× ×™-מפה" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|תי×ור@@" - -#~ msgid "Remember Username" -#~ msgstr "זכור ×©× ×ž×©×ª×ž×©" - #~ msgid "Account and Character Management" #~ msgstr "× ×™×”×•×œ משתמש ושחקן" @@ -2242,12 +976,21 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "×× × ×”×¡×¨ %d × ×§×•×“×•×ª" +#~ msgid "Split" +#~ msgstr "פצל" + #~ msgid "Select amount of items to split." #~ msgstr "בחר כמות ×—×¤×¦×™× ×œ×¤×¦×œ." #~ msgid "Guilds" #~ msgstr "גילדות" +#~ msgid "@@guild|Invite %s@@" +#~ msgstr "@@guild|הזמן ×ת %s@@" + +#~ msgid "@@party|Invite %s to join your party@@" +#~ msgstr "@@party|הזמן ×ת %s להצטרף למסיבה@@" + #~ msgid "@@split|Split@@" #~ msgstr "@@split|פצל@@" @@ -2260,6 +1003,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "בחר ×ת שרת ×”-Mana World" +#~ msgid "Port:" +#~ msgstr "פורט:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "×× × ×”×›× ×¡ ×’× ×ת כתובת ×•×’× ×ת פורט השרת." @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-12-28 23:36+0000\n" "Last-Translator: Dino Paskvan <dpaskvan@gmail.com>\n" "Language-Team: Croatian <hr@li.org>\n" @@ -17,603 +17,419 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Kupi" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Cijena: %d zlatnika / Ukupno: %d zlatnika" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Izlaz" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Opis: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "UÄinak: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "PoniÅ¡ti" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "Potvrdi Brisanje Lika" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Da li ste sigurni da želite obrisati ovog lika?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 #, fuzzy msgid "Select Character" msgstr "Stvori Lika" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "U redu" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Novi" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "ObriÅ¡i" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Prethodni" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Slijedeći" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Ime: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "Nivo: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "Nivo: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Novac: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Novi" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "ObriÅ¡i" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Prethodni" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Slijedeći" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "U redu" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Stvori Lika" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Ime:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Boja kose:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Frizura:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Stvori" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 msgid "Select Server" msgstr "" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Stvori" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -msgid "Changing prefix to " -msgstr "" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -msgid "Highlight" -msgstr "" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -msgid "Party" -msgstr "" - -#: src/gui/colour.cpp:38 -msgid "Server" -msgstr "" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Da" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Ne" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Spajanje..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Upotrijebi" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Oprema" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Skini opremu" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Zalihe" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Opremi" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Upotrijebi" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Ispusti" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Skini opremu" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Opremi" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "Odaberi koliÄinu predmeta za razmjenu." @@ -622,245 +438,149 @@ msgstr "Odaberi koliÄinu predmeta za razmjenu." msgid "Select amount of items to drop." msgstr "Odaberi koliÄinu predmeta za ispuÅ¡tanje." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "KorisniÄko ime" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Lozinka" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "Zapamti korisniÄko ime" -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Registriraj se" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Stanje" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "VjeÅ¡tine" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Kratica" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "PodeÅ¡avanje" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "Karta" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Registriraj se" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 +#: src/gui/popupmenu.cpp:81 #, c-format msgid "@@trade|Trade With %s@@" msgstr "" -#: src/gui/popupmenu.cpp:79 +#: src/gui/popupmenu.cpp:83 #, c-format msgid "@@attack|Attack %s@@" msgstr "" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "Zalihe" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 #, fuzzy msgid "@@use|Unequip@@" msgstr "Skini opremu" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" msgstr "" -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Spajanje..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Spajanje..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Spajanje..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "MuÅ¡ko" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "Žensko" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "" -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "GreÅ¡ka" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "" @@ -881,386 +601,300 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " +#: src/gui/setup_audio.cpp:42 +msgid "Sound" msgstr "" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" msgstr "" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" msgstr "" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "ObriÅ¡i" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "Ime:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "fullscreen" -msgstr "" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "" -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "" -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -msgid "Restart your client for the change to take effect." +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -msgid "Restart your client or change maps for the change to take effect." -msgstr "" - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "VjeÅ¡tine" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Upotrijebi" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "Nivo: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "Novac: %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "Nivo: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "Stanje" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 msgid "Attack:" msgstr "" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 msgid "Defense:" msgstr "" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 msgid "M.Attack:" msgstr "" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 msgid "M.Defense:" msgstr "" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "Snaga:" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "Okretnost:" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "Vitalnost:" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "Inteligencija:" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "Spretnost:" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" +#: src/gui/trade.cpp:61 +msgid "Add" msgstr "" -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 +#: src/gui/trade.cpp:64 msgid "Trade" msgstr "" -#: src/gui/trade.cpp:61 -msgid "Add" -msgstr "" - -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "" @@ -1269,924 +903,43 @@ msgstr "" msgid "You give:" msgstr "" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "PoniÅ¡ti" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Da li ste sigurni da želite obrisati ovog lika?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -msgid "Attack" -msgstr "" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -msgid "Stop Attack" -msgstr "" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -msgid "Hide Windows" -msgstr "" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Razdvoji" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Kratica" - -#: src/keyboardconfig.cpp:71 -msgid "Help Window" -msgstr "" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Stanje" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Zalihe" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Oprema" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -msgid "Chat Window" -msgstr "" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -msgid "Setup Window" -msgstr "" - -#: src/keyboardconfig.cpp:80 -msgid "Debug Window" -msgstr "" - -#: src/keyboardconfig.cpp:81 -msgid "Emote Window" -msgstr "" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Kratica" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -msgid "Select OK" -msgstr "" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Spajanje..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Spajanje..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Spajanje..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Ime: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "Spajanje..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Zalihe" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Stvori" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#, fuzzy -#~ msgid "Map" -#~ msgstr "Karta" - -#~ msgid "Remember Username" -#~ msgstr "Zapamti korisniÄko ime" - #~ msgid "Account and Character Management" #~ msgstr "Upravljanje RaÄunom i Likovima" @@ -2217,6 +970,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "Molimo, oduzmi %d bodova" +#~ msgid "Split" +#~ msgstr "Razdvoji" + #~ msgid "Select amount of items to split." #~ msgstr "Odaberi koliÄinu predmeta za razdvajanje." @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-03-26 09:11+0000\n" "Last-Translator: ActiveFile <activefile@gmail.com>\n" "Language-Team: Indonesian <id@li.org>\n" @@ -17,606 +17,418 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Beli" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Harga: %d GP / Jumlah: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Keluar" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Deskripsi: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Efek: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 #, fuzzy msgid "Shop" msgstr "Berhenti" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Jual" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Batal" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Apakah anda bersungguh-sungguh ingin menghapus karakter ini?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Pilih Karakter" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Buat baru" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Hapus" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Sebelumnya" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Berikutnya" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Nama: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "Tingkatan: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "Tingkatan: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Uang: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Buat baru" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Hapus" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Sebelumnya" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Berikutnya" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Buat Karakter" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Nama:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Warna Rambut:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Gaya Rambut:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Buat" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 #, fuzzy msgid "Select Server" msgstr "Pilih Karakter" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Buat" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Server:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Mengubah OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "tinggi" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Port:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Server:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Ya" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Tidak" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Menyambung..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Gunakan" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Perlengkapan" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventaris" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Gunakan" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Jatuh" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" msgstr "" #: src/gui/item_amount.cpp:76 @@ -627,245 +439,149 @@ msgstr "Pilih jumlah item yang mau di perdagangkan" msgid "Select amount of items to drop." msgstr "Pilih jumlah item yang mau di buang" -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Login" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Kata Sandi:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Port:" - -#: src/gui/login.cpp:55 -msgid "Recent:" +#: src/gui/login.cpp:50 +msgid "Remember Username" msgstr "" -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "Pertahankan" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Mendaftar" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Status" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Keahlian" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Tombol Singkat" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Atur" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "MiniMap" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Mendaftar" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Dagang Dengan %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|Serang%s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "Inventaris" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Bicara dengan NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Batal@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|Ambil %s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 #, fuzzy msgid "@@use|Unequip@@" msgstr "@@use|Melengkapi@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Melengkapi@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Gunakan@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Buang@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Menyambung..." +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|Deskripsi@@" -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Menyambung..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Menyambung..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Konfirmasi:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "Panjang username setidak-tidaknya %d karakter" -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "Panjang kata-sandi setidak-tidaknya %d karakter" -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Kata sandi tidak sama." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Kesalahan" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Suara" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Volume sfx" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Volume Musik" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Terapkan" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "" @@ -886,393 +602,304 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Suara" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Volume sfx" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Volume Musik" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Tekan tombol untuk memulai kalibrasi" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Kalibrasi" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Membolehkan joistik" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Berhenti" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Memutar tongkat" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "Hapus" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "Nama:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Layar penuh" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "Batas FPS" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Radius gulungan" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "mati" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "rendah" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "tinggi" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Layar penuh" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Mengganti ke layar penuh" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "Memulai dari awal di butuhkan untuk melihat efek" -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Mengubah OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "Mendaftar perubahan ke OpenGL membutuhkan memulai dari awal" -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "Memulai dari awal di butuhkan untuk melihat efek" - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "Memulai dari awal di butuhkan untuk melihat efek" - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Keahlian" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Gunakan" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "Tingkatan: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "Uang: %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "Tingkatan: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "Status" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 #, fuzzy msgid "Attack:" msgstr "Serangan %+d" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 #, fuzzy msgid "Defense:" msgstr "Pertahanan %+d" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 #, fuzzy msgid "M.Attack:" msgstr "Serangan %+d" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 #, fuzzy msgid "M.Defense:" msgstr "Pertahanan %+d" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "Kekuatan" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "Daya/Tenaga Hidup" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "Daya/Tenaga Hidup" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "Kecerdasan" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "Ketangkasan" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Tambah" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Anda mendapatkan %d GP." @@ -1281,927 +908,43 @@ msgstr "Anda mendapatkan %d GP." msgid "You give:" msgstr "Anda memberikan:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Batal" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Apakah anda bersungguh-sungguh ingin menghapus karakter ini?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Serangan %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Serangan %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -msgid "Hide Windows" -msgstr "" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Pecah" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Tombol Singkat" - -#: src/keyboardconfig.cpp:71 -msgid "Help Window" -msgstr "" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Status" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventaris" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Perlengkapan" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -msgid "Chat Window" -msgstr "" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -msgid "Setup Window" -msgstr "" - -#: src/keyboardconfig.cpp:80 -msgid "Debug Window" -msgstr "" - -#: src/keyboardconfig.cpp:81 -msgid "Emote Window" -msgstr "" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Tombol Singkat" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Pilih Karakter" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Menyambung..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Menyambung..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Menyambung..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Nama: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "Menyambung..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventaris" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Buat" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#, fuzzy -#~ msgid "Map" -#~ msgstr "MiniMap" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|Deskripsi@@" - #~ msgid "Unregister" #~ msgstr "Tidak terdaftar" @@ -2220,6 +963,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "Tolong hilangkan %d point" +#~ msgid "Split" +#~ msgstr "Pecah" + #~ msgid "Select amount of items to split." #~ msgstr "Pilih jumlah item yang mau di pisahkan" @@ -2238,6 +984,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "Pilih Server Mana World" +#~ msgid "Port:" +#~ msgstr "Port:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "Tolong tulis address dan port dari server" @@ -2264,3 +1013,6 @@ msgstr "" #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "Jumlah Berat: %d - Berat Maksimum: %d" + +#~ msgid "Keep" +#~ msgstr "Pertahankan" @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: The Mana World 0.1.0\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2007-12-03 01:45+0000\n" "Last-Translator: Bjørn Lindeijer <bjorn@lindeijer.nl>\n" "Language-Team: Italian\n" @@ -19,608 +19,420 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Compra" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Prezzo: %d GP / Totale: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Esci" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Descrizione : %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Effetto : %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 #, fuzzy msgid "Shop" msgstr "Ferma" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Vendi" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Cancella" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Sei sicuro di voler cancellare questo personaggio?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Scelta Personaggio" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Nuovo" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Elimina" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Precedente" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Prossimo" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Nome : %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "Livello: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "Livello: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Monete: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Nuovo" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Elimina" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Precedente" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Prossimo" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Crea Personaggio" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Nome :" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Colore Capelli" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Stile Capelli:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Create" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 #, fuzzy msgid "Select Server" msgstr "Scelta Personaggio" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Create" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Server:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Modifica OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "Alto" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Porta:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Server:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Si" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "No" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Connessione..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Usa" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Equipaggiamento" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Rimuovi" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventario" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Equipaggia" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Usa" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Lascia" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Rimuovi" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Equipaggia" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "Seleziona la quantità di oggetti da scambiare." @@ -629,245 +441,149 @@ msgstr "Seleziona la quantità di oggetti da scambiare." msgid "Select amount of items to drop." msgstr "Seleziona la quantità di oggetti da lasciare." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Autenticazione" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Password:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Porta:" - -#: src/gui/login.cpp:55 -msgid "Recent:" +#: src/gui/login.cpp:50 +msgid "Remember Username" msgstr "" -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "Mantieni" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Registra" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Stato" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Abilità " -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Scorciatoia" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Impostazioni" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "Mini mappa" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Registra" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Scambia Con %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|Attacca %s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "Inventario" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Parla con NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Cancella@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|Raccogli %s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 #, fuzzy msgid "@@use|Unequip@@" msgstr "@@use|Equipaggia@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Equipaggia@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@usa|Usa@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Lascia@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Connessione..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|Descrizione@@" -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Connessione..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Connessione..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Conferma:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "Il nome utente deve contenere almeno %d caratteri." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "Il nome utente deve avere meno di %d caratteri." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "La password deve essere lunga almeno %d caratteri." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "La password deve contenere meno di %d caratteri." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Le password non corrispondono." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Errore" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Suono" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Volume effetti sonori" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Volume musica" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Applica" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Resetta finestre" @@ -888,393 +604,304 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Suono" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Volume effetti sonori" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Volume musica" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Premi il pulsante per cominciare la calibrazione" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Calibra" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Abilita joystick" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Ferma" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Ruota la manopola" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "Elimina" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "Nome :" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Schermo intero" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Cursore personalizzato" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "Limita FPS:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Opacità IU" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Raggio dello scroll" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "Lentezza dello scroll" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Suoni ambientali" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "Spento" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "Basso" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "Alto" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Schermo intero" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Modalità a schermo intero" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "Riavvio necessario affinchè i cambiamenti abbiano effetto." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Modifica OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "Applicare le modifiche ad OpenGL richiede il riavvio." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "Riavvio necessario affinchè i cambiamenti abbiano effetto." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "Riavvio necessario affinchè i cambiamenti abbiano effetto." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Abilità " - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Usa" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "Livello: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "Monete: %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "Livello: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "Stato" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 #, fuzzy msgid "Attack:" msgstr "Attacco %+d" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 #, fuzzy msgid "Defense:" msgstr "Difesa %+d" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 #, fuzzy msgid "M.Attack:" msgstr "Attacco %+d" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 #, fuzzy msgid "M.Defense:" msgstr "Difesa %+d" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "Forza:" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "Agilità :" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "Vitalità :" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "Intelligenza:" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "Destrezza:" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Aggiungi" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Ottieni %d GP." @@ -1283,933 +910,43 @@ msgstr "Ottieni %d GP." msgid "You give:" msgstr "Dai:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Cancella" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Sei sicuro di voler cancellare questo personaggio?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Attacco %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Attacco %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Resetta finestre" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Lascia" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Scorciatoia" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Resetta finestre" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Stato" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventario" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Equipaggiamento" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Resetta finestre" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Resetta finestre" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Resetta finestre" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Resetta finestre" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Scorciatoia" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Scelta Personaggio" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Connessione..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Connessione..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Connessione..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Nome : %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "Connessione..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventario" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Create" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#, fuzzy -#~ msgid "Map" -#~ msgstr "Mini mappa" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|Descrizione@@" - #~ msgid "Unregister" #~ msgstr "Cancella registrazione" @@ -2228,6 +965,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "Prego rimuovi %d punti" +#~ msgid "Split" +#~ msgstr "Lascia" + #~ msgid "Select amount of items to split." #~ msgstr "Seleziona la quantità di oggetti da lasciare." @@ -2246,6 +986,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "Scegli il tuo server Mana World" +#~ msgid "Port:" +#~ msgstr "Porta:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "Per favore inserisci l'indirizzo e la porta del server." @@ -2272,3 +1015,6 @@ msgstr "" #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "Peso totale : %d - Peso massimo : %d" + +#~ msgid "Keep" +#~ msgstr "Mantieni" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-06-28 16:27+0000\n" "Last-Translator: fate <Unknown>\n" "Language-Team: Japanese <ja@li.org>\n" @@ -17,603 +17,417 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "è²·ã†" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "ä¾¡æ ¼: %d GP / åˆè¨ˆ: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "終了" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "å状: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "効用: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "å–æ¶ˆ" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "ã“ã®ã‚ãƒ£ãƒ©ã¯æ¶ˆã—ã¦ã‚‚ã„ã„ã§ã™ã‹?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "ã‚ãƒ£ãƒ©ã‚’é¸æŠž" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "了解" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "æ–°è¦" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "削除" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "å‰ã¸" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "次ã¸" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "åå‰: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "レベル: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "レベル: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "GP: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "æ–°è¦" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "削除" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "å‰ã¸" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "次ã¸" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "了解" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "ã‚ャラを作æˆ" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "åå‰:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "髪ã®è‰²ï¼š" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "髪型:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "作æˆ" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 #, fuzzy msgid "Select Server" msgstr "ã‚ãƒ£ãƒ©ã‚’é¸æŠž" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "作æˆ" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "サーãƒ:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -msgid "Changing prefix to " -msgstr "" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -msgid "Highlight" -msgstr "" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "ãƒãƒ¼ãƒˆ:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "サーãƒ:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "ã¯ã„" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "ã„ã„ãˆ" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "接続ã—ã¦ã„ã¾ã™..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "使ã†" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "使ã†" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" msgstr "" #: src/gui/item_amount.cpp:76 @@ -624,244 +438,148 @@ msgstr "" msgid "Select amount of items to drop." msgstr "" -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "ãƒã‚°ã‚¤ãƒ³" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "パスワード:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "ãƒãƒ¼ãƒˆ:" - -#: src/gui/login.cpp:55 -msgid "Recent:" +#: src/gui/login.cpp:50 +msgid "Remember Username" msgstr "" -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "状態" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "セットアップ" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "" -#: src/gui/npcintegerdialog.cpp:33 -msgid "NPC Number Request" +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 -msgid "Reset" +#: src/gui/npcintegerdialog.cpp:38 +msgid "NPC Number Request" msgstr "" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" +#: src/gui/npcintegerdialog.cpp:45 +msgid "Reset" msgstr "" -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 +#: src/gui/popupmenu.cpp:81 #, c-format msgid "@@trade|Trade With %s@@" msgstr "" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|%sを攻撃ã™ã‚‹@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|NPCã‚’å–‹ã‚‹@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 #, fuzzy msgid "@@use|Unequip@@" msgstr "@@use|使ã†@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|使ã†@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" msgstr "" -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "接続ã—ã¦ã„ã¾ã™..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "接続ã—ã¦ã„ã¾ã™..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "接続ã—ã¦ã„ã¾ã™..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "パスワードãŒä¸€è‡´ã—ã¦ã„ã¾ã›ã‚“。" -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "エラー" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "" @@ -882,385 +600,300 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " +#: src/gui/setup_audio.cpp:42 +msgid "Sound" msgstr "" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" msgstr "" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" msgstr "" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "削除" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "åå‰:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "fullscreen" -msgstr "" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "" -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "" -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:399 -msgid "Restart your client for the change to take effect." -msgstr "" - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -msgid "Restart your client or change maps for the change to take effect." -msgstr "" - -#: src/gui/skill.cpp:41 -msgid "skills.xml" -msgstr "" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "使ã†" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "レベル: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "GP: %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "レベル: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "状態" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 msgid "Attack:" msgstr "" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 msgid "Defense:" msgstr "" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 msgid "M.Attack:" msgstr "" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 msgid "M.Defense:" msgstr "" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "ç‹åŠ›:" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "ç´ æ—©ã•:" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "体力:" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "知性:" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "æ•æ·:" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" +#: src/gui/trade.cpp:61 +msgid "Add" msgstr "" -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 +#: src/gui/trade.cpp:64 msgid "Trade" msgstr "" -#: src/gui/trade.cpp:61 -msgid "Add" -msgstr "" - -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "" @@ -1269,913 +902,41 @@ msgstr "" msgid "You give:" msgstr "" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "å–æ¶ˆ" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "ã“ã®ã‚ãƒ£ãƒ©ã¯æ¶ˆã—ã¦ã‚‚ã„ã„ã§ã™ã‹?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -msgid "Attack" -msgstr "" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -msgid "Stop Attack" -msgstr "" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -msgid "Hide Windows" -msgstr "" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "分割" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, c-format -msgid "Item Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:71 -msgid "Help Window" -msgstr "" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "状態" - -#: src/keyboardconfig.cpp:73 -msgid "Inventory Window" -msgstr "" - -#: src/keyboardconfig.cpp:74 -msgid "Equipment WIndow" -msgstr "" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -msgid "Chat Window" -msgstr "" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -msgid "Setup Window" -msgstr "" - -#: src/keyboardconfig.cpp:80 -msgid "Debug Window" -msgstr "" - -#: src/keyboardconfig.cpp:81 -msgid "Emote Window" -msgstr "" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, c-format -msgid "Emote Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "ã‚ãƒ£ãƒ©ã‚’é¸æŠž" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "接続ã—ã¦ã„ã¾ã™..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "接続ã—ã¦ã„ã¾ã™..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "接続ã—ã¦ã„ã¾ã™..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "åå‰: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "接続ã—ã¦ã„ã¾ã™..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -msgid "Invite to party" -msgstr "" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "作æˆ" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" #~ msgid "Unregister" @@ -2187,9 +948,15 @@ msgstr "" #~ msgid "Please distribute %d points" #~ msgstr "%d ãƒã‚¤ãƒ³ãƒˆã‚’å–り分ã‘ãã ã•ã„" +#~ msgid "Split" +#~ msgstr "分割" + #~ msgid "Email:" #~ msgstr "Eメール:" +#~ msgid "Port:" +#~ msgstr "ãƒãƒ¼ãƒˆ:" + #~ msgid "Confirm" #~ msgstr "確èª" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: The Mana World 0.1.0\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2009-01-18 16:53+0000\n" "Last-Translator: Bjørn Lindeijer <bjorn@lindeijer.nl>\n" "Language-Team: Dutch\n" @@ -17,616 +17,418 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-25 22:24+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Kopen" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Afsluiten" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Beschrijving: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Effect: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "Winkel" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Verkopen" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Annuleren" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Weet je zeker dat je deze personage wilt verwijderen?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Kies Personage" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "OK" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Nieuw" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Verwijderen" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Vorige" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Volgende" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Naam: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "Level: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, c-format msgid "Job Level: %d" msgstr "" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Geld: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Nieuw" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Verwijderen" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Vorige" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Volgende" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "OK" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "Goud: %d" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Personage Aanmaken" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Naam:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Haarkleur:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Haarstijl:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Aanmaken" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 msgid "Select Server" msgstr "Server Selecteren" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "OK" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Aanmaken" - -#: src/gui/chat.cpp:146 -#, fuzzy -msgid "Global announcement: " -msgstr "/announce: Globale aankondiging (alleen voor GM)" +#: src/gui/chat.cpp:115 +msgid "Global announcement:" +msgstr "" -#: src/gui/chat.cpp:151 -#, fuzzy, c-format -msgid "Global announcement from %s: " -msgstr "/announce: Globale aankondiging (alleen voor GM)" +#: src/gui/chat.cpp:118 +#, c-format +msgid "Global announcement from %s:" +msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Server:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -#, fuzzy -msgid "Unknown item" -msgstr "Onbekende opdracht" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" +msgid "%s whispers:" +msgstr "%s fluistert:" -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "Onbekende opdracht" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "Zitten niet mogelijk!" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "Het ziet ernaar uit dat je meer geld nodig hebt... ;-)" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "Je draagt teveel bij je om dit te doen!" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Veranderen van OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "/announce: Globale aankondiging (alleen voor GM)" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "/who: Geef het aantal online gebruikers weer" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "Commando: /announce <msg>" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "Commando: /clear" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "Commando: /help" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "Commando: /help <commando>" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -#, fuzzy -msgid "Command: /present" -msgstr "Commando: /where" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -#, fuzzy -msgid "Command: /record <filename>" -msgstr "Commando: /clear" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -#, fuzzy -msgid "Command: /record" -msgstr "Commando: /clear" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -#, fuzzy -msgid "Command: /toggle <state>" -msgstr "Commando: /announce <msg>" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -#, fuzzy -msgid "Command: /toggle" -msgstr "Commando: /clear" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "Commando: /where" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -#, fuzzy -msgid "Command: /msg <nick> <msg>" -msgstr "Commando: /announce <msg>" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "Type /help voor een lijst van commando's." -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "hoog" - -#: src/gui/colour.cpp:34 -#, fuzzy -msgid "Player" -msgstr "Spelers" - -#: src/gui/colour.cpp:35 -#, fuzzy -msgid "Whisper" -msgstr "%s fluistert:" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Spelen" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Server:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Ja" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Nee" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Verbinden..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Gebruiken" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Uitrusting" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Afdoen" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "Sluiten" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventaris" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Uitrusten" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Gebruiken" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Neerleggen" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " -msgstr "" +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "Gewicht: %d / %d" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Afdoen" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Uitrusten" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "Selecteer het aantal exemplaren om te verhandelen" @@ -635,244 +437,148 @@ msgstr "Selecteer het aantal exemplaren om te verhandelen" msgid "Select amount of items to drop." msgstr "Selecteer het aantal exemplaren om neer te leggen" -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Inloggen" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Wachtwoord:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Poort:" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "Behouden" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "Onthoud Naam" -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Aanmelden" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Status" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Vaardigheden" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Sneltoets" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Configureren" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "Kaartje" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Aanmelden" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Handelen met %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|%s aanvallen@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "Inventaris" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Praat met NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Annuleren@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|%s oppakken@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" msgstr "" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Uitrusten@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Gebruiken@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Neerleggen@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Verbinden..." +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|Beschrijving@@" -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Verbinden..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Verbinden..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Bevestigen:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "Mannelijk" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "Vrouwelijk" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "De gebruikersnaam moet uit ten minste %d tekens bestaan." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "De gebruikersnaam moet uit minder dan %d tekens bestaan." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "Het wachtwoord moet uit ten minste %d tekens bestaan." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "Het wachtwoord moet uit minder dan %d tekens bestaan." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Wachtwoorden komen niet overeen." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Fout" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Geluid" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Volume van geluiden" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Muziek volume" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Toepassen" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Vensters in beginstand" @@ -893,381 +599,291 @@ msgid "Keyboard" msgstr "Toetsenbord" #: src/gui/setup.cpp:94 -#, fuzzy -msgid "Colors" -msgstr "Sluiten" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "Spelers" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Geluid" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Volume van geluiden" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Muziek volume" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Druk op de knop om het kalibreren te starten" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Kalibreren" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Joystick activeren" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Stoppen" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Maak rondjes met de stick" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "Toewijzen" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 msgid "Default" msgstr "Standaard" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 msgid "Name" msgstr "Naam" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "Relatie" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "Neutraal" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "Vriend" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "Genegeerd" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Volledig scherm" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Aangepaste cursor" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "FPS limiet:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Dekking van de GUI" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Scroll radius" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "Scroll vertraging" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Omgevingseffecten" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "uit" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "laag" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "hoog" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "gemiddeld" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "max" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Volledig scherm" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Overgaan naar volledig scherm" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "De veranderingen worden pas actief na opnieuw opstarten" -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Veranderen van OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "Het wisselen van of naar OpenGL wordt pas actief na opnieuw opstarten" -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "De veranderingen worden pas actief na opnieuw opstarten" - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "De veranderingen worden pas actief na opnieuw opstarten" - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Vaardigheden" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Gebruiken" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, c-format msgid "Job: %d" msgstr "" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, c-format msgid "Money: %d GP" msgstr "Geld: %d GP" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 msgid "Job:" msgstr "" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 msgid "Stats" msgstr "" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "Totaal" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "Kosten" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 msgid "Attack:" msgstr "" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 msgid "Defense:" msgstr "" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 msgid "M.Attack:" msgstr "" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 msgid "M.Defense:" msgstr "" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 msgid "Strength" msgstr "" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 msgid "Agility" msgstr "" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 msgid "Vitality" msgstr "" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 msgid "Intelligence" msgstr "" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 msgid "Dexterity" msgstr "" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Toevoegen" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Jij krijgt %d GP." @@ -1276,947 +892,41 @@ msgstr "Jij krijgt %d GP." msgid "You give:" msgstr "Je geeft:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "Actualiseren..." -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "Spelen" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "Voltooid" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Annuleren" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -#, fuzzy -msgid "Trade completed." -msgstr "Voltooid" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "Naamloos" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -#, fuzzy -msgid "unnamed" -msgstr "Naamloos" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -#, fuzzy -msgid "Saving screenshot failed!" -msgstr "Zitten niet mogelijk!" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Weet je zeker dat je deze personage wilt verwijderen?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -msgid "Attack" -msgstr "" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -#, fuzzy -msgid "Talk" -msgstr "Totaal" - -#: src/keyboardconfig.cpp:49 -msgid "Stop Attack" -msgstr "" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -#, fuzzy -msgid "Target Player" -msgstr "Spelers" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Vensters in beginstand" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Splitsen" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Sneltoets" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Vensters in beginstand" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Status" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventaris" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Uitrusting" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Vensters in beginstand" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Vensters in beginstand" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Vensters in beginstand" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Vensters in beginstand" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Sneltoets" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Server Selecteren" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Verbinden met de account server..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Verbinden met de karakter server..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Verbinden met de map server..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Naam: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "De verbinding met de server werd verbroken!" -#: src/main.cpp:1068 +#: src/main.cpp:965 msgid "Connecting to map server..." msgstr "Verbinden met de map server..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "Verbinden met de karakter server..." -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "Verbinden met de account server..." -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventaris" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -#, fuzzy -msgid "Command: /party <command> <args>" -msgstr "Commando: /help <commando>" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Aanmaken" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -#, fuzzy -msgid "Command: /party new <party-name>" -msgstr "Commando: /announce <msg>" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -#, fuzzy -msgid "Command: /party prefix" -msgstr "Commando: /clear" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -#, fuzzy -msgid "Command: /party leave" -msgstr "Commando: /clear" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -#, fuzzy -msgid "Unknown /party command." -msgstr "Onbekende opdracht" - -#: src/party.cpp:215 -#, fuzzy -msgid "Type /help party for a list of options." -msgstr "Type /help voor een lijst van commando's." - -#, fuzzy -#~ msgid "Weight: %d g / %d g" -#~ msgstr "Gewicht: %d / %d" - -#, fuzzy -#~ msgid "Map" -#~ msgstr "Kaartje" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|Beschrijving@@" - -#~ msgid "Remember Username" -#~ msgstr "Onthoud Naam" +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" +msgstr "Naamloos" #~ msgid "Unregister" #~ msgstr "Registreren" @@ -2236,6 +946,9 @@ msgstr "Type /help voor een lijst van commando's." #~ msgid "Please remove %d points" #~ msgstr "Verwijder alstublieft %d punten" +#~ msgid "Split" +#~ msgstr "Splitsen" + #~ msgid "Switch server" #~ msgstr "Van server wisselen" @@ -2248,6 +961,9 @@ msgstr "Type /help voor een lijst van commando's." #~ msgid "Choose your Mana World Server" #~ msgstr "Kies uw Mana World server" +#~ msgid "Port:" +#~ msgstr "Poort:" + #~ msgid "Confirm" #~ msgstr "Bevestigen" @@ -2256,3 +972,6 @@ msgstr "Type /help voor een lijst van commando's." #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "Totaal gewicht: %d - Maximum gewicht: %d" + +#~ msgid "Keep" +#~ msgstr "Behouden" @@ -8,619 +8,430 @@ msgid "" msgstr "" "Project-Id-Version: The Mana World 0.1.0\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" -"PO-Revision-Date: 2008-10-10 05:26+0000\n" -"Last-Translator: MichaÅ‚ Trzebiatowski <Unknown>\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" +"PO-Revision-Date: 2009-01-27 17:06+0000\n" +"Last-Translator: Krzysztof Daszuta <irukard@gmail.com>\n" "Language-Team: <pl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" +"X-Launchpad-Export-Date: 2009-02-12 19:04+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Kup" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Cena: %d GP / Razem: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Wyjdź" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Opis: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Efekt: %s" -#: src/gui/buysell.cpp:30 -#, fuzzy +#: src/gui/buysell.cpp:31 msgid "Shop" -msgstr "Zatrzymaj" +msgstr "Sklep" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Sprzedaj" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Anuluj" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" -msgstr "" +msgstr "Potwierdź usuniÄ™cie postaci" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Czy jesteÅ› pewien, że chcesz usunąć tÄ™ postać?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Wybierz postać" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 -#, c-format -msgid "Name: %s" -msgstr "ImiÄ™: %s" - -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 -#, c-format -msgid "Level: %d" -msgstr "Poziom: %d" - -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 -#, fuzzy, c-format -msgid "Job Level: %d" -msgstr "Poziom: %d" - -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 -#, c-format -msgid "Money: %d" -msgstr "PieniÄ…dze: %d" +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 +#: src/gui/char_select.cpp:86 msgid "New" msgstr "Nowa" -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 msgid "Delete" msgstr "UsuÅ„" -#: src/gui/char_select.cpp:99 +#: src/gui/char_select.cpp:88 msgid "Previous" msgstr "Poprzedni" -#: src/gui/char_select.cpp:100 +#: src/gui/char_select.cpp:89 msgid "Next" msgstr "NastÄ™pny" -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 +#, c-format +msgid "Name: %s" +msgstr "ImiÄ™: %s" -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format -msgid "Gold: %d" +msgid "Level: %d" +msgstr "Poziom: %d" + +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 +#, c-format +msgid "Job Level: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 +#, c-format +msgid "Money: %d" +msgstr "PieniÄ…dze: %d" + +#: src/gui/char_select.cpp:174 +#, c-format +msgid "Gold: %d" +msgstr "ZÅ‚oto: %d" + +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Stwórz postać" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "ImiÄ™:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Kolor wÅ‚osów:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Fryzura:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Stwórz" -#: src/gui/char_server.cpp:49 -#, fuzzy +#: src/gui/char_server.cpp:52 msgid "Select Server" -msgstr "Wybierz postać" +msgstr "Wybierz serwer" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" -msgstr "" +msgstr "Ok" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Stwórz" +#: src/gui/chat.cpp:115 +msgid "Global announcement:" +msgstr "OgÅ‚oszenie ogólne:" -#: src/gui/chat.cpp:146 -msgid "Global announcement: " -msgstr "" - -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " -msgstr "" +msgid "Global announcement from %s:" +msgstr "OgÅ‚oszenie ogólne od %s:" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Serwer:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" +msgid "%s whispers:" +msgstr "%s szepcze:" -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." -msgstr "" +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" +msgstr "Szepczesz do %s: %s" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" -msgstr "" +msgstr "Nieznane polecenie" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" -msgstr "" +msgstr "Handel zakoÅ„czony niepowodzeniem!" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" -msgstr "" +msgstr "Masz za niski poziom!" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" -msgstr "" +msgstr "NiewystarczajÄ…ce PÅ»!" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" -msgstr "" +msgstr "Nie możesz teraz tego zrobić!" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" -msgstr "" +msgstr "Chyba potrzebujesz wiÄ™cej pieniÄ™dzy... ;-)" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" -msgstr "" +msgstr "Nie można użyć tej umiejÄ™tnoÅ›ci z takÄ… broniÄ…!" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" -msgstr "" +msgstr "JesteÅ› zbyt obciążony aby to zrobić!" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" -msgstr "" +msgstr "O! Co to?" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." -msgstr "" +msgstr "Nie mogÄ™ nic ukraść..." -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." -msgstr "" - -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "ZmieÅ„ ustawienia OpenGL" +msgstr "Trucizna nie zadziaÅ‚aÅ‚a..." -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" -msgstr "" +msgstr "-- Pomoc --" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" -msgstr "" +msgstr "/announce: OgÅ‚oszenie ogólne (tylko GM)" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" -msgstr "" +msgstr "/clear: CzyÅ›ci okno" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" -msgstr "" - -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" +msgstr "/help: WyÅ›wietla pomoc" -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" -msgstr "" +msgstr "/where: WyÅ›wietla nazwÄ™ mapy" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:804 +#: src/gui/chat.cpp:496 msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" -msgstr "" +msgstr "/whisper <postać> <wiadomość>: WysyÅ‚a prywatnÄ… <wiadomość> do <postać>" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" +msgstr "/w <postać> <wiadomość>: Krótka forma komendy /whisper" + +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" -msgstr "" +msgstr "/who: WyÅ›wietla liczbÄ™ połączonych graczy" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" -msgstr "" +msgstr "Aby uzyskać wiÄ™cej informacji wpisz /help <komenda>" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" -msgstr "" +msgstr "Komenda: /announce <wiadomość>" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" -msgstr "" +msgstr "*** dostÄ™pne tylko dla GM ***" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" +"Ta komenda wysyÅ‚a wiadomość <wiadomość> to wszystkich połączonych graczy." -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" -msgstr "" +msgstr "Komenda: /clear" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." -msgstr "" +msgstr "Ta komenda czyÅ›ci zawartość okna." -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" -msgstr "" +msgstr "Komenda: /help" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." -msgstr "" +msgstr "Ta komenda wyÅ›wietla listÄ™ dostÄ™pnych komend." -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" -msgstr "" +msgstr "Komenda: /help <komenda>" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." -msgstr "" - -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" +msgstr "Ta komenda wyÅ›wietla pomoc dotyczÄ…cÄ… <komenda>" -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" -msgstr "" +msgstr "Komenda: /where" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." -msgstr "" - -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" +msgstr "Ta komenda wyÅ›wietla nazwÄ™ aktualnej mapy." -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" -msgstr "" +msgstr "Komenda: /whisper <postać> <wiadomość>" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" -msgstr "" +msgstr "Komenda: /w <postać> <wiadomość>" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." -msgstr "" +msgstr "Ta komenda wysyÅ‚a wiadomość <wiadomość> do <postać>" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." -msgstr "" +msgstr "Jeżeli <postać> ma spacje należy jÄ… zapisać w cudzysÅ‚owie (\")" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" -msgstr "" +msgstr "Komenda: /who" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." -msgstr "" +msgstr "Ta komenda wyÅ›wietla liczbÄ™ połączonych graczy." -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." -msgstr "" +msgstr "Nieznane polecenie." -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." -msgstr "" - -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" +msgstr "Wpisz /help aby usyskać listÄ™ komend." -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "wysokie" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Port:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Serwer:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Tak" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Nie" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "ÅÄ…czenie..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Użyj" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Ekwipunek" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Zdejmij" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" -msgstr "" +msgstr "Pomoc" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" -msgstr "" +msgstr "Zamknij" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inwentarz" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Załóż" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Użyj" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Upuść" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " -msgstr "" +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "Ciężar: %d / %d" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Zdejmij" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Załóż" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "Wybierz ilość przedmiotów do wymiany." @@ -629,245 +440,148 @@ msgstr "Wybierz ilość przedmiotów do wymiany." msgid "Select amount of items to drop." msgstr "Wybierz ilość przedmiotów do upuszczenia." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Użytkownik" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "HasÅ‚o:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Port:" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "Zachowaj" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "ZapamiÄ™taj użytkownika" -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Rejestruj" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Stan" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "ZdolnoÅ›ci" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Skrót" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Konfiguracja" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "MiniMapa" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Rejestruj" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Targ z %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|Atakuj %s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "Inwentarz" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Rozmawiaj z NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Anuluj@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|PodnieÅ› %s@@" -#: src/gui/popupmenu.cpp:287 -#, fuzzy +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" -msgstr "@@use|Załóż@@" +msgstr "" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Załóż@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Użyj@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Upuść@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "ÅÄ…czenie..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "ÅÄ…czenie..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "ÅÄ…czenie..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|Opis@@" -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Potwierdź:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "Mężczyzna" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "Kobieta" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "Nazwa użytkownika musi być dÅ‚uga na conajmniej %d znaków." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "Nazwa użytkownika musi mieć mniej niż %d znaków." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "HasÅ‚o musi mieć conajmniej %d znaków." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "HasÅ‚o nie może mieć wiÄ™cej jak %d znaków." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "HasÅ‚a nie zgadzajÄ… siÄ™." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Błąd" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "DźwiÄ™k" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "GÅ‚oÅ›ność efektów dźwiÄ™kowych" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "GÅ‚oÅ›ność muzyki" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Zastosuj" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Zresetuj okna" @@ -885,397 +599,295 @@ msgstr "Joystick" #: src/gui/setup.cpp:90 msgid "Keyboard" -msgstr "" +msgstr "Klawiatura" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" -msgstr "" - -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" +msgstr "Gracze" -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "DźwiÄ™k" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "GÅ‚oÅ›ność efektów dźwiÄ™kowych" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "GÅ‚oÅ›ność muzyki" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "WciÅ›nij przycisk aby rozpocząć kalibracjÄ™" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Kalibruj" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Włącz joystick" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Zatrzymaj" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Obróć drążek" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" -msgstr "" +msgstr "Przypisz" -#: src/gui/setup_keyboard.cpp:90 -#, fuzzy +#: src/gui/setup_keyboard.cpp:92 msgid "Default" -msgstr "UsuÅ„" +msgstr "DomyÅ›lny" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." -msgstr "" +msgstr "Wykryto konflikt klawiszy." -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." -msgstr "" +msgstr "Rozwiąż go albo granie może być utrudnione." -#: src/gui/setup_players.cpp:56 -#, fuzzy +#: src/gui/setup_players.cpp:55 msgid "Name" -msgstr "ImiÄ™:" +msgstr "Nazwa" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" -msgstr "" +msgstr "Relacja" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" -msgstr "" +msgstr "Przyjaciel" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" -msgstr "" - -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" +msgstr "Ignorowany" -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" -msgstr "" +msgstr "Zapisz listÄ™ graczy" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" -msgstr "" +msgstr "Zezwól na handel" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" -msgstr "" +msgstr "Zezwój na szepty" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" -msgstr "" +msgstr "Gdy ignorowany:" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "PeÅ‚en ekran" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "WÅ‚asny kursor" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "Limit FPS:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Przezroczystość GUI" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Skok przy przewijaniu ekranu" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "Opóźnienie przy przewijaniu ekranu" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "DźwiÄ™ki otoczenia" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" -msgstr "" +msgstr "Detale czÄ…steczek" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "wyłączone" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "niskie" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "wysokie" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" -msgstr "" +msgstr "Å›redni" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" -msgstr "" - -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "PeÅ‚en ekran" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" +msgstr "max" -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Przełączanie na peÅ‚en ekran" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "Wymagane ponowne uruchomienia aby zastosować zmiany." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "ZmieÅ„ ustawienia OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "" "Zastosowywanie zmian w konfiguracji OpenGL wymaga ponownego uruchomienia." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "Wymagane ponowne uruchomienia aby zastosować zmiany." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "Wymagane ponowne uruchomienia aby zastosować zmiany." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "ZdolnoÅ›ci" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" -msgstr "" - -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Użyj" +msgstr "Góra" -#: src/gui/skill.cpp:262 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 -#, fuzzy, c-format msgid "Job: %d" -msgstr "Poziom: %d" +msgstr "" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 -#, fuzzy, c-format +#: src/gui/status.cpp:53 src/gui/status.cpp:241 +#, c-format msgid "Money: %d GP" -msgstr "PieniÄ…dze: %d" +msgstr "PieniÄ…dze: %d GP" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 -#, fuzzy +#: src/gui/status.cpp:67 msgid "Job:" -msgstr "Poziom: %d" +msgstr "" -#: src/gui/status.cpp:71 -#, fuzzy +#: src/gui/status.cpp:127 msgid "Stats" -msgstr "Stan" +msgstr "Statystyki" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" -msgstr "" +msgstr "Razem" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" -msgstr "" +msgstr "Koszt" -#: src/gui/status.cpp:77 -#, fuzzy +#: src/gui/status.cpp:132 msgid "Attack:" -msgstr "Atak %+d" +msgstr "Atak:" -#: src/gui/status.cpp:78 -#, fuzzy +#: src/gui/status.cpp:133 msgid "Defense:" -msgstr "Obrona %+d" +msgstr "Obrona:" -#: src/gui/status.cpp:79 -#, fuzzy +#: src/gui/status.cpp:134 msgid "M.Attack:" -msgstr "Atak %+d" +msgstr "Atak M.:" -#: src/gui/status.cpp:80 -#, fuzzy +#: src/gui/status.cpp:135 msgid "M.Defense:" -msgstr "Obrona %+d" +msgstr "Obrona M.:" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 -#, fuzzy +#: src/gui/status.cpp:285 msgid "Strength" -msgstr "SiÅ‚a:" +msgstr "SiÅ‚a" -#: src/gui/status.cpp:212 -#, fuzzy +#: src/gui/status.cpp:286 msgid "Agility" -msgstr "Zwinność:" +msgstr "" -#: src/gui/status.cpp:213 -#, fuzzy +#: src/gui/status.cpp:287 msgid "Vitality" -msgstr "Witalność:" +msgstr "Witalność" -#: src/gui/status.cpp:214 -#, fuzzy +#: src/gui/status.cpp:288 msgid "Intelligence" -msgstr "Inteligencja:" +msgstr "Inteligencja" -#: src/gui/status.cpp:215 -#, fuzzy +#: src/gui/status.cpp:289 msgid "Dexterity" -msgstr "ZrÄ™czność:" +msgstr "Celność" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" -msgstr "" +msgstr "Szczęście" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Dodaj" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "Handel" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Otrzymujesz %d GP" @@ -1284,939 +896,48 @@ msgstr "Otrzymujesz %d GP" msgid "You give:" msgstr "Dajesz:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." -msgstr "" +msgstr "Aktualizacja..." -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" -msgstr "" - -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" +msgstr "Graj" -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" -msgstr "" - -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" +msgstr "ZakoÅ„czono" -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Anuluj" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Czy jesteÅ› pewien, że chcesz usunąć tÄ™ postać?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Atak %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Atak %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Zresetuj okna" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Podziel" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Skrót" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Zresetuj okna" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Stan" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inwentarz" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Ekwipunek" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Zresetuj okna" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Zresetuj okna" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Zresetuj okna" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Zresetuj okna" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Skrót" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Wybierz postać" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "ÅÄ…czenie..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "ÅÄ…czenie..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "ÅÄ…czenie..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "ImiÄ™: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" -msgstr "" +msgstr "Rozłączono z serwerem!" -#: src/main.cpp:1068 -#, fuzzy +#: src/main.cpp:965 msgid "Connecting to map server..." -msgstr "ÅÄ…czenie..." +msgstr "ÅÄ…czenie z serwerem map..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." -msgstr "" +msgstr "ÅÄ…czenie z serwerem postaci..." -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." -msgstr "" - -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inwentarz" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Stwórz" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" +msgstr "ÅÄ…czenie z serwerem kont..." -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." -msgstr "" - -#, fuzzy -#~ msgid "Map" -#~ msgstr "MiniMapa" +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" +msgstr "Nienazwany" -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|Opis@@" +#~ msgid "Change" +#~ msgstr "ZmieÅ„" #~ msgid "Unregister" #~ msgstr "Wyrejestruj" -#~ msgid "Change Password" -#~ msgstr "ZmieÅ„ hasÅ‚o" - #~ msgid "Willpower:" #~ msgstr "SiÅ‚a woli:" @@ -2232,6 +953,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "ProszÄ™ usunąć %d punktów" +#~ msgid "Split" +#~ msgstr "Podziel" + #~ msgid "Select amount of items to split." #~ msgstr "Wybierz ilość przedmiotów do podziaÅ‚u." @@ -2250,6 +974,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "Wybierz serwer Mana World" +#~ msgid "Port:" +#~ msgstr "Port:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "ProszÄ™ wpisać adres i port serwera" @@ -2259,9 +986,6 @@ msgstr "" #~ msgid "Confirm trade" #~ msgstr "Potwierdź handel" -#~ msgid "Change" -#~ msgstr "ZmieÅ„" - #~ msgid "HP %+d" #~ msgstr "PÅ» %+d" @@ -2276,3 +1000,9 @@ msgstr "" #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "CaÅ‚kowita waga: %d - Maksymalna waga: %d" + +#~ msgid "Keep" +#~ msgstr "Zachowaj" + +#~ msgid "Change Password" +#~ msgstr "ZmieÅ„ hasÅ‚o" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-02-03 10:14+0000\n" "Last-Translator: Tiago Silva <Unknown>\n" "Language-Team: Portuguese <pt@li.org>\n" @@ -17,608 +17,420 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Comprar" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Preço: %d GP / Total: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Sair" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Descrição: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Efeito: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 #, fuzzy msgid "Shop" msgstr "Parar" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Vender" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Cancelar" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Tem a certeza que quer apagar este personagem" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Seleccione um Personagem" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Novo" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Eliminar" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Anterior" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Seguinte" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Nome: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "NÃvel: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "NÃvel: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Dinheiro: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Novo" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Eliminar" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Anterior" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Seguinte" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Criar Personagem" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Nome:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Cor de Cabelo:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Estilo do Cabelo:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Criar" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 #, fuzzy msgid "Select Server" msgstr "Seleccione um Personagem" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Criar" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Servidor:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Mudando OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "elevado" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Porta:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Servidor:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Sim" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Não" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Conectando..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Usar" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Equipamento" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Desequipar" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventário" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Equipar" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Usar" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Largar" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Desequipar" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Equipar" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "Seleccionar a quantidade de itens a negociar." @@ -627,245 +439,149 @@ msgstr "Seleccionar a quantidade de itens a negociar." msgid "Select amount of items to drop." msgstr "Seleccionar a quantidade de itens a largar." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Autenticar" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Senha:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Porta:" - -#: src/gui/login.cpp:55 -msgid "Recent:" +#: src/gui/login.cpp:50 +msgid "Remember Username" msgstr "" -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "Manter" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Registo" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Estado" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Competências" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Atalho" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Configuração" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "MiniMapa" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Registo" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Negociar com %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|Atacar %s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "Inventário" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Falar com o NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Cancelar@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|Apanhar %s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 #, fuzzy msgid "@@use|Unequip@@" msgstr "@@use|Equipar@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Equipar@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Usar@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Largar@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Conectando..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Conectando..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Conectando..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@descrição|Descrição@@" -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Confirmar:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "O nome de utilizador necessita de pelo menos %d caracteres." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "O nome de utilizador só pode ter %d caracteres." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "A password necessita de pelo menos %d caracteres." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "A password só pode ter até %d caracteres." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "As senhas não coincidem." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Erro" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Som" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Volume dos Efeitos" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Volume da Música" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Aplicar" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Reiniciar Janelas" @@ -886,401 +602,312 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Som" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Volume dos Efeitos" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Volume da Música" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Pressione o botão para começar a calibragem" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Calibrar" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Habilitar Joystick" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Parar" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Rode o manipulo" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "Eliminar" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "Nome:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Ecrã completo" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Cursor personalizado" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "Limite de FPS:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Opacidade do Interface" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Efeitos Ambientais" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "desligado" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "baixo" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "elevado" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Ecrã completo" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Mudar para ecrã completo" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "É necessário reiniciar para as alterações terem efeito." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Mudando OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "É necessário reiniciar para as alterações ao OpenGl terem efeito." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "É necessário reiniciar para as alterações terem efeito." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "É necessário reiniciar para as alterações terem efeito." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Competências" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Usar" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "NÃvel: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "Dinheiro: %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "NÃvel: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "Estado" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 #, fuzzy msgid "Attack:" msgstr "" "Copy text \t\r\n" "Ataque %+d" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 #, fuzzy msgid "Defense:" msgstr "" "Copy text \t\r\n" "Defesa %+d" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 #, fuzzy msgid "M.Attack:" msgstr "" "Copy text \t\r\n" "Ataque %+d" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 #, fuzzy msgid "M.Defense:" msgstr "" "Copy text \t\r\n" "Defesa %+d" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "Força:" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "Agilidade:" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "Vitalidade:" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "Inteligência:" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "Destreza:" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Adicionar" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Recebe %d GP." @@ -1289,937 +916,43 @@ msgstr "Recebe %d GP." msgid "You give:" msgstr "Dá:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Cancelar" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Tem a certeza que quer apagar este personagem" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "" -"Copy text \t\r\n" -"Ataque %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "" -"Copy text \t\r\n" -"Ataque %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Reiniciar Janelas" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Dividir" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Atalho" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Reiniciar Janelas" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Estado" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventário" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Equipamento" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Reiniciar Janelas" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Reiniciar Janelas" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Reiniciar Janelas" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Reiniciar Janelas" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Atalho" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Seleccione um Personagem" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Conectando..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Conectando..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Conectando..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Nome: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "Conectando..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventário" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Criar" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#, fuzzy -#~ msgid "Map" -#~ msgstr "MiniMapa" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@descrição|Descrição@@" - #~ msgid "Unregister" #~ msgstr "Remover o Registo" @@ -2238,6 +971,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "Por favor remova %d pontos" +#~ msgid "Split" +#~ msgstr "Dividir" + #~ msgid "Select amount of items to split." #~ msgstr "Seleccionar a quantidade de itens a dividir." @@ -2256,6 +992,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "Escolha o seu Servidor de Mana World" +#~ msgid "Port:" +#~ msgstr "Porta:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "Por favor escreva o endereço e a porta do servidor." @@ -2282,3 +1021,6 @@ msgstr "" #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "Peso Total: %d - Peso Máximo: %d" + +#~ msgid "Keep" +#~ msgstr "Manter" diff --git a/po/pt_BR.po b/po/pt_BR.po index 82845f7b..3a0ab6fb 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2009-01-21 20:48+0000\n" "Last-Translator: Bruno <brunorafaelcardoso@gmail.com>\n" "Language-Team: Brazilian Portuguese <pt_BR@li.org>\n" @@ -17,620 +17,417 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-25 22:24+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Comprar" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Preço: %d GP / Total: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Sair" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Descrição: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Efeito: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "Loja" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Vender" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Cancelar" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "Confimar exclusão do personagem" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Tem certeza que deseja excluir este personagem?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Selecionar personagem" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Novo" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Excluir" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Anterior" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Próximo" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Nome: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "NÃvel: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, c-format msgid "Job Level: %d" msgstr "NÃvel de Trabalho: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Dinheiro: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Novo" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Excluir" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Anterior" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Próximo" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "Ouro: %d" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Criar Personagem" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Nome:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Cor do Cabelo:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Estilo do Cabelo:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Criar" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 msgid "Select Server" msgstr "Selecionar Servidor" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "OK" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Criar" - -#: src/gui/chat.cpp:146 -#, fuzzy -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "Anúncio geral:" -#: src/gui/chat.cpp:151 -#, fuzzy, c-format -msgid "Global announcement from %s: " +#: src/gui/chat.cpp:118 +#, c-format +msgid "Global announcement from %s:" msgstr "Anúncio geral de %s:" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Servidor:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 +#, c-format +msgid "%s whispers:" +msgstr "%s sussura:" + +#: src/gui/chat.cpp:276 #, c-format msgid "Whispering to %s: %s" msgstr "Sussurrando para %s: %s" -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -#, fuzzy -msgid "Unknown item" -msgstr "Comando desconhecido" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." -msgstr "" - -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "Comando desconhecido" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "Falha na negociação!" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "Falha no Emote!" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "Falha ao sentar!" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "Falha ao criar Chat!" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "Impossivel entrar no grupo!" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "Impossivel gritar!" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "Você ainda não tem nivel necessário!" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "HP insuficiente!" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "SP insuficiente!" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "Você não tem nenhuma nota armazenada" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "Você não pode fazer isso agora!" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "Parece que você precisa de mais Zenyz... ;-)" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "Você não pode usar essa Skill com esse tipo de arma." -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "Você precisa de outra gema vermelha!" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "Você precisa de outra gema azul!" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "Você está com muita carga para fazer isso!" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "Hã? O que é isso?" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "Falha ao transportar..." -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "Não foi possÃvel roubar nada..." -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "Veneno não surtiu efeito..." -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Trocando OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "--Ajuda--" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "/announce: Aviso geral (Apenas GM)" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "/clear: limpa esta janela" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "/help: Mostra esta ajuda" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -#, fuzzy -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "/w <nick> <mensagem>: Forma mais curta para /whisper" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "/where: mostra o nome do mapa" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" -msgstr "/w <nick> <mensagem>: Forma mais curta para /whisper" - -#: src/gui/chat.cpp:804 +#: src/gui/chat.cpp:496 msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "/whisper <nick> <mensagem>: Envia uma mensagem particular" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" +msgstr "/w <nick> <mensagem>: Forma mais curta para /whisper" + +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "/who Mostra os jogadores online" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "Para mais informações, digite /help <comando>" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "Comandos: /announce <msg>" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "*** Disponivel apenas para GM's ***" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "Este comando envia uma mensagem <msg> para todos os jogadores online." -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "Comandos: /clear" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "Limpa os logs do chat anterior." -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "Comando: /help" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "Exibe uma lista de todos os comandos disponiveis." -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "Comando: /help <comando>" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "Exibe o conteudo de ajuda de <comando>" -#: src/gui/chat.cpp:836 -#, fuzzy -msgid "Command: /present" -msgstr "Comando: /where" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -#, fuzzy -msgid "Command: /record <filename>" -msgstr "Comandos: /clear" - -#: src/gui/chat.cpp:844 -#, fuzzy -msgid "This command starts recording the chat log to the file <filename>." -msgstr "Limpa os logs do chat anterior." - -#: src/gui/chat.cpp:846 -#, fuzzy -msgid "Command: /record" -msgstr "Comandos: /clear" - -#: src/gui/chat.cpp:847 -#, fuzzy -msgid "This command finishes a recording session." -msgstr "Exibe o conteudo de ajuda de <comando>" - -#: src/gui/chat.cpp:851 -#, fuzzy -msgid "Command: /toggle <state>" -msgstr "Comandos: /announce <msg>" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -#, fuzzy -msgid "Command: /toggle" -msgstr "Comandos: /clear" - -#: src/gui/chat.cpp:859 -#, fuzzy -msgid "This command displays the return toggle status." -msgstr "Mostra o nome do mapa atual." - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "Comando: /where" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "Mostra o nome do mapa atual." -#: src/gui/chat.cpp:869 -#, fuzzy -msgid "Command: /msg <nick> <msg>" -msgstr "Comando: /w <nick> <msg>" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "Comando: /whisper <nick> <msg>" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "Comando: /w <nick> <msg>" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "Envia uma mensagem <msg> para <nick>." -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "Se <nick> possuir espaços, coloque dentro de parenteses (\")." -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "Comando: /who" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "Exibe o total de jogadores online." -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "Comando desconhecido." -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "Digite /help para uma lista de todos os comandos." -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "alto" - -#: src/gui/colour.cpp:34 -#, fuzzy -msgid "Player" -msgstr "Jogadores" - -#: src/gui/colour.cpp:35 -#, fuzzy -msgid "Whisper" -msgstr "%s sussura:" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Jogar" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Servidor:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Sim" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Não" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Conectando..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Usar" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Equipamento" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Desequipar" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "Ajuda" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "Fechar" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventório" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Equipar" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Usar" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Descartar" -#: src/gui/inventorywindow.cpp:84 -#, fuzzy -msgid "Slots: " -msgstr "Pontos de habilidade: %d" +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "Capacidade: %d / %d" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " -msgstr "" +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" +msgstr "Slots usados: %d/%d" + +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Desequipar" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Equipar" #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." @@ -640,244 +437,148 @@ msgstr "Selecionar montante de itens para negociar." msgid "Select amount of items to drop." msgstr "Selecionar montante de itens para descartar." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Login" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Senha:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Porta:" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "Lembrar nome de usuário" -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "Manter" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Registrar" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Status" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Habilidades" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Atalho" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Configurar" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "MiniMapa" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Registrar" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@Negociar|Negociar com %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@atacar|Atacar %s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, fuzzy, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "Desconsiderado" - -#: src/gui/popupmenu.cpp:89 -#, fuzzy, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "@@guilda|convidar %s@@" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "@@grupo|Convidar %s para entrar para o seu grupo" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@falar|Falar com NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancelar|Cancelar@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pegar|Pegar %s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" msgstr "@@usar|Desequipar@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@usar|Equipar@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@usar|Usar@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@descartar|Descartar@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@descrição|Descrição@@" -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Conectando..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Conectando..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Conectando..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Confirmar:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "Homem" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "Mulher" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "O nome do usuário precisa ter pelo menos %d caracteres." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "O nome do usuário tem que ser inferior a %d caracteres." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "A senha deve ter pelo menos %d caracteres." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "A senha deve ser menor que %d caracteres." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Senhas não conferem." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Erro" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Som" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Volume Sfx" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Volume da Música" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Aplicar" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Restaurar janelas" @@ -898,384 +599,292 @@ msgid "Keyboard" msgstr "Teclado" #: src/gui/setup.cpp:94 -#, fuzzy -msgid "Colors" -msgstr "Fechar" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "Jogadores" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Som" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Volume Sfx" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Volume da Música" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Aperto o botão para começar a calibração" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Calibrar" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Habilitar joystick" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Parar" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Gire o bastão" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "Atribuir" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 msgid "Default" msgstr "Padrão" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "Conflitos nas teclas detectado." -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "Corrija-os, ou o jogo irá se comportar de forma estranha." -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 msgid "Name" msgstr "Nome" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "Relação" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "Neutro" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "Amigo" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "Desconsiderado" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "Ignorado" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "Salvar lista de jogadores" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "Permitir trocas" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "Permitir sussuros" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "Quando ignorado:" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Tela cheia" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Cursor customizado" -#: src/gui/setup_video.cpp:120 -#, fuzzy -msgid "Particle effects" -msgstr "Detalhe de partÃculas" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "Limite FPS:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Opacidade da GUI" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Rolar radius" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "Rolar Laziness" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Ambiente FX" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "Detalhe de partÃculas" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "desligado" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "baixo" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "alto" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "médio" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "máximo" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Tela cheia" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Mudando para Tela cheia" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "É preciso reiniciar para as mudanças terem efeito." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Trocando OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "Aplicando mudança a OpenGL requer reiniciar o jogo." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" +msgstr "Habilidade Mistério" -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "É preciso reiniciar para as mudanças terem efeito." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "É preciso reiniciar para as mudanças terem efeito." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Habilidades" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "Pontos de habilidade: %d" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "Acima" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Usar" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, c-format msgid "Job: %d" msgstr "Trabalho: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, c-format msgid "Money: %d GP" msgstr "Dinheiro: %d GP" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "Trabalho: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 msgid "Stats" msgstr "Status" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "Total" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "Custo" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 msgid "Attack:" msgstr "Ataque:" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 msgid "Defense:" msgstr "Defesa:" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 msgid "M.Attack:" msgstr "M. Ataque:" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 msgid "M.Defense:" msgstr "M. Defesa:" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "% Acuracidade:" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "% Evasão:" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "% Reflexo:" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 msgid "Strength" msgstr "Força" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 msgid "Agility" msgstr "Agilidade" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 msgid "Vitality" msgstr "Vitalidade" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 msgid "Intelligence" msgstr "Inteligência" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 msgid "Dexterity" msgstr "Destreza" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "Sorte" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "Pontos de Status Restantes: %d" -#: src/gui/trade.cpp:49 -#, fuzzy -msgid "Trade: You" -msgstr "Comércio" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "Comércio" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Adicionar" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "Comércio" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Voc pegou %d GP." @@ -1284,968 +893,42 @@ msgstr "Voc pegou %d GP." msgid "You give:" msgstr "Você dá:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" "Falha ao adicionar item. Você não pode duplicar um tipo de item na janela." -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "Atualizando..." -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "Jogar" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "ConcluÃdo" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -#, fuzzy -msgid "You are not that alive anymore." -msgstr "Você não pode fazer isso agora!" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -#, fuzzy -msgid "You are no more." -msgstr "Você não tem nenhuma nota armazenada" - -#: src/net/playerhandler.cpp:234 -#, fuzzy -msgid "You have ceased to be." -msgstr "Você não tem nenhuma nota armazenada" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -#, fuzzy -msgid "Trade with " -msgstr "Comércio" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Cancelar" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -#, fuzzy -msgid "Trade canceled." -msgstr "Falha na negociação!" - -#: src/net/tradehandler.cpp:214 -#, fuzzy -msgid "Trade completed." -msgstr "ConcluÃdo" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "Sem nome" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -#, fuzzy -msgid "unnamed" -msgstr "Sem nome" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -#, fuzzy -msgid "Saving screenshot failed!" -msgstr "Falha ao sentar!" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Tem certeza que deseja excluir este personagem?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Ataque:" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -#, fuzzy -msgid "Talk" -msgstr "Total" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Ataque:" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -#, fuzzy -msgid "Target Player" -msgstr "Jogadores" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Restaurar janelas" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Dividir" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Atalho" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Restaurar janelas" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Status" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventório" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Equipamento" - -#: src/keyboardconfig.cpp:75 -#, fuzzy -msgid "Skill Window" -msgstr "Pontos de habilidade: %d" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Restaurar janelas" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Restaurar janelas" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Restaurar janelas" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Falha no Emote!" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Atalho" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Selecionar Servidor" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -#, fuzzy -msgid " -h --help : Display this help" -msgstr "/help: Mostra esta ajuda" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Conectando ao servidor de contas..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Conectando ao servidor de personagens..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Conectando ao servidor de mapas..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Nome: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "Você foi desconectado do servidor!" -#: src/main.cpp:1068 +#: src/main.cpp:965 msgid "Connecting to map server..." msgstr "Conectando ao servidor de mapas..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "Conectando ao servidor de personagens..." -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "Conectando ao servidor de contas..." -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -#, fuzzy -msgid "Could not create party." -msgstr "Impossivel entrar no grupo!" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventório" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -#, fuzzy -msgid "Command: /party <command> <args>" -msgstr "Comando: /help <comando>" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Criar" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -#, fuzzy -msgid "This command implements the partying function." -msgstr "Exibe o conteudo de ajuda de <comando>" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -#, fuzzy -msgid "Command: /party new <party-name>" -msgstr "Comandos: /announce <msg>" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -#, fuzzy -msgid "This command sets the party prefix character." -msgstr "Limpa os logs do chat anterior." - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -#, fuzzy -msgid "Command: /party prefix" -msgstr "Comandos: /clear" - -#: src/party.cpp:201 -#, fuzzy -msgid "This command reports the current party prefix character." -msgstr "Limpa os logs do chat anterior." - -#: src/party.cpp:209 -#, fuzzy -msgid "Command: /party leave" -msgstr "Comandos: /clear" - -#: src/party.cpp:210 -#, fuzzy -msgid "This command causes the player to leave the party." -msgstr "Limpa os logs do chat anterior." - -#: src/party.cpp:214 -#, fuzzy -msgid "Unknown /party command." -msgstr "Comando desconhecido." - -#: src/party.cpp:215 -#, fuzzy -msgid "Type /help party for a list of options." -msgstr "Digite /help para uma lista de todos os comandos." - -#, fuzzy -#~ msgid "Weight: %d g / %d g" -#~ msgstr "Capacidade: %d / %d" - -#~ msgid "Slots used: %d / %d" -#~ msgstr "Slots usados: %d/%d" - -#, fuzzy -#~ msgid "Map" -#~ msgstr "MiniMapa" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@descrição|Descrição@@" - -#~ msgid "Remember Username" -#~ msgstr "Lembrar nome de usuário" - -#~ msgid "Mystery Skill" -#~ msgstr "Habilidade Mistério" +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" +msgstr "Sem nome" #~ msgid "Change" #~ msgstr "Mudar" @@ -2268,6 +951,9 @@ msgstr "Digite /help para uma lista de todos os comandos." #~ msgid "Please remove %d points" #~ msgstr "Por favor remova %d pontos" +#~ msgid "Split" +#~ msgstr "Dividir" + #~ msgid "Select amount of items to split." #~ msgstr "Selecionar montante de itens para dividir." @@ -2286,6 +972,9 @@ msgstr "Digite /help para uma lista de todos os comandos." #~ msgid "Choose your Mana World Server" #~ msgstr "Escolha seu Servidor de Mana World" +#~ msgid "Port:" +#~ msgstr "Porta:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "Por favor especifique ambos os Endereços e a Porta do servidor" @@ -2310,6 +999,9 @@ msgstr "Digite /help para uma lista de todos os comandos." #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "Peso Total: %d - Peso Máximo: %d" +#~ msgid "Keep" +#~ msgstr "Manter" + #~ msgid "Account and Character Management" #~ msgstr "Gerenciamento de Conta e Personagem" @@ -2325,5 +1017,11 @@ msgstr "Digite /help para uma lista de todos os comandos." #~ msgid "Guilds" #~ msgstr "Guildas" +#~ msgid "@@guild|Invite %s@@" +#~ msgstr "@@guilda|convidar %s@@" + +#~ msgid "@@party|Invite %s to join your party@@" +#~ msgstr "@@grupo|Convidar %s para entrar para o seu grupo" + #~ msgid "Visible names" #~ msgstr "Nomes visÃveis" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-01-08 11:50+0000\n" "Last-Translator: idle sign <Unknown>\n" "Language-Team: Russian <ru@li.org>\n" @@ -17,608 +17,420 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Купить" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "СтоимоÑть: %d GP / Ð’Ñегоl: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Выход" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "ОпиÑание: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Ðффект: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 #, fuzzy msgid "Shop" msgstr "Стоп" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Продать" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Отмена" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Ð’Ñ‹ уверены, что хотите удалить Ñтого перÑонажа?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Выбор перÑонажа" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Ðовый" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Удалить" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Предыдущий" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Следующий" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "ИмÑ: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "Уровень: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "Уровень: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Деньги: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Ðовый" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Удалить" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Предыдущий" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Следующий" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Создать перÑонажа" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "ИмÑ:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Цвет волоÑ:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Стрижка:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Создать" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 #, fuzzy msgid "Select Server" msgstr "Выбор перÑонажа" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Создать" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Сервер:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Переключение на OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "выÑ." - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Порт:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Сервер:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Да" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Ðет" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Соединение..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "ИÑпользовать" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "СнарÑжение" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "СнÑть" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Инвентарь" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Ðадеть" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "ИÑпользовать" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "СброÑить" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "СнÑть" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Ðадеть" + #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." msgstr "Сколько предметов продать." @@ -627,245 +439,149 @@ msgstr "Сколько предметов продать." msgid "Select amount of items to drop." msgstr "Сколько предметов ÑброÑить." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Вход" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Пароль:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Порт:" - -#: src/gui/login.cpp:55 -msgid "Recent:" +#: src/gui/login.cpp:50 +msgid "Remember Username" msgstr "" -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "ОÑтавить" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "ЗарегиÑтрироватьÑÑ" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "СоÑтоÑние" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "УмениÑ" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Клавиша" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "ÐаÑтройка" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "МиниКарта" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "ЗарегиÑтрироватьÑÑ" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Торговать Ñ %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|Ðтаковать %s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "Инвентарь" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Говорить Ñ NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancelОтмена@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|Подобрать %s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 #, fuzzy msgid "@@use|Unequip@@" msgstr "@@use|Ðадеть@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Ðадеть@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|ИÑпользовать@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|СброÑить@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Соединение..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Соединение..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|ОпиÑание@@" -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Соединение..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Подтвердите:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ñодержать не менее %d Ñимволов." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ должно Ñодержать более %d Ñимволов." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "Пароль должен Ñодержать не менее %d Ñимволов." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "Пароль не должен Ñодержать более %d Ñимволов." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Пароли не Ñовпадают." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Ошибка" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Звук" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "ГромкоÑть Ñффектов" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "ГромкоÑть музыки" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Применить" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "ВоÑÑтановить раÑположение окон" @@ -886,393 +602,304 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Звук" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "ГромкоÑть Ñффектов" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "ГромкоÑть музыки" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Ðажмите кнопку, чтобы начать калибровку" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Калибровать" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "ИÑпользовать джойÑтик" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Стоп" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Вращайте рукоÑть" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "Удалить" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "ИмÑ:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Ðа полный Ñкран" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Выборочный курÑор" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "Ограничение кадр/Ñ:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "ПрозрачноÑть интерфейÑа" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Ð Ð°Ð´Ð¸ÑƒÑ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ¸" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "ЗаторможенноÑть прокрутки" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Ðффекты окружающей Ñреды" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "выкл" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "низ." -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "выÑ." -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Ðа полный Ñкран" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Переключение в полноÑкранный режим" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "Ð”Ð»Ñ Ð²ÑÑ‚ÑƒÐ¿Ð»ÐµÐ½Ð¸Ñ Ð² Ñилу выбранных наÑтроек требуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° игры." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Переключение на OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "Переход к OpenGL требует перезагрузки игры." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "Ð”Ð»Ñ Ð²ÑÑ‚ÑƒÐ¿Ð»ÐµÐ½Ð¸Ñ Ð² Ñилу выбранных наÑтроек требуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° игры." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "Ð”Ð»Ñ Ð²ÑÑ‚ÑƒÐ¿Ð»ÐµÐ½Ð¸Ñ Ð² Ñилу выбранных наÑтроек требуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° игры." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "УмениÑ" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "ИÑпользовать" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "Уровень: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "Деньги: %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "Уровень: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "СоÑтоÑние" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 #, fuzzy msgid "Attack:" msgstr "Ðтака %+d" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 #, fuzzy msgid "Defense:" msgstr "Защита %+d" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 #, fuzzy msgid "M.Attack:" msgstr "Ðтака %+d" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 #, fuzzy msgid "M.Defense:" msgstr "Защита %+d" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "Сила:" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "ВыноÑливоÑть:" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "ЖивучеÑть:" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "Интеллект:" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "ЛовкоÑть:" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Добавить" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Ð’Ñ‹ получили %d GP." @@ -1281,933 +908,43 @@ msgstr "Ð’Ñ‹ получили %d GP." msgid "You give:" msgstr "Ð’Ñ‹ отдаете:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Отмена" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Ð’Ñ‹ уверены, что хотите удалить Ñтого перÑонажа?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Ðтака %+d" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Ðтака %+d" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "ВоÑÑтановить раÑположение окон" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Разделить" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Клавиша" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "ВоÑÑтановить раÑположение окон" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "СоÑтоÑние" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Инвентарь" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "СнарÑжение" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "ВоÑÑтановить раÑположение окон" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "ВоÑÑтановить раÑположение окон" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "ВоÑÑтановить раÑположение окон" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "ВоÑÑтановить раÑположение окон" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Клавиша" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Выбор перÑонажа" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Соединение..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Соединение..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Соединение..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "ИмÑ: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "Соединение..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Инвентарь" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Создать" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" -#, fuzzy -#~ msgid "Map" -#~ msgstr "МиниКарта" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|ОпиÑание@@" - #~ msgid "Unregister" #~ msgstr "Удалить региÑтрацию" @@ -2226,6 +963,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "Снимите очки (%d)" +#~ msgid "Split" +#~ msgstr "Разделить" + #~ msgid "Select amount of items to split." #~ msgstr "Сколько предметов разделить." @@ -2244,6 +984,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "Выберите Ñервер Mana World" +#~ msgid "Port:" +#~ msgstr "Порт:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "Следует указать Ð°Ð´Ñ€ÐµÑ Ð¸ порт Ñервера." @@ -2270,3 +1013,6 @@ msgstr "" #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "Суммарный веÑ: %d - МакÑ. веÑ: %d" + +#~ msgid "Keep" +#~ msgstr "ОÑтавить" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-12-30 14:07+0000\n" "Last-Translator: TomasKovacik <nail@nodomain.sk>\n" "Language-Team: Slovak <sk@li.org>\n" @@ -17,601 +17,417 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "KúpiÅ¥" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Cena: %d GP / Spolu: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "UkonÄiÅ¥" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Popis: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Effekt: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "ZruÅ¡iÅ¥" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "Potvrdte zmazanie postavy" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Naozaj chcete odstrániÅ¥ túto postavu?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 #, fuzzy msgid "Select Character" msgstr "VytvoriÅ¥ postavu" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ano" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Nový" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "VymazaÅ¥" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "Predchádzajúci" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Nasledujúci" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "Level: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, fuzzy, c-format msgid "Job Level: %d" msgstr "Level: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Peniaze: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Nový" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "VymazaÅ¥" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "Predchádzajúci" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Nasledujúci" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ano" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "VytvoriÅ¥ postavu" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Meno" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "Farba vlasov:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Å týl vlasov:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "VytvoriÅ¥" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 msgid "Select Server" msgstr "" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "VytvoriÅ¥" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -msgid "Changing prefix to " -msgstr "" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -msgid "Highlight" -msgstr "" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -msgid "Party" -msgstr "" - -#: src/gui/colour.cpp:38 -msgid "Server" -msgstr "" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "" -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" msgstr "" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" msgstr "" #: src/gui/item_amount.cpp:76 @@ -622,240 +438,147 @@ msgstr "" msgid "Select amount of items to drop." msgstr "" -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" +#: src/gui/login.cpp:50 +msgid "Remember Username" msgstr "" -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "" -#: src/gui/npcintegerdialog.cpp:33 -msgid "NPC Number Request" +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 -msgid "Reset" +#: src/gui/npcintegerdialog.cpp:38 +msgid "NPC Number Request" msgstr "" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" +#: src/gui/npcintegerdialog.cpp:45 +msgid "Reset" msgstr "" -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 +#: src/gui/popupmenu.cpp:81 #, c-format msgid "@@trade|Trade With %s@@" msgstr "" -#: src/gui/popupmenu.cpp:79 +#: src/gui/popupmenu.cpp:83 #, c-format msgid "@@attack|Attack %s@@" msgstr "" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" msgstr "" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -msgid "Recorder" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" msgstr "" -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -msgid "Already recording." -msgstr "" - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -msgid "Recording..." -msgstr "" - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "Muž" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "Žena" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "" -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "" @@ -876,380 +599,296 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " +#: src/gui/setup_audio.cpp:42 +msgid "Sound" msgstr "" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" msgstr "" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" msgstr "" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "VymazaÅ¥" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "Meno" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "fullscreen" -msgstr "" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "" -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "" -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -msgid "Restart your client for the change to take effect." +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -msgid "Restart your client or change maps for the change to take effect." -msgstr "" - -#: src/gui/skill.cpp:41 -msgid "skills.xml" -msgstr "" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -msgid "use" -msgstr "" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, fuzzy, c-format msgid "Job: %d" msgstr "Level: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, fuzzy, c-format msgid "Money: %d GP" msgstr "Peniaze: %d" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 #, fuzzy msgid "Job:" msgstr "Level: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 msgid "Stats" msgstr "" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 msgid "Attack:" msgstr "" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 msgid "Defense:" msgstr "" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 msgid "M.Attack:" msgstr "" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 msgid "M.Defense:" msgstr "" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "Sila:" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 msgid "Agility" msgstr "" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 msgid "Vitality" msgstr "" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "Inteligencia:" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 msgid "Dexterity" msgstr "" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" +#: src/gui/trade.cpp:61 +msgid "Add" msgstr "" -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 +#: src/gui/trade.cpp:64 msgid "Trade" msgstr "" -#: src/gui/trade.cpp:61 -msgid "Add" -msgstr "" - -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "" @@ -1258,906 +897,40 @@ msgstr "" msgid "You give:" msgstr "" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "ZruÅ¡iÅ¥" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Naozaj chcete odstrániÅ¥ túto postavu?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -msgid "Attack" -msgstr "" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -msgid "Stop Attack" -msgstr "" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -msgid "Hide Windows" -msgstr "" - -#: src/keyboardconfig.cpp:55 -msgid "Sit" -msgstr "" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, c-format -msgid "Item Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:71 -msgid "Help Window" -msgstr "" - -#: src/keyboardconfig.cpp:72 -msgid "Status Window" -msgstr "" - -#: src/keyboardconfig.cpp:73 -msgid "Inventory Window" -msgstr "" - -#: src/keyboardconfig.cpp:74 -msgid "Equipment WIndow" -msgstr "" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -msgid "Chat Window" -msgstr "" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -msgid "Setup Window" -msgstr "" - -#: src/keyboardconfig.cpp:80 -msgid "Debug Window" -msgstr "" - -#: src/keyboardconfig.cpp:81 -msgid "Emote Window" -msgstr "" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, c-format -msgid "Emote Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -msgid "Select OK" -msgstr "" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -msgid "Trying to connect to account server..." -msgstr "" - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -msgid "Trying to connect to char server..." -msgstr "" - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -msgid "Trying to connect to map server..." -msgstr "" - -#: src/main.cpp:700 -#, c-format -msgid "Map: %s" -msgstr "" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 msgid "Connecting to map server..." msgstr "" -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -msgid "Invite to party" -msgstr "" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "VytvoriÅ¥" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" #~ msgid "Account and Character Management" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2009-01-29 01:20+0100\n" "Last-Translator: Kess Vargavind <vargavind@gmail.com>\n" "Language-Team: Swedish <sv@li.org>\n" @@ -17,610 +17,419 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "Köp" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "Pris: %d GP / Totalt: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "Avsluta" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "Beskrivning: %s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "Effekt: %s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "Affär" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "Sälj" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "Avbryt" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "Bekräfta borttagning av karaktär" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "Är du säker pÃ¥ att du vill ta bort den här karaktären?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "Välj karaktär" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "Ok" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "Ny" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "Ta bort" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "FöregÃ¥ende" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "Nästa" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "Namn: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "NivÃ¥: %d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, c-format msgid "Job Level: %d" msgstr "JobbnivÃ¥: %d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "Pengar: %d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "Ny" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "Ta bort" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "FöregÃ¥ende" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "Nästa" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "Ok" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "Guld: %d" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "Skapa karaktär" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "Namn:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "HÃ¥rfärg:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "Frisyr:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "Skapa" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 msgid "Select Server" msgstr "Välj server" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "Ok" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "Skapa" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " -msgstr "Globalt meddelande: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" +msgstr "Globalt meddelande:" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " -msgstr "Globalt meddelande frÃ¥n %s: " +msgid "Global announcement from %s:" +msgstr "Globalt meddelande frÃ¥n %s:" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "Server:" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 +#, c-format +msgid "%s whispers:" +msgstr "%s viskar:" + +#: src/gui/chat.cpp:276 #, c-format msgid "Whispering to %s: %s" msgstr "Viskar till %s: %s" -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." -msgstr "" - -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "Okänt kommando" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "Byteshandel misslyckades!" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "Kan inte visa smiley!" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "Kan inte sitta ned!" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "Kan inte skicka chattmeddelande!" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "Kan inte ansluta till gruppen!" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "Kan inte skrika!" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "Du har inte nÃ¥tt en tillräckligt hög nivÃ¥ än!" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "Otillräckligt med HP!" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "Otillräckligt med SP!" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "Du har inga anteckningar!" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "Du kan inte göra det just nu!" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "Verkar som att du behöver mer zeny... ;-)" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "Det gÃ¥r inte att använda den här förmÃ¥gan med det där vapenslaget!" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "Du behöver en till röd juvel!" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "Du behöver en till blÃ¥ juvel!" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "Du bär pÃ¥ för mycket för att kunna göra det här!" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "Öh? Vad är det där?" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "Kartförflyttning misslyckades..." -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "Kunde inte stjäla nÃ¥got..." -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "Giftet tog inte..." -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "Ändrar OpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "-- Hjälp --" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "/announce: Globalt meddelande (endast GM)" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "/clear: Tömmer det här fönstret pÃ¥ text" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "/help: Visar den här hjälptexten" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "/where: Visar namnet pÃ¥ kartan där du befinner dig" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" -msgstr "/w <namn> <text>: Kortare variant av /whisper" - -#: src/gui/chat.cpp:804 +#: src/gui/chat.cpp:496 msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "/whisper <namn> <text>: Skickar ett privat meddelande till en spelare" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" +msgstr "/w <namn> <text>: Kortare variant av /whisper" + +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "/who: Visar antalet inloggade spelare" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "För mer information skriv /help <kommando>" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "Kommando: /announce <text>" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "*** endast en GM kan använda det här kommandot ***" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" "Det här kommandot skickar meddelandet <text> till alla inloggade spelare." -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "Kommando: /clear" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "Det här kommandot tömmer chattloggen." -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "Kommando: /help" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "Det här kommandot visar en lista över alla tillgängliga kommandon." -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "Kommando: /help <kommando>" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "Det här kommandot ger mer information om <kommando>." -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -#, fuzzy -msgid "Command: /record <filename>" -msgstr "Kommando: /clear" - -#: src/gui/chat.cpp:844 -#, fuzzy -msgid "This command starts recording the chat log to the file <filename>." -msgstr "Det här kommandot tömmer chattloggen." - -#: src/gui/chat.cpp:846 -#, fuzzy -msgid "Command: /record" -msgstr "Kommando: /clear" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "Kommando: /where" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "Det här kommandot visar namnet pÃ¥ den karta där du befinner dig." -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "Kommando: /whisper <namn> <text>" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "Kommando: /w <namn> <text>" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "Det här kommandot skickar meddelandet <text> till karaktären <namn>." -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" "Om <namn> innehÃ¥ller mellanslag, mÃ¥ste du sätta citattecken (\") runt det." -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "Kommando: /who" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "Det här kommandot visar antalet spelare som är inloggade just nu." -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "Okänt kommando." -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "Skriv /help för en lista med kommandon." -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "hög" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "Port:" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "Server:" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "Ja" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "Nej" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "Ansluter..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "Använd" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "Utrustning" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "Avrusta" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "Hjälp" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "Stäng" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "Inventarium" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "Utrusta" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "Använd" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "Släpp" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " -msgstr "Utrymme: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "Vikt: %d / %d" + +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" +msgstr "Utrymme: %d / %d" + +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "Avrusta" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " -msgstr "Vikt: " +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "Utrusta" #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." @@ -630,244 +439,148 @@ msgstr "Välj antal föremÃ¥l att handla med." msgid "Select amount of items to drop." msgstr "Välj antal föremÃ¥l att släppa." -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "Användarnamn" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "Lösenord:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "Port:" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "BehÃ¥ll" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "Kom ihÃ¥g användarnamnet" -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "Registrera" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "Status" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "Färdigheter" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "Genvägar" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "Inställningar" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "Minikarta" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "Registrera" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@trade|Handla med %s@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@attack|Attackera %s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "Inventarium" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@talk|Prata med NPC@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@cancel|Avbryt@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@pickup|Plocka upp %s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" msgstr "@@use|Avrusta@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@use|Utrusta@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@use|Använd@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@drop|Släpp@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "Ansluter..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "Ansluter..." +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@description|Beskrivning@@" -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "Ansluter..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "Bekräfta:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "Man" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "Kvinna" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "Användarnamnet mÃ¥ste vara minst %d tecken lÃ¥ngt." -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "Användarnamnet mÃ¥ste vara kortare än %d tecken." -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "Lösenordet mÃ¥ste vara minst %d tecken lÃ¥ngt." -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "Lösenordet mÃ¥ste vara kortare än %d tecken." -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "Lösenorden stämmer inte överens." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "Fel" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "Ljud" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "Volym för ljudeffekter" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "Musikvolym" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "Verkställ" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "Ã…terställ fönster" @@ -888,380 +601,292 @@ msgid "Keyboard" msgstr "Tangentbord" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "Spelare" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "Ljud" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "Volym för ljudeffekter" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "Musikvolym" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "Klicka pÃ¥ knappen för att starta kalibreringen" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "Kalibrera" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "Aktivera joystick" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "Stopp" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "Rotera spaken" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "Tilldela" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 msgid "Default" msgstr "Förval" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "Samma tangent används pÃ¥ flera ställen." -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "Se till att använda olika tangenter, annars kan det bli konstigheter." -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 msgid "Name" msgstr "Namn" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "Relation" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "Neutral" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "Vän" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "Förbisedd" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "Ignorerad" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "Kom ihÃ¥g spelarlista" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "TillÃ¥t byteshandel" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "TillÃ¥t viskningar" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "Vid ignorering:" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "Helskärm" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "Särskild muspekare" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "FPS-gräns:" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Genomskinlighet" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "Rullningsradie" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "Tröghet för rullning" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "Omgivande FX" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "Partikeldetaljer" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "av" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "lÃ¥g" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "hög" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "medium" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "maximal" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "Helskärm" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "Byte till helskärm" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "Omstart krävs för att ändringarna ska synas." -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "Ändrar OpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "Ändringar i OpenGL kräver omstart." -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "Omstart krävs för att ändringarna ska synas." - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "Omstart krävs för att ändringarna ska synas." - -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "Färdigheter" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" +msgstr "Mystisk förmÃ¥ga" -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "Färdighetspoäng: %d" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "Upp" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "Använd" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, c-format msgid "Job: %d" msgstr "Jobb: %d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, c-format msgid "Money: %d GP" msgstr "Pengar: %d GP" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 +#, fuzzy msgid "Job:" -msgstr "Jobb:" +msgstr "Jobb: %d" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 msgid "Stats" msgstr "Statistik" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "Totalt" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "Kostnad" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 msgid "Attack:" msgstr "Attack:" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 msgid "Defense:" msgstr "Försvar:" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 msgid "M.Attack:" msgstr "M. attack:" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 msgid "M.Defense:" msgstr "M. försvar:" -#: src/gui/status.cpp:81 -#, fuzzy, c-format +#: src/gui/status.cpp:137 +#, fuzzy, no-c-format msgid "% Accuracy:" msgstr "% Precision:" -#: src/gui/status.cpp:82 -#, fuzzy, c-format +#: src/gui/status.cpp:139 +#, fuzzy, no-c-format msgid "% Evade:" msgstr "% Undvikan:" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "% Reflexer:" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 msgid "Strength" msgstr "Styrka" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 msgid "Agility" msgstr "Smidighet" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 msgid "Vitality" msgstr "Hälsa" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 msgid "Intelligence" msgstr "Intelligens" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 msgid "Dexterity" msgstr "Skicklighet" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "Tur" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "Ã…terstÃ¥ende statuspoäng: %d" -#: src/gui/trade.cpp:49 -msgid "Trade: You" -msgstr "" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "Byteshandla" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "Lägg till" -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "Byteshandla" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "Du fÃ¥r %d GP." @@ -1270,936 +895,43 @@ msgstr "Du fÃ¥r %d GP." msgid "You give:" msgstr "Du ger:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" "Kan inte lägga till vald sak. Det gÃ¥r inte att byteshandla med samma slags " "sak flera gÃ¥nger." -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "Uppdaterar..." -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "Spela" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "Färdig" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "Avbryt" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "Namnlös" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "Namnlös" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "Är du säker pÃ¥ att du vill ta bort den här karaktären?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "Attack:" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -#, fuzzy -msgid "Talk" -msgstr "Totalt" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "Attack:" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -#, fuzzy -msgid "Target Player" -msgstr "Spelare" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "Ã…terställ fönster" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "Dela" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "Genvägar" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "Ã…terställ fönster" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "Status" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "Inventarium" - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "Utrustning" - -#: src/keyboardconfig.cpp:75 -#, fuzzy -msgid "Skill Window" -msgstr "Färdighetspoäng: %d" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "Ã…terställ fönster" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "Ã…terställ fönster" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "Ã…terställ fönster" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "Kan inte visa smiley!" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "Genvägar" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "Välj server" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "Ansluter..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "Ansluter..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "Ansluter..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "Namn: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "Kopplades frÃ¥n servern!" -#: src/main.cpp:1068 +#: src/main.cpp:965 msgid "Connecting to map server..." msgstr "Ansluter till kartservern..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "Ansluter till karaktärsservern..." -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "Ansluter till kontoservern..." -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "Inventarium" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "Skapa" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." -msgstr "" - -#, fuzzy -#~ msgid "Map" -#~ msgstr "Minikarta" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@description|Beskrivning@@" +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" +msgstr "Namnlös" #~ msgid "Unregister" #~ msgstr "Avregistrera" @@ -2219,6 +951,9 @@ msgstr "" #~ msgid "Please remove %d points" #~ msgstr "Var vänlig ta bort %d poäng" +#~ msgid "Split" +#~ msgstr "Dela" + #~ msgid "Select amount of items to split." #~ msgstr "Välj antal föremÃ¥l att dela." @@ -2237,6 +972,9 @@ msgstr "" #~ msgid "Choose your Mana World Server" #~ msgstr "Välj din Mana World-server" +#~ msgid "Port:" +#~ msgstr "Port:" + #~ msgid "Please type both the address and the port of a server." #~ msgstr "Var vänlig skriv bÃ¥de adressen och porten till en server." @@ -2263,3 +1001,6 @@ msgstr "" #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "Nuvarande vikt: %d - Maxvikt: %d" + +#~ msgid "Keep" +#~ msgstr "BehÃ¥ll" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" "PO-Revision-Date: 2008-11-25 06:16+0000\n" "Last-Translator: Tharawut Paripaiboon <Unknown>\n" "Language-Team: Thai <th@li.org>\n" @@ -17,601 +17,417 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-06 12:40+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 msgid "Buy" msgstr "ซื้à¸" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "ราคา: %d GP / ทั้งหมด: %d GP" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 msgid "Quit" msgstr "à¸à¸à¸" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 #, c-format msgid "Description: %s" msgstr "" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 msgid "Sell" msgstr "" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "ยà¸à¹€à¸¥à¸´à¸" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "ยืนยันà¸à¸²à¸£à¸¥à¸šà¸•ัวละคร" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¹à¸¥à¹‰à¸§à¸«à¸£à¸·à¸à¸—ี่จะลบตัวละครนี้?" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 #, fuzzy msgid "Select Character" msgstr "สร้างตัวละคร" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "ตà¸à¸¥à¸‡" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "สร้างใหม่" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "ลบทิ้ง" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "à¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "ถัดไป" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 #, c-format msgid "Name: %s" msgstr "ชื่à¸: %s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 #, c-format msgid "Level: %d" msgstr "" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, c-format msgid "Job Level: %d" msgstr "" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "สร้างใหม่" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "ลบทิ้ง" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "à¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "ถัดไป" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "ตà¸à¸¥à¸‡" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "สร้างตัวละคร" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 msgid "Name:" msgstr "ชื่à¸:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "สีผม:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "ทรงผม:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "สร้าง" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 msgid "Select Server" msgstr "" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 msgid "OK" msgstr "" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "สร้าง" - -#: src/gui/chat.cpp:146 -msgid "Global announcement: " +#: src/gui/chat.cpp:115 +msgid "Global announcement:" msgstr "" -#: src/gui/chat.cpp:151 +#: src/gui/chat.cpp:118 #, c-format -msgid "Global announcement from %s: " +msgid "Global announcement from %s:" msgstr "" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 msgid "Server:" msgstr "" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:139 #, c-format -msgid "Whispering to %s: %s" -msgstr "" - -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -msgid "Unknown item" -msgstr "" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." +msgid "%s whispers:" msgstr "" -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" msgstr "" -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:349 msgid "Unknown command" msgstr "" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:359 msgid "Trade failed!" msgstr "" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:362 msgid "Emote failed!" msgstr "" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:365 msgid "Sit failed!" msgstr "" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:368 msgid "Chat creating failed!" msgstr "" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:371 msgid "Could not join party!" msgstr "" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:374 msgid "Cannot shout!" msgstr "" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:382 msgid "You have not yet reached a high enough lvl!" msgstr "" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:385 msgid "Insufficient HP!" msgstr "" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:388 msgid "Insufficient SP!" msgstr "" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:391 msgid "You have no memos!" msgstr "" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:394 msgid "You cannot do that right now!" msgstr "" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:397 msgid "Seems you need more Zeny... ;-)" msgstr "" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:400 msgid "You cannot use this skill with that kind of weapon!" msgstr "" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:403 msgid "You need another red gem!" msgstr "" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:406 msgid "You need another blue gem!" msgstr "" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:409 msgid "You're carrying to much to do this!" msgstr "" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:412 msgid "Huh? What's that?" msgstr "" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:418 msgid "Warp failed..." msgstr "" -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:421 msgid "Could not steal anything..." msgstr "" -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:424 msgid "Poison had no effect..." msgstr "" -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -msgid "Changing prefix to " -msgstr "" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:489 msgid "-- Help --" msgstr "" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:492 msgid "/announce: Global announcement (GM only)" msgstr "" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:493 msgid "/clear: Clears this window" msgstr "" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:494 msgid "/help: Display this help" msgstr "" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:495 msgid "/where: Display map name" msgstr "" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "" -#: src/gui/chat.cpp:804 -msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" msgstr "" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:499 msgid "/who: Display number of online users" msgstr "" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:500 msgid "For more information, type /help <command>" msgstr "" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:505 msgid "Command: /announce <msg>" msgstr "" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:506 msgid "*** only available to a GM ***" msgstr "" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:507 msgid "This command sends the message <msg> to all players currently online." msgstr "" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:513 msgid "Command: /clear" msgstr "" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:514 msgid "This command clears the chat log of previous chat." msgstr "" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:520 msgid "Command: /help" msgstr "" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:521 msgid "This command displays a list of all commands available." msgstr "" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:523 msgid "Command: /help <command>" msgstr "" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:524 msgid "This command displays help on <command>." msgstr "" -#: src/gui/chat.cpp:836 -msgid "Command: /present" -msgstr "" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -msgid "Command: /record <filename>" -msgstr "" - -#: src/gui/chat.cpp:844 -msgid "This command starts recording the chat log to the file <filename>." -msgstr "" - -#: src/gui/chat.cpp:846 -msgid "Command: /record" -msgstr "" - -#: src/gui/chat.cpp:847 -msgid "This command finishes a recording session." -msgstr "" - -#: src/gui/chat.cpp:851 -msgid "Command: /toggle <state>" -msgstr "" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -msgid "Command: /toggle" -msgstr "" - -#: src/gui/chat.cpp:859 -msgid "This command displays the return toggle status." -msgstr "" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:529 msgid "Command: /where" msgstr "" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:530 msgid "This command displays the name of the current map." msgstr "" -#: src/gui/chat.cpp:869 -msgid "Command: /msg <nick> <msg>" -msgstr "" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:536 msgid "Command: /whisper <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:537 msgid "Command: /w <nick> <msg>" msgstr "" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:538 msgid "This command sends the message <msg> to <nick>." msgstr "" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:540 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:546 msgid "Command: /who" msgstr "" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:547 msgid "This command displays the number of players currently online." msgstr "" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:551 msgid "Unknown command." msgstr "" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:552 msgid "Type /help for a list of commands." msgstr "" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -msgid "Highlight" -msgstr "" - -#: src/gui/colour.cpp:34 -msgid "Player" -msgstr "" - -#: src/gui/colour.cpp:35 -msgid "Whisper" -msgstr "" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -msgid "Party" -msgstr "" - -#: src/gui/colour.cpp:38 -msgid "Server" -msgstr "" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "ใช่" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "ไม่" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸à¸¡à¸•่à¸..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "ใช้" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "" -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "" +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "ใช้" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "ทิ้ง" -#: src/gui/inventorywindow.cpp:84 -msgid "Slots: " +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" msgstr "" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" msgstr "" #: src/gui/item_amount.cpp:76 @@ -622,244 +438,148 @@ msgstr "" msgid "Select amount of items to drop." msgstr "" -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "เข้าระบบ" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 src/gui/register.cpp:80 msgid "Password:" msgstr "รหัสผ่าน:" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" +#: src/gui/login.cpp:50 +msgid "Remember Username" msgstr "" -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "" - -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 msgid "Register" msgstr "สมัครสมาชิà¸" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "สถานะ" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 msgid "Skills" msgstr "" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 msgid "Setup" msgstr "ตั้งค่า" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "" -#: src/gui/npcintegerdialog.cpp:33 +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "NPC" + +#: src/gui/npcintegerdialog.cpp:38 msgid "NPC Number Request" msgstr "" -#: src/gui/npcintegerdialog.cpp:41 +#: src/gui/npcintegerdialog.cpp:45 #, fuzzy msgid "Reset" msgstr "สมัครสมาชิà¸" -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 -msgid "NPC" -msgstr "NPC" - -#: src/gui/npcstringdialog.cpp:33 +#: src/gui/npcstringdialog.cpp:38 msgid "NPC Text Request" msgstr "" -#: src/gui/popupmenu.cpp:78 +#: src/gui/popupmenu.cpp:81 #, c-format msgid "@@trade|Trade With %s@@" msgstr "" -#: src/gui/popupmenu.cpp:79 +#: src/gui/popupmenu.cpp:83 #, c-format msgid "@@attack|Attack %s@@" msgstr "" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "" - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" msgstr "" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸à¸¡à¸•่à¸..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸à¸¡à¸•่à¸..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" - -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" msgstr "" -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸à¸¡à¸•่à¸..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "ยืนยัน:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "ชาย" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "หà¸à¸´à¸‡" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "" -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "" -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "" -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 src/main.cpp:954 msgid "Error" msgstr "ผิดพลาด" -#: src/gui/setup_audio.cpp:41 -msgid "Sound" -msgstr "" - -#: src/gui/setup_audio.cpp:47 -msgid "Sfx volume" -msgstr "" - -#: src/gui/setup_audio.cpp:48 -msgid "Music volume" -msgstr "" - -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Apply" msgstr "" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:58 msgid "Reset Windows" msgstr "" @@ -880,384 +600,299 @@ msgid "Keyboard" msgstr "" #: src/gui/setup.cpp:94 -msgid "Colors" -msgstr "" - -#: src/gui/setup.cpp:98 msgid "Players" msgstr "" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " +#: src/gui/setup_audio.cpp:42 +msgid "Sound" msgstr "" -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" msgstr "" -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" msgstr "" -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 #, fuzzy msgid "Default" msgstr "ลบทิ้ง" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 #, fuzzy msgid "Name" msgstr "ชื่à¸:" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 msgid "Disregarded" msgstr "" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "" -#: src/gui/setup_video.cpp:120 -msgid "Particle effects" -msgstr "" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 msgid "Ambient FX" msgstr "" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 msgid "off" msgstr "" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 msgid "low" msgstr "" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 msgid "high" msgstr "" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 msgid "medium" msgstr "" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 msgid "max" msgstr "" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "fullscreen" -msgstr "" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "" -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "" -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -msgid "Restart your client for the change to take effect." -msgstr "" - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -msgid "Restart your client or change maps for the change to take effect." -msgstr "" - -#: src/gui/skill.cpp:41 -msgid "skills.xml" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" msgstr "" -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "ใช้" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 src/gui/status.cpp:238 #, c-format msgid "Job: %d" msgstr "" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 src/gui/status.cpp:241 #, c-format msgid "Money: %d GP" msgstr "" -#: src/gui/status.cpp:54 +#: src/gui/status.cpp:55 msgid "HP:" msgstr "" -#: src/gui/status.cpp:57 +#: src/gui/status.cpp:59 msgid "Exp:" msgstr "" -#: src/gui/status.cpp:60 +#: src/gui/status.cpp:63 msgid "MP:" msgstr "" -#: src/gui/status.cpp:63 +#: src/gui/status.cpp:67 msgid "Job:" msgstr "" -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 #, fuzzy msgid "Stats" msgstr "สถานะ" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 msgid "Attack:" msgstr "" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 msgid "Defense:" msgstr "" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 msgid "M.Attack:" msgstr "" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 msgid "M.Defense:" msgstr "" -#: src/gui/status.cpp:81 -#, c-format +#: src/gui/status.cpp:137 +#, no-c-format msgid "% Accuracy:" msgstr "" -#: src/gui/status.cpp:82 -#, c-format +#: src/gui/status.cpp:139 +#, no-c-format msgid "% Evade:" msgstr "" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:141 +#, no-c-format msgid "% Reflex:" msgstr "" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:285 #, fuzzy msgid "Strength" msgstr "Strength:" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:286 #, fuzzy msgid "Agility" msgstr "Agility:" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:287 #, fuzzy msgid "Vitality" msgstr "Vitality:" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:288 #, fuzzy msgid "Intelligence" msgstr "Intelligence:" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:289 #, fuzzy msgid "Dexterity" msgstr "Dexterity:" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:290 msgid "Luck" msgstr "" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:308 #, c-format msgid "Remaining Status Points: %d" msgstr "" -#: src/gui/trade.cpp:49 -msgid "Trade: You" +#: src/gui/trade.cpp:61 +msgid "Add" msgstr "" -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 +#: src/gui/trade.cpp:64 msgid "Trade" msgstr "" -#: src/gui/trade.cpp:61 -msgid "Add" -msgstr "" - -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 #, c-format msgid "You get %d GP." msgstr "" @@ -1266,911 +901,41 @@ msgstr "" msgid "You give:" msgstr "" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:290 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "" -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -msgid "You are not that alive anymore." -msgstr "" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -msgid "You are no more." -msgstr "" - -#: src/net/playerhandler.cpp:234 -msgid "You have ceased to be." -msgstr "" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -msgid "Trade with " -msgstr "" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "ยà¸à¹€à¸¥à¸´à¸" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -msgid "Trade canceled." -msgstr "" - -#: src/net/tradehandler.cpp:214 -msgid "Trade completed." -msgstr "" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 -msgid "Unnamed" -msgstr "" - -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -msgid "unnamed" -msgstr "" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -msgid "Saving screenshot failed!" -msgstr "" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¹à¸¥à¹‰à¸§à¸«à¸£à¸·à¸à¸—ี่จะลบตัวละครนี้?" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -msgid "Attack" -msgstr "" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -msgid "Talk" -msgstr "" - -#: src/keyboardconfig.cpp:49 -msgid "Stop Attack" -msgstr "" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -msgid "Target Player" -msgstr "" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -msgid "Hide Windows" -msgstr "" - -#: src/keyboardconfig.cpp:55 -msgid "Sit" -msgstr "" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, c-format -msgid "Item Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:71 -msgid "Help Window" -msgstr "" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "สถานะ" - -#: src/keyboardconfig.cpp:73 -msgid "Inventory Window" -msgstr "" - -#: src/keyboardconfig.cpp:74 -msgid "Equipment WIndow" -msgstr "" - -#: src/keyboardconfig.cpp:75 -msgid "Skill Window" -msgstr "" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -msgid "Chat Window" -msgstr "" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -msgid "Setup Window" -msgstr "" - -#: src/keyboardconfig.cpp:80 -msgid "Debug Window" -msgstr "" - -#: src/keyboardconfig.cpp:81 -msgid "Emote Window" -msgstr "" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, c-format -msgid "Emote Shortcut %d" -msgstr "" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -msgid "Select OK" -msgstr "" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -msgid " -h --help : Display this help" -msgstr "" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸à¸¡à¸•่à¸..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸à¸¡à¸•่à¸..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸à¸¡à¸•่à¸..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "ชื่à¸: %s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:778 msgid "Got disconnected from server!" msgstr "" -#: src/main.cpp:1068 +#: src/main.cpp:965 #, fuzzy msgid "Connecting to map server..." msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸à¸¡à¸•่à¸..." -#: src/main.cpp:1076 +#: src/main.cpp:973 msgid "Connecting to character server..." msgstr "" -#: src/main.cpp:1084 +#: src/main.cpp:981 msgid "Connecting to account server..." msgstr "" -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -msgid "Could not create party." -msgstr "" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -msgid "Invite to party" -msgstr "" - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -msgid "Command: /party <command> <args>" -msgstr "" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "สร้าง" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -msgid "This command implements the partying function." -msgstr "" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -msgid "Command: /party new <party-name>" -msgstr "" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -msgid "This command sets the party prefix character." -msgstr "" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -msgid "Command: /party prefix" -msgstr "" - -#: src/party.cpp:201 -msgid "This command reports the current party prefix character." -msgstr "" - -#: src/party.cpp:209 -msgid "Command: /party leave" -msgstr "" - -#: src/party.cpp:210 -msgid "This command causes the player to leave the party." -msgstr "" - -#: src/party.cpp:214 -msgid "Unknown /party command." -msgstr "" - -#: src/party.cpp:215 -msgid "Type /help party for a list of options." +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" msgstr "" #~ msgid "Change Password" diff --git a/po/tmw.pot b/po/tmw.pot new file mode 100644 index 00000000..0044315b --- /dev/null +++ b/po/tmw.pot @@ -0,0 +1,927 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR The Mana World Development Team +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-02-12 20:22+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/gui/buy.cpp:43 src/gui/buy.cpp:61 src/gui/buysell.cpp:35 +msgid "Buy" +msgstr "" + +#: src/gui/buy.cpp:58 src/gui/buy.cpp:239 src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 +#, c-format +msgid "Price: %d GP / Total: %d GP" +msgstr "" + +#: src/gui/buy.cpp:62 src/gui/sell.cpp:69 +msgid "Quit" +msgstr "" + +#: src/gui/buy.cpp:63 src/gui/buy.cpp:206 src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 src/gui/sell.cpp:230 src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 src/gui/trade.cpp:272 +#, c-format +msgid "Description: %s" +msgstr "" + +#: src/gui/buy.cpp:64 src/gui/buy.cpp:208 src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 src/gui/sell.cpp:232 src/gui/sell.cpp:245 +#, c-format +msgid "Effect: %s" +msgstr "" + +#: src/gui/buysell.cpp:31 +msgid "Shop" +msgstr "" + +#: src/gui/buysell.cpp:35 src/gui/sell.cpp:48 src/gui/sell.cpp:68 +msgid "Sell" +msgstr "" + +#: src/gui/buysell.cpp:35 src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:61 src/gui/login.cpp:52 +#: src/gui/npcintegerdialog.cpp:44 src/gui/npclistdialog.cpp:45 +#: src/gui/npcstringdialog.cpp:42 src/gui/register.cpp:90 src/gui/setup.cpp:58 +#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:118 +msgid "Cancel" +msgstr "" + +#: src/gui/char_select.cpp:63 +msgid "Confirm Character Delete" +msgstr "" + +#: src/gui/char_select.cpp:64 +msgid "Are you sure you want to delete this character?" +msgstr "" + +#: src/gui/char_select.cpp:81 +msgid "Select Character" +msgstr "" + +#: src/gui/char_select.cpp:84 src/gui/item_amount.cpp:60 src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 src/gui/trade.cpp:62 +msgid "Ok" +msgstr "" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "" + +#: src/gui/char_select.cpp:87 src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "" + +#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 src/gui/trade.cpp:92 src/gui/trade.cpp:269 +#, c-format +msgid "Name: %s" +msgstr "" + +#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 src/gui/status.cpp:51 src/gui/status.cpp:235 +#, c-format +msgid "Level: %d" +msgstr "" + +#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 +#, c-format +msgid "Job Level: %d" +msgstr "" + +#: src/gui/char_select.cpp:94 src/gui/char_select.cpp:186 +#, c-format +msgid "Money: %d" +msgstr "" + +#: src/gui/char_select.cpp:174 +#, c-format +msgid "Gold: %d" +msgstr "" + +#: src/gui/char_select.cpp:243 +msgid "Create Character" +msgstr "" + +#: src/gui/char_select.cpp:250 src/gui/login.cpp:44 src/gui/register.cpp:79 +msgid "Name:" +msgstr "" + +#: src/gui/char_select.cpp:253 +msgid "Hair Color:" +msgstr "" + +#: src/gui/char_select.cpp:256 +msgid "Hair Style:" +msgstr "" + +#: src/gui/char_select.cpp:257 +msgid "Create" +msgstr "" + +#: src/gui/char_server.cpp:52 +msgid "Select Server" +msgstr "" + +#: src/gui/char_server.cpp:59 src/gui/npc_text.cpp:46 +#: src/gui/npcintegerdialog.cpp:43 src/gui/npclistdialog.cpp:44 +#: src/gui/npcstringdialog.cpp:41 +msgid "OK" +msgstr "" + +#: src/gui/chat.cpp:115 +msgid "Global announcement:" +msgstr "" + +#: src/gui/chat.cpp:118 +#, c-format +msgid "Global announcement from %s:" +msgstr "" + +#: src/gui/chat.cpp:133 src/gui/login.cpp:46 src/gui/register.cpp:82 +msgid "Server:" +msgstr "" + +#: src/gui/chat.cpp:139 +#, c-format +msgid "%s whispers:" +msgstr "" + +#: src/gui/chat.cpp:276 +#, c-format +msgid "Whispering to %s: %s" +msgstr "" + +#: src/gui/chat.cpp:349 +msgid "Unknown command" +msgstr "" + +#: src/gui/chat.cpp:359 +msgid "Trade failed!" +msgstr "" + +#: src/gui/chat.cpp:362 +msgid "Emote failed!" +msgstr "" + +#: src/gui/chat.cpp:365 +msgid "Sit failed!" +msgstr "" + +#: src/gui/chat.cpp:368 +msgid "Chat creating failed!" +msgstr "" + +#: src/gui/chat.cpp:371 +msgid "Could not join party!" +msgstr "" + +#: src/gui/chat.cpp:374 +msgid "Cannot shout!" +msgstr "" + +#: src/gui/chat.cpp:382 +msgid "You have not yet reached a high enough lvl!" +msgstr "" + +#: src/gui/chat.cpp:385 +msgid "Insufficient HP!" +msgstr "" + +#: src/gui/chat.cpp:388 +msgid "Insufficient SP!" +msgstr "" + +#: src/gui/chat.cpp:391 +msgid "You have no memos!" +msgstr "" + +#: src/gui/chat.cpp:394 +msgid "You cannot do that right now!" +msgstr "" + +#: src/gui/chat.cpp:397 +msgid "Seems you need more Zeny... ;-)" +msgstr "" + +#: src/gui/chat.cpp:400 +msgid "You cannot use this skill with that kind of weapon!" +msgstr "" + +#: src/gui/chat.cpp:403 +msgid "You need another red gem!" +msgstr "" + +#: src/gui/chat.cpp:406 +msgid "You need another blue gem!" +msgstr "" + +#: src/gui/chat.cpp:409 +msgid "You're carrying to much to do this!" +msgstr "" + +#: src/gui/chat.cpp:412 +msgid "Huh? What's that?" +msgstr "" + +#: src/gui/chat.cpp:418 +msgid "Warp failed..." +msgstr "" + +#: src/gui/chat.cpp:421 +msgid "Could not steal anything..." +msgstr "" + +#: src/gui/chat.cpp:424 +msgid "Poison had no effect..." +msgstr "" + +#: src/gui/chat.cpp:489 +msgid "-- Help --" +msgstr "" + +#: src/gui/chat.cpp:492 +msgid "/announce: Global announcement (GM only)" +msgstr "" + +#: src/gui/chat.cpp:493 +msgid "/clear: Clears this window" +msgstr "" + +#: src/gui/chat.cpp:494 +msgid "/help: Display this help" +msgstr "" + +#: src/gui/chat.cpp:495 +msgid "/where: Display map name" +msgstr "" + +#: src/gui/chat.cpp:496 +msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" +msgstr "" + +#: src/gui/chat.cpp:498 +msgid "/w <nick> <message>: Short form for /whisper" +msgstr "" + +#: src/gui/chat.cpp:499 +msgid "/who: Display number of online users" +msgstr "" + +#: src/gui/chat.cpp:500 +msgid "For more information, type /help <command>" +msgstr "" + +#: src/gui/chat.cpp:505 +msgid "Command: /announce <msg>" +msgstr "" + +#: src/gui/chat.cpp:506 +msgid "*** only available to a GM ***" +msgstr "" + +#: src/gui/chat.cpp:507 +msgid "This command sends the message <msg> to all players currently online." +msgstr "" + +#: src/gui/chat.cpp:513 +msgid "Command: /clear" +msgstr "" + +#: src/gui/chat.cpp:514 +msgid "This command clears the chat log of previous chat." +msgstr "" + +#: src/gui/chat.cpp:520 +msgid "Command: /help" +msgstr "" + +#: src/gui/chat.cpp:521 +msgid "This command displays a list of all commands available." +msgstr "" + +#: src/gui/chat.cpp:523 +msgid "Command: /help <command>" +msgstr "" + +#: src/gui/chat.cpp:524 +msgid "This command displays help on <command>." +msgstr "" + +#: src/gui/chat.cpp:529 +msgid "Command: /where" +msgstr "" + +#: src/gui/chat.cpp:530 +msgid "This command displays the name of the current map." +msgstr "" + +#: src/gui/chat.cpp:536 +msgid "Command: /whisper <nick> <msg>" +msgstr "" + +#: src/gui/chat.cpp:537 +msgid "Command: /w <nick> <msg>" +msgstr "" + +#: src/gui/chat.cpp:538 +msgid "This command sends the message <msg> to <nick>." +msgstr "" + +#: src/gui/chat.cpp:540 +msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." +msgstr "" + +#: src/gui/chat.cpp:546 +msgid "Command: /who" +msgstr "" + +#: src/gui/chat.cpp:547 +msgid "This command displays the number of players currently online." +msgstr "" + +#: src/gui/chat.cpp:551 +msgid "Unknown command." +msgstr "" + +#: src/gui/chat.cpp:552 +msgid "Type /help for a list of commands." +msgstr "" + +#: src/gui/confirm_dialog.cpp:35 +msgid "Yes" +msgstr "" + +#: src/gui/confirm_dialog.cpp:36 +msgid "No" +msgstr "" + +#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:116 +msgid "Connecting..." +msgstr "" + +#: src/gui/equipmentwindow.cpp:38 src/gui/menuwindow.cpp:62 +msgid "Equipment" +msgstr "" + +#: src/gui/help.cpp:33 +msgid "Help" +msgstr "" + +#: src/gui/help.cpp:41 +msgid "Close" +msgstr "" + +#: src/gui/inventorywindow.cpp:46 src/gui/menuwindow.cpp:63 +msgid "Inventory" +msgstr "" + +#: src/gui/inventorywindow.cpp:56 src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "" + +#: src/gui/inventorywindow.cpp:57 +msgid "Drop" +msgstr "" + +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" +msgstr "" + +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "" + +#: src/gui/item_amount.cpp:76 +msgid "Select amount of items to trade." +msgstr "" + +#: src/gui/item_amount.cpp:80 +msgid "Select amount of items to drop." +msgstr "" + +#: src/gui/login.cpp:42 +msgid "Login" +msgstr "" + +#: src/gui/login.cpp:45 src/gui/register.cpp:80 +msgid "Password:" +msgstr "" + +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "" + +#: src/gui/login.cpp:53 src/gui/register.cpp:75 src/gui/register.cpp:89 +msgid "Register" +msgstr "" + +#: src/gui/menuwindow.cpp:61 +msgid "Status" +msgstr "" + +#: src/gui/menuwindow.cpp:64 src/gui/skill.cpp:119 +msgid "Skills" +msgstr "" + +#: src/gui/menuwindow.cpp:65 +msgid "Shortcut" +msgstr "" + +#: src/gui/menuwindow.cpp:66 src/gui/setup.cpp:50 src/main.cpp:725 +msgid "Setup" +msgstr "" + +#: src/gui/minimap.cpp:34 +msgid "MiniMap" +msgstr "" + +#: src/gui/npc_text.cpp:35 src/gui/npclistdialog.cpp:35 +msgid "NPC" +msgstr "" + +#: src/gui/npcintegerdialog.cpp:38 +msgid "NPC Number Request" +msgstr "" + +#: src/gui/npcintegerdialog.cpp:45 +msgid "Reset" +msgstr "" + +#: src/gui/npcstringdialog.cpp:38 +msgid "NPC Text Request" +msgstr "" + +#: src/gui/popupmenu.cpp:81 +#, c-format +msgid "@@trade|Trade With %s@@" +msgstr "" + +#: src/gui/popupmenu.cpp:83 +#, c-format +msgid "@@attack|Attack %s@@" +msgstr "" + +#: src/gui/popupmenu.cpp:114 +msgid "@@talk|Talk To NPC@@" +msgstr "" + +#: src/gui/popupmenu.cpp:124 src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 +msgid "@@cancel|Cancel@@" +msgstr "" + +#: src/gui/popupmenu.cpp:136 +#, c-format +msgid "@@pickup|Pick Up %s@@" +msgstr "" + +#: src/gui/popupmenu.cpp:283 +msgid "@@use|Unequip@@" +msgstr "" + +#: src/gui/popupmenu.cpp:285 +msgid "@@use|Equip@@" +msgstr "" + +#: src/gui/popupmenu.cpp:288 +msgid "@@use|Use@@" +msgstr "" + +#: src/gui/popupmenu.cpp:290 +msgid "@@drop|Drop@@" +msgstr "" + +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "" + +#: src/gui/register.cpp:81 +msgid "Confirm:" +msgstr "" + +#: src/gui/register.cpp:87 +msgid "Male" +msgstr "" + +#: src/gui/register.cpp:88 +msgid "Female" +msgstr "" + +#: src/gui/register.cpp:159 +#, c-format +msgid "The username needs to be at least %d characters long." +msgstr "" + +#: src/gui/register.cpp:167 +#, c-format +msgid "The username needs to be less than %d characters long." +msgstr "" + +#: src/gui/register.cpp:175 +#, c-format +msgid "The password needs to be at least %d characters long." +msgstr "" + +#: src/gui/register.cpp:183 +#, c-format +msgid "The password needs to be less than %d characters long." +msgstr "" + +#: src/gui/register.cpp:190 +msgid "Passwords do not match." +msgstr "" + +#: src/gui/register.cpp:210 src/main.cpp:954 +msgid "Error" +msgstr "" + +#: src/gui/setup.cpp:58 +msgid "Apply" +msgstr "" + +#: src/gui/setup.cpp:58 +msgid "Reset Windows" +msgstr "" + +#: src/gui/setup.cpp:78 +msgid "Video" +msgstr "" + +#: src/gui/setup.cpp:82 +msgid "Audio" +msgstr "" + +#: src/gui/setup.cpp:86 +msgid "Joystick" +msgstr "" + +#: src/gui/setup.cpp:90 +msgid "Keyboard" +msgstr "" + +#: src/gui/setup.cpp:94 +msgid "Players" +msgstr "" + +#: src/gui/setup_audio.cpp:42 +msgid "Sound" +msgstr "" + +#: src/gui/setup_audio.cpp:48 +msgid "Sfx volume" +msgstr "" + +#: src/gui/setup_audio.cpp:49 +msgid "Music volume" +msgstr "" + +#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:78 +msgid "Press the button to start calibration" +msgstr "" + +#: src/gui/setup_joystick.cpp:40 src/gui/setup_joystick.cpp:76 +msgid "Calibrate" +msgstr "" + +#: src/gui/setup_joystick.cpp:41 +msgid "Enable joystick" +msgstr "" + +#: src/gui/setup_joystick.cpp:81 +msgid "Stop" +msgstr "" + +#: src/gui/setup_joystick.cpp:82 +msgid "Rotate the stick" +msgstr "" + +#: src/gui/setup_keyboard.cpp:88 +msgid "Assign" +msgstr "" + +#: src/gui/setup_keyboard.cpp:92 +msgid "Default" +msgstr "" + +#: src/gui/setup_keyboard.cpp:121 +msgid "Key Conflict(s) Detected." +msgstr "" + +#: src/gui/setup_keyboard.cpp:122 +msgid "Resolve them, or gameplay may result in strange behaviour." +msgstr "" + +#: src/gui/setup_players.cpp:55 +msgid "Name" +msgstr "" + +#: src/gui/setup_players.cpp:56 +msgid "Relation" +msgstr "" + +#: src/gui/setup_players.cpp:60 +msgid "Neutral" +msgstr "" + +#: src/gui/setup_players.cpp:61 +msgid "Friend" +msgstr "" + +#: src/gui/setup_players.cpp:62 +msgid "Disregarded" +msgstr "" + +#: src/gui/setup_players.cpp:63 +msgid "Ignored" +msgstr "" + +#: src/gui/setup_players.cpp:217 +msgid "Save player list" +msgstr "" + +#: src/gui/setup_players.cpp:219 +msgid "Allow trading" +msgstr "" + +#: src/gui/setup_players.cpp:221 +msgid "Allow whispers" +msgstr "" + +#: src/gui/setup_players.cpp:248 +msgid "When ignoring:" +msgstr "" + +#: src/gui/setup_video.cpp:114 +msgid "Full screen" +msgstr "" + +#: src/gui/setup_video.cpp:115 +msgid "OpenGL" +msgstr "" + +#: src/gui/setup_video.cpp:116 +msgid "Custom cursor" +msgstr "" + +#: src/gui/setup_video.cpp:118 +msgid "FPS Limit:" +msgstr "" + +#: src/gui/setup_video.cpp:139 +msgid "Gui opacity" +msgstr "" + +#: src/gui/setup_video.cpp:141 +msgid "Scroll radius" +msgstr "" + +#: src/gui/setup_video.cpp:142 +msgid "Scroll laziness" +msgstr "" + +#: src/gui/setup_video.cpp:143 +msgid "Ambient FX" +msgstr "" + +#: src/gui/setup_video.cpp:144 +msgid "Particle Detail" +msgstr "" + +#: src/gui/setup_video.cpp:198 src/gui/setup_video.cpp:398 +msgid "off" +msgstr "" + +#: src/gui/setup_video.cpp:201 src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 src/gui/setup_video.cpp:415 +msgid "low" +msgstr "" + +#: src/gui/setup_video.cpp:204 src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 src/gui/setup_video.cpp:421 +msgid "high" +msgstr "" + +#: src/gui/setup_video.cpp:215 src/gui/setup_video.cpp:418 +msgid "medium" +msgstr "" + +#: src/gui/setup_video.cpp:221 src/gui/setup_video.cpp:424 +msgid "max" +msgstr "" + +#: src/gui/setup_video.cpp:296 +msgid "Switching to full screen" +msgstr "" + +#: src/gui/setup_video.cpp:297 +msgid "Restart needed for changes to take effect." +msgstr "" + +#: src/gui/setup_video.cpp:309 +msgid "Changing OpenGL" +msgstr "" + +#: src/gui/setup_video.cpp:310 +msgid "Applying change to OpenGL requires restart." +msgstr "" + +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" +msgstr "" + +#: src/gui/skill.cpp:132 src/gui/skill.cpp:188 +#, c-format +msgid "Skill points: %d" +msgstr "" + +#: src/gui/skill.cpp:133 +msgid "Up" +msgstr "" + +#: src/gui/status.cpp:52 src/gui/status.cpp:238 +#, c-format +msgid "Job: %d" +msgstr "" + +#: src/gui/status.cpp:53 src/gui/status.cpp:241 +#, c-format +msgid "Money: %d GP" +msgstr "" + +#: src/gui/status.cpp:55 +msgid "HP:" +msgstr "" + +#: src/gui/status.cpp:59 +msgid "Exp:" +msgstr "" + +#: src/gui/status.cpp:63 +msgid "MP:" +msgstr "" + +#: src/gui/status.cpp:67 +msgid "Job:" +msgstr "" + +#: src/gui/status.cpp:127 +msgid "Stats" +msgstr "" + +#: src/gui/status.cpp:128 +msgid "Total" +msgstr "" + +#: src/gui/status.cpp:129 +msgid "Cost" +msgstr "" + +#: src/gui/status.cpp:132 +msgid "Attack:" +msgstr "" + +#: src/gui/status.cpp:133 +msgid "Defense:" +msgstr "" + +#: src/gui/status.cpp:134 +msgid "M.Attack:" +msgstr "" + +#: src/gui/status.cpp:135 +msgid "M.Defense:" +msgstr "" + +#: src/gui/status.cpp:137 +#, no-c-format +msgid "% Accuracy:" +msgstr "" + +#: src/gui/status.cpp:139 +#, no-c-format +msgid "% Evade:" +msgstr "" + +#: src/gui/status.cpp:141 +#, no-c-format +msgid "% Reflex:" +msgstr "" + +#: src/gui/status.cpp:285 +msgid "Strength" +msgstr "" + +#: src/gui/status.cpp:286 +msgid "Agility" +msgstr "" + +#: src/gui/status.cpp:287 +msgid "Vitality" +msgstr "" + +#: src/gui/status.cpp:288 +msgid "Intelligence" +msgstr "" + +#: src/gui/status.cpp:289 +msgid "Dexterity" +msgstr "" + +#: src/gui/status.cpp:290 +msgid "Luck" +msgstr "" + +#: src/gui/status.cpp:308 +#, c-format +msgid "Remaining Status Points: %d" +msgstr "" + +#: src/gui/trade.cpp:61 +msgid "Add" +msgstr "" + +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "" + +#: src/gui/trade.cpp:80 src/gui/trade.cpp:161 src/gui/trade.cpp:209 +#, c-format +msgid "You get %d GP." +msgstr "" + +#: src/gui/trade.cpp:81 +msgid "You give:" +msgstr "" + +#: src/gui/trade.cpp:290 +msgid "Failed adding item. You can not overlap one kind of item on the window." +msgstr "" + +#: src/gui/updatewindow.cpp:93 +msgid "Updating..." +msgstr "" + +#: src/gui/updatewindow.cpp:119 +msgid "Play" +msgstr "" + +#: src/gui/updatewindow.cpp:526 +msgid "Completed" +msgstr "" + +#: src/main.cpp:778 +msgid "Got disconnected from server!" +msgstr "" + +#: src/main.cpp:965 +msgid "Connecting to map server..." +msgstr "" + +#: src/main.cpp:973 +msgid "Connecting to character server..." +msgstr "" + +#: src/main.cpp:981 +msgid "Connecting to account server..." +msgstr "" + +#: src/resources/itemdb.cpp:99 +msgid "Unnamed" +msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 23a46815..fa60898c 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -6,12 +6,11 @@ msgid "" msgstr "" "Project-Id-Version: tmw\n" -"Report-Msgid-Bugs-To: irarice@gmail.com\n" -"POT-Creation-Date: 2009-02-07 15:45-0700\n" +"Report-Msgid-Bugs-To: themanaworld-devel@lists.sourceforge.net\n" +"POT-Creation-Date: 2009-01-19 21:00+0100\n" "PO-Revision-Date: 2009-01-21 22:42+0800\n" "Last-Translator: Hong Hao <oahong@gmail.com>\n" -"Language-Team: Simplified Chinese <themanaworld-devel@lists.sourceforge." -"net>\n" +"Language-Team: Simplified Chinese <themanaworld-devel@lists.sourceforge.net>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -22,621 +21,463 @@ msgstr "" "X-Poedit-Country: China\n" "X-Poedit-SourceCharset: utf-8\n" -#: src/gui/buy.cpp:42 src/gui/buy.cpp:45 src/gui/buy.cpp:60 -#: src/gui/buysell.cpp:34 +#: src/gui/buy.cpp:43 +#: src/gui/buy.cpp:61 +#: src/gui/buysell.cpp:35 msgid "Buy" msgstr "è´ä¹°" -#: src/gui/buy.cpp:57 src/gui/buy.cpp:238 src/gui/sell.cpp:59 -#: src/gui/sell.cpp:253 +#: src/gui/buy.cpp:58 +#: src/gui/buy.cpp:239 +#: src/gui/sell.cpp:65 +#: src/gui/sell.cpp:259 #, c-format msgid "Price: %d GP / Total: %d GP" msgstr "ä»·æ ¼ï¼š%d 金å¸/总数:%d 金å¸" -#: src/gui/buy.cpp:61 src/gui/sell.cpp:63 src/game.cpp:602 -#: src/keyboardconfig.cpp:99 +#: src/gui/buy.cpp:62 +#: src/gui/sell.cpp:69 msgid "Quit" msgstr "退出" -#: src/gui/buy.cpp:62 src/gui/buy.cpp:205 src/gui/buy.cpp:223 -#: src/gui/sell.cpp:64 src/gui/sell.cpp:224 src/gui/sell.cpp:238 +#: src/gui/buy.cpp:63 +#: src/gui/buy.cpp:206 +#: src/gui/buy.cpp:224 +#: src/gui/inventorywindow.cpp:150 +#: src/gui/inventorywindow.cpp:160 +#: src/gui/sell.cpp:70 +#: src/gui/sell.cpp:230 +#: src/gui/sell.cpp:244 +#: src/gui/trade.cpp:94 +#: src/gui/trade.cpp:266 #, c-format msgid "Description: %s" msgstr "æè¿°ï¼š%s" -#: src/gui/buy.cpp:63 src/gui/buy.cpp:207 src/gui/buy.cpp:224 -#: src/gui/sell.cpp:65 src/gui/sell.cpp:226 src/gui/sell.cpp:239 +#: src/gui/buy.cpp:64 +#: src/gui/buy.cpp:208 +#: src/gui/buy.cpp:225 +#: src/gui/inventorywindow.cpp:149 +#: src/gui/inventorywindow.cpp:158 +#: src/gui/sell.cpp:71 +#: src/gui/sell.cpp:232 +#: src/gui/sell.cpp:245 #, c-format msgid "Effect: %s" msgstr "效果:%s" -#: src/gui/buysell.cpp:30 +#: src/gui/buysell.cpp:31 msgid "Shop" msgstr "商店" -#: src/gui/buysell.cpp:34 src/gui/sell.cpp:42 src/gui/sell.cpp:62 +#: src/gui/buysell.cpp:35 +#: src/gui/sell.cpp:48 +#: src/gui/sell.cpp:68 msgid "Sell" msgstr "出售" -#: src/gui/buysell.cpp:34 src/gui/char_select.cpp:103 -#: src/gui/char_select.cpp:267 src/gui/char_server.cpp:57 -#: src/gui/connection.cpp:47 src/gui/item_amount.cpp:60 src/gui/login.cpp:80 -#: src/gui/npcintegerdialog.cpp:40 src/gui/npclistdialog.cpp:49 -#: src/gui/npcstringdialog.cpp:38 src/gui/register.cpp:89 src/gui/setup.cpp:57 -#: src/gui/trade.cpp:63 src/gui/updatewindow.cpp:114 +#: src/gui/buysell.cpp:35 +#: src/gui/char_select.cpp:85 +#: src/gui/char_select.cpp:258 +#: src/gui/char_server.cpp:60 +#: src/gui/connection.cpp:47 +#: src/gui/item_amount.cpp:61 +#: src/gui/login.cpp:52 +#: src/gui/npclistdialog.cpp:45 +#: src/gui/register.cpp:90 +#: src/gui/setup.cpp:59 +#: src/gui/trade.cpp:63 +#: src/gui/updatewindow.cpp:118 msgid "Cancel" msgstr "å–æ¶ˆ" -#: src/gui/char_select.cpp:64 +#: src/gui/char_select.cpp:63 msgid "Confirm Character Delete" msgstr "ç¡®è®¤åˆ é™¤è§’è‰²" -#: src/gui/char_select.cpp:65 +#: src/gui/char_select.cpp:64 msgid "Are you sure you want to delete this character?" msgstr "ä½ ç¡®å®šæƒ³åˆ é™¤è¿™ä¸ªè§’è‰²ï¼Ÿ" -#: src/gui/char_select.cpp:83 +#: src/gui/char_select.cpp:81 msgid "Select Character" msgstr "选择角色" -#: src/gui/char_select.cpp:90 src/gui/char_select.cpp:177 -#: src/gui/char_select.cpp:189 +#: src/gui/char_select.cpp:84 +#: src/gui/item_amount.cpp:60 +#: src/gui/login.cpp:51 +#: src/gui/ok_dialog.cpp:37 +#: src/gui/trade.cpp:62 +msgid "Ok" +msgstr "确认" + +#: src/gui/char_select.cpp:86 +msgid "New" +msgstr "新建" + +#: src/gui/char_select.cpp:87 +#: src/gui/setup_players.cpp:223 +msgid "Delete" +msgstr "åˆ é™¤" + +#: src/gui/char_select.cpp:88 +msgid "Previous" +msgstr "上一个" + +#: src/gui/char_select.cpp:89 +msgid "Next" +msgstr "下一个" + +#: src/gui/char_select.cpp:91 +#: src/gui/char_select.cpp:171 +#: src/gui/char_select.cpp:183 +#: src/gui/inventorywindow.cpp:148 +#: src/gui/inventorywindow.cpp:156 +#: src/gui/trade.cpp:92 +#: src/gui/trade.cpp:264 #, c-format msgid "Name: %s" msgstr "å§“å:%s" -#: src/gui/char_select.cpp:91 src/gui/char_select.cpp:178 -#: src/gui/char_select.cpp:190 src/gui/status.cpp:50 src/gui/status.cpp:165 +#: src/gui/char_select.cpp:92 +#: src/gui/char_select.cpp:172 +#: src/gui/char_select.cpp:184 +#: src/gui/status.cpp:51 +#: src/gui/status.cpp:232 #, c-format msgid "Level: %d" msgstr "ç‰çº§ï¼š%d" -#: src/gui/char_select.cpp:92 src/gui/char_select.cpp:179 -#: src/gui/char_select.cpp:191 +#: src/gui/char_select.cpp:93 +#: src/gui/char_select.cpp:173 +#: src/gui/char_select.cpp:185 #, c-format msgid "Job Level: %d" msgstr "èŒä¸šç‰çº§ï¼š%d" -#: src/gui/char_select.cpp:93 src/gui/char_select.cpp:192 +#: src/gui/char_select.cpp:94 +#: src/gui/char_select.cpp:186 #, c-format msgid "Money: %d" msgstr "金钱:%d" -#: src/gui/char_select.cpp:95 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:193 -msgid "New" -msgstr "新建" - -#: src/gui/char_select.cpp:96 src/gui/char_select.cpp:97 -#: src/gui/char_select.cpp:183 src/gui/setup_players.cpp:228 -msgid "Delete" -msgstr "åˆ é™¤" - -#: src/gui/char_select.cpp:99 -msgid "Previous" -msgstr "上一个" - -#: src/gui/char_select.cpp:100 -msgid "Next" -msgstr "下一个" - -#: src/gui/char_select.cpp:102 src/gui/item_amount.cpp:59 -#: src/gui/ok_dialog.cpp:40 src/gui/trade.cpp:62 -msgid "Ok" -msgstr "确认" - -#: src/gui/char_select.cpp:180 +#: src/gui/char_select.cpp:174 #, c-format msgid "Gold: %d" msgstr "金å¸ï¼š%d" -#: src/gui/char_select.cpp:249 +#: src/gui/char_select.cpp:243 msgid "Create Character" msgstr "创建角色" -#: src/gui/char_select.cpp:259 src/gui/login.cpp:51 src/gui/register.cpp:76 +#: src/gui/char_select.cpp:250 +#: src/gui/login.cpp:44 +#: src/gui/register.cpp:79 msgid "Name:" msgstr "å§“å:" -#: src/gui/char_select.cpp:262 +#: src/gui/char_select.cpp:253 msgid "Hair Color:" msgstr "å‘色:" -#: src/gui/char_select.cpp:265 +#: src/gui/char_select.cpp:256 msgid "Hair Style:" msgstr "å‘型:" -#: src/gui/char_select.cpp:266 +#: src/gui/char_select.cpp:257 msgid "Create" msgstr "建立" -#: src/gui/char_server.cpp:49 +#: src/gui/char_server.cpp:52 msgid "Select Server" msgstr "选择æœåС噍" -#: src/gui/char_server.cpp:56 src/gui/login.cpp:79 -#: src/gui/npcintegerdialog.cpp:39 src/gui/npclistdialog.cpp:48 -#: src/gui/npcstringdialog.cpp:37 src/gui/npc_text.cpp:48 +#: src/gui/char_server.cpp:59 +#: src/gui/npclistdialog.cpp:44 +#: src/gui/npc_text.cpp:46 msgid "OK" msgstr "确定" -#: src/gui/chat.cpp:55 src/gui/colour.cpp:31 src/gui/menuwindow.cpp:62 -#: src/gui/menuwindow.cpp:97 -#, fuzzy -msgid "Chat" -msgstr "建立" - -#: src/gui/chat.cpp:146 -#, fuzzy -msgid "Global announcement: " +#: src/gui/chat.cpp:122 +msgid "Global announcement:" msgstr "全局公告:" -#: src/gui/chat.cpp:151 -#, fuzzy, c-format -msgid "Global announcement from %s: " +#: src/gui/chat.cpp:125 +#, c-format +msgid "Global announcement from %s:" msgstr "%s 全局公告:" -#: src/gui/chat.cpp:165 src/gui/login.cpp:53 src/gui/register.cpp:79 +#: src/gui/chat.cpp:140 +#: src/gui/login.cpp:46 +#: src/gui/register.cpp:82 msgid "Server:" msgstr "æœåŠ¡å™¨ï¼š" -#: src/gui/chat.cpp:327 +#: src/gui/chat.cpp:146 +#, c-format +msgid "%s whispers:" +msgstr "%sæ‚„æ‚„å¯¹ä½ è¯´ï¼š" + +#: src/gui/chat.cpp:283 #, c-format msgid "Whispering to %s: %s" msgstr "对%s窃窃ç§è¯ï¼š%s" -#: src/gui/chat.cpp:351 -msgid "Trying to send a blank party message." -msgstr "" - -#: src/gui/chat.cpp:386 src/resources/itemdb.cpp:57 -#, fuzzy -msgid "Unknown item" -msgstr "未知指令" - -#: src/gui/chat.cpp:479 -msgid "Return toggles chat." -msgstr "" - -#: src/gui/chat.cpp:480 -msgid "Message closes chat." -msgstr "" - -#: src/gui/chat.cpp:490 -msgid "Return now toggles chat." -msgstr "" - -#: src/gui/chat.cpp:498 -msgid "Message now closes chat." -msgstr "" - -#: src/gui/chat.cpp:503 -msgid "" -"Options to /toggle are \"yes\", \"no\", \"true\", \"false\", \"1\", \"0\"." -msgstr "" - -#: src/gui/chat.cpp:510 -msgid "Unknown party command... Type \"/help\" party for more information." -msgstr "" - -#: src/gui/chat.cpp:554 -msgid "No such spell!" -msgstr "" - -#: src/gui/chat.cpp:589 src/gui/chat.cpp:594 -msgid "Present: " -msgstr "" - -#: src/gui/chat.cpp:590 -msgid "Attendance written to record log." -msgstr "" - -#: src/gui/chat.cpp:599 +#: src/gui/chat.cpp:356 msgid "Unknown command" msgstr "未知指令" -#: src/gui/chat.cpp:611 +#: src/gui/chat.cpp:366 msgid "Trade failed!" msgstr "交易失败ï¼" -#: src/gui/chat.cpp:614 +#: src/gui/chat.cpp:369 msgid "Emote failed!" msgstr "å‘é€è¡¨æƒ…失败ï¼" -#: src/gui/chat.cpp:617 +#: src/gui/chat.cpp:372 msgid "Sit failed!" msgstr "原地休æ¯å¤±è´¥ï¼" -#: src/gui/chat.cpp:620 +#: src/gui/chat.cpp:375 msgid "Chat creating failed!" msgstr "èŠå¤©åˆ›å»ºå¤±è´¥ï¼" -#: src/gui/chat.cpp:623 +#: src/gui/chat.cpp:378 msgid "Could not join party!" msgstr "ä¸èƒ½åŠ å…¥å·¥ä¼šï¼" -#: src/gui/chat.cpp:626 +#: src/gui/chat.cpp:381 msgid "Cannot shout!" msgstr "æ— æ³•å‘¼å–Šï¼" -#: src/gui/chat.cpp:635 +#: src/gui/chat.cpp:389 msgid "You have not yet reached a high enough lvl!" msgstr "ä½ è¿˜æ²¡æœ‰è¾¾åˆ°è¶³å¤Ÿçš„ç‰çº§ï¼" -#: src/gui/chat.cpp:638 +#: src/gui/chat.cpp:392 msgid "Insufficient HP!" msgstr "HPä¸è¶³ï¼" -#: src/gui/chat.cpp:641 +#: src/gui/chat.cpp:395 msgid "Insufficient SP!" msgstr "SPä¸è¶³ï¼" -#: src/gui/chat.cpp:644 +#: src/gui/chat.cpp:398 msgid "You have no memos!" msgstr "没有备忘录" -#: src/gui/chat.cpp:647 +#: src/gui/chat.cpp:401 #, fuzzy msgid "You cannot do that right now!" msgstr "ä½ çŽ°åœ¨æ— æ³•åŠžåˆ°ï¼" -#: src/gui/chat.cpp:650 +#: src/gui/chat.cpp:404 msgid "Seems you need more Zeny... ;-)" msgstr "ä½ éœ€è¦æ›´å¤šé’žç¥¨â€¦â€¦;-)" -#: src/gui/chat.cpp:653 +#: src/gui/chat.cpp:407 msgid "You cannot use this skill with that kind of weapon!" msgstr "æ¤æ¦å™¨æ— 法用æ¥ä½¿ç”¨æ¤é¡¹æŠ€èƒ½ï¼" -#: src/gui/chat.cpp:656 +#: src/gui/chat.cpp:410 msgid "You need another red gem!" msgstr "ä½ éœ€è¦å¦ä¸€é¢—红å®çŸ³ï¼" -#: src/gui/chat.cpp:659 +#: src/gui/chat.cpp:413 msgid "You need another blue gem!" msgstr "ä½ éœ€è¦å¦ä¸€é¢—è“å®çŸ³ï¼" -#: src/gui/chat.cpp:662 +#: src/gui/chat.cpp:416 msgid "You're carrying to much to do this!" msgstr "ä½ å·²è´Ÿé‡å¤ªå¤šï¼Œæ— 法办到ï¼" -#: src/gui/chat.cpp:665 +#: src/gui/chat.cpp:419 msgid "Huh? What's that?" msgstr "啊?那是什么?" -#: src/gui/chat.cpp:674 +#: src/gui/chat.cpp:425 msgid "Warp failed..." msgstr "ä¼ é€å¤±è´¥..." -#: src/gui/chat.cpp:677 +#: src/gui/chat.cpp:428 msgid "Could not steal anything..." msgstr "æ— æ³•å·å–任何物å“..." -#: src/gui/chat.cpp:680 +#: src/gui/chat.cpp:431 msgid "Poison had no effect..." msgstr "æ¯’è¯æ— 效..." -#: src/gui/chat.cpp:763 -msgid "The current party prefix is " -msgstr "" - -#: src/gui/chat.cpp:768 -msgid "Party prefix must be one character long." -msgstr "" - -#: src/gui/chat.cpp:774 -msgid "Cannot use a '/' as the prefix." -msgstr "" - -#: src/gui/chat.cpp:779 -#, fuzzy -msgid "Changing prefix to " -msgstr "æ”¹å˜æˆOpenGL" - -#: src/gui/chat.cpp:789 +#: src/gui/chat.cpp:496 msgid "-- Help --" msgstr "-- 帮助 --" -#: src/gui/chat.cpp:792 +#: src/gui/chat.cpp:499 msgid "/announce: Global announcement (GM only)" msgstr "/announce: å…¨å±€é€šå‘Šï¼ˆåªæœ‰GMå¯ä½¿ç”¨ï¼‰" -#: src/gui/chat.cpp:793 +#: src/gui/chat.cpp:500 msgid "/clear: Clears this window" msgstr "/clear: 清除èŠå¤©è®°å½•" -#: src/gui/chat.cpp:794 +#: src/gui/chat.cpp:501 msgid "/help: Display this help" msgstr "/help: 显示帮助信æ¯" -#: src/gui/chat.cpp:795 -msgid "/party <command> <params>: Party commands." -msgstr "" - -#: src/gui/chat.cpp:796 -#, fuzzy -msgid "/msg <nick> <message>: Alternate form for /whisper" -msgstr "/w <昵称> <ä¿¡æ¯>: /whisper的缩写形å¼" - -#: src/gui/chat.cpp:797 -msgid "/present: Get list of players present" -msgstr "" - -#: src/gui/chat.cpp:798 -msgid "/record <filename>: Start recording the chat to an external file." -msgstr "" - -#: src/gui/chat.cpp:800 -msgid "/toggle: Determine whether <return> toggles the chat log." -msgstr "" - -#: src/gui/chat.cpp:802 +#: src/gui/chat.cpp:502 msgid "/where: Display map name" msgstr "/where: 显示地图åç§°" -#: src/gui/chat.cpp:803 -msgid "/w <nick> <message>: Short form for /whisper" -msgstr "/w <昵称> <ä¿¡æ¯>: /whisper的缩写形å¼" - -#: src/gui/chat.cpp:804 +#: src/gui/chat.cpp:503 msgid "/whisper <nick> <message>: Sends a private <message> to <nick>" msgstr "/whisper <昵称> <ä¿¡æ¯>: å‘é€ä¸€æ¡ç§å¯†ä¿¡æ¯ <ä¿¡æ¯> ç»™ <昵称>" -#: src/gui/chat.cpp:806 +#: src/gui/chat.cpp:505 +msgid "/w <nick> <message>: Short form for /whisper" +msgstr "/w <昵称> <ä¿¡æ¯>: /whisper的缩写形å¼" + +#: src/gui/chat.cpp:506 msgid "/who: Display number of online users" msgstr "/who: 显示在线用户数" -#: src/gui/chat.cpp:807 +#: src/gui/chat.cpp:507 msgid "For more information, type /help <command>" msgstr "输入/help <指令> èŽ·å–æ›´å¤šå¸®åŠ©ä¿¡æ¯" -#: src/gui/chat.cpp:811 +#: src/gui/chat.cpp:512 msgid "Command: /announce <msg>" msgstr "指令: /announce <ä¿¡æ¯>" -#: src/gui/chat.cpp:812 +#: src/gui/chat.cpp:513 msgid "*** only available to a GM ***" msgstr "*** åªæœ‰GMå¯ç”¨ ***" -#: src/gui/chat.cpp:813 +#: src/gui/chat.cpp:514 msgid "This command sends the message <msg> to all players currently online." msgstr "该指令会å‘é€<ä¿¡æ¯>给所有在线用户。" -#: src/gui/chat.cpp:818 +#: src/gui/chat.cpp:520 msgid "Command: /clear" msgstr "指令: /clear" -#: src/gui/chat.cpp:819 +#: src/gui/chat.cpp:521 msgid "This command clears the chat log of previous chat." msgstr "è¯¥æŒ‡ä»¤å¯æ¸…除历å²èŠå¤©è®°å½•。" -#: src/gui/chat.cpp:824 +#: src/gui/chat.cpp:527 msgid "Command: /help" msgstr "指令: /help" -#: src/gui/chat.cpp:825 +#: src/gui/chat.cpp:528 msgid "This command displays a list of all commands available." msgstr "è¯¥æŒ‡ä»¤å¯æ˜¾ç¤ºæ‰€æœ‰å¯ç”¨æŒ‡ä»¤ã€‚" -#: src/gui/chat.cpp:827 +#: src/gui/chat.cpp:530 msgid "Command: /help <command>" msgstr "指令: /help <指令>" -#: src/gui/chat.cpp:828 +#: src/gui/chat.cpp:531 msgid "This command displays help on <command>." msgstr "该指令显现<指令>的帮助信æ¯" -#: src/gui/chat.cpp:836 -#, fuzzy -msgid "Command: /present" -msgstr "指令: /where" - -#: src/gui/chat.cpp:837 -msgid "" -"This command gets a list of players within hearing and sends it to either " -"the record log if recording, or the chat log otherwise." -msgstr "" - -#: src/gui/chat.cpp:843 -#, fuzzy -msgid "Command: /record <filename>" -msgstr "指令: /clear" - -#: src/gui/chat.cpp:844 -#, fuzzy -msgid "This command starts recording the chat log to the file <filename>." -msgstr "è¯¥æŒ‡ä»¤å¯æ¸…除历å²èŠå¤©è®°å½•。" - -#: src/gui/chat.cpp:846 -#, fuzzy -msgid "Command: /record" -msgstr "指令: /clear" - -#: src/gui/chat.cpp:847 -#, fuzzy -msgid "This command finishes a recording session." -msgstr "该指令显现<指令>的帮助信æ¯" - -#: src/gui/chat.cpp:851 -#, fuzzy -msgid "Command: /toggle <state>" -msgstr "指令: /announce <ä¿¡æ¯>" - -#: src/gui/chat.cpp:852 -msgid "" -"This command sets whether the return key should toggle thechat log, or " -"whether the chat log turns off automatically." -msgstr "" - -#: src/gui/chat.cpp:855 -msgid "" -"<state> can be one of \"1\", \"yes\", \"true\" to turn the toggle on, or \"0" -"\", \"no\", \"false\" to turn the toggle off." -msgstr "" - -#: src/gui/chat.cpp:858 -#, fuzzy -msgid "Command: /toggle" -msgstr "指令: /clear" - -#: src/gui/chat.cpp:859 -#, fuzzy -msgid "This command displays the return toggle status." -msgstr "è¯¥æ¡æŒ‡ä»¤æ˜¾ç¤ºå½“å‰åœ°å›¾å。" - -#: src/gui/chat.cpp:863 +#: src/gui/chat.cpp:536 msgid "Command: /where" msgstr "指令: /where" -#: src/gui/chat.cpp:864 +#: src/gui/chat.cpp:537 msgid "This command displays the name of the current map." msgstr "è¯¥æ¡æŒ‡ä»¤æ˜¾ç¤ºå½“å‰åœ°å›¾å。" -#: src/gui/chat.cpp:869 -#, fuzzy -msgid "Command: /msg <nick> <msg>" -msgstr "指令: /w <昵称> <ä¿¡æ¯>" - -#: src/gui/chat.cpp:870 +#: src/gui/chat.cpp:543 msgid "Command: /whisper <nick> <msg>" msgstr "指令: /whisper <昵称> <ä¿¡æ¯>" -#: src/gui/chat.cpp:871 +#: src/gui/chat.cpp:544 msgid "Command: /w <nick> <msg>" msgstr "指令: /w <昵称> <ä¿¡æ¯>" -#: src/gui/chat.cpp:872 +#: src/gui/chat.cpp:545 msgid "This command sends the message <msg> to <nick>." msgstr "è¯¥æ¡æŒ‡ä»¤å‘é€ä¿¡æ¯ <msg> ç»™ <nick>" -#: src/gui/chat.cpp:874 +#: src/gui/chat.cpp:547 msgid "If the <nick> has spaces in it, enclose it in double quotes (\")." msgstr "如果<昵称>ä¹‹é—´æœ‰ç©ºæ ¼ï¼Œç”¨åŒå¼•å·(\")括起æ¥ã€‚" -#: src/gui/chat.cpp:879 +#: src/gui/chat.cpp:553 msgid "Command: /who" msgstr "指令: /who" -#: src/gui/chat.cpp:880 +#: src/gui/chat.cpp:554 msgid "This command displays the number of players currently online." msgstr "è¯¥æ¡æŒ‡ä»¤å¯æ˜¾çް当å‰åœ¨çº¿ç”¨æˆ·æ€»æ•°ã€‚" -#: src/gui/chat.cpp:885 +#: src/gui/chat.cpp:558 msgid "Unknown command." msgstr "未知命令" -#: src/gui/chat.cpp:886 +#: src/gui/chat.cpp:559 msgid "Type /help for a list of commands." msgstr "输入 /help èŽ·å–æŒ‡ä»¤åˆ—表。" -#: src/gui/colour.cpp:32 -msgid "GM" -msgstr "" - -#: src/gui/colour.cpp:33 -#, fuzzy -msgid "Highlight" -msgstr "高" - -#: src/gui/colour.cpp:34 -#, fuzzy -msgid "Player" -msgstr "玩家" - -#: src/gui/colour.cpp:35 -#, fuzzy -msgid "Whisper" -msgstr "%sæ‚„æ‚„å¯¹ä½ è¯´ï¼š" - -#: src/gui/colour.cpp:36 -msgid "Is" -msgstr "" - -#: src/gui/colour.cpp:37 -#, fuzzy -msgid "Party" -msgstr "开始" - -#: src/gui/colour.cpp:38 -#, fuzzy -msgid "Server" -msgstr "æœåŠ¡å™¨ï¼š" - -#: src/gui/colour.cpp:39 -msgid "Logger" -msgstr "" - -#: src/gui/colour.cpp:40 -msgid "Hyperlink" -msgstr "" - -#: src/gui/confirm_dialog.cpp:40 +#: src/gui/confirm_dialog.cpp:35 msgid "Yes" msgstr "是" -#: src/gui/confirm_dialog.cpp:41 +#: src/gui/confirm_dialog.cpp:36 msgid "No" msgstr "å¦" -#: src/gui/connection.cpp:49 src/gui/updatewindow.cpp:112 +#: src/gui/connection.cpp:49 +#: src/gui/updatewindow.cpp:116 msgid "Connecting..." msgstr "连接ä¸..." -#: src/gui/emotecontainer.cpp:60 -msgid "Unable to load selection.png" -msgstr "" - -#: src/gui/emotewindow.cpp:36 src/gui/emotewindow.cpp:38 -#: src/gui/menuwindow.cpp:68 src/gui/menuwindow.cpp:121 -msgid "Emote" -msgstr "" - -#: src/gui/emotewindow.cpp:45 src/gui/inventorywindow.cpp:62 -#: src/gui/inventorywindow.cpp:63 src/gui/inventorywindow.cpp:226 -#: src/gui/skill.cpp:144 -msgid "Use" -msgstr "使用" - -#: src/gui/equipmentwindow.cpp:62 src/gui/menuwindow.cpp:64 -#: src/gui/menuwindow.cpp:105 +#: src/gui/equipmentwindow.cpp:38 +#: src/gui/menuwindow.cpp:62 msgid "Equipment" msgstr "装备" -#: src/gui/equipmentwindow.cpp:77 src/gui/inventorywindow.cpp:66 -#: src/gui/inventorywindow.cpp:68 src/gui/inventorywindow.cpp:221 -msgid "Unequip" -msgstr "å¸ä¸‹è£…备" - -#: src/gui/help.cpp:34 src/gui/help.cpp:39 +#: src/gui/help.cpp:33 msgid "Help" msgstr "帮助" -#: src/gui/help.cpp:45 +#: src/gui/help.cpp:41 msgid "Close" msgstr "å…³é—" -#: src/gui/inventorywindow.cpp:50 src/gui/inventorywindow.cpp:54 -#: src/gui/menuwindow.cpp:65 src/gui/menuwindow.cpp:109 +#: src/gui/inventorywindow.cpp:46 +#: src/gui/menuwindow.cpp:63 msgid "Inventory" msgstr "ç‰©å“æ " -#: src/gui/inventorywindow.cpp:61 src/gui/inventorywindow.cpp:63 -#: src/gui/inventorywindow.cpp:223 -msgid "Equip" -msgstr "装备" +#: src/gui/inventorywindow.cpp:56 +#: src/gui/inventorywindow.cpp:232 +#: src/gui/skill.cpp:134 +msgid "Use" +msgstr "使用" -#: src/gui/inventorywindow.cpp:72 +#: src/gui/inventorywindow.cpp:57 msgid "Drop" msgstr "丢弃" -#: src/gui/inventorywindow.cpp:84 -#, fuzzy -msgid "Slots: " -msgstr "技能点数:%d" +#: src/gui/inventorywindow.cpp:99 +#, c-format +msgid "Weight: %d / %d" +msgstr "è´Ÿé‡ï¼š%d / %d" -#: src/gui/inventorywindow.cpp:85 src/gui/itempopup.cpp:111 -msgid "Weight: " -msgstr "" +#: src/gui/inventorywindow.cpp:104 +#, c-format +msgid "Slots used: %d / %d" +msgstr "已使用槽: %d / %d" + +#: src/gui/inventorywindow.cpp:225 +msgid "Unequip" +msgstr "å¸ä¸‹è£…备" + +#: src/gui/inventorywindow.cpp:228 +msgid "Equip" +msgstr "装备" #: src/gui/item_amount.cpp:76 msgid "Select amount of items to trade." @@ -646,644 +487,448 @@ msgstr "è¯·é€‰æ‹©äº¤æ˜“çš„ç‰©å“æ•°é‡" msgid "Select amount of items to drop." msgstr "è¯·é€‰æ‹©ä¸¢å¼ƒçš„ç‰©å“æ•°é‡" -#: src/gui/itempopup.cpp:112 -msgid " grams" -msgstr "" - -#: src/gui/login.cpp:49 +#: src/gui/login.cpp:42 msgid "Login" msgstr "登录" -#: src/gui/login.cpp:52 src/gui/register.cpp:77 +#: src/gui/login.cpp:45 +#: src/gui/register.cpp:80 msgid "Password:" msgstr "密ç :" -#: src/gui/login.cpp:54 src/gui/register.cpp:80 -msgid "Port:" -msgstr "端å£ï¼š" - -#: src/gui/login.cpp:55 -msgid "Recent:" -msgstr "" - -#: src/gui/login.cpp:78 -msgid "Keep" -msgstr "ä¿æŒ" +#: src/gui/login.cpp:50 +msgid "Remember Username" +msgstr "ä¿å˜ç”¨æˆ·å" -#: src/gui/login.cpp:81 src/gui/register.cpp:72 src/gui/register.cpp:88 +#: src/gui/login.cpp:53 +#: src/gui/register.cpp:75 +#: src/gui/register.cpp:89 msgid "Register" msgstr "注册" -#: src/gui/menuwindow.cpp:63 src/gui/menuwindow.cpp:101 src/gui/status.cpp:41 +#: src/gui/menuwindow.cpp:61 msgid "Status" msgstr "状æ€" -#: src/gui/menuwindow.cpp:66 src/gui/menuwindow.cpp:113 src/gui/skill.cpp:123 -#: src/gui/skill.cpp:134 +#: src/gui/menuwindow.cpp:64 +#: src/gui/skill.cpp:119 msgid "Skills" msgstr "技能" -#: src/gui/menuwindow.cpp:67 src/gui/menuwindow.cpp:117 +#: src/gui/menuwindow.cpp:65 msgid "Shortcut" msgstr "å¿«æ·é”®" -#: src/gui/menuwindow.cpp:69 src/gui/menuwindow.cpp:125 src/gui/setup.cpp:49 -#: src/main.cpp:788 +#: src/gui/menuwindow.cpp:66 +#: src/gui/setup.cpp:51 +#: src/main.cpp:716 msgid "Setup" msgstr "设置" -#: src/gui/minimap.cpp:39 src/gui/minimap.cpp:43 +#: src/gui/minimap.cpp:34 msgid "MiniMap" msgstr "å°åœ°å›¾" -#: src/gui/npcintegerdialog.cpp:33 -msgid "NPC Number Request" -msgstr "" - -#: src/gui/npcintegerdialog.cpp:41 -#, fuzzy -msgid "Reset" -msgstr "注册" - -#: src/gui/npclistdialog.cpp:36 src/gui/npc_text.cpp:34 +#: src/gui/npclistdialog.cpp:35 +#: src/gui/npc_text.cpp:35 msgid "NPC" msgstr "NPC" -#: src/gui/npcstringdialog.cpp:33 -msgid "NPC Text Request" -msgstr "" - -#: src/gui/popupmenu.cpp:78 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:81 +#, c-format msgid "@@trade|Trade With %s@@" msgstr "@@交易|与%s交易@@" -#: src/gui/popupmenu.cpp:79 -#, fuzzy, c-format +#: src/gui/popupmenu.cpp:83 +#, c-format msgid "@@attack|Attack %s@@" msgstr "@@攻击|攻击%s@@" -#: src/gui/popupmenu.cpp:85 -#, c-format -msgid "@@friend|Befriend %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:88 -#, fuzzy, c-format -msgid "@@disregard|Disregard %s@@" -msgstr "æ— è§†" - -#: src/gui/popupmenu.cpp:89 -#, c-format -msgid "@@ignore|Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:93 src/gui/popupmenu.cpp:98 -#, c-format -msgid "@@unignore|Un-Ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:94 -#, c-format -msgid "@@ignore|Completely ignore %s@@" -msgstr "" - -#: src/gui/popupmenu.cpp:106 -#, fuzzy, c-format -msgid "@@party-invite|Invite %s to party@@" -msgstr "ç‰©å“æ " - -#: src/gui/popupmenu.cpp:113 +#: src/gui/popupmenu.cpp:114 msgid "@@talk|Talk To NPC@@" msgstr "@@è°ˆè¯|å’ŒNPCè°ˆè¯@@" -#: src/gui/popupmenu.cpp:123 src/gui/popupmenu.cpp:139 -#: src/gui/popupmenu.cpp:297 +#: src/gui/popupmenu.cpp:124 +#: src/gui/popupmenu.cpp:140 +#: src/gui/popupmenu.cpp:293 msgid "@@cancel|Cancel@@" msgstr "@@å–æ¶ˆ|å–æ¶ˆ@@" -#: src/gui/popupmenu.cpp:135 +#: src/gui/popupmenu.cpp:136 #, c-format msgid "@@pickup|Pick Up %s@@" msgstr "@@æ¡èµ·|æ¡èµ·%s@@" -#: src/gui/popupmenu.cpp:287 +#: src/gui/popupmenu.cpp:283 msgid "@@use|Unequip@@" msgstr "@@使用|å¸è½½@@" -#: src/gui/popupmenu.cpp:289 +#: src/gui/popupmenu.cpp:285 msgid "@@use|Equip@@" msgstr "@@使用|装备@@" -#: src/gui/popupmenu.cpp:292 +#: src/gui/popupmenu.cpp:288 msgid "@@use|Use@@" msgstr "@@使用|使用@@" -#: src/gui/popupmenu.cpp:294 +#: src/gui/popupmenu.cpp:290 msgid "@@drop|Drop@@" msgstr "@@丢弃|丢弃@@" -#: src/gui/popupmenu.cpp:295 -msgid "@@chat|Add to Chat@@" -msgstr "" - -#: src/gui/recorder.cpp:37 -#, fuzzy -msgid "Recorder" -msgstr "连接ä¸..." - -#: src/gui/recorder.cpp:79 -msgid "Finishing recording." -msgstr "" - -#: src/gui/recorder.cpp:83 -msgid "Not currently recording." -msgstr "" - -#: src/gui/recorder.cpp:88 -#, fuzzy -msgid "Already recording." -msgstr "连接ä¸..." - -#: src/gui/recorder.cpp:96 -msgid "Starting to record..." -msgstr "" +#: src/gui/popupmenu.cpp:291 +msgid "@@description|Description@@" +msgstr "@@æè¿°|æè¿°@@" -#: src/gui/recorder.cpp:104 -msgid "Failed to start recording." -msgstr "" - -#: src/gui/recorder.h:39 -#, fuzzy -msgid "Recording..." -msgstr "连接ä¸..." - -#: src/gui/recorder.h:40 -msgid "Stop recording" -msgstr "" - -#: src/gui/register.cpp:78 +#: src/gui/register.cpp:81 msgid "Confirm:" msgstr "确认:" -#: src/gui/register.cpp:86 +#: src/gui/register.cpp:87 msgid "Male" msgstr "帅哥" -#: src/gui/register.cpp:87 +#: src/gui/register.cpp:88 msgid "Female" msgstr "美女" -#: src/gui/register.cpp:155 -#, c-format -msgid "RegisterDialog::register Username is %s" -msgstr "" - -#: src/gui/register.cpp:164 +#: src/gui/register.cpp:159 #, c-format msgid "The username needs to be at least %d characters long." msgstr "用户å至少需è¦%d个å—符。" -#: src/gui/register.cpp:172 +#: src/gui/register.cpp:167 #, c-format msgid "The username needs to be less than %d characters long." msgstr "用户åä¸èƒ½å°‘于%d个å—符" -#: src/gui/register.cpp:180 +#: src/gui/register.cpp:175 #, c-format msgid "The password needs to be at least %d characters long." msgstr "密ç 需è¦è‡³å°‘%d个å—符" -#: src/gui/register.cpp:188 +#: src/gui/register.cpp:183 #, c-format msgid "The password needs to be less than %d characters long." msgstr "密ç ä¸èƒ½å°‘于%d个å—符。" -#: src/gui/register.cpp:195 +#: src/gui/register.cpp:190 msgid "Passwords do not match." msgstr "密ç ä¸ä¸€è‡´." -#: src/gui/register.cpp:215 src/main.cpp:1056 +#: src/gui/register.cpp:210 +#: src/main.cpp:945 msgid "Error" msgstr "错误" -#: src/gui/setup_audio.cpp:41 +#: src/gui/setup_audio.cpp:42 msgid "Sound" msgstr "声音" -#: src/gui/setup_audio.cpp:47 +#: src/gui/setup_audio.cpp:48 msgid "Sfx volume" msgstr "音效声é‡" -#: src/gui/setup_audio.cpp:48 +#: src/gui/setup_audio.cpp:49 msgid "Music volume" msgstr "音ä¹å£°é‡" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:59 msgid "Apply" msgstr "应用" -#: src/gui/setup.cpp:57 +#: src/gui/setup.cpp:59 msgid "Reset Windows" msgstr "é‡ç½®çª—å£" -#: src/gui/setup.cpp:78 +#: src/gui/setup.cpp:79 msgid "Video" msgstr "视频" -#: src/gui/setup.cpp:82 +#: src/gui/setup.cpp:83 msgid "Audio" msgstr "音频" -#: src/gui/setup.cpp:86 +#: src/gui/setup.cpp:87 msgid "Joystick" msgstr "æ¸¸æˆæ†" -#: src/gui/setup.cpp:90 +#: src/gui/setup.cpp:91 msgid "Keyboard" msgstr "键盘" -#: src/gui/setup.cpp:94 -#, fuzzy -msgid "Colors" -msgstr "å…³é—" - -#: src/gui/setup.cpp:98 +#: src/gui/setup.cpp:95 msgid "Players" msgstr "玩家" -#: src/gui/setup_colours.cpp:68 -msgid "Red: " -msgstr "" - -#: src/gui/setup_colours.cpp:82 -msgid "Green: " -msgstr "" - -#: src/gui/setup_colours.cpp:96 -msgid "Blue: " -msgstr "" - -#: src/gui/setup_colours.cpp:159 src/gui/setup_colours.cpp:162 -msgid "This is what the color looks like" -msgstr "" - -#: src/gui/setup_joystick.cpp:38 src/gui/setup_joystick.cpp:79 +#: src/gui/setup_joystick.cpp:39 +#: src/gui/setup_joystick.cpp:78 msgid "Press the button to start calibration" msgstr "æŒ‰ä¸‹å¼€å§‹æ ¡å‡†æŒ‰é’®" -#: src/gui/setup_joystick.cpp:39 src/gui/setup_joystick.cpp:77 +#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:76 msgid "Calibrate" msgstr "æ ¡å‡†" -#: src/gui/setup_joystick.cpp:40 +#: src/gui/setup_joystick.cpp:41 msgid "Enable joystick" msgstr "å¯ç”¨æ¸¸æˆæ†" -#: src/gui/setup_joystick.cpp:84 +#: src/gui/setup_joystick.cpp:81 msgid "Stop" msgstr "åœæ¢" -#: src/gui/setup_joystick.cpp:85 +#: src/gui/setup_joystick.cpp:82 msgid "Rotate the stick" msgstr "旋转手柄" -#: src/gui/setup_keyboard.cpp:86 +#: src/gui/setup_keyboard.cpp:88 msgid "Assign" msgstr "分é…" -#: src/gui/setup_keyboard.cpp:90 +#: src/gui/setup_keyboard.cpp:92 msgid "Default" msgstr "预设" -#: src/gui/setup_keyboard.cpp:119 +#: src/gui/setup_keyboard.cpp:121 msgid "Key Conflict(s) Detected." msgstr "检测到按键冲çªã€‚" -#: src/gui/setup_keyboard.cpp:120 +#: src/gui/setup_keyboard.cpp:122 msgid "Resolve them, or gameplay may result in strange behaviour." msgstr "解决按键冲çªï¼Œå¦è€…游æˆè¿‡ç¨‹ä¸å¯èƒ½å‘生奇怪行为。" -#: src/gui/setup_players.cpp:56 +#: src/gui/setup_players.cpp:55 msgid "Name" msgstr "å§“å" -#: src/gui/setup_players.cpp:57 +#: src/gui/setup_players.cpp:56 msgid "Relation" msgstr "关系" -#: src/gui/setup_players.cpp:61 +#: src/gui/setup_players.cpp:60 msgid "Neutral" msgstr "ä¸ç«‹" -#: src/gui/setup_players.cpp:62 +#: src/gui/setup_players.cpp:61 msgid "Friend" msgstr "好å‹" -#: src/gui/setup_players.cpp:63 +#: src/gui/setup_players.cpp:62 #, fuzzy msgid "Disregarded" msgstr "æ— è§†" -#: src/gui/setup_players.cpp:64 +#: src/gui/setup_players.cpp:63 msgid "Ignored" msgstr "忽略" -#: src/gui/setup_players.cpp:206 src/gui/skill.cpp:83 -msgid "???" -msgstr "" - -#: src/gui/setup_players.cpp:222 +#: src/gui/setup_players.cpp:217 msgid "Save player list" msgstr "ä¿å˜çŽ©å®¶åˆ—è¡¨" -#: src/gui/setup_players.cpp:224 +#: src/gui/setup_players.cpp:219 msgid "Allow trading" msgstr "å…许交易" -#: src/gui/setup_players.cpp:226 +#: src/gui/setup_players.cpp:221 msgid "Allow whispers" msgstr "å…许ç§è¯" -#: src/gui/setup_players.cpp:257 +#: src/gui/setup_players.cpp:248 msgid "When ignoring:" msgstr "当忽略时:" -#: src/gui/setup_video.cpp:92 -msgid "No modes available" -msgstr "" - -#: src/gui/setup_video.cpp:94 -msgid "All resolutions available" -msgstr "" - -#: src/gui/setup_video.cpp:117 +#: src/gui/setup_video.cpp:114 msgid "Full screen" msgstr "å…¨å±" -#: src/gui/setup_video.cpp:118 +#: src/gui/setup_video.cpp:115 msgid "OpenGL" msgstr "OpenGL" -#: src/gui/setup_video.cpp:119 +#: src/gui/setup_video.cpp:116 msgid "Custom cursor" msgstr "è‡ªå®šä¹‰é¼ æ ‡" -#: src/gui/setup_video.cpp:120 -#, fuzzy -msgid "Particle effects" -msgstr "纹ç†ç»†èŠ‚" - -#: src/gui/setup_video.cpp:121 -msgid "Speech bubbles" -msgstr "" - -#: src/gui/setup_video.cpp:122 -msgid "Show name" -msgstr "" - -#: src/gui/setup_video.cpp:124 +#: src/gui/setup_video.cpp:118 msgid "FPS Limit:" msgstr "FPSé™åˆ¶ï¼š" -#: src/gui/setup_video.cpp:145 +#: src/gui/setup_video.cpp:139 msgid "Gui opacity" msgstr "Gui 逿˜Žåº¦" -#: src/gui/setup_video.cpp:146 +#: src/gui/setup_video.cpp:141 msgid "Scroll radius" msgstr "滑动åŠå¾„" -#: src/gui/setup_video.cpp:147 +#: src/gui/setup_video.cpp:142 msgid "Scroll laziness" msgstr "滑动延迟" -#: src/gui/setup_video.cpp:148 +#: src/gui/setup_video.cpp:143 #, fuzzy msgid "Ambient FX" msgstr "雾化效果" -#: src/gui/setup_video.cpp:149 +#: src/gui/setup_video.cpp:144 msgid "Particle Detail" msgstr "纹ç†ç»†èŠ‚" -#: src/gui/setup_video.cpp:211 src/gui/setup_video.cpp:457 +#: src/gui/setup_video.cpp:198 +#: src/gui/setup_video.cpp:398 msgid "off" msgstr "å…³é—" -#: src/gui/setup_video.cpp:214 src/gui/setup_video.cpp:225 -#: src/gui/setup_video.cpp:460 src/gui/setup_video.cpp:474 +#: src/gui/setup_video.cpp:201 +#: src/gui/setup_video.cpp:212 +#: src/gui/setup_video.cpp:401 +#: src/gui/setup_video.cpp:415 msgid "low" msgstr "低" -#: src/gui/setup_video.cpp:217 src/gui/setup_video.cpp:231 -#: src/gui/setup_video.cpp:463 src/gui/setup_video.cpp:480 +#: src/gui/setup_video.cpp:204 +#: src/gui/setup_video.cpp:218 +#: src/gui/setup_video.cpp:404 +#: src/gui/setup_video.cpp:421 msgid "high" msgstr "高" -#: src/gui/setup_video.cpp:228 src/gui/setup_video.cpp:477 +#: src/gui/setup_video.cpp:215 +#: src/gui/setup_video.cpp:418 msgid "medium" msgstr "ä¸" -#: src/gui/setup_video.cpp:234 src/gui/setup_video.cpp:483 +#: src/gui/setup_video.cpp:221 +#: src/gui/setup_video.cpp:424 msgid "max" msgstr "最大" -#: src/gui/setup_video.cpp:303 -msgid "Failed to switch to " -msgstr "" - -#: src/gui/setup_video.cpp:304 -msgid "windowed" -msgstr "" - -#: src/gui/setup_video.cpp:304 -#, fuzzy -msgid "fullscreen" -msgstr "å…¨å±" - -#: src/gui/setup_video.cpp:305 -msgid "mode and restoration of old mode also failed!" -msgstr "" - -#: src/gui/setup_video.cpp:312 +#: src/gui/setup_video.cpp:296 msgid "Switching to full screen" msgstr "切æ¢åˆ°å…¨å±" -#: src/gui/setup_video.cpp:313 +#: src/gui/setup_video.cpp:297 msgid "Restart needed for changes to take effect." msgstr "é‡å¯ç”Ÿæ•ˆ" -#: src/gui/setup_video.cpp:325 +#: src/gui/setup_video.cpp:309 msgid "Changing OpenGL" msgstr "æ”¹å˜æˆOpenGL" -#: src/gui/setup_video.cpp:326 +#: src/gui/setup_video.cpp:310 msgid "Applying change to OpenGL requires restart." msgstr "è¿ç”¨æ”¹å˜ä¸ºOpenGL需è¦é‡æ–°å¼€å§‹" -#: src/gui/setup_video.cpp:398 -msgid "Screen resolution changed" -msgstr "" - -#: src/gui/setup_video.cpp:399 -#, fuzzy -msgid "Restart your client for the change to take effect." -msgstr "é‡å¯ç”Ÿæ•ˆ" - -#: src/gui/setup_video.cpp:417 -msgid "Particle effect settings changed" -msgstr "" - -#: src/gui/setup_video.cpp:418 -#, fuzzy -msgid "Restart your client or change maps for the change to take effect." -msgstr "é‡å¯ç”Ÿæ•ˆ" +#: src/gui/skill.cpp:79 +msgid "Mystery Skill" +msgstr "神秘技能" -#: src/gui/skill.cpp:41 -#, fuzzy -msgid "skills.xml" -msgstr "技能" - -#: src/gui/skill.cpp:142 src/gui/skill.cpp:186 +#: src/gui/skill.cpp:132 +#: src/gui/skill.cpp:188 #, c-format msgid "Skill points: %d" msgstr "技能点数:%d" -#: src/gui/skill.cpp:143 +#: src/gui/skill.cpp:133 msgid "Up" msgstr "å‡çº§" -#: src/gui/skill.cpp:143 -msgid "inc" -msgstr "" - -#: src/gui/skill.cpp:144 -#, fuzzy -msgid "use" -msgstr "使用" - -#: src/gui/skill.cpp:262 -#, c-format -msgid "Error loading skills file: %s" -msgstr "" - -#: src/gui/speechbubble.cpp:35 -msgid "Speech" -msgstr "" - -#: src/gui/status.cpp:51 src/gui/status.cpp:168 +#: src/gui/status.cpp:52 +#: src/gui/status.cpp:235 #, c-format msgid "Job: %d" msgstr "èŒä¸šï¼š%d" -#: src/gui/status.cpp:52 src/gui/status.cpp:171 +#: src/gui/status.cpp:53 +#: src/gui/status.cpp:238 #, c-format msgid "Money: %d GP" msgstr "金钱:%d 金å¸" -#: src/gui/status.cpp:54 -msgid "HP:" -msgstr "" - -#: src/gui/status.cpp:57 -msgid "Exp:" -msgstr "" - -#: src/gui/status.cpp:60 -msgid "MP:" -msgstr "" - -#: src/gui/status.cpp:63 -#, fuzzy -msgid "Job:" -msgstr "èŒä¸šï¼š%d" - -#: src/gui/status.cpp:71 +#: src/gui/status.cpp:127 msgid "Stats" msgstr "状æ€" -#: src/gui/status.cpp:72 +#: src/gui/status.cpp:128 msgid "Total" msgstr "总计" -#: src/gui/status.cpp:73 +#: src/gui/status.cpp:129 msgid "Cost" msgstr "花费" -#: src/gui/status.cpp:77 +#: src/gui/status.cpp:132 msgid "Attack:" msgstr "攻击:" -#: src/gui/status.cpp:78 +#: src/gui/status.cpp:133 msgid "Defense:" msgstr "防御:" -#: src/gui/status.cpp:79 +#: src/gui/status.cpp:134 msgid "M.Attack:" msgstr "锿”»ï¼š" -#: src/gui/status.cpp:80 +#: src/gui/status.cpp:135 msgid "M.Defense:" msgstr "é”防:" -#: src/gui/status.cpp:81 +#: src/gui/status.cpp:136 #, c-format msgid "% Accuracy:" msgstr "% Ac精确度:" -#: src/gui/status.cpp:82 +#: src/gui/status.cpp:137 #, c-format msgid "% Evade:" msgstr "% E回é¿çŽ‡ï¼š" -#: src/gui/status.cpp:83 +#: src/gui/status.cpp:138 msgid "% Reflex:" msgstr "% 伤害å射:" -#: src/gui/status.cpp:211 +#: src/gui/status.cpp:282 msgid "Strength" msgstr "力é‡" -#: src/gui/status.cpp:212 +#: src/gui/status.cpp:283 msgid "Agility" msgstr "æ•æ·" -#: src/gui/status.cpp:213 +#: src/gui/status.cpp:284 msgid "Vitality" msgstr "生命" -#: src/gui/status.cpp:214 +#: src/gui/status.cpp:285 msgid "Intelligence" msgstr "智慧" -#: src/gui/status.cpp:215 +#: src/gui/status.cpp:286 msgid "Dexterity" msgstr "æ•æ·" -#: src/gui/status.cpp:216 +#: src/gui/status.cpp:287 msgid "Luck" msgstr "幸è¿" -#: src/gui/status.cpp:234 +#: src/gui/status.cpp:305 #, c-format msgid "Remaining Status Points: %d" msgstr "剩余状æ€ç‚¹æ•°ï¼š%d" -#: src/gui/trade.cpp:49 -#, fuzzy -msgid "Trade: You" -msgstr "交易" - -#: src/gui/trade.cpp:54 src/gui/trade.cpp:64 -msgid "Trade" -msgstr "交易" - #: src/gui/trade.cpp:61 msgid "Add" msgstr "æ·»åŠ " -#: src/gui/trade.cpp:80 src/gui/trade.cpp:122 src/gui/trade.cpp:172 +#: src/gui/trade.cpp:64 +msgid "Trade" +msgstr "交易" + +#: src/gui/trade.cpp:80 +#: src/gui/trade.cpp:156 +#: src/gui/trade.cpp:204 #, c-format msgid "You get %d GP." msgstr "ä½ å¾—åˆ°%d GP." @@ -1292,1027 +937,88 @@ msgstr "ä½ å¾—åˆ°%d GP." msgid "You give:" msgstr "ä½ ä»˜å‡º:" -#: src/gui/trade.cpp:250 +#: src/gui/trade.cpp:283 msgid "Failed adding item. You can not overlap one kind of item on the window." msgstr "æ·»åŠ ç‰©å“å¤±è´¥ã€‚ä½ ä¸èƒ½è¦†ç›–窗å£ä¸çš„该类物å“。" -#: src/gui/updatewindow.cpp:78 -#, c-format -msgid "Couldn't load text file: %s" -msgstr "" - #: src/gui/updatewindow.cpp:93 msgid "Updating..." msgstr "æ›´æ–°..." -#: src/gui/updatewindow.cpp:115 +#: src/gui/updatewindow.cpp:119 msgid "Play" msgstr "开始" -#: src/gui/updatewindow.cpp:196 -msgid "Couldn't load news" -msgstr "" - -#: src/gui/updatewindow.cpp:327 -msgid "curl error " -msgstr "" - -#: src/gui/updatewindow.cpp:328 -msgid " host: " -msgstr "" - -#: src/gui/updatewindow.cpp:363 -#, c-format -msgid "Checksum for file %s failed: (%lx/%lx)" -msgstr "" - -#: src/gui/updatewindow.cpp:413 -msgid "Unable to create mThread" -msgstr "" - -#: src/gui/updatewindow.cpp:451 -msgid "##1 The update process is incomplete." -msgstr "" - -#: src/gui/updatewindow.cpp:452 -msgid "##1 It is strongly recommended that" -msgstr "" - -#: src/gui/updatewindow.cpp:453 -msgid "##1 you try again later" -msgstr "" - -#: src/gui/updatewindow.cpp:507 -#, c-format -msgid "%s already here" -msgstr "" - -#: src/gui/updatewindow.cpp:520 +#: src/gui/updatewindow.cpp:526 msgid "Completed" msgstr "已完æˆ" -#: src/net/playerhandler.cpp:193 src/net/playerhandler.cpp:248 -msgid "Message" -msgstr "" - -#: src/net/playerhandler.cpp:194 -msgid "" -"You are carrying more then half your weight. You are unable to regain health." -msgstr "" - -#: src/net/playerhandler.cpp:218 -msgid "You are dead." -msgstr "" - -#: src/net/playerhandler.cpp:219 -msgid "We regret to inform you that your character was killed in battle." -msgstr "" - -#: src/net/playerhandler.cpp:220 -#, fuzzy -msgid "You are not that alive anymore." -msgstr "ä½ çŽ°åœ¨æ— æ³•åŠžåˆ°ï¼" - -#: src/net/playerhandler.cpp:221 -msgid "The cold hands of the grim reaper are grabbing for your soul." -msgstr "" - -#: src/net/playerhandler.cpp:222 -msgid "Game Over!" -msgstr "" - -#: src/net/playerhandler.cpp:223 -msgid "Insert coin to continue" -msgstr "" - -#: src/net/playerhandler.cpp:224 -msgid "" -"No, kids. Your character did not really die. It... err... went to a better " -"place." -msgstr "" - -#: src/net/playerhandler.cpp:225 -msgid "" -"Your plan of breaking your enemies weapon by bashing it with your throat " -"failed." -msgstr "" - -#: src/net/playerhandler.cpp:226 -msgid "I guess this did not run too well." -msgstr "" - -#: src/net/playerhandler.cpp:227 -msgid "Do you want your possessions identified?" -msgstr "" - -#: src/net/playerhandler.cpp:228 -msgid "Sadly, no trace of you was ever found..." -msgstr "" - -#: src/net/playerhandler.cpp:229 -msgid "Annihilated." -msgstr "" - -#: src/net/playerhandler.cpp:230 -msgid "Looks like you got your head handed to you." -msgstr "" - -#: src/net/playerhandler.cpp:231 -msgid "" -"You screwed up again, dump your body down the tubes and get you another one." -msgstr "" - -#: src/net/playerhandler.cpp:232 -msgid "You're not dead yet. You're just resting." -msgstr "" - -#: src/net/playerhandler.cpp:233 -#, fuzzy -msgid "You are no more." -msgstr "没有备忘录" - -#: src/net/playerhandler.cpp:234 -#, fuzzy -msgid "You have ceased to be." -msgstr "没有备忘录" - -#: src/net/playerhandler.cpp:235 -msgid "You've expired and gone to meet your maker." -msgstr "" - -#: src/net/playerhandler.cpp:236 -msgid "You're a stiff." -msgstr "" - -#: src/net/playerhandler.cpp:237 -msgid "Bereft of life, you rest in peace." -msgstr "" - -#: src/net/playerhandler.cpp:238 -msgid "If you weren't so animated, you'd be pushing up the daisies." -msgstr "" - -#: src/net/playerhandler.cpp:239 -msgid "Your metabolic processes are now history." -msgstr "" - -#: src/net/playerhandler.cpp:240 -msgid "You're off the twig." -msgstr "" - -#: src/net/playerhandler.cpp:241 -msgid "You've kicked the bucket." -msgstr "" - -#: src/net/playerhandler.cpp:242 -msgid "" -"You've shuffled off your mortal coil, run down the curtain and joined the " -"bleedin' choir invisibile." -msgstr "" - -#: src/net/playerhandler.cpp:243 -msgid "You are an ex-player." -msgstr "" - -#: src/net/playerhandler.cpp:244 -msgid "You're pining for the fjords." -msgstr "" - -#: src/net/playerhandler.cpp:267 -msgid "You picked up " -msgstr "" - -#: src/net/playerhandler.cpp:390 -msgid "Equip arrows first" -msgstr "" - -#: src/net/playerhandler.cpp:394 -#, c-format -msgid "0x013b: Unhandled message %i" -msgstr "" - -#: src/net/tradehandler.cpp:91 -msgid "Request for trade" -msgstr "" - -#: src/net/tradehandler.cpp:93 -msgid " wants to trade with you, do you accept?" -msgstr "" - -#: src/net/tradehandler.cpp:107 -msgid "Trading isn't possible. Trade partner is too far away." -msgstr "" - -#: src/net/tradehandler.cpp:111 -msgid "Trading isn't possible. Character doesn't exist." -msgstr "" - -#: src/net/tradehandler.cpp:115 -msgid "Trade cancelled due to an unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:121 -msgid "Trade: You and " -msgstr "" - -#: src/net/tradehandler.cpp:127 -#, fuzzy -msgid "Trade with " -msgstr "交易" - -#: src/net/tradehandler.cpp:128 -#, fuzzy -msgid " cancelled" -msgstr "å–æ¶ˆ" - -#: src/net/tradehandler.cpp:135 -msgid "Unhandled trade cancel packet" -msgstr "" - -#: src/net/tradehandler.cpp:185 -msgid "Failed adding item. Trade partner is over weighted." -msgstr "" - -#: src/net/tradehandler.cpp:190 -msgid "Failed adding item. Trade partner has no free slot." -msgstr "" - -#: src/net/tradehandler.cpp:194 -msgid "Failed adding item for unknown reason." -msgstr "" - -#: src/net/tradehandler.cpp:207 -#, fuzzy -msgid "Trade canceled." -msgstr "交易失败ï¼" - -#: src/net/tradehandler.cpp:214 -#, fuzzy -msgid "Trade completed." -msgstr "已完æˆ" - -#: src/resources/colordb.cpp:56 -#, c-format -msgid "Trying TMW's color file, %s." -msgstr "" - -#: src/resources/colordb.cpp:66 -msgid "ColorDB: Failed" -msgstr "" - -#: src/resources/colordb.cpp:83 -#, c-format -msgid "ColorDB: Redefinition of dye ID %d" -msgstr "" - -#: src/resources/colordb.cpp:98 -msgid "Unloading color database..." -msgstr "" - -#: src/resources/colordb.cpp:113 -#, c-format -msgid "ColorDB: Error, unknown dye ID# %d" -msgstr "" - -#: src/resources/emotedb.cpp:52 -msgid "Initializing emote database..." -msgstr "" - -#: src/resources/emotedb.cpp:59 -msgid "Emote Database: Error while loading emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:72 -msgid "Emote Database: Emote with missing ID in emotes.xml!" -msgstr "" - -#: src/resources/emotedb.cpp:131 -#, c-format -msgid "EmoteDB: Warning, unknown emote ID %d requested" -msgstr "" - -#: src/resources/itemdb.cpp:54 -msgid "Initializing item database..." -msgstr "" - -#: src/resources/itemdb.cpp:62 -msgid "items.xml" -msgstr "" - -#: src/resources/itemdb.cpp:67 -msgid "ItemDB: Error while loading items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:79 -msgid "ItemDB: Invalid or missing item ID in items.xml!" -msgstr "" - -#: src/resources/itemdb.cpp:84 -#, c-format -msgid "ItemDB: Redefinition of item ID %d" -msgstr "" - -#: src/resources/itemdb.cpp:102 +#: src/resources/itemdb.cpp:99 msgid "Unnamed" msgstr "未知物å“" -#: src/resources/itemdb.cpp:140 -#, c-format -msgid "ItemDB: Duplicate name of item found item %d" -msgstr "" - -#: src/resources/itemdb.cpp:166 -msgid "Unloading item database..." -msgstr "" - -#: src/resources/itemdb.cpp:184 -#, c-format -msgid "ItemDB: Error, unknown item ID# %d" -msgstr "" - -#: src/resources/itemdb.cpp:240 -#, c-format -msgid "ItemDB: Ignoring unknown sound event '%s'" -msgstr "" - -#: src/resources/monsterdb.cpp:44 -#, fuzzy -msgid "unnamed" -msgstr "未知物å“" - -#: src/resources/monsterdb.cpp:46 -msgid "Initializing monster database..." -msgstr "" - -#: src/resources/monsterdb.cpp:48 -msgid "monsters.xml" -msgstr "" - -#: src/resources/monsterdb.cpp:53 -msgid "Monster Database: Error while loading monster.xml!" -msgstr "" - -#: src/resources/monsterdb.cpp:84 -#, c-format -msgid "" -"MonsterDB: Unknown target cursor type \"%s\" for %s - using medium sized one" -msgstr "" - -#: src/resources/monsterdb.cpp:121 -#, c-format -msgid "MonsterDB: Warning, sound effect %s for unknown event %s of monster %s" -msgstr "" - -#: src/resources/monsterdb.cpp:159 -#, c-format -msgid "MonsterDB: Warning, unknown monster ID %d requested" -msgstr "" - -#: src/resources/npcdb.cpp:48 -msgid "Initializing NPC database..." -msgstr "" - -#: src/resources/npcdb.cpp:55 -msgid "NPC Database: Error while loading npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:67 -msgid "NPC Database: NPC with missing ID in npcs.xml!" -msgstr "" - -#: src/resources/npcdb.cpp:125 -#, c-format -msgid "NPCDB: Warning, unknown NPC ID %d requested" -msgstr "" - -#: src/game.cpp:390 -msgid "Screenshot saved to ~/" -msgstr "" - -#: src/game.cpp:395 -#, fuzzy -msgid "Saving screenshot failed!" -msgstr "原地休æ¯å¤±è´¥ï¼" - -#: src/game.cpp:396 -msgid "Error: could not save screenshot." -msgstr "" - -#: src/game.cpp:471 -msgid "Network Error" -msgstr "" - -#: src/game.cpp:472 -msgid "The connection to the server was lost, the program will now quit" -msgstr "" - -#: src/game.cpp:603 -#, fuzzy -msgid "Are you sure you want to quit?" -msgstr "ä½ ç¡®å®šæƒ³åˆ é™¤è¿™ä¸ªè§’è‰²ï¼Ÿ" - -#: src/game.cpp:610 -msgid "no" -msgstr "" - -#: src/game.cpp:738 -msgid "Ignoring incoming trade requests" -msgstr "" - -#: src/game.cpp:745 -msgid "Accepting incoming trade requests" -msgstr "" - -#: src/game.cpp:781 -#, c-format -msgid "Warning: guichan input exception: %s" -msgstr "" - -#: src/keyboardconfig.cpp:42 -msgid "Move Up" -msgstr "" - -#: src/keyboardconfig.cpp:43 -msgid "Move Down" -msgstr "" - -#: src/keyboardconfig.cpp:44 -msgid "Move Left" -msgstr "" - -#: src/keyboardconfig.cpp:45 -msgid "Move Right" -msgstr "" - -#: src/keyboardconfig.cpp:46 -#, fuzzy -msgid "Attack" -msgstr "攻击:" - -#: src/keyboardconfig.cpp:47 -msgid "Smilie" -msgstr "" - -#: src/keyboardconfig.cpp:48 -#, fuzzy -msgid "Talk" -msgstr "总计" - -#: src/keyboardconfig.cpp:49 -#, fuzzy -msgid "Stop Attack" -msgstr "攻击:" - -#: src/keyboardconfig.cpp:50 -msgid "Target Closest" -msgstr "" - -#: src/keyboardconfig.cpp:51 -msgid "Target NPC" -msgstr "" - -#: src/keyboardconfig.cpp:52 -#, fuzzy -msgid "Target Player" -msgstr "玩家" - -#: src/keyboardconfig.cpp:53 -msgid "Pickup" -msgstr "" - -#: src/keyboardconfig.cpp:54 -#, fuzzy -msgid "Hide Windows" -msgstr "é‡ç½®çª—å£" - -#: src/keyboardconfig.cpp:55 -#, fuzzy -msgid "Sit" -msgstr "分离" - -#: src/keyboardconfig.cpp:56 -msgid "Screenshot" -msgstr "" - -#: src/keyboardconfig.cpp:57 -msgid "Enable/Disable Trading" -msgstr "" - -#: src/keyboardconfig.cpp:58 -msgid "Find Path to Mouse" -msgstr "" - -#: src/keyboardconfig.cpp:59 src/keyboardconfig.cpp:60 -#: src/keyboardconfig.cpp:61 src/keyboardconfig.cpp:62 -#: src/keyboardconfig.cpp:63 src/keyboardconfig.cpp:64 -#: src/keyboardconfig.cpp:65 src/keyboardconfig.cpp:66 -#: src/keyboardconfig.cpp:67 src/keyboardconfig.cpp:68 -#: src/keyboardconfig.cpp:69 src/keyboardconfig.cpp:70 -#, fuzzy, c-format -msgid "Item Shortcut %d" -msgstr "å¿«æ·é”®" - -#: src/keyboardconfig.cpp:71 -#, fuzzy -msgid "Help Window" -msgstr "é‡ç½®çª—å£" - -#: src/keyboardconfig.cpp:72 -#, fuzzy -msgid "Status Window" -msgstr "状æ€" - -#: src/keyboardconfig.cpp:73 -#, fuzzy -msgid "Inventory Window" -msgstr "ç‰©å“æ " - -#: src/keyboardconfig.cpp:74 -#, fuzzy -msgid "Equipment WIndow" -msgstr "装备" - -#: src/keyboardconfig.cpp:75 -#, fuzzy -msgid "Skill Window" -msgstr "技能点数:%d" - -#: src/keyboardconfig.cpp:76 -msgid "Minimap Window" -msgstr "" - -#: src/keyboardconfig.cpp:77 -#, fuzzy -msgid "Chat Window" -msgstr "é‡ç½®çª—å£" - -#: src/keyboardconfig.cpp:78 -msgid "Item Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:79 -#, fuzzy -msgid "Setup Window" -msgstr "é‡ç½®çª—å£" - -#: src/keyboardconfig.cpp:80 -#, fuzzy -msgid "Debug Window" -msgstr "é‡ç½®çª—å£" - -#: src/keyboardconfig.cpp:81 -#, fuzzy -msgid "Emote Window" -msgstr "å‘é€è¡¨æƒ…失败ï¼" - -#: src/keyboardconfig.cpp:82 -msgid "Emote Shortcut Window" -msgstr "" - -#: src/keyboardconfig.cpp:83 src/keyboardconfig.cpp:84 -#: src/keyboardconfig.cpp:85 src/keyboardconfig.cpp:86 -#: src/keyboardconfig.cpp:87 src/keyboardconfig.cpp:88 -#: src/keyboardconfig.cpp:89 src/keyboardconfig.cpp:90 -#: src/keyboardconfig.cpp:91 src/keyboardconfig.cpp:92 -#: src/keyboardconfig.cpp:93 src/keyboardconfig.cpp:94 -#, fuzzy, c-format -msgid "Emote Shortcut %d" -msgstr "å¿«æ·é”®" - -#: src/keyboardconfig.cpp:95 -msgid "Toggle Chat" -msgstr "" - -#: src/keyboardconfig.cpp:96 -msgid "Scroll Chat Up" -msgstr "" - -#: src/keyboardconfig.cpp:97 -msgid "Scroll Chat Down" -msgstr "" - -#: src/keyboardconfig.cpp:98 -#, fuzzy -msgid "Select OK" -msgstr "选择æœåС噍" - -#: src/main.cpp:214 -#, c-format -msgid "Error: Invalid update host: %s" -msgstr "" - -#: src/main.cpp:215 -msgid "Invalid update host: " -msgstr "" - -#: src/main.cpp:221 -msgid "Warning: no protocol was specified for the update host" -msgstr "" - -#: src/main.cpp:246 -#, c-format -msgid "Error: %s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:248 src/main.cpp:254 -msgid "Error creating updates directory!" -msgstr "" - -#: src/main.cpp:252 -#, c-format -msgid "Error: %s/%s can't be made, but doesn't exist!" -msgstr "" - -#: src/main.cpp:283 -msgid " can't be created, but it doesn't exist! Exiting." -msgstr "" - -#: src/main.cpp:292 -#, c-format -msgid "Starting Aethyra Version %s" -msgstr "" - -#: src/main.cpp:294 -msgid "Starting Aethyra - Version not defined" -msgstr "" - -#: src/main.cpp:298 -msgid "Initializing SDL..." -msgstr "" - -#: src/main.cpp:300 -msgid "Could not initialize SDL: " -msgstr "" - -#: src/main.cpp:313 -msgid " couldn't be set as home directory! Exiting." -msgstr "" - -#: src/main.cpp:333 -#, c-format -msgid "Can't find Resources directory\n" -msgstr "" - -#: src/main.cpp:343 -msgid "Initializing configuration..." -msgstr "" - -#: src/main.cpp:426 -msgid "Couldn't set " -msgstr "" - -#: src/main.cpp:427 -msgid " video mode: " -msgstr "" - -#: src/main.cpp:457 -#, c-format -msgid "Warning: %s" -msgstr "" - -#: src/main.cpp:499 -msgid "aethyra" -msgstr "" - -#: src/main.cpp:500 -msgid "Options: " -msgstr "" - -#: src/main.cpp:501 -msgid " -C --configfile : Configuration file to use" -msgstr "" - -#: src/main.cpp:502 -msgid " -d --data : Directory to load game data from" -msgstr "" - -#: src/main.cpp:503 -msgid " -D --default : Bypass the login process with default settings" -msgstr "" - -#: src/main.cpp:504 -#, fuzzy -msgid " -h --help : Display this help" -msgstr "/help: 显示帮助信æ¯" - -#: src/main.cpp:505 -msgid " -H --updatehost : Use this update host" -msgstr "" - -#: src/main.cpp:506 -msgid " -p --playername : Login with this player" -msgstr "" - -#: src/main.cpp:507 -msgid " -P --password : Login with this password" -msgstr "" - -#: src/main.cpp:508 -msgid " -u --skipupdate : Skip the update downloads" -msgstr "" - -#: src/main.cpp:509 -msgid " -U --username : Login with this username" -msgstr "" - -#: src/main.cpp:510 -msgid " -v --version : Display the version" -msgstr "" - -#: src/main.cpp:516 src/main.cpp:519 -msgid "Aethyra version " -msgstr "" - -#: src/main.cpp:520 -msgid "(local build?, PACKAGE_VERSION is not defined)" -msgstr "" - -#: src/main.cpp:616 -#, fuzzy -msgid "Trying to connect to account server..." -msgstr "æ£åœ¨è¿žæŽ¥ å¸å· æœåС噍..." - -#: src/main.cpp:617 -#, c-format -msgid "Username is %s" -msgstr "" - -#: src/main.cpp:671 -#, fuzzy -msgid "Trying to connect to char server..." -msgstr "æ£åœ¨è¿žæŽ¥ 角色 æœåС噍..." - -#: src/main.cpp:693 -#, c-format -msgid "Memorizing selected character %s" -msgstr "" - -#: src/main.cpp:699 -#, fuzzy -msgid "Trying to connect to map server..." -msgstr "æ£åœ¨è¿žæŽ¥ 地图 æœåС噍..." - -#: src/main.cpp:700 -#, fuzzy, c-format -msgid "Map: %s" -msgstr "å§“å:%s" - -#: src/main.cpp:830 -#, c-format -msgid "Couldn't load %s as wallpaper" -msgstr "" - -#: src/main.cpp:863 +#: src/main.cpp:769 msgid "Got disconnected from server!" msgstr "å’ŒæœåŠ¡å™¨å¤±åŽ»è¿žæŽ¥" -#: src/main.cpp:1068 +#: src/main.cpp:956 msgid "Connecting to map server..." msgstr "æ£åœ¨è¿žæŽ¥ 地图 æœåС噍..." -#: src/main.cpp:1076 +#: src/main.cpp:964 msgid "Connecting to character server..." msgstr "æ£åœ¨è¿žæŽ¥ 角色 æœåС噍..." -#: src/main.cpp:1084 +#: src/main.cpp:972 msgid "Connecting to account server..." msgstr "æ£åœ¨è¿žæŽ¥ å¸å· æœåС噍..." -#: src/party.cpp:55 -msgid "Not yet implemented!" -msgstr "" - -#: src/party.cpp:64 -msgid "Party command not known." -msgstr "" - -#: src/party.cpp:71 -msgid "Party name is missing." -msgstr "" - -#: src/party.cpp:84 -msgid "Left party." -msgstr "" - -#: src/party.cpp:92 -msgid "Party successfully created." -msgstr "" - -#: src/party.cpp:97 -#, fuzzy -msgid "Could not create party." -msgstr "ä¸èƒ½åŠ å…¥å·¥ä¼šï¼" - -#: src/party.cpp:106 -#, c-format -msgid "%s is already a member of a party." -msgstr "" - -#: src/party.cpp:110 -#, c-format -msgid "%s refused your invitation." -msgstr "" - -#: src/party.cpp:114 -#, c-format -msgid "%s is now a member of your party." -msgstr "" - -#: src/party.cpp:126 -msgid "You can't have a blank party name!" -msgstr "" - -#: src/party.cpp:130 -#, fuzzy -msgid "Invite to party" -msgstr "ç‰©å“æ " - -#: src/party.cpp:131 -#, c-format -msgid "%s invites you to join the %s party, do you accept?" -msgstr "" - -#: src/party.cpp:149 -#, c-format -msgid "%s has left your party." -msgstr "" - -#: src/party.cpp:161 -msgid "Party chat received, but being is not a player" -msgstr "" - -#: src/party.cpp:173 -#, fuzzy -msgid "Command: /party <command> <args>" -msgstr "指令: /help <指令>" - -#: src/party.cpp:174 -msgid "where <command> can be one of:" -msgstr "" - -#: src/party.cpp:175 -msgid " /new" -msgstr "" - -#: src/party.cpp:176 -#, fuzzy -msgid " /create" -msgstr "建立" - -#: src/party.cpp:177 -msgid " /prefix" -msgstr "" - -#: src/party.cpp:178 -msgid " /leave" -msgstr "" - -#: src/party.cpp:179 -#, fuzzy -msgid "This command implements the partying function." -msgstr "该指令显现<指令>的帮助信æ¯" - -#: src/party.cpp:181 -msgid "Type /help party <command> for further help." -msgstr "" - -#: src/party.cpp:187 -#, fuzzy -msgid "Command: /party new <party-name>" -msgstr "指令: /announce <ä¿¡æ¯>" - -#: src/party.cpp:188 -msgid "Command: /party create <party-name>" -msgstr "" - -#: src/party.cpp:189 -msgid "These commands create a new party <party-name." -msgstr "" - -#: src/party.cpp:195 -msgid "Command: /party prefix <prefix-char>" -msgstr "" - -#: src/party.cpp:196 -#, fuzzy -msgid "This command sets the party prefix character." -msgstr "è¯¥æŒ‡ä»¤å¯æ¸…除历å²èŠå¤©è®°å½•。" - -#: src/party.cpp:198 -msgid "" -"Any message preceded by <prefix-char> is sent to the party instead of " -"everyone." -msgstr "" - -#: src/party.cpp:200 -#, fuzzy -msgid "Command: /party prefix" -msgstr "指令: /clear" - -#: src/party.cpp:201 -#, fuzzy -msgid "This command reports the current party prefix character." -msgstr "è¯¥æŒ‡ä»¤å¯æ¸…除历å²èŠå¤©è®°å½•。" - -#: src/party.cpp:209 -#, fuzzy -msgid "Command: /party leave" -msgstr "指令: /clear" - -#: src/party.cpp:210 -#, fuzzy -msgid "This command causes the player to leave the party." -msgstr "è¯¥æŒ‡ä»¤å¯æ¸…除历å²èŠå¤©è®°å½•。" - -#: src/party.cpp:214 -#, fuzzy -msgid "Unknown /party command." -msgstr "未知命令" - -#: src/party.cpp:215 -#, fuzzy -msgid "Type /help party for a list of options." -msgstr "输入 /help èŽ·å–æŒ‡ä»¤åˆ—表。" - -#, fuzzy -#~ msgid "Weight: %d g / %d g" -#~ msgstr "è´Ÿé‡ï¼š%d / %d" - -#~ msgid "Slots used: %d / %d" -#~ msgstr "已使用槽: %d / %d" - -#, fuzzy -#~ msgid "Map" -#~ msgstr "å°åœ°å›¾" - -#~ msgid "@@description|Description@@" -#~ msgstr "@@æè¿°|æè¿°@@" - -#~ msgid "Remember Username" -#~ msgstr "ä¿å˜ç”¨æˆ·å" - -#~ msgid "Mystery Skill" -#~ msgstr "神秘技能" - #~ msgid "Change" #~ msgstr "改å˜" - #~ msgid "Unregister" #~ msgstr "注销" - #~ msgid "Willpower:" #~ msgstr "æ„志力:" - #~ msgid "Please distribute %d points" #~ msgstr "请分å‘%d点数" - #~ msgid "Your name needs to be at least 4 characters." #~ msgstr "ä½ çš„åå—需è¦è‡³å°‘4个å—符" - #~ msgid "Character stats OK" #~ msgstr "角色状æ€å¯ä»¥" - #~ msgid "Please remove %d points" #~ msgstr "è¯·åˆ é™¤%d点数" - +#~ msgid "Split" +#~ msgstr "分离" #~ msgid "Select amount of items to split." #~ msgstr "è¯·é€‰æ‹©ä½ åˆ†ç¦»çš„ç‰©å“的数é‡" - #~ msgid "@@split|Split@@" #~ msgstr "@@分离|分离@@" - #~ msgid "Switch server" #~ msgstr "äº¤æ¢æœåС噍" - #~ msgid "Switch character" #~ msgstr "交æ¢è§’色" - #~ msgid "Email:" #~ msgstr "电å邮件" - #~ msgid "Choose your Mana World Server" #~ msgstr "è¯·é€‰æ‹©ä½ çš„é”æ³•世界æœåС噍" - +#~ msgid "Port:" +#~ msgstr "端å£ï¼š" #~ msgid "Please type both the address and the port of a server." #~ msgstr "请输入æœåŠ¡å™¨çš„IP地å€å’Œç«¯å£" - #~ msgid "Propose trade" #~ msgstr "打算交易" - #~ msgid "Confirm trade" #~ msgstr "决定交易" - #~ msgid "HP %+d" #~ msgstr "HP %+d" - #~ msgid "MP %+d" #~ msgstr "MP %+d" - #~ msgid "Confirm" #~ msgstr "确定" - #~ msgid "Charisma:" #~ msgstr "é…力:" - #~ msgid "Total Weight: %d - Maximum Weight: %d" #~ msgstr "总的力é‡ï¼š%d - 最大力é‡ï¼š%d" +#~ msgid "Keep" +#~ msgstr "ä¿æŒ" + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0176e617..4fa61ca7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,13 +2,15 @@ FIND_PACKAGE(SDL REQUIRED) FIND_PACKAGE(SDL_image REQUIRED) FIND_PACKAGE(SDL_mixer REQUIRED) FIND_PACKAGE(SDL_net REQUIRED) +FIND_PACKAGE(SDL_ttf REQUIRED) +FIND_PACKAGE(ENet REQUIRED) FIND_PACKAGE(CURL REQUIRED) FIND_PACKAGE(LibXml2 REQUIRED) FIND_PACKAGE(PhysFS REQUIRED) FIND_PACKAGE(PNG REQUIRED) SET(FLAGS "-DPACKAGE_VERSION=\\\"${VERSION}\\\"") -SET(FLAGS "${FLAGS} -DAETHYRA_DATADIR=\\\"${PKG_DATADIR}/\\\"") +SET(FLAGS "${FLAGS} -DTMW_DATADIR=\\\"${PKG_DATADIR}/\\\"") SET(GUICHAN_COMPONENTS "SDL") IF (WITH_OPENGL) @@ -28,6 +30,8 @@ INCLUDE_DIRECTORIES( ${SDLIMAGE_INCLUDE_DIR} ${SDLMIXER_INCLUDE_DIR} ${SDLNET_INCLUDE_DIR} + ${SDLTTF_INCLUDE_DIR} + ${ENET_INCLUDE_DIR} ${PNG_INCLUDE_DIR} ${PHYSFS_INCLUDE_DIR} ${CURL_INCLUDE_DIR} @@ -49,6 +53,8 @@ MARK_AS_ADVANCED(SDL_INCLUDE_DIR) MARK_AS_ADVANCED(SDL_LIBRARY) SET(SRCS + gui/widgets/avatar.cpp + gui/widgets/avatar.h gui/widgets/dropdown.cpp gui/widgets/dropdown.h gui/widgets/resizegrip.cpp @@ -71,6 +77,10 @@ SET(SRCS gui/buy.h gui/buysell.cpp gui/buysell.h + gui/changeemaildialog.cpp + gui/changeemaildialog.h + gui/changepassworddialog.cpp + gui/changepassworddialog.h gui/char_server.cpp gui/char_server.h gui/char_select.cpp @@ -101,8 +111,14 @@ SET(SRCS gui/gccontainer.h gui/gui.cpp gui/gui.h + gui/guildlistbox.cpp + gui/guildlistbox.h + gui/guildwindow.cpp + gui/guildwindow.h gui/help.cpp gui/help.h + gui/icon.cpp + gui/icon.h gui/inttextfield.cpp gui/inttextfield.h gui/inventorywindow.cpp @@ -124,6 +140,8 @@ SET(SRCS gui/listbox.h gui/login.cpp gui/login.h + gui/magic.cpp + gui/magic.h gui/menuwindow.cpp gui/menuwindow.h gui/minimap.cpp @@ -136,12 +154,16 @@ SET(SRCS gui/npclistdialog.h gui/npcstringdialog.cpp gui/npcstringdialog.h + gui/npcpostdialog.cpp + gui/npcpostdialog.h gui/npc_text.cpp gui/npc_text.h gui/ok_dialog.cpp gui/ok_dialog.h gui/palette.cpp gui/palette.h + gui/partywindow.h + gui/partywindow.cpp gui/passwordfield.cpp gui/passwordfield.h gui/playerbox.cpp @@ -152,6 +174,8 @@ SET(SRCS gui/popupmenu.h gui/progressbar.cpp gui/progressbar.h + gui/quitdialog.cpp + gui/quitdialog.h gui/radiobutton.cpp gui/radiobutton.h gui/recorder.cpp @@ -164,6 +188,8 @@ SET(SRCS gui/sdlinput.h gui/sell.cpp gui/sell.h + gui/serverdialog.cpp + gui/serverdialog.h gui/setup.cpp gui/setup.h gui/setup_audio.cpp @@ -205,6 +231,8 @@ SET(SRCS gui/table_model.h gui/textbox.cpp gui/textbox.h + gui/textdialog.cpp + gui/textdialog.h gui/textfield.cpp gui/textfield.h gui/textrenderer.h @@ -212,30 +240,40 @@ SET(SRCS gui/trade.h gui/truetypefont.cpp gui/truetypefont.h - gui/updatewindow.h + gui/unregisterdialog.cpp + gui/unregisterdialog.h gui/updatewindow.cpp + gui/updatewindow.h gui/viewport.cpp gui/viewport.h gui/window.cpp gui/window.h gui/windowcontainer.cpp gui/windowcontainer.h - net/beinghandler.h net/beinghandler.cpp - net/buysellhandler.h + net/beinghandler.h net/buysellhandler.cpp - net/charserverhandler.h + net/buysellhandler.h net/charserverhandler.cpp - net/chathandler.h + net/charserverhandler.h net/chathandler.cpp - net/equipmenthandler.h + net/chathandler.h + net/connection.cpp + net/connection.h net/equipmenthandler.cpp - net/inventoryhandler.h + net/equipmenthandler.h + net/guildhandler.cpp + net/guildhandler.h + net/internal.cpp + net/internal.h net/inventoryhandler.cpp - net/itemhandler.h + net/inventoryhandler.h net/itemhandler.cpp - net/loginhandler.h + net/itemhandler.h net/loginhandler.cpp + net/loginhandler.h + net/logouthandler.cpp + net/logouthandler.h net/maploginhandler.cpp net/maploginhandler.h net/messagehandler.cpp @@ -258,6 +296,28 @@ SET(SRCS net/skillhandler.h net/tradehandler.cpp net/tradehandler.h + net/effecthandler.cpp + net/effecthandler.h + net/accountserver/account.cpp + net/accountserver/account.h + net/accountserver/accountserver.cpp + net/accountserver/accountserver.h + net/accountserver/internal.cpp + net/accountserver/internal.h + net/chatserver/chatserver.cpp + net/chatserver/chatserver.h + net/chatserver/guild.cpp + net/chatserver/guild.h + net/chatserver/internal.cpp + net/chatserver/internal.h + net/chatserver/party.cpp + net/chatserver/party.h + net/gameserver/gameserver.cpp + net/gameserver/gameserver.h + net/gameserver/internal.cpp + net/gameserver/internal.h + net/gameserver/player.cpp + net/gameserver/player.h resources/action.cpp resources/action.h resources/ambientoverlay.cpp @@ -305,6 +365,8 @@ SET(SRCS utils/dtor.h utils/fastsqrt.h utils/gettext.h + utils/sha256.h + utils/sha256.cpp utils/stringutils.cpp utils/stringutils.h utils/strprintf.cpp @@ -319,6 +381,12 @@ SET(SRCS being.h beingmanager.cpp beingmanager.h + channel.cpp + channel.h + channelmanager.cpp + channelmanager.h + commandhandler.cpp + commandhandler.h configlistener.h configuration.cpp configuration.h @@ -339,6 +407,8 @@ SET(SRCS graphics.cpp graphics.h guichanfwd.h + guild.cpp + guild.h imageparticle.cpp imageparticle.h inventory.cpp @@ -398,17 +468,23 @@ SET(SRCS textparticle.cpp textparticle.h tileset.h + units.cpp + units.h vector.cpp vector.h + effectmanager.cpp + effectmanager.h ) -ADD_EXECUTABLE(aethyra ${SRCS}) +ADD_EXECUTABLE(tmw ${SRCS}) -TARGET_LINK_LIBRARIES(aethyra +TARGET_LINK_LIBRARIES(tmw ${SDL_LIBRARY} ${SDLIMAGE_LIBRARY} ${SDLMIXER_LIBRARY} ${SDLNET_LIBRARY} + ${SDLTTF_LIBRARY} + ${ENET_LIBRARIES} ${PNG_LIBRARIES} ${PHYSFS_LIBRARY} ${CURL_LIBRARIES} @@ -417,6 +493,6 @@ TARGET_LINK_LIBRARIES(aethyra ${OPENGL_LIBRARIES} ) -INSTALL(TARGETS aethyra RUNTIME DESTINATION ${PKG_BINDIR}) +INSTALL(TARGETS tmw RUNTIME DESTINATION ${PKG_BINDIR}) -SET_TARGET_PROPERTIES(aethyra PROPERTIES COMPILE_FLAGS "${FLAGS}") +SET_TARGET_PROPERTIES(tmw PROPERTIES COMPILE_FLAGS "${FLAGS}") diff --git a/src/Makefile.am b/src/Makefile.am index 5029697a..4c5893ac 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,8 +1,18 @@ AUTOMAKE_OPTIONS = subdir-objects -bin_PROGRAMS = aethyra -aethyra_SOURCES = gui/widgets/dropdown.cpp \ - gui/widgets/dropdown.h \ +bin_PROGRAMS = tmw + +tmw_CXXFLAGS = -DPKG_DATADIR=\""$(pkgdatadir)/"\" \ + -DLOCALEDIR=\""$(localedir)"\" + +tmw_SOURCES = gui/widgets/avatar.cpp \ + gui/widgets/avatar.h \ + gui/widgets/channeltab.cpp \ + gui/widgets/channeltab.h \ + gui/widgets/chattab.cpp \ + gui/widgets/chattab.h \ + gui/widgets/dropdown.cpp \ + gui/widgets/dropdown.h \ gui/widgets/layout.cpp \ gui/widgets/layout.h \ gui/widgets/layouthelper.cpp \ @@ -15,6 +25,8 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ gui/widgets/tabbedarea.h \ gui/widgets/textpreview.cpp \ gui/widgets/textpreview.h \ + gui/widgets/whispertab.cpp \ + gui/widgets/whispertab.h \ gui/browserbox.cpp \ gui/browserbox.h \ gui/button.cpp \ @@ -25,8 +37,6 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ gui/buysell.h \ gui/char_select.cpp \ gui/char_select.h \ - gui/char_server.cpp \ - gui/char_server.h \ gui/chat.cpp \ gui/chat.h \ gui/chatinput.cpp \ @@ -35,8 +45,6 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ gui/checkbox.h \ gui/confirm_dialog.cpp \ gui/confirm_dialog.h \ - gui/connection.cpp \ - gui/connection.h \ gui/debugwindow.cpp \ gui/debugwindow.h \ gui/emotecontainer.cpp \ @@ -55,8 +63,10 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ gui/gui.h \ gui/help.cpp \ gui/help.h \ - gui/inttextfield.h \ + gui/icon.cpp \ + gui/icon.h \ gui/inttextfield.cpp \ + gui/inttextfield.h \ gui/inventorywindow.cpp \ gui/inventorywindow.h \ gui/itemcontainer.cpp \ @@ -106,8 +116,8 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ gui/progressbar.h \ gui/radiobutton.cpp \ gui/radiobutton.h \ - gui/recorder.cpp \ - gui/recorder.h \ + gui/recorder.cpp \ + gui/recorder.h \ gui/register.cpp \ gui/register.h \ gui/scrollarea.cpp \ @@ -139,24 +149,20 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ gui/shortcutwindow.h \ gui/shortcutcontainer.cpp \ gui/shortcutcontainer.h \ - gui/skill.cpp \ - gui/skill.h \ gui/skin.cpp \ gui/skin.h \ gui/slider.cpp \ gui/slider.h \ gui/speechbubble.cpp \ gui/speechbubble.h \ - gui/status.cpp \ - gui/status.h \ - gui/storagewindow.cpp \ - gui/storagewindow.h \ gui/table.cpp \ gui/table.h \ gui/table_model.cpp \ gui/table_model.h \ gui/textbox.cpp \ gui/textbox.h \ + gui/textdialog.cpp \ + gui/textdialog.h \ gui/textfield.cpp \ gui/textfield.h \ gui/textrenderer.h \ @@ -164,52 +170,20 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ gui/trade.h \ gui/truetypefont.cpp \ gui/truetypefont.h \ - gui/updatewindow.h \ gui/updatewindow.cpp \ + gui/updatewindow.h \ gui/viewport.cpp \ gui/viewport.h \ gui/window.cpp \ gui/window.h \ gui/windowcontainer.cpp \ gui/windowcontainer.h \ - net/beinghandler.h \ - net/beinghandler.cpp \ - net/buysellhandler.h \ - net/buysellhandler.cpp \ - net/charserverhandler.h \ - net/charserverhandler.cpp \ - net/chathandler.h \ - net/chathandler.cpp \ - net/equipmenthandler.h \ - net/equipmenthandler.cpp \ - net/inventoryhandler.h \ - net/inventoryhandler.cpp \ - net/itemhandler.h \ - net/itemhandler.cpp \ - net/loginhandler.h \ - net/loginhandler.cpp \ - net/maploginhandler.cpp \ - net/maploginhandler.h \ net/messagehandler.cpp \ net/messagehandler.h \ net/messagein.cpp \ net/messagein.h \ net/messageout.cpp \ net/messageout.h \ - net/network.cpp \ - net/network.h \ - net/npchandler.cpp \ - net/npchandler.h \ - net/partyhandler.cpp \ - net/partyhandler.h \ - net/playerhandler.cpp \ - net/playerhandler.h \ - net/protocol.cpp \ - net/protocol.h \ - net/skillhandler.cpp \ - net/skillhandler.h \ - net/tradehandler.cpp \ - net/tradehandler.h \ resources/action.cpp \ resources/action.h \ resources/ambientoverlay.cpp \ @@ -257,6 +231,8 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ utils/dtor.h \ utils/fastsqrt.h \ utils/gettext.h \ + utils/sha256.cpp \ + utils/sha256.h \ utils/stringutils.cpp \ utils/stringutils.h \ utils/strprintf.cpp \ @@ -272,6 +248,12 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ being.h \ beingmanager.cpp \ beingmanager.h \ + channel.cpp \ + channel.h \ + channelmanager.cpp \ + channelmanager.h \ + commandhandler.cpp \ + commandhandler.h \ configlistener.h \ configuration.cpp \ configuration.h \ @@ -327,8 +309,6 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ particleemitter.cpp \ particleemitter.h \ particleemitterprop.h \ - party.cpp \ - party.h \ player.cpp \ player.h \ player_relations.cpp \ @@ -344,6 +324,8 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ sound.cpp \ sound.h \ sprite.h \ + statuseffect.cpp \ + statuseffect.h \ text.cpp \ text.h \ textmanager.cpp \ @@ -351,17 +333,147 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ textparticle.cpp \ textparticle.h \ tileset.h \ + units.cpp \ + units.h \ vector.cpp \ vector.h -# set the include path found by configure -INCLUDES = \ - $(all_includes) \ - -DPKG_DATADIR=\""$(pkgdatadir)/"\" \ - -DLOCALEDIR=\""$(localedir)/"\" +if SERVER_TMWSERV +tmw_CXXFLAGS += -DTMWSERV_SUPPORT +tmw_SOURCES += \ + gui/buddywindow.cpp \ + gui/buddywindow.h \ + gui/changeemaildialog.cpp \ + gui/changeemaildialog.h \ + gui/changepassworddialog.cpp \ + gui/changepassworddialog.h \ + gui/connection.cpp \ + gui/connection.h \ + gui/guildlistbox.cpp \ + gui/guildlistbox.h \ + gui/guildwindow.cpp \ + gui/guildwindow.h \ + gui/magic.cpp \ + gui/magic.h \ + gui/npcpostdialog.cpp \ + gui/npcpostdialog.h \ + gui/partywindow.cpp \ + gui/partywindow.h \ + gui/quitdialog.cpp \ + gui/quitdialog.h \ + gui/serverdialog.cpp \ + gui/serverdialog.h \ + gui/skilldialog.cpp \ + gui/skilldialog.h \ + gui/statuswindow.cpp \ + gui/statuswindow.h \ + gui/unregisterdialog.cpp \ + gui/unregisterdialog.h \ + net/tmwserv/accountserver/account.cpp \ + net/tmwserv/accountserver/account.h \ + net/tmwserv/accountserver/accountserver.cpp \ + net/tmwserv/accountserver/accountserver.h \ + net/tmwserv/accountserver/internal.cpp \ + net/tmwserv/accountserver/internal.h \ + net/tmwserv/chatserver/chatserver.cpp \ + net/tmwserv/chatserver/chatserver.h \ + net/tmwserv/chatserver/guild.cpp \ + net/tmwserv/chatserver/guild.h \ + net/tmwserv/chatserver/internal.cpp \ + net/tmwserv/chatserver/internal.h \ + net/tmwserv/chatserver/party.cpp \ + net/tmwserv/chatserver/party.h \ + net/tmwserv/gameserver/gameserver.cpp \ + net/tmwserv/gameserver/gameserver.h \ + net/tmwserv/gameserver/internal.cpp \ + net/tmwserv/gameserver/internal.h \ + net/tmwserv/gameserver/player.cpp \ + net/tmwserv/gameserver/player.h \ + net/tmwserv/beinghandler.cpp \ + net/tmwserv/beinghandler.h \ + net/tmwserv/buysellhandler.cpp \ + net/tmwserv/buysellhandler.h \ + net/tmwserv/charserverhandler.cpp \ + net/tmwserv/charserverhandler.h \ + net/tmwserv/chathandler.cpp \ + net/tmwserv/chathandler.h \ + net/tmwserv/connection.cpp \ + net/tmwserv/connection.h \ + net/tmwserv/effecthandler.cpp \ + net/tmwserv/effecthandler.h \ + net/tmwserv/guildhandler.cpp \ + net/tmwserv/guildhandler.h \ + net/tmwserv/internal.cpp \ + net/tmwserv/internal.h \ + net/tmwserv/inventoryhandler.cpp \ + net/tmwserv/inventoryhandler.h \ + net/tmwserv/itemhandler.h \ + net/tmwserv/itemhandler.cpp \ + net/tmwserv/loginhandler.cpp \ + net/tmwserv/loginhandler.h \ + net/tmwserv/logouthandler.cpp \ + net/tmwserv/logouthandler.h \ + net/tmwserv/network.cpp \ + net/tmwserv/network.h \ + net/tmwserv/npchandler.cpp \ + net/tmwserv/npchandler.h \ + net/tmwserv/partyhandler.cpp \ + net/tmwserv/partyhandler.h \ + net/tmwserv/playerhandler.cpp \ + net/tmwserv/playerhandler.h \ + net/tmwserv/protocol.h \ + net/tmwserv/tradehandler.cpp \ + net/tmwserv/tradehandler.h \ + guild.cpp \ + guild.h +endif -# the library search path. -aethyra_LDFLAGS = $(all_libraries) $(LIBSDL_RPATH) `pkg-config --libs libxml-2.0` -aethyra_CXXFLAGS = -Wall $(LIBSDL_CFLAGS) `pkg-config --cflags libxml-2.0` $(CURL_CFLAGS) -aethyra_LDADD = $(LIBSDL_LIBS) -lguichan_sdl $(CURL_LIBS) -aethyra_TARGET = aethyra +if SERVER_EATHENA +tmw_CXXFLAGS += -DEATHENA_SUPPORT +tmw_SOURCES += \ + gui/char_server.cpp \ + gui/char_server.h \ + gui/skill.cpp \ + gui/skill.h \ + gui/status.cpp \ + gui/status.h \ + gui/storagewindow.cpp \ + gui/storagewindow.h \ + net/ea/beinghandler.cpp \ + net/ea/beinghandler.h \ + net/ea/buysellhandler.cpp \ + net/ea/buysellhandler.h \ + net/ea/charserverhandler.cpp \ + net/ea/charserverhandler.h \ + net/ea/chathandler.cpp \ + net/ea/chathandler.h \ + net/ea/equipmenthandler.cpp \ + net/ea/equipmenthandler.h \ + net/ea/inventoryhandler.cpp \ + net/ea/inventoryhandler.h \ + net/ea/itemhandler.cpp \ + net/ea/itemhandler.h \ + net/ea/loginhandler.cpp \ + net/ea/loginhandler.h \ + net/ea/maploginhandler.cpp \ + net/ea/maploginhandler.h \ + net/ea/network.cpp \ + net/ea/network.h \ + net/ea/npchandler.cpp \ + net/ea/npchandler.h \ + net/ea/partyhandler.cpp \ + net/ea/partyhandler.h \ + net/ea/playerhandler.cpp \ + net/ea/playerhandler.h \ + net/ea/protocol.cpp \ + net/ea/protocol.h \ + net/ea/skillhandler.cpp \ + net/ea/skillhandler.h \ + net/ea/tradehandler.cpp \ + net/ea/tradehandler.h \ + party.cpp \ + party.h +endif + +# set the include path found by configure +INCLUDES = $(all_includes) diff --git a/src/SDLMain.h b/src/SDLMain.h index 4683df57..4683df57 100755..100644 --- a/src/SDLMain.h +++ b/src/SDLMain.h diff --git a/src/SDLMain.m b/src/SDLMain.m index 3d02719c..3d02719c 100755..100644 --- a/src/SDLMain.m +++ b/src/SDLMain.m diff --git a/src/animatedsprite.cpp b/src/animatedsprite.cpp index 108f5166..5a57b08c 100644 --- a/src/animatedsprite.cpp +++ b/src/animatedsprite.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -52,7 +51,7 @@ AnimatedSprite::AnimatedSprite(SpriteDef *sprite): play(ACTION_STAND); } -AnimatedSprite *AnimatedSprite::load(const std::string& filename, int variant) +AnimatedSprite *AnimatedSprite::load(const std::string &filename, int variant) { ResourceManager *resman = ResourceManager::getInstance(); SpriteDef *s = resman->getSprite(filename, variant); @@ -141,7 +140,7 @@ bool AnimatedSprite::updateCurrentAnimation(unsigned int time) return true; } -bool AnimatedSprite::draw(Graphics* graphics, int posX, int posY) const +bool AnimatedSprite::draw(Graphics *graphics, int posX, int posY) const { if (!mFrame || !mFrame->image) return false; diff --git a/src/animatedsprite.h b/src/animatedsprite.h index 756d9aed..43248731 100644 --- a/src/animatedsprite.h +++ b/src/animatedsprite.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -51,7 +50,8 @@ class AnimatedSprite * @param filename the file of the sprite to animate * @param variant the sprite variant */ - static AnimatedSprite *load(std::string const &filename, int variant = 0); + static AnimatedSprite *load(const std::string &filename, + int variant = 0); /** * Destructor. diff --git a/src/animationparticle.cpp b/src/animationparticle.cpp index 4e1c348b..9c1f7ccb 100644 --- a/src/animationparticle.cpp +++ b/src/animationparticle.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/animationparticle.h b/src/animationparticle.h index 444703f3..03065eb7 100644 --- a/src/animationparticle.h +++ b/src/animationparticle.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/being.cpp b/src/being.cpp index 8f00fd3c..e143d506 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,11 +19,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <cassert> -#include <cmath> +#include "being.h" #include "animatedsprite.h" -#include "being.h" #include "configuration.h" #include "effectmanager.h" #include "game.h" @@ -36,6 +33,7 @@ #include "simpleanimation.h" #include "sound.h" #include "text.h" +#include "statuseffect.h" #include "gui/speechbubble.h" @@ -53,8 +51,22 @@ #include "utils/dtor.h" #include "utils/gettext.h" #include "utils/stringutils.h" +#include "utils/xml.h" + +#include <cassert> +#include <cmath> + +namespace { +const bool debug_movement = true; +} + +#define BEING_EFFECTS_FILE "effects.xml" +#define HAIR_FILE "hair.xml" + +int Being::mNumberOfHairColors = 1; int Being::mNumberOfHairstyles = 1; +std::vector<std::string> Being::hairColors; static const int X_SPEECH_OFFSET = 18; static const int Y_SPEECH_OFFSET = 60; @@ -63,35 +75,50 @@ static const int DEFAULT_WIDTH = 32; static const int DEFAULT_HEIGHT = 32; Being::Being(int id, int job, Map *map): - mJob(job), +#ifdef EATHENA_SUPPORT mX(0), mY(0), - mAction(STAND), mWalkTime(0), +#endif mEmotion(0), mEmotionTime(0), mSpeechTime(0), mAttackSpeed(350), + mAction(STAND), + mJob(job), mId(id), - mWalkSpeed(150), mDirection(DOWN), +#ifdef TMWSERV_SUPPORT + mSpriteDirection(DIRECTION_DOWN), +#endif mMap(NULL), - mName(""), mIsGM(false), mParticleEffects(config.getValue("particleeffects", 1)), mEquippedWeapon(NULL), - mHairStyle(1), mHairColor(0), +#ifdef TMWSERV_SUPPORT + mHairStyle(0), +#else + mHairStyle(1), +#endif + mHairColor(0), mGender(GENDER_UNSPECIFIED), mPx(0), mPy(0), + mStunMode(0), mSprites(VECTOREND_SPRITE, NULL), mSpriteIDs(VECTOREND_SPRITE, 0), mSpriteColors(VECTOREND_SPRITE, ""), - mChildParticleEffects(), + mStatusParticleEffects(&mStunParticleEffects, false), + mChildParticleEffects(&mStatusParticleEffects, false), + mMustResetParticles(false), +#ifdef TMWSERV_SUPPORT + mWalkSpeed(100), +#else + mWalkSpeed(150), +#endif mUsedTargetCursor(NULL) { setMap(map); - mSpeechBubble = new SpeechBubble(); + mSpeechBubble = new SpeechBubble; - mSpeech = ""; mNameColor = &guiPalette->getColor(Palette::CHAT); mText = 0; } @@ -111,12 +138,188 @@ Being::~Being() delete mText; } +void Being::setPosition(const Vector &pos) +{ + mPos = pos; + mDest = pos; + mPath.clear(); +} + +#ifdef EATHENA_SUPPORT void Being::setDestination(Uint16 destX, Uint16 destY) { if (mMap) - setPath(mMap->findPath(mX, mY, destX, destY)); + setPath(mMap->findPath(mX, mY, destX, destY, getWalkMask())); +} +#endif + +#ifdef TMWSERV_SUPPORT +void Being::adjustCourse(int srcX, int srcY, int dstX, int dstY) +{ + if (debug_movement) + printf("%p adjustCourse(%d, %d, %d, %d)\n", + (void*) this, srcX, srcY, dstX, dstY); + + mDest.x = dstX; + mDest.y = dstY; + + // Find a path to the destination when it is at least a tile away + if (mMap && fabsf((mDest - mPos).length()) > 32) { + setPath(mMap->findPath((int) mPos.x / 32, (int) mPos.y / 32, + dstX / 32, dstY / 32, getWalkMask())); + } else { + setPath(Path()); + } + + // TODO: Evaluate the implementation of this method + /* + if (mX / 32 == dstX / 32 && mY / 32 == dstY / 32) + { + // The being is already on the last tile of the path. + Path p; + p.push_back(Position(dstX, dstY)); + setPath(p); + return; + } + + Path p1; + int p1_size, p1_length; + Uint16 *p1_dist; + int onPath = -1; + if (srcX / 32 == dstX / 32 && srcY / 32 == dstY / 32) + { + p1_dist = new Uint16[1]; + p1_size = 1; + p1_dist[0] = 0; + p1_length = 0; + } + else + { + p1 = mMap->findPath(srcX / 32, srcY / 32, dstX / 32, dstY / 32, getWalkMask()); + if (p1.empty()) + { + // No path, but don't teleport since it could be user input. + setPath(p1); + return; + } + p1_size = p1.size(); + p1_dist = new Uint16[p1_size]; + int j = 0; + // Remove last tile so that it can be replaced by the exact destination. + p1.pop_back(); + for (Path::iterator i = p1.begin(), i_end = p1.end(); i != i_end; ++i) + { + // Get distance from source to tile i. + p1_dist[j] = mMap->getMetaTile(i->x, i->y)->Gcost; + // Check if the being is already walking on the path. + if (i->x == mX / 32 && i->y == mY / 32) + { + onPath = j; + } + // Do not set any offset for intermediate steps. + i->x = i->x * 32; + i->y = i->y * 32; + ++j; + } + p1_length = mMap->getMetaTile(dstX / 32, dstY / 32)->Gcost; + p1_dist[p1_size - 1] = p1_length; + } + p1.push_back(Position(dstX, dstY)); + + if (mX / 32 == srcX / 32 && mY / 32 == srcY / 32) + { + // The being is at the start of the path. + setPath(p1); + delete[] p1_dist; + return; + } + + if (onPath >= 0) + { + // The being is already on the path, but it needs to be slowed down. + for (int j = onPath; j >= 0; --j) + { + p1.pop_front(); + } + int r = p1_length - p1_dist[onPath]; // remaining length + assert(r > 0); + setPath(p1, p1_length * 1024 / r); + delete[] p1_dist; + return; + } + + Path bestPath; + int bestRating = -1, bestStart = 0, bestLength = 0; + int j = 0; + + for (Path::iterator i = p1.begin(), i_end = p1.end(); i != i_end; ++i) + { + // Look if it is worth passing by tile i. + Path p2 = mMap->findPath(mX / 32, mY / 32, i->x / 32, i->y / 32, getWalkMask()); + if (!p2.empty()) + { + int l1 = mMap->getMetaTile(i->x / 32, i->y / 32)->Gcost; + int l2 = p1_length - p1_dist[j]; + int r = l1 + l2 / 2; // TODO: tune rating formula + assert(r > 0); + if (bestRating < 0 || r < bestRating) + { + bestPath.swap(p2); + bestRating = r; + bestStart = j; + bestLength = l1 + l2; + } + } + ++j; + } + + if (bestRating < 0) + { + // Unable to reach the path? Still, don't teleport since it could be + // user input instead of server command. + setPath(p1); + delete[] p1_dist; + return; + } + + bestPath.pop_back(); + for (Path::iterator i = bestPath.begin(), i_end = bestPath.end(); i != i_end; ++i) + { + i->x = i->x * 32; + i->y = i->y * 32; + } + + // Concatenate paths. + for (int j = bestStart; j > 0; --j) + { + p1.pop_front(); + } + p1.splice(p1.begin(), bestPath); + + assert(bestLength > 0); + setPath(p1, p1_length * 1024 / bestLength); + delete[] p1_dist; + */ } +void Being::adjustCourse(int srcX, int srcY) +{ + if (debug_movement) + printf("%p adjustCourse(%d, %d)\n", (void*) this, srcX, srcY); + + if (!mPath.empty()) + adjustCourse(srcX, srcY, mPath.back().x * 32, mPath.back().y * 32); +} + +void Being::setDestination(int destX, int destY) +{ + if (debug_movement) + printf("%p setDestination(%d, %d)\n", (void*) this, destX, destY); + + adjustCourse((int) mPos.x, (int) mPos.y, destX, destY); +} +#endif // TMWSERV_SUPPORT + void Being::clearPath() { mPath.clear(); @@ -125,12 +328,15 @@ void Being::clearPath() void Being::setPath(const Path &path) { mPath = path; - +#ifdef TMWSERV_SUPPORT + std::cout << this << " New path: " << path << std::endl; +#else if (mAction != WALK && mAction != DEAD) { nextStep(); mWalkTime = tick_time; } +#endif } void Being::setHairStyle(int style, int color) @@ -139,7 +345,7 @@ void Being::setHairStyle(int style, int color) mHairColor = color < 0 ? mHairColor : color % ColorDB::size(); } -void Being::setSprite(int slot, int id, std::string color) +void Being::setSprite(int slot, int id, const std::string &color) { assert(slot >= BASE_SPRITE && slot < VECTOREND_SPRITE); mSpriteIDs[slot] = id; @@ -224,22 +430,40 @@ void Being::takeDamage(Being *attacker, int amount, AttackType type) color = &guiPalette->getColor(Palette::HIT_MONSTER_PLAYER); } - if (amount > 0 && type == CRITICAL) + // Show damage number + particleEngine->addTextSplashEffect(damage, +#ifdef TMWSERV_SUPPORT + (int) mPos.x + 16, + (int) mPos.y + 16, +#else + mPx + 16, mPy + 16, +#endif + color, font, true); + + if (amount > 0) { - particleEngine->addTextSplashEffect("crit!", mPx + 16, mPy + 16, - color, font, true); + if (type != CRITICAL) + { + effectManager->trigger(26, this); + } + else + { + effectManager->trigger(28, this); + } } - - // Show damage number - particleEngine->addTextSplashEffect(damage, mPx + 16, mPy + 16, - color, font, true); } +#ifdef TMWSERV_SUPPORT +void Being::handleAttack() +#else void Being::handleAttack(Being *victim, int damage, AttackType type) +#endif { setAction(Being::ATTACK); +#ifdef EATHENA_SUPPORT mFrame = 0; mWalkTime = tick_time; +#endif } void Being::setMap(Map *map) @@ -256,6 +480,7 @@ void Being::setMap(Map *map) // Clear particle effect list because child particles became invalid mChildParticleEffects.clear(); + mMustResetParticles = true; // Reset status particles on next redraw } void Being::controlParticle(Particle *particle) @@ -263,7 +488,7 @@ void Being::controlParticle(Particle *particle) mChildParticleEffects.addLocally(particle); } -void Being::setAction(Action action) +void Being::setAction(Action action, int attackType) { SpriteAction currentAction = ACTION_INVALID; @@ -316,8 +541,27 @@ void Being::setDirection(Uint8 direction) if (mDirection == direction) return; +#ifdef TMWSERV_SUPPORT + // if the direction does not change much, keep the common component + int mFaceDirection = mDirection & direction; + if (!mFaceDirection) + mFaceDirection = direction; + mDirection = direction; + + SpriteDirection dir; + if (mFaceDirection & UP) + dir = DIRECTION_UP; + else if (mFaceDirection & DOWN) + dir = DIRECTION_DOWN; + else if (mFaceDirection & RIGHT) + dir = DIRECTION_RIGHT; + else + dir = DIRECTION_LEFT; + mSpriteDirection = dir; +#else mDirection = direction; SpriteDirection dir = getSpriteDirection(); +#endif for (int i = 0; i < VECTOREND_SPRITE; i++) { @@ -326,6 +570,7 @@ void Being::setDirection(Uint8 direction) } } +#ifdef EATHENA_SUPPORT SpriteDirection Being::getSpriteDirection() const { SpriteDirection dir; @@ -365,7 +610,7 @@ void Being::nextStep() setDirection(dir); - if (mMap->tileCollides(pos.x, pos.y)) + if (!mMap->getWalk(pos.x, pos.y, getWalkMask())) { setAction(STAND); return; @@ -376,12 +621,13 @@ void Being::nextStep() setAction(WALK); mWalkTime += mWalkSpeed / 10; } +#endif void Being::logic() { // Reduce the time that speech is still displayed if (mSpeechTime > 0) - mSpeechTime--; + mSpeechTime--; // Remove text and speechbubbles if speech boxes aren't being used if (mSpeechTime == 0 && mText) @@ -390,6 +636,42 @@ void Being::logic() mText = 0; } +#ifdef TMWSERV_SUPPORT + const Vector dest = (mPath.empty()) ? + mDest : Vector(mPath.front().x * 32 + 16, + mPath.front().y * 32 + 16); + + Vector dir = dest - mPos; + const float length = dir.length(); + + // When we're over 2 pixels from our destination, move to it + // TODO: Should be possible to make it even pixel exact, but this solves + // the jigger caused by moving too far. + if (length > 2.0f) { + const float speed = mWalkSpeed / 100.0f; + mPos += dir / (length / speed); + + if (mAction != WALK) + setAction(WALK); + + // Update the player sprite direction + int direction = 0; + const float dx = std::abs(dir.x); + const float dy = std::abs(dir.y); + if (dx > dy) + direction |= (dir.x > 0) ? RIGHT : LEFT; + else + direction |= (dir.y > 0) ? DOWN : UP; + setDirection(direction); + } + else if (!mPath.empty()) { + // TODO: Pop as soon as there is a direct unblocked line to the next + // point on the path. + mPath.pop_front(); + } else if (mAction == WALK) { + setAction(STAND); + } +#else int oldPx = mPx; int oldPy = mPy; @@ -401,6 +683,7 @@ void Being::logic() { updateCoords(); } +#endif if (mEmotion != 0) { @@ -410,7 +693,7 @@ void Being::logic() } // Update sprite animations - if (mUsedTargetCursor != NULL) + if (mUsedTargetCursor) mUsedTargetCursor->update(tick_time * 10); for (int i = 0; i < VECTOREND_SPRITE; i++) @@ -419,22 +702,51 @@ void Being::logic() mSprites[i]->update(tick_time * 10); } + // Restart status/particle effects, if needed + if (mMustResetParticles) { + mMustResetParticles = false; + for (std::set<int>::iterator it = mStatusEffects.begin(); + it != mStatusEffects.end(); it++) { + const StatusEffect *effect = StatusEffect::getStatusEffect(*it, true); + if (effect && effect->particleEffectIsPersistent()) + updateStatusEffect(*it, true); + } + } + // Update particle effects - mChildParticleEffects.moveTo((float) mPx + 16.0f, (float) mPy + 32.0f); +#ifdef TMWSERV_SUPPORT + mChildParticleEffects.moveTo((float) mPx + 16.0f, + (float) mPy + 32.0f); +#else + mChildParticleEffects.moveTo(mPos.x, mPos.y); +#endif } void Being::draw(Graphics *graphics, int offsetX, int offsetY) const { +#ifdef TMWSERV_SUPPORT + int px = (int) mPos.x + offsetX; + int py = (int) mPos.y + offsetY; +#else int px = mPx + offsetX; int py = mPy + offsetY; +#endif - if (mUsedTargetCursor != NULL) + if (mUsedTargetCursor) mUsedTargetCursor->draw(graphics, px, py); for (int i = 0; i < VECTOREND_SPRITE; i++) { if (mSprites[i]) + { +#ifdef TMWSERV_SUPPORT + // TODO: Eventually, we probably should fix all sprite offsets so + // that this translation isn't necessary anymore. + mSprites[i]->draw(graphics, px - 16, py - 32); +#else mSprites[i]->draw(graphics, px, py); +#endif + } } } @@ -443,8 +755,13 @@ void Being::drawEmotion(Graphics *graphics, int offsetX, int offsetY) if (!mEmotion) return; +#ifdef TMWSERV_SUPPORT + const int px = (int) mPos.x + offsetX; + const int py = (int) mPos.y + offsetY - 64; +#else const int px = mPx - offsetX; const int py = mPy - offsetY - 64; +#endif const int emotionIndex = mEmotion - 1; if (emotionIndex >= 0 && emotionIndex <= EmoteDB::getLast()) @@ -453,8 +770,13 @@ void Being::drawEmotion(Graphics *graphics, int offsetX, int offsetY) void Being::drawSpeech(int offsetX, int offsetY) { +#ifdef TMWSERV_SUPPORT + int px = (int) mPos.x - offsetX; + int py = (int) mPos.y - offsetY; +#else const int px = mPx - offsetX; const int py = mPy - offsetY; +#endif const int speech = (int) config.getValue("speech", NAME_IN_BUBBLE); // Draw speech above this being @@ -512,6 +834,63 @@ Being::Type Being::getType() const return UNKNOWN; } +void Being::setStatusEffectBlock(int offset, Uint16 newEffects) +{ + for (int i = 0; i < STATUS_EFFECTS; i++) { + int index = StatusEffect::blockEffectIndexToEffectIndex(offset + i); + + if (index != -1) + setStatusEffect(index, (newEffects & (1 << i)) > 0); + } +} + +void Being::handleStatusEffect(StatusEffect *effect, int effectId) +{ + if (!effect) + return; + + // TODO: Find out how this is meant to be used + // (SpriteAction != Being::Action) + //SpriteAction action = effect->getAction(); + //if (action != ACTION_INVALID) + // setAction(action); + + Particle *particle = effect->getParticle(); + + if (effectId >= 0) + mStatusParticleEffects.setLocally(effectId, particle); + else { + mStunParticleEffects.clearLocally(); + if (particle) + mStunParticleEffects.addLocally(particle); + } +} + +void Being::updateStunMode(int oldMode, int newMode) +{ + handleStatusEffect(StatusEffect::getStatusEffect(oldMode, false), -1); + handleStatusEffect(StatusEffect::getStatusEffect(newMode, true), -1); +} + +void Being::updateStatusEffect(int index, bool newStatus) +{ + handleStatusEffect(StatusEffect::getStatusEffect(index, newStatus), index); +} + +void Being::setStatusEffect(int index, bool active) +{ + const bool wasActive = mStatusEffects.find(index) != mStatusEffects.end(); + + if (active != wasActive) { + updateStatusEffect(index, active); + if (active) + mStatusEffects.insert(index); + else + mStatusEffects.erase(index); + } +} + +#ifdef EATHENA_SUPPORT int Being::getOffset(char pos, char neg) const { // Check whether we're walking in the requested direction @@ -531,6 +910,7 @@ int Being::getOffset(char pos, char neg) const return offset; } +#endif int Being::getWidth() const { @@ -554,6 +934,114 @@ void Being::setTargetAnimation(SimpleAnimation* animation) mUsedTargetCursor->reset(); } +struct EffectDescription { + std::string mGFXEffect; + std::string mSFXEffect; +}; + +static EffectDescription *default_effect = NULL; +static std::map<int, EffectDescription *> effects; +static bool effects_initialized = false; + +static EffectDescription *getEffectDescription(xmlNodePtr node, int *id) +{ + EffectDescription *ed = new EffectDescription; + + *id = atoi(XML::getProperty(node, "id", "-1").c_str()); + ed->mSFXEffect = XML::getProperty(node, "audio", ""); + ed->mGFXEffect = XML::getProperty(node, "particle", ""); + + return ed; +} + +static EffectDescription *getEffectDescription(int effectId) +{ + if (!effects_initialized) + { + XML::Document doc(BEING_EFFECTS_FILE); + xmlNodePtr root = doc.rootNode(); + + if (!root || !xmlStrEqual(root->name, BAD_CAST "being-effects")) + { + logger->log("Error loading being effects file: " + BEING_EFFECTS_FILE); + return NULL; + } + + for_each_xml_child_node(node, root) + { + int id; + + if (xmlStrEqual(node->name, BAD_CAST "effect")) + { + EffectDescription *EffectDescription = + getEffectDescription(node, &id); + effects[id] = EffectDescription; + } else if (xmlStrEqual(node->name, BAD_CAST "default")) + { + EffectDescription *EffectDescription = + getEffectDescription(node, &id); + + if (default_effect) + delete default_effect; + + default_effect = EffectDescription; + } + } + + effects_initialized = true; + } // done initializing + + EffectDescription *ed = effects[effectId]; + + if (!ed) + return default_effect; + else + return ed; +} + +void Being::internalTriggerEffect(int effectId, bool sfx, bool gfx) +{ + logger->log("Special effect #%d on %s", effectId, + getId() == player_node->getId() ? "self" : "other"); + + EffectDescription *ed = getEffectDescription(effectId); + + if (!ed) { + logger->log("Unknown special effect and no default recorded"); + return; + } + + if (gfx && !ed->mGFXEffect.empty()) { + Particle *selfFX; + + selfFX = particleEngine->addEffect(ed->mGFXEffect, 0, 0); + controlParticle(selfFX); + } + + if (sfx && !ed->mSFXEffect.empty()) { + sound.playSfx(ed->mSFXEffect); + } +} + +int Being::getHairStyleCount() +{ + return mNumberOfHairstyles; +} + +int Being::getHairColorCount() +{ + return mNumberOfHairColors; +} + +std::string Being::getHairColor(int index) +{ + if (index < 0 || index >= mNumberOfHairColors) + return "#000000"; + + return hairColors[index]; +} + void Being::load() { // Hairstyles are encoded as negative numbers. Count how far negative @@ -564,5 +1052,32 @@ void Being::load() hairstyles++; mNumberOfHairstyles = hairstyles; -} + XML::Document doc(HAIR_FILE); + xmlNodePtr root = doc.rootNode(); + + // Add an initial hair color + hairColors.resize(1, "#000000"); + + if (!root || !xmlStrEqual(root->name, BAD_CAST "colors")) + { + logger->log("Error loading being hair configuration file"); + } else { + for_each_xml_child_node(node, root) + { + if (xmlStrEqual(node->name, BAD_CAST "color")) + { + int index = atoi(XML::getProperty(node, "id", "-1").c_str()); + std::string value = XML::getProperty(node, "value", ""); + + if (index >= 0 && !value.empty()) { + if (index >= mNumberOfHairColors) { + mNumberOfHairColors = index + 1; + hairColors.resize(mNumberOfHairColors, "#000000"); + } + hairColors[index] = value; + } + } + } + } +} diff --git a/src/being.h b/src/being.h index 689eda02..158f2f72 100644 --- a/src/being.h +++ b/src/being.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,13 +26,15 @@ #include <SDL_types.h> +#include <set> #include <string> #include <vector> -#include <bitset> +#include "map.h" #include "particlecontainer.h" #include "position.h" #include "sprite.h" +#include "vector.h" #include "resources/spritedef.h" @@ -55,6 +56,8 @@ class SimpleAnimation; class SpeechBubble; class Text; +class StatusEffect; + typedef std::list<Sprite*> Sprites; typedef Sprites::iterator SpriteIterator; @@ -77,7 +80,9 @@ class Being : public Sprite }; /** - * Action the being is currently performing. + * Action the being is currently performing + * WARNING: Has to be in sync with the same enum in the Being class + * of the server! */ enum Action { @@ -95,14 +100,20 @@ class Being : public Sprite SHOE_SPRITE, BOTTOMCLOTHES_SPRITE, TOPCLOTHES_SPRITE, +#ifdef EATHENA_SUPPORT MISC1_SPRITE, MISC2_SPRITE, +#endif HAIR_SPRITE, HAT_SPRITE, +#ifdef EATHENA_SUPPORT CAPE_SPRITE, GLOVES_SPRITE, +#endif WEAPON_SPRITE, +#ifdef EATHENA_SUPPORT SHIELD_SPRITE, +#endif VECTOREND_SPRITE }; @@ -137,16 +148,18 @@ class Being : public Sprite */ enum { DOWN = 1, LEFT = 2, UP = 4, RIGHT = 8 }; - Uint16 mJob; /**< Job (player job, npc, monster, ) */ +#ifdef EATHENA_SUPPORT Uint16 mX, mY; /**< Tile coordinates */ - Action mAction; /**< Action the being is performing */ int mFrame; int mWalkTime; +#endif int mEmotion; /**< Currently showing emotion */ int mEmotionTime; /**< Time until emotion disappears */ int mSpeechTime; int mAttackSpeed; /**< Attack speed */ + Action mAction; /**< Action the being is performing */ + Uint16 mJob; /**< Job (player job, npc, monster, creature ) */ /** * Constructor. @@ -166,7 +179,26 @@ class Being : public Sprite /** * Sets a new destination for this being to walk to. */ +#ifdef EATHENA_SUPPORT virtual void setDestination(Uint16 destX, Uint16 destY); +#else + void setDestination(int x, int y); + + /** + * Returns the destination for this being. + */ + const Vector &getDestination() const { return mDest; } + + /** + * Adjusts course to expected start point. + */ + void adjustCourse(int srcX, int srcY); + + /** + * Adjusts course to expected start and end points. + */ + void adjustCourse(int srcX, int srcY, int destX, int destY); +#endif /** * Puts a "speech balloon" above this being for the specified amount @@ -193,19 +225,25 @@ class Being : public Sprite * @param damage the amount of damage dealt (0 means miss) * @param type the attack type */ +#ifdef TMWSERV_SUPPORT + virtual void handleAttack(); +#else virtual void handleAttack(Being *victim, int damage, AttackType type); +#endif /** * Returns the name of the being. */ - const std::string& getName() const { return mName; } + const std::string &getName() const + { return mName; } /** * Sets the name for the being. * * @param name The name that should appear. */ - virtual void setName(const std::string &name) { mName = name; } + virtual void setName(const std::string &name) + { mName = name; } /** * Gets the hair color for this being. @@ -230,7 +268,8 @@ class Being : public Sprite /** * Sets visible equipments for this being. */ - virtual void setSprite(int slot, int id, std::string color = ""); + virtual void setSprite(int slot, int id, + const std::string &color = ""); /** * Sets the gender of this being. @@ -242,10 +281,12 @@ class Being : public Sprite */ Gender getGender() const { return mGender; } +#ifdef EATHENA_SUPPORT /** * Makes this being take the next step of his path. */ virtual void nextStep(); +#endif /** * Triggers whether or not to show the name as a GM name. @@ -277,16 +318,17 @@ class Being : public Sprite /** * Gets the walk speed. + * @see setWalkSpeed(int) */ - Uint16 getWalkSpeed() const { return mWalkSpeed; } + int getWalkSpeed() const { return mWalkSpeed; } /** - * Sets the walk speed. + * Sets the walk speed (in pixels per second). */ - void setWalkSpeed(Uint16 speed) { mWalkSpeed = speed; } + void setWalkSpeed(int speed) { mWalkSpeed = speed; } /** - * Gets the sprite id. + * Gets the being id. */ int getId() const { return mId; } @@ -303,7 +345,12 @@ class Being : public Sprite /** * Sets the current action. */ - virtual void setAction(Action action); + virtual void setAction(Action action, int attackType = 0); + + /** + * Gets the current action. + */ + bool isAlive() { return mAction != DEAD; } /** * Returns the current direction. @@ -315,15 +362,22 @@ class Being : public Sprite */ void setDirection(Uint8 direction); +#ifdef EATHENA_SUPPORT /** * Gets the current action. */ int getWalkTime() { return mWalkTime; } +#endif /** * Returns the direction the being is facing. */ +#ifdef TMWSERV_SUPPORT + SpriteDirection getSpriteDirection() const + { return SpriteDirection(mSpriteDirection); } +#else SpriteDirection getSpriteDirection() const; +#endif /** * Draws this being to the given graphics context. @@ -335,32 +389,66 @@ class Being : public Sprite /** * Returns the pixel X coordinate. */ +#ifdef TMWSERV_SUPPORT + int getPixelX() const { return (int) mPos.x; } +#else int getPixelX() const { return mPx; } +#endif /** * Returns the pixel Y coordinate. * * @see Sprite::getPixelY() */ +#ifdef TMWSERV_SUPPORT + int getPixelY() const { return (int) mPos.y; } +#else int getPixelY() const { return mPy; } +#endif +#ifdef EATHENA_SUPPORT /** * Get the current X pixel offset. */ - int getXOffset() const { return getOffset(LEFT, RIGHT); } + int getXOffset() const + { return getOffset(LEFT, RIGHT); } /** * Get the current Y pixel offset. */ - int getYOffset() const { return getOffset(UP, DOWN); } + int getYOffset() const + { return getOffset(UP, DOWN); } +#endif + + /** + * Sets the position of this being. When the being was walking, it also + * clears the destination and the path. + */ + void setPosition(const Vector &pos); + + /** + * Overloaded method provided for convenience. + * + * @see setPosition(const Vector &pos) + */ + void setPosition(float x, float y, float z = 0.0f) + { + setPosition(Vector(x, y, z)); + } /** - * Returns the horizontal size of the current base sprite of the being + * Returns the position of this being. + */ + const Vector &getPosition() const { return mPos; } + + + /** + * Returns the horizontal size of the current base sprite of the being. */ virtual int getWidth() const; /** - * Returns the vertical size of the current base sprite of the being + * Returns the vertical size of the current base sprite of the being. */ virtual int getHeight() const; @@ -376,6 +464,18 @@ class Being : public Sprite void controlParticle(Particle *particle); /** + * Gets the way the object is blocked by other objects. + */ + virtual unsigned char getWalkMask() const + { return 0x00; } //can walk through everything + + /** + * Returns the path this being is following. An empty path is returned + * when this being isn't following any path currently. + */ + const Path &getPath() const { return mPath; } + + /** * Sets the target animation for this being. */ void setTargetAnimation(SimpleAnimation* animation); @@ -391,6 +491,48 @@ class Being : public Sprite mEmotionTime = emote_time; } + /** + * Sets the being's stun mode. If zero, the being is `normal', + * otherwise it is `stunned' in some fashion. + */ + void setStunMode(int stunMode) + { + if (mStunMode != stunMode) + updateStunMode(mStunMode, stunMode); + mStunMode = stunMode; + }; + + void setStatusEffect(int index, bool active); + + /** + * A status effect block is a 16 bit mask of status effects. + * We assign each such flag a block ID of offset + bitnr. + * + * These are NOT the same as the status effect indices. + */ + void setStatusEffectBlock(int offset, Uint16 flags); + + /** + * Triggers a visual effect, such as `level up' + * + * Only draws the visual effect, does not play sound effects + * + * \param effectId ID of the effect to trigger + */ + virtual void triggerEffect(int effectId) + { + internalTriggerEffect(effectId, false, true); + } + + // Target cursor being used by the being + Image *mTargetCursor; + + static int getHairColorCount(); + + static int getHairStyleCount(); + + static std::string getHairColor(int index); + virtual AnimatedSprite* getSprite(int index) const { return mSprites[index]; } @@ -407,9 +549,46 @@ class Being : public Sprite */ virtual void updateCoords() {} + /** + * Gets the way the object blocks pathfinding for other objects + */ + virtual Map::BlockType getBlockType() const + { return Map::BLOCKTYPE_NONE; } + + /** + * Trigger visual effect, with components + * + * \param effectId ID of the effect to trigger + * \param sfx Whether to trigger sound effects + * \param gfx Whether to trigger graphical effects + */ + void internalTriggerEffect(int effectId, bool sfx, bool gfx); + + /** + * Notify self that the stun mode has been updated. Invoked by + * setStunMode if something changed. + */ + virtual void updateStunMode(int oldMode, int newMode); + + /** + * Notify self that a status effect has flipped. + * The new flag is passed. + */ + virtual void updateStatusEffect(int index, bool newStatus); + + /** + * Handle an update to a status or stun effect + * + * \param The StatusEffect to effect + * \param effectId -1 for stun, otherwise the effect index + */ + virtual void handleStatusEffect(StatusEffect *effect, int effectId); + int mId; /**< Unique sprite id */ - Uint16 mWalkSpeed; /**< Walking speed */ Uint8 mDirection; /**< Facing direction */ +#ifdef TMWSERV_SUPPORT + Uint8 mSpriteDirection; /**< Facing direction */ +#endif Map *mMap; /**< Map on which this being resides */ std::string mName; /**< Name of character */ SpriteIterator mSpriteIterator; @@ -417,34 +596,51 @@ class Being : public Sprite bool mParticleEffects; /**< Whether to display particles or not */ /** Engine-related infos about weapon. */ - const ItemInfo* mEquippedWeapon; + const ItemInfo *mEquippedWeapon; - static int mNumberOfHairstyles; /** Number of hair styles in use */ + static std::vector<std::string> hairColors; + static int mNumberOfHairColors; /** Number of hair colors in use */ + static int mNumberOfHairstyles; /** Number of hair styles in use */ Path mPath; std::string mSpeech; Text *mText; - Uint16 mHairStyle, mHairColor; + int mHairStyle; + int mHairColor; Gender mGender; int mPx, mPy; /**< Pixel coordinates */ + Uint16 mStunMode; /**< Stun mode; zero if not stunned */ + std::set<int> mStatusEffects; /**< set of active status effects */ const gcn::Color* mNameColor; std::vector<AnimatedSprite*> mSprites; std::vector<int> mSpriteIDs; std::vector<std::string> mSpriteColors; + ParticleList mStunParticleEffects; + ParticleVector mStatusParticleEffects; ParticleList mChildParticleEffects; private: +#ifdef EATHENA_SUPPORT /** * Calculates the offset in the given directions. * If walking in direction 'neg' the value is negated. */ int getOffset(char pos, char neg) const; +#endif + + /** Reset particle status effects on next redraw? */ + bool mMustResetParticles; // Speech Bubble components SpeechBubble *mSpeechBubble; + int mWalkSpeed; /**< Walking speed (pixels/sec) */ + + Vector mPos; + Vector mDest; + // Target cursor being used SimpleAnimation* mUsedTargetCursor; }; diff --git a/src/beingmanager.cpp b/src/beingmanager.cpp index a3fb14ff..af968bdb 100644 --- a/src/beingmanager.cpp +++ b/src/beingmanager.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,24 +20,37 @@ */ #include "beingmanager.h" + #include "localplayer.h" #include "monster.h" #include "npc.h" #include "player.h" +#ifdef EATHENA_SUPPORT #include "net/messageout.h" -#include "net/protocol.h" +#include "net/ea/protocol.h" +#else +#include "net/tmwserv/protocol.h" +#endif #include "utils/dtor.h" +#include <cassert> + class FindBeingFunctor { public: bool operator() (Being *being) { Uint16 other_y = y + ((being->getType() == Being::NPC) ? 1 : 0); +#ifdef TMWSERV_SUPPORT + const Vector &pos = being->getPosition(); + return ((int) pos.x / 32 == x && + ((int) pos.y / 32 == y || (int) pos.y / 32 == other_y) && +#else return (being->mX == x && (being->mY == y || being->mY == other_y) && +#endif being->mAction != Being::DEAD && (type == Being::UNKNOWN || being->getType() == type)); } @@ -47,10 +59,12 @@ class FindBeingFunctor Being::Type type; } beingFinder; +#ifdef EATHENA_SUPPORT BeingManager::BeingManager(Network *network): mNetwork(network) { } +#endif BeingManager::~BeingManager() { @@ -70,10 +84,30 @@ void BeingManager::setPlayer(LocalPlayer *player) mBeings.push_back(player); } +#ifdef TMWSERV_SUPPORT +Being *BeingManager::createBeing(int id, int type, int subtype) +#else Being *BeingManager::createBeing(int id, Uint16 job) +#endif { Being *being; +#ifdef TMWSERV_SUPPORT + switch (type) + { + case OBJECT_PLAYER: + being = new Player(id, subtype, mMap); + break; + case OBJECT_NPC: + being = new NPC(id, subtype, mMap); + break; + case OBJECT_MONSTER: + being = new Monster(id, subtype, mMap); + break; + default: + assert(false); + } +#else if (job <= 25 || (job >= 4001 && job <= 4049)) being = new Player(id, job, mMap); else if (job >= 46 && job <= 1000) @@ -90,15 +124,19 @@ Being *BeingManager::createBeing(int id, Uint16 job) outMsg.writeInt16(0x0094); outMsg.writeInt32(id);//readLong(2)); } +#endif mBeings.push_back(being); - return being; } void BeingManager::destroyBeing(Being *being) { mBeings.remove(being); +#ifdef TMWSERV_SUPPORT + if(being == player_node->getTarget()) + player_node->setTarget(NULL); +#endif delete being; } @@ -133,15 +171,15 @@ Being *BeingManager::findBeingByPixel(int x, int y) { Being *being = (*itr); - int xtol = being->getWidth(); - int uptol = being->getHeight() / 2; + int xtol = being->getWidth() / 2; + int uptol = being->getHeight(); if ((being->mAction != Being::DEAD) && (being != player_node) && - (being->getPixelX() <= x) && + (being->getPixelX() - xtol <= x) && (being->getPixelX() + xtol >= x) && (being->getPixelY() - uptol <= y) && - (being->getPixelY() + uptol >= y)) + (being->getPixelY() >= y)) { return being; } @@ -176,12 +214,14 @@ void BeingManager::logic() being->logic(); +#ifdef EATHENA_SUPPORT if (being->mAction == Being::DEAD && being->mFrame >= 20) { delete being; i = mBeings.erase(i); } else +#endif { i++; } @@ -206,13 +246,30 @@ Being *BeingManager::findNearestLivingBeing(int x, int y, int maxdist, Being *closestBeing = NULL; int dist = 0; +#ifdef TMWSERV_SUPPORT + //Why do we do this: + //For some reason x,y passed to this function is always + //in map coords, while down below its in pixels + // + //I believe there is a deeper problem under this, but + //for a temp solution we'll convert to coords to pixels + x = x * 32; + y = y * 32; + maxdist = maxdist * 32; +#endif + BeingIterator itr = mBeings.begin(); BeingIterator itr_end = mBeings.end(); for (; itr != itr_end; ++itr) { Being *being = (*itr); +#ifdef TMWSERV_SUPPORT + const Vector &pos = being->getPosition(); + int d = abs(((int) pos.x) - x) + abs(((int) pos.y) - y); +#else int d = abs(being->mX - x) + abs(being->mY - y); +#endif if ((being->getType() == type || type == Being::UNKNOWN) && (d < dist || closestBeing == NULL) // it is closer @@ -231,13 +288,25 @@ Being *BeingManager::findNearestLivingBeing(Being *aroundBeing, int maxdist, { Being *closestBeing = NULL; int dist = 0; +#ifdef TMWSERV_SUPPORT + const Vector &apos = aroundBeing->getPosition(); + int x = apos.x; + int y = apos.y; + maxdist = maxdist * 32; +#else int x = aroundBeing->mX; int y = aroundBeing->mY; +#endif for (BeingIterator i = mBeings.begin(); i != mBeings.end(); i++) { Being *being = (*i); +#ifdef TMWSERV_SUPPORT + const Vector &pos = being->getPosition(); + int d = abs(((int) pos.x) - x) + abs(((int) pos.y) - y); +#else int d = abs(being->mX - x) + abs(being->mY - y); +#endif if ((being->getType() == type || type == Being::UNKNOWN) && (d < dist || closestBeing == NULL) // it is closer diff --git a/src/beingmanager.h b/src/beingmanager.h index 3284ce16..05821bcf 100644 --- a/src/beingmanager.h +++ b/src/beingmanager.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,7 +26,9 @@ class LocalPlayer; class Map; +#ifdef EATHENA_SUPPORT class Network; +#endif typedef std::list<Being*> Beings; typedef Beings::iterator BeingIterator; @@ -35,7 +36,9 @@ typedef Beings::iterator BeingIterator; class BeingManager { public: +#ifdef EATHENA_SUPPORT BeingManager(Network *network); +#endif ~BeingManager(); @@ -52,7 +55,11 @@ class BeingManager /** * Create a being and add it to the list of beings. */ +#ifdef TMWSERV_SUPPORT + Being *createBeing(int id, int type, int subtype); +#else Being *createBeing(int id, Uint16 job); +#endif /** * Remove a Being. @@ -60,25 +67,25 @@ class BeingManager void destroyBeing(Being *being); /** - * Return a specific id Being. + * Returns a specific id Being. */ Being *findBeing(int id); - Being *findBeingByPixel(int x, int y); /** * Returns a being at specific coordinates. */ Being *findBeing(int x, int y, Being::Type type = Being::UNKNOWN); + Being *findBeingByPixel(int x, int y); - /** - * Returns a being nearest to specific coordinates. - * - * @param x X coordinate. - * @param y Y coordinate. - * @param maxdist Maximal distance. If minimal distance is larger, - * no being is returned. - * @param type The type of being to look for. - */ + /** + * Returns a being nearest to specific coordinates. + * + * @param x X coordinate. + * @param y Y coordinate. + * @param maxdist Maximal distance. If minimal distance is larger, + * no being is returned. + * @param type The type of being to look for. + */ Being *findNearestLivingBeing(int x, int y, int maxdist, Being::Type type = Being::UNKNOWN); @@ -122,7 +129,9 @@ class BeingManager protected: Beings mBeings; Map *mMap; +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif }; extern BeingManager *beingManager; diff --git a/src/channel.cpp b/src/channel.cpp new file mode 100644 index 00000000..3e4646fb --- /dev/null +++ b/src/channel.cpp @@ -0,0 +1,45 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "channel.h" + +#ifdef TMWSERV_SUPPORT +#include "net/tmwserv/chatserver/chatserver.h" +#include "net/tmwserv/gameserver/player.h" +#else +#include "net/messageout.h" +#include "net/ea/protocol.h" +#endif + +Channel::Channel(short id, + const std::string &name, + const std::string &announcement) : + mId(id), + mName(name), + mAnnouncement(announcement), + mTab(new ChannelTab(this)) +{ +} + +Channel::~Channel() +{ + delete mTab; +} diff --git a/src/channel.h b/src/channel.h new file mode 100644 index 00000000..b2080d4a --- /dev/null +++ b/src/channel.h @@ -0,0 +1,87 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CHANNEL_H +#define CHANNEL_H + +#include <string> + +#include "gui/widgets/channeltab.h" + +class Channel +{ + public: + /** + * Constructor. + * + * @param id the id associated with the channel. + * @param name the name of the channel. + * @param announcement a welcome message. + */ + Channel(short id, + const std::string &name, + const std::string &announcement = std::string()); + + ~Channel(); + + /** + * Get the id associated witht his channel + */ + int getId() const { return mId; } + + /** + * Get this channel's name + */ + const std::string &getName() const + { return mName; } + + /** + * Get the announcement message for this channel + */ + const std::string &getAnnouncement() const + { return mAnnouncement; } + + /** + * Sets the name of the channel. + */ + void setName(const std::string &channelName) + { mName = channelName; } + + /** + * Sets the announcement string of the channel. + */ + void setAnnouncement(const std::string &channelAnnouncement) + { mAnnouncement = channelAnnouncement; } + + ChannelTab *getTab() { return mTab; } + + protected: + friend class ChannelTab; + void setTab(ChannelTab *tab) { mTab = tab; } + + private: + unsigned short mId; + std::string mName; + std::string mAnnouncement; + ChannelTab *mTab; +}; + +#endif // CHANNEL_H diff --git a/src/channelmanager.cpp b/src/channelmanager.cpp new file mode 100644 index 00000000..6868c283 --- /dev/null +++ b/src/channelmanager.cpp @@ -0,0 +1,85 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "channelmanager.h" +#include "channel.h" + +#include "utils/dtor.h" + +ChannelManager::ChannelManager() +{ +} + +ChannelManager::~ChannelManager() +{ + delete_all(mChannels); + mChannels.clear(); +} + +Channel *ChannelManager::findById(int id) const +{ + Channel *channel = 0; + for (std::list<Channel*>::const_iterator itr = mChannels.begin(), + end = mChannels.end(); + itr != end; + itr++) + { + Channel *c = (*itr); + if (c->getId() == id) + { + channel = c; + break; + } + } + return channel; +} + +Channel *ChannelManager::findByName(const std::string &name) const +{ + Channel *channel = 0; + if (!name.empty()) + { + for (std::list<Channel*>::const_iterator itr = mChannels.begin(), + end = mChannels.end(); + itr != end; + itr++) + { + Channel *c = (*itr); + if (c->getName() == name) + { + channel = c; + break; + } + } + } + return channel; +} + +void ChannelManager::addChannel(Channel *channel) +{ + mChannels.push_back(channel); +} + +void ChannelManager::removeChannel(Channel *channel) +{ + mChannels.remove(channel); + delete channel; +} diff --git a/src/channelmanager.h b/src/channelmanager.h new file mode 100644 index 00000000..9b425159 --- /dev/null +++ b/src/channelmanager.h @@ -0,0 +1,48 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CHANNELMANAGER_H +#define CHANNELMANAGER_H + +#include <list> +#include <string> + +class Channel; + +class ChannelManager +{ +public: + ChannelManager(); + ~ChannelManager(); + + Channel *findById(int id) const; + Channel *findByName(const std::string &name) const; + + void addChannel(Channel *channel); + void removeChannel(Channel *channel); + +private: + std::list<Channel*> mChannels; +}; + +extern ChannelManager *channelManager; + +#endif diff --git a/src/commandhandler.cpp b/src/commandhandler.cpp new file mode 100644 index 00000000..f875fd85 --- /dev/null +++ b/src/commandhandler.cpp @@ -0,0 +1,593 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +#include "commandhandler.h" +#include "channelmanager.h" +#include "channel.h" +#include "game.h" +#include "localplayer.h" + +#include "gui/widgets/channeltab.h" +#include "gui/widgets/chattab.h" +#include "gui/chat.h" + +#ifdef TMWSERV_SUPPORT +#include "net/tmwserv/chatserver/chatserver.h" +#include "net/tmwserv/gameserver/player.h" +#else +#include "party.h" +#include "net/messageout.h" +#include "net/ea/protocol.h" +#endif + +#include "utils/gettext.h" +#include "utils/stringutils.h" +#include "utils/strprintf.h" + +#ifdef TMWSERV_SUPPORT +CommandHandler::CommandHandler() +#else +CommandHandler::CommandHandler(Network *network): + mNetwork(network) +#endif +{} + +void CommandHandler::handleCommand(const std::string &command) +{ + std::string::size_type pos = command.find(' '); + std::string type(command, 0, pos); + std::string args(command, pos == std::string::npos ? command.size() : pos + 1); + + if (type == "announce") + { + handleAnnounce(args); + } + else if (type == "help") + { + handleHelp(args); + } + else if (type == "where") + { + handleWhere(); + } + else if (type == "who") + { + handleWho(); + } + else if (type == "msg" || type == "whisper" || type == "w") + { + handleMsg(args); + } +#ifdef TMWSERV_SUPPORT + else if (type == "join") + { + handleJoin(args); + } + else if (type == "list") + { + handleListChannels(); + } + else if (type == "users") + { + handleListUsers(); + } + else if (type == "quit") + { + handleQuit(); + } + else if (type == "topic") + { + handleTopic(args); + } + else if (type == "clear") + { + handleClear(); + } + else if (type == "op") + { + handleOp(args); + } + else if (type == "kick") + { + handleKick(args); + } +#endif + else if (type == "party") + { + handleParty(args); + } + else if (type == "me") + { + handleMe(args); + } + else if (type == "record") + { + handleRecord(args); + } + else if (type == "toggle") + { + handleToggle(args); + } + else if (type == "present") + { + handlePresent(args); + } + else + { + localChatTab->chatLog("Unknown command"); + } +} + +void CommandHandler::handleAnnounce(const std::string &args) +{ +#ifdef TMWSERV_SUPPORT + Net::ChatServer::announce(args); +#else + MessageOut outMsg(mNetwork); + outMsg.writeInt16(0x0099); + outMsg.writeInt16(args.length() + 4); + outMsg.writeString(args, args.length()); +#endif +} + +void CommandHandler::handleHelp(const std::string &args) +{ + if (args == "") + { + localChatTab->chatLog(_("-- Help --")); + localChatTab->chatLog(_("/help > Display this help.")); + + localChatTab->chatLog(_("/where > Display map name")); + localChatTab->chatLog(_("/who > Display number of online users")); + localChatTab->chatLog(_("/me > Tell something about yourself")); + + localChatTab->chatLog(_("/msg > Send a private message to a user")); + localChatTab->chatLog(_("/whisper > Alias of msg")); + localChatTab->chatLog(_("/w > Alias of msg")); + +#ifdef TMWSERV_SUPPORT + localChatTab->chatLog(_("/list > Display all public channels")); + localChatTab->chatLog(_("/users > Lists the users in the current channel")); + localChatTab->chatLog(_("/join > Join or create a channel")); + localChatTab->chatLog(_("/topic > Set the topic of the current channel")); + localChatTab->chatLog(_("/quit > Leave a channel")); + localChatTab->chatLog(_("/clear > Clears this window")); + localChatTab->chatLog(_("/op > Make a user a channel operator")); + localChatTab->chatLog(_("/kick > Kick a user from the channel")); + + localChatTab->chatLog(_("/party > Invite a user to party")); +#else + localChatTab->chatLog(_("/party > Party-related commands")); +#endif + + localChatTab->chatLog(_("/record > Start recording the chat to an external file")); + localChatTab->chatLog(_("/toggle > Determine whether <return> toggles the chat log")); + localChatTab->chatLog(_("/present > Get list of players present (sent to chat log, if logging)")); + + localChatTab->chatLog(_("/announce > Global announcement (GM only)")); + + localChatTab->chatLog(_("For more information, type /help <command>")); + } + else if (args == "announce") + { + localChatTab->chatLog(_("Command: /announce <msg>")); + localChatTab->chatLog(_("*** only available to a GM ***")); + localChatTab->chatLog(_("This command sends the message <msg> to " + "all players currently online.")); + } + else if (args == "clear") + { + localChatTab->chatLog(_("Command: /clear")); + localChatTab->chatLog(_("This command clears the chat log of previous chat.")); + } + else if (args == "help") + { + localChatTab->chatLog(_("Command: /help")); + localChatTab->chatLog(_("This command displays a list of all commands available.")); + localChatTab->chatLog(_("Command: /help <command>")); + localChatTab->chatLog(_("This command displays help on <command>.")); + } + else if (args == "join") + { + localChatTab->chatLog(_("Command: /join <channel>")); + localChatTab->chatLog(_("This command makes you enter <channel>.")); + localChatTab->chatLog(_("If <channel> doesn't exist, it's created.")); + } + else if (args == "kick") + { + localChatTab->chatLog(_("Command: /kick <nick>")); + localChatTab->chatLog(_("This command makes <nick> leave the channel.")); + localChatTab->chatLog(_("If the <nick> has spaces in it, enclose it in " + "double quotes (\").")); + } + else if (args == "list") + { + localChatTab->chatLog(_("Command: /list")); + localChatTab->chatLog(_("This command shows a list of all channels.")); + } + else if (args == "me") + { + localChatTab->chatLog(_("Command: /me <message>")); + localChatTab->chatLog(_("This command tell others you are (doing) <msg>.")); + } + else if (args == "msg" || args == "whisper" || args == "w") + { + localChatTab->chatLog(_("Command: /msg <nick> <message>")); + localChatTab->chatLog(_("Command: /whisper <nick> <message>")); + localChatTab->chatLog(_("Command: /w <nick> <message>")); + localChatTab->chatLog(_("This command sends the text <message> to <nick>.")); + localChatTab->chatLog(_("If the <nick> has spaces in it, enclose it in " + "double quotes (\").")); + } + else if (args == "op") + { + localChatTab->chatLog(_("Command: /op <nick>")); + localChatTab->chatLog(_("This command makes <nick> a channel operator.")); + localChatTab->chatLog(_("If the <nick> has spaces in it, enclose it in " + "double quotes (\").")); + localChatTab->chatLog(_("Channel operators can kick and op other users " + "from the channel.")); + } +#ifdef TMWSERV_SUPPORT + else if (args == "party") + { + localChatTab->chatLog(_("Command: /party <nick>")); + localChatTab->chatLog(_("This command invites <nick> to party with you.")); + localChatTab->chatLog(_("If the <nick> has spaces in it, enclose it in " + "double quotes (\").")); +#else + else if (args.substr(0, 5) == "party") + { + playerParty->help(args); +#endif + } + else if (args == "present") + { + localChatTab->chatLog(_("Command: /present")); + localChatTab->chatLog(_("This command gets a list of players within hearing and " + "sends it to either the record log if recording, or the chat " + "log otherwise.")); + } + else if (args == "quit") + { + localChatTab->chatLog(_("Command: /quit")); + localChatTab->chatLog(_("This command leaves the current channel.")); + localChatTab->chatLog(_("If you're the last person in the channel, it will be deleted.")); + } + else if (args == "record") + { + localChatTab->chatLog(_("Command: /record <filename>")); + localChatTab->chatLog(_("This command starts recording the chat log to the file " + "<filename>.")); + localChatTab->chatLog(_("Command: /record")); + localChatTab->chatLog(_("This command finishes a recording session.")); + } + else if (args == "toggle") + { + localChatTab->chatLog(_("Command: /toggle <state>")); + localChatTab->chatLog(_("This command sets whether the return key should toggle the " + "chat log, or whether the chat log turns off automatically.")); + localChatTab->chatLog(_("<state> can be one of \"1\", \"yes\", \"true\" to " + "turn the toggle on, or \"0\", \"no\", \"false\" to turn the " + "toggle off.")); + localChatTab->chatLog(_("Command: /toggle")); + localChatTab->chatLog(_("This command displays the return toggle status.")); + } + else if (args == "topic") + { + localChatTab->chatLog(_("Command: /topic <message>")); + localChatTab->chatLog(_("This command sets the topic to <message>.")); + } + else if (args == "users") + { + localChatTab->chatLog(_("Command: /users <channel>")); + localChatTab->chatLog(_("This command shows the users in <channel>.")); + } + else if (args == "where") + { + localChatTab->chatLog(_("Command: /where")); + localChatTab->chatLog(_("This command displays the name of the current map.")); + } + else if (args == "who") + { + localChatTab->chatLog(_("Command: /who")); + localChatTab->chatLog(_("This command displays the number of players currently " + "online.")); + } + else + { + localChatTab->chatLog(_("Unknown command.")); + localChatTab->chatLog(_("Type /help for a list of commands.")); + } +} + +void CommandHandler::handleWhere() +{ + // TODO: add position + localChatTab->chatLog(map_path, BY_SERVER); +} + +void CommandHandler::handleWho() +{ +#ifdef TMWSERV_SUPPORT + //TODO +#else + MessageOut outMsg(mNetwork); + outMsg.writeInt16(0x00c1); +#endif +} + +void CommandHandler::handleMsg(const std::string &args) +{ +#ifdef TMWSERV_SUPPORT + std::string::size_type pos = args.find(' '); + std::string recipient(args, 0, pos); + std::string text(args, pos+1); + Net::ChatServer::privMsg(recipient, text); +#else + std::string recvnick = ""; + std::string msg = ""; + + if (args.substr(0, 1) == "\"") + { + const std::string::size_type pos = args.find('"', 1); + if (pos != std::string::npos) + { + recvnick = args.substr(1, pos - 1); + msg = args.substr(pos + 2, args.length()); + } + } + else + { + const std::string::size_type pos = args.find(" "); + if (pos != std::string::npos) + { + recvnick = args.substr(0, pos); + msg = args.substr(pos + 1, args.length()); + } + else + { + recvnick = std::string(args); + msg = ""; + } + } + + trim(msg); + + if (msg.length() > 0) + { + std::string playerName = player_node->getName(); + std::string tempNick = recvnick; + + toLower(playerName); + toLower(tempNick); + + if (tempNick.compare(playerName) == 0 || args.empty()) + return; + + chatWindow->whisper(recvnick, msg, true); + } + else + localChatTab->chatLog("Cannont send empty whispers!"); +#endif +} + +void CommandHandler::handleClear() +{ + chatWindow->clearTab(); +} + +#ifdef TMWSERV_SUPPORT + +void CommandHandler::handleJoin(const std::string &args) +{ + std::string::size_type pos = args.find(' '); + std::string name(args, 0, pos); + std::string password(args, pos+1); + localChatTab->chatLog("Requesting to join channel " + name); + Net::ChatServer::enterChannel(name, password); +} + +void CommandHandler::handleListChannels() +{ + Net::ChatServer::getChannelList(); +} + +void CommandHandler::handleListUsers() +{ + Net::ChatServer::getUserList(chatWindow->getFocused()->getCaption()); +} + +void CommandHandler::handleTopic(const std::string &args) +{ + ChannelTab *tab = dynamic_cast<ChannelTab*>(chatWindow->getFocused()); + Channel *channel = tab ? tab->getChannel() : NULL; + if (channel) + { + Net::ChatServer::setChannelTopic(channel->getId(), args); + } + else + { + localChatTab->chatLog("Unable to set this channel's topic", BY_CHANNEL); + } +} + +void CommandHandler::handleQuit() +{ + ChannelTab *tab = dynamic_cast<ChannelTab*>(chatWindow->getFocused()); + Channel *channel = tab ? tab->getChannel() : NULL; + if (channel) + { + Net::ChatServer::quitChannel(channel->getId()); + } + else + { + localChatTab->chatLog("Unable to quit this channel", BY_CHANNEL); + } +} + +void CommandHandler::handleOp(const std::string &args) +{ + ChannelTab *tab = dynamic_cast<ChannelTab*>(chatWindow->getFocused()); + Channel *channel = tab ? tab->getChannel() : NULL; + if (channel) + { + // set the user mode 'o' to op a user + if (args != "") + { + Net::ChatServer::setUserMode(channel->getId(), args, 'o'); + } + } + else + { + localChatTab->chatLog("Unable to set this user's mode", BY_CHANNEL); + } +} + +void CommandHandler::handleKick(const std::string &args) +{ + ChannelTab *tab = dynamic_cast<ChannelTab*>(chatWindow->getFocused()); + Channel *channel = tab ? tab->getChannel() : NULL; + if (channel) + { + if (args != "") + { + Net::ChatServer::kickUser(channel->getId(), args); + } + } + else + { + localChatTab->chatLog("Unable to kick user", BY_CHANNEL); + } +} + +#endif + +void CommandHandler::handleParty(const std::string &args) +{ +#ifdef TMWSERV_SUPPORT + if (args != "") + { + player_node->inviteToParty(args); + } +#else + if (args.empty()) + { + localChatTab->chatLog(_("Unknown party command... Type \"/help\" party for more " + "information."), BY_SERVER); + return; + } + + const std::string::size_type space = args.find(" "); + std::string command; + std::string rest; + + if (space == std::string::npos) + { + command = args; + } + else + { + command = args.substr(0, space); + rest = args.substr(space + 1, args.length()); + } + + if (command == "prefix") + { + if (rest.empty()) + { + char temp[2] = "."; + *temp = chatWindow->getPartyPrefix(); + localChatTab->chatLog(_("The current party prefix is ") + std::string(temp)); + } + else if (rest.length() != 1) + { + localChatTab->chatLog(_("Party prefix must be one character long.")); + } + else + { + if (rest == "/") + { + localChatTab->chatLog(_("Cannot use a '/' as the prefix.")); + } + else + { + chatWindow->setPartyPrefix(rest.at(0)); + localChatTab->chatLog(_("Changing prefix to ") + rest); + } + } + } + else + playerParty->respond(command, rest); +#endif +} + +void CommandHandler::handleMe(const std::string &args) +{ + std::string action = strprintf("*%s*", args.c_str()); + chatWindow->chatSend(action); + //std::stringstream actionStr; + //actionStr << "*" << args << "*"; + //chatWindow->chatSend(actionStr.str()); +} + +void CommandHandler::handleRecord(const std::string &args) +{ + chatWindow->setRecordingFile(args); +} + +void CommandHandler::handleToggle(const std::string &args) +{ + if (args.empty()) + { + localChatTab->chatLog(chatWindow->getReturnTogglesChat() ? + _("Return toggles chat.") : _("Message closes chat.")); + return; + } + + std::string opt = args.substr(0, 1); + + if (opt == "1" || + opt == "y" || opt == "Y" || + opt == "t" || opt == "T") + { + localChatTab->chatLog(_("Return now toggles chat.")); + chatWindow->setReturnTogglesChat(true); + return; + } + else if (opt == "0" || + opt == "n" || opt == "N" || + opt == "f" || opt == "F") + { + localChatTab->chatLog(_("Message now closes chat.")); + chatWindow->setReturnTogglesChat(false); + return; + } + else + localChatTab->chatLog(_("Options to /toggle are \"yes\", \"no\", \"true\", " + "\"false\", \"1\", \"0\".")); +} + +void CommandHandler::handlePresent(const std::string &args) +{ + chatWindow->doPresent(); +} diff --git a/src/commandhandler.h b/src/commandhandler.h new file mode 100644 index 00000000..2adf4e1b --- /dev/null +++ b/src/commandhandler.h @@ -0,0 +1,154 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef COMMANDHANDLER_H +#define COMMANDHANDLER_H + +#include <string> + +#ifdef EATHENA_SUPPORT +class Network; +#endif + +/** + * A class to parse and handle user commands + */ +class CommandHandler +{ + public: + /** + * Constructor + */ +#ifdef TMWSERV_SUPPORT + CommandHandler(); +#else + CommandHandler(Network *network); +#endif + + /** + * Destructor + */ + ~CommandHandler() {} + + /** + * Parse and handle the given command. + */ + void handleCommand(const std::string &command); + + private: + /** + * Handle an announce command. + */ + void handleAnnounce(const std::string &args); + + /** + * Handle a help command. + */ + void handleHelp(const std::string &args); + + /** + * Handle a where command. + */ + void handleWhere(); + + /** + * Handle a who command. + */ + void handleWho(); + + /** + * Handle a msg command. + */ + void handleMsg(const std::string &args); + + /** + * Handle a join command. + */ + void handleJoin(const std::string &args); + + /** + * Handle a listchannels command. + */ + void handleListChannels(); + + /** + * Handle a listusers command. + */ + void handleListUsers(); + + /** + * Handle a topic command. + */ + void handleTopic(const std::string &args); + + /** + * Handle a quit command. + */ + void handleQuit(); + + /** + * Handle a clear command. + */ + void handleClear(); + + /** + * Handle a party command. + */ + void handleParty(const std::string &args); + + /** + * Handle a op command. + */ + void handleOp(const std::string &args); + + /** + * Handle a kick command. + */ + void handleKick(const std::string &args); + + /** + * Handle a me command. + */ + void handleMe(const std::string &args); + + /** + * Handle a record command. + */ + void handleRecord(const std::string &args); + + /** + * Handle a toggle command. + */ + void handleToggle(const std::string &args); + + /** + * Handle a present command. + */ + void handlePresent(const std::string &args); + +#ifdef EATHENA_SUPPORT + Network *mNetwork; +#endif +}; + +extern CommandHandler *commandHandler; + +#endif // COMMANDHANDLER_H diff --git a/src/configlistener.h b/src/configlistener.h index edd9e90a..ec7d6a2c 100644 --- a/src/configlistener.h +++ b/src/configlistener.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/configuration.cpp b/src/configuration.cpp index 0df666ab..3c3ae1d5 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,7 +56,8 @@ void Configuration::setValue(const std::string &key, std::string value) } } -std::string ConfigurationObject::getValue(const std::string &key, std::string deflt) +std::string ConfigurationObject::getValue(const std::string &key, + std::string deflt) { OptionIterator iter = mOptions.find(key); return ((iter != mOptions.end()) ? iter->second : deflt); @@ -78,7 +78,7 @@ void ConfigurationObject::deleteList(const std::string &name) mContainerOptions[name].clear(); } -void ConfigurationObject::clear(void) +void ConfigurationObject::clear() { for (std::map<std::string, ConfigurationList>::const_iterator it = mContainerOptions.begin(); it != mContainerOptions.end(); it++) @@ -86,7 +86,7 @@ void ConfigurationObject::clear(void) mOptions.clear(); } -ConfigurationObject::~ConfigurationObject(void) +ConfigurationObject::~ConfigurationObject() { clear(); } @@ -106,7 +106,7 @@ void ConfigurationObject::initFromXML(xmlNodePtr parent_node) { if (xmlStrEqual(subnode->name, BAD_CAST name.c_str()) && subnode->type == XML_ELEMENT_NODE) { - ConfigurationObject *cobj = new ConfigurationObject(); + ConfigurationObject *cobj = new ConfigurationObject; cobj->initFromXML(subnode); // recurse diff --git a/src/configuration.h b/src/configuration.h index 3e201dcb..0134f29a 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -73,7 +72,7 @@ class ConfigurationObject friend class Configuration; public: - virtual ~ConfigurationObject(void); + virtual ~ConfigurationObject(); /** * Sets an option using a string value. @@ -110,7 +109,7 @@ class ConfigurationObject /** * Re-sets all data in the configuration */ - virtual void clear(void); + virtual void clear(); /** * Serialises a container into a list of configuration options @@ -127,7 +126,7 @@ class ConfigurationObject template <class IT, class T, class CONT> void setList(const std::string &name, IT begin, IT end, ConfigurationListManager<T, CONT> *manager) { - ConfigurationObject *nextobj = new ConfigurationObject(); + ConfigurationObject *nextobj = new ConfigurationObject; deleteList(name); ConfigurationList *list = &(mContainerOptions[name]); @@ -135,7 +134,7 @@ class ConfigurationObject ConfigurationObject *wrobj = manager->writeConfigItem(*it, nextobj); if (wrobj) { // wrote something assert (wrobj == nextobj); - nextobj = new ConfigurationObject(); + nextobj = new ConfigurationObject; list->push_back(wrobj); } else nextobj->clear(); // you never know... @@ -160,7 +159,7 @@ class ConfigurationObject { ConfigurationList *list = &(mContainerOptions[name]); CONT container = empty; - + for (ConfigurationList::const_iterator it = list->begin(); it != list->end(); it++) container = manager->readConfigItem(*it, container); @@ -189,7 +188,7 @@ class ConfigurationObject class Configuration : public ConfigurationObject { public: - virtual ~Configuration(void) {} + virtual ~Configuration() {} /** * Reads config file and parse all options into memory. @@ -216,6 +215,7 @@ class Configuration : public ConfigurationObject virtual void setValue(const std::string &key, std::string value); virtual void setValue(const std::string &key, float value); + private: typedef std::list<ConfigListener*> Listeners; typedef Listeners::iterator ListenerIterator; @@ -226,6 +226,7 @@ class Configuration : public ConfigurationObject std::string mConfigPath; /**< Location of config file */ }; +extern Configuration branding; extern Configuration config; #endif diff --git a/src/effectmanager.cpp b/src/effectmanager.cpp index 567e692b..d9234f66 100644 --- a/src/effectmanager.cpp +++ b/src/effectmanager.cpp @@ -3,8 +3,7 @@ * Copyright (C) 2008 Fate <fate.tmw@googlemail.com> * Copyright (C) 2008 Chuck Miller <shadowmil@gmail.com> * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -46,8 +45,6 @@ EffectManager::EffectManager() for_each_xml_child_node(node, root) { - //int id; - if (xmlStrEqual(node->name, BAD_CAST "effect")) { EffectDescription ed; @@ -61,7 +58,6 @@ EffectManager::EffectManager() EffectManager::~EffectManager() { - } bool EffectManager::trigger(int id, Being* being) diff --git a/src/effectmanager.h b/src/effectmanager.h index c69ade09..01c5a6b8 100644 --- a/src/effectmanager.h +++ b/src/effectmanager.h @@ -3,8 +3,7 @@ * Copyright (C) 2008 Fate <fate.tmw@googlemail.com> * Copyright (C) 2008 Chuck Miller <shadowmil@gmail.com> * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/emoteshortcut.cpp b/src/emoteshortcut.cpp index b229ec70..46e13782 100644 --- a/src/emoteshortcut.cpp +++ b/src/emoteshortcut.cpp @@ -2,8 +2,7 @@ * Extended support for activating emotes * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra derived from original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/emoteshortcut.h b/src/emoteshortcut.h index 3fe911dd..ceb51a9b 100644 --- a/src/emoteshortcut.h +++ b/src/emoteshortcut.h @@ -2,8 +2,7 @@ * Extended support for activating emotes * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra derived from original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/engine.cpp b/src/engine.cpp index 8ef2b9c6..da4eb336 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,17 +33,25 @@ #include "gui/minimap.h" #include "gui/viewport.h" +#ifdef EATHENA_SUPPORT #include "net/messageout.h" -#include "net/protocol.h" +#include "net/ea/protocol.h" +#endif #include "resources/mapreader.h" +#include "resources/monsterdb.h" #include "resources/resourcemanager.h" #include "utils/stringutils.h" +#ifdef TMWSERV_SUPPORT +Engine::Engine(): + mCurrentMap(NULL) +#else Engine::Engine(Network *network): mCurrentMap(NULL), mNetwork(network) +#endif { } @@ -58,6 +65,7 @@ void Engine::changeMap(const std::string &mapPath) // Clean up floor items, beings and particles floorItemManager->clear(); beingManager->clear(); + particleEngine->clear(); // Unset the map of the player so that its particles are cleared before // being deleted in the next step @@ -69,7 +77,11 @@ void Engine::changeMap(const std::string &mapPath) mMapName = mapPath; // Store full map path in global var +#ifdef TMWSERV_SUPPORT + map_path = "maps/" + mapPath + ".tmx"; +#else map_path = "maps/" + mapPath.substr(0, mapPath.rfind(".")) + ".tmx"; +#endif ResourceManager *resman = ResourceManager::getInstance(); if (!resman->exists(map_path)) map_path += ".gz"; @@ -107,6 +119,12 @@ void Engine::changeMap(const std::string &mapPath) else minimap->setProportion(0.5); } + if (newMap->hasProperty("name")) + { + minimap->setCaption(newMap->getProperty("name")); + } else { + minimap->setCaption("Map"); + } minimap->setMapImage(mapImage); beingManager->setMap(newMap); particleEngine->setMap(newMap); @@ -131,15 +149,18 @@ void Engine::changeMap(const std::string &mapPath) mCurrentMap = newMap; +#ifdef EATHENA_SUPPORT // Send "map loaded" MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_MAP_LOADED); +#endif } void Engine::logic() { beingManager->logic(); particleEngine->update(); - mCurrentMap->update(); + if (mCurrentMap) + mCurrentMap->update(); gui->logic(); } diff --git a/src/engine.h b/src/engine.h index e2fec2f6..60b1f6c8 100644 --- a/src/engine.h +++ b/src/engine.h @@ -2,8 +2,7 @@ * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,7 +25,9 @@ #include <string> class Map; +#ifdef EATHENA_SUPPORT class Network; +#endif /** * Game engine. Actually hardly does anything anymore except keeping track of @@ -38,7 +39,11 @@ class Engine /** * Constructor. */ +#ifdef EATHENA_SUPPORT Engine(Network *network); +#else + Engine(); +#endif /** * Destructor. @@ -58,13 +63,15 @@ class Engine void changeMap(const std::string &mapName); /** - * Performs engine logic. + * Performs engine logic. This method is called 100 times per second. */ void logic(); private: Map *mCurrentMap; +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif std::string mMapName; }; diff --git a/src/equipment.cpp b/src/equipment.cpp index 558df216..c8e58b8c 100644 --- a/src/equipment.cpp +++ b/src/equipment.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,19 +21,57 @@ #include "equipment.h" #include "item.h" +#ifdef EATHENA_SUPPORT #include "inventory.h" #include "localplayer.h" +#endif -Equipment::Equipment(): - mArrows(0) +#include <algorithm> + +Equipment::Equipment() +#ifdef EATHENA_SUPPORT + : mArrows(0) +#endif { +#ifdef TMWSERV_SUPPORT + std::fill_n(mEquipment, EQUIPMENT_SIZE, (Item*) 0); +#else std::fill_n(mEquipment, EQUIPMENT_SIZE, 0); +#endif +} + +#ifdef TMWSERV_SUPPORT + +Equipment::~Equipment() +{ + clear(); } +void Equipment::clear() +{ + for (int i = 0; i < EQUIPMENT_SIZE; ++i) + delete mEquipment[i]; + + std::fill_n(mEquipment, EQUIPMENT_SIZE, (Item*) 0); +} + +void Equipment::setEquipment(int index, int id) +{ + if (mEquipment[index] && mEquipment[index]->getId() == id) + return; + + delete mEquipment[index]; + mEquipment[index] = (id > 0) ? new Item(id) : 0; +} + +#else + void Equipment::setEquipment(int index, int inventoryIndex) { mEquipment[index] = inventoryIndex; - Item* item = player_node->getInventory()->getItem(inventoryIndex); + Item *item = player_node->getInventory()->getItem(inventoryIndex); if (item) item->setEquipped(true); } + +#endif diff --git a/src/equipment.h b/src/equipment.h index d75069dc..7605175a 100644 --- a/src/equipment.h +++ b/src/equipment.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,9 +22,13 @@ #ifndef EQUIPMENT_H #define EQUIPMENT_H -class Item; - +#ifdef TMWSERV_SUPPORT +#define EQUIPMENT_SIZE 11 +#else #define EQUIPMENT_SIZE 10 +#endif + +class Item; class Equipment { @@ -35,17 +38,40 @@ class Equipment */ Equipment(); +#ifdef TMWSERV_SUPPORT + /** + * Destructor. + */ + ~Equipment(); +#endif + /** * Get equipment at the given slot. */ +#ifdef TMWSERV_SUPPORT + Item* getEquipment(int index) +#else int getEquipment(int index) const +#endif { return mEquipment[index]; } +#ifdef TMWSERV_SUPPORT + /** + * Clears equipment. + */ + void clear(); +#endif + /** * Set equipment at the given slot. */ +#ifdef TMWSERV_SUPPORT + void setEquipment(int index, int id); +#else void setEquipment(int index, int inventoryIndex); +#endif +#ifdef EATHENA_SUPPORT /** * Remove equipment from the given slot. */ @@ -60,10 +86,15 @@ class Equipment * Set the item used in the arrow slot. */ void setArrows(int arrows) { mArrows = arrows; } +#endif private: +#ifdef TMWSERV_SUPPORT + Item* mEquipment[EQUIPMENT_SIZE]; +#else int mEquipment[EQUIPMENT_SIZE]; int mArrows; +#endif }; #endif diff --git a/src/floor_item.cpp b/src/floor_item.cpp index 82506f8f..000835ad 100644 --- a/src/floor_item.cpp +++ b/src/floor_item.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,7 +26,11 @@ #include "resources/image.h" -FloorItem::FloorItem(int id, int itemId, int x, int y, Map *map): +FloorItem::FloorItem(int id, + int itemId, + int x, + int y, + Map *map): mId(id), mX(x), mY(y), diff --git a/src/floor_item.h b/src/floor_item.h index 0972a983..7ca0f5a3 100644 --- a/src/floor_item.h +++ b/src/floor_item.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -43,7 +42,11 @@ class FloorItem : public Sprite /** * Constructor. */ - FloorItem(int id, int itemId, int x, int y, Map *map); + FloorItem(int id, + int itemId, + int x, + int y, + Map *map); /** * Destructor. diff --git a/src/flooritemmanager.cpp b/src/flooritemmanager.cpp index 97b3ca5b..5d2799d4 100644 --- a/src/flooritemmanager.cpp +++ b/src/flooritemmanager.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,7 +29,8 @@ FloorItemManager::~FloorItemManager() clear(); } -FloorItem* FloorItemManager::create(int id, int itemId, int x, int y, Map *map) +FloorItem *FloorItemManager::create(int id, int itemId, + int x, int y, Map *map) { FloorItem *floorItem = new FloorItem(id, itemId, x, y, map); mFloorItems.push_back(floorItem); diff --git a/src/flooritemmanager.h b/src/flooritemmanager.h index 1a6e8e0a..704b39fd 100644 --- a/src/flooritemmanager.h +++ b/src/flooritemmanager.h @@ -2,8 +2,7 @@ * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/game.cpp b/src/game.cpp index 7f0186d1..91d8fa3a 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,6 +27,8 @@ #include <guichan/exception.hpp> #include "beingmanager.h" +#include "channelmanager.h" +#include "commandhandler.h" #include "configuration.h" #include "effectmanager.h" #include "emoteshortcut.h" @@ -42,8 +43,12 @@ #include "log.h" #include "npc.h" #include "particle.h" +#ifdef EATHENA_SUPPORT +#include "party.h" +#endif #include "player_relations.h" +#include "gui/widgets/chattab.h" #include "gui/buy.h" #include "gui/buysell.h" #include "gui/chat.h" @@ -70,23 +75,47 @@ #include "gui/setup.h" #include "gui/skill.h" #include "gui/status.h" -#include "gui/storagewindow.h" #include "gui/trade.h" #include "gui/viewport.h" +#ifdef TMWSERV_SUPPORT +#include "gui/buddywindow.h" +#include "gui/guildwindow.h" +#include "gui/magic.h" +#include "gui/npcpostdialog.h" +#include "gui/partywindow.h" +#include "gui/quitdialog.h" +#else +#include "gui/storagewindow.h" +#endif -#include "net/beinghandler.h" -#include "net/buysellhandler.h" -#include "net/chathandler.h" -#include "net/equipmenthandler.h" -#include "net/inventoryhandler.h" -#include "net/itemhandler.h" +#ifdef TMWSERV_SUPPORT +#include "net/tmwserv/chathandler.h" +#include "net/tmwserv/itemhandler.h" +#include "net/tmwserv/npchandler.h" +#include "net/tmwserv/playerhandler.h" +#include "net/tmwserv/tradehandler.h" +#include "net/tmwserv/network.h" +#include "net/tmwserv/beinghandler.h" +#include "net/tmwserv/buysellhandler.h" +#include "net/tmwserv/effecthandler.h" +#include "net/tmwserv/guildhandler.h" +#include "net/tmwserv/inventoryhandler.h" +#include "net/tmwserv/partyhandler.h" +#else +#include "net/ea/network.h" +#include "net/ea/chathandler.h" +#include "net/ea/beinghandler.h" +#include "net/ea/buysellhandler.h" +#include "net/ea/equipmenthandler.h" +#include "net/ea/inventoryhandler.h" +#include "net/ea/itemhandler.h" +#include "net/ea/npchandler.h" +#include "net/ea/playerhandler.h" +#include "net/ea/tradehandler.h" +#include "net/ea/protocol.h" +#include "net/ea/skillhandler.h" #include "net/messageout.h" -#include "net/network.h" -#include "net/npchandler.h" -#include "net/playerhandler.h" -#include "net/protocol.h" -#include "net/skillhandler.h" -#include "net/tradehandler.h" +#endif #include "resources/imagewriter.h" @@ -105,7 +134,11 @@ Joystick *joystick = NULL; extern Window *weightNotice; extern Window *deathNotice; +#ifdef TMWSERV_SUPPORT +QuitDialog *quitDialog = NULL; +#else ConfirmDialog *exitConfirm = NULL; +#endif OkDialog *disconnectedDialog = NULL; ChatWindow *chatWindow; @@ -114,7 +147,9 @@ StatusWindow *statusWindow; MiniStatusWindow *miniStatusWindow; BuyDialog *buyDialog; SellDialog *sellDialog; +#ifdef EATHENA_SUPPORT BuySellDialog *buySellDialog; +#endif InventoryWindow *inventoryWindow; EmoteWindow *emoteWindow; NpcIntegerDialog *npcIntegerDialog; @@ -122,6 +157,15 @@ NpcListDialog *npcListDialog; NpcTextDialog *npcTextDialog; NpcStringDialog *npcStringDialog; SkillDialog *skillDialog; +#ifdef TMWSERV_SUPPORT +BuddyWindow *buddyWindow; +GuildWindow *guildWindow; +MagicDialog *magicDialog; +NpcPostDialog *npcPostDialog; +PartyWindow *partyWindow; +#else +StorageWindow *storageWindow; +#endif Minimap *minimap; EquipmentWindow *equipmentWindow; TradeWindow *tradeWindow; @@ -129,13 +173,19 @@ HelpWindow *helpWindow; DebugWindow *debugWindow; ShortcutWindow *itemShortcutWindow; ShortcutWindow *emoteShortcutWindow; -StorageWindow *storageWindow; BeingManager *beingManager = NULL; FloorItemManager *floorItemManager = NULL; -Particle* particleEngine = NULL; +ChannelManager *channelManager = NULL; +CommandHandler *commandHandler = NULL; +Particle *particleEngine = NULL; EffectManager *effectManager = NULL; +ChatTab *localChatTab = NULL; +#ifdef EATHENA_SUPPORT +Party *playerParty = NULL; +#endif + const int MAX_TIME = 10000; /** @@ -149,7 +199,9 @@ namespace { if (event.getId() == "yes" || event.getId() == "ok") done = true; +#ifdef EATHENA_SUPPORT exitConfirm = NULL; +#endif disconnectedDialog = NULL; } } exitListener; @@ -187,33 +239,56 @@ int get_elapsed_time(int start_time) /** * Create all the various globally accessible gui windows */ +#ifdef TMWSERV_SUPPORT +void createGuiWindows() +#else void createGuiWindows(Network *network) +#endif { // Create dialogs +#ifdef TMWSERV_SUPPORT + chatWindow = new ChatWindow; + buyDialog = new BuyDialog; + sellDialog = new SellDialog; + tradeWindow = new TradeWindow; + npcTextDialog = new NpcTextDialog; + npcIntegerDialog = new NpcIntegerDialog; + npcListDialog = new NpcListDialog; + npcStringDialog = new NpcStringDialog; + npcPostDialog = new NpcPostDialog(); + magicDialog = new MagicDialog(); + equipmentWindow = new EquipmentWindow(player_node->mEquipment.get()); + buddyWindow = new BuddyWindow(); + guildWindow = new GuildWindow(); + partyWindow = new PartyWindow(); +#else chatWindow = new ChatWindow(network); - menuWindow = new MenuWindow(); - statusWindow = new StatusWindow(player_node); - miniStatusWindow = new MiniStatusWindow(); buyDialog = new BuyDialog(network); sellDialog = new SellDialog(network); buySellDialog = new BuySellDialog(network); - inventoryWindow = new InventoryWindow(); - emoteWindow = new EmoteWindow(); + tradeWindow = new TradeWindow(network); + equipmentWindow = new EquipmentWindow; npcTextDialog = new NpcTextDialog(network); npcIntegerDialog = new NpcIntegerDialog(network); npcListDialog = new NpcListDialog(network); npcStringDialog = new NpcStringDialog(network); - skillDialog = new SkillDialog(); - minimap = new Minimap(); - equipmentWindow = new EquipmentWindow(); - tradeWindow = new TradeWindow(network); - helpWindow = new HelpWindow(); - debugWindow = new DebugWindow(); + storageWindow = new StorageWindow(network); +#endif + menuWindow = new MenuWindow; + statusWindow = new StatusWindow(player_node); + miniStatusWindow = new MiniStatusWindow; + inventoryWindow = new InventoryWindow; + emoteWindow = new EmoteWindow; + skillDialog = new SkillDialog; + minimap = new Minimap; + helpWindow = new HelpWindow; + debugWindow = new DebugWindow; itemShortcutWindow = new ShortcutWindow("ItemShortcut", new ItemShortcutContainer); emoteShortcutWindow = new ShortcutWindow("emoteShortcut", new EmoteShortcutContainer); - storageWindow = new StorageWindow(network); + + localChatTab = new ChatTab(_("General")); // Set initial window visibility chatWindow->setVisible((bool) config.getValue( @@ -222,6 +297,8 @@ void createGuiWindows(Network *network) miniStatusWindow->getPopupName() + "Visible", true)); buyDialog->setVisible(false); sellDialog->setVisible(false); + minimap->setVisible((bool) config.getValue( + minimap->getWindowName() + "Visible", true)); tradeWindow->setVisible(false); menuWindow->setVisible((bool) config.getValue( menuWindow->getPopupName() + "Visible", true)); @@ -231,12 +308,21 @@ void createGuiWindows(Network *network) emoteShortcutWindow->getWindowName() + "Visible", true)); minimap->setVisible((bool) config.getValue( minimap->getWindowName() + "Visible", true)); +#ifdef EATHENA_SUPPORT buySellDialog->setVisible(false); +#endif npcTextDialog->setVisible(false); npcIntegerDialog->setVisible(false); npcListDialog->setVisible(false); npcStringDialog->setVisible(false); +#ifdef EATHENA_SUPPORT storageWindow->setVisible(false); +#endif + + if (config.getValue("logToChat", 0)) + { + logger->setChatWindow(chatWindow); + } } /** @@ -245,19 +331,29 @@ void createGuiWindows(Network *network) void destroyGuiWindows() { logger->setChatWindow(NULL); + delete localChatTab; // Need to do this first, so it can remove itself delete chatWindow; delete statusWindow; delete miniStatusWindow; delete menuWindow; delete buyDialog; delete sellDialog; +#ifdef EATHENA_SUPPORT delete buySellDialog; +#endif delete inventoryWindow; delete emoteWindow; delete npcIntegerDialog; delete npcListDialog; delete npcTextDialog; delete npcStringDialog; +#ifdef TMWSERV_SUPPORT + delete npcPostDialog; + delete magicDialog; + delete buddyWindow; + delete guildWindow; + delete partyWindow; +#endif delete skillDialog; delete minimap; delete equipmentWindow; @@ -266,36 +362,61 @@ void destroyGuiWindows() delete debugWindow; delete itemShortcutWindow; delete emoteShortcutWindow; +#ifdef EATHENA_SUPPORT delete storageWindow; +#endif } +#ifdef TMWSERV_SUPPORT +Game::Game(): + mBeingHandler(new BeingHandler()), + mGuildHandler(new GuildHandler()), + mPartyHandler(new PartyHandler()), + mEffectHandler(new EffectHandler()), +#else Game::Game(Network *network): mNetwork(network), mBeingHandler(new BeingHandler(config.getValue("EnableSync", 0) == 1)), - mBuySellHandler(new BuySellHandler()), - mChatHandler(new ChatHandler()), - mEquipmentHandler(new EquipmentHandler()), - mInventoryHandler(new InventoryHandler()), - mItemHandler(new ItemHandler()), - mNpcHandler(new NPCHandler()), - mPlayerHandler(new PlayerHandler()), - mSkillHandler(new SkillHandler()), - mTradeHandler(new TradeHandler()) + mEquipmentHandler(new EquipmentHandler), + mSkillHandler(new SkillHandler), +#endif + mBuySellHandler(new BuySellHandler), + mChatHandler(new ChatHandler), + mInventoryHandler(new InventoryHandler), + mItemHandler(new ItemHandler), + mNpcHandler(new NPCHandler), + mPlayerHandler(new PlayerHandler), + mTradeHandler(new TradeHandler), + mLastTarget(Being::UNKNOWN), + mLogicCounterId(0), mSecondsCounterId(0) { + done = false; + +#ifdef TMWSERV_SUPPORT + createGuiWindows(); + engine = new Engine; + + beingManager = new BeingManager; + commandHandler = new CommandHandler(); +#else createGuiWindows(network); engine = new Engine(network); beingManager = new BeingManager(network); - floorItemManager = new FloorItemManager(); - effectManager = new EffectManager(); + commandHandler = new CommandHandler(network); +#endif + + floorItemManager = new FloorItemManager; + channelManager = new ChannelManager(); + effectManager = new EffectManager; particleEngine = new Particle(NULL); particleEngine->setupEngine(); - // Initialize timers + // Initialize logic and seconds counters tick_time = 0; - SDL_AddTimer(10, nextTick, NULL); // Logic counter - SDL_AddTimer(1000, nextSecond, NULL); // Seconds counter + mLogicCounterId = SDL_AddTimer(10, nextTick, NULL); + mSecondsCounterId = SDL_AddTimer(1000, nextSecond, NULL); // Initialize frame limiting config.addListener("fpslimit", this); @@ -303,7 +424,10 @@ Game::Game(Network *network): // Initialize beings beingManager->setPlayer(player_node); +#ifdef EATHENA_SUPPORT player_node->setNetwork(network); + playerParty = new Party(network); +#endif Joystick::init(); // TODO: The user should be able to choose which one to use @@ -311,6 +435,19 @@ Game::Game(Network *network): if (Joystick::getNumberOfJoysticks() > 0) joystick = new Joystick(0); +#ifdef TMWSERV_SUPPORT + Net::registerHandler(mBeingHandler.get()); + Net::registerHandler(mBuySellHandler.get()); + Net::registerHandler(mChatHandler.get()); + Net::registerHandler(mGuildHandler.get()); + Net::registerHandler(mInventoryHandler.get()); + Net::registerHandler(mItemHandler.get()); + Net::registerHandler(mNpcHandler.get()); + Net::registerHandler(mPartyHandler.get()); + Net::registerHandler(mPlayerHandler.get()); + Net::registerHandler(mTradeHandler.get()); + Net::registerHandler(mEffectHandler.get()); +#else network->registerHandler(mBeingHandler.get()); network->registerHandler(mBuySellHandler.get()); network->registerHandler(mChatHandler.get()); @@ -336,24 +473,38 @@ Game::Game(Network *network): msg.writeInt32(tick_time); engine->changeMap(map_path); +#endif setupWindow->setInGame(true); } Game::~Game() { - delete player_node; +#ifdef TMWSERV_SUPPORT + Net::clearHandlers(); +#else + delete playerParty; +#endif + destroyGuiWindows(); delete beingManager; + delete player_node; delete floorItemManager; + delete channelManager; + delete commandHandler; delete joystick; delete particleEngine; delete engine; + viewport->setMap(NULL); + player_node = NULL; beingManager = NULL; floorItemManager = NULL; joystick = NULL; + + SDL_RemoveTimer(mLogicCounterId); + SDL_RemoveTimer(mSecondsCounterId); } static bool saveScreenshot() @@ -374,11 +525,11 @@ static bool saveScreenshot() filenameSuffix.str(""); filename << PHYSFS_getUserDir(); #if (defined __USE_UNIX98 || defined __FreeBSD__) - filenameSuffix << ".aethyra/"; + filenameSuffix << ".tmw/"; #elif defined __APPLE__ filenameSuffix << "Desktop/"; #endif - filenameSuffix << "Ae_Screenshot_" << screenshotCount << ".png"; + filenameSuffix << "TMW_Screenshot_" << screenshotCount << ".png"; filename << filenameSuffix.str(); testExists.open(filename.str().c_str(), std::ios::in); found = !testExists.is_open(); @@ -391,11 +542,11 @@ static bool saveScreenshot() { std::stringstream chatlogentry; chatlogentry << _("Screenshot saved to ~/") << filenameSuffix.str(); - chatWindow->chatLog(chatlogentry.str(), BY_SERVER); + localChatTab->chatLog(chatlogentry.str(), BY_SERVER); } else { - chatWindow->chatLog(_("Saving screenshot failed!"), BY_SERVER); + localChatTab->chatLog(_("Saving screenshot failed!"), BY_SERVER); logger->log("Error: could not save screenshot."); } @@ -467,6 +618,10 @@ void Game::logic() } // Handle network stuff +#ifdef TMWSERV_SUPPORT + Net::flush(); + // TODO: Fix notification when the connection is lost +#else mNetwork->flush(); mNetwork->dispatchMessages(); @@ -482,6 +637,7 @@ void Game::logic() disconnectedDialog->requestMoveToTop(); } } +#endif } } @@ -510,6 +666,23 @@ void Game::handleInput() return; } +#ifdef TMWSERV_SUPPORT + // send straight to gui for certain windows + if (npcPostDialog->isVisible()) + { + try + { + guiInput->pushInput(event); + } + catch (gcn::Exception e) + { + const char* err = e.getMessage().c_str(); + logger->log("Warning: guichan input exception: %s", err); + } + return; + } +#endif + // Mode switch to emotes if (keyboard.isKeyActive(keyboard.KEY_EMOTE)) { @@ -523,58 +696,54 @@ void Game::handleInput() } } - if (keyboard.isKeyActive(keyboard.KEY_TOGGLE_CHAT) || - keyboard.isKeyActive(keyboard.KEY_OK)) - { - // Input chat window - if (!(chatWindow->isInputFocused() || - deathNotice || - weightNotice)) + if (!(chatWindow->isInputFocused() || deathNotice || weightNotice)) + if (keyboard.isKeyActive(keyboard.KEY_OK)) { - // Quit by pressing Enter if the exit confirm is there +#ifdef TMWSERV_SUPPORT + // Don not focus chat input when quit dialog is active + if (quitDialog != NULL && quitDialog->isVisible()) + continue; +#else if (exitConfirm && keyboard.isKeyActive(keyboard.KEY_TOGGLE_CHAT)) done = true; +#endif // Close the Browser if opened else if (helpWindow->isVisible() && - keyboard.isKeyActive(keyboard.KEY_OK)) + keyboard.isKeyActive(keyboard.KEY_OK)) helpWindow->setVisible(false); // Close the config window, cancelling changes if opened else if (setupWindow->isVisible() && - keyboard.isKeyActive(keyboard.KEY_OK)) + keyboard.isKeyActive(keyboard.KEY_OK)) setupWindow->action(gcn::ActionEvent(NULL, "cancel")); // Submits the text and proceeds to the next dialog else if (npcStringDialog->isVisible() && - keyboard.isKeyActive(keyboard.KEY_OK)) + keyboard.isKeyActive(keyboard.KEY_OK)) npcStringDialog->action(gcn::ActionEvent(NULL, "ok")); // Proceed to the next dialog option, or close the window else if (npcTextDialog->isVisible() && - keyboard.isKeyActive(keyboard.KEY_OK)) + keyboard.isKeyActive(keyboard.KEY_OK)) npcTextDialog->action(gcn::ActionEvent(NULL, "ok")); // Choose the currently highlighted dialogue option else if (npcListDialog->isVisible() && - keyboard.isKeyActive(keyboard.KEY_OK)) + keyboard.isKeyActive(keyboard.KEY_OK)) npcListDialog->action(gcn::ActionEvent(NULL, "ok")); // Submits the text and proceeds to the next dialog else if (npcIntegerDialog->isVisible() && - keyboard.isKeyActive(keyboard.KEY_OK)) + keyboard.isKeyActive(keyboard.KEY_OK)) npcIntegerDialog->action(gcn::ActionEvent(NULL, "ok")); - else if (!(keyboard.getKeyValue( - KeyboardConfig::KEY_TOGGLE_CHAT) == - keyboard.getKeyValue( - KeyboardConfig::KEY_OK) && - (helpWindow->isVisible() || - setupWindow->isVisible() || - npcStringDialog->isVisible() || - npcTextDialog->isVisible() || - npcListDialog->isVisible() || - npcIntegerDialog->isVisible()))) + /* + else if (guildWindow->isVisible()) { - chatWindow->requestChatFocus(); - used = true; + // TODO: Check if a dialog is open and close it if so } + */ + } + if (keyboard.isKeyActive(keyboard.KEY_TOGGLE_CHAT)) + { + if (chatWindow->requestChatFocus()) + used = true; } - } const int tKey = keyboard.getKeyIndex(event.key.keysym.sym); switch (tKey) @@ -607,6 +776,17 @@ void Game::handleInput() break; // Quitting confirmation dialog case KeyboardConfig::KEY_QUIT: +#ifdef TMWSERV_SUPPORT + if (!quitDialog) + { + quitDialog = new QuitDialog(&done, &quitDialog); + quitDialog->requestMoveToTop(); + } + else + { + quitDialog->action(gcn::ActionEvent(NULL, "cancel")); + } +#else if (!exitConfirm) { exitConfirm = new ConfirmDialog(_("Quit"), @@ -619,6 +799,7 @@ void Game::handleInput() { exitConfirm->action(gcn::ActionEvent(NULL, _("no"))); } +#endif break; default: break; @@ -649,25 +830,34 @@ void Game::handleInput() { case KeyboardConfig::KEY_PICKUP: { - FloorItem *item = floorItemManager->findByCoordinates( - player_node->mX, - player_node->mY); +#ifdef TMWSERV_SUPPORT + const Vector &pos = player_node->getPosition(); + Uint16 x = (int) pos.x / 32; + Uint16 y = (int) pos.y / 32; +#else + Uint16 x = player_node->mX; + Uint16 y = player_node->mY; +#endif + FloorItem *item = + floorItemManager->findByCoordinates(x, y); // If none below the player, try the tile in front // of the player if (!item) { - Uint16 x = player_node->mX; - Uint16 y = player_node->mY; - if (player_node->getDirection() & Being::UP) - y--; - if (player_node->getDirection() & Being::DOWN) - y++; - if (player_node->getDirection() & Being::LEFT) - x--; - if (player_node->getDirection() & Being::RIGHT) - x++; - item = floorItemManager->findByCoordinates(x, y); + // Temporary until tile-based picking is + // removed. + switch (player_node->getSpriteDirection()) + { + case DIRECTION_UP : --y; break; + case DIRECTION_DOWN : ++y; break; + case DIRECTION_LEFT : --x; break; + case DIRECTION_RIGHT: ++x; break; + default: break; + } + + item = floorItemManager->findByCoordinates( + x, y); } if (item) @@ -693,6 +883,10 @@ void Game::handleInput() equipmentWindow->setVisible(false); helpWindow->setVisible(false); debugWindow->setVisible(false); +#ifdef TMWSERV_SUPPORT + guildWindow->setVisible(false); + buddyWindow->setVisible(false); +#endif } break; case KeyboardConfig::KEY_WINDOW_STATUS: @@ -744,16 +938,16 @@ void Game::handleInput() unsigned int deflt = player_relations.getDefault(); if (deflt & PlayerRelation::TRADE) { - chatWindow->chatLog( - _("Ignoring incoming trade requests"), - BY_SERVER); + localChatTab->chatLog( + _("Ignoring incoming trade requests"), + BY_SERVER); deflt &= ~PlayerRelation::TRADE; } else { - chatWindow->chatLog( - _("Accepting incoming trade requests"), - BY_SERVER); + localChatTab->chatLog( + _("Accepting incoming trade requests"), + BY_SERVER); deflt |= PlayerRelation::TRADE; } @@ -791,6 +985,7 @@ void Game::handleInput() logger->log("Warning: guichan input exception: %s", err); } } + } // End while // If the user is configuring the keys then don't respond. @@ -799,7 +994,10 @@ void Game::handleInput() // Moving player around if (player_node->mAction != Being::DEAD && - current_npc == 0 && !chatWindow->isInputFocused()) +#ifdef EATHENA_SUPPORT + current_npc == 0 && +#endif + !chatWindow->isInputFocused()) { // Get the state of the keyboard keys keyboard.refreshActiveKeys(); @@ -813,41 +1011,67 @@ void Game::handleInput() return; } +#ifdef TMWSERV_SUPPORT + const Vector &pos = player_node->getPosition(); + const Uint16 x = (int) pos.x / 32; + const Uint16 y = (int) pos.y / 32; +#else const Uint16 x = player_node->mX; const Uint16 y = player_node->mY; +#endif unsigned char direction = 0; // Translate pressed keys to movement and direction if (keyboard.isKeyActive(keyboard.KEY_MOVE_UP) || - (joystick && joystick->isUp())) + (joystick && joystick->isUp())) { direction |= Being::UP; } else if (keyboard.isKeyActive(keyboard.KEY_MOVE_DOWN) || - (joystick && joystick->isDown())) + (joystick && joystick->isDown())) { direction |= Being::DOWN; } if (keyboard.isKeyActive(keyboard.KEY_MOVE_LEFT) || - (joystick && joystick->isLeft())) + (joystick && joystick->isLeft())) { direction |= Being::LEFT; } else if (keyboard.isKeyActive(keyboard.KEY_MOVE_RIGHT) || - (joystick && joystick->isRight())) + (joystick && joystick->isRight())) { direction |= Being::RIGHT; } +#ifdef TMWSERV_SUPPORT + // First if player is pressing key for the direction he is already + // going + if (direction == player_node->getWalkingDir()) + { + player_node->setWalkingDir(direction); + } + // Else if he is pressing a key, and its different from what he has + // been pressing, stop (do not send this stop to the server) and + // start in the new direction + else if (direction && direction != player_node->getWalkingDir()) + { + player_node->stopWalking(false); + player_node->setWalkingDir(direction); + } + // Else, he is not pressing a key, stop (sending to server) + else + { + player_node->stopWalking(true); + } +#else player_node->setWalkingDir(direction); // Attacking monsters if (keyboard.isKeyActive(keyboard.KEY_ATTACK) || (joystick && joystick->buttonPressed(0))) { - Being *target = beingManager->findNearestLivingBeing(x, y, 20, - Being::MONSTER); + Being *target = NULL; bool newTarget = !keyboard.isKeyActive(keyboard.KEY_TARGET); // A set target has highest priority @@ -864,47 +1088,41 @@ void Game::handleInput() default: break; } - // Attack priorioty is: Monster, Player, auto target - target = beingManager->findBeing(targetX, targetY, - Being::MONSTER); - if (!target) - target = beingManager->findBeing(targetX, targetY, - Being::PLAYER); + // Only auto target Monsters + target = beingManager->findNearestLivingBeing(targetX, targetY, + 20, Being::MONSTER); } player_node->attack(target, newTarget); } +#endif - // Target the nearest player if 'q' is pressed - if ( keyboard.isKeyActive(keyboard.KEY_TARGET_PLAYER) && - !keyboard.isKeyActive(keyboard.KEY_TARGET) ) - { - Being *target = beingManager->findNearestLivingBeing(player_node, - 20, Being::PLAYER); - - player_node->setTarget(target); - } - - // Target the nearest monster if 'a' pressed - if ((keyboard.isKeyActive(keyboard.KEY_TARGET_CLOSEST) || - (joystick && joystick->buttonPressed(3))) && - !keyboard.isKeyActive(keyboard.KEY_TARGET)) + // Target the nearest player/monster/npc + if ((keyboard.isKeyActive(keyboard.KEY_TARGET_PLAYER) || + keyboard.isKeyActive(keyboard.KEY_TARGET_CLOSEST) || + keyboard.isKeyActive(keyboard.KEY_TARGET_NPC) || + (joystick && joystick->buttonPressed(3))) && + !keyboard.isKeyActive(keyboard.KEY_TARGET)) { - Being *target = beingManager->findNearestLivingBeing( - x, y, 20, Being::MONSTER); - - player_node->setTarget(target); - } + Being::Type currentTarget = Being::UNKNOWN; + if (keyboard.isKeyActive(keyboard.KEY_TARGET_CLOSEST) || + (joystick && joystick->buttonPressed(3))) + currentTarget = Being::MONSTER; + else if (keyboard.isKeyActive(keyboard.KEY_TARGET_PLAYER)) + currentTarget = Being::PLAYER; + else if (keyboard.isKeyActive(keyboard.KEY_TARGET_NPC)) + currentTarget = Being::NPC; - // Target the nearest npc if 'n' pressed - if ( keyboard.isKeyActive(keyboard.KEY_TARGET_NPC) && - !keyboard.isKeyActive(keyboard.KEY_TARGET) ) - { - Being *target = beingManager->findNearestLivingBeing( - x, y, 20, Being::NPC); + Being *target = beingManager->findNearestLivingBeing(player_node, + 20, currentTarget); - player_node->setTarget(target); - } + if (target && (target != player_node->getTarget() || + currentTarget != mLastTarget)) + { + player_node->setTarget(target); + mLastTarget = currentTarget; + } + } else mLastTarget = Being::UNKNOWN; // Reset last target // Talk to the nearest NPC if 't' pressed if ( keyboard.isKeyActive(keyboard.KEY_TALK) ) @@ -914,12 +1132,6 @@ void Game::handleInput() { Being *target = player_node->getTarget(); - if (!target) - { - target = beingManager->findNearestLivingBeing( - x, y, 20, Being::NPC); - } - if (target) { if (target->getType() == Being::NPC) @@ -928,11 +1140,13 @@ void Game::handleInput() } } +#ifdef EATHENA_SUPPORT // Stop attacking if shift is pressed if (keyboard.isKeyActive(keyboard.KEY_TARGET)) { player_node->stopAttack(); } +#endif if (joystick) { @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,10 +24,14 @@ #include <memory> +#include "SDL.h" + #include "configlistener.h" class MessageHandler; +#ifdef EATHENA_SUPPORT class Network; +#endif extern std::string map_path; extern volatile int fps; @@ -37,7 +40,11 @@ extern volatile int tick_time; class Game : public ConfigListener { public: +#ifdef TMWSERV_SUPPORT + Game(); +#else Game(Network *network); +#endif ~Game(); void logic(); @@ -47,7 +54,9 @@ class Game : public ConfigListener void optionChanged(const std::string &name); private: +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif /** Used to determine whether to draw the next frame. */ int mDrawTime; @@ -57,15 +66,27 @@ class Game : public ConfigListener typedef const std::auto_ptr<MessageHandler> MessageHandlerPtr; MessageHandlerPtr mBeingHandler; +#ifdef TMWSERV_SUPPORT + MessageHandlerPtr mGuildHandler; + MessageHandlerPtr mPartyHandler; + MessageHandlerPtr mEffectHandler; +#else + MessageHandlerPtr mEquipmentHandler; + MessageHandlerPtr mSkillHandler; +#endif MessageHandlerPtr mBuySellHandler; MessageHandlerPtr mChatHandler; - MessageHandlerPtr mEquipmentHandler; MessageHandlerPtr mInventoryHandler; MessageHandlerPtr mItemHandler; MessageHandlerPtr mNpcHandler; MessageHandlerPtr mPlayerHandler; - MessageHandlerPtr mSkillHandler; + MessageHandlerPtr mPostHandler; MessageHandlerPtr mTradeHandler; + + int mLastTarget; + + SDL_TimerID mLogicCounterId; + SDL_TimerID mSecondsCounterId; }; /** diff --git a/src/graphics.cpp b/src/graphics.cpp index ca86f536..2fbf5e20 100644 --- a/src/graphics.cpp +++ b/src/graphics.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -242,7 +241,7 @@ void Graphics::updateScreen() SDL_Flip(mScreen); } -SDL_Surface* Graphics::getScreenshot() +SDL_Surface *Graphics::getScreenshot() { #if SDL_BYTEORDER == SDL_BIG_ENDIAN int rmask = 0xff000000; diff --git a/src/graphics.h b/src/graphics.h index ec0b5e9c..2b6ca60e 100644 --- a/src/graphics.h +++ b/src/graphics.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -59,7 +58,7 @@ struct ImageRect RIGHT = 5, LOWER_LEFT = 6, LOWER_CENTER = 7, - LOWER_RIGHT = 8, + LOWER_RIGHT = 8 }; Image *grid[9]; diff --git a/src/gui/browserbox.cpp b/src/gui/browserbox.cpp index 46c8bdf1..2f667237 100644 --- a/src/gui/browserbox.cpp +++ b/src/gui/browserbox.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -419,4 +418,3 @@ void BrowserBox::draw(gcn::Graphics *graphics) setHeight((mTextRows.size() + wrappedLines) * font->getHeight()); } } - diff --git a/src/gui/browserbox.h b/src/gui/browserbox.h index 500c9fba..090c03e1 100644 --- a/src/gui/browserbox.h +++ b/src/gui/browserbox.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -163,4 +162,3 @@ class BrowserBox : public gcn::Widget, public gcn::MouseListener }; #endif - diff --git a/src/gui/buddywindow.cpp b/src/gui/buddywindow.cpp new file mode 100644 index 00000000..37301c86 --- /dev/null +++ b/src/gui/buddywindow.cpp @@ -0,0 +1,68 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "buddywindow.h" +#include "chat.h" +#include "icon.h" + +#include "widgets/avatar.h" + +#include "../resources/resourcemanager.h" +#include "../utils/gettext.h" + +extern ChatWindow *chatWindow; + +BuddyWindow::BuddyWindow(): + Window(_("Buddy")) +{ + setVisible(false); + setWindowName("Buddy Window"); + setCaption(_("Buddy List")); + setResizable(true); + setCloseButton(true); + setMinWidth(110); + setMinHeight(200); + setDefaultSize(124, 41, 288, 330); + + Image *addImg = ResourceManager::getInstance()->getImage("buddyadd.png"); + Image *delImg = ResourceManager::getInstance()->getImage("buddydel.png"); + + if (addImg && delImg) + { + Icon *addBuddy = new Icon(addImg); + Icon *delBuddy = new Icon(delImg); + + add(addBuddy); + add(delBuddy); + } + + loadWindowState(); +} + +void BuddyWindow::action(const gcn::ActionEvent &event) +{ + +} + +void BuddyWindow::draw(gcn::Graphics *graphics) +{ + Window::draw(graphics); +} diff --git a/src/gui/buddywindow.h b/src/gui/buddywindow.h new file mode 100644 index 00000000..aa654477 --- /dev/null +++ b/src/gui/buddywindow.h @@ -0,0 +1,60 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef BUDDYWINDOW_H +#define BUDDYWINDOW_H + +#include <guichan/actionlistener.hpp> +#include <guichan/actionevent.hpp> + +#include "window.h" + +class Avatar; + +/** + * Window showing buddy list. + * + * \ingroup Interface + */ +class BuddyWindow : public Window, public gcn::ActionListener +{ + public: + /** + * Constructor. + */ + BuddyWindow(); + + /** + * Performs action. + */ + void action(const gcn::ActionEvent &event); + + /** + * Draws the window + */ + void draw(gcn::Graphics *graphics); + + + private: + std::list<Avatar*> mBuddyList; +}; + +#endif /* BUDDYWINDOW_H */ diff --git a/src/gui/button.cpp b/src/gui/button.cpp index 16a2853c..28b7c0d7 100644 --- a/src/gui/button.cpp +++ b/src/gui/button.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -67,7 +66,7 @@ Button::Button(): init(); } -Button::Button(const std::string& caption, const std::string &actionEventId, +Button::Button(const std::string &caption, const std::string &actionEventId, gcn::ActionListener *listener): gcn::Button(caption), mIsLogged(false) diff --git a/src/gui/button.h b/src/gui/button.h index f21d2661..abaf5c43 100644 --- a/src/gui/button.h +++ b/src/gui/button.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/buy.cpp b/src/gui/buy.cpp index 43c423f1..6df2ae25 100644 --- a/src/gui/buy.cpp +++ b/src/gui/buy.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,29 +19,45 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "button.h" -#include "buy.h" -#include "label.h" -#include "scrollarea.h" -#include "shop.h" -#include "shoplistbox.h" -#include "slider.h" +#include "gui/buy.h" -#include "widgets/layout.h" +#include "gui/button.h" +#include "gui/label.h" +#include "gui/scrollarea.h" +#include "gui/shop.h" +#include "gui/shoplistbox.h" +#include "gui/slider.h" -#include "../npc.h" +#include "gui/widgets/layout.h" -#include "../net/messageout.h" -#include "../net/protocol.h" +#include "npc.h" +#include "shopitem.h" +#include "units.h" -#include "../utils/gettext.h" -#include "../utils/strprintf.h" +#ifdef TMWSERV_SUPPORT +#include "net/tmwserv/gameserver/player.h" +#else +#include "net/messageout.h" +#include "net/ea/protocol.h" +#endif +#include "resources/iteminfo.h" + +#include "utils/gettext.h" +#include "utils/strprintf.h" + +#ifdef TMWSERV_SUPPORT +BuyDialog::BuyDialog(): +#else BuyDialog::BuyDialog(Network *network): - Window("Buy"), mNetwork(network), +#endif + Window(_("Buy")), +#ifndef TMWSERV_SUPPORT + mNetwork(network), +#endif mMoney(0), mAmountItems(0), mMaxItems(0) { - setWindowName(_("Buy")); + setWindowName("Buy"); setResizable(true); setCloseButton(true); setMinWidth(260); @@ -56,10 +71,10 @@ BuyDialog::BuyDialog(Network *network): mScrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); mSlider = new Slider(1.0); - mQuantityLabel = new Label(strprintf("%d / %d", mAmountItems, mMaxItems)); mQuantityLabel->setAlignment(gcn::Graphics::CENTER); - mMoneyLabel = new Label(strprintf(_("Price: %d GP / Total: %d GP"), 0, 0)); + mMoneyLabel = new gcn::Label(strprintf(_("Price: %s / Total: %s"), + "", "")); mIncreaseButton = new Button("+", "+", this); mDecreaseButton = new Button("-", "-", this); @@ -99,6 +114,7 @@ BuyDialog::BuyDialog(Network *network): Layout &layout = getLayout(); layout.setRowHeight(0, Layout::AUTO_SET); + center(); loadWindowState(); } @@ -127,9 +143,9 @@ void BuyDialog::reset() setMoney(0); } -void BuyDialog::addItem(int id, int price) +void BuyDialog::addItem(int id, int amount, int price) { - mShopItems->addItem(id, price); + mShopItems->addItem(id, amount, price); mShopItemList->adjustSize(); } @@ -179,11 +195,16 @@ void BuyDialog::action(const gcn::ActionEvent &event) else if (event.getId() == "buy" && mAmountItems > 0 && mAmountItems <= mMaxItems) { +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::tradeWithNPC + (mShopItems->at(selectedItem)->getId(), mAmountItems); +#else MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_NPC_BUY_REQUEST); outMsg.writeInt16(8); outMsg.writeInt16(mAmountItems); outMsg.writeInt16(mShopItems->at(selectedItem)->getId()); +#endif // Update money and adjust the max number of items that can be bought mMaxItems -= mAmountItems; @@ -250,7 +271,16 @@ void BuyDialog::updateButtonsAndLabels() // Update quantity and money labels mQuantityLabel->setCaption(strprintf("%d / %d", mAmountItems, mMaxItems)); mMoneyLabel->setCaption - (strprintf(_("Price: %d GP / Total: %d GP"), price, mMoney - price)); + (strprintf(_("Price: %s / Total: %s"), + Units::formatCurrency(price).c_str(), + Units::formatCurrency(mMoney - price).c_str())); +} + +void BuyDialog::logic() +{ + Window::logic(); + + if (!current_npc) setVisible(false); } void BuyDialog::setVisible(bool visible) diff --git a/src/gui/buy.h b/src/gui/buy.h index ffd3f5c9..200394b9 100644 --- a/src/gui/buy.h +++ b/src/gui/buy.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,11 +25,13 @@ #include <guichan/actionlistener.hpp> #include <guichan/selectionlistener.hpp> -#include <SDL_types.h> - #include "window.h" +#include "../guichanfwd.h" + +#ifndef TMWSERV_SUPPORT class Network; +#endif class ShopItems; class ShopListBox; class ListBox; @@ -49,7 +50,11 @@ class BuyDialog : public Window, public gcn::ActionListener, * * @see Window::Window */ +#ifdef TMWSERV_SUPPORT + BuyDialog(); +#else BuyDialog(Network *network); +#endif /** * Destructor @@ -69,7 +74,7 @@ class BuyDialog : public Window, public gcn::ActionListener, /** * Adds an item to the shop inventory. */ - void addItem(int id, int price); + void addItem(int id, int amount, int price); /** * Called when receiving actions from the widgets. @@ -97,6 +102,11 @@ class BuyDialog : public Window, public gcn::ActionListener, void updateButtonsAndLabels(); /** + * Check for current NPC + */ + void logic(); + + /** * Sets the visibility of this window. */ void setVisible(bool visible); @@ -106,7 +116,9 @@ class BuyDialog : public Window, public gcn::ActionListener, */ void close(); private: +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif gcn::Button *mBuyButton; gcn::Button *mQuitButton; gcn::Button *mAddMaxButton; @@ -122,9 +134,9 @@ class BuyDialog : public Window, public gcn::ActionListener, ShopItems *mShopItems; - Uint32 mMoney; - Uint32 mAmountItems; - Uint32 mMaxItems; + int mMoney; + int mAmountItems; + int mMaxItems; }; extern BuyDialog *buyDialog; diff --git a/src/gui/buysell.cpp b/src/gui/buysell.cpp index df222797..b9a6a1dc 100644 --- a/src/gui/buysell.cpp +++ b/src/gui/buysell.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,7 +25,9 @@ #include "../npc.h" #include "../net/messageout.h" -#include "../net/protocol.h" +#ifdef EATHENA_SUPPORT +#include "../net/ea/protocol.h" +#endif #include "../utils/gettext.h" @@ -43,16 +44,18 @@ BuySellDialog::BuySellDialog(Network *network): for (const char **curBtn = buttonNames; *curBtn; curBtn++) { Button *btn = new Button(gettext(*curBtn), *curBtn, this); - if (!buyButton) buyButton = btn; // For focus request + if (!buyButton) + buyButton = btn; // For focus request btn->setPosition(x, y); add(btn); x += btn->getWidth() + 10; } buyButton->requestFocus(); - setDefaultSize(x + getPadding(), (2 * y + buyButton->getHeight() + - getTitleBarHeight()), ImageRect::CENTER); + setContentSize(x, 2 * y + buyButton->getHeight()); + center(); + setDefaultSize(); loadWindowState(); } @@ -77,7 +80,7 @@ void BuySellDialog::action(const gcn::ActionEvent &event) setVisible(false); int action = 0; - NPC::mTalking = false; + NPC::isTalking = false; if (event.getId() == "Buy") { @@ -93,8 +96,10 @@ void BuySellDialog::action(const gcn::ActionEvent &event) return; } +#ifdef EATHENA_SUPPORT MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_NPC_BUY_SELL_REQUEST); outMsg.writeInt32(current_npc); outMsg.writeInt8(action); +#endif } diff --git a/src/gui/buysell.h b/src/gui/buysell.h index c6989709..4b137554 100644 --- a/src/gui/buysell.h +++ b/src/gui/buysell.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -46,8 +45,6 @@ class BuySellDialog : public Window, public gcn::ActionListener BuySellDialog(Network *network); /** -<<<<<<< HEAD:src/gui/buysell.h -======= * Check for current NPC */ void logic(); @@ -55,7 +52,6 @@ class BuySellDialog : public Window, public gcn::ActionListener void setVisible(bool visible); /** ->>>>>>> f64903f... Fix up the NPC interraction widnows a bit:src/gui/buysell.h * Called when receiving actions from the widgets. */ void action(const gcn::ActionEvent &event); diff --git a/src/gui/changeemaildialog.cpp b/src/gui/changeemaildialog.cpp new file mode 100644 index 00000000..0ed95bd7 --- /dev/null +++ b/src/gui/changeemaildialog.cpp @@ -0,0 +1,167 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "changeemaildialog.h" + +#include <string> +#include <sstream> + +#include <guichan/widgets/label.hpp> + +#include "../main.h" +#include "../log.h" +#include "../logindata.h" + +#include "button.h" +#include "register.h" +#include "textfield.h" +#include "ok_dialog.h" + +#include "../utils/gettext.h" +#include "../utils/strprintf.h" + +ChangeEmailDialog::ChangeEmailDialog(Window *parent, LoginData *loginData): + Window(_("Change Email Address"), true, parent), + mWrongDataNoticeListener(new WrongDataNoticeListener()), + mLoginData(loginData) +{ + gcn::Label *accountLabel = new gcn::Label(strprintf(_("Account: %s"), + mLoginData->username.c_str())); + gcn::Label *newEmailLabel = new gcn::Label(_("Type New Email Address twice:")); + mFirstEmailField = new TextField(); + mSecondEmailField = new TextField(); + mChangeEmailButton = new Button(_("Change Email Address"), "change_email", this); + mCancelButton = new Button(_("Cancel"), "cancel", this); + + const int width = 200; + const int height = 130; + setContentSize(width, height); + + accountLabel->setPosition(5, 5); + accountLabel->setWidth(130); + + newEmailLabel->setPosition( + 5, accountLabel->getY() + accountLabel->getHeight() + 7); + newEmailLabel->setWidth(width - 5); + + mFirstEmailField->setPosition( + 5, newEmailLabel->getY() + newEmailLabel->getHeight() + 7); + mFirstEmailField->setWidth(130); + + mSecondEmailField->setPosition( + 5, mFirstEmailField->getY() + mFirstEmailField->getHeight() + 7); + mSecondEmailField->setWidth(130); + + mCancelButton->setPosition( + width - 5 - mCancelButton->getWidth(), + height - 5 - mCancelButton->getHeight()); + mChangeEmailButton->setPosition( + mCancelButton->getX() - 5 - mChangeEmailButton->getWidth(), + mCancelButton->getY()); + + add(accountLabel); + add(newEmailLabel); + add(mFirstEmailField); + add(mSecondEmailField); + add(mChangeEmailButton); + add(mCancelButton); + + setLocationRelativeTo(getParent()); + setVisible(true); + mFirstEmailField->requestFocus(); + + mFirstEmailField->setActionEventId("change_email"); + mSecondEmailField->setActionEventId("change_email"); +} + +ChangeEmailDialog::~ChangeEmailDialog() +{ + delete mWrongDataNoticeListener; +} + +void +ChangeEmailDialog::action(const gcn::ActionEvent &event) +{ + if (event.getId() == "cancel") + { + scheduleDelete(); + } + else if (event.getId() == "change_email") + { + + const std::string username = mLoginData->username.c_str(); + const std::string newFirstEmail = mFirstEmailField->getText(); + const std::string newSecondEmail = mSecondEmailField->getText(); + logger->log("ChangeEmailDialog::Email change, Username is %s", + username.c_str()); + + std::stringstream errorMsg; + int error = 0; + + if (newFirstEmail.length() < LEN_MIN_PASSWORD) + { + // First email address too short + errorMsg << "The new email address needs to be at least " + << LEN_MIN_PASSWORD + << " characters long."; + error = 1; + } + else if (newFirstEmail.length() > LEN_MAX_PASSWORD - 1 ) + { + // First email address too long + errorMsg << "The new email address needs to be less than " + << LEN_MAX_PASSWORD + << " characters long."; + error = 1; + } + else if (newFirstEmail != newSecondEmail) + { + // Second Pass mismatch + errorMsg << "The email address entries mismatch."; + error = 2; + } + + if (error > 0) + { + if (error == 1) + { + mWrongDataNoticeListener->setTarget(this->mFirstEmailField); + } + else if (error == 2) + { + mWrongDataNoticeListener->setTarget(this->mSecondEmailField); + } + + OkDialog *dlg = new OkDialog("Error", errorMsg.str()); + dlg->addActionListener(mWrongDataNoticeListener); + } + else + { + // No errors detected, change account password. + mChangeEmailButton->setEnabled(false); + // Set the new email address + mLoginData->newEmail = newFirstEmail; + state = STATE_CHANGEEMAIL_ATTEMPT; + scheduleDelete(); + } + + } +} diff --git a/src/gui/changeemaildialog.h b/src/gui/changeemaildialog.h new file mode 100644 index 00000000..145c54b1 --- /dev/null +++ b/src/gui/changeemaildialog.h @@ -0,0 +1,72 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef GUI_CHANGEEMAIL_H +#define GUI_CHANGEEMAIL_H + +#include <iosfwd> +#include <guichan/actionlistener.hpp> + +#include "window.h" +#include "../guichanfwd.h" + +class LoginData; +class OkDialog; +class WrongDataNoticeListener; + +/** + * The Change email dialog. + * + * \ingroup Interface + */ +class ChangeEmailDialog : public Window, public gcn::ActionListener +{ + public: + /** + * Constructor. + * + * @see Window::Window + */ + ChangeEmailDialog(Window *parent, LoginData *loginData); + + /** + * Destructor. + */ + ~ChangeEmailDialog(); + + /** + * Called when receiving actions from the widgets. + */ + void action(const gcn::ActionEvent &event); + + private: + gcn::TextField *mFirstEmailField; + gcn::TextField *mSecondEmailField; + + gcn::Button *mChangeEmailButton; + gcn::Button *mCancelButton; + + WrongDataNoticeListener *mWrongDataNoticeListener; + + LoginData *mLoginData; +}; + +#endif // GUI_CHANGEEMAIL_H diff --git a/src/gui/changepassworddialog.cpp b/src/gui/changepassworddialog.cpp new file mode 100644 index 00000000..7c1e5bcd --- /dev/null +++ b/src/gui/changepassworddialog.cpp @@ -0,0 +1,193 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "changepassworddialog.h" + +#include <string> +#include <sstream> + +#include <guichan/widgets/label.hpp> + +#include "../main.h" +#include "../log.h" +#include "../logindata.h" + +#include "button.h" +#include "register.h" +#include "passwordfield.h" +#include "textfield.h" +#include "ok_dialog.h" + +#include "../utils/gettext.h" +#include "../utils/strprintf.h" + +ChangePasswordDialog::ChangePasswordDialog(Window *parent, LoginData *loginData): + Window(_("Change Password"), true, parent), + mWrongDataNoticeListener(new WrongDataNoticeListener()), + mLoginData(loginData) +{ + gcn::Label *accountLabel = new gcn::Label(strprintf(_("Account: %s"), + mLoginData->username.c_str())); + gcn::Label *oldPassLabel = new gcn::Label(_("Password:")); + mOldPassField = new PasswordField(); + gcn::Label *newPassLabel = new gcn::Label(_("Type New Password twice:")); + mFirstPassField = new PasswordField(); + mSecondPassField = new PasswordField(); + mChangePassButton = new Button(_("Change Password"), "change_password", this); + mCancelButton = new Button(_("Cancel"), "cancel", this); + + const int width = 200; + const int height = 170; + setContentSize(width, height); + + accountLabel->setPosition(5, 5); + accountLabel->setWidth(130); + oldPassLabel->setPosition( + 5, accountLabel->getY() + accountLabel->getHeight() + 7); + oldPassLabel->setWidth(130); + + mOldPassField->setPosition( + 5, oldPassLabel->getY() + oldPassLabel->getHeight() + 7); + mOldPassField->setWidth(130); + + newPassLabel->setPosition( + 5, mOldPassField->getY() + mOldPassField->getHeight() + 7); + newPassLabel->setWidth(width - 5); + + mFirstPassField->setPosition( + 5, newPassLabel->getY() + newPassLabel->getHeight() + 7); + mFirstPassField->setWidth(130); + + mSecondPassField->setPosition( + 5, mFirstPassField->getY() + mFirstPassField->getHeight() + 7); + mSecondPassField->setWidth(130); + + mCancelButton->setPosition( + width - 5 - mCancelButton->getWidth(), + height - 5 - mCancelButton->getHeight()); + mChangePassButton->setPosition( + mCancelButton->getX() - 5 - mChangePassButton->getWidth(), + mCancelButton->getY()); + + add(accountLabel); + add(oldPassLabel); + add(mOldPassField); + add(newPassLabel); + add(mFirstPassField); + add(mSecondPassField); + add(mChangePassButton); + add(mCancelButton); + + setLocationRelativeTo(getParent()); + setVisible(true); + mOldPassField->requestFocus(); + + mOldPassField->setActionEventId("change_password"); + mFirstPassField->setActionEventId("change_password"); + mSecondPassField->setActionEventId("change_password"); +} + +ChangePasswordDialog::~ChangePasswordDialog() +{ + delete mWrongDataNoticeListener; +} + +void +ChangePasswordDialog::action(const gcn::ActionEvent &event) +{ + if (event.getId() == "cancel") + { + scheduleDelete(); + } + else if (event.getId() == "change_password") + { + + const std::string username = mLoginData->username.c_str(); + const std::string oldPassword = mOldPassField->getText(); + const std::string newFirstPass = mFirstPassField->getText(); + const std::string newSecondPass = mSecondPassField->getText(); + logger->log("ChangePasswordDialog::Password change, Username is %s", + username.c_str()); + + std::stringstream errorMsg; + int error = 0; + + // Check old Password + if (oldPassword.empty()) + { + // No old password + errorMsg << "Enter the old Password first."; + error = 1; + } + else if (newFirstPass.length() < LEN_MIN_PASSWORD) + { + // First password too short + errorMsg << "The new password needs to be at least " + << LEN_MIN_PASSWORD + << " characters long."; + error = 2; + } + else if (newFirstPass.length() > LEN_MAX_PASSWORD - 1 ) + { + // First password too long + errorMsg << "The new password needs to be less than " + << LEN_MAX_PASSWORD + << " characters long."; + error = 2; + } + else if (newFirstPass != newSecondPass) + { + // Second Pass mismatch + errorMsg << "The new password entries mismatch."; + error = 3; + } + + if (error > 0) + { + if (error == 1) + { + mWrongDataNoticeListener->setTarget(this->mOldPassField); + } + else if (error == 2) + { + mWrongDataNoticeListener->setTarget(this->mFirstPassField); + } + else if (error == 3) + { + mWrongDataNoticeListener->setTarget(this->mSecondPassField); + } + + OkDialog *dlg = new OkDialog("Error", errorMsg.str()); + dlg->addActionListener(mWrongDataNoticeListener); + } + else + { + // No errors detected, change account password. + mChangePassButton->setEnabled(false); + // Set the new password + mLoginData->password = oldPassword; + mLoginData->newPassword = newFirstPass; + state = STATE_CHANGEPASSWORD_ATTEMPT; + scheduleDelete(); + } + + } +} diff --git a/src/gui/changepassworddialog.h b/src/gui/changepassworddialog.h new file mode 100644 index 00000000..ad1c0b2a --- /dev/null +++ b/src/gui/changepassworddialog.h @@ -0,0 +1,72 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CHANGEPASSWORDDIALOG_H +#define CHANGEPASSWORDDIALOG_H + +#include <iosfwd> +#include <guichan/actionlistener.hpp> + +#include "window.h" +#include "../guichanfwd.h" + +class LoginData; +class OkDialog; +class WrongDataNoticeListener; + +/** + * The Change password dialog. + * + * \ingroup Interface + */ +class ChangePasswordDialog : public Window, public gcn::ActionListener { + public: + /** + * Constructor + * + * @see Window::Window + */ + ChangePasswordDialog(Window *parent,LoginData *loginData); + + /** + * Destructor + */ + ~ChangePasswordDialog(); + + /** + * Called when receiving actions from the widgets. + */ + void action(const gcn::ActionEvent &event); + + private: + gcn::TextField *mOldPassField; + gcn::TextField *mFirstPassField; + gcn::TextField *mSecondPassField; + + gcn::Button *mChangePassButton; + gcn::Button *mCancelButton; + + WrongDataNoticeListener *mWrongDataNoticeListener; + + LoginData *mLoginData; +}; + +#endif diff --git a/src/gui/char_select.cpp b/src/gui/char_select.cpp index f88736c1..4ab3d9ef 100644 --- a/src/gui/char_select.cpp +++ b/src/gui/char_select.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,13 +31,29 @@ #include "playerbox.h" #include "textfield.h" +#ifdef TMWSERV_SUPPORT +#include "radiobutton.h" +#include "slider.h" + +#include "unregisterdialog.h" +#include "changepassworddialog.h" +#include "changeemaildialog.h" + +#include "../logindata.h" + +#include "../net/tmwserv/accountserver/account.h" +#include "../net/tmwserv/charserverhandler.h" +#else +#include "../net/ea/charserverhandler.h" +#endif + #include "widgets/layout.h" #include "../game.h" #include "../localplayer.h" #include "../main.h" +#include "../units.h" -#include "../net/charserverhandler.h" #include "../net/messageout.h" #include "../resources/colordb.h" @@ -47,6 +62,8 @@ #include "../utils/strprintf.h" #include "../utils/stringutils.h" +#define MAX_SLOT 2 + // Defined in main.cpp, used here for setting the char create dialog extern CharServerHandler charServerHandler; @@ -79,30 +96,80 @@ void CharDeleteConfirm::action(const gcn::ActionEvent &event) ConfirmDialog::action(event); } +#ifdef TMWSERV_SUPPORT +CharSelectDialog::CharSelectDialog(LockedArray<LocalPlayer*> *charInfo, + LoginData *loginData): + Window(_("Account and Character Management")), + mCharInfo(charInfo), mCharSelected(false), mLoginData(loginData) +#else CharSelectDialog::CharSelectDialog(Network *network, LockedArray<LocalPlayer*> *charInfo, Gender gender): Window(_("Select Character")), mNetwork(network), - mCharInfo(charInfo), mGender(gender), mCharSelected(false) + mCharInfo(charInfo), + mCharSelected(false), + mGender(gender) +#endif { + mSelectButton = new Button(_("Ok"), "ok", this); + mCancelButton = new Button(_("Cancel"), "cancel", this); + mPreviousButton = new Button(_("Previous"), "previous", this); + mNextButton = new Button(_("Next"), "next", this); + mNameLabel = new Label(strprintf(_("Name: %s"), "")); + mLevelLabel = new Label(strprintf(_("Level: %d"), 0)); +#ifdef TMWSERV_SUPPORT + mNewCharButton = new Button(_("New"), "new", this); + mDelCharButton = new Button(_("Delete"), "delete", this); + mUnRegisterButton = new Button(_("Unregister"), "unregister", this); + mChangePasswordButton = new Button(_("Change Password"), "change_password", this); + mChangeEmailButton = new Button(_("Change Email Address"), "change_email", this); + + mAccountNameLabel = new Label(strprintf(_("Account: %s"), mLoginData->username.c_str())); + mNameLabel = new Label(strprintf(_("Name: %s"), "")); + mLevelLabel = new Label(strprintf(_("Level: %d"), 0)); + mMoneyLabel = new Label(strprintf(_("Money: %d"), 0)); + + // Control that shows the Player + mPlayerBox = new PlayerBox; + mPlayerBox->setWidth(74); + + ContainerPlacer place; + place = getPlacer(0, 0); + place(0, 0, mAccountNameLabel); + place(0, 1, mUnRegisterButton); + place(0, 2, mChangePasswordButton); + place(1, 2, mChangeEmailButton); + place = getPlacer(0, 1); + place(0, 0, mPlayerBox, 1, 5).setPadding(3); + place(1, 0, mNameLabel, 3); + place(1, 1, mLevelLabel, 3); + place(1, 2, mMoneyLabel, 3); + place(1, 3, mPreviousButton); + place(2, 3, mNextButton); + place(1, 4, mNewCharButton); + place(2, 4, mDelCharButton); + place.getCell().matchColWidth(1, 2); + place = getPlacer(0, 2); + place(0, 0, mSelectButton); + place(1, 0, mCancelButton); + reflowLayout(265, 0); +#else + mCharInfo->select(0); + LocalPlayer *pi = mCharInfo->getEntry(); + if (pi) + mMoney = Units::formatCurrency(pi->getMoney()); // Control that shows the Player mPlayerBox = new PlayerBox; mPlayerBox->setWidth(74); - mNameLabel = new Label(strprintf(_("Name: %s"), "")); - mLevelLabel = new Label(strprintf(_("Level: %d"), 0)); mJobLevelLabel = new Label(strprintf(_("Job Level: %d"), 0)); - mMoneyLabel = new Label(strprintf(_("Money: %d"), 0)); + mMoneyLabel = new Label(strprintf(_("Money: %s"), mMoney.c_str())); const std::string tempString = getFont()->getWidth(_("New")) < getFont()->getWidth(_("Delete")) ? _("Delete") : _("New"); - mPreviousButton = new Button(_("Previous"), "previous", this); - mNextButton = new Button(_("Next"), "next", this); mNewDelCharButton = new Button(tempString, "newdel", this); - mSelectButton = new Button(_("Ok"), "ok", this); - mCancelButton = new Button(_("Cancel"), "cancel", this); ContainerPlacer place; place = getPlacer(0, 0); @@ -121,8 +188,9 @@ CharSelectDialog::CharSelectDialog(Network *network, place(5, 0, mSelectButton); reflowLayout(250, 0); +#endif - setLocationRelativeTo(getParent()); + center(); setVisible(true); mSelectButton->requestFocus(); updatePlayerInfo(); @@ -130,10 +198,21 @@ CharSelectDialog::CharSelectDialog(Network *network, void CharSelectDialog::action(const gcn::ActionEvent &event) { +#ifdef TMWSERV_SUPPORT + // The pointers are set to NULL if there is no character stored + if (event.getId() == "ok" && (mCharInfo->getEntry())) +#else if (event.getId() == "ok" && n_character > 0) +#endif { // Start game +#ifdef TMWSERV_SUPPORT + mNewCharButton->setEnabled(false); + mDelCharButton->setEnabled(false); + mUnRegisterButton->setEnabled(false); +#else mNewDelCharButton->setEnabled(false); +#endif mSelectButton->setEnabled(false); mPreviousButton->setEnabled(false); mNextButton->setEnabled(false); @@ -142,8 +221,35 @@ void CharSelectDialog::action(const gcn::ActionEvent &event) } else if (event.getId() == "cancel") { - state = EXIT_STATE; +#ifdef TMWSERV_SUPPORT + mCharInfo->clear(); + state = STATE_SWITCH_ACCOUNTSERVER_ATTEMPT; +#else + state = STATE_EXIT; +#endif + } +#ifdef TMWSERV_SUPPORT + else if (event.getId() == "new") + { + // TODO: Search the first free slot, and start CharCreateDialog + // maybe add that search to the constructor. + if (!(mCharInfo->getEntry())) + { + // Start new character dialog + CharCreateDialog *charCreateDialog = + new CharCreateDialog(this, mCharInfo->getPos()); + charServerHandler.setCharCreateDialog(charCreateDialog); + } + } + else if (event.getId() == "delete") + { + // Delete character + if (mCharInfo->getEntry()) + { + new CharDeleteConfirm(this); + } } +#else else if (event.getId() == "newdel") { // Check for a character @@ -160,14 +266,35 @@ void CharSelectDialog::action(const gcn::ActionEvent &event) charServerHandler.setCharCreateDialog(charCreateDialog); } } +#endif else if (event.getId() == "previous") { mCharInfo->prev(); + LocalPlayer *pi = mCharInfo->getEntry(); + if (pi) + mMoney = Units::formatCurrency(pi->getMoney()); } else if (event.getId() == "next") { mCharInfo->next(); + LocalPlayer *pi = mCharInfo->getEntry(); + if (pi) + mMoney = Units::formatCurrency(pi->getMoney()); + } +#ifdef TMWSERV_SUPPORT + else if (event.getId() == "unregister") + { + new UnRegisterDialog(this, mLoginData); + } + else if (event.getId() == "change_password") + { + new ChangePasswordDialog(this, mLoginData); } + else if (event.getId() == "change_email") + { + new ChangeEmailDialog(this, mLoginData); + } +#endif } void CharSelectDialog::updatePlayerInfo() @@ -176,13 +303,22 @@ void CharSelectDialog::updatePlayerInfo() if (pi) { - mNameLabel->setCaption(strprintf(_("Name: %s"), pi->getName().c_str())); - mLevelLabel->setCaption(strprintf(_("Level: %d"), pi->mLevel)); - mJobLevelLabel->setCaption(strprintf(_("Job Level: %d"), pi->mJobLevel)); - mMoneyLabel->setCaption(strprintf(_("Gold: %d"), pi->mGp)); + mNameLabel->setCaption(strprintf(_("Name: %s"), + pi->getName().c_str())); + mLevelLabel->setCaption(strprintf(_("Level: %d"), pi->getLevel())); +#ifndef TMWSERV_SUPPORT + mJobLevelLabel->setCaption(strprintf(_("Job Level: %d"), + pi->mJobLevel)); +#endif + mMoneyLabel->setCaption(strprintf(_("Money: %s"), mMoney.c_str())); if (!mCharSelected) { +#ifdef TMWSERV_SUPPORT + mNewCharButton->setEnabled(false); + mDelCharButton->setEnabled(true); +#else mNewDelCharButton->setCaption(_("Delete")); +#endif mSelectButton->setEnabled(true); } } @@ -190,9 +326,16 @@ void CharSelectDialog::updatePlayerInfo() { mNameLabel->setCaption(strprintf(_("Name: %s"), "")); mLevelLabel->setCaption(strprintf(_("Level: %d"), 0)); +#ifndef TMWSERV_SUPPORT mJobLevelLabel->setCaption(strprintf(_("Job Level: %d"), 0)); +#endif mMoneyLabel->setCaption(strprintf(_("Money: %s"), "")); +#ifdef TMWSERV_SUPPORT + mNewCharButton->setEnabled(true); + mDelCharButton->setEnabled(false); +#else mNewDelCharButton->setCaption(_("New")); +#endif mSelectButton->setEnabled(false); } @@ -201,20 +344,28 @@ void CharSelectDialog::updatePlayerInfo() void CharSelectDialog::attemptCharDelete() { +#ifdef TMWSERV_SUPPORT + Net::AccountServer::Account::deleteCharacter(mCharInfo->getPos()); +#else // Request character deletion MessageOut outMsg(mNetwork); outMsg.writeInt16(0x0068); outMsg.writeInt32(mCharInfo->getEntry()->mCharId); outMsg.writeString("a@a.com", 40); +#endif mCharInfo->lock(); } void CharSelectDialog::attemptCharSelect() { +#ifdef TMWSERV_SUPPORT + Net::AccountServer::Account::selectCharacter(mCharInfo->getPos()); +#else // Request character selection MessageOut outMsg(mNetwork); outMsg.writeInt16(0x0066); outMsg.writeInt8(mCharInfo->getPos()); +#endif mCharInfo->lock(); } @@ -246,16 +397,29 @@ bool CharSelectDialog::selectByName(const std::string &name) return false; } +#ifdef TMWSERV_SUPPORT +CharCreateDialog::CharCreateDialog(Window *parent, int slot): +#else CharCreateDialog::CharCreateDialog(Window *parent, int slot, Network *network, Gender gender): - Window(_("Create Character"), true, parent), mNetwork(network), mSlot(slot) +#endif + Window(_("Create Character"), true, parent), +#ifndef TMWSERV_SUPPORT + mNetwork(network), +#endif + mSlot(slot) { mPlayer = new Player(0, 0, NULL); +#ifdef TMWSERV_SUPPORT + mPlayer->setGender(GENDER_MALE); +#else mPlayer->setGender(gender); +#endif int numberOfHairColors = ColorDB::size(); - mPlayer->setHairStyle(rand() % mPlayer->getNumOfHairstyles(), rand() % numberOfHairColors); + mPlayer->setHairStyle(rand() % mPlayer->getNumOfHairstyles(), + rand() % numberOfHairColors); mNameField = new TextField(""); mNameLabel = new Label(_("Name:")); @@ -267,6 +431,19 @@ CharCreateDialog::CharCreateDialog(Window *parent, int slot, Network *network, mHairStyleLabel = new Label(_("Hair Style:")); mCreateButton = new Button(_("Create"), "create", this); mCancelButton = new Button(_("Cancel"), "cancel", this); +#ifdef TMWSERV_SUPPORT + mMale = new RadioButton(_("Male"), "gender"); + mFemale = new RadioButton(_("Female"), "gender"); + + // Default to a Male character + mMale->setSelected(true); + + mMale->setActionEventId("gender"); + mFemale->setActionEventId("gender"); + + mMale->addActionListener(this); + mFemale->addActionListener(this); +#endif mPlayerBox = new PlayerBox(mPlayer); mPlayerBox->setWidth(74); @@ -274,6 +451,81 @@ CharCreateDialog::CharCreateDialog(Window *parent, int slot, Network *network, mNameField->setActionEventId("create"); mNameField->addActionListener(this); +#ifdef TMWSERV_SUPPORT + mAttributeLabel[0] = new gcn::Label(_("Strength:")); + mAttributeLabel[1] = new gcn::Label(_("Agility:")); + mAttributeLabel[2] = new gcn::Label(_("Dexterity:")); + mAttributeLabel[3] = new gcn::Label(_("Vitality:")); + mAttributeLabel[4] = new gcn::Label(_("Intelligence:")); + mAttributeLabel[5] = new gcn::Label(_("Willpower:")); + for (int i = 0; i < 6; i++) + { + mAttributeLabel[i]->setWidth(70); + mAttributeSlider[i] = new Slider(1, 20); + mAttributeValue[i] = new gcn::Label("1"); + }; + + mAttributesLeft = new gcn::Label(strprintf(_("Please distribute %d points"), 99)); + + int w = 200; + int h = 330; + setContentSize(w, h); + mPlayerBox->setDimension(gcn::Rectangle(80, 30, 110, 85)); + mNameLabel->setPosition(5, 5); + mNameField->setDimension( + gcn::Rectangle(45, 5, w - 45 - 7, mNameField->getHeight())); + mPrevHairColorButton->setPosition(90, 35); + mNextHairColorButton->setPosition(165, 35); + mHairColorLabel->setPosition(5, 40); + mPrevHairStyleButton->setPosition(90, 64); + mNextHairStyleButton->setPosition(165, 64); + mHairStyleLabel->setPosition(5, 70); + for (int i=0; i<6; i++) + { + mAttributeSlider[i]->setValue(10); + mAttributeSlider[i]->setDimension(gcn::Rectangle( 75, 140 + i*20, + 100, 10)); + mAttributeSlider[i]->setActionEventId("statslider"); + mAttributeSlider[i]->addActionListener(this); + mAttributeValue[i]->setPosition(180, 140 + i*20); + mAttributeLabel[i]->setPosition(5, 140 + i*20); + }; + mAttributesLeft->setPosition(15, 280); + updateSliders(); + mCancelButton->setPosition( + w - 5 - mCancelButton->getWidth(), + h - 5 - mCancelButton->getHeight()); + mCreateButton->setPosition( + mCancelButton->getX() - 5 - mCreateButton->getWidth(), + h - 5 - mCancelButton->getHeight()); + + mMale->setPosition(30, 120); + mFemale->setPosition(100, 120); + + add(mPlayerBox); + add(mNameField); + add(mNameLabel); + add(mNextHairColorButton); + add(mPrevHairColorButton); + add(mHairColorLabel); + add(mNextHairStyleButton); + add(mPrevHairStyleButton); + add(mHairStyleLabel); + for (int i = 0; i < 6; i++) + { + add(mAttributeSlider[i]); + add(mAttributeValue[i]); + add(mAttributeLabel[i]); + }; + add(mAttributesLeft); + add(mCreateButton); + add(mCancelButton); + + add(mMale); + add(mFemale); + +#else + ContainerPlacer place; place = getPlacer(0, 0); @@ -292,8 +544,9 @@ CharCreateDialog::CharCreateDialog(Window *parent, int slot, Network *network, place(5, 0, mCreateButton); reflowLayout(225, 0); +#endif - setLocationRelativeTo(getParent()); + center(); setVisible(true); mNameField->requestFocus(); } @@ -315,12 +568,35 @@ void CharCreateDialog::action(const gcn::ActionEvent &event) { // Attempt to create the character mCreateButton->setEnabled(false); +#ifdef TMWSERV_SUPPORT + unsigned int genderSelected; + if (mMale->isSelected()) { + genderSelected = GENDER_MALE; + } else { + genderSelected = GENDER_FEMALE; + } + + Net::AccountServer::Account::createCharacter( + getName(), + mPlayer->getHairStyle(), + mPlayer->getHairColor(), + genderSelected, // gender + (int) mAttributeSlider[0]->getValue(), // STR + (int) mAttributeSlider[1]->getValue(), // AGI + (int) mAttributeSlider[2]->getValue(), // DEX + (int) mAttributeSlider[3]->getValue(), // VIT + (int) mAttributeSlider[4]->getValue(), // INT + (int) mAttributeSlider[5]->getValue() // WILL + ); +#else attemptCharCreate(); +#endif } else { - new OkDialog("Error", - "Your name needs to be at least 4 characters.", this); + new OkDialog(_("Error"), + _("Your name needs to be at least 4 characters."), + this); } } else if (event.getId() == "cancel") @@ -339,6 +615,18 @@ void CharCreateDialog::action(const gcn::ActionEvent &event) mPlayer->setHairStyle(mPlayer->getHairStyle() + mPlayer->getNumOfHairstyles() - 1, mPlayer->getHairColor()); +#ifdef TMWSERV_SUPPORT + else if (event.getId() == "statslider") { + updateSliders(); + } + else if (event.getId() == "gender"){ + if (mMale->isSelected()) { + mPlayer->setGender(GENDER_MALE); + } else { + mPlayer->setGender(GENDER_FEMALE); + } + } +#endif } std::string CharCreateDialog::getName() @@ -348,11 +636,60 @@ std::string CharCreateDialog::getName() return name; } +#ifdef TMWSERV_SUPPORT +void CharCreateDialog::updateSliders() +{ + for (int i = 0; i < 6; i++) + { + // Update captions + mAttributeValue[i]->setCaption( + toString((int) (mAttributeSlider[i]->getValue()))); + mAttributeValue[i]->adjustSize(); + } + + // Update distributed points + int pointsLeft = 60 - getDistributedPoints(); + if (pointsLeft == 0) + { + mAttributesLeft->setCaption(_("Character stats OK")); + mCreateButton->setEnabled(true); + } + else + { + mCreateButton->setEnabled(false); + if (pointsLeft > 0) + { + mAttributesLeft->setCaption(strprintf(_("Please distribute %d points"), pointsLeft)); + } + else + { + mAttributesLeft->setCaption(strprintf(_("Please remove %d points"), -pointsLeft)); + } + } + + mAttributesLeft->adjustSize(); +} +#endif + void CharCreateDialog::unlock() { mCreateButton->setEnabled(true); } +#ifdef TMWSERV_SUPPORT +int CharCreateDialog::getDistributedPoints() +{ + int points = 0; + + for (int i = 0; i < 6; i++) + { + points += (int) mAttributeSlider[i]->getValue(); + } + return points; +} +#endif + +#ifndef TMWSERV_SUPPORT void CharCreateDialog::attemptCharCreate() { // Send character infos @@ -369,3 +706,4 @@ void CharCreateDialog::attemptCharCreate() outMsg.writeInt16(mPlayer->getHairColor()); outMsg.writeInt16(mPlayer->getHairStyle()); } +#endif diff --git a/src/gui/char_select.h b/src/gui/char_select.h index 037b809f..7f376692 100644 --- a/src/gui/char_select.h +++ b/src/gui/char_select.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,10 +27,16 @@ #include "window.h" #include "../being.h" +#include "../guichanfwd.h" #include "../lockedarray.h" -class LocalPlayer; +#ifdef TMWSERV_SUPPORT +#include "../logindata.h" +#else class Network; +#endif + +class LocalPlayer; class Player; class PlayerBox; @@ -47,9 +52,14 @@ class CharSelectDialog : public Window, public gcn::ActionListener /** * Constructor. */ +#ifdef TMWSERV_SUPPORT + CharSelectDialog(LockedArray<LocalPlayer*> *charInfo, + LoginData *loginData); +#else CharSelectDialog(Network *network, LockedArray<LocalPlayer*> *charInfo, Gender gender); +#endif void action(const gcn::ActionEvent &event); @@ -60,25 +70,40 @@ class CharSelectDialog : public Window, public gcn::ActionListener bool selectByName(const std::string &name); private: +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif LockedArray<LocalPlayer*> *mCharInfo; gcn::Button *mSelectButton; gcn::Button *mCancelButton; - gcn::Button *mNewDelCharButton; gcn::Button *mPreviousButton; gcn::Button *mNextButton; gcn::Label *mNameLabel; gcn::Label *mLevelLabel; - gcn::Label *mJobLevelLabel; gcn::Label *mMoneyLabel; + std::string mMoney; PlayerBox *mPlayerBox; - Gender mGender; bool mCharSelected; +#ifdef TMWSERV_SUPPORT + gcn::Button *mNewCharButton; + gcn::Button *mDelCharButton; + gcn::Button *mUnRegisterButton; + gcn::Button *mChangePasswordButton; + gcn::Button *mChangeEmailButton; + gcn::Label *mAccountNameLabel; + + LoginData *mLoginData; +#else + gcn::Button *mNewDelCharButton; + gcn::Label *mJobLevelLabel; + Gender mGender; +#endif + /** * Communicate character deletion to the server. */ @@ -93,7 +118,7 @@ class CharSelectDialog : public Window, public gcn::ActionListener /** * Character creation dialog. * - * \ingroup GUI + * \ingroup Interface */ class CharCreateDialog : public Window, public gcn::ActionListener { @@ -101,8 +126,12 @@ class CharCreateDialog : public Window, public gcn::ActionListener /** * Constructor. */ +#ifdef TMWSERV_SUPPORT + CharCreateDialog(Window *parent, int slot); +#else CharCreateDialog(Window *parent, int slot, Network *network, Gender gender); +#endif /** * Destructor. @@ -117,6 +146,12 @@ class CharCreateDialog : public Window, public gcn::ActionListener void unlock(); private: +#ifdef TMWSERV_SUPPORT + int getDistributedPoints(); + + void updateSliders(); +#endif + /** * Returns the name of the character to create. */ @@ -127,7 +162,9 @@ class CharCreateDialog : public Window, public gcn::ActionListener */ void attemptCharCreate(); +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif gcn::TextField *mNameField; gcn::Label *mNameLabel; gcn::Button *mNextHairColorButton; @@ -136,6 +173,20 @@ class CharCreateDialog : public Window, public gcn::ActionListener gcn::Button *mNextHairStyleButton; gcn::Button *mPrevHairStyleButton; gcn::Label *mHairStyleLabel; + +#ifdef TMWSERV_SUPPORT + gcn::RadioButton *mMale; + gcn::RadioButton *mFemale; + + gcn::Slider *mAttributeSlider[6]; + gcn::Label *mAttributeLabel[6]; + gcn::Label *mAttributeValue[6]; + gcn::Label *mAttributesLeft; + + static const int mMaxPoints = 60; + int mUsedPoints; +#endif + gcn::Button *mCreateButton; gcn::Button *mCancelButton; diff --git a/src/gui/char_server.cpp b/src/gui/char_server.cpp index 6977a104..5cfcef4d 100644 --- a/src/gui/char_server.cpp +++ b/src/gui/char_server.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -51,7 +50,7 @@ ServerSelectDialog::ServerSelectDialog(LoginData *loginData, int nextState): mLoginData(loginData), mNextState(nextState) { - mServerListModel = new ServerListModel(); + mServerListModel = new ServerListModel; mServerList = new ListBox(mServerListModel); ScrollArea *mScrollArea = new ScrollArea(mServerList); mOkButton = new Button(_("OK"), "ok", this); @@ -86,7 +85,7 @@ ServerSelectDialog::ServerSelectDialog(LoginData *loginData, int nextState): // Select first server mServerList->setSelected(1); - setLocationRelativeTo(getParent()); + center(); setVisible(true); mOkButton->requestFocus(); } @@ -108,7 +107,7 @@ void ServerSelectDialog::action(const gcn::ActionEvent &event) state = mNextState; } else if (event.getId() == "cancel") - state = LOGIN_STATE; + state = STATE_LOGIN; } int ServerListModel::getNumberOfElements() diff --git a/src/gui/char_server.h b/src/gui/char_server.h index 207fb86e..49a5b47b 100644 --- a/src/gui/char_server.h +++ b/src/gui/char_server.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 5ff9ed46..7861bdb6 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,68 +19,52 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <guichan/focushandler.hpp> - -#include "browserbox.h" #include "chat.h" -#include "chatinput.h" -#include "itemlinkhandler.h" -#include "recorder.h" -#include "scrollarea.h" -#include "sdlinput.h" -#include "windowcontainer.h" -#include "widgets/layout.h" +#include "gui/chatinput.h" +#include "gui/itemlinkhandler.h" +#include "gui/recorder.h" +#include "gui/scrollarea.h" +#include "gui/sdlinput.h" -#include "../beingmanager.h" -#include "../configuration.h" -#include "../game.h" -#include "../localplayer.h" -#include "../party.h" +#include "gui/widgets/tabbedarea.h" +#include "gui/widgets/whispertab.h" -#include "../net/messageout.h" -#include "../net/protocol.h" +#include "beingmanager.h" +#include "configuration.h" +#include "localplayer.h" -#include "../resources/iteminfo.h" -#include "../resources/itemdb.h" +#include "utils/dtor.h" +#include "utils/stringutils.h" -#include "../utils/gettext.h" -#include "../utils/strprintf.h" -#include "../utils/stringutils.h" +#include <guichan/focushandler.hpp> +#ifdef TMWSERV_SUPPORT +ChatWindow::ChatWindow(): + Window("Chat"), +#else ChatWindow::ChatWindow(Network * network): -Window(""), mNetwork(network), mTmpVisible(false) + Window(""), mNetwork(network), +#endif + mTmpVisible(false) { - setWindowName(_("Chat")); + setWindowName("Chat"); setResizable(true); setDefaultSize(600, 123, ImageRect::LOWER_LEFT); setMinWidth(150); setMinHeight(90); - mItemLinkHandler = new ItemLinkHandler(); + mItemLinkHandler = new ItemLinkHandler; mChatInput = new ChatInput; mChatInput->setActionEventId("chatinput"); mChatInput->addActionListener(this); - mTextOutput = new BrowserBox(BrowserBox::AUTO_WRAP); - mTextOutput->setOpaque(false); - mTextOutput->setMaxRow((int) config.getValue("ChatLogLength", 0)); - mTextOutput->setLinkHandler(mItemLinkHandler); - - mScrollArea = new ScrollArea(mTextOutput); - mScrollArea->setScrollPolicy(gcn::ScrollArea::SHOW_NEVER, - gcn::ScrollArea::SHOW_ALWAYS); - mScrollArea->setScrollAmount(0, 1); - mScrollArea->setOpaque(false); + mChatTabs = new TabbedArea(); - place(0, 0, mScrollArea, 5, 5).setPadding(0); - place(0, 5, mChatInput, 5).setPadding(1); - - Layout &layout = getLayout(); - layout.setRowHeight(0, Layout::AUTO_SET); - layout.setMargin(2); + add(mChatTabs); + add(mChatInput); loadWindowState(); @@ -89,28 +72,33 @@ Window(""), mNetwork(network), mTmpVisible(false) mChatInput->addKeyListener(this); mCurHist = mHistory.end(); +#ifdef EATHENA_SUPPORT // Read the party prefix std::string partyPrefix = config.getValue("PartyPrefix", "$"); mPartyPrefix = (partyPrefix.empty() ? '$' : partyPrefix.at(0)); mReturnToggles = config.getValue("ReturnToggles", "0") == "1"; - mRecorder = new Recorder(this); - mParty = new Party(this, mNetwork); // If the player had @assert on in the last session, ask the server to // run the @assert command for the player again. Convenience for GMs. - if (config.getValue(player_node->getName() + "GMassert", 0)) - chatSend(player_node->getName(), "@assert"); + if (config.getValue(player_node->getName() + "GMassert", 0)) { + std::string cmd = "@assert"; + chatSend(cmd); + } +#endif + mRecorder = new Recorder(this); } ChatWindow::~ChatWindow() { +#ifdef EATHENA_SUPPORT char partyPrefix[2] = "."; *partyPrefix = mPartyPrefix; config.setValue("PartyPrefix", partyPrefix); config.setValue("ReturnToggles", mReturnToggles ? "1" : "0"); delete mRecorder; +#endif + delete_all(mWhispers); delete mItemLinkHandler; - delete mParty; } void ChatWindow::resetToDefaultSize() @@ -119,178 +107,63 @@ void ChatWindow::resetToDefaultSize() Window::resetToDefaultSize(); } -void ChatWindow::chatLog(std::string line, int own, bool ignoreRecord) +void ChatWindow::adjustTabSize() { - // Trim whitespace - trim(line); - - if (line.empty()) - return; - - CHATLOG tmp; - tmp.own = own; - tmp.nick = ""; - tmp.text = line; - - std::string::size_type pos = line.find(" : "); - if (pos != std::string::npos) - { - tmp.nick = line.substr(0, pos); - tmp.text = line.substr(pos + 3); - } - else - { - // Fix the owner of welcome message. - if (line.substr(0, 7) == "Welcome") - { - own = BY_SERVER; - } - } - - // *implements actions in a backwards compatible way* - if (own == BY_PLAYER && - tmp.text.at(0) == '*' && - tmp.text.at(tmp.text.length()-1) == '*') - { - tmp.text[0] = ' '; - tmp.text.erase(tmp.text.length() - 1); - own = ACT_IS; - } + const gcn::Rectangle area = getChildrenArea(); - std::string lineColor = "##C"; - switch (own) - { - case BY_GM: - if (tmp.nick.empty()) - { - tmp.nick = std::string(_("Global announcement: ")); - lineColor = "##G"; - } - else - { - tmp.nick = strprintf(_("Global announcement from %s: "), - tmp.nick.c_str()); - lineColor = "##1"; // Equiv. to BrowserBox::RED - } - break; - case BY_PLAYER: - tmp.nick += CAT_NORMAL; - lineColor = "##Y"; - break; - case BY_OTHER: - tmp.nick += CAT_NORMAL; - lineColor = "##C"; - break; - case BY_SERVER: - tmp.nick = _("Server:"); - tmp.nick += " "; - tmp.text = line; - lineColor = "##S"; - break; - case BY_PARTY: - tmp.nick += CAT_NORMAL; - lineColor = "##P"; - break; - case ACT_WHISPER: - tmp.nick += CAT_WHISPER; - lineColor = "##W"; - break; - case ACT_IS: - tmp.nick += CAT_IS; - lineColor = "##I"; - break; - case BY_LOGGER: - tmp.nick = ""; - tmp.text = line; - lineColor = "##L"; - break; - } + mChatInput->setPosition(mChatInput->getFrameSize(), + area.height - mChatInput->getHeight() - + mChatInput->getFrameSize()); + mChatInput->setWidth(area.width - 2 * mChatInput->getFrameSize()); - if (tmp.nick == ": ") - { - tmp.nick = ""; - lineColor = "##S"; - } + mChatTabs->setWidth(area.width - 2 * mChatTabs->getFrameSize()); + mChatTabs->setHeight(area.height - 2 * mChatTabs->getFrameSize() - + (mChatInput->getHeight() + mChatInput->getFrameSize() * 2)); - if (tmp.nick.empty() && tmp.text.substr(0, 17) == "Visible GM status") - { - player_node->setGM(); + ChatTab *tab = getFocused(); + if (tab) { + gcn::Widget *content = tab->mScrollArea; + content->setSize(mChatTabs->getWidth() - 2 * content->getFrameSize(), + mChatTabs->getContainerHeight() - 2 * content->getFrameSize()); + content->logic(); } +} - // Get the current system time - time_t t; - time(&t); - - // Format the time string properly - std::stringstream timeStr; - timeStr << "[" << ((((t / 60) / 60) % 24 < 10) ? "0" : "") - << (int) (((t / 60) / 60) % 24) - << ":" << (((t / 60) % 60 < 10) ? "0" : "") - << (int) ((t / 60) % 60) - << "] "; - - // Check for item link - std::string::size_type start = tmp.text.find('['); - while (start != std::string::npos && tmp.text[start+1] != '@') - { - std::string::size_type end = tmp.text.find(']', start); - if (start+1 != end && end != std::string::npos) - { - // Catch multiple embeds and ignore them - // so it doesn't crash the client. - while ((tmp.text.find('[', start + 1) != std::string::npos) && - (tmp.text.find('[', start + 1) < end)) - { - start = tmp.text.find('[', start + 1); - } - - std::string temp = tmp.text.substr(start+1, end - start - 1); +void ChatWindow::widgetResized(const gcn::Event &event) +{ + Window::widgetResized(event); - trim(temp); + adjustTabSize(); +} - for (unsigned int i = 0; i < temp.size(); i++) - { - temp[i] = (char) tolower(temp[i]); - } +void ChatWindow::logic() +{ + Window::logic(); - const ItemInfo itemInfo = ItemDB::get(temp); - if (itemInfo.getName() != _("Unknown item")) - { - tmp.text.insert(end, "@@"); - tmp.text.insert(start+1, "|"); - tmp.text.insert(start+1, toString(itemInfo.getId())); - tmp.text.insert(start+1, "@@"); - } - } - start = tmp.text.find('[', start + 1); + Tab *tab = getFocused(); + if (tab != mCurrentTab) { + mCurrentTab = tab; + adjustTabSize(); } +} - line = lineColor + timeStr.str() + tmp.nick + tmp.text; - - // We look if the Vertical Scroll Bar is set at the max before - // adding a row, otherwise the max will always be a row higher - // at comparison. - if (mScrollArea->getVerticalScrollAmount() == - mScrollArea->getVerticalMaxScroll()) - { - mTextOutput->addRow(line); - mScrollArea->setVerticalScrollAmount(mScrollArea-> - getVerticalMaxScroll()); - } - else - { - mTextOutput->addRow(line); - } +ChatTab *ChatWindow::getFocused() const +{ + return dynamic_cast<ChatTab*>(mChatTabs->getSelectedTab()); +} - mRecorder->record(line.substr(3)); +void ChatWindow::clearTab(ChatTab *tab) +{ + if (tab) + tab->clearText(); } -void ChatWindow::chatLog(CHATSKILL act) +void ChatWindow::clearTab() { - chatLog(const_msg(act), BY_SERVER); + clearTab(getFocused()); } -void ChatWindow::action(const gcn::ActionEvent & event) +void ChatWindow::action(const gcn::ActionEvent &event) { if (event.getId() == "chatinput") { @@ -307,7 +180,7 @@ void ChatWindow::action(const gcn::ActionEvent & event) mCurHist = mHistory.end(); // Send the message to the server - chatSend(player_node->getName(), message); + chatSend(message); // Clear the text from the chat input mChatInput->setText(""); @@ -326,7 +199,7 @@ void ChatWindow::action(const gcn::ActionEvent & event) } } -void ChatWindow::requestChatFocus() +bool ChatWindow::requestChatFocus() { // Make sure chatWindow is visible if (!isVisible()) @@ -341,9 +214,14 @@ void ChatWindow::requestChatFocus() mTmpVisible = true; } + // Don't do anything else if the input is already visible and has focus + if (mChatInput->isVisible() && mChatInput->isFocused()) + return false; + // Give focus to the chat input mChatInput->setVisible(true); mChatInput->requestFocus(); + return true; } bool ChatWindow::isInputFocused() @@ -351,376 +229,74 @@ bool ChatWindow::isInputFocused() return mChatInput->isFocused(); } -void ChatWindow::whisper(const std::string &nick, std::string msg) +void ChatWindow::removeTab(ChatTab *tab) { - std::string recvnick = ""; - - if (msg.substr(0, 1) == "\"") - { - const std::string::size_type pos = msg.find('"', 1); - if (pos != std::string::npos) - { - recvnick = msg.substr(1, pos - 1); - msg.erase(0, pos + 2); - } - } - else - { - const std::string::size_type pos = msg.find(" "); - if (pos != std::string::npos) - { - recvnick = msg.substr(0, pos); - msg.erase(0, pos + 1); - } - } - - trim(msg); - - std::string playerName = player_node->getName(); - std::string tempNick = recvnick; - - toLower(playerName); - toLower(tempNick); - - if (tempNick.compare(playerName) == 0 || msg.empty()) - return; - - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_CHAT_WHISPER); - outMsg.writeInt16(msg.length() + 28); - outMsg.writeString(recvnick, 24); - outMsg.writeString(msg, msg.length()); - - chatLog(strprintf(_("Whispering to %s: %s"), - recvnick.c_str(), msg.c_str()), - BY_PLAYER); + // Prevent removal of the local chat tab + if (tab != localChatTab) mChatTabs->removeTab(tab); } -void ChatWindow::chatSend(const std::string &nick, std::string msg) +void ChatWindow::addTab(ChatTab *tab) { - /* Some messages are managed client side, while others - * require server handling by proper packet. Probably - * those if elses should be replaced by protocol calls */ - - trim(msg); + // Make sure we don't end up with duplicates in the gui + // TODO - if (msg.compare("") == 0) - return; - - // Send party message - if (msg.at(0) == mPartyPrefix) - { - msg.erase(0, 1); - std::size_t length = msg.length() + 1; + mChatTabs->addTab(tab, tab->mScrollArea); - if (length == 0) - { - chatLog(_("Trying to send a blank party message."), BY_SERVER); - return; - } - MessageOut outMsg(mNetwork); - - outMsg.writeInt16(CMSG_PARTY_MESSAGE); - outMsg.writeInt16(length + 4); - outMsg.writeString(msg, length); - return; - } - - // Prepare ordinary message - if (msg.substr(0, 1) != "/") - { - msg = nick + " : " + msg; - - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_CHAT_MESSAGE); - // Added + 1 in order to let eAthena parse admin commands correctly - outMsg.writeInt16(msg.length() + 4 + 1); - outMsg.writeString(msg, msg.length() + 1); - return; - } - - msg.erase(0, 1); - trim(msg); - - std::size_t space = msg.find(" "); - std::string command = msg.substr(0, space); - - if (space == std::string::npos) - { - msg = ""; - } - else - { - msg = msg.substr(space); - trim(msg); - } - - if (command == "announce") - { - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x0099); - outMsg.writeInt16(msg.length() + 4); - outMsg.writeString(msg, msg.length()); - } - else if (command == "help") - { - trim(msg); - std::size_t space = msg.find(" "); - std::string msg1; - - if (space == std::string::npos) - { - msg1 = ""; - } - else - { - msg1 = msg.substr(space + 1, msg.length()); - msg = msg.substr(0, space); - } - - if (!msg.empty() && msg.at(0) == '/') - { - msg.erase(0, 1); - } + // Fix for layout issues when adding the first tab + if (tab == localChatTab) + adjustTabSize(); - trim(msg1); - help(msg, msg1); - } - else if (command == "where") - { - // Display the current map, X, and Y - std::ostringstream where; - where << map_path << " " << player_node->mX << "," << player_node->mY; - chatLog(where.str(), BY_SERVER); - } - else if (command == "who") - { - MessageOut outMsg(mNetwork); - outMsg.writeInt16(0x00c1); - } - else if (command == "clear") - mTextOutput->clearRows(); - else if (command == "whisper" || command == "msg" || command == "w") - whisper(nick, msg); - else if (command == "record") - mRecorder->changeRecordingStatus(msg); - else if (command == "toggle") - { - if (msg.empty()) - { - chatLog(mReturnToggles ? _("Return toggles chat.") - : _("Message closes chat."), BY_SERVER); - return; - } - - msg = msg.substr(0, 1); - - if (msg == "1" || - msg == "y" || msg == "Y" || - msg == "t" || msg == "T") - { - chatLog(_("Return now toggles chat."), BY_SERVER); - mReturnToggles = true; - return; - } - else if (msg == "0" || - msg == "n" || msg == "N" || - msg == "f" || msg == "F") - { - chatLog(_("Message now closes chat."), BY_SERVER); - mReturnToggles = false; - return; - } - else - chatLog(_("Options to /toggle are \"yes\", \"no\", \"true\", " - "\"false\", \"1\", \"0\"."), BY_SERVER); - } - else if (command == "party") - { - if (msg.empty()) - { - chatLog(_("Unknown party command... Type \"/help\" party for more " - "information."), BY_SERVER); - return; - } + // Update UI + logic(); +} - const std::string::size_type space = msg.find(" "); - std::string rest = (space == std::string::npos ? "" - : msg.substr(space + 1, msg.length())); +void ChatWindow::chatSend(std::string &msg) +{ + ChatTab *tab = getFocused(); + tab->chatSend(msg); +} - if (!rest.empty()) - { - msg = msg.substr(0, space); - trim(msg); - } +void ChatWindow::doPresent() +{ + Beings & beings = beingManager->getAll(); + std::string response = ""; - party(msg, rest); - return; - } - else if (command == "cast") + for (BeingIterator bi = beings.begin(), be = beings.end(); + bi != be; ++bi) { - /* - * This will eventually be replaced by a GUI, so - * we don't need to get too sophisticated - */ - MessageOut outMsg(mNetwork); - if (msg == "heal") - { - outMsg.writeInt16(0x03f3); - outMsg.writeInt16(0x01); - outMsg.writeInt32(0); - outMsg.writeInt8(0); - outMsg.writeInt8(0); - outMsg.writeString("", 24); - } - else if (msg == "gather") - { - outMsg.writeInt16(0x03f3); - outMsg.writeInt16(0x02); - outMsg.writeInt32(0); - outMsg.writeInt8(0); - outMsg.writeInt8(0); - outMsg.writeString("", 24); - } - else - chatLog(_("No such spell!"), BY_SERVER); - } - else if (command == "present") - { - Beings & beings = beingManager->getAll(); - std::string response = ""; - - for (BeingIterator bi = beings.begin(), be = beings.end(); - bi != be; ++bi) + if ((*bi)->getType() == Being::PLAYER) { - if ((*bi)->getType() == Being::PLAYER) + if (!response.empty()) { - if (!response.empty()) - { - response += ", "; - } - response += (*bi)->getName(); + response += ", "; } - } - - if (mRecorder->isRecording()) - { - // Get the current system time - time_t t; - time(&t); - - // Format the time string properly - std::stringstream timeStr; - timeStr << "[" << ((((t / 60) / 60) % 24 < 10) ? "0" : "") - << (int) (((t / 60) / 60) % 24) - << ":" << (((t / 60) % 60 < 10) ? "0" : "") - << (int) ((t / 60) % 60) - << "] "; - - - mRecorder->record(timeStr.str() + _("Present: ") + response + "."); - chatLog(_("Attendance written to record log."), BY_SERVER, true); - } - else - { - chatLog(_("Present: ") + response, BY_SERVER); + response += (*bi)->getName(); } } - else if (command == "me") - { - std::stringstream actionStr; - actionStr << "*" << msg << "*"; - chatSend(player_node->getName(), actionStr.str()); - } - else - { - chatLog(_("Unknown command"), BY_SERVER); - } -} -std::string ChatWindow::const_msg(CHATSKILL act) -{ - std::string msg; - if (act.success == SKILL_FAILED && act.skill == SKILL_BASIC) + if (mRecorder->isRecording()) { - switch (act.bskill) - { - case BSKILL_TRADE: - msg = _("Trade failed!"); - break; - case BSKILL_EMOTE: - msg = _("Emote failed!"); - break; - case BSKILL_SIT: - msg = _("Sit failed!"); - break; - case BSKILL_CREATECHAT: - msg = _("Chat creating failed!"); - break; - case BSKILL_JOINPARTY: - msg = _("Could not join party!"); - break; - case BSKILL_SHOUT: - msg = _("Cannot shout!"); - break; - } + // Get the current system time + time_t t; + time(&t); - msg += " "; + // Format the time string properly + std::stringstream timeStr; + timeStr << "[" << ((((t / 60) / 60) % 24 < 10) ? "0" : "") + << (int) (((t / 60) / 60) % 24) + << ":" << (((t / 60) % 60 < 10) ? "0" : "") + << (int) ((t / 60) % 60) + << "] "; - switch (act.reason) - { - case RFAIL_SKILLDEP: - msg += _("You have not yet reached a high enough lvl!"); - break; - case RFAIL_INSUFHP: - msg += _("Insufficient HP!"); - break; - case RFAIL_INSUFSP: - msg += _("Insufficient SP!"); - break; - case RFAIL_NOMEMO: - msg += _("You have no memos!"); - break; - case RFAIL_SKILLDELAY: - msg += _("You cannot do that right now!"); - break; - case RFAIL_ZENY: - msg += _("Seems you need more GP... ;-)"); - break; - case RFAIL_WEAPON: - msg += _("You cannot use this skill with that kind of weapon!"); - break; - case RFAIL_REDGEM: - msg += _("You need another red gem!"); - break; - case RFAIL_BLUEGEM: - msg += _("You need another blue gem!"); - break; - case RFAIL_OVERWEIGHT: - msg += _("You're carrying to much to do this!"); - break; - default: - msg += _("Huh? What's that?"); - break; - } + + mRecorder->record(timeStr.str() + _("Present: ") + response + "."); + localChatTab->chatLog(_("Attendance written to record log."), + BY_SERVER, true); } else { - switch (act.skill) - { - case SKILL_WARP : - msg = _("Warp failed..."); - break; - case SKILL_STEAL : - msg = _("Could not steal anything..."); - break; - case SKILL_ENVENOM : - msg = _("Poison had no effect..."); - break; - } + localChatTab->chatLog(_("Present: ") + response, BY_SERVER); } - - return msg; } void ChatWindow::scroll(int amount) @@ -728,16 +304,12 @@ void ChatWindow::scroll(int amount) if (!isVisible()) return; - int range = mScrollArea->getHeight() / 8 * amount; - gcn::Rectangle scr; - scr.y = mScrollArea->getVerticalScrollAmount() + range; - scr.height = abs(range); - mTextOutput->showPart(scr); + ChatTab *tab = getFocused(); + if (tab) tab->scroll(amount); } -void ChatWindow::keyPressed(gcn::KeyEvent & event) +void ChatWindow::keyPressed(gcn::KeyEvent &event) { - if (event.getKey().getValue() == Key::DOWN && mCurHist != mHistory.end()) { @@ -786,150 +358,36 @@ void ChatWindow::setVisible(bool isVisible) * For whatever reason, if setVisible is called, the mTmpVisible effect * should be disabled. */ - mTmpVisible = false; } -void ChatWindow::party(const std::string & command, const std::string & rest) +void ChatWindow::setRecordingFile(const std::string &msg) { - if (command == "prefix") - { - if (rest.empty()) - { - char temp[2] = "."; - *temp = mPartyPrefix; - chatLog(_("The current party prefix is ") + std::string(temp), - BY_SERVER); - } - else if (rest.length() != 1) - { - chatLog(_("Party prefix must be one character long."), BY_SERVER); - } - else - { - if (rest == "/") - { - chatLog(_("Cannot use a '/' as the prefix."), BY_SERVER); - } - else - { - mPartyPrefix = rest.at(0); - chatLog(_("Changing prefix to ") + rest, BY_SERVER); - } - } - } - else - mParty->respond(command, rest); + mRecorder->setRecordingFile(msg); } -void ChatWindow::help(const std::string & msg1, const std::string & msg2) +void ChatWindow::whisper(std::string nick, std::string mes, bool own) { - chatLog(_("-- Help --"), BY_SERVER); - if (msg1.empty()) - { - chatLog(_("/announce: Global announcement (GM only)"), BY_SERVER); - chatLog(_("/clear: Clears this window"), BY_SERVER); - chatLog(_("/help: Display this help"), BY_SERVER); - chatLog(_("/me <message>: Tell something about yourself"), BY_SERVER); - chatLog(_("/msg <nick> <message>: Alternate form for /whisper"), - BY_SERVER); - chatLog(_("/party <command> <params>: Party commands"), BY_SERVER); - chatLog(_("/present: Get list of players present"), BY_SERVER); - chatLog(_("/record <filename>: Start recording the chat to an " - "external file"), BY_SERVER); - chatLog(_("/toggle: Determine whether <return> toggles the chat log"), - BY_SERVER); - chatLog(_("/w <nick> <message>: Short form for /whisper"), BY_SERVER); - chatLog(_("/where: Display map name"), BY_SERVER); - chatLog(_("/whisper <nick> <message>: Sends a private <message> " - "to <nick>"), BY_SERVER); - chatLog(_("/who: Display number of online users"), BY_SERVER); - chatLog(_("For more information, type /help <command>"), BY_SERVER); - } - else if (msg1 == "announce") - { - chatLog(_("Command: /announce <msg>"), BY_SERVER); - chatLog(_("*** only available to a GM ***"), BY_SERVER); - chatLog(_("This command sends the message <msg> to " - "all players currently online."), BY_SERVER); - } - else if (msg1 == "clear") - { - chatLog(_("Command: /clear"), BY_SERVER); - chatLog(_("This command clears the chat log of previous chat."), - BY_SERVER); - } - else if (msg1 == "help") - { - chatLog(_("Command: /help"), BY_SERVER); - chatLog(_("This command displays a list of all commands available."), - BY_SERVER); - chatLog(_("Command: /help <command>"), BY_SERVER); - chatLog(_("This command displays help on <command>."), BY_SERVER); - } - else if (msg1 == "me") - { - chatLog(_("Command: /me <msg>"), BY_SERVER); - chatLog(_("This command tell others you are (doing) <msg>."), - BY_SERVER); - } - else if (msg1 == "party") - { - mParty->help(msg2); - } - else if (msg1 == "present") - { - chatLog(_("Command: /present"), BY_SERVER); - chatLog(_("This command gets a list of players within hearing and " - "sends it to either the record log if recording, or the chat " - "log otherwise."), BY_SERVER); - } - else if (msg1 == "record") - { - chatLog(_("Command: /record <filename>"), BY_SERVER); - chatLog(_("This command starts recording the chat log to the file " - "<filename>."), BY_SERVER); - chatLog(_("Command: /record"), BY_SERVER); - chatLog(_("This command finishes a recording session."), BY_SERVER); - } - else if (msg1 == "toggle") - { - chatLog(_("Command: /toggle <state>"), BY_SERVER); - chatLog(_("This command sets whether the return key should toggle the " - "chat log, or whether the chat log turns off automatically."), - BY_SERVER); - chatLog(_("<state> can be one of \"1\", \"yes\", \"true\" to " - "turn the toggle on, or \"0\", \"no\", \"false\" to turn the " - "toggle off."), BY_SERVER); - chatLog(_("Command: /toggle"), BY_SERVER); - chatLog(_("This command displays the return toggle status."), - BY_SERVER); - } - else if (msg1 == "where") - { - chatLog(_("Command: /where"), BY_SERVER); - chatLog(_("This command displays the name of the current map."), - BY_SERVER); - } - else if (msg1 == "whisper" || msg1 == "msg" || msg1 == "w") - { - chatLog(_("Command: /msg <nick> <msg>"), BY_SERVER); - chatLog(_("Command: /whisper <nick> <msg>"), BY_SERVER); - chatLog(_("Command: /w <nick> <msg>"), BY_SERVER); - chatLog(_("This command sends the message <msg> to <nick>."), - BY_SERVER); - chatLog(_("If the <nick> has spaces in it, enclose it in " - "double quotes (\")."), BY_SERVER); - } - else if (msg1 == "who") + if (mes.length() == 0) return; + std::string playerName = player_node->getName(); + std::string tempNick = nick; + + toLower(playerName); + toLower(tempNick); + + if (!own && tempNick.compare(playerName) == 0) + return; + + ChatTab *tab = mWhispers[tempNick]; + + if (!tab) { - chatLog(_("Command: /who"), BY_SERVER); - chatLog(_("This command displays the number of players currently " - "online."), BY_SERVER); + tab = new WhisperTab(tempNick); + mWhispers[tempNick] = tab; } + + if (own) + tab->chatSend(mes); else - { - chatLog(_("Unknown command."), BY_SERVER); - chatLog(_("Type /help for a list of commands."), BY_SERVER); - } + tab->chatLog(nick, mes); } diff --git a/src/gui/chat.h b/src/gui/chat.h index 8b710dc8..7c080960 100644 --- a/src/gui/chat.h +++ b/src/gui/chat.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,29 +24,28 @@ #include <list> #include <string> +#include <map> #include <guichan/actionlistener.hpp> #include <guichan/keylistener.hpp> +#include <guichan/widget.hpp> +#include <guichan/widgetlistener.hpp> + +#include "widgets/chattab.h" #include "window.h" class BrowserBox; -class Network; +class Channel; +class ChatTab; class Recorder; -class Party; class ScrollArea; +class TabbedArea; class ItemLinkHandler; - -#define BY_GM 0 // those should be self-explanatory =) -#define BY_PLAYER 1 -#define BY_OTHER 2 -#define BY_SERVER 3 -#define BY_PARTY 4 - -#define ACT_WHISPER 5 // getting whispered at -#define ACT_IS 6 // equivalent to "/me" on IRC - -#define BY_LOGGER 7 +#ifdef EATHENA_SUPPORT +class Network; +#endif +class WhisperTab; /** * gets in between usernick and message text depending on @@ -57,47 +55,14 @@ class ItemLinkHandler; #define CAT_IS "" #define CAT_WHISPER " whispers: " -/** job dependend identifiers (?) */ -#define SKILL_BASIC 0x0001 -#define SKILL_WARP 0x001b -#define SKILL_STEAL 0x0032 -#define SKILL_ENVENOM 0x0034 - -/** basic skills identifiers */ -#define BSKILL_TRADE 0x0000 -#define BSKILL_EMOTE 0x0001 -#define BSKILL_SIT 0x0002 -#define BSKILL_CREATECHAT 0x0003 -#define BSKILL_JOINPARTY 0x0004 -#define BSKILL_SHOUT 0x0005 -#define BSKILL_PK 0x0006 // ?? -#define BSKILL_SETALLIGN 0x0007 // ?? - -/** reasons why action failed */ -#define RFAIL_SKILLDEP 0x00 -#define RFAIL_INSUFHP 0x01 -#define RFAIL_INSUFSP 0x02 -#define RFAIL_NOMEMO 0x03 -#define RFAIL_SKILLDELAY 0x04 -#define RFAIL_ZENY 0x05 -#define RFAIL_WEAPON 0x06 -#define RFAIL_REDGEM 0x07 -#define RFAIL_BLUEGEM 0x08 -#define RFAIL_OVERWEIGHT 0x09 -#define RFAIL_GENERIC 0x0a - -/** should always be zero if failed */ -#define SKILL_FAILED 0x00 - #define DEFAULT_CHAT_WINDOW_SCROLL 7 // 1 means `1/8th of the window size'. -struct CHATSKILL +/** One item in the chat log */ +struct CHATLOG { - short skill; - short bskill; - short unused; - char success; - char reason; + std::string nick; + std::string text; + int own; }; /** @@ -105,14 +70,19 @@ struct CHATSKILL * * \ingroup Interface */ -class ChatWindow : public Window, public gcn::ActionListener, +class ChatWindow : public Window, + public gcn::ActionListener, public gcn::KeyListener { public: /** * Constructor. */ +#ifdef TMWSERV_SUPPORT + ChatWindow(); +#else ChatWindow(Network *network); +#endif /** * Destructor: used to write back values to the config file @@ -120,23 +90,33 @@ class ChatWindow : public Window, public gcn::ActionListener, ~ChatWindow(); /** + * Called when the widget changes size. Used for adapting the size of + * the tabbed area. + */ + void widgetResized(const gcn::Event &event); + + void logic(); + + /** * Reset the chat window and recorder window attached to it to their * default positions. */ void resetToDefaultSize(); /** - * Adds a line of text to our message list. Parameters: - * - * @param line Text message. - * @parem own Type of message (usually the owner-type). + * Gets the focused tab. */ - void chatLog(std::string line, int own, bool ignoreRecord = false); + ChatTab* getFocused() const; /** - * Calls original chat_log() after processing the packet. + * Clear the given tab. */ - void chatLog(CHATSKILL); + void clearTab(ChatTab* tab); + + /** + * Clear the current tab. + */ + void clearTab(); /** * Performs action. @@ -145,8 +125,11 @@ class ChatWindow : public Window, public gcn::ActionListener, /** * Request focus for typing chat message. + * + * \returns true if the input was shown + * false otherwise */ - void requestChatFocus(); + bool requestChatFocus(); /** * Checks whether ChatWindow is Focused or not. @@ -154,30 +137,12 @@ class ChatWindow : public Window, public gcn::ActionListener, bool isInputFocused(); /** - * Determines whether to send a command or an ordinary message, then - * contructs packets & sends them. - * - * @param nick The character's name to display in front. - * @param msg The message text which is to be send. + * Passes the text to the current tab as input * - * NOTE: - * The nickname is required by the server, if not specified - * the message may not be sent unless a command was intended - * which requires another packet to be constructed! you can - * achieve this by putting a slash ("/") infront of the - * message followed by the command name and the message. - * of course all slash-commands need implemented handler- - * routines. ;-) - * remember, a line starting with "@" is not a command that needs - * to be parsed rather is sent using the normal chat-packet. + * @param msg The message text which is to be sent. * - * EXAMPLE: - * // for an global announcement /- command - * chatlog.chat_send("", "/announce Hello to all logged in users!"); - * // for simple message by a user /- message - * chatlog.chat_send("Zaeiru", "Hello to all users on the screen!"); */ - void chatSend(const std::string &nick, std::string msg); + void chatSend(std::string &msg); /** Called when key is pressed */ void keyPressed(gcn::KeyEvent &event); @@ -191,65 +156,77 @@ class ChatWindow : public Window, public gcn::ActionListener, /** Override to reset mTmpVisible */ void setVisible(bool visible); - /** - * Scrolls the chat window - * - * @param amount direction and amount to scroll. Negative numbers scroll - * up, positive numbers scroll down. The absolute amount indicates the - * amount of 1/8ths of chat window real estate that should be scrolled. - */ - void scroll(int amount); - /** - * party implements the partying chat commands + * Scrolls the chat window * - * @param command is the party command to perform - * @param msg is the remainder of the message + * @param amount direction and amount to scroll. Negative numbers scroll + * up, positive numbers scroll down. The absolute amount indicates the + * amount of 1/8ths of chat window real estate that should be scrolled. */ - void party(const std::string &command, const std::string &msg); + void scroll(int amount); + +#ifdef EATHENA_SUPPORT + char getPartyPrefix() const { return mPartyPrefix; } + void setPartyPrefix(char prefix) { mPartyPrefix = prefix; } +#endif /** - * help implements the /help command + * Sets the file being recorded to * - * @param msg1 is the command that the player needs help on - * @param msg2 is the sub-command relating to the command + * @param msg The file to write out to. If null, then stop recording. */ - void help(const std::string &msg1, const std::string &msg2); + void setRecordingFile(const std::string &msg); - private: + bool getReturnTogglesChat() const { return mReturnToggles; } + void setReturnTogglesChat(bool toggles) { mReturnToggles = toggles; } + + void doPresent(); + + void whisper(std::string nick, std::string mes, bool own = false); + + protected: + friend class ChatTab; + friend class WhisperTab; + /** Remove the given tab from the window */ + void removeTab(ChatTab *tab); + + /** Add the tab to the window */ + void addTab(ChatTab *tab); + + void adjustTabSize(); + +#ifdef EATHENA_SUPPORT Network *mNetwork; - bool mTmpVisible; + char mPartyPrefix; /**< Messages beginning with the prefix are sent to + the party */ +#endif + /** Used for showing item popup on clicking links **/ + ItemLinkHandler *mItemLinkHandler; + Recorder *mRecorder; - void whisper(const std::string &nick, std::string msg); + /** Input box for typing chat messages. */ + gcn::TextField *mChatInput; - /** One item in the chat log */ - struct CHATLOG - { - std::string nick; - std::string text; - int own; - }; + private: + bool mTmpVisible; - /** Constructs failed messages for actions */ - std::string const_msg(CHATSKILL); + /** Tabbed area for holding each channel. */ + TabbedArea *mChatTabs; + Tab *mCurrentTab; + + typedef std::map<const std::string, ChatTab*> TabMap; + /** Manage whisper tabs */ + TabMap mWhispers; - gcn::TextField *mChatInput; /**< Input box for typing chat messages */ - BrowserBox *mTextOutput; /**< Text box for displaying chat history */ - ScrollArea *mScrollArea; /**< Scroll area around text output */ - ItemLinkHandler *mItemLinkHandler; /** Used for showing item popup on - clicking links **/ typedef std::list<std::string> History; typedef History::iterator HistoryIterator; - History mHistory; /**< Command history */ - HistoryIterator mCurHist; /**< History iterator */ - Recorder *mRecorder; /**< Recording class */ - char mPartyPrefix; /**< Messages beginning with the prefix are - sent to the party */ - bool mReturnToggles; /**< Marks whether <Return> toggles the chat - log or not */ - Party *mParty; + History mHistory; /**< Command history. */ + HistoryIterator mCurHist; /**< History iterator. */ + bool mReturnToggles; /**< Marks whether <Return> toggles the chat log + or not */ }; + extern ChatWindow *chatWindow; #endif diff --git a/src/gui/chatinput.cpp b/src/gui/chatinput.cpp index 42c6d4de..43f3cde4 100644 --- a/src/gui/chatinput.cpp +++ b/src/gui/chatinput.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/chatinput.h b/src/gui/chatinput.h index 96c30b3f..3bc16928 100644 --- a/src/gui/chatinput.h +++ b/src/gui/chatinput.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,6 +26,8 @@ #include "textfield.h" +#include <guichan/focuslistener.hpp> + /** * The chat input hides when it loses focus. It is also invisible by default. */ diff --git a/src/gui/checkbox.cpp b/src/gui/checkbox.cpp index f6cce581..2623e2c6 100644 --- a/src/gui/checkbox.cpp +++ b/src/gui/checkbox.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,7 +35,7 @@ Image *CheckBox::checkBoxChecked; Image *CheckBox::checkBoxDisabled; Image *CheckBox::checkBoxDisabledChecked; -CheckBox::CheckBox(const std::string& caption, bool selected): +CheckBox::CheckBox(const std::string &caption, bool selected): gcn::CheckBox(caption, selected) { if (instances == 0) diff --git a/src/gui/checkbox.h b/src/gui/checkbox.h index 93b62b9d..303782b0 100644 --- a/src/gui/checkbox.h +++ b/src/gui/checkbox.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -38,7 +37,7 @@ class CheckBox : public gcn::CheckBox /** * Constructor. */ - CheckBox(const std::string& caption, bool selected = false); + CheckBox(const std::string &caption, bool selected = false); /** * Destructor. diff --git a/src/gui/confirm_dialog.cpp b/src/gui/confirm_dialog.cpp index 4c08eb73..e1c32759 100644 --- a/src/gui/confirm_dialog.cpp +++ b/src/gui/confirm_dialog.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,7 +33,7 @@ ConfirmDialog::ConfirmDialog(const std::string &title, const std::string &msg, Window *parent): Window(title, true, parent) { - mTextBox = new TextBox(); + mTextBox = new TextBox; mTextBox->setEditable(false); mTextBox->setOpaque(false); @@ -75,11 +74,11 @@ ConfirmDialog::ConfirmDialog(const std::string &title, const std::string &msg, add(yesButton); add(noButton); - setLocationRelativeTo(getParent()); - if (getParent()) + { + center(); getParent()->moveToTop(this); - + } setVisible(true); yesButton->requestFocus(); } diff --git a/src/gui/confirm_dialog.h b/src/gui/confirm_dialog.h index 493e9dda..8d8c0436 100644 --- a/src/gui/confirm_dialog.h +++ b/src/gui/confirm_dialog.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -56,7 +55,6 @@ class ConfirmDialog : public Window, public gcn::ActionListener private: TextBox *mTextBox; ScrollArea *mTextArea; - gcn::Button *okButton; }; #endif diff --git a/src/gui/connection.cpp b/src/gui/connection.cpp index d4a2b18a..5fb21ff2 100644 --- a/src/gui/connection.cpp +++ b/src/gui/connection.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,31 +19,22 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <guichan/actionlistener.hpp> - #include "button.h" #include "connection.h" #include "label.h" #include "progressbar.h" #include "../main.h" +#include "../log.h" #include "../utils/gettext.h" -namespace -{ - struct ConnectionActionListener : public gcn::ActionListener - { - void action(const gcn::ActionEvent &event) { state = EXIT_STATE; } - } listener; -} - -ConnectionDialog::ConnectionDialog(): - Window("Info"), mProgress(0) +ConnectionDialog::ConnectionDialog(int previousState): + Window("Info"), mProgress(0), mPreviousState(previousState) { setContentSize(200, 100); - Button *cancelButton = new Button(_("Cancel"), "cancelButton", &listener); + Button *cancelButton = new Button(_("Cancel"), "cancelButton", this); mProgressBar = new ProgressBar(0.0, 200 - 10, 20, 128, 128, 128); gcn::Label *label = new Label(_("Connecting...")); @@ -56,10 +46,16 @@ ConnectionDialog::ConnectionDialog(): add(cancelButton); add(mProgressBar); - setLocationRelativeTo(getParent()); + center(); setVisible(true); } +void ConnectionDialog::action(gcn::ActionEvent const &) +{ + logger->log("Cancel pressed"); + state = mPreviousState; +} + void ConnectionDialog::logic() { mProgress += 0.005f; diff --git a/src/gui/connection.h b/src/gui/connection.h index f91a0ad1..0e347266 100644 --- a/src/gui/connection.h +++ b/src/gui/connection.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,6 +22,8 @@ #ifndef CONNECTION_H #define CONNECTION_H +#include <guichan/actionlistener.hpp> + #include "window.h" class ProgressBar; @@ -32,7 +33,7 @@ class ProgressBar; * * \ingroup Interface */ -class ConnectionDialog : public Window +class ConnectionDialog : public Window, gcn::ActionListener { public: /** @@ -40,13 +41,20 @@ class ConnectionDialog : public Window * * @see Window::Window */ - ConnectionDialog(); + ConnectionDialog(int previousState); + + /** + * Called when the user presses Cancel. Restores the global state to + * the previous one. + */ + void action(gcn::ActionEvent const &); void logic(); private: ProgressBar *mProgressBar; float mProgress; + int mPreviousState; }; #endif diff --git a/src/gui/debugwindow.cpp b/src/gui/debugwindow.cpp index 9b8ea6bd..a98c9af4 100644 --- a/src/gui/debugwindow.cpp +++ b/src/gui/debugwindow.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/debugwindow.h b/src/gui/debugwindow.h index c82521f9..8097132c 100644 --- a/src/gui/debugwindow.h +++ b/src/gui/debugwindow.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/emotecontainer.cpp b/src/gui/emotecontainer.cpp index 22b4cf50..ececd9aa 100644 --- a/src/gui/emotecontainer.cpp +++ b/src/gui/emotecontainer.cpp @@ -2,8 +2,7 @@ * Extended support for activating emotes * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra derived from original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/emotecontainer.h b/src/gui/emotecontainer.h index 7e88cb71..88df29fc 100644 --- a/src/gui/emotecontainer.h +++ b/src/gui/emotecontainer.h @@ -2,8 +2,7 @@ * Extended support for activating emotes * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra derived from original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/emoteshortcutcontainer.cpp b/src/gui/emoteshortcutcontainer.cpp index 47fb9b06..661f42a7 100644 --- a/src/gui/emoteshortcutcontainer.cpp +++ b/src/gui/emoteshortcutcontainer.cpp @@ -2,8 +2,7 @@ * Extended support for activating emotes * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra derived from original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/emoteshortcutcontainer.h b/src/gui/emoteshortcutcontainer.h index ff9f929c..2997cb09 100644 --- a/src/gui/emoteshortcutcontainer.h +++ b/src/gui/emoteshortcutcontainer.h @@ -2,8 +2,7 @@ * Extended support for activating emotes * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra derived from original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/emotewindow.cpp b/src/gui/emotewindow.cpp index 77168993..d4b3cf2e 100644 --- a/src/gui/emotewindow.cpp +++ b/src/gui/emotewindow.cpp @@ -2,7 +2,7 @@ * Extended support for activating emotes * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,7 +35,7 @@ EmoteWindow::EmoteWindow(): Window(_("Emote")) { - setWindowName(_("Emote")); + setWindowName("Emote"); setResizable(true); setCloseButton(true); setMinWidth(80); @@ -44,7 +44,7 @@ EmoteWindow::EmoteWindow(): mUseButton = new Button(_("Use"), "use", this); - mEmotes = new EmoteContainer(); + mEmotes = new EmoteContainer; mEmotes->addSelectionListener(this); mEmoteScroll = new ScrollArea(mEmotes); diff --git a/src/gui/emotewindow.h b/src/gui/emotewindow.h index 81ee4f05..8af24a7b 100644 --- a/src/gui/emotewindow.h +++ b/src/gui/emotewindow.h @@ -2,7 +2,7 @@ * Extended support for activating emotes * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/equipmentwindow.cpp b/src/gui/equipmentwindow.cpp index 168ae22f..96500e88 100644 --- a/src/gui/equipmentwindow.cpp +++ b/src/gui/equipmentwindow.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra derived from original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -38,6 +37,7 @@ #include "../item.h" #include "../localplayer.h" +#include "../resources/image.h" #include "../resources/iteminfo.h" #include "../resources/resourcemanager.h" @@ -59,11 +59,19 @@ static const int boxPosition[][2] = { {129, 78} // EQUIP_AMMO_SLOT }; +#ifdef TMWSERV_SUPPORT +EquipmentWindow::EquipmentWindow(Equipment *equipment): +#else EquipmentWindow::EquipmentWindow(): +#endif Window(_("Equipment")), +#ifdef TMWSERV_SUPPORT + mEquipment(equipment), +#endif + mBackground(NULL), mSelected(-1) { - mItemPopup = new ItemPopup(); + mItemPopup = new ItemPopup; mItemPopup->setOpaque(false); // Control that shows the Player @@ -84,19 +92,31 @@ EquipmentWindow::EquipmentWindow(): add(mPlayerBox); add(mUnequip); +#ifdef TMWSERV_SUPPORT + for (int i = 0; i < EQUIPMENT_SIZE; i++) +#else for (int i = EQUIP_LEGS_SLOT; i < EQUIP_VECTOREND; i++) +#endif { mEquipBox[i].posX = boxPosition[i][0] + getPadding(); mEquipBox[i].posY = boxPosition[i][1] + getTitleBarHeight(); } + ResourceManager *resman = ResourceManager::getInstance(); + mBackground = resman->getImage("graphics/gui/equip_bg.png"); + mBackground->setAlpha(0.3); + +#ifdef EATHENA_SUPPORT mEquipment = player_node->mEquipment.get(); mInventory = player_node->getInventory(); +#endif } EquipmentWindow::~EquipmentWindow() { + mBackground->decRef(); delete mItemPopup; + delete mUnequip; } void EquipmentWindow::draw(gcn::Graphics *graphics) @@ -107,13 +127,15 @@ void EquipmentWindow::draw(gcn::Graphics *graphics) // Draw window graphics Window::draw(graphics); - Item* item; - Graphics *g = static_cast<Graphics*>(graphics); Window::drawChildren(graphics); +#ifdef TMWSERV_SUPPORT + for (int i = 0; i < EQUIPMENT_SIZE; i++) +#else for (int i = EQUIP_LEGS_SLOT; i < EQUIP_VECTOREND; i++) +#endif { if (i == mSelected) { @@ -131,14 +153,19 @@ void EquipmentWindow::draw(gcn::Graphics *graphics) g->drawRectangle(gcn::Rectangle(mEquipBox[i].posX, mEquipBox[i].posY, BOX_WIDTH, BOX_HEIGHT)); - item = (i != EQUIP_AMMO_SLOT) ? +#ifdef TMWSERV_SUPPORT + Item *item = mEquipment->getEquipment(i); +#else + Item *item = (i != EQUIP_AMMO_SLOT) ? mInventory->getItem(mEquipment->getEquipment(i)) : mInventory->getItem(mEquipment->getArrows()); +#endif if (item) { // Draw Item. - Image* image = item->getImage(); + Image *image = item->getImage(); g->drawImage(image, mEquipBox[i].posX, mEquipBox[i].posY); +#ifdef EATHENA_SUPPORT if (i == EQUIP_AMMO_SLOT) { g->setColor(guiPalette->getColor(Palette::TEXT)); @@ -147,6 +174,7 @@ void EquipmentWindow::draw(gcn::Graphics *graphics) mEquipBox[i].posY - getFont()->getHeight(), gcn::Graphics::CENTER); } +#endif } } } @@ -155,26 +183,38 @@ void EquipmentWindow::action(const gcn::ActionEvent &event) { if (event.getId() == "unequip" && mSelected > -1) { +#ifdef TMWSERV_SUPPORT + player_node->unequipItem(mSelected); +#else Item* item = (mSelected != EQUIP_AMMO_SLOT) ? mInventory->getItem(mEquipment->getEquipment(mSelected)) : mInventory->getItem(mEquipment->getArrows()); player_node->unequipItem(item); +#endif mSelected = -1; } } -Item* EquipmentWindow::getItem(const int &x, const int &y) +Item* EquipmentWindow::getItem(int x, int y) const { +#ifdef TMWSERV_SUPPORT + for (int i = 0; i < EQUIPMENT_SIZE; i++) +#else for (int i = EQUIP_LEGS_SLOT; i < EQUIP_VECTOREND; i++) +#endif { gcn::Rectangle tRect(mEquipBox[i].posX, mEquipBox[i].posY, BOX_WIDTH, BOX_HEIGHT); if (tRect.isPointInRect(x, y)) { +#ifdef TMWSERV_SUPPORT + return mEquipment->getEquipment(i); +#else return (i != EQUIP_AMMO_SLOT) ? mInventory->getItem(mEquipment->getEquipment(i)) : mInventory->getItem(mEquipment->getArrows()); +#endif } } return NULL; @@ -192,11 +232,19 @@ void EquipmentWindow::mousePressed(gcn::MouseEvent& mouseEvent) if (mouseEvent.getButton() == gcn::MouseEvent::LEFT) { // Checks if any of the presses were in the equip boxes. +#ifdef TMWSERV_SUPPORT + for (int i = 0; i < EQUIPMENT_SIZE; i++) +#else for (int i = EQUIP_LEGS_SLOT; i < EQUIP_VECTOREND; i++) +#endif { +#ifdef TMWSERV_SUPPORT + item = mEquipment->getEquipment(i); +#else item = (i != EQUIP_AMMO_SLOT) ? mInventory->getItem(mEquipment->getEquipment(i)) : mInventory->getItem(mEquipment->getArrows()); +#endif gcn::Rectangle tRect(mEquipBox[i].posX, mEquipBox[i].posY, BOX_WIDTH, BOX_HEIGHT); diff --git a/src/gui/equipmentwindow.h b/src/gui/equipmentwindow.h index 7fdbaac8..7f7150ff 100644 --- a/src/gui/equipmentwindow.h +++ b/src/gui/equipmentwindow.h @@ -1,33 +1,33 @@ /* - * Aethyra - * Copyright 2004 The Mana World Development Team + * The Mana World + * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra derived from original code - * from The Mana World. + * This file is part of The Mana World. * - * The Mana World is free software; you can redistribute it and/or modify + * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * any later version. * - * The Mana World is distributed in the hope that it will be useful, + * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with The Mana World; if not, write to the Free Software + * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef EQUIPMENT_WINDOW_H -#define EQUIPMENT_WINDOW_H +#ifndef EQUIPMENTWINDOW_H +#define EQUIPMENTWINDOW_H #include <guichan/actionlistener.hpp> #include "window.h" class Equipment; +class Image; class Inventory; class Item; class ItemPopup; @@ -53,7 +53,11 @@ class EquipmentWindow : public Window, public gcn::ActionListener /** * Constructor. */ +#ifdef TMWSERV_SUPPORT + EquipmentWindow(Equipment *equipment); +#else EquipmentWindow(); +#endif /** * Destructor. @@ -69,6 +73,23 @@ class EquipmentWindow : public Window, public gcn::ActionListener void mousePressed(gcn::MouseEvent& mouseEvent); +#ifdef TMWSERV_SUPPORT + enum{ + // Equipment rules: + EQUIP_TORSO_SLOT = 0, + EQUIP_ARMS_SLOT = 1, + EQUIP_HEAD_SLOT = 2, + EQUIP_LEGS_SLOT = 3, + EQUIP_FEET_SLOT = 4, + EQUIP_RING1_SLOT = 5, + EQUIP_RING2_SLOT = 6, + EQUIP_NECKLACE_SLOT = 7, + EQUIP_FIGHT1_SLOT = 8, + EQUIP_FIGHT2_SLOT = 9, + EQUIP_PROJECTILE_SLOT = 10, + EQUIP_VECTOREND + }; +#else enum { // Equipment rules: EQUIP_LEGS_SLOT = 0, @@ -84,17 +105,20 @@ class EquipmentWindow : public Window, public gcn::ActionListener EQUIP_AMMO_SLOT, EQUIP_VECTOREND }; - +#endif private: void mouseExited(gcn::MouseEvent &event); void mouseMoved(gcn::MouseEvent &event); - Item* getItem(const int &x, const int &y); + Item* getItem(int x, int y) const; Equipment *mEquipment; +#ifdef EATHENA_SUPPORT Inventory *mInventory; +#endif gcn::Button *mUnequip; /**< Button for unequipping. */ + Image *mBackground; /**< Background Image. */ EquipBox mEquipBox[EQUIP_VECTOREND]; /**< Equipment Boxes. */ ItemPopup *mItemPopup; diff --git a/src/gui/focushandler.cpp b/src/gui/focushandler.cpp index c642127d..b9cfd789 100644 --- a/src/gui/focushandler.cpp +++ b/src/gui/focushandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/focushandler.h b/src/gui/focushandler.h index fc5dd240..b0639bd8 100644 --- a/src/gui/focushandler.h +++ b/src/gui/focushandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/gccontainer.cpp b/src/gui/gccontainer.cpp index 7aebed15..8325ccd4 100644 --- a/src/gui/gccontainer.cpp +++ b/src/gui/gccontainer.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/gccontainer.h b/src/gui/gccontainer.h index 2071955d..da584a42 100644 --- a/src/gui/gccontainer.h +++ b/src/gui/gccontainer.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 5bdab453..87ce74fa 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -95,7 +94,7 @@ Gui::Gui(Graphics *graphics): mFocusHandler = new FocusHandler; // Initialize top GUI widget - WindowContainer *guiTop = new WindowContainer(); + WindowContainer *guiTop = new WindowContainer; guiTop->setDimension(gcn::Rectangle(0, 0, graphics->getWidth(), graphics->getHeight())); guiTop->setOpaque(false); @@ -105,7 +104,8 @@ Gui::Gui(Graphics *graphics): ResourceManager *resman = ResourceManager::getInstance(); // Set global font - std::string path = resman->getPath("fonts/dejavusans.ttf"); + std::string path = resman->getPath( + branding.getValue("font", "fonts/dejavusans.ttf")); try { const int fontSize = (int)config.getValue("fontSize", 11); @@ -119,7 +119,8 @@ Gui::Gui(Graphics *graphics): } // Set bold font - path = resman->getPath("fonts/dejavusans-bold.ttf"); + path = resman->getPath( + branding.getValue("boldFont", "fonts/dejavusans.ttf")); try { const int fontSize = (int)config.getValue("fontSize", 11); @@ -139,7 +140,7 @@ Gui::Gui(Graphics *graphics): config.addListener("customcursor", mConfigListener); // Create the viewport - viewport = new Viewport(); + viewport = new Viewport; viewport->setDimension(gcn::Rectangle(0, 0, graphics->getWidth(), graphics->getHeight())); guiTop->add(viewport); diff --git a/src/gui/gui.h b/src/gui/gui.h index 609648fd..2ce153db 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/guildlistbox.cpp b/src/gui/guildlistbox.cpp new file mode 100644 index 00000000..a4d39741 --- /dev/null +++ b/src/gui/guildlistbox.cpp @@ -0,0 +1,130 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "guildlistbox.h" + +#include "../graphics.h" + +#include "../resources/image.h" +#include "../resources/resourcemanager.h" + +#include <guichan/font.hpp> + +GuildListBox::GuildListBox(): + ListBox(NULL) +{ + onlineIcon = ResourceManager::getInstance()->getImage("graphics/gui/circle-green.png"); + offlineIcon = ResourceManager::getInstance()->getImage("graphics/gui/circle-gray.png"); +} + +void GuildListBox::draw(gcn::Graphics *gcnGraphics) +{ + if (!mListModel) + return; + + Graphics *graphics = static_cast<Graphics*>(gcnGraphics); + + graphics->setColor(gcn::Color(110, 160, 255)); + graphics->setFont(getFont()); + + int fontHeight = getFont()->getHeight(); + + // Draw rectangle below the selected list element + if (mSelected >= 0) { + graphics->fillRectangle(gcn::Rectangle(0, fontHeight * mSelected, + getWidth(), fontHeight)); + } + + // Draw the list elements + for (int i = 0, y = 0; + i < mListModel->getNumberOfElements(); + ++i, y += fontHeight) + { + // Draw online status + bool online = false; + UserMap::iterator itr = mUsers.find(mListModel->getElementAt(i)); + if (itr != mUsers.end()) + { + online = itr->second; + } + Image *icon = online ? onlineIcon : offlineIcon; + if (icon) + graphics->drawImage(icon, 1, y); + // Draw Name + graphics->setColor(gcn::Color(0, 0, 0)); + graphics->drawText(mListModel->getElementAt(i), 33, y); + } +} +/* +void GuildListBox::setSelected(int selected) +{ + if (!mListModel) + { + mSelected = -1; + } + else + { + // Update mSelected with bounds checking + mSelected = std::min(mListModel->getNumberOfElements() - 1, + std::max(-1, selected)); + + gcn::Widget *parent; + parent = (gcn::Widget*)getParent(); + if (parent) + { + gcn::Rectangle scroll; + scroll.y = (mSelected < 0) ? 0 : getFont()->getHeight() * mSelected; + scroll.height = getFont()->getHeight(); + parent->showWidgetPart(this, scroll); + } + } + + distributeValueChangedEvent(); +} +*/ +void GuildListBox::mousePressed(gcn::MouseEvent &event) +{ + if (event.getButton() == gcn::MouseEvent::LEFT) + { + int y = event.getY(); + setSelected(y / getFont()->getHeight()); + distributeActionEvent(); + } + // TODO: Add guild functions, ie private messaging + if (event.getButton() == gcn::MouseEvent::RIGHT) + { + // Show context menu + } +} + +void GuildListBox::setOnlineStatus(const std::string &user, bool online) +{ + UserMap::iterator itr = mUsers.find(user); + if (itr == mUsers.end()) + { + mUsers.insert(std::pair<std::string, bool>(user, online)); + } + else + { + itr->second = online; + } + adjustSize(); +} diff --git a/src/gui/guildlistbox.h b/src/gui/guildlistbox.h new file mode 100644 index 00000000..8d6e74f1 --- /dev/null +++ b/src/gui/guildlistbox.h @@ -0,0 +1,65 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef GUI_GUILDLISTBOX_H +#define GUI_GUILDLISTBOX_H + +#include <map> +#include <string> +#include <vector> + +#include "listbox.h" + +class Image; + +class GuildListBox : public ListBox +{ +public: + /** + * Constructor + */ + GuildListBox(); + + /** + * Draws the list box. + */ + void draw(gcn::Graphics *gcnGraphics); + + void mousePressed(gcn::MouseEvent &event); + + /** + * Sets the index of the selected element. + */ +// void setSelected(int selected); + + /** + * Set whether a member is online or offline + */ + void setOnlineStatus(const std::string &user, bool online); + +private: + Image *onlineIcon; + Image *offlineIcon; + typedef std::map<std::string, bool> UserMap; + UserMap mUsers; +}; + +#endif diff --git a/src/gui/guildwindow.cpp b/src/gui/guildwindow.cpp new file mode 100644 index 00000000..c8a1872f --- /dev/null +++ b/src/gui/guildwindow.cpp @@ -0,0 +1,273 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * $$ + */ + +#include "guildwindow.h" + +#include "button.h" +#include "chat.h" +#include "confirm_dialog.h" +#include "guildlistbox.h" +#include "scrollarea.h" +#include "textdialog.h" +#include "windowcontainer.h" + +#include "widgets/layout.h" +#include "widgets/tabbedarea.h" + +#include "../guild.h" +#include "../log.h" +#include "../localplayer.h" + +#include "../net/tmwserv/chatserver/guild.h" +#include "../utils/dtor.h" +#include "../utils/gettext.h" + +#include <algorithm> + +#include <guichan/widgets/tab.hpp> + +GuildWindow::GuildWindow(): + Window(_("Guild")), + mFocus(false) +{ + setWindowName("Guild"); + setCaption(_("Guild")); + setResizable(false); + setCloseButton(true); + setMinWidth(200); + setMinHeight(280); + setDefaultSize(124, 41, 288, 330); + + // Set button events Id + mGuildButton[0] = new Button(_("Create Guild"), "CREATE_GUILD", this); + mGuildButton[1] = new Button(_("Invite User"), "INVITE_USER", this); + mGuildButton[2] = new Button(_("Quit Guild"), "QUIT_GUILD", this); + mGuildButton[1]->setEnabled(false); + mGuildButton[2]->setEnabled(false); + + mGuildTabs = new TabbedArea(); + + place(0, 0, mGuildButton[0]); + place(1, 0, mGuildButton[1]); + place(2, 0, mGuildButton[2]); + place(0, 1, mGuildTabs); + Layout &layout = getLayout(); + layout.setColWidth(0, 48); + layout.setColWidth(1, 65); + + loadWindowState(); +} + +GuildWindow::~GuildWindow() +{ + delete mGuildTabs; +} + +void GuildWindow::update() +{ + updateTab(); + + if (mGuildButton[2]->isEnabled() && mGuildTabs->getNumberOfTabs() <= 0) + { + mGuildButton[2]->setEnabled(false); + mGuildButton[1]->setEnabled(false); + } +} + +void GuildWindow::draw(gcn::Graphics *g) +{ + update(); + + Window::draw(g); +} + +void GuildWindow::action(const gcn::ActionEvent &event) +{ + const std::string &eventId = event.getId(); + + // Stats Part + if (eventId == "CREATE_GUILD") + { + // Set focus so that guild name to be created can be typed. + mFocus = true; + guildDialog = new TextDialog("Guild Name", "Choose your guild's name", this); + guildDialog->setOKButtonActionId("CREATE_GUILD_OK"); + guildDialog->addActionListener(this); + } + else if (eventId == "INVITE_USER") + { + // TODO - Give feedback on whether the invite succeeded + mFocus = true; + inviteDialog = new TextDialog("Member Invite", "Who would you like to invite?", this); + inviteDialog->setOKButtonActionId("INVITE_USER_OK"); + inviteDialog->addActionListener(this); + } + else if (eventId == "QUIT_GUILD") + { + short guild = getSelectedGuild(); + if (guild) + { + Net::ChatServer::Guild::quitGuild(guild); + localChatTab->chatLog("Guild " + mGuildTabs->getSelectedTab()->getCaption() + " quit", BY_SERVER); + } + } + else if (eventId == "CREATE_GUILD_OK") + { + std::string name = guildDialog->getText(); + if(name.size() > 16) + { + // TODO : State too many characters in input. + return; + } + // Process guild name to be created, and unfocus. + Net::ChatServer::Guild::createGuild(name); + + // Defocus dialog + mFocus = false; + localChatTab->chatLog("Creating Guild called " + name, BY_SERVER); + guildDialog->scheduleDelete(); + } + else if (eventId == "INVITE_USER_OK") + { + std::string name = inviteDialog->getText(); + short selectedGuild = getSelectedGuild(); + + // Process invited user to be created and unfocus. + Net::ChatServer::Guild::invitePlayer(name, selectedGuild); + + // Defocus dialog + mFocus = false; + localChatTab->chatLog("Invited user " + name, BY_SERVER); + inviteDialog->scheduleDelete(); + } + else if (eventId == "yes") + { + logger->log("Sending invitation acceptance."); + Net::ChatServer::Guild::acceptInvite(invitedGuild); + } +} + +void GuildWindow::newGuildTab(const std::string &guildName) +{ + // Create new tab + GuildListBox *list = new GuildListBox(); + list->setListModel(player_node->getGuild(guildName)); + ScrollArea *sa = new ScrollArea(list); + sa->setDimension(gcn::Rectangle(5, 5, 135, 250)); + + // Add the listbox to the map + mGuildLists.insert(std::pair<std::string, GuildListBox*>(guildName, list)); + + mGuildTabs->addTab(guildName, sa); + mGuildTabs->setDimension(gcn::Rectangle(28,35,140,250)); + + updateTab(); +} + +void GuildWindow::updateTab() +{ + gcn::Tab *tab = mGuildTabs->getSelectedTab(); + if (tab) + { + setTab(tab->getCaption()); + } + mGuildTabs->logic(); +} + +void GuildWindow::setTab(const std::string &guildName) +{ + // Only enable invite button if user has rights + if(player_node->checkInviteRights(guildName)) + { + mGuildButton[1]->setEnabled(true); + } + else + { + mGuildButton[1]->setEnabled(false); + } + + mGuildButton[2]->setEnabled(true); +} + +bool GuildWindow::isWindowFocused() +{ + return mFocus; +} + +short GuildWindow::getSelectedGuild() +{ + if (mGuildTabs->getNumberOfTabs() > 0) + { + + Guild *guild = player_node->getGuild(mGuildTabs->getSelectedTab()->getCaption()); + + if (guild) + { + return guild->getId(); + } + } + + return 0; +} + +void GuildWindow::openAcceptDialog(const std::string &inviterName, + const std::string &guildName) +{ + std::string msg = inviterName + " has invited you to join the guild " + guildName; + localChatTab->chatLog(msg, BY_SERVER); + + acceptDialog = new ConfirmDialog("Accept Guild Invite", msg, this); + acceptDialog->addActionListener(this); + + invitedGuild = guildName; +} + +void GuildWindow::requestMemberList(short guildId) +{ + // Get the list of members for displaying in the guild window. + Net::ChatServer::Guild::getGuildMembers(guildId); +} + +void GuildWindow::removeTab(int guildId) +{ + Guild* guild = player_node->getGuild(guildId); + if (guild) + { + Tab *tab = mGuildTabs->getTab(guild->getName()); + if (tab) + { + mGuildTabs->removeTab(tab); + } + updateTab(); + } + mGuildTabs->logic(); +} + +void GuildWindow::setOnline(const std::string &guildName, const std::string &member, + bool online) +{ + GuildListMap::iterator itr = mGuildLists.find(guildName); + if (itr != mGuildLists.end()) + { + itr->second->setOnlineStatus(member, online); + } +} diff --git a/src/gui/guildwindow.h b/src/gui/guildwindow.h new file mode 100644 index 00000000..88a084e9 --- /dev/null +++ b/src/gui/guildwindow.h @@ -0,0 +1,135 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef GUI_GUILDWINDOW_H +#define GUI_GUILDWINDOW_H + +#include <iosfwd> +#include <map> +#include <vector> + +#include <guichan/actionlistener.hpp> +#include <guichan/widgets/listbox.hpp> + +#include "window.h" + +#include "../guichanfwd.h" + +class LocalPlayer; +class TextDialog; +class ConfirmDialog; +class GuildListBox; +class ScrollArea; +class GCContainer; +class TabbedArea; + +class GuildWindow : public Window, public gcn::ActionListener +{ +public: + /** + * Constructor. + */ + GuildWindow(); + + /** + * Destructor. + */ + ~GuildWindow(); + + /** + * Called when receiving actions from widget. + */ + void action(const gcn::ActionEvent &event); + + /** + * Draw this window. + */ + void draw(gcn::Graphics *graphics); + + /** + * Updates this dialog. + */ + void update(); + + /** + * Create a new tab for a guild list. + */ + void newGuildTab(const std::string &guildName); + + /** + * Display guild's member list to active tab + */ + void setTab(const std::string &guildName); + + /** + * Update the contents of the active tab + */ + void updateTab(); + + /** + * Check if the window is in focus. + */ + bool isWindowFocused(); + + /** + * Create a dialog for accepting an invite + */ + void openAcceptDialog(const std::string &inviterName, const std::string &guildName); + + /** + * Request member list + */ + void requestMemberList(short guildId); + + /** + * Removes the selected tab + */ + void removeTab(int guildId); + + /** + * Set guild member status in userlist + */ + void setOnline(const std::string &guildName, const std::string &member, + bool online); + +protected: + /** + * Get selected guild tab + * @return Returns selected guild + */ + short getSelectedGuild(); + +private: + gcn::Button *mGuildButton[3]; + TextDialog *guildDialog; + TextDialog *inviteDialog; + ConfirmDialog *acceptDialog; + TabbedArea *mGuildTabs; + ScrollArea *mScrollArea; + bool mFocus; + std::string invitedGuild; + typedef std::map<std::string, GuildListBox*> GuildListMap; + GuildListMap mGuildLists; +}; + +extern GuildWindow *guildWindow; + +#endif diff --git a/src/gui/help.cpp b/src/gui/help.cpp index 0974abf7..4b4ba983 100644 --- a/src/gui/help.cpp +++ b/src/gui/help.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,12 +36,12 @@ HelpWindow::HelpWindow(): setMinWidth(300); setMinHeight(250); setContentSize(455, 350); - setWindowName(_("Help")); + setWindowName("Help"); setResizable(true); setDefaultSize(500, 400, ImageRect::CENTER); - mBrowserBox = new BrowserBox(); + mBrowserBox = new BrowserBox; mBrowserBox->setOpaque(false); mScrollArea = new ScrollArea(mBrowserBox); Button *okButton = new Button(_("Close"), "close", this); @@ -71,7 +70,7 @@ void HelpWindow::action(const gcn::ActionEvent &event) } } -void HelpWindow::handleLink(const std::string& link) +void HelpWindow::handleLink(const std::string &link) { std::string helpFile = link; loadHelp(helpFile); diff --git a/src/gui/help.h b/src/gui/help.h index 93d32c18..8764e733 100644 --- a/src/gui/help.h +++ b/src/gui/help.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -50,7 +49,7 @@ class HelpWindow : public Window, public LinkHandler, /** * Handles link action. */ - void handleLink(const std::string& link); + void handleLink(const std::string &link); /** * Loads help in the dialog. diff --git a/src/gui/icon.cpp b/src/gui/icon.cpp new file mode 100644 index 00000000..c4f0ecc3 --- /dev/null +++ b/src/gui/icon.cpp @@ -0,0 +1,58 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "icon.h" + +#include "../graphics.h" + +#include "../resources/image.h" +#include "../resources/resourcemanager.h" + +Icon::Icon(const std::string &file) + : mImage(0) +{ + mImage = ResourceManager::getInstance()->getImage(file); + setSize(mImage->getWidth(), mImage->getHeight()); + +} + +Icon::Icon(Image *image) + : mImage(image) +{ + setSize(mImage->getWidth(), mImage->getHeight()); +} + +void Icon::setImage(Image *image) +{ + mImage = image; + setSize(mImage->getWidth(), mImage->getHeight()); +} + +void Icon::draw(gcn::Graphics *g) +{ + if(mImage) + { + Graphics *graphics = static_cast<Graphics*>(g); + const int x = (getWidth() - mImage->getWidth()) / 2; + const int y = (getHeight() - mImage->getHeight()) / 2; + graphics->drawImage(mImage, x, y); + } +} diff --git a/src/gui/icon.h b/src/gui/icon.h new file mode 100644 index 00000000..f8d77e0f --- /dev/null +++ b/src/gui/icon.h @@ -0,0 +1,66 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef ICON_H +#define ICON_H + +#include <guichan/widget.hpp> + +class Image; + +/** + * An icon. + * + * \ingroup GUI + */ +class Icon : public gcn::Widget +{ + public: + /** + * Constructor. + */ + Icon(const std::string &filename); + + /** + * Constructor, uses an existing Image. + */ + Icon(Image *image); + + /** + * Gets the current Image. + */ + Image *getImage() const { return mImage; } + + /** + * Sets the image to display. + */ + void setImage(Image *image); + + /** + * Draws the Icon. + */ + void draw(gcn::Graphics *g); + + private: + Image *mImage; +}; + +#endif // ICON_H diff --git a/src/gui/inttextfield.cpp b/src/gui/inttextfield.cpp index 40bbd887..d3fe448b 100644 --- a/src/gui/inttextfield.cpp +++ b/src/gui/inttextfield.cpp @@ -1,8 +1,8 @@ /* - * Aethyra - * Copyright (C) 2008 Douglas Boffey <dougaboffey@netscape.net> + * The Mana World + * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,6 +57,16 @@ void IntTextField::setRange(int min, int max) { mMin = min; mMax = max; + + if (mValue < mMin) + mValue = mMin; + else if (mValue > mMax) + mValue = mMax; + + if (mDefault < mMin) + mDefault = mMin; + else if (mDefault > mMax) + mDefault = mMax; } int IntTextField::getValue() @@ -66,18 +76,28 @@ int IntTextField::getValue() void IntTextField::setValue(int i) { - if (i >= mMin && i <= mMax) - mValue = i; - else if (i < mMin) + if (i < mMin) mValue = mMin; else if (i > mMax) mValue = mMax; + else + mValue = i; const std::string valStr = toString(mValue); setText(valStr); setCaretPosition(valStr.length() + 1); } +void IntTextField::setDefaultValue(int value) +{ + if (value < mMin) + mDefault = mMin; + else if (value > mMax) + mDefault = mMax; + else + mDefault = value; +} + void IntTextField::reset() { setValue(mDefault); diff --git a/src/gui/inttextfield.h b/src/gui/inttextfield.h index f2e294ca..ec768bea 100644 --- a/src/gui/inttextfield.h +++ b/src/gui/inttextfield.h @@ -1,8 +1,8 @@ /* - * Aethyra - * Copyright (C) 2008 Douglas Boffey <dougaboffey@netscape.net> + * The Mana World + * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -56,6 +56,11 @@ class IntTextField : public TextField void setValue(int value); /** + * Set the default value of the text box to the specified value. + */ + void setDefaultValue(int value); + + /** * Responds to key presses. */ void keyPressed(gcn::KeyEvent &event); diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp index fef55b6c..21d2df3f 100644 --- a/src/gui/inventorywindow.cpp +++ b/src/gui/inventorywindow.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,6 +31,7 @@ #include "label.h" #include "progressbar.h" #include "scrollarea.h" +#include "sdlinput.h" #include "viewport.h" #include "widgets/layout.h" @@ -39,6 +39,7 @@ #include "../inventory.h" #include "../item.h" #include "../localplayer.h" +#include "../units.h" #include "../resources/iteminfo.h" @@ -48,14 +49,19 @@ InventoryWindow::InventoryWindow(int invSize): Window(_("Inventory")), mMaxSlots(invSize), + mSplit(false), mItemDesc(false) { - setWindowName(_("Inventory")); - setResizable(true); + setWindowName("Inventory"); + setResizable(false); setCloseButton(true); - + // LEEOR/TODO: Since this window is not resizable, do we really need to set these + // values or can we drop them? + setMinWidth(375); + setMinHeight(283); // If you adjust these defaults, don't forget to adjust the trade window's. setDefaultSize(375, 300, ImageRect::CENTER); + addKeyListener(this); std::string longestUseString = getFont()->getWidth(_("Equip")) > getFont()->getWidth(_("Use")) ? @@ -69,16 +75,23 @@ InventoryWindow::InventoryWindow(int invSize): mUseButton = new Button(longestUseString, "use", this); mDropButton = new Button(_("Drop"), "drop", this); - - mItems = new ItemContainer(player_node->getInventory(), 2); +#ifdef TMWSERV_SUPPORT + mSplitButton = new Button(_("Split"), "split", this); +#endif + +#ifdef TMWSERV_SUPPORT + mItems = new ItemContainer(player_node->getInventory(), 10, 5); +#else + mItems = new ItemContainer(player_node->getInventory(), 10, 5, 2); +#endif mItems->addSelectionListener(this); mInvenScroll = new ScrollArea(mItems); mInvenScroll->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); - mTotalWeight = player_node->mTotalWeight; - mMaxWeight = player_node->mMaxWeight; - mUsedSlots = player_node->getInventory()->getNumberOfSlotsUsed(); + mTotalWeight = -1; + mMaxWeight = -1; + mUsedSlots = -1; mSlotsLabel = new Label(_("Slots: ")); mWeightLabel = new Label(_("Weight: ")); @@ -93,12 +106,15 @@ InventoryWindow::InventoryWindow(int invSize): place(1, 0, mWeightBar, 3); place(4, 0, mSlotsLabel).setPadding(3); place(5, 0, mSlotsBar, 2); - place(0, 1, mInvenScroll, 7, 4); - place(5, 5, mDropButton); - place(6, 5, mUseButton); + place(0, 1, mInvenScroll, 100).setPadding(3); + place(0, 2, mUseButton); + place(1, 2, mDropButton); +#ifdef TMWSERV_SUPPORT + place(2, 2, mSplitButton); +#endif Layout &layout = getLayout(); - layout.setRowHeight(0, mDropButton->getHeight()); + layout.setRowHeight(0, Layout::AUTO_SET); loadWindowState(); } @@ -121,17 +137,18 @@ void InventoryWindow::logic() const int usedSlots = player_node->getInventory()->getNumberOfSlotsUsed(); - if (mMaxWeight != player_node->mMaxWeight || - mTotalWeight != player_node->mTotalWeight || mUsedSlots != usedSlots) + if (mMaxWeight != player_node->getMaxWeight() || + mTotalWeight != player_node->getTotalWeight() || + mUsedSlots != usedSlots) { - mTotalWeight = player_node->mTotalWeight; - mMaxWeight = player_node->mMaxWeight; + mTotalWeight = player_node->getTotalWeight(); + mMaxWeight = player_node->getMaxWeight(); mUsedSlots = usedSlots; // Weight Bar coloration if (mTotalWeight < (mMaxWeight / 3)) mWeightBar->setColor(0, 0, 255); // Blue - else if (mTotalWeight < ((mMaxWeight / 3) * 2)) + else if (mTotalWeight < ((mMaxWeight * 2) / 3)) mWeightBar->setColor(255, 255, 0); // Yellow else mWeightBar->setColor(255, 0, 0); // Red @@ -141,7 +158,9 @@ void InventoryWindow::logic() mWeightBar->setProgress((float) mTotalWeight / mMaxWeight); mSlotsBar->setText(strprintf("%d/%d", mUsedSlots, mMaxSlots)); - mWeightBar->setText(strprintf("%dg/%dg", mTotalWeight, mMaxWeight)); + mWeightBar->setText(strprintf("%s/%s", + Units::formatWeight(mTotalWeight).c_str(), + Units::formatWeight(mMaxWeight).c_str())); } } @@ -154,6 +173,14 @@ void InventoryWindow::action(const gcn::ActionEvent &event) if (event.getId() == "use") { +#ifdef TMWSERV_SUPPORT + if (item->isEquipment()) { + player_node->equipItem(item); + } + else { + player_node->useItem(item->getInvIndex()); + } +#else if (item->isEquipment()) { if (item->isEquipped()) @@ -163,19 +190,33 @@ void InventoryWindow::action(const gcn::ActionEvent &event) } else player_node->useItem(item); +#endif } else if (event.getId() == "drop") { - if (item->getQuantity() == 1) - player_node->dropItem(item, 1); - else - { + if (item->getQuantity() > 1) { // Choose amount of items to drop new ItemAmountWindow(AMOUNT_ITEM_DROP, this, item); } + else { + player_node->dropItem(item, 1); + } + mItems->selectNone(); + } + else if (event.getId() == "split") + { + if (item && !item->isEquipment() && item->getQuantity() > 1) { + new ItemAmountWindow(AMOUNT_ITEM_SPLIT, this, item, + (item->getQuantity() - 1)); + } } } +Item* InventoryWindow::getSelectedItem() const +{ + return mItems->getSelectedItem(); +} + void InventoryWindow::mouseClicked(gcn::MouseEvent &event) { Window::mouseClicked(event); @@ -196,15 +237,55 @@ void InventoryWindow::mouseClicked(gcn::MouseEvent &event) } } +#ifdef TMWSERV_SUPPORT +void InventoryWindow::keyPressed(gcn::KeyEvent &event) +{ + switch (event.getKey().getValue()) + { + case Key::LEFT_SHIFT: + case Key::RIGHT_SHIFT: + mSplit = true; + break; + } +} + +void InventoryWindow::keyReleased(gcn::KeyEvent &event) +{ + switch (event.getKey().getValue()) + { + case Key::LEFT_SHIFT: + case Key::RIGHT_SHIFT: + mSplit = false; + break; + } +} +#endif + +void InventoryWindow::valueChanged(const gcn::SelectionEvent &event) +{ + if (mSplit) + { + Item *item = mItems->getSelectedItem(); + + if (item && !item->isEquipment() && item->getQuantity() > 1) + { + mSplit = false; + new ItemAmountWindow(AMOUNT_ITEM_SPLIT, this, item, (item->getQuantity() - 1)); + } + } +} + void InventoryWindow::updateButtons() { const Item *selectedItem = mItems->getSelectedItem(); if (selectedItem && selectedItem->isEquipment()) { +#ifdef EATHENA_SUPPORT if (selectedItem->isEquipped()) mUseButton->setCaption(_("Unequip")); else +#endif mUseButton->setCaption(_("Equip")); } else @@ -212,9 +293,15 @@ void InventoryWindow::updateButtons() mUseButton->setEnabled(selectedItem != 0); mDropButton->setEnabled(selectedItem != 0); -} -Item* InventoryWindow::getSelectedItem() const -{ - return mItems->getSelectedItem(); +#ifdef TMWSERV_SUPPORT + if (selectedItem && !selectedItem->isEquipment() && + selectedItem->getQuantity() > 1) + { + mSplitButton->setEnabled(true); + } + else { + mSplitButton->setEnabled(false); + } +#endif } diff --git a/src/gui/inventorywindow.h b/src/gui/inventorywindow.h index 5035bf1c..0bdc8809 100644 --- a/src/gui/inventorywindow.h +++ b/src/gui/inventorywindow.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,13 +22,14 @@ #ifndef INVENTORYWINDOW_H #define INVENTORYWINDOW_H -#include <guichan/actionlistener.hpp> -#include <guichan/selectionlistener.hpp> - #include "window.h" #include "../inventory.h" +#include <guichan/actionlistener.hpp> +#include <guichan/keylistener.hpp> +#include <guichan/selectionlistener.hpp> + class Item; class ItemContainer; class ProgressBar; @@ -40,14 +40,20 @@ class TextBox; * * \ingroup Interface */ -class InventoryWindow : public Window, gcn::ActionListener, - gcn::SelectionListener +class InventoryWindow : public Window, + public gcn::ActionListener, + public gcn::KeyListener, + public gcn::SelectionListener { public: /** * Constructor. */ +#ifdef TMWSERV_SUPPORT + InventoryWindow(int invSize = (INVENTORY_SIZE)); +#else InventoryWindow(int invSize = (INVENTORY_SIZE - 2)); +#endif /** * Destructor. @@ -69,8 +75,28 @@ class InventoryWindow : public Window, gcn::ActionListener, */ Item* getSelectedItem() const; + /** + * Handles the mouse clicks. + */ void mouseClicked(gcn::MouseEvent &event); +#ifdef TMWSERV_SUPPORT + /** + * Handles the key presses. + */ + void keyPressed(gcn::KeyEvent &event); + + /** + * Handles the key releases. + */ + void keyReleased(gcn::KeyEvent &event); +#endif + + /** + * Updates labels to currently selected item. + */ + void valueChanged(const gcn::SelectionEvent &event); + private: void updateButtons(); /**< Updates button states. */ @@ -81,9 +107,12 @@ class InventoryWindow : public Window, gcn::ActionListener, int mUsedSlots; int mTotalWeight; int mMaxWeight; - gcn::Button *mUseButton, *mDropButton; - gcn::ScrollArea *mInvenScroll; - + gcn::Button *mUseButton; + gcn::Button *mDropButton; +#ifdef TMWSERV_SUPPORT + gcn::Button *mSplitButton; +#endif + gcn::ScrollArea *mInvenScroll; /**< Inventory Scroll Area. */ gcn::Label *mWeightLabel; gcn::Label *mSlotsLabel; @@ -92,6 +121,7 @@ class InventoryWindow : public Window, gcn::ActionListener, int mMaxSlots; + bool mSplit; bool mItemDesc; }; diff --git a/src/gui/item_amount.cpp b/src/gui/item_amount.cpp index 5b3380c2..0f6aa593 100644 --- a/src/gui/item_amount.cpp +++ b/src/gui/item_amount.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +23,9 @@ #include "item_amount.h" #include "label.h" #include "slider.h" +#ifdef EATHENA_SUPPORT #include "storagewindow.h" +#endif #include "trade.h" #include "widgets/layout.h" @@ -35,12 +36,16 @@ #include "../utils/gettext.h" #include "../utils/strprintf.h" -ItemAmountWindow::ItemAmountWindow(int usage, Window *parent, Item *item): +ItemAmountWindow::ItemAmountWindow(int usage, Window *parent, Item *item, + int maxRange): Window("", true, parent), mItem(item), - mMax(item->getQuantity()), + mMax(maxRange), mUsage(usage) { + if (!mMax) + mMax = mItem->getQuantity(); + setCloseButton(true); // Integer field @@ -94,6 +99,9 @@ ItemAmountWindow::ItemAmountWindow(int usage, Window *parent, Item *item): case AMOUNT_STORE_REMOVE: setCaption(_("Select amount of items to retrieve.")); break; + case AMOUNT_ITEM_SPLIT: + setCaption(_("Select amount of items to split.")); + break; default: break; } @@ -140,12 +148,18 @@ void ItemAmountWindow::action(const gcn::ActionEvent &event) case AMOUNT_ITEM_DROP: player_node->dropItem(mItem, amount); break; +#ifdef TMWSERV_SUPPORT + case AMOUNT_ITEM_SPLIT: + player_node->splitItem(mItem, amount); + break; +#else case AMOUNT_STORE_ADD: storageWindow->addStore(mItem, amount); break; case AMOUNT_STORE_REMOVE: storageWindow->removeStore(mItem, amount); break; +#endif default: return; break; diff --git a/src/gui/item_amount.h b/src/gui/item_amount.h index 34b33b37..344f8c28 100644 --- a/src/gui/item_amount.h +++ b/src/gui/item_amount.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,9 +33,10 @@ class Item; #define AMOUNT_ITEM_DROP 2 #define AMOUNT_STORE_ADD 3 #define AMOUNT_STORE_REMOVE 4 +#define AMOUNT_ITEM_SPLIT 5 /** - * Window used for selecting the amount of items to drop or trade. + * Window used for selecting the amount of items to drop, trade or split. * * \ingroup Interface */ @@ -46,7 +46,7 @@ class ItemAmountWindow : public Window, public gcn::ActionListener /** * Constructor. */ - ItemAmountWindow(int usage, Window *parent, Item *item); + ItemAmountWindow(int usage, Window *parent, Item *item, int maxRange = 0); /** * Called when receiving actions from widget. diff --git a/src/gui/itemcontainer.cpp b/src/gui/itemcontainer.cpp index 8139e85e..960f58ad 100644 --- a/src/gui/itemcontainer.cpp +++ b/src/gui/itemcontainer.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,49 +19,72 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <guichan/mouseinput.hpp> -#include <guichan/selectionlistener.hpp> +#include "gui/itemcontainer.h" -#include "itemcontainer.h" -#include "itempopup.h" -#include "palette.h" -#include "viewport.h" +#include "gui/chat.h" +#include "gui/itempopup.h" +#include "gui/palette.h" +#include "gui/sdlinput.h" +#include "gui/viewport.h" -#include "../graphics.h" -#include "../inventory.h" -#include "../item.h" -#include "../itemshortcut.h" -#include "../localplayer.h" -#include "../log.h" +#include "graphics.h" +#include "inventory.h" +#include "item.h" +#include "itemshortcut.h" +#include "localplayer.h" +#include "log.h" -#include "../resources/image.h" -#include "../resources/resourcemanager.h" +#include "resources/image.h" +#include "resources/iteminfo.h" +#include "resources/resourcemanager.h" -#include "../utils/stringutils.h" +#include "utils/stringutils.h" -const int ItemContainer::gridWidth = 36; // item icon width + 4 -const int ItemContainer::gridHeight = 42; // item icon height + 10 +#include <guichan/mouseinput.hpp> +#include <guichan/selectionlistener.hpp> -static const int NO_ITEM = -1; +// TODO: Add support for adding items to the item shortcut window (global +// itemShortcut). -ItemContainer::ItemContainer(Inventory *inventory, int offset): +static const int BOX_WIDTH = 36; +static const int BOX_HEIGHT = 44; + +enum +{ + SEL_NONE = 0, + SEL_SELECTED, + SEL_SELECTING, + SEL_DESELECTING, + SEL_DRAGGING +}; + +ItemContainer::ItemContainer(Inventory *inventory, + int gridColumns, + int gridRows, + int offset): mInventory(inventory), - mSelectedItemIndex(NO_ITEM), - mLastSelectedItemId(NO_ITEM), - mOffset(offset) + mGridColumns(gridColumns), + mGridRows(gridRows), + mOffset(offset), + mSelectedItem(NULL), + mHighlightedItem(NULL), + mSelectionStatus(SEL_NONE), + mSwapItems(false), + mDescItems(false) { mItemPopup = new ItemPopup(); - mItemPopup->setOpaque(false); + setFocusable(true); ResourceManager *resman = ResourceManager::getInstance(); mSelImg = resman->getImage("graphics/gui/selection.png"); if (!mSelImg) logger->error("Unable to load selection.png"); - mMaxItems = mInventory->getLastUsedSlot() - (mOffset - 1); // Count from 0, usage from 2 - + addKeyListener(this); addMouseListener(this); - addWidgetListener(this); + + setSize((BOX_WIDTH - 1) * mGridColumns + 1, + (BOX_HEIGHT - 1) * mGridRows + 1); } ItemContainer::~ItemContainer() @@ -71,185 +93,214 @@ ItemContainer::~ItemContainer() delete mItemPopup; } -void ItemContainer::logic() -{ - if (!isVisible()) - return; - - gcn::Widget::logic(); - - int i = mInventory->getLastUsedSlot() - (mOffset - 1); // Count from 0, usage from 2 - - if (i != mMaxItems) - { - mMaxItems = i; - recalculateHeight(); - } -} - void ItemContainer::draw(gcn::Graphics *graphics) { - if (!isVisible()) - return; - - int columns = getWidth() / gridWidth; + Graphics *g = static_cast<Graphics*>(graphics); - // Have at least 1 column - if (columns < 1) - columns = 1; - - /* - * mOffset is used to compensate for some weirdness that eAthena inherited - * from Ragnarok Online. Inventory slots and cart slots are +2 from their - * actual index, while storage slots are +1. - */ - for (int i = mOffset; i < mInventory->getSize(); i++) + for (int i = 0; i < mGridColumns; i++) { - Item *item = mInventory->getItem(i); - - if (!item || item->getQuantity() <= 0) - continue; + for (int j = 0; j < mGridRows; j++) + { + // Items positions made to overlap on another. + int itemX = i * (BOX_WIDTH - 1); + int itemY = j * (BOX_HEIGHT - 1); - int itemX = ((i - mOffset) % columns) * gridWidth; - int itemY = ((i - mOffset) / columns) * gridHeight; + // Set color to black. + g->setColor(gcn::Color(0, 0, 0)); + // Draw box border. + g->drawRectangle( + gcn::Rectangle(itemX, itemY, BOX_WIDTH, BOX_HEIGHT)); - // Draw selection image below selected item - if (mSelectedItemIndex == i) - static_cast<Graphics*>(graphics)->drawImage(mSelImg, itemX, itemY); + Item *item = mInventory->getItem((j * mGridColumns) + i); - // Draw item icon - Image* image = item->getImage(); + if (!item || item->getId() == 0) + continue; - if (image) - static_cast<Graphics*>(graphics)->drawImage(image, itemX, itemY); + Image *image = item->getImage(); + if (image) + { + if (item == mSelectedItem) + { + if (mSelectionStatus == SEL_DRAGGING) { + // Reposition the coords to that of the cursor. + itemX = mDragPosX - (BOX_WIDTH / 2); + itemY = mDragPosY - (BOX_HEIGHT / 2); + } + else { + // Draw selected image. + g->drawImage(mSelImg, itemX, itemY); + } + } + g->drawImage(image, itemX, itemY); + } + if (item->getQuantity() > 1) { + // Draw item caption + g->drawText( + toString(item->getQuantity()), + itemX + BOX_WIDTH / 2, + itemY + BOX_HEIGHT - 14, + gcn::Graphics::CENTER); + } - // Draw item caption - graphics->setFont(getFont()); - graphics->setColor(guiPalette->getColor(Palette::TEXT)); - graphics->drawText( - (item->isEquipped() ? "Eq." : toString(item->getQuantity())), - itemX + gridWidth / 2, itemY + gridHeight - 11, - gcn::Graphics::CENTER); + } } -} -void ItemContainer::widgetResized(const gcn::Event &event) -{ - recalculateHeight(); + if (isFocused() && mHighlightedItem) { + // Items positions made to overlap on another. + const int i = mHighlightedItem->getInvIndex(); + const int itemX = (i % mGridColumns) * (BOX_WIDTH - 1); + const int itemY = (i / mGridColumns) * (BOX_HEIGHT - 1); + // Set color to orange. + g->setColor(gcn::Color(255, 128, 0)); + // Draw box border. + g->drawRectangle(gcn::Rectangle(itemX, itemY, BOX_WIDTH, BOX_HEIGHT)); + } } -void ItemContainer::recalculateHeight() +void ItemContainer::selectNone() { - int cols = getWidth() / gridWidth; - - if (cols < 1) - cols = 1; - - const int rows = (mMaxItems / cols) + (mMaxItems % cols > 0 ? 1 : 0); - const int height = rows * gridHeight + 8; - - if (height != getHeight()) - setHeight(height); + setSelectedItem(NULL); } -Item *ItemContainer::getSelectedItem() +void ItemContainer::setSelectedItem(Item *item) { - refindSelectedItem(); // Make sure that we're still current - - if (mSelectedItemIndex == NO_ITEM) - return NULL; - - return mInventory->getItem(mSelectedItemIndex); + if (mSelectedItem != item) + { + mSelectedItem = item; + distributeValueChangedEvent(); + } } -void ItemContainer::selectNone() +void ItemContainer::distributeValueChangedEvent() { - setSelectedItemIndex(NO_ITEM); -} + SelectionListenerIterator iter; -void ItemContainer::refindSelectedItem() -{ - if (mSelectedItemIndex != NO_ITEM) + for (iter = mSelectionListeners.begin(); iter != mSelectionListeners.end(); + ++iter) { - - if (mInventory->getItem(mSelectedItemIndex) && - mInventory->getItem(mSelectedItemIndex)->getId() == mLastSelectedItemId) - return; // we're already fine - - // Otherwise ensure the invariant: we must point to an item of the specified last ID, - // or nowhere at all. - - for (int i = 0; i <= mMaxItems + 1; i++) - if (mInventory->getItem(i) && - mInventory->getItem(i)->getId() == mLastSelectedItemId) - { - mSelectedItemIndex = i; - return; - } + gcn::SelectionEvent event(this); + (*iter)->valueChanged(event); } - - mLastSelectedItemId = mSelectedItemIndex = NO_ITEM; } -void ItemContainer::setSelectedItemIndex(int index) +void ItemContainer::keyPressed(gcn::KeyEvent &event) { - int newSelectedItemIndex; - - /* - * mOffset is used to compensate for some weirdness that eAthena inherited from - * Ragnarok Online. Inventory slots and cart slots are +2 from their actual index, - * while storage slots are +1. - */ - if (index < 0 || index > mMaxItems + mOffset || mInventory->getItem(index) == NULL) - newSelectedItemIndex = NO_ITEM; - else - newSelectedItemIndex = index; - if (mSelectedItemIndex != newSelectedItemIndex) + switch (event.getKey().getValue()) { - mSelectedItemIndex = newSelectedItemIndex; - - if (mSelectedItemIndex == NO_ITEM) - mLastSelectedItemId = NO_ITEM; - else - mLastSelectedItemId = mInventory->getItem(index)->getId(); - - distributeValueChangedEvent(); + case Key::LEFT: + moveHighlight(MOVE_SELECTED_LEFT); + break; + case Key::RIGHT: + moveHighlight(MOVE_SELECTED_RIGHT); + break; + case Key::UP: + moveHighlight(MOVE_SELECTED_UP); + break; + case Key::DOWN: + moveHighlight(MOVE_SELECTED_DOWN); + break; + case Key::SPACE: + keyAction(); + break; + case Key::LEFT_ALT: + case Key::RIGHT_ALT: + mSwapItems = true; + break; + case Key::RIGHT_CONTROL: + mDescItems = true; + break; } } -void ItemContainer::distributeValueChangedEvent() +void ItemContainer::keyReleased(gcn::KeyEvent &event) { - gcn::SelectionEvent event(this); - std::list<gcn::SelectionListener*>::iterator i_end = mListeners.end(); - std::list<gcn::SelectionListener*>::iterator i; - - for (i = mListeners.begin(); i != i_end; ++i) + switch (event.getKey().getValue()) { - (*i)->valueChanged(event); + case Key::LEFT_ALT: + case Key::RIGHT_ALT: + mSwapItems = false; + break; + case Key::RIGHT_CONTROL: + mDescItems = false; + break; } } void ItemContainer::mousePressed(gcn::MouseEvent &event) { const int button = event.getButton(); - if (button == gcn::MouseEvent::LEFT || button == gcn::MouseEvent::RIGHT) { - int columns = getWidth() / gridWidth; - int mx = event.getX(); - int my = event.getY(); - int index = mx / gridWidth + ((my / gridHeight) * columns) + mOffset; - - itemShortcut->setItemSelected(-1); - setSelectedItemIndex(index); + const int index = getSlotIndex(event.getX(), event.getY()); + if (index == Inventory::NO_SLOT_INDEX) { + return; + } Item *item = mInventory->getItem(index); - if (item) + // put item name into chat window + if (mDescItems) + { + chatWindow->addItemText(item->getInfo().getName()); + } + + if (mSelectedItem && mSelectedItem == item) + { + mSelectionStatus = SEL_DESELECTING; + } + else if (item && item->getId()) + { + setSelectedItem(item); + mSelectionStatus = SEL_SELECTING; + itemShortcut->setItemSelected(item->getId()); + } + else + { + setSelectedItem(NULL); + mSelectionStatus = SEL_NONE; + } + } +} + +void ItemContainer::mouseDragged(gcn::MouseEvent &event) +{ + if (mSelectionStatus != SEL_NONE) + { + mSelectionStatus = SEL_DRAGGING; + mDragPosX = event.getX(); + mDragPosY = event.getY(); } } +void ItemContainer::mouseReleased(gcn::MouseEvent &event) +{ + switch (mSelectionStatus) + { + case SEL_SELECTING: + mSelectionStatus = SEL_SELECTED; + return; + case SEL_DESELECTING: + setSelectedItem(NULL); + mSelectionStatus = SEL_NONE; + return; + case SEL_DRAGGING: + mSelectionStatus = SEL_SELECTED; + break; + default: + return; + }; + + int index = getSlotIndex(event.getX(), event.getY()); + if (index == Inventory::NO_SLOT_INDEX) return; + Item *item = mInventory->getItem(index); + if (item == mSelectedItem) return; + player_node->moveInvItem(mSelectedItem, index); + setSelectedItem(NULL); + mSelectionStatus = SEL_NONE; +} + + // Show ItemTooltip void ItemContainer::mouseMoved(gcn::MouseEvent &event) { @@ -276,9 +327,95 @@ void ItemContainer::mouseExited(gcn::MouseEvent &event) int ItemContainer::getSlotIndex(const int posX, const int posY) const { - int columns = getWidth() / gridWidth; - int index = posX / gridWidth + ((posY / gridHeight) * columns) + mOffset; + if (getDimension().isPointInRect(posX, posY)) + { + // Takes into account, boxes are overlapping each other. + return (posY / (BOX_HEIGHT - 1)) * mGridColumns + (posX / (BOX_WIDTH - 1)); + } + return Inventory::NO_SLOT_INDEX; +} + +void ItemContainer::keyAction() +{ + // If there is no highlight then return. + if (!mHighlightedItem) + return; - return (index); + // If the highlight is on the selected item, then deselect it. + if (mHighlightedItem == mSelectedItem) + { + setSelectedItem(NULL); + mSelectionStatus = SEL_NONE; + } + // Check and swap items if necessary. + else if (mSwapItems && + mSelectedItem && + mHighlightedItem->getId()) + { + player_node->moveInvItem( + mSelectedItem, mHighlightedItem->getInvIndex()); + setSelectedItem(mHighlightedItem); + } + // If the highlight is on an item then select it. + else if (mHighlightedItem->getId()) + { + setSelectedItem(mHighlightedItem); + mSelectionStatus = SEL_SELECTED; + } + // If the highlight is on a blank space then move it. + else if (mSelectedItem) + { + player_node->moveInvItem( + mSelectedItem, mHighlightedItem->getInvIndex()); + setSelectedItem(NULL); + mSelectionStatus = SEL_NONE; + } } +void ItemContainer::moveHighlight(int direction) +{ + if (!mHighlightedItem) + { + if (mSelectedItem) { + mHighlightedItem = mSelectedItem; + } + else { + mHighlightedItem = mInventory->getItem(0); + } + return; + } + + switch (direction) + { + case MOVE_SELECTED_LEFT: + if (mHighlightedItem->getInvIndex() % mGridColumns == 0) + { + mHighlightedItem += mGridColumns; + } + mHighlightedItem--; + break; + case MOVE_SELECTED_RIGHT: + if ((mHighlightedItem->getInvIndex() % mGridColumns) == + (mGridColumns - 1)) + { + mHighlightedItem -= mGridColumns; + } + mHighlightedItem++; + break; + case MOVE_SELECTED_UP: + if (mHighlightedItem->getInvIndex() / mGridColumns == 0) + { + mHighlightedItem += (mGridColumns * mGridRows); + } + mHighlightedItem -= mGridColumns; + break; + case MOVE_SELECTED_DOWN: + if ((mHighlightedItem->getInvIndex() / mGridColumns) == + (mGridRows - 1)) + { + mHighlightedItem -= (mGridColumns * mGridRows); + } + mHighlightedItem += mGridColumns; + break; + } +} diff --git a/src/gui/itemcontainer.h b/src/gui/itemcontainer.h index fba4656f..38eaba01 100644 --- a/src/gui/itemcontainer.h +++ b/src/gui/itemcontainer.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,9 +24,9 @@ #include <list> +#include <guichan/keylistener.hpp> #include <guichan/mouselistener.hpp> #include <guichan/widget.hpp> -#include <guichan/widgetlistener.hpp> class Image; class Inventory; @@ -44,14 +43,19 @@ namespace gcn { * \ingroup GUI */ class ItemContainer : public gcn::Widget, - public gcn::MouseListener, - public gcn::WidgetListener + public gcn::KeyListener, + public gcn::MouseListener { public: /** * Constructor. Initializes the graphic. + * @param inventory + * @param gridColumns Amount of columns in grid. + * @param gridRows Amount of rows in grid. + * @param offset Index offset */ - ItemContainer(Inventory *inventory, int offset); + ItemContainer(Inventory *inventory, int gridColumns, int gridRows, + int offset = 0); /** * Destructor. @@ -59,19 +63,19 @@ class ItemContainer : public gcn::Widget, virtual ~ItemContainer(); /** - * Handles the logic of the ItemContainer + * Draws the items. */ - void logic(); + void draw(gcn::Graphics *graphics); /** - * Draws the items. + * Handles the key presses. */ - void draw(gcn::Graphics *graphics); + void keyPressed(gcn::KeyEvent &event); /** - * Called whenever the widget changes size. + * Handles the key releases. */ - void widgetResized(const gcn::Event &event); + void keyReleased(gcn::KeyEvent &event); /** * Handles mouse click. @@ -79,9 +83,20 @@ class ItemContainer : public gcn::Widget, void mousePressed(gcn::MouseEvent &event); /** + * Handles mouse dragged. + */ + void mouseDragged(gcn::MouseEvent &event); + + /** + * Handles mouse released. + */ + void mouseReleased(gcn::MouseEvent &event); + + /** * Returns the selected item. */ - Item* getSelectedItem(); + Item* getSelectedItem() const + { return mSelectedItem; } /** * Sets selected item to NULL. @@ -94,7 +109,7 @@ class ItemContainer : public gcn::Widget, */ void addSelectionListener(gcn::SelectionListener *listener) { - mListeners.push_back(listener); + mSelectionListeners.push_back(listener); } /** @@ -103,33 +118,50 @@ class ItemContainer : public gcn::Widget, */ void removeSelectionListener(gcn::SelectionListener *listener) { - mListeners.remove(listener); + mSelectionListeners.remove(listener); } + enum { + MOVE_SELECTED_LEFT, // 0 + MOVE_SELECTED_RIGHT, // 1 + MOVE_SELECTED_UP, // 2 + MOVE_SELECTED_DOWN // 3 + }; private: + /** + * Execute all the functionality associated with the action key. + */ + void keyAction(); + void mouseExited(gcn::MouseEvent &event); void mouseMoved(gcn::MouseEvent &event); /** + * Moves the highlight in the direction specified. + * + * @param direction The move direction of the highlighter. + */ + void moveHighlight(int direction); - * Sets the currently selected item. Invalid (e.g., negative) indices set `no item'. + /** + * Sets the currently selected item. */ - void setSelectedItemIndex(int index); + void setSelectedItem(Item *item); /** * Find the current item index by the most recently used item ID */ - void refindSelectedItem(void); + void refindSelectedItem(); /** * Determine and set the height of the container. */ - void recalculateHeight(void); + void recalculateHeight(); /** * Sends out selection events to the list of selection listeners. */ - void distributeValueChangedEvent(void); + void distributeValueChangedEvent(); /** * Gets the slot index based on the cursor position. @@ -138,22 +170,24 @@ class ItemContainer : public gcn::Widget, * @param posY The Y Coordinate position. * @return The slot index on success, -1 on failure. */ - int getSlotIndex(const int posX, const int posY) const; + int getSlotIndex(int posX, int posY) const; Inventory *mInventory; - Image *mSelImg; - - int mSelectedItemIndex; - int mLastSelectedItemId; // last selected item ID. If we lose the item, find again by ID. - int mMaxItems; + int mGridColumns, mGridRows; int mOffset; + Image *mSelImg; + Item *mSelectedItem, *mHighlightedItem; + int mSelectionStatus; + bool mSwapItems; + bool mDescItems; + int mDragPosX, mDragPosY; ItemPopup *mItemPopup; - std::list<gcn::SelectionListener*> mListeners; + typedef std::list<gcn::SelectionListener*> SelectionListenerList; + typedef SelectionListenerList::iterator SelectionListenerIterator; - static const int gridWidth; - static const int gridHeight; + SelectionListenerList mSelectionListeners; }; #endif diff --git a/src/gui/itemlinkhandler.cpp b/src/gui/itemlinkhandler.cpp index e9993c2d..29fa310d 100644 --- a/src/gui/itemlinkhandler.cpp +++ b/src/gui/itemlinkhandler.cpp @@ -1,22 +1,21 @@ /* - * Aethyra - * Copyright 2009 The Mana World Development Team + * The Mana World + * Copyright (C) 2009 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * - * The Mana World is free software; you can redistribute it and/or modify + * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * any later version. * - * The Mana World is distributed in the hope that it will be useful, + * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with The Mana World; if not, write to the Free Software + * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ diff --git a/src/gui/itemlinkhandler.h b/src/gui/itemlinkhandler.h index e4c3ea4a..c04afa9e 100644 --- a/src/gui/itemlinkhandler.h +++ b/src/gui/itemlinkhandler.h @@ -1,27 +1,26 @@ /* - * Aethyra - * Copyright 2009 The Mana World Development Team + * The Mana World + * Copyright (C) 2009 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * - * The Mana World is free software; you can redistribute it and/or modify + * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * any later version. * - * The Mana World is distributed in the hope that it will be useful, + * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with The Mana World; if not, write to the Free Software + * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef ITEM_LINK_HANDLER_H_ -#define ITEM_LINK_HANDLER_H_ +#ifndef ITEM_LINK_HANDLER_H +#define ITEM_LINK_HANDLER_H #include "linkhandler.h" diff --git a/src/gui/itempopup.cpp b/src/gui/itempopup.cpp index f2ac374a..66729605 100644 --- a/src/gui/itempopup.cpp +++ b/src/gui/itempopup.cpp @@ -1,10 +1,9 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Legend of Mazzeroth Development Team * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Legend of Mazzeroth. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,6 +32,8 @@ #include "../graphics.h" +#include "../units.h" + #include "../resources/iteminfo.h" #include "../utils/gettext.h" @@ -41,15 +42,13 @@ ItemPopup::ItemPopup(): Popup("ItemPopup") { - mItemType = ""; - // Item Name - mItemName = new gcn::Label(""); + mItemName = new gcn::Label; mItemName->setFont(boldFont); mItemName->setPosition(2, 2); // Item Description - mItemDesc = new TextBox(); + mItemDesc = new TextBox; mItemDesc->setEditable(false); mItemDescScroll = new ScrollArea(mItemDesc); @@ -60,7 +59,7 @@ ItemPopup::ItemPopup(): mItemDescScroll->setPosition(2, getFont()->getHeight()); // Item Effect - mItemEffect = new TextBox(); + mItemEffect = new TextBox; mItemEffect->setEditable(false); mItemEffectScroll = new ScrollArea(mItemEffect); @@ -72,7 +71,7 @@ ItemPopup::ItemPopup(): (2 * getPadding())); // Item Weight - mItemWeight = new TextBox(); + mItemWeight = new TextBox; mItemWeight->setEditable(false); mItemWeightScroll = new ScrollArea(mItemWeight); @@ -111,9 +110,11 @@ void ItemPopup::setItem(const ItemInfo &item) mItemName->setWidth(boldFont->getWidth(item.getName())); mItemDesc->setTextWrapped(item.getDescription(), 196); mItemEffect->setTextWrapped(item.getEffect(), 196); - mItemWeight->setTextWrapped(_("Weight: ") + toString(item.getWeight()) + - _(" grams"), 196); + mItemWeight->setTextWrapped(_("Weight: ") + + Units::formatWeight(item.getWeight()), 196); +#ifdef EATHENA_SUPPORT mItemType = item.getType(); +#endif int minWidth = mItemName->getWidth(); @@ -161,11 +162,13 @@ void ItemPopup::setItem(const ItemInfo &item) void ItemPopup::updateColors() { +#ifdef EATHENA_SUPPORT mItemName->setForegroundColor(getColor(mItemType)); +#endif graphics->setColor(guiPalette->getColor(Palette::TEXT)); } -gcn::Color ItemPopup::getColor(const std::string& type) +gcn::Color ItemPopup::getColor(const std::string &type) { gcn::Color color; @@ -213,9 +216,9 @@ unsigned int ItemPopup::getNumRows() void ItemPopup::view(int x, int y) { if (graphics->getWidth() < (x + getWidth() + 5)) - x = graphics->getWidth() - getWidth(); + x = graphics->getWidth() - getWidth(); if ((y - getHeight() - 10) < 0) - y = 0; + y = 0; else y = y - getHeight() - 10; setPosition(x, y); diff --git a/src/gui/itempopup.h b/src/gui/itempopup.h index 29fd127a..0e386ef7 100644 --- a/src/gui/itempopup.h +++ b/src/gui/itempopup.h @@ -1,10 +1,9 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Legend of Mazzeroth Development Team * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Legend of Mazzeroth. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -78,7 +77,7 @@ class ItemPopup : public Popup ScrollArea *mItemEffectScroll; ScrollArea *mItemWeightScroll; - gcn::Color getColor(const std::string& type); + static gcn::Color getColor(const std::string &type); }; #endif // ITEMPOPUP_H diff --git a/src/gui/itemshortcutcontainer.cpp b/src/gui/itemshortcutcontainer.cpp index a0697c5d..d4de3477 100644 --- a/src/gui/itemshortcutcontainer.cpp +++ b/src/gui/itemshortcutcontainer.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,24 +19,26 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "inventorywindow.h" -#include "itemshortcutcontainer.h" -#include "itempopup.h" -#include "palette.h" -#include "viewport.h" +#include "gui/itemshortcutcontainer.h" -#include "../configuration.h" -#include "../graphics.h" -#include "../inventory.h" -#include "../item.h" -#include "../itemshortcut.h" -#include "../keyboardconfig.h" -#include "../localplayer.h" +#include "gui/inventorywindow.h" +#include "gui/itempopup.h" +#include "gui/palette.h" +#include "gui/viewport.h" -#include "../resources/image.h" -#include "../resources/resourcemanager.h" +#include "configuration.h" +#include "graphics.h" +#include "inventory.h" +#include "item.h" +#include "itemshortcut.h" +#include "keyboardconfig.h" +#include "localplayer.h" -#include "../utils/stringutils.h" +#include "resources/image.h" +#include "resources/iteminfo.h" +#include "resources/resourcemanager.h" + +#include "utils/stringutils.h" ItemShortcutContainer::ItemShortcutContainer(): ShortcutContainer(), @@ -47,7 +48,7 @@ ItemShortcutContainer::ItemShortcutContainer(): addMouseListener(this); addWidgetListener(this); - mItemPopup = new ItemPopup(); + mItemPopup = new ItemPopup; mItemPopup->setOpaque(false); ResourceManager *resman = ResourceManager::getInstance(); @@ -109,7 +110,10 @@ void ItemShortcutContainer::draw(gcn::Graphics *graphics) if (image) { const std::string label = - item->isEquipped() ? "Eq." : toString(item->getQuantity()); +#ifdef EATHENA_SUPPORT + item->isEquipped() ? "Eq." : +#endif + toString(item->getQuantity()); g->drawImage(image, itemX, itemY); g->drawText(label, itemX + mBoxWidth / 2, itemY + mBoxHeight - 14, gcn::Graphics::CENTER); @@ -233,7 +237,7 @@ void ItemShortcutContainer::mouseMoved(gcn::MouseEvent &event) Item *item = player_node->getInventory()->findItem(itemId); - if (item) + if (item && inventoryWindow->isVisible()) { if (item->getInfo().getName() != mItemPopup->getItemName()) mItemPopup->setItem(item->getInfo()); diff --git a/src/gui/itemshortcutcontainer.h b/src/gui/itemshortcutcontainer.h index 0149754e..9d188bf0 100644 --- a/src/gui/itemshortcutcontainer.h +++ b/src/gui/itemshortcutcontainer.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/itemshortcutwindow.cpp b/src/gui/itemshortcutwindow.cpp new file mode 100644 index 00000000..6fe1a10b --- /dev/null +++ b/src/gui/itemshortcutwindow.cpp @@ -0,0 +1,71 @@ +/* + * The Mana World + * Copyright (C) 2007 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "itemshortcutwindow.h" + +#include "itemshortcutcontainer.h" +#include "scrollarea.h" + +static const int SCROLL_PADDING = 0; + +ItemShortcutWindow::ItemShortcutWindow() +{ + setWindowName("ItemShortcut"); + // no title presented, title bar is padding so window can be moved. + gcn::Window::setTitleBarHeight(gcn::Window::getPadding()); + setShowTitle(false); + setResizable(true); + setDefaultSize(758, 174, 42, 426); + + mItems = new ItemShortcutContainer; + + const int border = SCROLL_PADDING * 2 + getPadding() * 2; + setMinWidth(mItems->getBoxWidth() + border); + setMinHeight(mItems->getBoxHeight() + border); + setMaxWidth(mItems->getBoxWidth() * mItems->getMaxItems() + border); + setMaxHeight(mItems->getBoxHeight() * mItems->getMaxItems() + border); + + mScrollArea = new ScrollArea(mItems); + mScrollArea->setPosition(SCROLL_PADDING, SCROLL_PADDING); + mScrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); + mScrollArea->setOpaque(false); + + add(mScrollArea); + + loadWindowState(); +} + +ItemShortcutWindow::~ItemShortcutWindow() +{ + delete mItems; + delete mScrollArea; +} + +void ItemShortcutWindow::widgetResized(const gcn::Event &event) +{ + Window::widgetResized(event); + + const gcn::Rectangle &area = getChildrenArea(); + + mScrollArea->setSize( + area.width - SCROLL_PADDING, + area.height - SCROLL_PADDING); +} diff --git a/src/gui/itemshortcutwindow.h b/src/gui/itemshortcutwindow.h new file mode 100644 index 00000000..baa34b13 --- /dev/null +++ b/src/gui/itemshortcutwindow.h @@ -0,0 +1,61 @@ +/* + * The Mana World + * Copyright (C) 2007 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef ITEMSHORTCUTWINDOW_H +#define ITEMSHORTCUTWINDOW_H + +#include "window.h" + +class ItemShortcutContainer; +class ScrollArea; + +/** + * A window around the ItemShortcutContainer. + * + * \ingroup Interface + */ +class ItemShortcutWindow : public Window +{ + public: + /** + * Constructor. + */ + ItemShortcutWindow(); + + /** + * Destructor. + */ + ~ItemShortcutWindow(); + + /** + * Called whenever the widget changes size. + */ + void widgetResized(const gcn::Event &event); + + private: + ItemShortcutContainer *mItems; + + ScrollArea *mScrollArea; +}; + +extern ItemShortcutWindow *itemShortcutWindow; + +#endif diff --git a/src/gui/label.cpp b/src/gui/label.cpp index f3e7bd04..d2fba12b 100644 --- a/src/gui/label.cpp +++ b/src/gui/label.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (c) 2009 Aethyra Development Team * - * This file is part of Aethyra based on original code - * from GUIChan. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,6 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + #include "label.h" #include "palette.h" @@ -27,12 +27,12 @@ Label::Label() : { } -Label::Label(const std::string& caption) : +Label::Label(const std::string &caption) : gcn::Label(caption) { } -void Label::draw(gcn::Graphics* graphics) +void Label::draw(gcn::Graphics *graphics) { setForegroundColor(guiPalette->getColor(Palette::TEXT)); gcn::Label::draw(static_cast<gcn::Graphics*>(graphics)); diff --git a/src/gui/label.h b/src/gui/label.h index 4a9bb805..dcda8e9d 100644 --- a/src/gui/label.h +++ b/src/gui/label.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (c) 2009 Aethyra Development Team * - * This file is part of Aethyra based on original code - * from GUIChan. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -43,12 +42,12 @@ class Label : public gcn::Label * Constructor. This version of the constructor sets the label with an * inintialization string. */ - Label(const std::string& caption); + Label(const std::string &caption); /** * Draws the label. */ - void draw(gcn::Graphics* graphics); + void draw(gcn::Graphics *graphics); }; #endif diff --git a/src/gui/linkhandler.h b/src/gui/linkhandler.h index ea1b25c8..30267f87 100644 --- a/src/gui/linkhandler.h +++ b/src/gui/linkhandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,6 +24,8 @@ #include <string> +#include <string> + /** * A simple interface to windows that need to handle links from BrowserBox * widget. @@ -34,7 +35,7 @@ class LinkHandler public: virtual ~LinkHandler() { } - virtual void handleLink(const std::string& link) = 0; + virtual void handleLink(const std::string &link) = 0; }; #endif diff --git a/src/gui/listbox.cpp b/src/gui/listbox.cpp index 71e92eaf..7ba84ee7 100644 --- a/src/gui/listbox.cpp +++ b/src/gui/listbox.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/listbox.h b/src/gui/listbox.h index 09f00cdf..cfb58f15 100644 --- a/src/gui/listbox.h +++ b/src/gui/listbox.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/login.cpp b/src/gui/login.cpp index 7b9829fb..281a25a2 100644 --- a/src/gui/login.cpp +++ b/src/gui/login.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -50,70 +49,81 @@ LoginDialog::LoginDialog(LoginData *loginData): { gcn::Label *userLabel = new Label(_("Name:")); gcn::Label *passLabel = new Label(_("Password:")); +#ifdef EATHENA_SUPPORT gcn::Label *serverLabel = new Label(_("Server:")); gcn::Label *portLabel = new Label(_("Port:")); gcn::Label *dropdownLabel = new Label(_("Recent:")); std::vector<std::string> dfltServer; - dfltServer.push_back("www.aethyra.org"); - dfltServer.push_back("www.aethyra.org"); - dfltServer.push_back("209.168.213.109"); + dfltServer.push_back("server.themanaworld.org"); std::vector<std::string> dfltPort; - dfltPort.push_back("21001"); - dfltPort.push_back("22001"); - dfltPort.push_back("21001"); + dfltPort.push_back("6901"); mServerList = new DropDownList("MostRecent00", dfltServer, dfltPort, MAX_SERVER_LIST_SIZE); mServerListBox = new ListBox(mServerList); - mServerScrollArea = new ScrollArea(); + mServerScrollArea = new ScrollArea; +#endif mUserField = new TextField(mLoginData->username); mPassField = new PasswordField(mLoginData->password); +#ifdef EATHENA_SUPPORT mServerField = new TextField(mServerList->getServerAt(0)); mPortField = new TextField(mServerList->getPortAt(0)); mServerDropDown = new DropDown(mServerList, mServerScrollArea, mServerListBox); mServerDropDown->setOpaque(false); +#endif - mKeepCheck = new CheckBox(_("Keep"), mLoginData->remember); + mKeepCheck = new CheckBox(_("Remember Username"), mLoginData->remember); mOkButton = new Button(_("OK"), "ok", this); mCancelButton = new Button(_("Cancel"), "cancel", this); mRegisterButton = new Button(_("Register"), "register", this); mUserField->setActionEventId("ok"); mPassField->setActionEventId("ok"); +#ifdef EATHENA_SUPPORT mServerField->setActionEventId("ok"); + mPortField->setActionEventId("ok"); mServerDropDown->setActionEventId("changeSelection"); +#endif mUserField->addKeyListener(this); mPassField->addKeyListener(this); +#ifdef EATHENA_SUPPORT mServerField->addKeyListener(this); mPortField->addKeyListener(this); mServerDropDown->addKeyListener(this); +#endif mUserField->addActionListener(this); mPassField->addActionListener(this); +#ifdef EATHENA_SUPPORT mServerField->addActionListener(this); mPortField->addActionListener(this); mServerDropDown->addActionListener(this); mKeepCheck->addActionListener(this); +#endif place(0, 0, userLabel); place(0, 1, passLabel); +#ifdef EATHENA_SUPPORT place(0, 2, serverLabel); place(0, 3, portLabel); place(0, 4, dropdownLabel); +#endif place(1, 0, mUserField, 3).setPadding(1); place(1, 1, mPassField, 3).setPadding(1); +#ifdef EATHENA_SUPPORT place(1, 2, mServerField, 3).setPadding(1); place(1, 3, mPortField, 3).setPadding(1); place(1, 4, mServerDropDown, 3).setPadding(1); +#endif place(0, 5, mKeepCheck, 4); place(0, 6, mRegisterButton).setHAlign(LayoutCell::LEFT); place(2, 6, mCancelButton); place(3, 6, mOkButton); reflowLayout(250, 0); - setLocationRelativeTo(getParent()); + center(); setVisible(true); if (mUserField->getText().empty()) @@ -128,8 +138,10 @@ void LoginDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "ok" && canSubmit()) { +#ifdef EATHENA_SUPPORT mLoginData->hostname = mServerField->getText(); mLoginData->port = getUShort(mPortField->getText()); +#endif mLoginData->username = mUserField->getText(); mLoginData->password = mPassField->getText(); mLoginData->remember = mKeepCheck->isSelected(); @@ -137,21 +149,32 @@ void LoginDialog::action(const gcn::ActionEvent &event) mOkButton->setEnabled(false); mRegisterButton->setEnabled(false); +#ifdef EATHENA_SUPPORT mServerList->save(mServerField->getText(), mPortField->getText()); - state = ACCOUNT_STATE; + state = STATE_ACCOUNT; +#else + state = STATE_LOGIN_ATTEMPT; +#endif } +#ifdef EATHENA_SUPPORT else if (event.getId() == "changeSelection") { int selected = mServerListBox->getSelected(); mServerField->setText(mServerList->getServerAt(selected)); mPortField->setText(mServerList->getPortAt(selected)); } +#endif else if (event.getId() == "cancel") { - state = EXIT_STATE; +#ifdef TMWSERV_SUPPORT + state = STATE_SWITCH_ACCOUNTSERVER; +#else + state = STATE_EXIT; +#endif } else if (event.getId() == "register") { +#ifdef EATHENA_SUPPORT // Transfer these fields on to the register dialog mLoginData->hostname = mServerField->getText(); @@ -159,11 +182,12 @@ void LoginDialog::action(const gcn::ActionEvent &event) mLoginData->port = getUShort(mPortField->getText()); else mLoginData->port = 6901; +#endif mLoginData->username = mUserField->getText(); mLoginData->password = mPassField->getText(); - state = REGISTER_STATE; + state = STATE_REGISTER; } } @@ -176,11 +200,14 @@ bool LoginDialog::canSubmit() { return !mUserField->getText().empty() && !mPassField->getText().empty() && +#ifdef EATHENA_SUPPORT !mServerField->getText().empty() && isUShort(mPortField->getText()) && - state == LOGIN_STATE; +#endif + state == STATE_LOGIN; } +#ifdef EATHENA_SUPPORT bool LoginDialog::isUShort(const std::string &str) { if (str.empty()) @@ -305,3 +332,4 @@ std::string LoginDialog::DropDownList::getPortAt(int i) return mPorts.at(i); } +#endif diff --git a/src/gui/login.h b/src/gui/login.h index 4d63ec63..9a97cd4d 100644 --- a/src/gui/login.h +++ b/src/gui/login.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,13 +27,17 @@ #include <guichan/actionlistener.hpp> #include <guichan/keylistener.hpp> +#ifdef EATHENA_SUPPORT #include <guichan/listmodel.hpp> +#endif #include "window.h" -class DropDown; class LoginData; +#ifdef EATHENA_SUPPORT +class DropDown; class ScrollArea; +#endif /** * The login dialog. @@ -69,6 +72,7 @@ class LoginDialog : public Window, public gcn::ActionListener, */ bool canSubmit(); +#ifdef EATHENA_SUPPORT /** * Function to decide whether string is an unsigned short or not * @@ -87,11 +91,14 @@ class LoginDialog : public Window, public gcn::ActionListener, */ static unsigned short getUShort(const std::string &str); - DropDown *mServerDropDown; +#endif gcn::TextField *mUserField; gcn::TextField *mPassField; +#ifdef EATHENA_SUPPORT gcn::TextField *mServerField; gcn::TextField *mPortField; + DropDown *mServerDropDown; +#endif gcn::CheckBox *mKeepCheck; gcn::Button *mOkButton; gcn::Button *mCancelButton; @@ -99,6 +106,7 @@ class LoginDialog : public Window, public gcn::ActionListener, LoginData *mLoginData; +#ifdef EATHENA_SUPPORT /** * Helper class to keep a list of all the recent entries for the * dropdown @@ -126,6 +134,7 @@ class LoginDialog : public Window, public gcn::ActionListener, DropDownList *mServerList; gcn::ListBox *mServerListBox; gcn::ScrollArea *mServerScrollArea; +#endif }; #endif diff --git a/src/gui/magic.cpp b/src/gui/magic.cpp new file mode 100644 index 00000000..117c1f14 --- /dev/null +++ b/src/gui/magic.cpp @@ -0,0 +1,92 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <guichan/widgets/label.hpp> +#include <guichan/widgets/container.hpp> + +#include "magic.h" + +#include "button.h" + +#include "../localplayer.h" + +#include "../utils/dtor.h" +#include "../utils/gettext.h" + +MagicDialog::MagicDialog(): + Window(_("Magic")) +{ + setWindowName("Magic"); + setCloseButton(true); + setDefaultSize(255, 30, 175, 225); + + gcn::Button *spellButton1 = new Button(_("Cast Test Spell 1"), "spell_1", this); + gcn::Button *spellButton2 = new Button(_("Cast Test Spell 2"), "spell_2", this); + gcn::Button *spellButton3 = new Button(_("Cast Test Spell 3"), "spell_3", this); + + spellButton1->setPosition(10, 30); + spellButton2->setPosition(10, 60); + spellButton3->setPosition(10, 90); + + add(spellButton1); + add(spellButton2); + add(spellButton3); + + update(); + + setLocationRelativeTo(getParent()); + loadWindowState(); +} + +MagicDialog::~MagicDialog() +{ +} + +void MagicDialog::action(const gcn::ActionEvent &event) +{ + if (event.getId() == "spell_1") + { + player_node->useSpecial(1); + } + if (event.getId() == "spell_2") + { + player_node->useSpecial(2); + } + if (event.getId() == "spell_3") + { + player_node->useSpecial(3); + } + else if (event.getId() == "close") + { + setVisible(false); + } +} + +void MagicDialog::draw(gcn::Graphics *g) +{ + update(); + + Window::draw(g); +} + +void MagicDialog::update() +{ +} diff --git a/src/gui/magic.h b/src/gui/magic.h new file mode 100644 index 00000000..74529396 --- /dev/null +++ b/src/gui/magic.h @@ -0,0 +1,75 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef MAGIC_H +#define MAGIC_H + +#include <guichan/actionlistener.hpp> + +#include "window.h" +#include "gccontainer.h" + +#include "../guichanfwd.h" + + +/** + * The skill dialog. + * + * \ingroup Interface + */ +class MagicDialog : public Window, public gcn::ActionListener +{ + public: + /** + * Constructor. + */ + MagicDialog(); + + /** + * Destructor. + */ + ~MagicDialog(); + + /** + * Called when receiving actions from widget. + */ + void action(const gcn::ActionEvent &event); + + /** + * Update the tabs in this dialog + */ + void update(); + + /** + * Draw this window. + */ + void draw(gcn::Graphics *g); + + private: + +}; + + + + +extern MagicDialog *magicDialog; + +#endif diff --git a/src/gui/menuwindow.cpp b/src/gui/menuwindow.cpp index e1be908b..e6ae2d3b 100644 --- a/src/gui/menuwindow.cpp +++ b/src/gui/menuwindow.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -40,6 +39,11 @@ extern Window *emoteWindow; extern Window *setupWindow; extern Window *skillDialog; extern Window *statusWindow; +#ifdef TMWSERV_SUPPORT +extern Window *buddyWindow; +extern Window *guildWindow; +extern Window *magicDialog; +#endif namespace { struct MenuWindowListener : public gcn::ActionListener @@ -57,14 +61,19 @@ MenuWindow::MenuWindow(): // Buttons static const char *buttonNames[] = { - _("Chat"), - _("Status"), - _("Equipment"), - _("Inventory"), - _("Skills"), - _("Shortcut"), - _("Emote"), - _("Setup"), + N_("Chat"), + N_("Status"), + N_("Equipment"), + N_("Inventory"), + N_("Skills"), +#ifdef TMWSERV_SUPPORT + N_("Magic"), + N_("Guilds"), + N_("Buddys"), +#endif + N_("Shortcut"), + N_("Emote"), + N_("Setup"), 0 }; int x = 0, h = 0; @@ -91,35 +100,49 @@ void MenuWindowListener::action(const gcn::ActionEvent &event) { Window *window = NULL; - if (event.getId() == _("Chat")) + if (event.getId() == "Chat") { window = chatWindow; } - else if (event.getId() == _("Status")) + else if (event.getId() == "Status") { window = statusWindow; } - else if (event.getId() == _("Equipment")) + else if (event.getId() == "Equipment") { window = equipmentWindow; } - else if (event.getId() == _("Inventory")) + else if (event.getId() == "Inventory") { window = inventoryWindow; } - else if (event.getId() == _("Skills")) + else if (event.getId() == "Skills") { window = skillDialog; } - else if (event.getId() == _("Shortcut")) +#ifdef TMWSERV_SUPPORT + else if (event.getId() == "Magic") + { + window = magicDialog; + } + else if (event.getId() == "Guilds") + { + window = guildWindow; + } + else if (event.getId() == "Buddys") + { + window = buddyWindow; + } +#endif + else if (event.getId() == "Shortcut") { window = itemShortcutWindow; } - else if (event.getId() == _("Emote")) + else if (event.getId() == "Emote") { window = emoteWindow; } - else if (event.getId() == _("Setup")) + else if (event.getId() == "Setup") { window = setupWindow; } diff --git a/src/gui/menuwindow.h b/src/gui/menuwindow.h index e8dc0b2e..c3d5673e 100644 --- a/src/gui/menuwindow.h +++ b/src/gui/menuwindow.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/minimap.cpp b/src/gui/minimap.cpp index f3da52c6..93a55688 100644 --- a/src/gui/minimap.cpp +++ b/src/gui/minimap.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004-2005 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,7 +40,7 @@ Minimap::Minimap(): mMapImage(NULL), mProportion(0.5) { - setWindowName(_("MiniMap")); + setWindowName("MiniMap"); mShow = config.getValue(getWindowName() + "Show", true); setDefaultSize(5, 25, 100, 100); setResizable(true); @@ -120,8 +119,14 @@ void Minimap::draw(gcn::Graphics *graphics) if (mMapImage->getWidth() > a.width || mMapImage->getHeight() > a.height) { +#ifdef TMWSERV_SUPPORT + const Vector &p = player_node->getPosition(); + mapOriginX = (int) (((a.width) / 2) - (int) (p.x * mProportion) / 32); + mapOriginY = (int) (((a.height) / 2) - (int) (p.y * mProportion) / 32); +#else mapOriginX = (int) (((a.width) / 2) - (player_node->mX * mProportion)); mapOriginY = (int) (((a.height) / 2) - (player_node->mY * mProportion)); +#endif const int minOriginX = a.width - mMapImage->getWidth(); const int minOriginY = a.height - mMapImage->getHeight(); @@ -172,10 +177,11 @@ void Minimap::draw(gcn::Graphics *graphics) } const int offset = (int) ((dotSize - 1) * mProportion); + const Vector &pos = being->getPosition(); graphics->fillRectangle(gcn::Rectangle( - (int) (being->mX * mProportion) + mapOriginX - offset, - (int) (being->mY * mProportion) + mapOriginY - offset, + (int) (pos.x * mProportion) / 32 + mapOriginX - offset, + (int) (pos.x * mProportion) / 32 + mapOriginY - offset, dotSize, dotSize)); } diff --git a/src/gui/minimap.h b/src/gui/minimap.h index 6e88f821..3ce0aacd 100644 --- a/src/gui/minimap.h +++ b/src/gui/minimap.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004-2005 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/ministatus.cpp b/src/gui/ministatus.cpp index 18b9d714..95577e69 100644 --- a/src/gui/ministatus.cpp +++ b/src/gui/ministatus.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,7 +22,9 @@ #include "gui.h" #include "ministatus.h" #include "progressbar.h" +#include "status.h" +#include "../animatedsprite.h" #include "../configuration.h" #include "../graphics.h" #include "../localplayer.h" @@ -34,47 +35,56 @@ MiniStatusWindow::MiniStatusWindow(): Popup("MiniStatus") { mHpBar = new ProgressBar(1.0f, 100, 20, 0, 171, 34); +#ifdef EATHENA_SUPPORT mMpBar = new ProgressBar(1.0f, 100, 20, 26, 102, 230); mXpBar = new ProgressBar(1.0f, 100, 20, 143, 192, 211); +#endif mHpBar->setPosition(0, 3); +#ifdef EATHENA_SUPPORT mMpBar->setPosition(mHpBar->getWidth() + 3, 3); mXpBar->setPosition(mMpBar->getX() + mMpBar->getWidth() + 3, 3); +#endif add(mHpBar); +#ifdef EATHENA_SUPPORT add(mMpBar); add(mXpBar); +#endif +#ifdef EATHENA_SUPPORT setContentSize(mXpBar->getX() + mXpBar->getWidth(), mXpBar->getY() + mXpBar->getHeight()); +#else + setContentSize(mHpBar->getX() + mHpBar->getWidth(), + mHpBar->getY() + mHpBar->getHeight()); +#endif } -void MiniStatusWindow::update() +void MiniStatusWindow::setIcon(int index, AnimatedSprite *sprite) { - // HP Bar coloration - if (player_node->mHp < int(player_node->mMaxHp / 3)) - mHpBar->setColor(223, 32, 32); // Red - else if (player_node->mHp < int((player_node->mMaxHp / 3) * 2)) - mHpBar->setColor(230, 171, 34); // Orange - else - mHpBar->setColor(0, 171, 34); // Green + if (index >= (int) mIcons.size()) + mIcons.resize(index + 1, NULL); - float xp = (float) player_node->getXp() / player_node->mXpForNextLevel; + if (mIcons[index]) + delete mIcons[index]; - if (xp != xp) xp = 0.0f; // check for NaN - if (xp < 0.0f) xp = 0.0f; // make sure the experience isn't negative (uninitialized pointer most likely) - if (xp > 1.0f) xp = 1.0f; + mIcons[index] = sprite; +} - mHpBar->setProgress((float) player_node->mHp / player_node->mMaxHp); - mMpBar->setProgress((float) player_node->mMp / player_node->mMaxMp); - mXpBar->setProgress(xp); +void MiniStatusWindow::eraseIcon(int index) +{ + mIcons.erase(mIcons.begin() + index); +} - // Update labels - mHpBar->setText(toString(player_node->mHp)); - mMpBar->setText(toString(player_node->mMp)); +extern volatile int tick_time; - std::stringstream updatedText; - updatedText << (float) ((int) (xp * 10000.0f)) / 100.0f << "%"; +void MiniStatusWindow::update() +{ + StatusWindow::updateHPBar(mHpBar); +#ifdef EATHENA_SUPPORT + StatusWindow::updateMPBar(mMpBar); + StatusWindow::updateXPBar(mXpBar); // Displays the number of monsters to next lvl // (disabled for now but interesting idea) @@ -88,8 +98,11 @@ void MiniStatusWindow::update() << config.getValue("xpBarMonsterCounterName", "Monsters") <<" left..."; } */ +#endif - mXpBar->setText(updatedText.str()); + for (unsigned int i = 0; i < mIcons.size(); i++) + if (mIcons[i]) + mIcons[i]->update(tick_time * 10); } void MiniStatusWindow::draw(gcn::Graphics *graphics) @@ -97,3 +110,19 @@ void MiniStatusWindow::draw(gcn::Graphics *graphics) update(); drawChildren(graphics); } + +void MiniStatusWindow::drawIcons(Graphics *graphics) +{ + // Draw icons +#ifdef TMWSERV_SUPPORT + int icon_x = mHpBar->getX() + mHpBar->getWidth() + 4; +#else + int icon_x = mXpBar->getX() + mXpBar->getWidth() + 4; +#endif + for (unsigned int i = 0; i < mIcons.size(); i++) { + if (mIcons[i]) { + mIcons[i]->draw(graphics, icon_x, 3); + icon_x += 2 + mIcons[i]->getWidth(); + } + } +} diff --git a/src/gui/ministatus.h b/src/gui/ministatus.h index b3fc58fc..fd5a4e53 100644 --- a/src/gui/ministatus.h +++ b/src/gui/ministatus.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,6 +24,10 @@ #include "popup.h" +#include <vector> + +class AnimatedSprite; +class Graphics; class ProgressBar; /** @@ -45,6 +48,15 @@ class MiniStatusWindow : public Popup */ void draw(gcn::Graphics *graphics); + /** + * Sets one of the icons. + */ + void setIcon(int index, AnimatedSprite *sprite); + + void eraseIcon(int index); + + void drawIcons(Graphics *graphics); + private: /** * Updates this dialog with values from player_node. @@ -55,8 +67,12 @@ class MiniStatusWindow : public Popup * Mini Status Bars */ ProgressBar *mHpBar; +#ifdef EATHENA_SUPPORT ProgressBar *mMpBar; ProgressBar *mXpBar; +#endif + + std::vector<AnimatedSprite *> mIcons; }; #endif diff --git a/src/gui/npc_text.cpp b/src/gui/npc_text.cpp index f524f8ea..5158e966 100644 --- a/src/gui/npc_text.cpp +++ b/src/gui/npc_text.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,14 +29,26 @@ #include "../npc.h" #include "../net/messageout.h" -#include "../net/protocol.h" +#ifdef TMWSERV_SUPPORT +#include "../net/tmwserv/gameserver/player.h" +#else +#include "../net/ea/protocol.h" +#endif #include "../utils/gettext.h" -NpcTextDialog::NpcTextDialog(Network *network): - Window("NPC"), mNetwork(network) +#ifdef TMWSERV_SUPPORT +NpcTextDialog::NpcTextDialog() +#else +NpcTextDialog::NpcTextDialog(Network *network) +#endif + : Window(_("NPC")) +#ifdef EATHENA_SUPPORT + , mNetwork(network) +#endif + , mState(NPC_TEXT_STATE_WAITING) { - setWindowName(_("NPC")); + setWindowName("NPCText"); setResizable(true); setMinWidth(200); @@ -50,8 +61,7 @@ NpcTextDialog::NpcTextDialog(Network *network): mTextBox->setOpaque(false); mScrollArea = new ScrollArea(mTextBox); - mButton = new Button(_("OK"), "", this); - mButton->setActionEventId("ok"); + mButton = new Button(_("Waiting for server"), "ok", this); mScrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); mScrollArea->setVerticalScrollPolicy(gcn::ScrollArea::SHOW_ALWAYS); @@ -62,9 +72,16 @@ NpcTextDialog::NpcTextDialog(Network *network): Layout &layout = getLayout(); layout.setRowHeight(0, Layout::AUTO_SET); + center(); loadWindowState(); } +void NpcTextDialog::clearText() +{ + NPC::isTalking = false; + setText(""); +} + void NpcTextDialog::setText(const std::string &text) { mText = text; @@ -74,41 +91,64 @@ void NpcTextDialog::setText(const std::string &text) void NpcTextDialog::addText(const std::string &text) { setText(mText + text + "\n"); + mScrollArea->setVerticalScrollAmount(mScrollArea->getVerticalMaxScroll()); } -void NpcTextDialog::clearText() +void NpcTextDialog::showNextButton() { - NPC::mTalking = false; - setText(""); + mButton->setCaption(_("Next")); + mState = NPC_TEXT_STATE_NEXT; + mButton->setEnabled(true); +} + +void NpcTextDialog::showCloseButton() +{ + mButton->setCaption(_("Close")); + mState = NPC_TEXT_STATE_CLOSE; + mButton->setEnabled(true); } void NpcTextDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "ok") { - clearText(); - setVisible(false); - saveWindowState(); - - if (current_npc) + if (mState == NPC_TEXT_STATE_NEXT && current_npc) { nextDialog(); - - current_npc = 0; + addText("\n> Next\n"); + } else if (mState == NPC_TEXT_STATE_CLOSE || + (mState == NPC_TEXT_STATE_NEXT && !current_npc)) { + setText(""); + if (current_npc) nextDialog(); + setVisible(false); + current_npc = 0; + NPC::isTalking = false; + } else return; } + else return; + + mButton->setEnabled(false); + mButton->setCaption(_("Waiting for server")); + mState = NPC_TEXT_STATE_WAITING; } void NpcTextDialog::nextDialog(int npcID) { +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::talkToNPC(npcID, false); +#else MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_NPC_NEXT_REQUEST); outMsg.writeInt32(npcID); +#endif } void NpcTextDialog::closeDialog(int npcID) { +#ifdef EATHENA_SUPPORT MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_NPC_CLOSE); outMsg.writeInt32(npcID); +#endif } void NpcTextDialog::widgetResized(const gcn::Event &event) @@ -123,4 +163,3 @@ void NpcTextDialog::requestFocus() loadWindowState(); setVisible(true); } - diff --git a/src/gui/npc_text.h b/src/gui/npc_text.h index f01e3602..4c0c31e3 100644 --- a/src/gui/npc_text.h +++ b/src/gui/npc_text.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,7 +30,9 @@ #include "../npc.h" +#ifdef EATHENA_SUPPORT class Network; +#endif class TextBox; /** @@ -47,7 +48,11 @@ class NpcTextDialog : public Window, public gcn::ActionListener * * @see Window::Window */ +#ifdef TMWSERV_SUPPORT + NpcTextDialog(); +#else NpcTextDialog(Network *network); +#endif /** * Called when receiving actions from the widgets. @@ -74,6 +79,10 @@ class NpcTextDialog : public Window, public gcn::ActionListener */ void addText(const std::string &string); + void showNextButton(); + + void showCloseButton(); + /** * Notifies the server that the client has performed a next action. */ @@ -99,12 +108,21 @@ class NpcTextDialog : public Window, public gcn::ActionListener void widgetResized(const gcn::Event &event); private: +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif gcn::ScrollArea *mScrollArea; TextBox *mTextBox; gcn::Button *mButton; std::string mText; + + enum NPCTextState { + NPC_TEXT_STATE_WAITING, + NPC_TEXT_STATE_NEXT, + NPC_TEXT_STATE_CLOSE + }; + NPCTextState mState; }; extern NpcTextDialog *npcTextDialog; diff --git a/src/gui/npcintegerdialog.cpp b/src/gui/npcintegerdialog.cpp index 27721f0c..a7ae2748 100644 --- a/src/gui/npcintegerdialog.cpp +++ b/src/gui/npcintegerdialog.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,6 +21,7 @@ #include "button.h" #include "inttextfield.h" +#include "npc_text.h" #include "npcintegerdialog.h" #include "widgets/layout.h" @@ -29,23 +29,33 @@ #include "../npc.h" #include "../net/messageout.h" -#include "../net/protocol.h" +#ifdef EATHENA_SUPPORT +#include "../net/ea/protocol.h" +#endif #include "../utils/gettext.h" - -NpcIntegerDialog::NpcIntegerDialog(Network *network): - Window(_("NPC Number Request")), mNetwork(network) +#include "../utils/strprintf.h" + +#ifdef TMWSERV_SUPPORT +NpcIntegerDialog::NpcIntegerDialog() +#else +NpcIntegerDialog::NpcIntegerDialog(Network *network) +#endif + : Window(_("NPC Number Request")) +#ifdef EATHENA_SUPPORT + , mNetwork(network) +#endif { - mValueField = new IntTextField(); - setWindowName("NPCInput"); + setWindowName("NPCInteger"); + mValueField = new IntTextField; setDefaultSize(175, 75, ImageRect::CENTER); mDecButton = new Button("-", "decvalue", this); mIncButton = new Button("+", "incvalue", this); - okButton = new Button(_("OK"), "ok", this); - cancelButton = new Button(_("Cancel"), "cancel", this); - resetButton = new Button(_("Reset"), "reset", this); + gcn::Button *okButton = new Button(_("OK"), "ok", this); + gcn::Button *cancelButton = new Button(_("Cancel"), "cancel", this); + gcn::Button *resetButton = new Button(_("Reset"), "reset", this); mDecButton->adjustSize(); mDecButton->setWidth(mIncButton->getWidth()); @@ -61,12 +71,14 @@ NpcIntegerDialog::NpcIntegerDialog(Network *network): place(0, 0, resetButton); place(2, 0, cancelButton); place(3, 0, okButton); - //reflowLayout(175, 0); + reflowLayout(175, 0); + center(); + setDefaultSize(); loadWindowState(); } -void NpcIntegerDialog::setRange(const int min, const int max) +void NpcIntegerDialog::setRange(int min, int max) { mValueField->setRange(min, max); } @@ -88,11 +100,13 @@ void NpcIntegerDialog::action(const gcn::ActionEvent &event) if (event.getId() == "ok") { finish = true; + npcTextDialog->addText(strprintf("\n> %d\n", mValueField->getValue())); } else if (event.getId() == "cancel") { finish = true; mValueField->reset(); + npcTextDialog->addText(_("\n> Cancel\n")); } else if (event.getId() == "decvalue") { @@ -110,18 +124,24 @@ void NpcIntegerDialog::action(const gcn::ActionEvent &event) if (finish) { setVisible(false); - NPC::mTalking = false; + NPC::isTalking = false; +#ifdef EATHENA_SUPPORT MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_NPC_INT_RESPONSE); outMsg.writeInt32(current_npc); outMsg.writeInt32(mValueField->getValue()); +#endif - current_npc = 0; mValueField->reset(); } } +void NpcIntegerDialog::setDefaultValue(int value) +{ + mValueField->setDefaultValue(value); +} + bool NpcIntegerDialog::isInputFocused() { return mValueField->isFocused(); @@ -131,3 +151,13 @@ void NpcIntegerDialog::requestFocus() { mValueField->requestFocus(); } + +void NpcIntegerDialog::setVisible(bool visible) +{ + if (visible) { + npcTextDialog->setVisible(true); + requestFocus(); + } + + Window::setVisible(visible); +} diff --git a/src/gui/npcintegerdialog.h b/src/gui/npcintegerdialog.h index 15bdee48..df74c904 100644 --- a/src/gui/npcintegerdialog.h +++ b/src/gui/npcintegerdialog.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,7 +26,9 @@ #include "window.h" +#ifdef EATHENA_SUPPORT class Network; +#endif class IntTextField; /** @@ -43,7 +44,11 @@ class NpcIntegerDialog : public Window, public gcn::ActionListener * * @see Window::Window */ +#ifdef TMWSERV_SUPPORT + NpcIntegerDialog(); +#else NpcIntegerDialog(Network *network); +#endif /** * Called when receiving actions from the widgets. @@ -66,7 +71,14 @@ class NpcIntegerDialog : public Window, public gcn::ActionListener * @param min The minimum value to allow * @param max The maximum value to allow */ - void setRange(const int min, const int max); + void setRange(int min, int max); + + /** + * Sets the default value. + * + * @param value The new default value + */ + void setDefaultValue(int value); /** * Checks whether NpcStringDialog is Focused or not. @@ -78,14 +90,15 @@ class NpcIntegerDialog : public Window, public gcn::ActionListener */ void requestFocus(); + void setVisible(bool visible); + private: +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif gcn::Button *mDecButton; gcn::Button *mIncButton; IntTextField *mValueField; - gcn::Button *okButton; - gcn::Button *cancelButton; - gcn::Button *resetButton; }; extern NpcIntegerDialog *npcIntegerDialog; diff --git a/src/gui/npclistdialog.cpp b/src/gui/npclistdialog.cpp index 505912ac..968e2514 100644 --- a/src/gui/npclistdialog.cpp +++ b/src/gui/npclistdialog.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,6 +23,7 @@ #include "button.h" #include "listbox.h" +#include "npc_text.h" #include "npclistdialog.h" #include "scrollarea.h" @@ -32,14 +32,26 @@ #include "../npc.h" #include "../net/messageout.h" -#include "../net/protocol.h" +#ifdef TMWSERV_SUPPORT +#include "../net/tmwserv/gameserver/player.h" +#else +#include "../net/ea/protocol.h" +#endif #include "../utils/gettext.h" - -NpcListDialog::NpcListDialog(Network *network): - Window("NPC"), mNetwork(network) +#include "../utils/strprintf.h" + +#ifdef TMWSERV_SUPPORT +NpcListDialog::NpcListDialog() +#else +NpcListDialog::NpcListDialog(Network *network) +#endif + : Window("NPC") +#ifdef EATHENA_SUPPORT + , mNetwork(network) +#endif { - setWindowName(_("NPC")); + setWindowName("NPCList"); setResizable(true); setMinWidth(200); @@ -50,10 +62,10 @@ NpcListDialog::NpcListDialog(Network *network): mItemList = new ListBox(this); mItemList->setWrappingEnabled(true); - scrollArea = new ScrollArea(mItemList); + gcn::ScrollArea *scrollArea = new ScrollArea(mItemList); - okButton = new Button(_("OK"), "ok", this); - cancelButton = new Button(_("Cancel"), "cancel", this); + gcn::Button *okButton = new Button(_("OK"), "ok", this); + gcn::Button *cancelButton = new Button(_("Cancel"), "cancel", this); setContentSize(260, 175); scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); @@ -65,6 +77,7 @@ NpcListDialog::NpcListDialog(Network *network): Layout &layout = getLayout(); layout.setRowHeight(0, Layout::AUTO_SET); + center(); loadWindowState(); } @@ -78,6 +91,11 @@ std::string NpcListDialog::getElementAt(int i) return mItems[i]; } +void NpcListDialog::addItem(const std::string &item) +{ + mItems.push_back(item); +} + void NpcListDialog::parseItems(const std::string &itemString) { std::istringstream iss(itemString); @@ -89,7 +107,7 @@ void NpcListDialog::parseItems(const std::string &itemString) void NpcListDialog::reset() { - NPC::mTalking = false; + NPC::isTalking = false; mItemList->setSelected(-1); mItems.clear(); } @@ -97,18 +115,23 @@ void NpcListDialog::reset() void NpcListDialog::action(const gcn::ActionEvent &event) { int choice = 0; - if (event.getId() == "ok") { // Send the selected index back to the server int selectedIndex = mItemList->getSelected(); if (selectedIndex > -1) + { choice = selectedIndex + 1; + npcTextDialog->addText(strprintf("\n> \"%s\"\n", + mItems[selectedIndex].c_str())); + } } else if (event.getId() == "cancel") { choice = 0xff; // 0xff means cancel + npcTextDialog->addText(_("\n> Cancel\n")); + npcTextDialog->showCloseButton(); } if (choice) @@ -117,13 +140,25 @@ void NpcListDialog::action(const gcn::ActionEvent &event) saveWindowState(); reset(); +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::selectFromNPC(current_npc, choice); +#else MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_NPC_LIST_CHOICE); outMsg.writeInt32(current_npc); outMsg.writeInt8(choice); +#endif + } +} - current_npc = 0; +void NpcListDialog::setVisible(bool visible) +{ + if (visible) { + npcTextDialog->setVisible(true); + requestFocus(); } + + Window::setVisible(visible); } void NpcListDialog::requestFocus() diff --git a/src/gui/npclistdialog.h b/src/gui/npclistdialog.h index e3cf375b..6c1e02e3 100644 --- a/src/gui/npclistdialog.h +++ b/src/gui/npclistdialog.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,14 +22,16 @@ #ifndef GUI_NPCLISTDIALOG_H #define GUI_NPCLISTDIALOG_H -#include <vector> +#include "window.h" #include <guichan/actionlistener.hpp> #include <guichan/listmodel.hpp> -#include "window.h" +#include <vector> +#ifdef EATHENA_SUPPORT class Network; +#endif /** * The npc list dialog. @@ -46,7 +47,11 @@ class NpcListDialog : public Window, public gcn::ActionListener, * * @see Window::Window */ +#ifdef TMWSERV_SUPPORT + NpcListDialog(); +#else NpcListDialog(Network *network); +#endif /** * Called when receiving actions from the widgets. @@ -64,6 +69,11 @@ class NpcListDialog : public Window, public gcn::ActionListener, std::string getElementAt(int i); /** + * Adds an item to the option list. + */ + void addItem(const std::string &); + + /** * Fills the options list for an NPC dialog. * * @param itemString A string with the options separated with colons. @@ -75,6 +85,8 @@ class NpcListDialog : public Window, public gcn::ActionListener, */ void reset(); + void setVisible(bool visible); + /** * Requests the listbox to take focus for input and sets window width * to the last known setting. @@ -82,11 +94,10 @@ class NpcListDialog : public Window, public gcn::ActionListener, void requestFocus(); private: +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif gcn::ListBox *mItemList; - gcn::ScrollArea *scrollArea; - gcn::Button *okButton; - gcn::Button *cancelButton; std::vector<std::string> mItems; }; diff --git a/src/gui/npcpostdialog.cpp b/src/gui/npcpostdialog.cpp new file mode 100644 index 00000000..278bc397 --- /dev/null +++ b/src/gui/npcpostdialog.cpp @@ -0,0 +1,101 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "npcpostdialog.h" +#include "textbox.h" +#include "textfield.h" +#include "button.h" +#include "scrollarea.h" +#include "chat.h" + +#include "../net/tmwserv/gameserver/player.h" +#include "../utils/gettext.h" + +#include <guichan/widgets/label.hpp> + +NpcPostDialog::NpcPostDialog(): + Window(_("NPC")) +{ + setContentSize(400, 180); + + // create text field for receiver + gcn::Label *senderText = new gcn::Label("To:"); + senderText->setPosition(5, 5); + mSender = new TextField(); + mSender->setPosition(senderText->getWidth() + 5, 5); + mSender->setWidth(65); + + // create button for sending + Button *sendButton = new Button(_("Send"), "send", this); + sendButton->setPosition(400-sendButton->getWidth(), + 170-sendButton->getHeight()); + Button *cancelButton = new Button(_("Cancel"), "cancel", this); + cancelButton->setPosition(sendButton->getX() - (cancelButton->getWidth() + 2), + sendButton->getY()); + + // create textfield for letter + mText = new TextBox(); + mText->setHeight(400 - (mSender->getHeight() + sendButton->getHeight())); + mText->setEditable(true); + + // create scroll box for letter text + ScrollArea *scrollArea = new ScrollArea(mText); + scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); + scrollArea->setDimension(gcn::Rectangle( + 5, mSender->getHeight() + 5, + 380, 140 - (mSender->getHeight() + sendButton->getHeight()))); + + add(senderText); + add(mSender); + add(scrollArea); + add(sendButton); + add(cancelButton); + + setLocationRelativeTo(getParent()); +} + +void NpcPostDialog::action(const gcn::ActionEvent &event) +{ + if (event.getId() == "send") + { + if (mSender->getText().empty() || mText->getText().empty()) + { + localChatTab->chatLog("Failed to send as sender or letter invalid"); + } + else + { + Net::GameServer::Player::sendLetter(mSender->getText(), mText->getText()); + } + setVisible(false); + clear(); + } + else if (event.getId() == "cancel") + { + setVisible(false); + clear(); + } +} + +void NpcPostDialog::clear() +{ + mSender->setText(""); + mText->setText(""); +} diff --git a/src/gui/npcpostdialog.h b/src/gui/npcpostdialog.h new file mode 100644 index 00000000..b970f5cf --- /dev/null +++ b/src/gui/npcpostdialog.h @@ -0,0 +1,57 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef GUI_NPCPOSTDIALOG_H +#define GUI_NPCPOSTDIALOG_H + +#include <guichan/actionlistener.hpp> + +#include "window.h" + +class TextBox; +class TextField; + +class NpcPostDialog : public Window, public gcn::ActionListener +{ +public: + /** + * Constructor + */ + NpcPostDialog(); + + /** + * Called when receiving actions from the widgets. + */ + void action(const gcn::ActionEvent &event); + + /** + * Clear the contents of the dialog + */ + void clear(); + +private: + TextBox *mText; + TextField *mSender; +}; + +extern NpcPostDialog *npcPostDialog; + +#endif diff --git a/src/gui/npcstringdialog.cpp b/src/gui/npcstringdialog.cpp index 43d0722f..c84de015 100644 --- a/src/gui/npcstringdialog.cpp +++ b/src/gui/npcstringdialog.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,6 +20,7 @@ */ #include "button.h" +#include "npc_text.h" #include "npcstringdialog.h" #include "textfield.h" @@ -29,25 +29,38 @@ #include "../npc.h" #include "../net/messageout.h" -#include "../net/protocol.h" +#ifdef EATHENA_SUPPORT +#include "../net/ea/protocol.h" +#endif #include "../utils/gettext.h" - -NpcStringDialog::NpcStringDialog(Network *network): - Window(_("NPC Text Request")), mNetwork(network) +#include "../utils/strprintf.h" + +#ifdef TMWSERV_SUPPORT +NpcStringDialog::NpcStringDialog() +#else +NpcStringDialog::NpcStringDialog(Network *network) +#endif + : Window(_("NPC Text Request")) +#ifdef EATHENA_SUPPORT + , mNetwork(network) +#endif { - setWindowName("NPCInput"); + setWindowName("NPCString"); mValueField = new TextField(""); setDefaultSize(175, 75, ImageRect::CENTER); - okButton = new Button(_("OK"), "ok", this); - cancelButton = new Button(_("Cancel"), "cancel", this); + gcn::Button *okButton = new Button(_("OK"), "ok", this); + gcn::Button *cancelButton = new Button(_("Cancel"), "cancel", this); place(0, 0, mValueField, 3); place(1, 1, cancelButton); place(2, 1, okButton); + reflowLayout(175, 0); + center(); + setDefaultSize(); loadWindowState(); } @@ -59,27 +72,36 @@ std::string NpcStringDialog::getValue() void NpcStringDialog::setValue(const std::string &value) { mValueField->setText(value); + mDefault = value; } void NpcStringDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "cancel") - mValueField->setText(""); + { + mValueField->setText(mDefault); + npcTextDialog->addText(_("\n> Cancel\n")); + } + else + { + npcTextDialog->addText(strprintf("\n> \"%s\"\n", + mValueField->getText().c_str())); + } setVisible(false); - NPC::mTalking = false; + NPC::isTalking = false; std::string text = mValueField->getText(); mValueField->setText(""); +#ifdef EATHENA_SUPPORT MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_NPC_STR_RESPONSE); outMsg.writeInt16(text.length() + 9); outMsg.writeInt32(current_npc); outMsg.writeString(text, text.length()); outMsg.writeInt8(0); - - current_npc = 0; +#endif } bool NpcStringDialog::isInputFocused() @@ -91,3 +113,13 @@ void NpcStringDialog::requestFocus() { mValueField->requestFocus(); } + +void NpcStringDialog::setVisible(bool visible) +{ + if (visible) { + npcTextDialog->setVisible(true); + requestFocus(); + } + + Window::setVisible(visible); +} diff --git a/src/gui/npcstringdialog.h b/src/gui/npcstringdialog.h index ee620daf..94cd59b2 100644 --- a/src/gui/npcstringdialog.h +++ b/src/gui/npcstringdialog.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,11 +22,13 @@ #ifndef GUI_NPCSTRINGDIALOG_H #define GUI_NPCSTRINGDIALOG_H -#include <guichan/actionlistener.hpp> - #include "window.h" +#include <guichan/actionlistener.hpp> + +#ifdef EATHENA_SUPPORT class Network; +#endif /** * The npc integer input dialog. @@ -42,7 +43,11 @@ class NpcStringDialog : public Window, public gcn::ActionListener * * @see Window::Window */ +#ifdef TMWSERV_SUPPORT + NpcStringDialog(); +#else NpcStringDialog(Network *network); +#endif /** * Called when receiving actions from the widgets. @@ -71,11 +76,14 @@ class NpcStringDialog : public Window, public gcn::ActionListener */ void requestFocus(); + void setVisible(bool visible); + private: +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif gcn::TextField *mValueField; - gcn::Button *okButton; - gcn::Button *cancelButton; + std::string mDefault; }; extern NpcStringDialog *npcStringDialog; diff --git a/src/gui/ok_dialog.cpp b/src/gui/ok_dialog.cpp index 84fa20ea..24ffa80c 100644 --- a/src/gui/ok_dialog.cpp +++ b/src/gui/ok_dialog.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,12 +33,12 @@ OkDialog::OkDialog(const std::string &title, const std::string &msg, Window *parent): Window(title, true, parent) { - mTextBox = new TextBox(); + mTextBox = new TextBox; mTextBox->setEditable(false); mTextBox->setOpaque(false); mTextArea = new ScrollArea(mTextBox); - okButton = new Button(_("Ok"), "ok", this); + gcn::Button *okButton = new Button(_("Ok"), "ok", this); mTextArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); mTextArea->setVerticalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); @@ -69,7 +68,7 @@ OkDialog::OkDialog(const std::string &title, const std::string &msg, add(mTextArea); add(okButton); - setLocationRelativeTo(getParent()); + center(); setVisible(true); okButton->requestFocus(); } diff --git a/src/gui/ok_dialog.h b/src/gui/ok_dialog.h index 6cfe0798..46dd4db0 100644 --- a/src/gui/ok_dialog.h +++ b/src/gui/ok_dialog.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,13 +19,13 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef _OK_DIALOG_H -#define _OK_DIALOG_H - -#include <guichan/actionlistener.hpp> +#ifndef OK_DIALOG_H +#define OK_DIALOG_H #include "window.h" +#include <guichan/actionlistener.hpp> + class ScrollArea; class TextBox; @@ -56,7 +55,6 @@ class OkDialog : public Window, public gcn::ActionListener private: TextBox *mTextBox; ScrollArea *mTextArea; - gcn::Button *okButton; }; #endif diff --git a/src/gui/palette.cpp b/src/gui/palette.cpp index 2efc60be..b176fcff 100644 --- a/src/gui/palette.cpp +++ b/src/gui/palette.cpp @@ -3,7 +3,7 @@ * Copyright (C) 2008 Douglas Boffey <dougaboffey@netscape.net> * Copyright (C) 2009 The Mana World Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -76,8 +76,7 @@ const int Palette::GRADIENT_DELAY = 40; Palette::Palette() : mRainbowTime(tick_time), - mColVector(ColVector(TYPE_COUNT)), - mGradVector() + mColVector(ColVector(TYPE_COUNT)) { std::string indent = " "; addColor(TEXT, 0x000000, STATIC, _("Text")); @@ -346,4 +345,3 @@ void Palette::advanceGradient () mRainbowTime = tick_time; } } - diff --git a/src/gui/palette.h b/src/gui/palette.h index e894ba74..b2994351 100644 --- a/src/gui/palette.h +++ b/src/gui/palette.h @@ -3,7 +3,7 @@ * Copyright (C) 2008 Douglas Boffey <dougaboffey@netscape.net> * Copyright (C) 2009 The Mana World Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -124,7 +124,7 @@ class Palette : public gcn::ListModel * * @return the requested color or Palette::BLACK */ - const gcn::Color& getColor(char c, bool &valid); + const gcn::Color &getColor(char c, bool &valid); /** * Gets the color associated with the type. Sets the alpha channel @@ -135,7 +135,7 @@ class Palette : public gcn::ListModel * * @return the requested color */ - inline const gcn::Color& getColor(ColorType type, int alpha = 255) + inline const gcn::Color &getColor(ColorType type, int alpha = 255) { gcn::Color* col = &mColVector[type].color; col->a = alpha; @@ -149,8 +149,10 @@ class Palette : public gcn::ListModel * * @return the requested committed color */ - inline const gcn::Color& getCommittedColor(ColorType type) - { return mColVector[type].committedColor; } + inline const gcn::Color &getCommittedColor(ColorType type) + { + return mColVector[type].committedColor; + } /** * Gets the test color associated with the specified type. @@ -159,8 +161,10 @@ class Palette : public gcn::ListModel * * @return the requested test color */ - inline const gcn::Color& getTestColor(ColorType type) - { return mColVector[type].testColor; } + inline const gcn::Color &getTestColor(ColorType type) + { + return mColVector[type].testColor; + } /** * Sets the test color associated with the specified type. @@ -169,7 +173,9 @@ class Palette : public gcn::ListModel * @param color the color that should be tested */ inline void setTestColor(ColorType type, gcn::Color color) - { mColVector[type].testColor = color; } + { + mColVector[type].testColor = color; + } /** * Gets the GradientType associated with the specified type. @@ -179,7 +185,9 @@ class Palette : public gcn::ListModel * @return the gradient type of the color with the given index */ inline GradientType getGradientType(ColorType type) - { return mColVector[type].grad; } + { + return mColVector[type].grad; + } /** * Get the character used by the specified color. @@ -188,7 +196,10 @@ class Palette : public gcn::ListModel * * @return the color char of the color with the given index */ - inline char getColorChar(ColorType type) { return mColVector[type].ch; } + inline char getColorChar(ColorType type) + { + return mColVector[type].ch; + } /** * Sets the color for the specified type. @@ -236,7 +247,10 @@ class Palette : public gcn::ListModel /** * Commit the colors */ - inline void commit() { commit(false); } + inline void commit() + { + commit(false); + } /** * Rollback the colors @@ -331,7 +345,7 @@ class Palette : public gcn::ListModel * * @return the transformed string */ - static std::string getConfigName(const std::string& typeName); + static std::string getConfigName(const std::string &typeName); }; extern Palette *guiPalette; diff --git a/src/gui/partywindow.cpp b/src/gui/partywindow.cpp new file mode 100644 index 00000000..3f857b5c --- /dev/null +++ b/src/gui/partywindow.cpp @@ -0,0 +1,145 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "partywindow.h" +#include "chat.h" + +#include "widgets/avatar.h" + +#include "../utils/gettext.h" +#include "../net/tmwserv/chatserver/party.h" + +PartyWindow::PartyWindow() : Window(_("Party")) +{ + setWindowName("Party"); + setVisible(false); + setResizable(false); + setCaption(_("Party")); + setCloseButton(true); + setMinWidth(110); + setMinHeight(200); + setDefaultSize(620, 300, 110, 200); + + loadWindowState(); +} + +PartyWindow::~PartyWindow() +{ + mPartyMembers.clear(); +} + +void PartyWindow::draw(gcn::Graphics *graphics) +{ + Window::draw(graphics); +} + +void PartyWindow::addPartyMember(const std::string &memberName) +{ + // check to see if player is already in the party + PartyList::iterator itr = mPartyMembers.begin(), + itr_end = mPartyMembers.end(); + + while (itr != itr_end) + { + if ((*itr).name == memberName) + { + // already in the party, dont add + return; + } + ++itr; + } + + // create new party member + PartyMember player; + player.name = memberName; + mPartyMembers.push_back(player); + + // add avatar of the new member to window + Avatar *avatar = new Avatar(memberName); + add(avatar, 0, (mPartyMembers.size() - 1)*14); + + // show the window + if (mPartyMembers.size() > 0) + { + setVisible(true); + } +} + +void PartyWindow::removePartyMember(const std::string &memberName) +{ + // remove the party member + PartyList::iterator itr = mPartyMembers.begin(), + itr_end = mPartyMembers.end(); + + while (itr != itr_end) + { + if ((*itr).name == memberName) + { + mPartyMembers.erase(itr); + break; + } + ++itr; + } + + // if no-one left, remove the party window + if (mPartyMembers.size() < 1) + { + setVisible(false); + } +} + +void PartyWindow::showPartyInvite(const std::string &inviter) +{ + // check there isnt already an invite showing + if (mPartyInviter != "") + { + localChatTab->chatLog("Received party request, but one already exists", + BY_SERVER); + return; + } + + // log invite + std::string msg = inviter + " has invited you to join their party"; + localChatTab->chatLog(msg, BY_SERVER); + + // show invite + acceptDialog = new ConfirmDialog("Accept Party Invite", msg, this); + acceptDialog->addActionListener(this); + + mPartyInviter = inviter; +} + +void PartyWindow::action(const gcn::ActionEvent &event) +{ + const std::string &eventId = event.getId(); + + // check if they accepted the invite + if (eventId == "yes") + { + localChatTab->chatLog("Accepted invite from " + mPartyInviter); + Net::ChatServer::Party::acceptInvite(mPartyInviter); + mPartyInviter = ""; + } + else if (eventId == "no") + { + mPartyInviter = ""; + } +} diff --git a/src/gui/partywindow.h b/src/gui/partywindow.h new file mode 100644 index 00000000..b587cc42 --- /dev/null +++ b/src/gui/partywindow.h @@ -0,0 +1,96 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PARTYWINDOW_H +#define PARTYWINDOW_H + +#include "window.h" +#include "confirm_dialog.h" + +#include <string> +#include <vector> + +#include <guichan/actionevent.hpp> +#include <guichan/actionlistener.hpp> + +/** + * Party Member + * Used for storing players in the party + */ +struct PartyMember +{ + std::string name; + int vitality; +}; + +/** + * Party Window. + * + * \ingroup Interface + */ +class PartyWindow : public Window, gcn::ActionListener +{ + public: + /** + * Constructor. + */ + PartyWindow(); + + /** + * Release all the players created + */ + ~PartyWindow(); + + /** + * Draws the party window + */ + void draw(gcn::Graphics *graphics); + + /** + * Add party member + */ + void addPartyMember(const std::string &memberName); + + /** + * Remove party member + */ + void removePartyMember(const std::string &memberName); + + /** + * Show party invite + */ + void showPartyInvite(const std::string &inviter); + + /** + * Handle events + */ + void action(const gcn::ActionEvent &event); + + private: + typedef std::vector<PartyMember> PartyList; + PartyList mPartyMembers; + std::string mPartyInviter; + ConfirmDialog *acceptDialog; +}; + +extern PartyWindow *partyWindow; + +#endif diff --git a/src/gui/passwordfield.cpp b/src/gui/passwordfield.cpp index 073f5e36..fd8ebe22 100644 --- a/src/gui/passwordfield.cpp +++ b/src/gui/passwordfield.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,7 +21,7 @@ #include "passwordfield.h" -PasswordField::PasswordField(const std::string& text): +PasswordField::PasswordField(const std::string &text): TextField(text) { } diff --git a/src/gui/passwordfield.h b/src/gui/passwordfield.h index adad54fe..3b0b5dab 100644 --- a/src/gui/passwordfield.h +++ b/src/gui/passwordfield.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,8 +22,6 @@ #ifndef PASSWORDFIELD_H #define PASSWORDFIELD_H -#include <string> - #include "textfield.h" /** @@ -38,7 +35,7 @@ class PasswordField : public TextField /** * Constructor, initializes the password field with the given string. */ - PasswordField(const std::string& text = ""); + PasswordField(const std::string &text = ""); /** * Draws the password field. diff --git a/src/gui/playerbox.cpp b/src/gui/playerbox.cpp index 2a6cdb20..b7e553dc 100644 --- a/src/gui/playerbox.cpp +++ b/src/gui/playerbox.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -85,10 +84,14 @@ void PlayerBox::draw(gcn::Graphics *graphics) if (mPlayer) { // Draw character - int x, y, bs; - bs = getFrameSize(); - x = getWidth() / 2 - 16 + bs; - y = getHeight() / 2 + bs; + const int bs = getFrameSize(); +#ifdef TMWSERV_SUPPORT + const int x = getWidth() / 2 + bs; + const int y = getHeight() - bs - 8; + mPlayer->draw(static_cast<Graphics*>(graphics), x, y); +#else + const int x = getWidth() / 2 - 16 + bs; + const int y = getHeight() / 2 + bs; for (int i = 0; i < Being::VECTOREND_SPRITE; i++) { if (mPlayer->getSprite(i)) @@ -96,6 +99,7 @@ void PlayerBox::draw(gcn::Graphics *graphics) mPlayer->getSprite(i)->draw(static_cast<Graphics*>(graphics), x, y); } } +#endif } if (config.getValue("guialpha", 0.8) != mAlpha) diff --git a/src/gui/playerbox.h b/src/gui/playerbox.h index ee25520a..7c08defd 100644 --- a/src/gui/playerbox.h +++ b/src/gui/playerbox.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/popup.cpp b/src/gui/popup.cpp index f4c7d4a3..648a9d6a 100644 --- a/src/gui/popup.cpp +++ b/src/gui/popup.cpp @@ -1,9 +1,9 @@ /* - * Aethyra + * The Mana World + * Copyright (C) 2004 The Mana World Development Team * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,7 +32,7 @@ #include "../resources/image.h" -Popup::Popup(const std::string& name, const std::string& skin): +Popup::Popup(const std::string &name, const std::string &skin): mPopupName(name), mDefaultSkinPath(skin), mMinWidth(100), diff --git a/src/gui/popup.h b/src/gui/popup.h index c68c2098..6fbe796c 100644 --- a/src/gui/popup.h +++ b/src/gui/popup.h @@ -1,9 +1,9 @@ /* - * Aethyra + * The Mana World + * Copyright (C) 2004 The Mana World Development Team * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -52,7 +52,7 @@ class Popup : public gcn::Container * debugging purposes. * @param skin The location where the Popup's skin XML can be found. */ - Popup(const std::string& name = "", + Popup(const std::string &name = "", const std::string &skin = "graphics/gui/gui.xml"); /** @@ -97,39 +97,27 @@ class Popup : public gcn::Container */ void setMinWidth(int width); + int getMinWidth() const { return mMinWidth; } + /** * Sets the minimum height of the popup. */ void setMinHeight(int height); + int getMinHeight() const { return mMinHeight; } + /** * Sets the maximum width of the popup. */ void setMaxWidth(int width); + int getMaxWidth() const { return mMaxWidth; } + /** * Sets the minimum height of the popup. */ void setMaxHeight(int height); - /** - * Gets the minimum width of the popup. - */ - int getMinWidth() const { return mMinWidth; } - - /** - * Gets the minimum height of the popup. - */ - int getMinHeight() const { return mMinHeight; } - - /** - * Gets the maximum width of the popup. - */ - int getMaxWidth() const { return mMaxWidth; } - - /** - * Gets the minimum height of the popup. - */ int getMaxHeight() const { return mMaxHeight; } /** @@ -141,24 +129,16 @@ class Popup : public gcn::Container */ int getPadding() const { return mPadding; } - /** - * Sets the padding of the popup. The padding is the distance between the - * popup border and the content. - * - * @param padding The padding of the popup. - * @see getPadding - */ void setPadding(int padding) { mPadding = padding; } /** * Sets the name of the popup. This is only useful for debug purposes. */ - void setPopupName(const std::string &name) { mPopupName = name; } + void setPopupName(const std::string &name) + { mPopupName = name; } - /** - * Returns the name of the popup. This is only useful for debug purposes. - */ - const std::string& getPopupName() { return mPopupName; } + const std::string &getPopupName() const + { return mPopupName; } /** * Schedule this popup for deletion. It will be deleted at the start @@ -179,7 +159,7 @@ class Popup : public gcn::Container int mMaxHeight; /**< Maximum popup height */ int mPadding; /**< Holds the padding of the popup. */ - Skin* mSkin; /**< Skin in use by this popup */ + Skin *mSkin; /**< Skin in use by this popup */ }; #endif diff --git a/src/gui/popupmenu.cpp b/src/gui/popupmenu.cpp index 13adf827..0b019fef 100644 --- a/src/gui/popupmenu.cpp +++ b/src/gui/popupmenu.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,30 +19,34 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <cassert> +#include "gui/popupmenu.h" + +#include "gui/browserbox.h" +#include "gui/chat.h" +#include "gui/inventorywindow.h" +#include "gui/item_amount.h" -#include "browserbox.h" -#include "chat.h" -#include "inventorywindow.h" -#include "item_amount.h" -#include "popupmenu.h" +#include "being.h" +#include "beingmanager.h" +#include "floor_item.h" +#include "graphics.h" +#include "item.h" +#include "localplayer.h" +#include "npc.h" +#include "player_relations.h" -#include "../being.h" -#include "../beingmanager.h" -#include "../floor_item.h" -#include "../graphics.h" -#include "../item.h" -#include "../localplayer.h" -#include "../npc.h" -#include "../player_relations.h" +#ifdef EATHENA_SUPPORT +#include "net/messageout.h" +#include "net/ea/protocol.h" +#endif -#include "../net/messageout.h" -#include "../net/protocol.h" +#include "resources/itemdb.h" +#include "resources/iteminfo.h" -#include "../resources/itemdb.h" +#include "utils/gettext.h" +#include "utils/strprintf.h" -#include "../utils/gettext.h" -#include "../utils/strprintf.h" +#include <cassert> extern std::string tradePartnerName; @@ -57,7 +60,7 @@ PopupMenu::PopupMenu(): setTitleBarHeight(0); setShowTitle(false); - mBrowserBox = new BrowserBox(); + mBrowserBox = new BrowserBox; mBrowserBox->setPosition(4, 4); mBrowserBox->setHighlightMode(BrowserBox::BACKGROUND); mBrowserBox->setOpaque(false); @@ -85,26 +88,28 @@ void PopupMenu::showPopup(int x, int y, Being *being) mBrowserBox->addRow("##3---"); switch (player_relations.getRelation(name)) { - case PlayerRelation::NEUTRAL: - mBrowserBox->addRow(strprintf(_("@@friend|Befriend %s@@"), name.c_str())); - - case PlayerRelation::FRIEND: - mBrowserBox->addRow(strprintf(_("@@disregard|Disregard %s@@"), name.c_str())); - mBrowserBox->addRow(strprintf(_("@@ignore|Ignore %s@@"), name.c_str())); - break; - - case PlayerRelation::DISREGARDED: - mBrowserBox->addRow(strprintf(_("@@unignore|Un-Ignore %s@@"), name.c_str())); - mBrowserBox->addRow(strprintf(_("@@ignore|Completely ignore %s@@"), name.c_str())); - break; - - case PlayerRelation::IGNORED: - mBrowserBox->addRow(strprintf(_("@@unignore|Un-Ignore %s@@"), name.c_str())); - break; + case PlayerRelation::NEUTRAL: + mBrowserBox->addRow(strprintf(_("@@friend|Befriend %s@@"), name.c_str())); + + case PlayerRelation::FRIEND: + mBrowserBox->addRow(strprintf(_("@@disregard|Disregard %s@@"), name.c_str())); + mBrowserBox->addRow(strprintf(_("@@ignore|Ignore %s@@"), name.c_str())); + break; + + case PlayerRelation::DISREGARDED: + mBrowserBox->addRow(strprintf(_("@@unignore|Un-Ignore %s@@"), name.c_str())); + mBrowserBox->addRow(strprintf(_("@@ignore|Completely ignore %s@@"), name.c_str())); + break; + + case PlayerRelation::IGNORED: + mBrowserBox->addRow(strprintf(_("@@unignore|Un-Ignore %s@@"), name.c_str())); + break; } //mBrowserBox->addRow(_("@@follow|Follow ") + name + "@@"); //mBrowserBox->addRow(_("@@buddy|Add ") + name + " to Buddy List@@"); + mBrowserBox->addRow(strprintf(_("@@guild|Invite %s@@"), name.c_str())); + mBrowserBox->addRow(strprintf(_("@@party|Invite %s to join your party@@"), name.c_str())); mBrowserBox->addRow("##3---"); mBrowserBox->addRow(strprintf(_("@@party-invite|Invite %s to party@@"), name.c_str())); @@ -145,51 +150,78 @@ void PopupMenu::showPopup(int x, int y, FloorItem *floorItem) showPopup(x, y); } -void PopupMenu::handleLink(const std::string& link) +void PopupMenu::handleLink(const std::string &link) { Being *being = beingManager->findBeing(mBeingId); // Talk To action - if (link == "talk" && being && being->getType() == Being::NPC && + if (link == "talk" && + being && + being->getType() == Being::NPC && current_npc == 0) { dynamic_cast<NPC*>(being)->talk(); } // Trade action - else if (link == "trade" && being && being->getType() == Being::PLAYER) + else if (link == "trade" && + being && + being->getType() == Being::PLAYER) { player_node->trade(being); tradePartnerName = being->getName(); } - +#ifdef EATHENA_SUPPORT // Attack action - else if (link == "attack" && being && being->getType() == Being::PLAYER) + else if (link == "attack" && + being && + being->getType() == Being::PLAYER) { player_node->attack(being, true); } - - else if (link == "unignore" && being && being->getType() == Being::PLAYER) +#endif + else if (link == "unignore" && + being && + being->getType() == Being::PLAYER) { player_relations.setRelation(being->getName(), PlayerRelation::NEUTRAL); } - else if (link == "ignore" && being && being->getType() == Being::PLAYER) + else if (link == "ignore" && + being && + being->getType() == Being::PLAYER) { player_relations.setRelation(being->getName(), PlayerRelation::IGNORED); } - else if (link == "disregard" && being && + else if (link == "disregard" && + being && being->getType() == Being::PLAYER) { player_relations.setRelation(being->getName(), PlayerRelation::DISREGARDED); } - else if (link == "friend" && being && being->getType() == Being::PLAYER) + else if (link == "friend" && + being && + being->getType() == Being::PLAYER) { player_relations.setRelation(being->getName(), PlayerRelation::FRIEND); } +#ifdef TMWSERV_SUPPORT + // Guild action + else if (link == "guild" && + being != NULL && + being->getType() == Being::PLAYER) + { + player_node->inviteToGuild(being); + } + // Add player to your party + else if (link == "party") + { + player_node->inviteToParty(being->getName()); + } +#endif /* // Follow Player action else if (link == "follow") @@ -222,6 +254,9 @@ void PopupMenu::handleLink(const std::string& link) assert(mItem); if (mItem->isEquipment()) { +#ifdef TMWSERV_SUPPORT + player_node->equipItem(mItem); +#else if (mItem->isEquipped()) { player_node->unequipItem(mItem); @@ -230,10 +265,15 @@ void PopupMenu::handleLink(const std::string& link) { player_node->equipItem(mItem); } +#endif } else { +#ifdef TMWSERV_SUPPORT + player_node->useItem(mItem->getInvIndex()); +#else player_node->useItem(mItem); +#endif } } @@ -242,17 +282,24 @@ void PopupMenu::handleLink(const std::string& link) chatWindow->addItemText(mItem->getInfo().getName()); } + else if (link == "split") + { + new ItemAmountWindow(AMOUNT_ITEM_SPLIT, inventoryWindow, mItem); + } else if (link == "drop") { new ItemAmountWindow(AMOUNT_ITEM_DROP, inventoryWindow, mItem); } - else if (link == "party-invite" && being && +#ifdef EATHENA_SUPPORT + else if (link == "party-invite" && + being && being->getType() == Being::PLAYER) { MessageOut outMsg(player_node->getNetwork()); outMsg.writeInt16(CMSG_PARTY_INVITE); outMsg.writeInt32(being->getId()); } +#endif // Unknown actions else @@ -275,15 +322,23 @@ void PopupMenu::showPopup(int x, int y, Item *item) if (item->isEquipment()) { +#ifdef TMWSERV_SUPPORT + mBrowserBox->addRow(_("@@use|Equip@@")); +#else if (item->isEquipped()) mBrowserBox->addRow(_("@@use|Unequip@@")); else mBrowserBox->addRow(_("@@use|Equip@@")); +#endif } else mBrowserBox->addRow(_("@@use|Use@@")); mBrowserBox->addRow(_("@@drop|Drop@@")); +#ifdef TMWSERV_SUPPORT + if (!item->isEquipment()) + mBrowserBox->addRow(_("@@split|Split@@")); +#endif mBrowserBox->addRow(_("@@chat|Add to Chat@@")); mBrowserBox->addRow("##3---"); mBrowserBox->addRow(_("@@cancel|Cancel@@")); diff --git a/src/gui/popupmenu.h b/src/gui/popupmenu.h index 89152751..d9fb4777 100644 --- a/src/gui/popupmenu.h +++ b/src/gui/popupmenu.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -62,7 +61,7 @@ class PopupMenu : public Window, public LinkHandler /** * Handles link action. */ - void handleLink(const std::string& link); + void handleLink(const std::string &link); private: BrowserBox* mBrowserBox; diff --git a/src/gui/progressbar.cpp b/src/gui/progressbar.cpp index 1f21df79..02ddab16 100644 --- a/src/gui/progressbar.cpp +++ b/src/gui/progressbar.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -44,6 +43,9 @@ ProgressBar::ProgressBar(float progress, mRed(red), mGreen(green), mBlue(blue), mRedToGo(red), mGreenToGo(green), mBlueToGo(blue) { + mProgressToGo = mProgress = 0.0f; + mSmoothProgress = mSmoothColorChange = true; + setProgress(progress); setWidth(width); setHeight(height); @@ -93,13 +95,31 @@ ProgressBar::~ProgressBar() void ProgressBar::logic() { - // Smoothly changing the color for a nicer effect. - if (mRedToGo > mRed) mRed++; - if (mRedToGo < mRed) mRed--; - if (mGreenToGo > mGreen) mGreen++; - if (mGreenToGo < mGreen) mGreen--; - if (mBlueToGo > mBlue) mBlue++; - if (mBlueToGo < mBlue) mBlue--; + if (mSmoothColorChange) + { + // Smoothly changing the color for a nicer effect. + if (mRedToGo > mRed) mRed++; + if (mRedToGo < mRed) mRed--; + if (mGreenToGo > mGreen) mGreen++; + if (mGreenToGo < mGreen) mGreen--; + if (mBlueToGo > mBlue) mBlue++; + if (mBlueToGo < mBlue) mBlue--; + } + else + { + mRed = mRedToGo; + mGreen = mGreenToGo; + mBlue = mBlueToGo; + } + + if (mSmoothProgress) + { + // Smoothly showing the progressbar changes. + if (mProgressToGo > mProgress) mProgress = mProgress + 0.005f; + if (mProgressToGo < mProgress) mProgress = mProgress - 0.005f; + } + else + mProgress = mProgressToGo; } void ProgressBar::draw(gcn::Graphics *graphics) @@ -142,9 +162,9 @@ void ProgressBar::draw(gcn::Graphics *graphics) void ProgressBar::setProgress(float progress) { - if (progress < 0.0f) mProgress = 0.0; - else if (progress > 1.0f) mProgress = 1.0; - else mProgress = progress; + if (progress < 0.0f) mProgressToGo = 0.0; + else if (progress > 1.0f) mProgressToGo = 1.0; + else mProgressToGo = progress; } void ProgressBar::setColor(Uint8 red, Uint8 green, Uint8 blue) diff --git a/src/gui/progressbar.h b/src/gui/progressbar.h index 3c88f3a3..e75b1d44 100644 --- a/src/gui/progressbar.h +++ b/src/gui/progressbar.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -103,16 +102,35 @@ class ProgressBar : public gcn::Widget const std::string &text() const { return mText; } + /** + * Set wether the progress is moved smoothly. + */ + void setSmoothProgress(bool smoothProgress) + { mSmoothProgress = smoothProgress; } + + /** + * Set wether the color changing is made smoothly. + */ + void setSmoothColorChange(bool smoothColorChange) + { mSmoothColorChange = smoothColorChange; } + + private: - float mProgress; + float mProgress, mProgressToGo; + bool mSmoothProgress; + Uint8 mRed, mGreen, mBlue; Uint8 mRedToGo, mGreenToGo, mBlueToGo; + bool mSmoothColorChange; + std::string mText; bool mUpdated; static ImageRect mBorder; static int mInstances; static float mAlpha; + + static const gcn::Color TEXT_COLOR; }; #endif diff --git a/src/gui/quitdialog.cpp b/src/gui/quitdialog.cpp new file mode 100644 index 00000000..83794ffe --- /dev/null +++ b/src/gui/quitdialog.cpp @@ -0,0 +1,135 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "quitdialog.h" +#include <iostream> +#include <string> + +#include <guichan/widgets/label.hpp> + +#include "../main.h" + +#include "button.h" +#include "radiobutton.h" + +#include "../utils/gettext.h" + +QuitDialog::QuitDialog(bool* quitGame, QuitDialog** pointerToMe): + Window(_("Quit"), true, NULL), mQuitGame(quitGame), mMyPointer(pointerToMe) +{ + + mLogoutQuit = new RadioButton(_("Quit"), "quitdialog"); + mForceQuit = new RadioButton(_("Quit"), "quitdialog"); + mSwitchAccountServer = new RadioButton(_("Switch server"), "quitdialog"); + mSwitchCharacter = new RadioButton(_("Switch character"), "quitdialog"); + mOkButton = new Button(_("Ok"), "ok", this); + mCancelButton = new Button(_("Cancel"), "cancel", this); + + setContentSize(200, 91); + + mLogoutQuit->setPosition(5, 5); + mForceQuit->setPosition(5, 5); + mSwitchAccountServer->setPosition(5, 14 + mLogoutQuit->getHeight()); + mSwitchCharacter->setPosition(5, + 23 + mLogoutQuit->getHeight() + mSwitchAccountServer->getHeight()); + mCancelButton->setPosition( + 200 - mCancelButton->getWidth() - 5, + 91 - mCancelButton->getHeight() - 5); + mOkButton->setPosition( + mCancelButton->getX() - mOkButton->getWidth() - 5, + 91 - mOkButton->getHeight() - 5); + + //All states, when we're not logged in to someone. + if (state == STATE_CHOOSE_SERVER || + state == STATE_CONNECT_ACCOUNT || + state == STATE_LOGIN || + state == STATE_LOGIN_ATTEMPT || + state == STATE_UPDATE) + { + mForceQuit->setSelected(true); + add(mForceQuit); + } + else + { + // Only added if we are connected to an accountserver or gameserver + mLogoutQuit->setSelected(true); + add(mLogoutQuit); + add(mSwitchAccountServer); + + // Only added if we are connected to a gameserver + if (state == STATE_GAME) add(mSwitchCharacter); + } + + add(mOkButton); + add(mCancelButton); + + setLocationRelativeTo(getParent()); + setVisible(true); + + mOkButton->requestFocus(); + +} + +QuitDialog::~QuitDialog() +{ + if (mMyPointer) *mMyPointer = NULL; + // Optional widgets, so delete them by hand. + delete mForceQuit; + delete mLogoutQuit; + delete mSwitchAccountServer; + delete mSwitchCharacter; +} + +void +QuitDialog::action(const gcn::ActionEvent &event) +{ + if (event.getId() == "ok") + { + if (mForceQuit->isSelected()) + { + state = STATE_FORCE_QUIT; + } + else if (mLogoutQuit->isSelected()) + { + if ((state == STATE_GAME) && (mQuitGame)) + { + *mQuitGame = true; + } + state = STATE_EXIT; + } + else if (mSwitchAccountServer->isSelected()) + { + if ((state == STATE_GAME) && (mQuitGame)) + { + *mQuitGame = true; + } + state = STATE_SWITCH_ACCOUNTSERVER_ATTEMPT; + } + else if (mSwitchCharacter->isSelected()) + { + if (mQuitGame) *mQuitGame = true; + + state = STATE_SWITCH_CHARACTER; + } + + } + scheduleDelete(); +} diff --git a/src/gui/quitdialog.h b/src/gui/quitdialog.h new file mode 100644 index 00000000..aee671db --- /dev/null +++ b/src/gui/quitdialog.h @@ -0,0 +1,70 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QUITDIALOG_H +#define QUITDIALOG_H + +#include <iosfwd> +#include <guichan/actionlistener.hpp> + +#include "window.h" +#include "../guichanfwd.h" +#include "../main.h" + +/** + * The quit dialog. + * + * \ingroup Interface + */ +class QuitDialog : public Window, public gcn::ActionListener { + public: + /** + * Constructor + * + * @quitGame; to be used for getting out of the while loop in Game + * @pointerToMe; will be set to NULL when the QuitDialog is destroyed + */ + QuitDialog(bool* quitGame, QuitDialog** pointerToMe); + + /** + * Destructor + */ + ~QuitDialog(); + + /** + * Called when receiving actions from the widgets. + */ + void action(const gcn::ActionEvent &event); + + private: + gcn::RadioButton *mLogoutQuit; + gcn::RadioButton *mForceQuit; + gcn::RadioButton *mSwitchAccountServer; + gcn::RadioButton *mSwitchCharacter; + gcn::Button *mOkButton; + gcn::Button *mCancelButton; + + bool* mQuitGame; + QuitDialog** mMyPointer; + +}; + +#endif diff --git a/src/gui/radiobutton.cpp b/src/gui/radiobutton.cpp index c839238b..b05e37e6 100644 --- a/src/gui/radiobutton.cpp +++ b/src/gui/radiobutton.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,7 +34,7 @@ Image *RadioButton::radioChecked; Image *RadioButton::radioDisabled; Image *RadioButton::radioDisabledChecked; -RadioButton::RadioButton(const std::string& caption, const std::string& group, +RadioButton::RadioButton(const std::string &caption, const std::string &group, bool marked): gcn::RadioButton(caption, group, marked) { diff --git a/src/gui/radiobutton.h b/src/gui/radiobutton.h index cd501126..9aec3add 100644 --- a/src/gui/radiobutton.h +++ b/src/gui/radiobutton.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,7 +35,7 @@ class RadioButton : public gcn::RadioButton /* * Constructor. */ - RadioButton(const std::string& caption,const std::string& group, + RadioButton(const std::string &caption,const std::string &group, bool marked = false); /** diff --git a/src/gui/recorder.cpp b/src/gui/recorder.cpp index 9320e020..4f919bef 100644 --- a/src/gui/recorder.cpp +++ b/src/gui/recorder.cpp @@ -2,7 +2,7 @@ * A chat recorder * Copyright (C) 2008 Lloyd Bryant <lloyd_bryant@netzero.net> * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,6 +26,7 @@ #include "recorder.h" #include "windowcontainer.h" +#include "widgets/chattab.h" #include "widgets/layout.h" #include "../utils/stringutils.h" @@ -34,7 +35,7 @@ Recorder::Recorder(ChatWindow *chat, const std::string &title, const std::string &buttonTxt) : Window(title) { - setWindowName(_("Recorder")); + setWindowName("Recorder"); const int offsetX = 2 * getPadding() + 10; const int offsetY = getTitleBarHeight() + getPadding() + 10; @@ -66,7 +67,7 @@ void Recorder::record(const std::string &msg) } } -void Recorder::changeRecordingStatus(const std::string &msg) +void Recorder::setRecordingFile(const std::string &msg) { std::string msgCopy = msg; trim(msgCopy); @@ -82,16 +83,16 @@ void Recorder::changeRecordingStatus(const std::string &msg) * Message should go after mStream is closed so that it isn't * recorded. */ - mChat->chatLog(_("Finishing recording."), BY_SERVER); + localChatTab->chatLog(_("Finishing recording."), BY_SERVER); } else { - mChat->chatLog(_("Not currently recording."), BY_SERVER); + localChatTab->chatLog(_("Not currently recording."), BY_SERVER); } } else if (mStream.is_open()) { - mChat->chatLog(_("Already recording."), BY_SERVER); + localChatTab->chatLog(_("Already recording."), BY_SERVER); } else { @@ -99,19 +100,20 @@ void Recorder::changeRecordingStatus(const std::string &msg) * Message should go before mStream is opened so that it isn't * recorded. */ - mChat->chatLog(_("Starting to record..."), BY_SERVER); - std::string file = std::string(PHYSFS_getUserDir()) + "/.aethyra/" + msgCopy; + localChatTab->chatLog(_("Starting to record..."), BY_SERVER); + const std::string file = + std::string(PHYSFS_getUserDir()) + "/.tmw/" + msgCopy; mStream.open(file.c_str(), std::ios_base::trunc); if (mStream.is_open()) setVisible(true); else - mChat->chatLog(_("Failed to start recording."), BY_SERVER); + localChatTab->chatLog(_("Failed to start recording."), BY_SERVER); } } void Recorder::action(const gcn::ActionEvent &event) { - changeRecordingStatus(""); + setRecordingFile(""); } diff --git a/src/gui/recorder.h b/src/gui/recorder.h index 4f41ff42..39d00c2c 100644 --- a/src/gui/recorder.h +++ b/src/gui/recorder.h @@ -2,7 +2,7 @@ * A chat recorder * Copyright (C) 2008 Lloyd Bryant <lloyd_bryant@netzero.net> * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,26 +41,26 @@ class Recorder : public Window, public gcn::ActionListener virtual ~Recorder(); - /* + /** * Outputs the message to the recorder file * * @param msg the line to write to the recorded file. */ void record(const std::string &msg); - /* - * Outputs the message to the recorder file + /** + * Sets the file being recorded to * * @param msg The file to write out to. If null, then stop recording. */ - void changeRecordingStatus(const std::string &msg); + void setRecordingFile(const std::string &msg); - /* + /** * Whether or not the recorder is in use. */ - bool isRecording() {return (bool) mStream.is_open();} + bool isRecording() { return (bool) mStream.is_open(); } - /* + /** * called when the button is pressed * * @param event is the event that is generated diff --git a/src/gui/register.cpp b/src/gui/register.cpp index 63a0d29c..5fb8b579 100644 --- a/src/gui/register.cpp +++ b/src/gui/register.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,20 +40,6 @@ #include "../utils/strprintf.h" #include "../utils/stringutils.h" -/** - * Listener used while dealing with wrong data. It is used to direct the focus - * to the field which contained wrong data when the Ok button was pressed on - * the error notice. - */ -class WrongDataNoticeListener : public gcn::ActionListener -{ - public: - void setTarget(gcn::TextField *textField); - void action(const gcn::ActionEvent &event); - private: - gcn::TextField *mTarget; -}; - void WrongDataNoticeListener::setTarget(gcn::TextField *textField) { mTarget = textField; @@ -74,15 +59,19 @@ RegisterDialog::RegisterDialog(LoginData *loginData): gcn::Label *userLabel = new Label(_("Name:")); gcn::Label *passwordLabel = new Label(_("Password:")); gcn::Label *confirmLabel = new Label(_("Confirm:")); +#ifdef EATHENA_SUPPORT gcn::Label *serverLabel = new Label(_("Server:")); gcn::Label *portLabel = new Label(_("Port:")); +#endif mUserField = new TextField(loginData->username); mPasswordField = new PasswordField(loginData->password); mConfirmField = new PasswordField; +#ifdef EATHENA_SUPPORT mServerField = new TextField(loginData->hostname); mPortField = new TextField(toString(loginData->port)); mMaleButton = new RadioButton(_("Male"), "sex", true); mFemaleButton = new RadioButton(_("Female"), "sex", false); +#endif mRegisterButton = new Button(_("Register"), "register", this); mCancelButton = new Button(_("Cancel"), "cancel", this); @@ -91,15 +80,19 @@ RegisterDialog::RegisterDialog(LoginData *loginData): place(0, 0, userLabel); place(0, 1, passwordLabel); place(0, 2, confirmLabel); +#ifdef EATHENA_SUPPORT place(1, 3, mMaleButton); place(2, 3, mFemaleButton); place(0, 4, serverLabel); place(0, 5, portLabel); +#endif place(1, 0, mUserField, 3).setPadding(2); place(1, 1, mPasswordField, 3).setPadding(2); place(1, 2, mConfirmField, 3).setPadding(2); +#ifdef EATHENA_SUPPORT place(1, 4, mServerField, 3).setPadding(2); place(1, 5, mPortField, 3).setPadding(2); +#endif place = getPlacer(0, 2); place(1, 0, mRegisterButton); place(2, 0, mCancelButton); @@ -108,8 +101,10 @@ RegisterDialog::RegisterDialog(LoginData *loginData): mUserField->addKeyListener(this); mPasswordField->addKeyListener(this); mConfirmField->addKeyListener(this); +#ifdef EATHENA_SUPPORT mServerField->addKeyListener(this); mPortField->addKeyListener(this); +#endif /* TODO: * This is a quick and dirty way to respond to the ENTER key, regardless of @@ -119,16 +114,20 @@ RegisterDialog::RegisterDialog(LoginData *loginData): mUserField->setActionEventId("register"); mPasswordField->setActionEventId("register"); mConfirmField->setActionEventId("register"); - mServerField->setActionEventId("register"); - mPortField->setActionEventId("register"); mUserField->addActionListener(this); mPasswordField->addActionListener(this); mConfirmField->addActionListener(this); + +#ifdef EATHENA_SUPPORT + mServerField->setActionEventId("register"); + mPortField->setActionEventId("register"); + mServerField->addActionListener(this); mPortField->addActionListener(this); +#endif - setLocationRelativeTo(getParent()); + center(); setVisible(true); mUserField->requestFocus(); mUserField->setCaretPosition(mUserField->getText().length()); @@ -145,7 +144,7 @@ void RegisterDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "cancel") { - state = LOGIN_STATE; + state = STATE_LOGIN; } else if (event.getId() == "register" && canSubmit()) { @@ -194,6 +193,8 @@ void RegisterDialog::action(const gcn::ActionEvent &event) error = 2; } + // TODO: Check if a valid email address was given + if (error > 0) { if (error == 1) @@ -209,23 +210,30 @@ void RegisterDialog::action(const gcn::ActionEvent &event) mWrongDataNoticeListener->setTarget(this->mPasswordField); } - OkDialog *mWrongRegisterNotice = - new OkDialog(_("Error"), errorMsg); - mWrongRegisterNotice->addActionListener(mWrongDataNoticeListener); + OkDialog *dlg = new OkDialog(_("Error"), errorMsg); + dlg->addActionListener(mWrongDataNoticeListener); } else { // No errors detected, register the new user. mRegisterButton->setEnabled(false); - mLoginData->hostname = mServerField->getText(); - mLoginData->port = getUShort(mPortField->getText()); mLoginData->username = mUserField->getText(); mLoginData->password = mPasswordField->getText(); +#ifdef EATHENA_SUPPORT + mLoginData->hostname = mServerField->getText(); + mLoginData->port = getUShort(mPortField->getText()); mLoginData->username += mFemaleButton->isSelected() ? "_F" : "_M"; +#else + mLoginData->email = mEmailField->getText(); +#endif mLoginData->registerLogin = true; - state = ACCOUNT_STATE; +#ifdef TMWSERV_SUPPORT + state = STATE_REGISTER_ATTEMPT; +#else + state = STATE_ACCOUNT; +#endif } } } @@ -240,11 +248,14 @@ bool RegisterDialog::canSubmit() const return !mUserField->getText().empty() && !mPasswordField->getText().empty() && !mConfirmField->getText().empty() && +#ifdef EATHENA_SUPPORT !mServerField->getText().empty() && isUShort(mPortField->getText()) && - state == REGISTER_STATE; +#endif + state == STATE_REGISTER; } +#ifdef EATHENA_SUPPORT bool RegisterDialog::isUShort(const std::string &str) { if (str.empty()) @@ -278,3 +289,4 @@ unsigned short RegisterDialog::getUShort(const std::string &str) } return static_cast<unsigned short>(l); } +#endif diff --git a/src/gui/register.h b/src/gui/register.h index 922320db..c37305e4 100644 --- a/src/gui/register.h +++ b/src/gui/register.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,7 +31,20 @@ class LoginData; class OkDialog; -class WrongDataNoticeListener; + +/** + * Listener used while dealing with wrong data. It is used to direct the focus + * to the field which contained wrong data when the Ok button was pressed on + * the error notice. + */ +class WrongDataNoticeListener : public gcn::ActionListener +{ + public: + void setTarget(gcn::TextField *textField); + void action(const gcn::ActionEvent &event); + private: + gcn::TextField *mTarget; +}; /** * The registration dialog. @@ -73,6 +85,7 @@ class RegisterDialog : public Window, public gcn::ActionListener, */ bool canSubmit() const; +#ifdef EATHENA_SUPPORT /** * Function to decide whether string is an unsigned short or not * @@ -90,17 +103,24 @@ class RegisterDialog : public Window, public gcn::ActionListener, * @return the value str represents */ static unsigned short getUShort(const std::string &str); +#endif gcn::TextField *mUserField; gcn::TextField *mPasswordField; gcn::TextField *mConfirmField; +#ifdef EATHENA_SUPPORT gcn::TextField *mServerField; gcn::TextField *mPortField; +#else + gcn::TextField *mEmailField; +#endif gcn::Button *mRegisterButton; gcn::Button *mCancelButton; +#ifdef EATHENA_SUPPORT gcn::RadioButton *mMaleButton; gcn::RadioButton *mFemaleButton; +#endif WrongDataNoticeListener *mWrongDataNoticeListener; diff --git a/src/gui/scrollarea.cpp b/src/gui/scrollarea.cpp index 156ff054..92bb94b8 100644 --- a/src/gui/scrollarea.cpp +++ b/src/gui/scrollarea.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,18 +35,16 @@ ImageRect ScrollArea::background; ImageRect ScrollArea::vMarker; Image *ScrollArea::buttons[4][2]; -ScrollArea::ScrollArea(bool gc, bool opaque): +ScrollArea::ScrollArea(): gcn::ScrollArea(), - mOpaque(opaque), - mGC(gc) + mOpaque(true) { init(); } -ScrollArea::ScrollArea(gcn::Widget *widget, bool gc, bool opaque): +ScrollArea::ScrollArea(gcn::Widget *widget): gcn::ScrollArea(widget), - mOpaque(opaque), - mGC(gc) + mOpaque(true) { init(); } @@ -55,8 +52,7 @@ ScrollArea::ScrollArea(gcn::Widget *widget, bool gc, bool opaque): ScrollArea::~ScrollArea() { // Garbage collection - if (mGC) - delete getContent(); + delete getContent(); instances--; @@ -224,14 +220,13 @@ void ScrollArea::drawFrame(gcn::Graphics *graphics) const int h = getHeight() + bs * 2; static_cast<Graphics*>(graphics)-> - drawImageRect(0, 0, w, h, background); + drawImageRect(0, 0, w, h, background); } } void ScrollArea::setOpaque(bool opaque) { mOpaque = opaque; - setFrameSize(mOpaque ? 2 : 0); } diff --git a/src/gui/scrollarea.h b/src/gui/scrollarea.h index 080b851c..e9aa5ed2 100644 --- a/src/gui/scrollarea.h +++ b/src/gui/scrollarea.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,6 +30,10 @@ class ImageRect; /** * A scroll area. * + * Contrary to Guichan's scroll area, this scroll area takes ownership over its + * content. However, it won't delete a previously set content widget when + * setContent is called! + * * \ingroup GUI */ class ScrollArea : public gcn::ScrollArea @@ -39,12 +42,12 @@ class ScrollArea : public gcn::ScrollArea /** * Constructor. */ - ScrollArea(bool gc = true, bool opaque = true); + ScrollArea(); /** * Constructor. */ - ScrollArea(gcn::Widget *content, bool gc = true, bool opaque = true); + ScrollArea(gcn::Widget *content); /** * Destructor. @@ -107,7 +110,6 @@ class ScrollArea : public gcn::ScrollArea static Image *buttons[4][2]; bool mOpaque; - bool mGC; }; #endif diff --git a/src/gui/sell.cpp b/src/gui/sell.cpp index 591cf97b..e7671110 100644 --- a/src/gui/sell.cpp +++ b/src/gui/sell.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,30 +19,44 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "button.h" -#include "label.h" -#include "scrollarea.h" -#include "sell.h" -#include "shop.h" -#include "shoplistbox.h" -#include "slider.h" +#include "gui/sell.h" -#include "widgets/layout.h" +#include "gui/button.h" +#include "gui/label.h" +#include "gui/scrollarea.h" +#include "gui/shop.h" +#include "gui/shoplistbox.h" +#include "gui/slider.h" -#include "../npc.h" +#include "gui/widgets/layout.h" -#include "../net/messageout.h" -#include "../net/protocol.h" +#include "npc.h" +#include "shopitem.h" +#include "units.h" -#include "../utils/gettext.h" -#include "../utils/strprintf.h" +#include "net/messageout.h" +#ifdef TMWSERV_SUPPORT +#include "net/tmwserv/gameserver/player.h" +#else +#include "net/ea/protocol.h" +#endif +#include "resources/iteminfo.h" + +#include "utils/gettext.h" +#include "utils/strprintf.h" + +#ifdef TMWSERV_SUPPORT +SellDialog::SellDialog(): + Window(_("Sell")), +#else SellDialog::SellDialog(Network *network): - Window("Sell"), + Window(_("Sell")), mNetwork(network), +#endif mMaxItems(0), mAmountItems(0) { - setWindowName(_("Sell")); + setWindowName("Sell"); setResizable(true); setCloseButton(true); setMinWidth(260); @@ -61,8 +74,8 @@ SellDialog::SellDialog(Network *network): mQuantityLabel = new Label(strprintf("%d / %d", mAmountItems, mMaxItems)); mQuantityLabel->setAlignment(gcn::Graphics::CENTER); - mMoneyLabel = new Label( - strprintf(_("Price: %d GP / Total: %d GP"), 0, 0)); + mMoneyLabel = new Label(strprintf(_("Price: %s / Total: %s"), + "", "")); mIncreaseButton = new Button("+", "+", this); mDecreaseButton = new Button("-", "-", this); @@ -103,6 +116,7 @@ SellDialog::SellDialog(Network *network): Layout &layout = getLayout(); layout.setRowHeight(0, Layout::AUTO_SET); + center(); loadWindowState(); } @@ -122,6 +136,16 @@ void SellDialog::reset() updateButtonsAndLabels(); } +#ifdef TMWSERV_SUPPORT + +void SellDialog::addItem(int item, int amount, int price) +{ + mShopItems->addItem(item, amount, price); + mShopItemList->adjustSize(); +} + +#else + void SellDialog::addItem(const Item *item, int price) { if (!item) @@ -133,6 +157,8 @@ void SellDialog::addItem(const Item *item, int price) mShopItemList->adjustSize(); } +#endif + void SellDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "quit") @@ -176,10 +202,14 @@ void SellDialog::action(const gcn::ActionEvent &event) else if (event.getId() == "sell" && mAmountItems > 0 && mAmountItems <= mMaxItems) { +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::tradeWithNPC + (mShopItems->at(selectedItem)->getId(), mAmountItems); +#else // Attempt sell MessageOut outMsg(mNetwork); - ShopItem* item = mShopItems->at(selectedItem); + ShopItem *item = mShopItems->at(selectedItem); int sellCount; mPlayerMoney += mAmountItems * mShopItems->at(selectedItem)->getPrice(); @@ -194,6 +224,7 @@ void SellDialog::action(const gcn::ActionEvent &event) mAmountItems -= sellCount; outMsg.writeInt16(sellCount); } +#endif mPlayerMoney += mAmountItems * mShopItems->at(selectedItem)->getPrice(); @@ -275,9 +306,16 @@ void SellDialog::updateButtonsAndLabels() // Update the quantity and money labels mQuantityLabel->setCaption(strprintf("%d / %d", mAmountItems, mMaxItems)); - mMoneyLabel->setCaption - (strprintf(_("Price: %d GP / Total: %d GP"), - income, mPlayerMoney + income)); + mMoneyLabel->setCaption(strprintf(_("Price: %s / Total: %s"), + Units::formatCurrency(income).c_str(), + Units::formatCurrency(mPlayerMoney + income).c_str())); +} + +void SellDialog::logic() +{ + Window::logic(); + + if (!current_npc) setVisible(false); } void SellDialog::setVisible(bool visible) diff --git a/src/gui/sell.h b/src/gui/sell.h index 930f8bc1..b6388a1f 100644 --- a/src/gui/sell.h +++ b/src/gui/sell.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,7 +30,9 @@ #include "window.h" class Item; +#ifdef EATHENA_SUPPORT class Network; +#endif class ShopItems; class ShopListBox; @@ -48,7 +49,11 @@ class SellDialog : public Window, gcn::ActionListener, gcn::SelectionListener * * @see Window::Window */ +#ifdef TMWSERV_SUPPORT + SellDialog(); +#else SellDialog(Network *network); +#endif /** * Destructor @@ -63,7 +68,11 @@ class SellDialog : public Window, gcn::ActionListener, gcn::SelectionListener /** * Adds an item to the inventory. */ +#ifdef TMWSERV_SUPPORT + void addItem(int item, int amount, int price); +#else void addItem(const Item *item, int price); +#endif /** * Called when receiving actions from the widgets. @@ -83,6 +92,11 @@ class SellDialog : public Window, gcn::ActionListener, gcn::SelectionListener void setMoney(int amount); /** + * Check for current NPC + */ + void logic(); + + /** * Sets the visibility of this window. */ void setVisible(bool visible); @@ -97,7 +111,9 @@ class SellDialog : public Window, gcn::ActionListener, gcn::SelectionListener */ void updateButtonsAndLabels(); +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif gcn::Button *mSellButton; gcn::Button *mQuitButton; gcn::Button *mAddMaxButton; diff --git a/src/gui/serverdialog.cpp b/src/gui/serverdialog.cpp new file mode 100644 index 00000000..a57be06c --- /dev/null +++ b/src/gui/serverdialog.cpp @@ -0,0 +1,214 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <cstdlib> +#include <iostream> +#include <string> + +#include <guichan/widgets/label.hpp> + +#include "serverdialog.h" + +#include "button.h" +#include "listbox.h" +#include "ok_dialog.h" +#include "scrollarea.h" +#include "textfield.h" + +#include "widgets/layout.h" + +#include "../configuration.h" +#include "../log.h" +#include "../logindata.h" +#include "../main.h" + +#include "../utils/gettext.h" +#include "../utils/stringutils.h" + +const short MAX_SERVERLIST = 5; + +int ServersListModel::getNumberOfElements() +{ + return servers.size(); +} + +std::string ServersListModel::getElementAt(int elementIndex) +{ + std::string myServer = ""; + myServer = servers.at(elementIndex).serverName; + myServer += ":"; + myServer += toString(servers.at(elementIndex).port); + return myServer; +} + +void ServersListModel::addFirstElement(Server server) +{ + // Equivalent to push_front + std::vector<Server>::iterator MyIterator = servers.begin(); + servers.insert(MyIterator, 1, server); +} + +void ServersListModel::addElement(Server server) +{ + servers.push_back(server); +} + +ServerDialog::ServerDialog(LoginData *loginData): + Window(_("Choose your server")), mLoginData(loginData) +{ + gcn::Label *serverLabel = new gcn::Label(_("Server:")); + gcn::Label *portLabel = new gcn::Label(_("Port:")); + mServerNameField = new TextField(mLoginData->hostname); + mPortField = new TextField(toString(mLoginData->port)); + + // Add the most used servers from config + mMostUsedServersListModel = new ServersListModel(); + Server currentServer; + std::string currentConfig = ""; + for (int i=0; i<=MAX_SERVERLIST; i++) + { + currentServer.serverName = ""; + currentServer.port = 0; + + currentConfig = "MostUsedServerName" + toString(i); + currentServer.serverName = config.getValue(currentConfig, ""); + + currentConfig = "MostUsedServerPort" + toString(i); + currentServer.port = (short)atoi(config.getValue(currentConfig, "").c_str()); + if (!currentServer.serverName.empty() || currentServer.port != 0) + { + mMostUsedServersListModel->addElement(currentServer); + } + } + + mMostUsedServersListBox = new ListBox(NULL); + mMostUsedServersListBox->setListModel(mMostUsedServersListModel); + mMostUsedServersScrollArea = new ScrollArea(); + mMostUsedServersDropDown = new DropDown(mMostUsedServersListModel, + mMostUsedServersScrollArea, mMostUsedServersListBox); + + mOkButton = new Button(_("Ok"), "connect", this); + mCancelButton = new Button(_("Cancel"), "cancel", this); + + mServerNameField->setActionEventId("connect"); + mPortField->setActionEventId("connect"); + mMostUsedServersDropDown->setActionEventId("changeSelection"); + + mServerNameField->addActionListener(this); + mPortField->addActionListener(this); + mMostUsedServersDropDown->addActionListener(this); + + place(0, 0, serverLabel); + place(0, 1, portLabel); + place(1, 0, mServerNameField, 3).setPadding(2); + place(1, 1, mPortField, 3).setPadding(2); + place(0, 2, mMostUsedServersDropDown, 4).setPadding(2); + place(2, 3, mOkButton); + place(3, 3, mCancelButton); + reflowLayout(250, 0); + + setLocationRelativeTo(getParent()); + setVisible(true); + + if (mServerNameField->getText().empty()) { + mServerNameField->requestFocus(); + } else { + if (mPortField->getText().empty()) { + mPortField->requestFocus(); + } else { + mOkButton->requestFocus(); + } + } +} + +ServerDialog::~ServerDialog() +{ + delete mMostUsedServersListModel; + delete mMostUsedServersScrollArea; +} + +void +ServerDialog::action(const gcn::ActionEvent &event) +{ + if (event.getId() == "ok") + { + // Give focus back to the server dialog. + mServerNameField->requestFocus(); + } + else if (event.getId() == "changeSelection") + { + // Change the textField Values according to new selection + Server myServer = mMostUsedServersListModel->getServer + (mMostUsedServersListBox->getSelected()); + mServerNameField->setText(myServer.serverName); + mPortField->setText(toString(myServer.port)); + } + else if (event.getId() == "connect") + { + // Check login + if (mServerNameField->getText().empty() || mPortField->getText().empty()) + { + OkDialog *dlg = new OkDialog(_("Error"), + _("Please type both the address and the port of a server.")); + dlg->addActionListener(this); + } + else + { + mLoginData->hostname = mServerNameField->getText(); + mLoginData->port = (short) atoi(mPortField->getText().c_str()); + mOkButton->setEnabled(false); + mCancelButton->setEnabled(false); + + // First, look if the entry is a new one. + Server currentServer; + bool newEntry = true; + for (int i = 0; i < mMostUsedServersListModel->getNumberOfElements(); i++) + { + currentServer = mMostUsedServersListModel->getServer(i); + if (currentServer.serverName == mLoginData->hostname && + currentServer.port == mLoginData->port) + newEntry = false; + } + // Then, add it to config if it's really new + currentServer.serverName = mLoginData->hostname; + currentServer.port = mLoginData->port; + if (newEntry) + mMostUsedServersListModel->addFirstElement(currentServer); + // Write the entry in config + std::string currentConfig = ""; + for (int i = 0; i < mMostUsedServersListModel->getNumberOfElements(); i++) + { + currentServer = mMostUsedServersListModel->getServer(i); + + currentConfig = "MostUsedServerName" + toString(i); + config.setValue(currentConfig, currentServer.serverName); + + currentConfig = "MostUsedServerPort" + toString(i); + config.setValue(currentConfig, toString(currentServer.port)); + } + state = STATE_CONNECT_ACCOUNT; + } + } + else if (event.getId() == "cancel") + { + state = STATE_FORCE_QUIT; + } +} diff --git a/src/gui/serverdialog.h b/src/gui/serverdialog.h new file mode 100644 index 00000000..492f5a2b --- /dev/null +++ b/src/gui/serverdialog.h @@ -0,0 +1,123 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef SERVERDIALOG_H +#define SERVERDIALOG_H + +#include <iosfwd> +#include <vector> + +#include <guichan/actionlistener.hpp> +#include <guichan/listmodel.hpp> +#include "./widgets/dropdown.h" + +#include "login.h" +#include "window.h" + +#include "../guichanfwd.h" + +#include "../net/tmwserv/network.h" + +class LoginData; + +/** + * A server structure to keep pairs of servers and ports. + */ +struct Server { + Server(): + port(0) + {} + + std::string serverName; + short port; +}; + +/** + * Server and Port List Model + */ +class ServersListModel : public gcn::ListModel +{ + public: + /** + * Used to get number of line in the list + */ + int getNumberOfElements(); + /** + * Used to get an element from the list + */ + std::string getElementAt(int elementIndex); + /** + * Used to get the corresponding Server struct + */ + Server getServer(int elementIndex) { return servers[elementIndex]; }; + /** + * Add an Element at the end of the server list + */ + void addElement(Server server); + /** + * Add an Element at the beginning of the server list + */ + void addFirstElement(Server server); + + private: + std::vector<Server> servers; +}; + +/** + * The server choice dialog. + * + * \ingroup Interface + */ +class ServerDialog : public Window, public gcn::ActionListener +{ + public: + /** + * Constructor + * + * @see Window::Window + */ + ServerDialog(LoginData *loginData); + + /** + * Destructor + */ + ~ServerDialog(); + + /** + * Called when receiving actions from the widgets. + */ + void action(const gcn::ActionEvent &event); + + private: + gcn::TextField *mServerNameField; + gcn::TextField *mPortField; + gcn::Button *mOkButton; + gcn::Button *mCancelButton; + + DropDown *mMostUsedServersDropDown; + gcn::ListBox *mMostUsedServersListBox; + gcn::ScrollArea *mMostUsedServersScrollArea; + ServersListModel *mMostUsedServersListModel; + + LoginData *mLoginData; +}; + +#endif diff --git a/src/gui/setup.cpp b/src/gui/setup.cpp index ca6b4010..72dfbce5 100644 --- a/src/gui/setup.cpp +++ b/src/gui/setup.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -51,7 +50,12 @@ extern Window *helpWindow; extern Window *debugWindow; extern Window *itemShortcutWindow; extern Window *emoteShortcutWindow; +#ifdef TMWSERV_SUPPORT +extern Window *magicDialog; +extern Window *guildWindow; +#else extern Window *storageWindow; +#endif Setup::Setup(): Window(_("Setup")) @@ -108,7 +112,7 @@ Setup::Setup(): add(panel); - setLocationRelativeTo(getParent()); + center(); setInGame(false); } @@ -141,7 +145,9 @@ void Setup::action(const gcn::ActionEvent &event) statusWindow->resetToDefaultSize(); buyDialog->resetToDefaultSize(); sellDialog->resetToDefaultSize(); +#ifdef EATHENA_SUPPORT buySellDialog->resetToDefaultSize(); +#endif inventoryWindow->resetToDefaultSize(); emoteWindow->resetToDefaultSize(); npcTextDialog->resetToDefaultSize(); @@ -154,7 +160,12 @@ void Setup::action(const gcn::ActionEvent &event) debugWindow->resetToDefaultSize(); itemShortcutWindow->resetToDefaultSize(); emoteShortcutWindow->resetToDefaultSize(); +#ifdef TMWSERV_SUPPORT + magicDialog->resetToDefaultSize(); + guildWindow->resetToDefaultSize(); +#else storageWindow->resetToDefaultSize(); +#endif } } diff --git a/src/gui/setup.h b/src/gui/setup.h index 663bdfcb..4c387d34 100644 --- a/src/gui/setup.h +++ b/src/gui/setup.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -63,7 +62,7 @@ class Setup : public Window, public gcn::ActionListener private: std::list<SetupTab*> mTabs; - gcn::Button* mResetWindows; + gcn::Button *mResetWindows; }; extern Setup* setupWindow; diff --git a/src/gui/setup_audio.cpp b/src/gui/setup_audio.cpp index 08eda848..28a80b3d 100644 --- a/src/gui/setup_audio.cpp +++ b/src/gui/setup_audio.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -43,6 +42,7 @@ Setup_Audio::Setup_Audio(): mMusicSlider(new Slider(0, 128)) { setOpaque(false); + setDimension(gcn::Rectangle(0, 0, 250, 200)); gcn::Label *sfxLabel = new Label(_("Sfx volume")); gcn::Label *musicLabel = new Label(_("Music volume")); diff --git a/src/gui/setup_audio.h b/src/gui/setup_audio.h index aad16617..9e951895 100644 --- a/src/gui/setup_audio.h +++ b/src/gui/setup_audio.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/setup_colors.cpp b/src/gui/setup_colors.cpp index 108067f5..073bbc1a 100644 --- a/src/gui/setup_colors.cpp +++ b/src/gui/setup_colors.cpp @@ -2,7 +2,7 @@ * Configurable text colors * Copyright (C) 2008 Douglas Boffey <dougaboffey@netscape.net> * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,7 +57,7 @@ Setup_Colors::Setup_Colors() : mScroll = new ScrollArea(mColorBox); mScroll->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); - mTextPreview = new TextPreview(&rawmsg); + mTextPreview = new TextPreview(rawmsg); mPreview = new BrowserBox(BrowserBox::AUTO_WRAP); mPreview->setOpaque(false); @@ -83,7 +83,7 @@ Setup_Colors::Setup_Colors() : mRedLabel = new Label(_("Red: ")); - mRedText = new TextField(); + mRedText = new TextField; mRedText->setWidth(40); mRedText->setRange(0, 255); mRedText->setNumeric(true); @@ -99,7 +99,7 @@ Setup_Colors::Setup_Colors() : mGreenLabel = new Label(_("Green: ")); - mGreenText = new TextField(); + mGreenText = new TextField; mGreenText->setWidth(40); mGreenText->setRange(0, 255); mGreenText->setNumeric(true); @@ -115,7 +115,7 @@ Setup_Colors::Setup_Colors() : mBlueLabel = new Label(_("Blue: ")); - mBlueText = new TextField(); + mBlueText = new TextField; mBlueText->setWidth(40); mBlueText->setRange(0, 255); mBlueText->setNumeric(true); diff --git a/src/gui/setup_colors.h b/src/gui/setup_colors.h index 00f77d57..52d3f727 100644 --- a/src/gui/setup_colors.h +++ b/src/gui/setup_colors.h @@ -2,7 +2,7 @@ * Configurable text colors * Copyright (C) 2008 Douglas Boffey <dougaboffey@netscape.net> * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/setup_joystick.cpp b/src/gui/setup_joystick.cpp index 4d80e0dd..59a882c7 100644 --- a/src/gui/setup_joystick.cpp +++ b/src/gui/setup_joystick.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/setup_joystick.h b/src/gui/setup_joystick.h index ae888206..eba8a2cc 100644 --- a/src/gui/setup_joystick.h +++ b/src/gui/setup_joystick.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/setup_keyboard.cpp b/src/gui/setup_keyboard.cpp index 0f79e3c6..aba8cf35 100644 --- a/src/gui/setup_keyboard.cpp +++ b/src/gui/setup_keyboard.cpp @@ -1,9 +1,9 @@ /* - * Aethyra - * Copyright (C) 2007 The Mana World Development Team + * Custom keyboard shortcuts configuration + * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> + * Copyright (C) 2009 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -69,7 +69,7 @@ class KeyListModel : public gcn::ListModel }; Setup_Keyboard::Setup_Keyboard(): - mKeyListModel(new KeyListModel()), + mKeyListModel(new KeyListModel), mKeyList(new ListBox(mKeyListModel)), mKeySetting(false) { diff --git a/src/gui/setup_keyboard.h b/src/gui/setup_keyboard.h index 5fa961ae..dee12135 100644 --- a/src/gui/setup_keyboard.h +++ b/src/gui/setup_keyboard.h @@ -1,9 +1,8 @@ /* - * Aethyra - * Copyright (C) 2007 The Mana World Development Team + * Custom keyboard shortcuts configuration + * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/setup_players.cpp b/src/gui/setup_players.cpp index 05748000..1451e71e 100644 --- a/src/gui/setup_players.cpp +++ b/src/gui/setup_players.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -69,9 +68,9 @@ static const char *RELATION_NAMES[PlayerRelation::RELATIONS_NR] = class PlayerRelationListModel : public gcn::ListModel { public: - virtual ~PlayerRelationListModel(void) { } + virtual ~PlayerRelationListModel() { } - virtual int getNumberOfElements(void) + virtual int getNumberOfElements() { return PlayerRelation::RELATIONS_NR; } @@ -87,30 +86,30 @@ public: class PlayerTableModel : public TableModel { public: - PlayerTableModel(void) : + PlayerTableModel() : mPlayers(NULL) { playerRelationsUpdated(); } - virtual ~PlayerTableModel(void) + virtual ~PlayerTableModel() { freeWidgets(); if (mPlayers) delete mPlayers; } - virtual int getRows(void) + virtual int getRows() { return mPlayers->size(); } - virtual int getColumns(void) + virtual int getColumns() { return COLUMNS_NR; } - virtual int getRowHeight(void) + virtual int getRowHeight() { return ROW_HEIGHT; } @@ -123,7 +122,7 @@ public: return RELATION_CHOICE_COLUMN_WIDTH; } - virtual void playerRelationsUpdated(void) + virtual void playerRelationsUpdated() { signalBeforeUpdate(); @@ -139,10 +138,10 @@ public: std::string name = (*player_names)[r]; gcn::Widget *widget = new Label(name); mWidgets.push_back(widget); - gcn::ListModel *playerRelation = new PlayerRelationListModel(); + gcn::ListModel *playerRelation = new PlayerRelationListModel; gcn::DropDown *choicebox = new DropDown(playerRelation, - new ScrollArea(), + new ScrollArea, new ListBox(playerRelation), false); choicebox->setSelected(player_relations.getRelation(name)); @@ -167,7 +166,7 @@ public: return mWidgets[WIDGET_AT(row, column)]; } - virtual void freeWidgets(void) + virtual void freeWidgets() { if (mPlayers) delete mPlayers; @@ -198,9 +197,9 @@ protected: class IgnoreChoicesListModel : public gcn::ListModel { public: - virtual ~IgnoreChoicesListModel(void) { } + virtual ~IgnoreChoicesListModel() { } - virtual int getNumberOfElements(void) + virtual int getNumberOfElements() { return player_relations.getPlayerIgnoreStrategies()->size(); } @@ -220,7 +219,7 @@ public: Setup_Players::Setup_Players(): mPlayerTableTitleModel(new StaticTableModel(1, COLUMNS_NR)), - mPlayerTableModel(new PlayerTableModel()), + mPlayerTableModel(new PlayerTableModel), mPlayerTable(new GuiTable(mPlayerTableModel)), mPlayerTitleTable(new GuiTable(mPlayerTableTitleModel)), mPlayerScrollArea(new ScrollArea(mPlayerTable)), @@ -240,8 +239,8 @@ Setup_Players::Setup_Players(): RELATION_CHOICE_COLUMN_WIDTH); mPlayerTitleTable->setBackgroundColor(gcn::Color(0xbf, 0xbf, 0xbf)); - gcn::ListModel *ignoreChoices = new IgnoreChoicesListModel(); - mIgnoreActionChoicesBox = new DropDown(ignoreChoices, new ScrollArea(), + gcn::ListModel *ignoreChoices = new IgnoreChoicesListModel; + mIgnoreActionChoicesBox = new DropDown(ignoreChoices, new ScrollArea, new ListBox(ignoreChoices), false); for (int i = 0; i < COLUMNS_NR; i++) @@ -294,7 +293,7 @@ Setup_Players::Setup_Players(): setDimension(gcn::Rectangle(0, 0, 325, 280)); } -Setup_Players::~Setup_Players(void) +Setup_Players::~Setup_Players() { player_relations.removeListener(this); } diff --git a/src/gui/setup_players.h b/src/gui/setup_players.h index 23a994a0..72d81f71 100644 --- a/src/gui/setup_players.h +++ b/src/gui/setup_players.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/setup_video.cpp b/src/gui/setup_video.cpp index e181f744..07f073db 100644 --- a/src/gui/setup_video.cpp +++ b/src/gui/setup_video.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -109,6 +108,7 @@ Setup_Video::Setup_Video(): mFullScreenEnabled(config.getValue("screen", false)), mOpenGLEnabled(config.getValue("opengl", false)), mCustomCursorEnabled(config.getValue("customcursor", true)), + mVisibleNamesEnabled(config.getValue("visiblenames", 1)), mParticleEffectsEnabled(config.getValue("particleeffects", true)), mNameEnabled(config.getValue("showownname", false)), mPickupChatEnabled(config.getValue("showpickupchat", true)), @@ -121,8 +121,13 @@ Setup_Video::Setup_Video(): mFsCheckBox(new CheckBox(_("Full screen"), mFullScreenEnabled)), mOpenGLCheckBox(new CheckBox(_("OpenGL"), mOpenGLEnabled)), mCustomCursorCheckBox(new CheckBox(_("Custom cursor"), mCustomCursorEnabled)), + mVisibleNamesCheckBox(new CheckBox(_("Visible names"), mVisibleNamesEnabled)), mParticleEffectsCheckBox(new CheckBox(_("Particle effects"), mParticleEffectsEnabled)), mNameCheckBox(new CheckBox(_("Show name"), mNameEnabled)), + mPickupNotifyLabel(new Label(_("Show pickup notification"))), + mPickupChatCheckBox(new CheckBox(_("in chat"), mPickupChatEnabled)), + mPickupParticleCheckBox(new CheckBox(_("as particle"), + mPickupParticleEnabled)), mSpeechSlider(new Slider(0, 3)), mSpeechLabel(new Label("")), mAlphaSlider(new Slider(0.2, 1.0)), @@ -140,11 +145,7 @@ Setup_Video::Setup_Video(): mOverlayDetailField(new Label("")), mParticleDetail(3 - (int) config.getValue("particleEmitterSkip", 1)), mParticleDetailSlider(new Slider(0, 3)), - mParticleDetailField(new Label("")), - mPickupNotifyLabel(new Label(_("Show pickup notification"))), - mPickupChatCheckBox(new CheckBox(_("in chat"), mPickupChatEnabled)), - mPickupParticleCheckBox(new CheckBox(_("as particle"), - mPickupParticleEnabled)) + mParticleDetailField(new Label("")) { setOpaque(false); @@ -176,6 +177,7 @@ Setup_Video::Setup_Video(): mModeList->setActionEventId("videomode"); mCustomCursorCheckBox->setActionEventId("customcursor"); + mVisibleNamesCheckBox->setActionEventId("visiblenames"); mParticleEffectsCheckBox->setActionEventId("particleeffects"); mPickupChatCheckBox->setActionEventId("pickupchat"); mPickupParticleCheckBox->setActionEventId("pickupparticle"); @@ -195,6 +197,7 @@ Setup_Video::Setup_Video(): mModeList->addActionListener(this); mCustomCursorCheckBox->addActionListener(this); + mVisibleNamesCheckBox->addActionListener(this); mParticleEffectsCheckBox->addActionListener(this); mPickupChatCheckBox->addActionListener(this); mPickupParticleCheckBox->addActionListener(this); @@ -275,7 +278,8 @@ Setup_Video::Setup_Video(): place(1, 0, mFsCheckBox, 2); place(3, 0, mOpenGLCheckBox, 1); place(1, 1, mCustomCursorCheckBox, 3); - place(1, 2, mNameCheckBox, 3); + place(1, 2, mVisibleNamesCheckBox, 3); + place(3, 2, mNameCheckBox, 1); place(1, 3, mParticleEffectsCheckBox, 3); place(1, 4, mPickupNotifyLabel, 3); place(1, 5, mPickupChatCheckBox, 1); @@ -320,7 +324,7 @@ void Setup_Video::apply() * See http://libsdl.org/cgi/docwiki.cgi/SDL_SetVideoMode */ -#ifdef WIN32 +#if defined(WIN32) || defined(__APPLE__) // checks for opengl usage if (!(config.getValue("opengl", false) == 1)) { @@ -338,7 +342,7 @@ void Setup_Video::apply() logger->error(error.str()); } } -#ifdef WIN32 +#if defined(WIN32) || defined(__APPLE__) } else { @@ -365,6 +369,7 @@ void Setup_Video::apply() // We sync old and new values at apply time mFullScreenEnabled = config.getValue("screen", false); mCustomCursorEnabled = config.getValue("customcursor", true); + mVisibleNamesEnabled = config.getValue("visiblenames", 1); mParticleEffectsEnabled = config.getValue("particleeffects", true); mNameEnabled = config.getValue("showownname", false); mSpeechMode = (int) config.getValue("speech", 3); @@ -400,6 +405,7 @@ void Setup_Video::cancel() mFsCheckBox->setSelected(mFullScreenEnabled); mOpenGLCheckBox->setSelected(mOpenGLEnabled); mCustomCursorCheckBox->setSelected(mCustomCursorEnabled); + mVisibleNamesCheckBox->setSelected(mVisibleNamesEnabled); mParticleEffectsCheckBox->setSelected(mParticleEffectsEnabled); mSpeechSlider->setValue(mSpeechMode); mNameCheckBox->setSelected(mNameEnabled); @@ -414,6 +420,7 @@ void Setup_Video::cancel() config.setValue("screen", mFullScreenEnabled ? true : false); config.setValue("customcursor", mCustomCursorEnabled ? true : false); + config.setValue("visiblenames", mVisibleNamesEnabled ? 1 : 0); config.setValue("particleeffects", mParticleEffectsEnabled ? true : false); config.setValue("speech", mSpeechMode); config.setValue("showownname", mNameEnabled ? true : false); @@ -450,6 +457,11 @@ void Setup_Video::action(const gcn::ActionEvent &event) config.setValue("customcursor", mCustomCursorCheckBox->isSelected() ? true : false); } + else if (event.getId() == "visiblenames") + { + config.setValue("visiblenames", + mVisibleNamesCheckBox->isSelected() ? 1 : 0); + } else if (event.getId() == "particleeffects") { config.setValue("particleeffects", diff --git a/src/gui/setup_video.h b/src/gui/setup_video.h index b491cf23..62b46646 100644 --- a/src/gui/setup_video.h +++ b/src/gui/setup_video.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -43,14 +42,13 @@ class Setup_Video : public SetupTab, public gcn::ActionListener, void keyPressed(gcn::KeyEvent &event); private: - void updateSliders(bool originalValues); - int updateSlider(gcn::Slider *slider, gcn::TextField *field, const std::string &configName); bool mFullScreenEnabled; bool mOpenGLEnabled; bool mCustomCursorEnabled; + bool mVisibleNamesEnabled; bool mParticleEffectsEnabled; bool mNameEnabled; bool mPickupChatEnabled; @@ -72,9 +70,14 @@ class Setup_Video : public SetupTab, public gcn::ActionListener, gcn::CheckBox *mFsCheckBox; gcn::CheckBox *mOpenGLCheckBox; gcn::CheckBox *mCustomCursorCheckBox; + gcn::CheckBox *mVisibleNamesCheckBox; gcn::CheckBox *mParticleEffectsCheckBox; gcn::CheckBox *mNameCheckBox; + gcn::Label *mPickupNotifyLabel; + gcn::CheckBox *mPickupChatCheckBox; + gcn::CheckBox *mPickupParticleCheckBox; + gcn::Slider *mSpeechSlider; gcn::Label *mSpeechLabel; gcn::Slider *mAlphaSlider; @@ -97,10 +100,6 @@ class Setup_Video : public SetupTab, public gcn::ActionListener, int mParticleDetail; gcn::Slider *mParticleDetailSlider; gcn::Label *mParticleDetailField; - - gcn::Label *mPickupNotifyLabel; - gcn::CheckBox *mPickupChatCheckBox; - gcn::CheckBox *mPickupParticleCheckBox; }; #endif diff --git a/src/gui/setuptab.h b/src/gui/setuptab.h index 7e1bc36f..3e0c51e2 100644 --- a/src/gui/setuptab.h +++ b/src/gui/setuptab.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/shop.cpp b/src/gui/shop.cpp index bd676bc0..4799ea42 100644 --- a/src/gui/shop.cpp +++ b/src/gui/shop.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,9 +19,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "shop.h" +#include "gui/shop.h" -#include "../utils/dtor.h" +#include "shopitem.h" + +#include "utils/dtor.h" ShopItems::ShopItems(bool mergeDuplicates) : mMergeDuplicates(mergeDuplicates) @@ -44,9 +45,15 @@ std::string ShopItems::getElementAt(int i) return mShopItems.at(i)->getDisplayName(); } +void ShopItems::addItem(int id, int amount, int price) +{ + mShopItems.push_back(new ShopItem(-1, id, amount, price)); +} + +#ifdef EATHENA_SUPPORT void ShopItems::addItem(int inventoryIndex, int id, int quantity, int price) { - ShopItem* item = 0; + ShopItem *item = 0; if (mMergeDuplicates) { item = findItem(id); @@ -62,13 +69,9 @@ void ShopItems::addItem(int inventoryIndex, int id, int quantity, int price) mShopItems.push_back(item); } } +#endif -void ShopItems::addItem(int id, int price) -{ - addItem(-1, id, 0, price); -} - -ShopItem* ShopItems::at(int i) const +ShopItem *ShopItems::at(int i) const { return mShopItems.at(i); } @@ -84,7 +87,7 @@ void ShopItems::clear() mShopItems.clear(); } -ShopItem* ShopItems::findItem(int id) +ShopItem *ShopItems::findItem(int id) { ShopItem *item; diff --git a/src/gui/shop.h b/src/gui/shop.h index 118847f9..190ef655 100644 --- a/src/gui/shop.h +++ b/src/gui/shop.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,15 +19,13 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef _SHOP_H -#define _SHOP_H - -#include <string> -#include <vector> +#ifndef SHOP_H +#define SHOP_H #include <guichan/listmodel.hpp> -#include "../shopitem.h" +#include <string> +#include <vector> class ShopItem; @@ -45,18 +42,21 @@ class ShopItems : public gcn::ListModel { public: /** - * Constructor. Creates a new ShopItems instance. + * Constructor. * * @param mergeDuplicates lets the Shop look for duplicate entries and * merges them to one item. */ ShopItems(bool mergeDuplicates = false); + ~ShopItems(); + /** - * Destructor. + * Adds an item to the list. */ - ~ShopItems(); + void addItem(int id, int amount, int price); +#ifdef EATHENA_SUPPORT /** * Adds an item to the list (used by sell dialog). Looks for * duplicate entries, if mergeDuplicates was turned on. @@ -67,20 +67,10 @@ class ShopItems : public gcn::ListModel * @param price price of the item */ void addItem(int inventoryIndex, int id, int amount, int price); - - /** - * Adds an item to the list (used by buy dialog). Looks for - * duplicate entries, if mergeDuplicates was turned on. - * - * @param id the id of the item - * @param price price of the item - */ - void addItem(int id, int price); +#endif /** * Returns the number of items in the shop. - * - * @return the number of items in the shop */ int getNumberOfElements(); @@ -94,7 +84,7 @@ class ShopItems : public gcn::ListModel /** * Returns the item number i in the shop. */ - ShopItem* at(int i) const; + ShopItem *at(int i) const; /** * Removes an element from the shop. @@ -104,7 +94,7 @@ class ShopItems : public gcn::ListModel void erase(int i); /** - * Clear the vector. + * Clears the list of items in the shop. */ void clear(); @@ -115,13 +105,13 @@ class ShopItems : public gcn::ListModel * * @return the item found or 0 */ - ShopItem* findItem(int id); + ShopItem *findItem(int id); - /** the shop storage */ + /** The list of items in the shop. */ std::vector<ShopItem*> mShopItems; - /** Look for duplicate entries on addition */ + /** Look for duplicate entries on addition. */ bool mMergeDuplicates; }; -#endif +#endif // SHOP_H diff --git a/src/gui/shoplistbox.cpp b/src/gui/shoplistbox.cpp index 5c55069f..db39e82d 100644 --- a/src/gui/shoplistbox.cpp +++ b/src/gui/shoplistbox.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,15 +19,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <guichan/font.hpp> -#include <guichan/listmodel.hpp> +#include "gui/palette.h" +#include "gui/shop.h" +#include "gui/shoplistbox.h" -#include "palette.h" -#include "shop.h" -#include "shoplistbox.h" +#include "configuration.h" +#include "graphics.h" +#include "shopitem.h" -#include "../configuration.h" -#include "../graphics.h" +#include <guichan/font.hpp> +#include <guichan/listmodel.hpp> const int ITEM_ICON_SIZE = 32; diff --git a/src/gui/shoplistbox.h b/src/gui/shoplistbox.h index bed9902b..0b28b2f1 100644 --- a/src/gui/shoplistbox.h +++ b/src/gui/shoplistbox.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -89,4 +88,4 @@ class ShopListBox : public ListBox bool mPriceCheck; }; -#endif +#endif // SHOPLISTBOX_H diff --git a/src/gui/shortcutcontainer.cpp b/src/gui/shortcutcontainer.cpp index fcb33279..901095e5 100644 --- a/src/gui/shortcutcontainer.cpp +++ b/src/gui/shortcutcontainer.cpp @@ -1,9 +1,8 @@ /* - * Aethyra - * Copyright 2007 The Mana World Development Team + * The Mana World + * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/shortcutcontainer.h b/src/gui/shortcutcontainer.h index 3f2e1c60..7b09fb96 100644 --- a/src/gui/shortcutcontainer.h +++ b/src/gui/shortcutcontainer.h @@ -1,9 +1,8 @@ /* - * Aethyra - * Copyright 2007 The Mana World Development Team + * The Mana World + * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,8 +19,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef SHORTCUTCONTAINER_H__ -#define SHORTCUTCONTAINER_H__ +#ifndef SHORTCUTCONTAINER_H +#define SHORTCUTCONTAINER_H #include <guichan/mouselistener.hpp> #include <guichan/widget.hpp> diff --git a/src/gui/shortcutwindow.cpp b/src/gui/shortcutwindow.cpp index 8342465a..dcc7f72e 100644 --- a/src/gui/shortcutwindow.cpp +++ b/src/gui/shortcutwindow.cpp @@ -1,9 +1,8 @@ /* - * Aethyra - * Copyright 2007 The Mana World Development Team + * The Mana World + * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/shortcutwindow.h b/src/gui/shortcutwindow.h index d79fffd2..eae881ba 100644 --- a/src/gui/shortcutwindow.h +++ b/src/gui/shortcutwindow.h @@ -1,9 +1,8 @@ /* - * Aethyra - * Copyright 2007 The Mana World Development Team + * The Mana World + * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/skill.cpp b/src/gui/skill.cpp index 9fbae7a6..39ccbb06 100644 --- a/src/gui/skill.cpp +++ b/src/gui/skill.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -46,11 +45,14 @@ struct SkillInfo bool modifiable; }; -static const SkillInfo fakeSkillInfo = { _("???"), false }; +static const SkillInfo fakeSkillInfo = { + _("Mystery Skill"), + false +}; std::vector<SkillInfo> skill_db; -static void initSkillinfo(void); +static void initSkillinfo(); class SkillGuiTableModel : public StaticTableModel { @@ -76,12 +78,12 @@ public: return 35; } - virtual int getRowHeight(void) + virtual int getRowHeight() { return 12; } - virtual void update(void) + virtual void update() { mEntriesNr = mDialog->getSkills().size(); resize(); @@ -113,7 +115,6 @@ public: } } - private: SkillDialog *mDialog; int mEntriesNr; @@ -132,7 +133,7 @@ SkillDialog::SkillDialog(): mTable->setActionEventId("skill"); mTable->addActionListener(this); - setWindowName(_("Skills")); + setWindowName("Skills"); setCloseButton(true); setDefaultSize(255, 260, ImageRect::CENTER); @@ -155,7 +156,7 @@ SkillDialog::SkillDialog(): Layout &layout = getLayout(); layout.setRowHeight(0, Layout::AUTO_SET); - setLocationRelativeTo(getParent()); + center(); loadWindowState(); } @@ -234,7 +235,7 @@ bool SkillDialog::hasSkill(int id) void SkillDialog::addSkill(int id, int lvl, int mp) { - SKILL *tmp = new SKILL(); + SKILL *tmp = new SKILL; tmp->id = id; tmp->lv = lvl; tmp->sp = mp; @@ -255,11 +256,11 @@ void SkillDialog::setSkill(int id, int lvl, int mp) void SkillDialog::cleanList() { - for_each(mSkillList.begin(), mSkillList.end(), make_dtor(mSkillList)); + delete_all(mSkillList); mSkillList.clear(); } -static void initSkillinfo(void) +static void initSkillinfo() { SkillInfo emptySkillInfo = { "", false }; diff --git a/src/gui/skill.h b/src/gui/skill.h index bcdd515c..0600d106 100644 --- a/src/gui/skill.h +++ b/src/gui/skill.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -66,7 +65,7 @@ class SkillDialog : public Window, public gcn::ActionListener void setSkill(int id, int lv, int sp); void cleanList(); - const std::vector<SKILL*>& getSkills(void) const { return mSkillList; } + const std::vector<SKILL*>& getSkills() const { return mSkillList; } private: GuiTable *mTable; diff --git a/src/gui/skilldialog.cpp b/src/gui/skilldialog.cpp new file mode 100644 index 00000000..e30299d4 --- /dev/null +++ b/src/gui/skilldialog.cpp @@ -0,0 +1,318 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <guichan/widgets/label.hpp> +#include <guichan/widgets/container.hpp> +#include <guichan/widgets/icon.hpp> + +#include "skilldialog.h" + +#include "icon.h" +#include "button.h" +#include "listbox.h" +#include "scrollarea.h" +#include "windowcontainer.h" +#include "progressbar.h" + +#include "widgets/tabbedarea.h" + +#include "../localplayer.h" + +#include "../utils/dtor.h" +#include "../utils/gettext.h" +#include "../utils/stringutils.h" + +class Skill_Tab : public GCContainer, public gcn::ActionListener +{ + public: + /** + * The type of this skill tab + */ + const std::string type; + + /** + * Constructor + */ + Skill_Tab(const std::string &type); + + /** + * Update this tab + */ + void update(); + + /** + * Called when receiving actions from widget. + */ + void action(const gcn::ActionEvent &event) {} + + private: + /** + * Update the information of a skill at + * the given index + */ + void updateSkill(int index); + + /** + * Gets the number of skills in this particular + * type of tab. + */ + int getSkillNum(); + + /** + * Get the first enumeration of this skill tab's + * skill type. + */ + int getSkillBegin(); + + /** + * Get the icon associated with the given index + */ + Icon* getIcon(int index); + + std::vector<Icon *> mSkillIcons; + std::vector<gcn::Label *> mSkillNameLabels; + std::vector<gcn::Label *> mSkillLevelLabels; + std::vector<gcn::Label *> mSkillExpLabels; + std::vector<ProgressBar *> mSkillProgress; +}; + + +SkillDialog::SkillDialog(): + Window(_("Skills")) +{ + setWindowName("Skills"); + setCloseButton(true); + setDefaultSize(windowContainer->getWidth() - 280, 30, 275, 425); + + TabbedArea *panel = new TabbedArea(); + panel->setDimension(gcn::Rectangle(5, 5, 270, 420)); + + Skill_Tab *tab; + + // Add each type of skill tab to the panel + tab = new Skill_Tab("Weapon"); + panel->addTab(_("Weapons"), tab); + mTabs.push_back(tab); + + tab = new Skill_Tab("Magic"); + panel->addTab(_("Magic"), tab); + mTabs.push_back(tab); + + tab = new Skill_Tab("Craft"); + panel->addTab(_("Crafts"), tab); + mTabs.push_back(tab); + + add(panel); + + update(); + + setLocationRelativeTo(getParent()); + loadWindowState(); +} + +SkillDialog::~SkillDialog() +{ + delete_all(mTabs); +} + +void SkillDialog::action(const gcn::ActionEvent &event) +{ + if (event.getId() == "skill") + { + } + else if (event.getId() == "close") + { + setVisible(false); + } +} + +void SkillDialog::draw(gcn::Graphics *g) +{ + update(); + + Window::draw(g); +} + +void SkillDialog::update() +{ + for(std::list<Skill_Tab*>::const_iterator i = mTabs.begin(); + i != mTabs.end(); ++i) + { + (*i)->update(); + } +} + +Skill_Tab::Skill_Tab(const std::string &type): type(type) +{ + setOpaque(false); + setDimension(gcn::Rectangle(0, 0, 270, 420)); + int skillNum = getSkillNum(); + + mSkillIcons.resize(skillNum); + mSkillNameLabels.resize(skillNum); + mSkillLevelLabels.resize(skillNum); + mSkillExpLabels.resize(skillNum); + mSkillProgress.resize(skillNum); + + // Set the initial positions of the skill information + for (int a=0; a < skillNum; a++) + { + mSkillIcons.at(a) = getIcon(a); + mSkillIcons.at(a)->setPosition(1, a*32); + add(mSkillIcons.at(a)); + + mSkillNameLabels.at(a) = new gcn::Label(""); + mSkillNameLabels.at(a)->setPosition(35, a*32 ); + add(mSkillNameLabels.at(a)); + + mSkillProgress.at(a) = new ProgressBar(0.0f, 200, 20, 150, 150, 150); + mSkillProgress.at(a)->setPosition(35, a*32 + 13); + add(mSkillProgress.at(a)); + + mSkillExpLabels.at(a) = new gcn::Label(""); + mSkillExpLabels.at(a)->setPosition(45, a*32 + 16); + add(mSkillExpLabels.at(a)); + + mSkillLevelLabels.at(a) = new gcn::Label(""); + mSkillLevelLabels.at(a)->setPosition(165, a*32); + add(mSkillLevelLabels.at(a)); + } + + update(); + +} + +int Skill_Tab::getSkillNum() +{ + int skillNum = 0; + + if (type == "Weapon") + { + skillNum = CHAR_SKILL_WEAPON_NB; + return skillNum; + } + else if (type == "Magic") + { + skillNum = CHAR_SKILL_MAGIC_NB; + return skillNum; + } + else if (type == "Craft") + { + skillNum = CHAR_SKILL_CRAFT_NB; + return skillNum; + } + else return skillNum; +} + +int Skill_Tab::getSkillBegin() +{ + int skillBegin = 0; + + if (type == "Weapon") + { + skillBegin = CHAR_SKILL_WEAPON_BEGIN - CHAR_SKILL_BEGIN; + return skillBegin; + } + else if (type == "Magic") + { + skillBegin = CHAR_SKILL_MAGIC_BEGIN - CHAR_SKILL_BEGIN; + return skillBegin; + } + else if (type == "Craft") + { + skillBegin = CHAR_SKILL_CRAFT_BEGIN - CHAR_SKILL_BEGIN; + return skillBegin; + } + else return skillBegin; +} + +Icon* Skill_Tab::getIcon(int index) +{ + int skillBegin = getSkillBegin(); + std::string icon = LocalPlayer::getSkillInfo(index + skillBegin).icon; + return new Icon(icon); +} + +void Skill_Tab::updateSkill(int index) +{ + int skillBegin = getSkillBegin(); + + int baseLevel = player_node->getAttributeBase(index + + skillBegin + + CHAR_SKILL_BEGIN); + + int effLevel = player_node->getAttributeEffective(index + + skillBegin + + CHAR_SKILL_BEGIN); + if(baseLevel <= 0) + { + mSkillProgress.at(index)->setVisible(false); + mSkillExpLabels.at(index)->setVisible(false); + mSkillLevelLabels.at(index)->setVisible(false); + mSkillNameLabels.at(index)->setVisible(false); + mSkillIcons.at(index)->setVisible(false); + } + else + { + mSkillProgress.at(index)->setVisible(true); + mSkillExpLabels.at(index)->setVisible(true); + mSkillLevelLabels.at(index)->setVisible(true); + mSkillNameLabels.at(index)->setVisible(true); + mSkillIcons.at(index)->setVisible(true); + std::string skillLevel("Lvl: " + toString(baseLevel)); + if (effLevel < baseLevel) + { + skillLevel.append(" - " + toString(baseLevel - effLevel)); + } + else if (effLevel > baseLevel) + { + skillLevel.append(" + " + toString(effLevel - baseLevel)); + } + mSkillLevelLabels.at(index)->setCaption(skillLevel); + + std::pair<int, int> exp = player_node->getExperience(index + skillBegin); + std::string sExp (toString(exp.first) + " / " + toString(exp.second)); + + + mSkillNameLabels.at(index)->setCaption(LocalPlayer::getSkillInfo(index + skillBegin).name); + mSkillNameLabels.at(index)->adjustSize(); + mSkillLevelLabels.at(index)->adjustSize(); + mSkillExpLabels.at(index)->setCaption(sExp); + mSkillExpLabels.at(index)->adjustSize(); + mSkillExpLabels.at(index)->setAlignment(gcn::Graphics::RIGHT); + + // More intense red as exp grows + int color = 150 - (int)(150 * ((float) exp.first / exp.second)); + mSkillProgress.at(index)->setColor(244, color, color); + mSkillProgress.at(index)->setProgress((float) exp.first / exp.second); + } +} + +void Skill_Tab::update() +{ + int skillNum = getSkillNum(); + + // Update the skill information for reach skill + for (int a = 0; a < skillNum; a++) + { + updateSkill(a); + } +} diff --git a/src/gui/skilldialog.h b/src/gui/skilldialog.h new file mode 100644 index 00000000..b79be800 --- /dev/null +++ b/src/gui/skilldialog.h @@ -0,0 +1,79 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef SKILL_H +#define SKILL_H + +#include <vector> +#include <list> + +#include <guichan/listmodel.hpp> +#include <guichan/actionlistener.hpp> + +#include "window.h" +#include "gccontainer.h" + +#include "../guichanfwd.h" + +class ProgressBar; +class Icon; +class Skill_Tab; + +/** + * The skill dialog. + * + * \ingroup Interface + */ +class SkillDialog : public Window, public gcn::ActionListener +{ + public: + /** + * Constructor. + */ + SkillDialog(); + + /** + * Destructor. + */ + ~SkillDialog(); + + /** + * Called when receiving actions from widget. + */ + void action(const gcn::ActionEvent &event); + + /** + * Update the tabs in this dialog + */ + void update(); + + /** + * Draw this window. + */ + void draw(gcn::Graphics *g); + + private: + std::list<Skill_Tab*> mTabs; +}; + +extern SkillDialog *skillDialog; + +#endif diff --git a/src/gui/skin.cpp b/src/gui/skin.cpp index 10b9885a..0d62fea5 100644 --- a/src/gui/skin.cpp +++ b/src/gui/skin.cpp @@ -34,7 +34,7 @@ #include "../utils/strprintf.h" #include "../utils/xml.h" -SkinLoader* skinLoader = NULL; +SkinLoader *skinLoader = NULL; ConfigListener *SkinLoader::skinConfigListener = NULL; class SkinConfigListener : public ConfigListener @@ -46,7 +46,7 @@ class SkinConfigListener : public ConfigListener } }; -Skin::Skin(ImageRect skin, Image* close, std::string filePath, std::string name): +Skin::Skin(ImageRect skin, Image *close, std::string filePath, std::string name): instances(0), mFilePath(filePath), mName(name), @@ -88,7 +88,7 @@ int Skin::getMinHeight() const border.grid[6]->getHeight(); } -Skin* SkinLoader::load(const std::string &filename, +Skin *SkinLoader::load(const std::string &filename, const std::string &defaultPath) { std::string filePath = filename; @@ -214,9 +214,9 @@ Skin* SkinLoader::load(const std::string &filename, delete doc; // Hard-coded for now until we update the above code to look for window buttons. - Image* closeImage = resman->getImage("graphics/gui/close_button.png"); + Image *closeImage = resman->getImage("graphics/gui/close_button.png"); - Skin* skin = new Skin(border, closeImage, filename); + Skin *skin = new Skin(border, closeImage, filename); mSkins[filename] = skin; diff --git a/src/gui/slider.cpp b/src/gui/slider.cpp index a2df59a4..cc381c32 100644 --- a/src/gui/slider.cpp +++ b/src/gui/slider.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/slider.h b/src/gui/slider.h index 35d875db..56ea334a 100644 --- a/src/gui/slider.h +++ b/src/gui/slider.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/speechbubble.cpp b/src/gui/speechbubble.cpp index cd483c30..4fb3409c 100644 --- a/src/gui/speechbubble.cpp +++ b/src/gui/speechbubble.cpp @@ -1,9 +1,9 @@ /* - * Aethyra - * Copyright (C) 2008, The Legend of Mazzeroth Development Team + * Speech bubbles + * Copyright (C) 2008 The Legend of Mazzeroth Development Team + * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Legend of Mazzeroth. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,18 +34,17 @@ #include "../utils/gettext.h" SpeechBubble::SpeechBubble(): - Popup("Speech", "graphics/gui/speechbubble.xml"), - mText("") + Popup("Speech", "graphics/gui/speechbubble.xml") { setContentSize(140, 46); setMinWidth(29); setMinHeight(29); - mCaption = new gcn::Label(""); + mCaption = new gcn::Label; mCaption->setFont(boldFont); mCaption->setPosition(5, 3); - mSpeechBox = new TextBox(); + mSpeechBox = new TextBox; mSpeechBox->setEditable(false); mSpeechBox->setOpaque(false); mSpeechBox->setTextColor(&guiPalette->getColor(Palette::CHAT)); diff --git a/src/gui/speechbubble.h b/src/gui/speechbubble.h index 9eb400fb..3eead884 100644 --- a/src/gui/speechbubble.h +++ b/src/gui/speechbubble.h @@ -1,9 +1,9 @@ /* - * Aethyra - * Copyright (C) 2008, The Legend of Mazzeroth Development Team + * Speech bubbles + * Copyright (C) 2008 The Legend of Mazzeroth Development Team + * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Legend of Mazzeroth. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/status.cpp b/src/gui/status.cpp index 8dd32039..2f95f1c8 100644 --- a/src/gui/status.cpp +++ b/src/gui/status.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -29,6 +28,7 @@ #include "widgets/layout.h" #include "../localplayer.h" +#include "../units.h" #include "../utils/gettext.h" #include "../utils/strprintf.h" @@ -36,9 +36,10 @@ StatusWindow::StatusWindow(LocalPlayer *player): Window(player->getName()), - mPlayer(player) + mPlayer(player), + mCurrency(0) { - setWindowName(_("Status")); + setWindowName("Status"); setCloseButton(true); setDefaultSize(400, 345, ImageRect::CENTER); @@ -48,7 +49,8 @@ StatusWindow::StatusWindow(LocalPlayer *player): mLvlLabel = new Label(strprintf(_("Level: %d"), 0)); mJobLvlLabel = new Label(strprintf(_("Job: %d"), 0)); - mGpLabel = new Label(strprintf(_("Money: %d GP"), 0)); + mGpLabel = new Label(strprintf(_("Money: %s"), + Units::formatCurrency(mCurrency).c_str())); mHpLabel = new Label(_("HP:")); mHpBar = new ProgressBar(1.0f, 80, 15, 0, 171, 34); @@ -77,8 +79,11 @@ StatusWindow::StatusWindow(LocalPlayer *player): mStatsDefenseLabel= new Label(_("Defense:")); mStatsMagicAttackLabel = new Label(_("M.Attack:")); mStatsMagicDefenseLabel = new Label(_("M.Defense:")); + // Gettext flag for next line: xgettext:no-c-format mStatsAccuracyLabel = new Label(_("% Accuracy:")); + // Gettext flag for next line: xgettext:no-c-format mStatsEvadeLabel = new Label(_("% Evade:")); + // Gettext flag for next line: xgettext:no-c-format mStatsReflexLabel = new Label(_("% Reflex:")); mStatsAttackPoints = new Label; @@ -161,42 +166,26 @@ void StatusWindow::update() { // Status Part // ----------- - mLvlLabel->setCaption(strprintf(_("Level: %d"), mPlayer->mLevel)); + mLvlLabel->setCaption(strprintf(_("Level: %d"), mPlayer->getLevel())); mLvlLabel->adjustSize(); mJobLvlLabel->setCaption(strprintf(_("Job: %d"), mPlayer->mJobLevel)); mJobLvlLabel->adjustSize(); - mGpLabel->setCaption(strprintf(_("Money: %d GP"), mPlayer->mGp)); - mGpLabel->adjustSize(); - - mHpBar->setText(toString(mPlayer->mHp) + - "/" + toString(mPlayer->mMaxHp)); - - mMpBar->setText(toString(mPlayer->mMp) + - "/" + toString(mPlayer->mMaxMp)); + if (mCurrency != mPlayer->getMoney()) { + mCurrency = mPlayer->getMoney(); + mGpLabel->setCaption(strprintf(_("Money: %s"), + Units::formatCurrency(mCurrency).c_str())); + mGpLabel->adjustSize(); + } - mXpBar->setText(toString(mPlayer->getXp()) + - "/" + toString(mPlayer->mXpForNextLevel)); + updateHPBar(mHpBar, true); - mJobBar->setText(toString(mPlayer->mJobXp) + - "/" + toString(mPlayer->mJobXpForNextLevel)); + updateMPBar(mMpBar, true); - // HP Bar coloration - if (mPlayer->mHp < int(mPlayer->mMaxHp / 3)) - mHpBar->setColor(223, 32, 32); // Red - else if (mPlayer->mHp < int((mPlayer->mMaxHp / 3) * 2)) - mHpBar->setColor(230, 171, 34); // Orange - else - mHpBar->setColor(0, 171, 34); // Green + updateXPBar(mXpBar, false); - mHpBar->setProgress((float) mPlayer->mHp / (float) mPlayer->mMaxHp); - mMpBar->setProgress((float) mPlayer->mMp / (float) mPlayer->mMaxMp); - - mXpBar->setProgress( - (float) mPlayer->getXp() / (float) mPlayer->mXpForNextLevel); - mJobBar->setProgress( - (float) mPlayer->mJobXp / (float) mPlayer->mJobXpForNextLevel); + updateJobBar(mJobBar, false); // Stats Part // ---------- @@ -291,3 +280,84 @@ void StatusWindow::action(const gcn::ActionEvent &event) player_node->raiseAttribute(LocalPlayer::LUK); } } + +void StatusWindow::updateHPBar(ProgressBar *bar, bool showMax) +{ + if (showMax) + bar->setText(toString(player_node->getHp()) + + "/" + toString(player_node->getMaxHp())); + else + bar->setText(toString(player_node->getHp())); + + // HP Bar coloration + if (player_node->getHp() < player_node->getMaxHp() / 3) + { + bar->setColor(223, 32, 32); // Red + } + else if (player_node->getHp() < (player_node->getMaxHp() / 3) * 2) + { + bar->setColor(230, 171, 34); // Orange + } + else + { + bar->setColor(0, 171, 34); // Green + } + + bar->setProgress((float) player_node->getHp() / (float) player_node->getMaxHp()); +} + +void StatusWindow::updateMPBar(ProgressBar *bar, bool showMax) +{ + if (showMax) + bar->setText(toString(player_node->mMp) + + "/" + toString(player_node->mMaxMp)); + else + bar->setText(toString(player_node->mMp)); + + + bar->setProgress((float) player_node->mMp / (float) player_node->mMaxMp); +} + +void StatusWindow::updateXPBar(ProgressBar *bar, bool percent) +{ + if (player_node->mXpForNextLevel == 0) { + bar->setText(_("Max level")); + bar->setProgress(1.0); + } else { + if (percent) + { + float xp = (float) player_node->getXp() / + player_node->mXpForNextLevel; + bar->setText(toString((float) ((int) (xp * 10000.0f)) / 100.0f) + + "%"); + } + else + bar->setText(toString(player_node->getXp()) + + "/" + toString(player_node->mXpForNextLevel)); + + bar->setProgress((float) player_node->getXp() / + (float) player_node->mXpForNextLevel); + } +} + +void StatusWindow::updateJobBar(ProgressBar *bar, bool percent) +{ + if (player_node->mJobXpForNextLevel == 0) { + bar->setText(_("Max level")); + bar->setProgress(1.0); + } else { + if (percent) + { + float xp = (float) player_node->mJobXp / + player_node->mJobXpForNextLevel; + bar->setText(toString((float) ((int) (xp * 10000.0f)) / 100.0f) + + "%"); + } + else + bar->setText(toString(player_node->mJobXp) + + "/" + toString(player_node->mJobXpForNextLevel)); + + bar->setProgress((float) player_node->mJobXp / + (float) player_node->mJobXpForNextLevel); + } +} diff --git a/src/gui/status.h b/src/gui/status.h index 5056f631..1425fe12 100644 --- a/src/gui/status.h +++ b/src/gui/status.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -58,6 +57,11 @@ class StatusWindow : public Window, public gcn::ActionListener */ void update(); + static void updateHPBar(ProgressBar *bar, bool showMax = false); + static void updateMPBar(ProgressBar *bar, bool showMax = false); + static void updateXPBar(ProgressBar *bar, bool percent = true); + static void updateJobBar(ProgressBar *bar, bool percent = true); + private: LocalPlayer *mPlayer; @@ -66,6 +70,7 @@ class StatusWindow : public Window, public gcn::ActionListener */ gcn::Label *mLvlLabel, *mJobLvlLabel; gcn::Label *mGpLabel; + int mCurrency; gcn::Label *mHpLabel, *mMpLabel, *mXpLabel, *mJobLabel; ProgressBar *mHpBar, *mMpBar; ProgressBar *mXpBar, *mJobBar; diff --git a/src/gui/statuswindow.cpp b/src/gui/statuswindow.cpp new file mode 100644 index 00000000..31b2da90 --- /dev/null +++ b/src/gui/statuswindow.cpp @@ -0,0 +1,376 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "statuswindow.h" + +#include <guichan/widgets/label.hpp> + +#include "button.h" +#include "progressbar.h" +#include "windowcontainer.h" + +#include "../localplayer.h" + +#include "../utils/strprintf.h" +#include "../utils/stringutils.h" + +StatusWindow::StatusWindow(LocalPlayer *player): + Window(player->getName()), + mPlayer(player) +{ + setWindowName("Status"); + setResizable(true); + setCloseButton(true); + setDefaultSize((windowContainer->getWidth() - 365) / 2, + (windowContainer->getHeight() - 255) / 2, 365, 275); + loadWindowState(); + + // ---------------------- + // Status Part + // ---------------------- + + mLvlLabel = new gcn::Label("Level:"); + mMoneyLabel = new gcn::Label("Money:"); + + mHpLabel = new gcn::Label("HP:"); + mHpBar = new ProgressBar(1.0f, 80, 15, 0, 171, 34); + mHpValueLabel = new gcn::Label(""); + + int y = 3; + int x = 5; + + mLvlLabel->setPosition(x, y); + x += mLvlLabel->getWidth() + 40; + mMoneyLabel->setPosition(x, y); + + y += mLvlLabel->getHeight() + 5; // Next Row + x = 5; + + mHpLabel->setPosition(x, y); + x += mHpLabel->getWidth() + 5; + mHpBar->setPosition(x, y); + x += mHpBar->getWidth() + 5; + mHpValueLabel->setPosition(x, y); + + y += mHpLabel->getHeight() + 5; // Next Row + x = 5; + + add(mLvlLabel); + add(mMoneyLabel); + add(mHpLabel); + add(mHpValueLabel); + add(mHpBar); + + // ---------------------- + // Stats Part + // ---------------------- + + // Static Labels + gcn::Label *mStatsTitleLabel = new gcn::Label("Stats"); + gcn::Label *mStatsTotalLabel = new gcn::Label("Total"); + + // Derived Stats +/* + mStatsAttackLabel = new gcn::Label("Attack:"); + mStatsDefenseLabel= new gcn::Label("Defense:"); + mStatsMagicAttackLabel = new gcn::Label("M.Attack:"); + mStatsMagicDefenseLabel = new gcn::Label("M.Defense:"); + mStatsAccuracyLabel = new gcn::Label("% Accuracy:"); + mStatsEvadeLabel = new gcn::Label("% Evade:"); + mStatsReflexLabel = new gcn::Label("% Reflex:"); + + mStatsAttackPoints = new gcn::Label(""); + mStatsDefensePoints = new gcn::Label(""); + mStatsMagicAttackPoints = new gcn::Label(""); + mStatsMagicDefensePoints = new gcn::Label(""); + mStatsAccuracyPoints = new gcn::Label("% Accuracy:"); + mStatsEvadePoints = new gcn::Label("% Evade:"); + mStatsReflexPoints = new gcn::Label("% Reflex:"); +*/ + // New labels + for (int i = 0; i < 6; i++) { + mStatsLabel[i] = new gcn::Label(); + mStatsDisplayLabel[i] = new gcn::Label(); + } + mCharacterPointsLabel = new gcn::Label(); + mCorrectionPointsLabel = new gcn::Label(); + + // Set button events Id + mStatsPlus[0] = new Button("+", "STR+", this); + mStatsPlus[1] = new Button("+", "AGI+", this); + mStatsPlus[2] = new Button("+", "DEX+", this); + mStatsPlus[3] = new Button("+", "VIT+", this); + mStatsPlus[4] = new Button("+", "INT+", this); + mStatsPlus[5] = new Button("+", "WIL+", this); + + mStatsMinus[0] = new Button("-", "STR-", this); + mStatsMinus[1] = new Button("-", "AGI-", this); + mStatsMinus[2] = new Button("-", "DEX-", this); + mStatsMinus[3] = new Button("-", "VIT-", this); + mStatsMinus[4] = new Button("-", "INT-", this); + mStatsMinus[5] = new Button("-", "WIL-", this); + + + + // Set position + mStatsTitleLabel->setPosition(mHpLabel->getX(), mHpLabel->getY() + 23 ); + mStatsTotalLabel->setPosition(110, mStatsTitleLabel->getY() + 15); + int totalLabelY = mStatsTotalLabel->getY(); + + for (int i = 0; i < 6; i++) + { + mStatsLabel[i]->setPosition(5, + mStatsTotalLabel->getY() + (i * 23) + 15); + mStatsMinus[i]->setPosition(85, totalLabelY + (i * 23) + 15); + mStatsDisplayLabel[i]->setPosition(125, + totalLabelY + (i * 23) + 15); + mStatsPlus[i]->setPosition(185, totalLabelY + (i * 23) + 15); + } + + mCharacterPointsLabel->setPosition(5, mStatsDisplayLabel[5]->getY() + 25); + mCorrectionPointsLabel->setPosition(5, mStatsDisplayLabel[5]->getY() + 35); +/* + mStatsAttackLabel->setPosition(220, mStatsLabel[0]->getY()); + mStatsDefenseLabel->setPosition(220, mStatsLabel[1]->getY()); + mStatsMagicAttackLabel->setPosition(220, mStatsLabel[2]->getY()); + mStatsMagicDefenseLabel->setPosition(220, mStatsLabel[3]->getY()); + mStatsAccuracyLabel->setPosition(220, mStatsLabel[4]->getY()); + mStatsEvadeLabel->setPosition(220, mStatsLabel[5]->getY()); + mStatsReflexLabel->setPosition(220, mStatsLabel[6]->getY()); + + mStatsAttackPoints->setPosition(310, mStatsLabel[0]->getY()); + mStatsDefensePoints->setPosition(310, mStatsLabel[1]->getY()); + mStatsMagicAttackPoints->setPosition(310, mStatsLabel[2]->getY()); + mStatsMagicDefensePoints->setPosition(310, mStatsLabel[3]->getY()); + mStatsAccuracyPoints->setPosition(310, mStatsLabel[4]->getY()); + mStatsEvadePoints->setPosition(310, mStatsLabel[5]->getY()); + mStatsReflexPoints->setPosition(310, mStatsLabel[6]->getY()); +*/ + // Assemble + add(mStatsTitleLabel); + add(mStatsTotalLabel); + for(int i = 0; i < 6; i++) + { + add(mStatsLabel[i]); + add(mStatsDisplayLabel[i]); + add(mStatsPlus[i]); + add(mStatsMinus[i]); + }/* + add(mStatsAttackLabel); + add(mStatsDefenseLabel); + add(mStatsMagicAttackLabel); + add(mStatsMagicDefenseLabel); + add(mStatsAccuracyLabel); + add(mStatsEvadeLabel); + add(mStatsReflexLabel); + + add(mStatsAttackPoints); + add(mStatsDefensePoints); + add(mStatsMagicAttackPoints); + add(mStatsMagicDefensePoints); + add(mStatsAccuracyPoints); + add(mStatsEvadePoints); + add(mStatsReflexPoints);*/ + + add(mCharacterPointsLabel); + add(mCorrectionPointsLabel); +} + +void StatusWindow::update() +{ + // Status Part + // ----------- + mLvlLabel->setCaption( "Level: " + + toString(mPlayer->getLevel()) + + " (" + + toString(mPlayer->getLevelProgress()) + + "%)"); + mLvlLabel->adjustSize(); + + mMoneyLabel->setCaption("Money: " + toString(mPlayer->getMoney()) + " GP"); + mMoneyLabel->adjustSize(); + + updateHPBar(mHpBar, true); + + // Stats Part + // ---------- + const std::string attrNames[6] = { + "Strength", + "Agility", + "Dexterity", + "Vitality", + "Intelligence", + "Willpower" + }; + int characterPoints = mPlayer->getCharacterPoints(); + int correctionPoints = mPlayer->getCorrectionPoints(); + // Update labels + for (int i = 0; i < 6; i++) + { + mStatsLabel[i]->setCaption(attrNames[i]); + mStatsDisplayLabel[i]->setCaption( + strprintf("%d / %d", + mPlayer->getAttributeEffective(CHAR_ATTR_BEGIN + i), + mPlayer->getAttributeBase(CHAR_ATTR_BEGIN + i))); + + mStatsLabel[i]->adjustSize(); + mStatsDisplayLabel[i]->adjustSize(); + + mStatsPlus[i]->setEnabled(characterPoints); + mStatsMinus[i]->setEnabled(correctionPoints); + } + mCharacterPointsLabel->setCaption("Character Points: " + + toString(characterPoints)); + mCharacterPointsLabel->adjustSize(); + + mCorrectionPointsLabel->setCaption("Correction Points: " + + toString(correctionPoints)); + mCorrectionPointsLabel->adjustSize(); +/* + // Derived Stats Points + + // Attack TODO: Count equipped Weapons and items attack bonuses + mStatsAttackPoints->setCaption( + toString(mPlayer->ATK + mPlayer->ATK_BONUS)); + mStatsAttackPoints->adjustSize(); + + // Defense TODO: Count equipped Armors and items defense bonuses + mStatsDefensePoints->setCaption( + toString(mPlayer->DEF + mPlayer->DEF_BONUS)); + mStatsDefensePoints->adjustSize(); + + // Magic Attack TODO: Count equipped items M.Attack bonuses + mStatsMagicAttackPoints->setCaption( + toString(mPlayer->MATK + mPlayer->MATK_BONUS)); + mStatsMagicAttackPoints->adjustSize(); + + // Magic Defense TODO: Count equipped items M.Defense bonuses + mStatsMagicDefensePoints->setCaption( + toString(mPlayer->MDEF + mPlayer->MDEF_BONUS)); + mStatsMagicDefensePoints->adjustSize(); + + // Accuracy % + mStatsAccuracyPoints->setCaption(toString(mPlayer->HIT)); + mStatsAccuracyPoints->adjustSize(); + + // Evasion % + mStatsEvadePoints->setCaption(toString(mPlayer->FLEE)); + mStatsEvadePoints->adjustSize(); + + // Reflex % + mStatsReflexPoints->setCaption(toString(mPlayer->DEX / 4)); // + counter + mStatsReflexPoints->adjustSize(); +*/ + // Update Second column widgets position + mMoneyLabel->setPosition(mLvlLabel->getX() + mLvlLabel->getWidth() + 20, + mLvlLabel->getY()); + +} + +void StatusWindow::draw(gcn::Graphics *g) +{ + update(); + + Window::draw(g); +} + +void StatusWindow::action(const gcn::ActionEvent &event) +{ + const std::string &eventId = event.getId(); + + // Stats Part + if (eventId == "STR+") + { + mPlayer->raiseAttribute(LocalPlayer::STR); + } + else if (eventId == "AGI+") + { + mPlayer->raiseAttribute(LocalPlayer::AGI); + } + else if (eventId == "DEX+") + { + mPlayer->raiseAttribute(LocalPlayer::DEX); + } + else if (eventId == "VIT+") + { + mPlayer->raiseAttribute(LocalPlayer::VIT); + } + else if (eventId == "INT+") + { + mPlayer->raiseAttribute(LocalPlayer::INT); + } + else if (eventId == "WIL+") + { + mPlayer->raiseAttribute(LocalPlayer::WIL); + } + + else if (eventId == "STR-") + { + mPlayer->lowerAttribute(LocalPlayer::STR); + } + else if (eventId == "AGI-") + { + mPlayer->lowerAttribute(LocalPlayer::AGI); + } + else if (eventId == "DEX-") + { + mPlayer->lowerAttribute(LocalPlayer::DEX); + } + else if (eventId == "VIT-") + { + mPlayer->lowerAttribute(LocalPlayer::VIT); + } + else if (eventId == "INT-") + { + mPlayer->lowerAttribute(LocalPlayer::INT); + } + else if (eventId == "WIL-") + { + mPlayer->lowerAttribute(LocalPlayer::WIL); + } +} + +// WARNING: Duplicated method! + +void StatusWindow::updateHPBar(ProgressBar *bar, bool showMax) +{ + if (showMax) + bar->setText(toString(player_node->getHp()) + + "/" + toString(player_node->getMaxHp())); + else + bar->setText(toString(player_node->getHp())); + + // HP Bar coloration + if (player_node->getHp() < player_node->getMaxHp() / 3) + { + bar->setColor(223, 32, 32); // Red + } + else if (player_node->getHp() < (player_node->getMaxHp() / 3) * 2) + { + bar->setColor(230, 171, 34); // Orange + } + else + { + bar->setColor(0, 171, 34); // Green + } + + bar->setProgress((float) player_node->getHp() / (float) player_node->getMaxHp()); +} diff --git a/src/gui/statuswindow.h b/src/gui/statuswindow.h new file mode 100644 index 00000000..605145d3 --- /dev/null +++ b/src/gui/statuswindow.h @@ -0,0 +1,107 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef STATUS_H +#define STATUS_H + +#include <iosfwd> + +#include <guichan/actionlistener.hpp> + +#include "window.h" + +#include "../guichanfwd.h" + +class LocalPlayer; +class ProgressBar; + + +/** + * The player status dialog. + * + * \ingroup Interface + */ +class StatusWindow : public Window, public gcn::ActionListener +{ + public: + /** + * Constructor. + */ + StatusWindow(LocalPlayer *player); + + /** + * Called when receiving actions from widget. + */ + void action(const gcn::ActionEvent &event); + + /** + * Draw this window + */ + void draw(gcn::Graphics *graphics); + + /** + * Updates this dialog with values from PLAYER_INFO *char_info + */ + void update(); + + static void updateHPBar(ProgressBar *bar, bool showMax = false); + + private: + LocalPlayer *mPlayer; + + /** + * Status Part + */ + gcn::Label *mLvlLabel, *mMoneyLabel, *mHpLabel, *mHpValueLabel; + ProgressBar *mHpBar; + + /** + * Derived Statistics captions + */ +/* + gcn::Label *mStatsAttackLabel, *mStatsDefenseLabel; + gcn::Label *mStatsMagicAttackLabel, *mStatsMagicDefenseLabel; + gcn::Label *mStatsAccuracyLabel, *mStatsEvadeLabel; + gcn::Label *mStatsReflexLabel; + + gcn::Label *mStatsAttackPoints, *mStatsDefensePoints; + gcn::Label *mStatsMagicAttackPoints, *mStatsMagicDefensePoints; + gcn::Label *mStatsAccuracyPoints, *mStatsEvadePoints; + gcn::Label *mStatsReflexPoints; +*/ + /** + * Stats captions. + */ + gcn::Label *mStatsLabel[6]; + gcn::Label *mStatsDisplayLabel[6]; + gcn::Label *mCharacterPointsLabel; + gcn::Label *mCorrectionPointsLabel; + + /** + * Stats buttons. + */ + gcn::Button *mStatsPlus[6]; + gcn::Button *mStatsMinus[6]; +}; + +extern StatusWindow *statusWindow; + +#endif diff --git a/src/gui/storagewindow.cpp b/src/gui/storagewindow.cpp index eb0cbc12..479348aa 100644 --- a/src/gui/storagewindow.cpp +++ b/src/gui/storagewindow.cpp @@ -39,10 +39,12 @@ #include "../inventory.h" #include "../item.h" #include "../localplayer.h" +#include "../units.h" #include "../net/messageout.h" -#include "../net/network.h" -#include "../net/protocol.h" +#ifdef EATHENA_SUPPORT +#include "../net/ea/protocol.h" +#endif #include "../resources/iteminfo.h" @@ -65,7 +67,7 @@ StorageWindow::StorageWindow(Network *network, int invSize): mStoreButton = new Button(_("Store"), "store", this); mRetrieveButton = new Button(_("Retrieve"), "retrieve", this); - mItems = new ItemContainer(player_node->getStorage(), 1); + mItems = new ItemContainer(player_node->getStorage(), 10, 5, 1); mItems->addSelectionListener(this); mInvenScroll = new ScrollArea(mItems); diff --git a/src/gui/storagewindow.h b/src/gui/storagewindow.h index 6a1c2cdb..cc0df2af 100644 --- a/src/gui/storagewindow.h +++ b/src/gui/storagewindow.h @@ -40,7 +40,8 @@ class TextBox; * * \ingroup Interface */ -class StorageWindow : public Window, gcn::ActionListener, gcn::SelectionListener +class StorageWindow : public Window, gcn::ActionListener, + gcn::SelectionListener { public: /** diff --git a/src/gui/table.cpp b/src/gui/table.cpp index 17d8bfbf..ec5b0480 100644 --- a/src/gui/table.cpp +++ b/src/gui/table.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra derived from original code - * from Guichan. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -38,7 +37,7 @@ class GuiTableActionListener : public gcn::ActionListener public: GuiTableActionListener(GuiTable *_table, gcn::Widget *_widget, int _row, int _column); - virtual ~GuiTableActionListener(void); + virtual ~GuiTableActionListener(); virtual void action(const gcn::ActionEvent& actionEvent); @@ -63,7 +62,7 @@ GuiTableActionListener::GuiTableActionListener(GuiTable *table, gcn::Widget *wid } } -GuiTableActionListener::~GuiTableActionListener(void) +GuiTableActionListener::~GuiTableActionListener() { if (mWidget) { @@ -97,13 +96,13 @@ GuiTable::GuiTable(TableModel *initial_model, gcn::Color background, addKeyListener(this); } -GuiTable::~GuiTable(void) +GuiTable::~GuiTable() { uninstallActionListeners(); delete mModel; } -TableModel* GuiTable::getModel(void) const +TableModel *GuiTable::getModel() const { return mModel; } @@ -126,7 +125,7 @@ void GuiTable::setModel(TableModel *new_model) } } -void GuiTable::recomputeDimensions(void) +void GuiTable::recomputeDimensions() { int rows_nr = mModel->getRows(); int columns_nr = mModel->getColumns(); @@ -154,12 +153,12 @@ void GuiTable::setSelected(int row, int column) mSelectedRow = row; } -int GuiTable::getSelectedRow(void) +int GuiTable::getSelectedRow() { return mSelectedRow; } -int GuiTable::getSelectedColumn(void) +int GuiTable::getSelectedColumn() { return mSelectedColumn; } @@ -169,7 +168,7 @@ void GuiTable::setLinewiseSelection(bool linewise) mLinewiseMode = linewise; } -int GuiTable::getRowHeight(void) +int GuiTable::getRowHeight() { if (mModel) return mModel->getRowHeight() + 1; // border @@ -201,7 +200,7 @@ void GuiTable::setSelectedRow(int selected) { mSelectedRow = 0; } - else if ((selected >= mModel->getRows() && !mWrappingEnabled) || + else if ((selected >= mModel->getRows() && !mWrappingEnabled) || (selected < 0 && mWrappingEnabled)) { mSelectedRow = mModel->getRows() - 1; @@ -226,7 +225,7 @@ void GuiTable::setSelectedColumn(int selected) { mSelectedColumn = 0; } - else if ((selected >= mModel->getColumns() && !mWrappingEnabled) || + else if ((selected >= mModel->getColumns() && !mWrappingEnabled) || (selected < 0 && mWrappingEnabled)) { mSelectedColumn = mModel->getColumns() - 1; @@ -240,11 +239,11 @@ void GuiTable::setSelectedColumn(int selected) void GuiTable::uninstallActionListeners(void) { - delete_all(action_listeners); - action_listeners.clear(); + delete_all(mActionListeners); + mActionListeners.clear(); } -void GuiTable::installActionListeners(void) +void GuiTable::installActionListeners() { if (!mModel) return; @@ -256,7 +255,7 @@ void GuiTable::installActionListeners(void) for (int column = 0; column < columns; ++column) { gcn::Widget *widget = mModel->getElementAt(row, column); - action_listeners.push_back(new GuiTableActionListener(this, widget, + mActionListeners.push_back(new GuiTableActionListener(this, widget, row, column)); } @@ -290,7 +289,7 @@ void GuiTable::draw(gcn::Graphics* graphics) int max_rows_nr = mModel->getRows() - first_row; // clip if neccessary: if (max_rows_nr < rows_nr) rows_nr = max_rows_nr; - + // Now determine the first and last column // Take the easy way out; these are usually bounded and all visible. int first_column = 0; @@ -338,7 +337,6 @@ void GuiTable::draw(gcn::Graphics* graphics) graphics->pushClipArea(bounds); widget->draw(graphics); graphics->popClipArea(); - } x_offset += width; @@ -369,7 +367,7 @@ void GuiTable::moveToBottom(gcn::Widget *widget) mTopWidget = NULL; } -gcn::Rectangle GuiTable::getChildrenArea(void) +gcn::Rectangle GuiTable::getChildrenArea() { return gcn::Rectangle(0, 0, getWidth(), getHeight()); } @@ -459,7 +457,7 @@ void GuiTable::mouseWheelMovedDown(gcn::MouseEvent& mouseEvent) mouseEvent.consume(); } } - + void GuiTable::mouseDragged(gcn::MouseEvent& mouseEvent) { } @@ -479,7 +477,7 @@ void GuiTable::modelUpdated(bool completed) } } -gcn::Widget* GuiTable::getWidgetAt(int x, int y) +gcn::Widget *GuiTable::getWidgetAt(int x, int y) { int row = getRowForY(y); int column = getColumnForX(x); @@ -531,12 +529,13 @@ void GuiTable::_setFocusHandler(gcn::FocusHandler* focusHandler) { gcn::Widget::_setFocusHandler(focusHandler); - if (mModel) - for (int r = 0; r < mModel->getRows(); ++r) - for (int c = 0; c < mModel->getColumns(); ++c) - { + if (mModel) { + for (int r = 0; r < mModel->getRows(); ++r) { + for (int c = 0; c < mModel->getColumns(); ++c) { gcn::Widget *w = mModel->getElementAt(r, c); if (w) w->_setFocusHandler(focusHandler); } + } + } } diff --git a/src/gui/table.h b/src/gui/table.h index a508d0e4..d73cf340 100644 --- a/src/gui/table.h +++ b/src/gui/table.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra derived from original code - * from Guichan. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,17 +46,19 @@ class GuiTable : public gcn::Widget, public gcn::KeyListener, public TableModelListener { - friend class GuiTableActionListener; // so that the action listener can call distributeActionEvent + // so that the action listener can call distributeActionEvent + friend class GuiTableActionListener; + public: GuiTable(TableModel * initial_model = NULL, gcn::Color background = 0xffffff, bool opacity = true); - virtual ~GuiTable(void); + virtual ~GuiTable(); /** * Retrieves the active table model */ - TableModel *getModel(void) const; + TableModel *getModel() const; /** * Sets the table model @@ -73,9 +74,9 @@ public: void setSelected(int row, int column); - int getSelectedRow(void); + int getSelectedRow(); - int getSelectedColumn(void); + int getSelectedColumn(); void setSelectedRow(int selected); @@ -137,25 +138,25 @@ public: virtual void mouseWheelMovedUp(gcn::MouseEvent& mouseEvent); virtual void mouseWheelMovedDown(gcn::MouseEvent& mouseEvent); - + virtual void mouseDragged(gcn::MouseEvent& mouseEvent); // Constraints inherited from TableModelListener virtual void modelUpdated(bool); protected: + /** Frees all action listeners on inner widgets. */ + virtual void uninstallActionListeners(); + /** Installs all action listeners on inner widgets. */ + virtual void installActionListeners(); - virtual void uninstallActionListeners(void); // frees all action listeners on inner widgets - virtual void installActionListeners(void); // installs all action listeners on inner widgets - - virtual int getRowHeight(void); + virtual int getRowHeight(); virtual int getColumnWidth(int i); - -private: +private: int getRowForY(int y); // -1 on error int getColumnForX(int x); // -1 on error - void recomputeDimensions(void); + void recomputeDimensions(); bool mLinewiseMode; bool mWrappingEnabled; bool mOpaque; @@ -172,11 +173,14 @@ private: int mSelectedRow; int mSelectedColumn; - int mPopFramesNr; // Number of frames to skip upwards when drawing the selected widget + /** Number of frames to skip upwards when drawing the selected widget. */ + int mPopFramesNr; - gcn::Widget *mTopWidget; // If someone moves a fresh widget to the top, we must display it + /** If someone moves a fresh widget to the top, we must display it. */ + gcn::Widget *mTopWidget; - std::vector<GuiTableActionListener *> action_listeners; // Vector for compactness; used as a list in practice. + /** Vector for compactness; used as a list in practice. */ + std::vector<GuiTableActionListener *> mActionListeners; }; diff --git a/src/gui/table_model.cpp b/src/gui/table_model.cpp index 8998961e..4fa13bae 100644 --- a/src/gui/table_model.cpp +++ b/src/gui/table_model.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,13 +35,13 @@ void TableModel::removeListener(TableModelListener *listener) listeners.erase(listener); } -void TableModel::signalBeforeUpdate(void) +void TableModel::signalBeforeUpdate() { for (std::set<TableModelListener *>::const_iterator it = listeners.begin(); it != listeners.end(); it++) (*it)->modelUpdated(false); } -void TableModel::signalAfterUpdate(void) +void TableModel::signalAfterUpdate() { for (std::set<TableModelListener *>::const_iterator it = listeners.begin(); it != listeners.end(); it++) (*it)->modelUpdated(true); @@ -61,12 +60,12 @@ StaticTableModel::StaticTableModel(int row, int column) : mWidths.resize(column, 1); } -StaticTableModel::~StaticTableModel(void) +StaticTableModel::~StaticTableModel() { delete_all(mTableModel); } -void StaticTableModel::resize(void) +void StaticTableModel::resize() { mRows = getRows(); mColumns = getColumns(); @@ -98,7 +97,7 @@ void StaticTableModel::set(int row, int column, gcn::Widget *widget) signalAfterUpdate(); } -gcn::Widget* StaticTableModel::getElementAt(int row, int column) +gcn::Widget *StaticTableModel::getElementAt(int row, int column) { return mTableModel[WIDGET_AT(row, column)]; } @@ -120,7 +119,7 @@ void StaticTableModel::fixRowHeight(int height) mHeight = -height; } -int StaticTableModel::getRowHeight(void) +int StaticTableModel::getRowHeight() { return abs(mHeight); } @@ -133,12 +132,12 @@ int StaticTableModel::getColumnWidth(int column) return abs(mWidths[column]); } -int StaticTableModel::getRows(void) +int StaticTableModel::getRows() { return mRows; } -int StaticTableModel::getColumns(void) +int StaticTableModel::getColumns() { return mColumns; } diff --git a/src/gui/table_model.h b/src/gui/table_model.h index 6edd7d65..9ca36120 100644 --- a/src/gui/table_model.h +++ b/src/gui/table_model.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,8 +29,9 @@ class TableModelListener { public: /** - * Must be invoked by the TableModel whenever a global change is about to occur or - * has occurred (e.g., when a row or column is being removed or added). + * Must be invoked by the TableModel whenever a global change is about to + * occur or has occurred (e.g., when a row or column is being removed or + * added). * * This method is triggered twice, once before and once after the update. * @@ -46,22 +46,22 @@ public: class TableModel { public: - virtual ~TableModel(void) { } + virtual ~TableModel() { } /** * Determines the number of rows (lines) in the table */ - virtual int getRows(void) = 0; + virtual int getRows() = 0; /** * Determines the number of columns in each row */ - virtual int getColumns(void) = 0; + virtual int getColumns() = 0; /** * Determines the height for each row */ - virtual int getRowHeight(void) = 0; + virtual int getRowHeight() = 0; /** * Determines the width of each individual column @@ -81,12 +81,12 @@ protected: /** * Tells all listeners that the table is about to see an update */ - virtual void signalBeforeUpdate(void); + virtual void signalBeforeUpdate(); /** * Tells all listeners that the table has seen an update */ - virtual void signalAfterUpdate(void); + virtual void signalAfterUpdate(); private: std::set<TableModelListener *> listeners; @@ -97,7 +97,7 @@ class StaticTableModel : public TableModel { public: StaticTableModel(int width, int height); - virtual ~StaticTableModel(void); + virtual ~StaticTableModel(); /** * Inserts a widget into the table model. @@ -107,7 +107,8 @@ public: virtual void set(int row, int column, gcn::Widget *widget); /** - * Fixes the column width for a given column; this overrides dynamic width inference. + * Fixes the column width for a given column; this overrides dynamic width + * inference. * * Semantics are undefined for width 0. */ @@ -123,17 +124,16 @@ public: /** * Resizes the table model */ - virtual void resize(void); + virtual void resize(); - virtual int getRows(void); - virtual int getColumns(void); - virtual int getRowHeight(void); - virtual int getWidth(void); - virtual int getHeight(void); + virtual int getRows(); + virtual int getColumns(); + virtual int getRowHeight(); + virtual int getWidth(); + virtual int getHeight(); virtual int getColumnWidth(int index); virtual gcn::Widget *getElementAt(int row, int column); - protected: int mRows, mColumns; int mHeight; diff --git a/src/gui/textbox.cpp b/src/gui/textbox.cpp index 51a8efc6..10f727e3 100644 --- a/src/gui/textbox.cpp +++ b/src/gui/textbox.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/textbox.h b/src/gui/textbox.h index 20f4ebe2..5884e11c 100644 --- a/src/gui/textbox.h +++ b/src/gui/textbox.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/textdialog.cpp b/src/gui/textdialog.cpp new file mode 100644 index 00000000..8c65d64b --- /dev/null +++ b/src/gui/textdialog.cpp @@ -0,0 +1,91 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "textdialog.h" +#include "button.h" + +#include "../utils/gettext.h" + +#include <guichan/widgets/label.hpp> +#include <guichan/widgets/textfield.hpp> + +TextDialog::TextDialog(const std::string &title, const std::string &msg, + Window *parent): + Window(title, true, parent), + mTextField(new TextField) +{ + gcn::Label *textLabel = new gcn::Label(msg); + mOkButton = new Button(_("OK"), "OK", this); + gcn::Button *cancelButton = new Button(_("Cancel"), "CANCEL", this); + + int w = textLabel->getWidth() + 20; + int inWidth = mOkButton->getWidth() + cancelButton->getWidth() + 5; + int h = textLabel->getHeight() + 25 + mOkButton->getHeight() + mTextField->getHeight(); + + if (w < inWidth + 10) + w = inWidth + 10; + + setContentSize(w, h); + textLabel->setPosition(10, 10); + mTextField->setWidth(85); + mTextField->setPosition(10,20 + textLabel->getHeight()); + mOkButton->setPosition((w - inWidth) / 2, + h - 5 - cancelButton->getHeight()); + cancelButton->setPosition(mOkButton->getX() + mOkButton->getWidth() + 5, + h - 5 - cancelButton->getHeight()); + + add(textLabel); + add(mTextField); + add(mOkButton); + add(cancelButton); + + if (getParent()) { + setLocationRelativeTo(getParent()); + getParent()->moveToTop(this); + } + setVisible(true); + mTextField->requestFocus(); +} + +void TextDialog::action(const gcn::ActionEvent &event) +{ + // Proxy button events to our listeners + ActionListenerIterator i; + for (i = mActionListeners.begin(); i != mActionListeners.end(); ++i) + { + (*i)->action(event); + } + + if (event.getId() == "CANCEL" || event.getId() == "OK") + { + scheduleDelete(); + } +} + +const std::string &TextDialog::getText() const +{ + return mTextField->getText(); +} + +void TextDialog::setOKButtonActionId(const std::string &name) +{ + mOkButton->setActionEventId(name); +} diff --git a/src/gui/textdialog.h b/src/gui/textdialog.h new file mode 100644 index 00000000..3dc9259c --- /dev/null +++ b/src/gui/textdialog.h @@ -0,0 +1,66 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef GUI_GUILD_DIALOG_H +#define GUI_GUILD_DIALOG_H + +#include <guichan/actionlistener.hpp> +#include "textfield.h" + +#include "window.h" + +/** +* An option dialog. + * + * \ingroup GUI + */ +class TextDialog : public Window, public gcn::ActionListener +{ +public: + /** + * Constructor. + * + * @see Window::Window + */ + TextDialog(const std::string &title, const std::string &msg, + Window *parent = NULL); + + /** + * Called when receiving actions from the widgets. + */ + void action(const gcn::ActionEvent &event); + + /** + * Get the text in the textfield + */ + const std::string &getText() const; + + /** + * Set the OK button action id + */ + void setOKButtonActionId(const std::string &name); + +private: + TextField *mTextField; + gcn::Button *mOkButton; +}; + +#endif diff --git a/src/gui/textfield.cpp b/src/gui/textfield.cpp index 257ddaa1..42279fc4 100644 --- a/src/gui/textfield.cpp +++ b/src/gui/textfield.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -40,7 +39,7 @@ int TextField::instances = 0; float TextField::mAlpha = config.getValue("guialpha", 0.8); ImageRect TextField::skin; -TextField::TextField(const std::string& text): +TextField::TextField(const std::string &text): gcn::TextField(text), mNumeric(false), mListener(0) diff --git a/src/gui/textfield.h b/src/gui/textfield.h index b82912c0..070d86ae 100644 --- a/src/gui/textfield.h +++ b/src/gui/textfield.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,12 +38,13 @@ class TextFieldListener * * \ingroup GUI */ -class TextField : public gcn::TextField { +class TextField : public gcn::TextField +{ public: /** * Constructor, initializes the text field with the given string. */ - TextField(const std::string& text = ""); + TextField(const std::string &text = ""); /** * Destructor. diff --git a/src/gui/textrenderer.h b/src/gui/textrenderer.h index c0f5a0e9..712c1312 100644 --- a/src/gui/textrenderer.h +++ b/src/gui/textrenderer.h @@ -2,7 +2,7 @@ * Text Renderer * Copyright (C) 2009 The Mana World Development Team * - * This file is part of Aethyra based on code from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,17 +35,22 @@ class TextRenderer /** * Renders a specified text. */ - static inline void renderText(gcn::Graphics *graphics, const std::string& - text, int x, int y, gcn::Graphics::Alignment align, - const gcn::Color color, gcn::Font *font, bool outline = false, - bool shadow = false, int alpha = 255) + static inline void renderText(gcn::Graphics *graphics, + const std::string &text, + int x, int y, + gcn::Graphics::Alignment align, + const gcn::Color &color, + gcn::Font *font, + bool outline = false, + bool shadow = false, int alpha = 255) { graphics->setFont(font); // Text shadow if (shadow) { - graphics->setColor(guiPalette->getColor(Palette::SHADOW, alpha / 2)); + graphics->setColor(guiPalette->getColor(Palette::SHADOW, + alpha / 2)); if (outline) { graphics->drawText(text, x + 2, y + 2, align); diff --git a/src/gui/trade.cpp b/src/gui/trade.cpp index 82ac4647..2d80d12d 100644 --- a/src/gui/trade.cpp +++ b/src/gui/trade.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,24 +38,39 @@ #include "../inventory.h" #include "../item.h" #include "../localplayer.h" +#include "../units.h" +#ifdef TMWSERV_SUPPORT +#include "../net/tmwserv/gameserver/player.h" +#else #include "../net/messageout.h" -#include "../net/protocol.h" +#include "../net/ea/protocol.h" +#endif #include "../utils/gettext.h" -#include "../utils/strprintf.h" #include "../utils/stringutils.h" +#include "../utils/strprintf.h" +#ifdef TMWSERV_SUPPORT +TradeWindow::TradeWindow(): +#else TradeWindow::TradeWindow(Network *network): - Window("Trade"), +#endif + Window(_("Trade: You")), +#ifdef EATHENA_SUPPORT mNetwork(network), mMyInventory(new Inventory(INVENTORY_SIZE, 2)), mPartnerInventory(new Inventory(INVENTORY_SIZE, 2)) +#else + mMyInventory(new Inventory(INVENTORY_SIZE)), + mPartnerInventory(new Inventory(INVENTORY_SIZE)), + mStatus(PREPARING) +#endif { - setWindowName(_("Trade")); - setDefaultSize(342, 209, ImageRect::CENTER); + setWindowName("Trade"); setResizable(true); setCloseButton(true); + setDefaultSize(342, 209, ImageRect::CENTER); setMinWidth(342); setMinHeight(209); @@ -65,36 +79,58 @@ TradeWindow::TradeWindow(Network *network): getFont()->getWidth(_("Trade")) ? _("OK") : _("Trade"); - mAddButton = new Button(_("Add"), "add", this); + Button *addButton = new Button(_("Add"), "add", this); +#ifdef EATHENA_SUPPORT mOkButton = new Button(longestName, "ok", this); - - mMyItemContainer = new ItemContainer(mMyInventory.get(), 2); - mMyItemContainer->setWidth(160); +#else + Button *cancelButton = new Button(_("Cancel"), "cancel", this); +#endif + mTradeButton = new Button(_("Propose trade"), "trade", this); + mTradeButton->setWidth(8 + std::max( + mTradeButton->getFont()->getWidth(_("Propose trade")), + mTradeButton->getFont()->getWidth(_("Confirm trade")))); + +#ifdef TMWSERV_SUPPORT + mMyItemContainer = new ItemContainer(mMyInventory.get(), 4, 3, 0); +#else + mMyItemContainer = new ItemContainer(mMyInventory.get(), 4, 3, 2); +#endif mMyItemContainer->addSelectionListener(this); - mMyScroll = new ScrollArea(mMyItemContainer); + ScrollArea *myScroll = new ScrollArea(mMyItemContainer); - mPartnerItemContainer = new ItemContainer(mPartnerInventory.get(), 2); - mPartnerItemContainer->setWidth(160); +#ifdef TMWSERV_SUPPORT + mPartnerItemContainer = new ItemContainer(mPartnerInventory.get(), 4, 3, 0); +#else + mPartnerItemContainer = new ItemContainer(mPartnerInventory.get(), 4, 3, 2); +#endif mPartnerItemContainer->addSelectionListener(this); - mPartnerScroll = new ScrollArea(mPartnerItemContainer); + ScrollArea *partnerScroll = new ScrollArea(mPartnerItemContainer); + + mMoneyLabel = new Label(strprintf(_("You get %s."), "")); + gcn::Label *mMoneyLabel2 = new Label(_("You give:")); - mMoneyLabel = new Label(strprintf(_("You get %d GP."), 0)); - mMoneyLabel2 = new Label(_("You give:")); mMoneyField = new TextField; - mMoneyField->setWidth(50); + mMoneyField->setWidth(40); + Button *moneyChange = new Button(_("Change"), "money", this); place(1, 0, mMoneyLabel); - place(0, 1, mMyScroll).setPadding(3); - place(1, 1, mPartnerScroll).setPadding(3); + place(0, 1, myScroll).setPadding(3); + place(1, 1, partnerScroll).setPadding(3); ContainerPlacer place; place = getPlacer(0, 0); place(0, 0, mMoneyLabel2); place(1, 0, mMoneyField); + place(2, 0, moneyChange).setHAlign(LayoutCell::LEFT); place = getPlacer(0, 2); - place(6, 0, mAddButton); - place(7, 0, mOkButton); + place(0, 0, addButton); +#ifdef EATHENA_SUPPORT + place(1, 0, mOkButton); +#else + place(2, 0, mTradeButton); + place(3, 0, cancelButton); +#endif Layout &layout = getLayout(); layout.extend(0, 2, 2, 1); layout.setRowHeight(1, Layout::AUTO_SET); @@ -102,7 +138,9 @@ TradeWindow::TradeWindow(Network *network): layout.setColWidth(0, Layout::AUTO_SET); layout.setColWidth(1, Layout::AUTO_SET); +#ifdef EATHENA_SUPPORT mOkButton->setCaption(_("OK")); +#endif loadWindowState(); } @@ -111,34 +149,37 @@ TradeWindow::~TradeWindow() { } -void TradeWindow::addMoney(int amount) +void TradeWindow::setMoney(int amount) { - mMoneyLabel->setCaption(strprintf(_("You get %d GP."), amount)); + mMoneyLabel->setCaption(strprintf(_("You get %s."), + Units::formatCurrency(amount).c_str())); mMoneyLabel->adjustSize(); +#ifdef TMWSERV_SUPPORT + setStatus(PREPARING); +#endif +} + +#ifdef TMWSERV_SUPPORT +void TradeWindow::addItem(int id, bool own, int quantity) +{ + (own ? mMyInventory : mPartnerInventory)->addItem(id, quantity); + setStatus(PREPARING); } +#endif +#ifdef EATHENA_SUPPORT void TradeWindow::addItem(int id, bool own, int quantity, bool equipment) { if (own) { - mMyItemContainer->setWidth(mMyScroll->getWidth()); mMyInventory->addItem(id, quantity, equipment); } else { - mPartnerItemContainer->setWidth(mPartnerScroll->getWidth()); mPartnerInventory->addItem(id, quantity, equipment); } } -void TradeWindow::removeItem(int id, bool own) -{ - if (own) - mMyInventory->removeItem(id); - else - mPartnerInventory->removeItem(id); -} - void TradeWindow::changeQuantity(int index, bool own, int quantity) { if (own) @@ -154,21 +195,36 @@ void TradeWindow::increaseQuantity(int index, bool own, int quantity) else mPartnerInventory->getItem(index)->increaseQuantity(quantity); } +#endif void TradeWindow::reset() { mMyInventory->clear(); mPartnerInventory->clear(); +#ifdef EATHENA_SUPPORT mOkButton->setCaption(_("OK")); mOkButton->setActionEventId("ok"); mOkButton->setEnabled(true); mOkOther = false; mOkMe = false; - mMoneyLabel->setCaption(strprintf(_("You get %d GP."), 0)); +#endif + mMoneyLabel->setCaption(strprintf(_("You get %s."), "")); mMoneyField->setEnabled(true); mMoneyField->setText(""); +#ifdef TMWSERV_SUPPORT + setStatus(PREPARING); +#endif } +#ifdef TMWSERV_SUPPORT + +void TradeWindow::receivedOk() +{ + setStatus(ACCEPTING); +} + +#else + void TradeWindow::receivedOk(bool own) { if (own) @@ -191,8 +247,15 @@ void TradeWindow::receivedOk(bool own) } } +#endif + void TradeWindow::tradeItem(Item *item, int quantity) { +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::tradeItem(item->getInvIndex(), quantity); + addItem(item->getId(), true, quantity); + item->increaseQuantity(-quantity); +#else // TODO: Our newer version of eAthena doesn't register this following // function. Detect the actual server version, and re-enable this // for that version only. @@ -201,6 +264,7 @@ void TradeWindow::tradeItem(Item *item, int quantity) outMsg.writeInt16(CMSG_TRADE_ITEM_ADD_REQUEST); outMsg.writeInt16(item->getInvIndex()); outMsg.writeInt32(quantity); +#endif } void TradeWindow::valueChanged(const gcn::SelectionEvent &event) @@ -217,6 +281,18 @@ void TradeWindow::valueChanged(const gcn::SelectionEvent &event) mMyItemContainer->selectNone(); } +#ifdef TMWSERV_SUPPORT +void TradeWindow::setStatus(Status s) +{ + if (s == mStatus) return; + mStatus = s; + + mTradeButton->setCaption + (s == PREPARING ? _("Propose trade") : _("Confirm trade")); + mTradeButton->setEnabled(s != PROPOSING); +} +#endif + void TradeWindow::action(const gcn::ActionEvent &event) { Item *item = inventoryWindow->getSelectedItem(); @@ -233,7 +309,7 @@ void TradeWindow::action(const gcn::ActionEvent &event) if (mMyInventory->contains(item)) { - chatWindow->chatLog(_("Failed adding item. You can not " + localChatTab->chatLog(_("Failed adding item. You can not " "overlap one kind of item on the window."), BY_SERVER); return; @@ -248,12 +324,24 @@ void TradeWindow::action(const gcn::ActionEvent &event) // Choose amount of items to trade new ItemAmountWindow(AMOUNT_TRADE_ADD, this, item); } + +#ifdef TMWSERV_SUPPORT + setStatus(PREPARING); +#endif } else if (event.getId() == "cancel") { + setVisible(false); + reset(); + player_node->setTrading(false); +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::acceptTrade(false); +#else MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_TRADE_CANCEL_REQUEST); +#endif } +#ifdef EATHENA_SUPPORT else if (event.getId() == "ok") { std::stringstream tempMoney(mMoneyField->getText()); @@ -275,15 +363,34 @@ void TradeWindow::action(const gcn::ActionEvent &event) MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_TRADE_ADD_COMPLETE); } +#endif else if (event.getId() == "trade") { +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::acceptTrade(true); + setStatus(PROPOSING); +#else MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_TRADE_OK); +#endif + } +#ifdef TMWSERV_SUPPORT + else if (event.getId() == "money") + { + int v = atoi(mMoneyField->getText().c_str()); + Net::GameServer::Player::tradeMoney(v); + mMoneyField->setText(strprintf("%d", v)); + setStatus(PREPARING); } +#endif } void TradeWindow::close() { +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::acceptTrade(false); +#else MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_TRADE_CANCEL_REQUEST); +#endif } diff --git a/src/gui/trade.h b/src/gui/trade.h index 76ba5a4c..4c215ba6 100644 --- a/src/gui/trade.h +++ b/src/gui/trade.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,7 +34,9 @@ class Inventory; class Item; class ItemContainer; +#ifdef EATHENA_SUPPORT class Network; +#endif class ScrollArea; /** @@ -49,7 +50,11 @@ class TradeWindow : public Window, gcn::ActionListener, gcn::SelectionListener /** * Constructor. */ +#ifdef TMWSERV_SUPPORT + TradeWindow(); +#else TradeWindow(Network *network); +#endif /** * Destructor. @@ -57,24 +62,25 @@ class TradeWindow : public Window, gcn::ActionListener, gcn::SelectionListener ~TradeWindow(); /** - * Add money to the trade window. + * Displays expected money in the trade window. */ - void addMoney(int quantity); + void setMoney(int quantity); /** * Add an item to the trade window. */ - void addItem(int id, bool own, int quantity, bool equipment); + void addItem(int id, bool own, int quantity); /** - * Remove a item from the trade window. + * Reset both item containers */ - void removeItem(int id, bool own); + void reset(); +#ifdef EATHENA_SUPPORT /** - * Reset both item containers + * Add an item to the trade window. */ - void reset(); + void addItem(int id, bool own, int quantity, bool equipment); /** * Change quantity of an item. @@ -85,11 +91,16 @@ class TradeWindow : public Window, gcn::ActionListener, gcn::SelectionListener * Increase quantity of an item. */ void increaseQuantity(int index, bool own, int quantity); +#endif /** * Player received ok message from server */ +#ifdef TMWSERV_SUPPORT + void receivedOk(); +#else void receivedOk(bool own); +#endif /** * Send trade packet. @@ -114,7 +125,23 @@ class TradeWindow : public Window, gcn::ActionListener, gcn::SelectionListener void close(); private: +#ifdef TMWSERV_SUPPORT + enum Status + { + PREPARING, /**< Players are adding items. */ + PROPOSING, /**< Local player is proposing a trade. */ + ACCEPTING /**< Distant player is proposing a trade. */ + }; + + /** + * Sets the current status of the trade. + */ + void setStatus(Status); +#endif + +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif typedef const std::auto_ptr<Inventory> InventoryPtr; InventoryPtr mMyInventory; @@ -124,11 +151,18 @@ class TradeWindow : public Window, gcn::ActionListener, gcn::SelectionListener ItemContainer *mPartnerItemContainer; gcn::Label *mMoneyLabel; - gcn::Label *mMoneyLabel2; - gcn::Button *mAddButton, *mOkButton; - ScrollArea *mMyScroll, *mPartnerScroll; + gcn::Button *mTradeButton; +#ifdef EATHENA_SUPPORT + gcn::Button *mAddButton; + gcn::Button *mOkButton; +#endif gcn::TextField *mMoneyField; + +#ifdef TMWSERV_SUPPORT + Status mStatus; +#else bool mOkOther, mOkMe; +#endif }; extern TradeWindow *tradeWindow; diff --git a/src/gui/truetypefont.cpp b/src/gui/truetypefont.cpp index e50fb457..b4b839e9 100644 --- a/src/gui/truetypefont.cpp +++ b/src/gui/truetypefont.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -44,8 +43,7 @@ class TextChunk bool operator==(const TextChunk &chunk) const { - return ( - chunk.text == text && chunk.color == color); + return (chunk.text == text && chunk.color == color); } void generate(TTF_Font *font) @@ -134,12 +132,12 @@ void TrueTypeFont::drawString(gcn::Graphics *graphics, bool found = false; - for (CacheIterator i = cache.begin(); i != cache.end(); i++) + for (CacheIterator i = mCache.begin(); i != mCache.end(); ++i) { if (chunk == (*i)) { // Raise priority: move it to front - cache.splice(cache.begin(), cache, i); + mCache.splice(mCache.begin(), mCache, i); found = true; break; } @@ -148,19 +146,19 @@ void TrueTypeFont::drawString(gcn::Graphics *graphics, // Surface not found if (!found) { - if (cache.size() >= CACHE_SIZE) + if (mCache.size() >= CACHE_SIZE) { - cache.pop_back(); + mCache.pop_back(); } - cache.push_front(chunk); - cache.front().generate(mFont); + mCache.push_front(chunk); + mCache.front().generate(mFont); } - cache.front().img->setAlpha(alpha); - g->drawImage(cache.front().img, x, y); + mCache.front().img->setAlpha(alpha); + g->drawImage(mCache.front().img, x, y); } -int TrueTypeFont::getWidth(const std::string& text) const +int TrueTypeFont::getWidth(const std::string &text) const { int w, h; TTF_SizeUTF8(mFont, text.c_str(), &w, &h); diff --git a/src/gui/truetypefont.h b/src/gui/truetypefont.h index 085aa226..cbe64368 100644 --- a/src/gui/truetypefont.h +++ b/src/gui/truetypefont.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,8 +26,8 @@ #include <string> #include <guichan/font.hpp> -#ifndef __APPLE__ -#include <SDL/SDL_ttf.h> +#ifdef __APPLE__ +#include <SDL_ttf/SDL_ttf.h> #else #include <SDL_ttf.h> #endif @@ -56,20 +55,22 @@ class TrueTypeFont : public gcn::Font */ ~TrueTypeFont(); - virtual int getWidth(const std::string& text) const; + virtual int getWidth(const std::string &text) const; virtual int getHeight() const; /** * @see Font::drawString */ - void drawString(gcn::Graphics* graphics, const std::string& text, int x, int y); + void drawString(gcn::Graphics *graphics, + const std::string &text, + int x, int y); private: TTF_Font *mFont; // Word surfaces cache - std::list<TextChunk> cache; + std::list<TextChunk> mCache; }; #endif diff --git a/src/gui/unregisterdialog.cpp b/src/gui/unregisterdialog.cpp new file mode 100644 index 00000000..7906afc1 --- /dev/null +++ b/src/gui/unregisterdialog.cpp @@ -0,0 +1,141 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "unregisterdialog.h" + +#include <string> +#include <sstream> + +#include <guichan/widgets/label.hpp> + +#include "../main.h" +#include "../log.h" +#include "../logindata.h" + +#include "button.h" +#include "checkbox.h" +#include "register.h" +#include "passwordfield.h" +#include "textfield.h" +#include "ok_dialog.h" + +#include "../utils/gettext.h" +#include "../utils/strprintf.h" + +UnRegisterDialog::UnRegisterDialog(Window *parent, LoginData *loginData): + Window("Unregister", true, parent), + mWrongDataNoticeListener(new WrongDataNoticeListener()), + mLoginData(loginData) +{ + gcn::Label *userLabel = new gcn::Label(strprintf(_("Name: %s"), mLoginData->username.c_str())); + gcn::Label *passwordLabel = new gcn::Label(_("Password:")); + mPasswordField = new PasswordField(mLoginData->password); + mUnRegisterButton = new Button(_("Unregister"), "unregister", this); + mCancelButton = new Button(_("Cancel"), "cancel", this); + + const int width = 210; + const int height = 80; + setContentSize(width, height); + + userLabel->setPosition(5, 5); + userLabel->setWidth(width - 5); + mPasswordField->setPosition( + 68, userLabel->getY() + userLabel->getHeight() + 7); + mPasswordField->setWidth(130); + + passwordLabel->setPosition(5, mPasswordField->getY() + 1); + + mCancelButton->setPosition( + width - 5 - mCancelButton->getWidth(), + height - 5 - mCancelButton->getHeight()); + mUnRegisterButton->setPosition( + mCancelButton->getX() - 5 - mUnRegisterButton->getWidth(), + mCancelButton->getY()); + + add(userLabel); + add(passwordLabel); + add(mPasswordField); + add(mUnRegisterButton); + add(mCancelButton); + + setLocationRelativeTo(getParent()); + setVisible(true); + mPasswordField->requestFocus(); + mPasswordField->setActionEventId("cancel"); +} + +UnRegisterDialog::~UnRegisterDialog() +{ + delete mWrongDataNoticeListener; +} + +void +UnRegisterDialog::action(const gcn::ActionEvent &event) +{ + if (event.getId() == "cancel") + { + scheduleDelete(); + } + else if (event.getId() == "unregister") + { + const std::string username = mLoginData->username.c_str(); + const std::string password = mPasswordField->getText(); + logger->log("UnregisterDialog::unregistered, Username is %s", + username.c_str()); + + std::stringstream errorMsg; + bool error = false; + + // Check password + if (password.length() < LEN_MIN_PASSWORD) + { + // Pass too short + errorMsg << "The password needs to be at least " + << LEN_MIN_PASSWORD + << " characters long."; + error = true; + } + else if (password.length() > LEN_MAX_PASSWORD - 1 ) + { + // Pass too long + errorMsg << "The password needs to be less than " + << LEN_MAX_PASSWORD + << " characters long."; + error = true; + } + + if (error) + { + mWrongDataNoticeListener->setTarget(this->mPasswordField); + + OkDialog *dlg = new OkDialog("Error", errorMsg.str()); + dlg->addActionListener(mWrongDataNoticeListener); + } + else + { + // No errors detected, unregister the new user. + mUnRegisterButton->setEnabled(false); + mLoginData->password = password; + state = STATE_UNREGISTER_ATTEMPT; + scheduleDelete(); + } + } +} diff --git a/src/gui/unregisterdialog.h b/src/gui/unregisterdialog.h new file mode 100644 index 00000000..1e3cc88f --- /dev/null +++ b/src/gui/unregisterdialog.h @@ -0,0 +1,70 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef UNREGISTERDIALOG_H +#define UNREGISTERDIALOG_H + +#include <iosfwd> +#include <guichan/actionlistener.hpp> + +#include "window.h" +#include "../guichanfwd.h" + +class LoginData; +class OkDialog; +class WrongDataNoticeListener; + +/** + * The Unregister dialog. + * + * \ingroup Interface + */ +class UnRegisterDialog : public Window, public gcn::ActionListener { + public: + /** + * Constructor + * + * @see Window::Window + */ + UnRegisterDialog(Window *parent,LoginData *loginData); + + /** + * Destructor + */ + ~UnRegisterDialog(); + + /** + * Called when receiving actions from the widgets. + */ + void action(const gcn::ActionEvent &event); + + private: + gcn::TextField *mPasswordField; + + gcn::Button *mUnRegisterButton; + gcn::Button *mCancelButton; + + WrongDataNoticeListener *mWrongDataNoticeListener; + + LoginData *mLoginData; +}; + +#endif diff --git a/src/gui/updatewindow.cpp b/src/gui/updatewindow.cpp index 927d6eaf..8c903c28 100644 --- a/src/gui/updatewindow.cpp +++ b/src/gui/updatewindow.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -106,7 +105,7 @@ UpdaterWindow::UpdaterWindow(const std::string &updateHost, { mCurlError[0] = 0; - mBrowserBox = new BrowserBox(); + mBrowserBox = new BrowserBox; mScrollArea = new ScrollArea(mBrowserBox); mLabel = new Label(_("Connecting...")); mProgressBar = new ProgressBar(0.0, 310, 20, 168, 116, 31); @@ -130,7 +129,7 @@ UpdaterWindow::UpdaterWindow(const std::string &updateHost, Layout &layout = getLayout(); layout.setRowHeight(0, Layout::AUTO_SET); - setLocationRelativeTo(getParent()); + center(); setVisible(true); mCancelButton->requestFocus(); @@ -184,7 +183,7 @@ void UpdaterWindow::action(const gcn::ActionEvent &event) } else if (event.getId() == "play") { - state = LOADDATA_STATE; + state = STATE_LOADDATA; } } @@ -231,7 +230,7 @@ int UpdaterWindow::updateProgress(void *ptr, uw->mCurrentFile + " (" + toString((int) (progress * 100)) + "%)"); uw->setProgress(progress); - if (state != UPDATE_STATE || uw->mDownloadStatus == UPDATE_ERROR) + if (state != STATE_UPDATE || uw->mDownloadStatus == UPDATE_ERROR) { // If the action was canceled return an error code to stop the mThread return -1; @@ -359,7 +358,7 @@ int UpdaterWindow::downloadThread(void *ptr) // Remove the corrupted file ::remove(outFilename.c_str()); logger->log( - _("Checksum for file %s failed: (%lx/%lx)"), + "Checksum for file %s failed: (%lx/%lx)", uw->mCurrentFile.c_str(), adler, uw->mCurrentChecksum); attempts++; diff --git a/src/gui/updatewindow.h b/src/gui/updatewindow.h index 234a6f57..ace398b4 100644 --- a/src/gui/updatewindow.h +++ b/src/gui/updatewindow.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,6 +31,8 @@ #include "../utils/mutex.h" +#include "../utils/mutex.h" + class BrowserBox; class Button; class ProgressBar; diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp index 56274573..c840e456 100644 --- a/src/gui/viewport.cpp +++ b/src/gui/viewport.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,12 +19,14 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "ministatus.h" #include "popupmenu.h" #include "viewport.h" #include "../beingmanager.h" #include "../configuration.h" #include "../flooritemmanager.h" +#include "../game.h" #include "../graphics.h" #include "../keyboardconfig.h" #include "../localplayer.h" @@ -50,8 +51,13 @@ Viewport::Viewport(): mTileViewX(0), mTileViewY(0), mShowDebugPath(false), + mVisibleNames(false), mPlayerFollowMouse(false), +#ifdef TMWSERV_SUPPORT + mLocalWalkTime(-1) +#else mWalkTime(0) +#endif { setOpaque(false); addMouseListener(this); @@ -60,16 +66,20 @@ Viewport::Viewport(): mScrollRadius = (int) config.getValue("ScrollRadius", 0); mScrollCenterOffsetX = (int) config.getValue("ScrollCenterOffsetX", 0); mScrollCenterOffsetY = (int) config.getValue("ScrollCenterOffsetY", 0); + mVisibleNames = config.getValue("visiblenames", 1); config.addListener("ScrollLaziness", this); config.addListener("ScrollRadius", this); + config.addListener("visiblenames", this); - mPopupMenu = new PopupMenu(); + mPopupMenu = new PopupMenu; } Viewport::~Viewport() { delete mPopupMenu; + + config.removeListener("visiblenames", this); } void Viewport::setMap(Map *map) @@ -77,6 +87,8 @@ void Viewport::setMap(Map *map) mMap = map; } +extern MiniStatusWindow *miniStatusWindow; + void Viewport::draw(gcn::Graphics *gcnGraphics) { static int lastTick = tick_time; @@ -97,6 +109,14 @@ void Viewport::draw(gcn::Graphics *gcnGraphics) } // Calculate viewpoint +#ifdef TMWSERV_SUPPORT + int midTileX = (graphics->getWidth() + mScrollCenterOffsetX) / 2; + int midTileY = (graphics->getHeight() + mScrollCenterOffsetX) / 2; + + const Vector &playerPos = player_node->getPosition(); + const int player_x = (int) playerPos.x - midTileX; + const int player_y = (int) playerPos.y - midTileY; +#else int midTileX = (graphics->getWidth() + mScrollCenterOffsetX) / 32 / 2; int midTileY = (graphics->getHeight() + mScrollCenterOffsetY) / 32 / 2; @@ -104,6 +124,7 @@ void Viewport::draw(gcn::Graphics *gcnGraphics) player_node->getXOffset(); int player_y = (player_node->mY - midTileY) * 32 + player_node->getYOffset(); +#endif if (mScrollLaziness < 1) mScrollLaziness = 1; // Avoids division by zero @@ -146,8 +167,10 @@ void Viewport::draw(gcn::Graphics *gcnGraphics) }; // Don't move camera so that the end of the map is on screen - int viewXmax = (mMap->getWidth() * 32) - graphics->getWidth(); - int viewYmax = (mMap->getHeight() * 32) - graphics->getHeight(); + const int viewXmax = + mMap->getWidth() * mMap->getTileWidth() - graphics->getWidth(); + const int viewYmax = + mMap->getHeight() * mMap->getTileHeight() - graphics->getHeight(); if (mMap) { if (mPixelViewX < 0) @@ -168,30 +191,13 @@ void Viewport::draw(gcn::Graphics *gcnGraphics) { mMap->draw(graphics, (int) mPixelViewX, (int) mPixelViewY); - // Find a path from the player to the mouse, and draw it. This is for - // debug purposes. - if (mShowDebugPath) - { - // Get the current mouse position - SDL_GetMouseState(&mMouseX, &mMouseY); - - int mouseTileX = mMouseX / 32 + mTileViewX; - int mouseTileY = mMouseY / 32 + mTileViewY; - - Path debugPath = mMap->findPath(player_node->mX, player_node->mY, - mouseTileX, mouseTileY); - - graphics->setColor(gcn::Color(255, 0, 0)); - for (PathIterator i = debugPath.begin(); i != debugPath.end(); i++) - { - int squareX = i->x * 32 - (int) mPixelViewX + 12; - int squareY = i->y * 32 - (int) mPixelViewY + 12; - - graphics->fillRectangle(gcn::Rectangle(squareX, squareY, 8, 8)); - graphics->drawText(toString(mMap->getMetaTile(i->x, i->y)->Gcost), - squareX + 4, squareY + 12, - gcn::Graphics::CENTER); - } + if (mShowDebugPath) { + mMap->drawCollision(graphics, + (int) mPixelViewX, + (int) mPixelViewY); +#if 0 + drawDebugPath(graphics); +#endif } } @@ -215,6 +221,9 @@ void Viewport::draw(gcn::Graphics *gcnGraphics) (*i)->drawEmotion(graphics, (int) mPixelViewX, (int) mPixelViewY); } + if (miniStatusWindow) + miniStatusWindow->drawIcons(graphics); + // Draw contained widgets WindowContainer::draw(gcnGraphics); } @@ -229,11 +238,51 @@ void Viewport::logic() Uint8 button = SDL_GetMouseState(&mMouseX, &mMouseY); if (mPlayerFollowMouse && button & SDL_BUTTON(1) && +#ifdef TMWSERV_SUPPORT + get_elapsed_time(mLocalWalkTime) >= walkingMouseDelay) + { + mLocalWalkTime = tick_time; + player_node->setDestination(mMouseX + (int) mPixelViewX, + mMouseY + (int) mPixelViewY); +#else mWalkTime != player_node->mWalkTime) { player_node->setDestination(mMouseX / 32 + mTileViewX, mMouseY / 32 + mTileViewY); mWalkTime = player_node->mWalkTime; +#endif + } +} + +void Viewport::drawDebugPath(Graphics *graphics) +{ + // Get the current mouse position + SDL_GetMouseState(&mMouseX, &mMouseY); + + const int mouseTileX = (mMouseX + (int) mPixelViewX) / 32; + const int mouseTileY = (mMouseY + (int) mPixelViewY) / 32; + const Vector &playerPos = player_node->getPosition(); + + Path debugPath = mMap->findPath( + (int) playerPos.x / 32, + (int) playerPos.y / 32, + mouseTileX, mouseTileY, 0xFF); + + drawPath(graphics, debugPath); +} + +void Viewport::drawPath(Graphics *graphics, const Path &path) +{ + graphics->setColor(gcn::Color(255, 0, 0)); + for (Path::const_iterator i = path.begin(); i != path.end(); ++i) + { + int squareX = i->x * 32 - (int) mPixelViewX + 12; + int squareY = i->y * 32 - (int) mPixelViewY + 12; + + graphics->fillRectangle(gcn::Rectangle(squareX, squareY, 8, 8)); + graphics->drawText( + toString(mMap->getMetaTile(i->x, i->y)->Gcost), + squareX + 4, squareY + 12, gcn::Graphics::CENTER); } } @@ -249,10 +298,10 @@ void Viewport::mousePressed(gcn::MouseEvent &event) mPlayerFollowMouse = false; - const int tilex = event.getX() / 32 + mTileViewX; - const int tiley = event.getY() / 32 + mTileViewY; - const int x = (int)((float) event.getX() + mPixelViewX); - const int y = (int)((float) event.getY() + mPixelViewY); + const int pixelx = event.getX() + (int) mPixelViewX; + const int pixely = event.getY() + (int) mPixelViewY; + const int tilex = pixelx / mMap->getTileWidth(); + const int tiley = pixely / mMap->getTileHeight(); // Right click might open a popup if (event.getButton() == gcn::MouseEvent::RIGHT) @@ -260,7 +309,7 @@ void Viewport::mousePressed(gcn::MouseEvent &event) Being *being; FloorItem *floorItem; - if ((being = beingManager->findBeingByPixel(x, y)) && + if ((being = beingManager->findBeingByPixel(pixelx, pixely)) && being != player_node) { mPopupMenu->showPopup(event.getX(), event.getY(), being); @@ -284,12 +333,13 @@ void Viewport::mousePressed(gcn::MouseEvent &event) // Left click can cause different actions if (event.getButton() == gcn::MouseEvent::LEFT) { - Being *being; FloorItem *item; +#ifdef EATHENA_SUPPORT + Being *being; // Interact with some being // if ((being = beingManager->findBeing(tilex, tiley))) - if ((being = beingManager->findBeingByPixel(x, y))) + if ((being = beingManager->findBeingByPixel(pixelx, pixely))) { switch (being->getType()) { @@ -320,22 +370,38 @@ void Viewport::mousePressed(gcn::MouseEvent &event) } } // Pick up some item - else if ((item = floorItemManager->findByCoordinates(tilex, tiley))) + else +#endif + if ((item = floorItemManager->findByCoordinates(tilex, tiley))) { player_node->pickUp(item); } // Just walk around else { +#ifdef TMWSERV_SUPPORT + // FIXME: REALLY UGLY! + Uint8 *keys = SDL_GetKeyState(NULL); + if (!(keys[SDLK_LSHIFT] || keys[SDLK_RSHIFT]) && + get_elapsed_time(mLocalWalkTime) >= walkingMouseDelay) + { + mLocalWalkTime = tick_time; + player_node->setDestination(event.getX() + (int) mPixelViewX, + event.getY() + (int) mPixelViewY); + } +#else player_node->stopAttack(); player_node->setDestination(tilex, tiley); +#endif mPlayerFollowMouse = true; } } else if (event.getButton() == gcn::MouseEvent::MIDDLE) { // Find the being nearest to the clicked position - Being *target = beingManager->findBeingByPixel(x, y); + Being *target = beingManager->findNearestLivingBeing( + tilex, tiley, + 20, Being::MONSTER); if (target) player_node->setTarget(target); @@ -347,12 +413,22 @@ void Viewport::mouseDragged(gcn::MouseEvent &event) if (!mMap || !player_node) return; +#ifdef TMWSERV_SUPPORT + if (mPlayerFollowMouse + && get_elapsed_time(mLocalWalkTime) >= walkingMouseDelay) + { + mLocalWalkTime = tick_time; + player_node->setDestination(event.getX() + (int) mPixelViewX, + event.getY() + (int) mPixelViewY); + } +#else if (mPlayerFollowMouse && mWalkTime == player_node->mWalkTime) { int destX = event.getX() / 32 + mTileViewX; int destY = event.getY() / 32 + mTileViewY; player_node->setDestination(destX, destY); } +#endif } void Viewport::mouseReleased(gcn::MouseEvent &event) @@ -369,4 +445,20 @@ void Viewport::optionChanged(const std::string &name) { mScrollLaziness = (int) config.getValue("ScrollLaziness", 32); mScrollRadius = (int) config.getValue("ScrollRadius", 32); + + if (name == "visiblenames") { + mVisibleNames = config.getValue("visiblenames", 1); + } +} + +void Viewport::mouseMoved(gcn::MouseEvent &event) +{ + // Check if we are on the map + if (!mMap || !player_node) + return; + + const int tilex = (event.getX() + (int) mPixelViewX) / 32; + const int tiley = (event.getY() + (int) mPixelViewY) / 32; + + mSelectedBeing = beingManager->findBeing(tilex, tiley); } diff --git a/src/gui/viewport.h b/src/gui/viewport.h index 12fdb187..c051e5a2 100644 --- a/src/gui/viewport.h +++ b/src/gui/viewport.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,6 +29,7 @@ #include "../configlistener.h" #include "../position.h" +class Being; class FloorItem; class Graphics; class ImageSet; @@ -37,6 +37,9 @@ class Item; class Map; class PopupMenu; +/** Delay between two mouse calls when dragging mouse and move the player */ +const int walkingMouseDelay = 500; + /** * The viewport on the map. Displays the current map and handles mouse input * and the popup menu. @@ -95,6 +98,11 @@ class Viewport : public WindowContainer, public gcn::MouseListener, void mouseReleased(gcn::MouseEvent &event); /** + * Handles mouse move on map. + */ + void mouseMoved(gcn::MouseEvent &event); + + /** * Shows a popup for an item. * TODO Find some way to get rid of Item here */ @@ -131,6 +139,17 @@ class Viewport : public WindowContainer, public gcn::MouseListener, void scrollBy(float x, float y) { mPixelViewX += x; mPixelViewY += y; } private: + /** + * Finds a path from the player to the mouse, and draws it. This is for + * debug purposes. + */ + void drawDebugPath(Graphics *graphics); + + /** + * Draws the given path. + */ + void drawPath(Graphics *graphics, const Path &path); + Map *mMap; /**< The current map. */ int mScrollRadius; @@ -144,11 +163,17 @@ class Viewport : public WindowContainer, public gcn::MouseListener, int mTileViewX; /**< Current viewpoint in tiles. */ int mTileViewY; /**< Current viewpoint in tiles. */ bool mShowDebugPath; /**< Show a path from player to pointer. */ + bool mVisibleNames; /**< Show target names. */ bool mPlayerFollowMouse; +#ifdef TMWSERV_SUPPORT + int mLocalWalkTime; /**< Timestamp before the next walk can be sent. */ +#else int mWalkTime; +#endif PopupMenu *mPopupMenu; /**< Popup menu. */ + Being *mSelectedBeing; /**< Current selected being. */ }; extern Viewport *viewport; /**< The viewport */ diff --git a/src/gui/widgets/avatar.cpp b/src/gui/widgets/avatar.cpp new file mode 100644 index 00000000..a36c0302 --- /dev/null +++ b/src/gui/widgets/avatar.cpp @@ -0,0 +1,55 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "gui/widgets/avatar.h" + +#include "gui/icon.h" + +#include "resources/image.h" +#include "resources/resourcemanager.h" + +#include <guichan/widgets/label.hpp> + +Avatar::Avatar(const std::string &name): + mName(name) +{ + setSize(110, 12); + mLabel = new gcn::Label(name); + mLabel->setSize(85, 12); + mLabel->setPosition(25, 0); + ResourceManager *resman = ResourceManager::getInstance(); + mStatusOffline = resman->getImage("graphics/gui/circle-gray.png"); + mStatusOnline = resman->getImage("graphics/gui/circle-green.png"); + mStatus = new Icon(mStatusOffline); + mStatus->setSize(25, 12); + mStatus->setPosition(0, 0); +} + +void Avatar::setOnline(bool online) +{ + mStatus->setImage(online ? mStatusOnline : mStatusOffline); +} + +void Avatar::draw(gcn::Graphics *g) +{ + mLabel->draw(g); + mStatus->draw(g); +} diff --git a/src/gui/widgets/avatar.h b/src/gui/widgets/avatar.h new file mode 100644 index 00000000..16972104 --- /dev/null +++ b/src/gui/widgets/avatar.h @@ -0,0 +1,61 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef AVATAR_H +#define AVATAR_H + +#include "guichanfwd.h" + +#include <guichan/widget.hpp> + +#include <string> + +class Image; +class Icon; + +class Avatar : public gcn::Widget +{ +public: + /** + * Constructor. + * @param name Character name + */ + Avatar(const std::string &name); + + /** + * Set the avatar online status. + */ + void setOnline(bool online); + + /** + * Draws the avatar. + */ + void draw(gcn::Graphics *g); + +private: + std::string mName; + Icon *mStatus; + Image *mStatusOnline; + Image *mStatusOffline; + gcn::Label *mLabel; +}; + +#endif // AVATAR_H diff --git a/src/gui/widgets/channeltab.cpp b/src/gui/widgets/channeltab.cpp new file mode 100644 index 00000000..f8c92a6e --- /dev/null +++ b/src/gui/widgets/channeltab.cpp @@ -0,0 +1,70 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <guichan/widgets/label.hpp> + +#include "channeltab.h" + +#include "../browserbox.h" +#include "../chatinput.h" +#include "../itemlinkhandler.h" +#include "../recorder.h" +#include "../scrollarea.h" + +#include "../../beingmanager.h" +#include "../../commandhandler.h" +#include "../../channel.h" +#include "../../configuration.h" +#include "../../game.h" +#include "../../localplayer.h" + +#ifdef TMWSERV_SUPPORT +#include "../../net/tmwserv/chatserver/chatserver.h" +#include "../../net/tmwserv/gameserver/player.h" +#else +#include "../../party.h" +#include "../../net/messageout.h" +#include "../../net/ea/protocol.h" +#endif + +#include "../../resources/iteminfo.h" +#include "../../resources/itemdb.h" + +#include "../../utils/dtor.h" +#include "../../utils/gettext.h" +#include "../../utils/strprintf.h" +#include "../../utils/stringutils.h" + +ChannelTab::ChannelTab(Channel *channel) : ChatTab(channel->getName()), + mChannel(channel) +{ + channel->setTab(this); +} + +ChannelTab::~ChannelTab() +{ +} + +void ChannelTab::sendChat(std::string &msg) { +#ifdef TMSERV_SUPPORT + Net::ChatServer::chat(getId(), msg); +#endif +} diff --git a/src/gui/widgets/channeltab.h b/src/gui/widgets/channeltab.h new file mode 100644 index 00000000..91b4f7c6 --- /dev/null +++ b/src/gui/widgets/channeltab.h @@ -0,0 +1,57 @@ +/* + * The Mana World + * Copyright (C) 2009 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CHANNELTAB_H +#define CHANNELTAB_H + +#include "chattab.h" + +class Channel; + +/** + * A tab for a chat channel. + */ +class ChannelTab : public ChatTab +{ + public: + + Channel *getChannel() { return mChannel; } + + protected: + friend class Channel; + + /** + * Constructor. + */ + ChannelTab(Channel *channel); + + /** + * Destructor. + */ + ~ChannelTab(); + + void sendChat(std::string &msg); + + private: + Channel *mChannel; +}; + +#endif // CHANNELTAB_H diff --git a/src/gui/widgets/chattab.cpp b/src/gui/widgets/chattab.cpp new file mode 100644 index 00000000..120d4e21 --- /dev/null +++ b/src/gui/widgets/chattab.cpp @@ -0,0 +1,324 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <guichan/widgets/label.hpp> + +#include "chattab.h" +#include "layouthelper.h" + +#include "../browserbox.h" +#include "../chatinput.h" +#include "../itemlinkhandler.h" +#include "../recorder.h" +#include "../scrollarea.h" + +#include "../../commandhandler.h" +#include "../../configuration.h" +#include "../../localplayer.h" + +#ifdef TMWSERV_SUPPORT +#include "../../net/tmwserv/chatserver/chatserver.h" +#include "../../net/tmwserv/gameserver/player.h" +#else +#include "../../net/messageout.h" +#include "../../net/ea/protocol.h" +#endif + +#include "../../resources/iteminfo.h" +#include "../../resources/itemdb.h" + +#include "../../utils/strprintf.h" +#include "../../utils/stringutils.h" + +ChatTab::ChatTab(const std::string &name) : Tab() +{ + setCaption(name); + + mTextOutput = new BrowserBox; + mTextOutput->setOpaque(false); + mTextOutput->setMaxRow((int) config.getValue("ChatLogLength", 0)); + mTextOutput->setLinkHandler(chatWindow->mItemLinkHandler); + + mScrollArea = new ScrollArea(mTextOutput); + mScrollArea->setScrollPolicy(gcn::ScrollArea::SHOW_NEVER, + gcn::ScrollArea::SHOW_ALWAYS); + mScrollArea->setScrollAmount(0, 1); + mScrollArea->setOpaque(false); + + chatWindow->addTab(this); +} + +ChatTab::~ChatTab() +{ + chatWindow->removeTab(this); + delete mTextOutput; + delete mScrollArea; +} + +void ChatTab::chatLog(const char* line, int own, bool ignoreRecord) +{ + chatLog(std::string(line), own, ignoreRecord); +} + +void ChatTab::chatLog(std::string line, int own, bool ignoreRecord) +{ + // Trim whitespace + trim(line); + + if (line.empty()) + return; + + CHATLOG tmp; + tmp.own = own; + tmp.nick = ""; + tmp.text = line; + + std::string::size_type pos = line.find(" : "); + if (pos != std::string::npos) + { + tmp.nick = line.substr(0, pos); + tmp.text = line.substr(pos + 3); + } + else + { + // Fix the owner of welcome message. + if (line.substr(0, 7) == "Welcome") + { + own = BY_SERVER; + } + } + + // *implements actions in a backwards compatible way* + if (own == BY_PLAYER && + tmp.text.at(0) == '*' && + tmp.text.at(tmp.text.length()-1) == '*') + { + tmp.text[0] = ' '; + tmp.text.erase(tmp.text.length() - 1); + own = ACT_IS; + } + + std::string lineColor = "##C"; + switch (own) + { + case BY_GM: + if (tmp.nick.empty()) + { + tmp.nick = std::string(_("Global announcement:")); + tmp.nick += " "; + lineColor = "##G"; + } + else + { + tmp.nick = strprintf(_("Global announcement from %s:"), + tmp.nick.c_str()); + tmp.nick += " "; + lineColor = "##1"; // Equiv. to BrowserBox::RED + } + break; + case BY_PLAYER: + tmp.nick += CAT_NORMAL; + lineColor = "##Y"; + break; + case BY_OTHER: + tmp.nick += CAT_NORMAL; + lineColor = "##C"; + break; + case BY_SERVER: + tmp.nick = _("Server:"); + tmp.nick += " "; + tmp.text = line; + lineColor = "##S"; + break; + case BY_CHANNEL: + tmp.nick = ""; + // TODO: Use a predefined color + lineColor = "##2"; // Equiv. to BrowserBox::GREEN + break; +#ifdef EATHENA_SUPPORT + case BY_PARTY: + tmp.nick += CAT_NORMAL; + lineColor = "##P"; + break; +#endif + case ACT_WHISPER: + tmp.nick = strprintf(_("%s whispers:"), tmp.nick.c_str()); + tmp.nick += " "; + lineColor = "##W"; + break; + case ACT_IS: + tmp.nick += CAT_IS; + lineColor = "##I"; + break; + case BY_LOGGER: + tmp.nick = ""; + tmp.text = line; + lineColor = "##L"; + break; + } + + if (tmp.nick == ": ") + { + tmp.nick = ""; + lineColor = "##S"; + } + +#ifdef EATHENA_SUPPORT + if (tmp.nick.empty() && tmp.text.substr(0, 17) == "Visible GM status") + { + player_node->setGM(); + } +#endif + + // Get the current system time + time_t t; + time(&t); + + // Format the time string properly + std::stringstream timeStr; + timeStr << "[" << ((((t / 60) / 60) % 24 < 10) ? "0" : "") + << (int) (((t / 60) / 60) % 24) + << ":" << (((t / 60) % 60 < 10) ? "0" : "") + << (int) ((t / 60) % 60) + << "] "; + + line = lineColor + timeStr.str() + tmp.nick + tmp.text; + + // We look if the Vertical Scroll Bar is set at the max before + // adding a row, otherwise the max will always be a row higher + // at comparison. + if (mScrollArea->getVerticalScrollAmount() >= mScrollArea->getVerticalMaxScroll()) + { + mTextOutput->addRow(line); + mScrollArea->setVerticalScrollAmount(mScrollArea->getVerticalMaxScroll()); + } + else + { + mTextOutput->addRow(line); + } + + mScrollArea->logic(); + chatWindow->mRecorder->record(line.substr(3)); +} + +void ChatTab::chatLog(std::string &nick, std::string &msg) +{ + chatLog(nick + ": " + msg, nick == player_node->getName() ? BY_PLAYER : BY_OTHER, false); +} + +void ChatTab::chatSend(std::string &msg) +{ + trim(msg); + + if (msg.empty()) return; + +#ifdef EATHENA_SUPPORT + // Send party message + if (msg.at(0) == chatWindow->mPartyPrefix) + { + msg.erase(0, 1); + std::size_t length = msg.length() + 1; + + if (length == 0) + { + chatLog(_("Trying to send a blank party message."), BY_SERVER, true); + return; + } + MessageOut outMsg(chatWindow->mNetwork); + + outMsg.writeInt16(CMSG_PARTY_MESSAGE); + outMsg.writeInt16(length + 4); + outMsg.writeString(msg, length); + return; + } +#endif + + // Check for item link + std::string::size_type start = msg.find('['); + while (start != std::string::npos && msg[start+1] != '@') + { + std::string::size_type end = msg.find(']', start); + if (start+1 != end && end != std::string::npos) + { + // Catch multiple embeds and ignore them + // so it doesn't crash the client. + while ((msg.find('[', start + 1) != std::string::npos) && + (msg.find('[', start + 1) < end)) + { + start = msg.find('[', start + 1); + } + + std::string temp = msg.substr(start + 1, end - start - 1); + + toLower(trim(temp)); + + const ItemInfo itemInfo = ItemDB::get(temp); + if (itemInfo.getName() != _("Unknown item")) + { + msg.insert(end, "@@"); + msg.insert(start+1, "|"); + msg.insert(start+1, toString(itemInfo.getId())); + msg.insert(start+1, "@@"); + } + } + start = msg.find('[', start + 1); + } + + + // Prepare ordinary message + if (msg[0] != '/') + { + sendChat(msg); + } + else + { + commandHandler->handleCommand(std::string(msg, 1)); + } +} + +void ChatTab::scroll(int amount) +{ + int range = mScrollArea->getHeight() / 8 * amount; + gcn::Rectangle scr; + scr.y = mScrollArea->getVerticalScrollAmount() + range; + scr.height = abs(range); + mTextOutput->showPart(scr); +} + +void ChatTab::clearText() +{ + mTextOutput->clearRows(); +} + +void ChatTab::sendChat(std::string &msg) { +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::say(msg); +#else + msg = player_node->getName() + " : " + msg; + + MessageOut outMsg(chatWindow->mNetwork); + outMsg.writeInt16(CMSG_CHAT_MESSAGE); + // Added + 1 in order to let eAthena parse admin commands correctly + outMsg.writeInt16(msg.length() + 4 + 1); + outMsg.writeString(msg, msg.length() + 1); + return; +#endif +} diff --git a/src/gui/widgets/chattab.h b/src/gui/widgets/chattab.h new file mode 100644 index 00000000..a478abeb --- /dev/null +++ b/src/gui/widgets/chattab.h @@ -0,0 +1,118 @@ +/* + * The Mana World + * Copyright (C) 2009 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CHATTAB_H +#define CHATTAB_H + +#include <guichan/widgets/container.hpp> + +#include "tab.h" + +#include "../chat.h" + +class BrowserBox; +class Recorder; +class ScrollArea; + +enum +{ + BY_GM, +#ifdef EATHENA_SUPPORT + BY_PARTY, +#endif + BY_PLAYER, + BY_OTHER, + BY_SERVER, + BY_CHANNEL, + ACT_WHISPER, // getting whispered at + ACT_IS, // equivalent to "/me" on IRC + BY_LOGGER +}; + +/** + * A tab for the chat window. This is special to ease chat handling. + */ +class ChatTab : public Tab +{ + public: + /** + * Constructor. + */ + ChatTab(const std::string &name); + + /** + * Destructor. + */ + ~ChatTab(); + + /** + * Adds a line of text to our message list. Parameters: + * + * @param line Text message. + * @param own Type of message (usually the owner-type). + * @param channelName which channel to send the message to. + * @param ignoreRecord should this not be recorded? + */ + void chatLog(std::string line, int own = BY_SERVER, bool ignoreRecord = false); + void chatLog(const char* line, int own = BY_SERVER, bool ignoreRecord = false); + + /** + * Adds the text to the message list + * + * @param msg The message text which is to be sent. + * + */ + void chatLog(std::string &nick, std::string &msg); + + /** + * Determines whether the message is a command or message, then + * sends the given message to the game server to be said, or to the + * command handler + * + * @param msg The message text which is to be sent. + * + */ + void chatSend(std::string &msg); + + /** + * Scrolls the chat window + * + * @param amount direction and amount to scroll. Negative numbers scroll + * up, positive numbers scroll down. The absolute amount indicates the + * amount of 1/8ths of chat window real estate that should be scrolled. + */ + void scroll(int amount); + + void clearText(); + + protected: + friend class ChatWindow; + + virtual void sendChat(std::string &msg); + + ScrollArea *mScrollArea; + BrowserBox *mTextOutput; + //Recorder *mRecorder; +}; + +extern ChatTab *localChatTab; + +#endif // CHATTAB_H diff --git a/src/gui/widgets/dropdown.cpp b/src/gui/widgets/dropdown.cpp index 21fee368..21378772 100644 --- a/src/gui/widgets/dropdown.cpp +++ b/src/gui/widgets/dropdown.cpp @@ -1,9 +1,8 @@ /* - * Aethyra - * Copyright (C) 2008 The Mana World Development Team + * The Mana World + * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,28 +19,28 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <algorithm> +#include "gui/widgets/dropdown.h" -#include "dropdown.h" +#include "gui/listbox.h" +#include "gui/palette.h" +#include "gui/scrollarea.h" -#include "../listbox.h" -#include "../palette.h" -#include "../scrollarea.h" +#include "configuration.h" +#include "graphics.h" -#include "../../configuration.h" -#include "../../graphics.h" +#include "resources/image.h" +#include "resources/resourcemanager.h" -#include "../../resources/image.h" -#include "../../resources/resourcemanager.h" +#include "utils/dtor.h" -#include "../../utils/dtor.h" +#include <algorithm> int DropDown::instances = 0; Image *DropDown::buttons[2][2]; ImageRect DropDown::skin; float DropDown::mAlpha = config.getValue("guialpha", 0.8); -DropDown::DropDown(gcn::ListModel *listModel, gcn::ScrollArea *scrollArea, +DropDown::DropDown(gcn::ListModel *listModel, gcn::ScrollArea *scrollArea, gcn::ListBox *listBox, bool opacity): gcn::DropDown::DropDown(listModel, scrollArea, listBox), mOpaque(opacity) diff --git a/src/gui/widgets/dropdown.h b/src/gui/widgets/dropdown.h index 191740d9..601d55c8 100644 --- a/src/gui/widgets/dropdown.h +++ b/src/gui/widgets/dropdown.h @@ -1,9 +1,8 @@ /* - * Aethyra - * Copyright (C) 2008 The Mana World Development Team + * The Mana World + * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,15 +27,15 @@ class Image; class ImageRect; - /** - * A drop down box from which you can select different values. It is one of - * the most complicated Widgets you will find in Guichan. For drawing the - * DroppedDown box it uses one ScrollArea and one ListBox. It also uses an - * internal FocusHandler to handle the focus of the internal ScollArea and - * ListBox. DropDown uses a ListModel to handle the list. To be able to use - * DropDown you must give DropDown an implemented ListModel which represents - * your list. - */ +/** + * A drop down box from which you can select different values. It is one of + * the most complicated Widgets you will find in Guichan. For drawing the + * DroppedDown box it uses one ScrollArea and one ListBox. It also uses an + * internal FocusHandler to handle the focus of the internal ScollArea and + * ListBox. DropDown uses a ListModel to handle the list. To be able to use + * DropDown you must give DropDown an implemented ListModel which represents + * your list. + */ class DropDown : public gcn::DropDown { public: @@ -58,9 +57,9 @@ class DropDown : public gcn::DropDown */ ~DropDown(); - void draw(gcn::Graphics* graphics); + void draw(gcn::Graphics *graphics); - void drawFrame(gcn::Graphics* graphics); + void drawFrame(gcn::Graphics *graphics); /** * Sets the widget to be opaque, that is sets the widget to display its @@ -68,7 +67,7 @@ class DropDown : public gcn::DropDown * * @param opaque True if the widget should be opaque, false otherwise. */ - void setOpaque(bool opaque) {mOpaque = opaque;} + void setOpaque(bool opaque) { mOpaque = opaque; } /** * Checks if the widget is opaque, that is if the widget area displays @@ -76,7 +75,7 @@ class DropDown : public gcn::DropDown * * @return True if the widget is opaque, false otherwise. */ - bool isOpaque() const {return mOpaque;} + bool isOpaque() const { return mOpaque; } protected: diff --git a/src/gui/widgets/layout.cpp b/src/gui/widgets/layout.cpp index 7fab91d7..9ca82fa3 100644 --- a/src/gui/widgets/layout.cpp +++ b/src/gui/widgets/layout.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,9 +19,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <cassert> +#include "gui/widgets/layout.h" -#include "layout.h" +#include <cassert> ContainerPlacer ContainerPlacer::at(int x, int y) { diff --git a/src/gui/widgets/layout.h b/src/gui/widgets/layout.h index 04b75ca5..b9359e91 100644 --- a/src/gui/widgets/layout.h +++ b/src/gui/widgets/layout.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,10 +22,10 @@ #ifndef WIDGET_LAYOUT_H #define WIDGET_LAYOUT_H -#include <vector> - #include <guichan/widgets/container.hpp> +#include <vector> + class LayoutCell; /** diff --git a/src/gui/widgets/layouthelper.cpp b/src/gui/widgets/layouthelper.cpp index ed002f99..820d2d82 100644 --- a/src/gui/widgets/layouthelper.cpp +++ b/src/gui/widgets/layouthelper.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2009 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,7 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "layouthelper.h" +#include "gui/widgets/layouthelper.h" LayoutHelper::LayoutHelper(gcn::Container *container): mContainer(container) diff --git a/src/gui/widgets/layouthelper.h b/src/gui/widgets/layouthelper.h index 1125d209..ddcc6b26 100644 --- a/src/gui/widgets/layouthelper.h +++ b/src/gui/widgets/layouthelper.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2009 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,7 +22,7 @@ #ifndef LAYOUTHELPER_H #define LAYOUTHELPER_H -#include "layout.h" +#include "gui/widgets/layout.h" #include <guichan/widgetlistener.hpp> diff --git a/src/gui/widgets/resizegrip.cpp b/src/gui/widgets/resizegrip.cpp index 3dbf6d1a..1bb33e15 100644 --- a/src/gui/widgets/resizegrip.cpp +++ b/src/gui/widgets/resizegrip.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,15 +19,15 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <guichan/graphics.hpp> +#include "gui/widgets/resizegrip.h" -#include "resizegrip.h" +#include "configuration.h" +#include "graphics.h" -#include "../../configuration.h" -#include "../../graphics.h" +#include "resources/image.h" +#include "resources/resourcemanager.h" -#include "../../resources/image.h" -#include "../../resources/resourcemanager.h" +#include <guichan/graphics.hpp> Image *ResizeGrip::gripImage = 0; int ResizeGrip::mInstances = 0; diff --git a/src/gui/widgets/resizegrip.h b/src/gui/widgets/resizegrip.h index 83af24da..40a40a0f 100644 --- a/src/gui/widgets/resizegrip.h +++ b/src/gui/widgets/resizegrip.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/widgets/tab.cpp b/src/gui/widgets/tab.cpp index 942ad3ef..af31822e 100644 --- a/src/gui/widgets/tab.cpp +++ b/src/gui/widgets/tab.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,20 +19,21 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <guichan/widgets/label.hpp> +#include "gui/widgets/tab.h" + +#include "gui/widgets/tabbedarea.h" -#include "tab.h" -#include "tabbedarea.h" +#include "gui/palette.h" -#include "../palette.h" +#include "configuration.h" +#include "graphics.h" -#include "../../configuration.h" -#include "../../graphics.h" +#include "resources/image.h" +#include "resources/resourcemanager.h" -#include "../../resources/image.h" -#include "../../resources/resourcemanager.h" +#include "utils/dtor.h" -#include "../../utils/dtor.h" +#include <guichan/widgets/label.hpp> int Tab::mInstances = 0; float Tab::mAlpha = config.getValue("guialpha", 0.8); diff --git a/src/gui/widgets/tab.h b/src/gui/widgets/tab.h index 4b331d66..3af4e2bf 100644 --- a/src/gui/widgets/tab.h +++ b/src/gui/widgets/tab.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/widgets/tabbedarea.cpp b/src/gui/widgets/tabbedarea.cpp index 2c454b69..8e93d394 100644 --- a/src/gui/widgets/tabbedarea.cpp +++ b/src/gui/widgets/tabbedarea.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,8 +19,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "tabbedarea.h" -#include "tab.h" +#include "gui/widgets/tabbedarea.h" +#include "gui/widgets/tab.h" #include <guichan/widgets/container.hpp> @@ -72,7 +71,7 @@ gcn::Widget* TabbedArea::getWidget(const std::string &name) void TabbedArea::addTab(const std::string &caption, gcn::Widget *widget) { - Tab* tab = new Tab(); + Tab* tab = new Tab; tab->setCaption(caption); mTabsToDelete.push_back(tab); diff --git a/src/gui/widgets/tabbedarea.h b/src/gui/widgets/tabbedarea.h index 863ff79e..dffbd36b 100644 --- a/src/gui/widgets/tabbedarea.h +++ b/src/gui/widgets/tabbedarea.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,6 +23,7 @@ #define TABBEDAREA_H #include <guichan/widget.hpp> +#include <guichan/widgets/container.hpp> #include <guichan/widgets/tabbedarea.hpp> #include <string> @@ -85,9 +85,10 @@ class TabbedArea : public gcn::TabbedArea */ void logic(); + int getContainerHeight() { return mWidgetContainer->getHeight(); } + private: typedef std::vector< std::pair<gcn::Tab*, gcn::Widget*> > TabContainer; }; #endif - diff --git a/src/gui/widgets/textpreview.cpp b/src/gui/widgets/textpreview.cpp index 5408eebe..d0bba285 100644 --- a/src/gui/widgets/textpreview.cpp +++ b/src/gui/widgets/textpreview.cpp @@ -2,7 +2,7 @@ * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on code from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,22 +19,22 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <typeinfo> +#include "gui/widgets/textpreview.h" -#include "textpreview.h" +#include "gui/gui.h" +#include "gui/palette.h" +#include "gui/textrenderer.h" +#include "gui/truetypefont.h" -#include "../gui.h" -#include "../palette.h" -#include "../textrenderer.h" -#include "../truetypefont.h" +#include "configuration.h" -#include "../../configuration.h" +#include <typeinfo> float TextPreview::mAlpha = config.getValue("guialpha", 0.8); -TextPreview::TextPreview(const std::string* text) +TextPreview::TextPreview(const std::string &text): + mText(text) { - mText = text; mTextAlpha = false; mFont = gui->getFont(); mTextColor = &guiPalette->getColor(Palette::TEXT); @@ -65,7 +65,7 @@ void TextPreview::draw(gcn::Graphics* graphics) if (mTextBGColor && typeid(*mFont) == typeid(TrueTypeFont)) { TrueTypeFont *font = static_cast<TrueTypeFont*>(mFont); - int x = font->getWidth(*mText) + 1 + 2 * ((mOutline || mShadow) ? 1 :0); + int x = font->getWidth(mText) + 1 + 2 * ((mOutline || mShadow) ? 1 :0); int y = font->getHeight() + 1 + 2 * ((mOutline || mShadow) ? 1 : 0); graphics->setColor(gcn::Color((int) mTextBGColor->r, (int) mTextBGColor->g, @@ -74,7 +74,7 @@ void TextPreview::draw(gcn::Graphics* graphics) graphics->fillRectangle(gcn::Rectangle(1, 1, x, y)); } - TextRenderer::renderText(graphics, *mText, 2, 2, gcn::Graphics::LEFT, + TextRenderer::renderText(graphics, mText, 2, 2, gcn::Graphics::LEFT, gcn::Color(mTextColor->r, mTextColor->g, mTextColor->b, alpha), mFont, mOutline, mShadow, alpha); diff --git a/src/gui/widgets/textpreview.h b/src/gui/widgets/textpreview.h index 8e116262..0ca343bf 100644 --- a/src/gui/widgets/textpreview.h +++ b/src/gui/widgets/textpreview.h @@ -2,7 +2,7 @@ * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on code from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,14 +32,14 @@ class TextPreview : public gcn::Widget { public: - TextPreview(const std::string* text); + TextPreview(const std::string &text); /** * Sets the color the text is printed in. * * @param color the color to set */ - inline void setTextColor(const gcn::Color* color) + inline void setTextColor(const gcn::Color *color) { mTextColor = color; } @@ -49,7 +49,7 @@ class TextPreview : public gcn::Widget * * @param alpha whether to use alpha values for the text or not */ - inline void useTextAlpha(bool alpha) + inline void useTextAlpha(bool alpha) { mTextAlpha = alpha; } @@ -60,7 +60,7 @@ class TextPreview : public gcn::Widget * * @param color the color to set */ - inline void setTextBGColor(const gcn::Color* color) + inline void setTextBGColor(const gcn::Color *color) { mTextBGColor = color; } @@ -70,7 +70,7 @@ class TextPreview : public gcn::Widget * * @param color the color to set */ - inline void setBGColor(const gcn::Color* color) + inline void setBGColor(const gcn::Color *color) { mBGColor = color; } @@ -124,14 +124,14 @@ class TextPreview : public gcn::Widget * Gets opacity for this widget (whether or not the background color * is shown below the widget) */ - bool isOpaque() { return mOpaque; } + bool isOpaque() const { return mOpaque; } private: gcn::Font *mFont; - const std::string* mText; - const gcn::Color* mTextColor; - const gcn::Color* mBGColor; - const gcn::Color* mTextBGColor; + std::string mText; + const gcn::Color *mTextColor; + const gcn::Color *mBGColor; + const gcn::Color *mTextBGColor; static float mAlpha; bool mTextAlpha; bool mOpaque; diff --git a/src/gui/widgets/whispertab.cpp b/src/gui/widgets/whispertab.cpp new file mode 100644 index 00000000..ba469c00 --- /dev/null +++ b/src/gui/widgets/whispertab.cpp @@ -0,0 +1,78 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <guichan/widgets/label.hpp> + +#include "whispertab.h" + +#include "../../beingmanager.h" +#include "../../commandhandler.h" +#include "../../channel.h" +#include "../../configuration.h" +#include "../../game.h" +#include "../../localplayer.h" + +#ifdef TMWSERV_SUPPORT +#include "../../net/tmwserv/chatserver/chatserver.h" +#include "../../net/tmwserv/gameserver/player.h" +#else +#include "../../party.h" +#include "../../net/messageout.h" +#include "../../net/ea/protocol.h" +#endif + +#include "../../resources/iteminfo.h" +#include "../../resources/itemdb.h" + +#include "../../utils/dtor.h" +#include "../../utils/gettext.h" +#include "../../utils/strprintf.h" +#include "../../utils/stringutils.h" + +WhisperTab::WhisperTab(const std::string &nick) : + ChatTab(nick), + mNick(nick) +{ +} + +WhisperTab::~WhisperTab() +{ +} + +void WhisperTab::sendChat(std::string &msg) { + if (msg.length() == 0) { + chatLog(_("Cannot send empty chat!"), BY_SERVER, false); + return; + } + +#ifdef TMWSERV_SUPPORT + Net::ChatServer::privMsg(mNick, msg); +#else + MessageOut outMsg(chatWindow->mNetwork); + outMsg.writeInt16(CMSG_CHAT_WHISPER); + outMsg.writeInt16(msg.length() + 28); + outMsg.writeString(mNick, 24); + outMsg.writeString(msg, msg.length()); +#endif + + chatLog(strprintf(_("%s: %s"), player_node->getName().c_str(), + msg.c_str()), BY_PLAYER, false); +} diff --git a/src/gui/widgets/whispertab.h b/src/gui/widgets/whispertab.h new file mode 100644 index 00000000..e3ebf0f3 --- /dev/null +++ b/src/gui/widgets/whispertab.h @@ -0,0 +1,55 @@ +/* + * The Mana World + * Copyright (C) 2009 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef WHISPERTAB_H +#define WHISPERTAB_H + +#include "chattab.h" + +class Channel; + +/** + * A tab for whispers from a single player. + */ +class WhisperTab : public ChatTab +{ + public: + const std::string &getNick() const { return mNick; } + + protected: + friend class ChatWindow; + + /** + * Constructor. + * + * @param nick the name of the player this tab is whispering to + */ + WhisperTab(const std::string &nick); + + ~WhisperTab(); + + void sendChat(std::string &msg); + + private: + std::string mNick; +}; + +#endif // CHANNELTAB_H diff --git a/src/gui/window.cpp b/src/gui/window.cpp index 476dcd7e..3bc03fb8 100644 --- a/src/gui/window.cpp +++ b/src/gui/window.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,7 +38,7 @@ int Window::instances = 0; int Window::mouseResize = 0; -Window::Window(const std::string& caption, bool modal, Window *parent, const std::string& skin): +Window::Window(const std::string &caption, bool modal, Window *parent, const std::string &skin): gcn::Window(caption), mGrip(0), mParent(parent), @@ -248,7 +247,7 @@ void Window::setResizable(bool r) if (r) { - mGrip = new ResizeGrip(); + mGrip = new ResizeGrip; mGrip->setX(getWidth() - mGrip->getWidth() - getChildrenArea().x); mGrip->setY(getHeight() - mGrip->getHeight() - getChildrenArea().y); add(mGrip); @@ -282,7 +281,7 @@ void Window::setCloseButton(bool flag) mCloseButton = flag; } -bool Window::isResizable() +bool Window::isResizable() const { return mGrip; } @@ -546,6 +545,14 @@ void Window::setDefaultSize(int defaultX, int defaultY, mDefaultHeight = defaultHeight; } +void Window::setDefaultSize() +{ + mDefaultX = getX(); + mDefaultY = getY(); + mDefaultWidth = getWidth(); + mDefaultHeight = getHeight(); +} + void Window::setDefaultSize(int defaultWidth, int defaultHeight, ImageRect::ImagePosition position, int offsetX, int offsetY) @@ -666,3 +673,7 @@ void Window::reflowLayout(int w, int h) setContentSize(w, h); } +void Window::center() +{ + setLocationRelativeTo(getParent()); +} diff --git a/src/gui/window.h b/src/gui/window.h index 8907ead4..c41a4221 100644 --- a/src/gui/window.h +++ b/src/gui/window.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,7 +29,6 @@ #include "../graphics.h" #include "../guichanfwd.h" -class GCContainer; class ContainerPlacer; class Layout; class LayoutCell; @@ -111,46 +109,34 @@ class Window : public gcn::Window, gcn::WidgetListener /** * Returns whether the window can be resized. */ - bool isResizable(); + bool isResizable() const; /** * Sets the minimum width of the window. */ void setMinWidth(int width); + int getMinWidth() const { return mMinWinWidth; } + /** * Sets the minimum height of the window. */ void setMinHeight(int height); + int getMinHeight() const { return mMinWinHeight; } + /** * Sets the maximum width of the window. */ void setMaxWidth(int width); + int getMaxWidth() const { return mMaxWinWidth; } + /** * Sets the minimum height of the window. */ void setMaxHeight(int height); - /** - * Gets the minimum width of the window. - */ - int getMinWidth() const { return mMinWinWidth; } - - /** - * Gets the minimum height of the window. - */ - int getMinHeight() const { return mMinWinHeight; } - - /** - * Gets the maximum width of the window. - */ - int getMaxWidth() const { return mMaxWinWidth; } - - /** - * Gets the minimum height of the window. - */ int getMaxHeight() const { return mMaxWinHeight; } /** @@ -226,7 +212,7 @@ class Window : public gcn::Window, gcn::WidgetListener /** * Returns the name of the window. This is not the window title. */ - const std::string& getWindowName() { return mWindowName; } + const std::string &getWindowName() const { return mWindowName; } /** * Reads the position (and the size for resizable windows) in the @@ -251,6 +237,11 @@ class Window : public gcn::Window, gcn::WidgetListener int defaultWidth, int defaultHeight); /** + * Set the default win pos and size tot he current ones. + */ + void setDefaultSize(); + + /** * Set the default win pos and size. * (which can be different of the actual ones.) * This version of setDefaultSize sets the window's position based @@ -292,6 +283,11 @@ class Window : public gcn::Window, gcn::WidgetListener ContainerPlacer getPlacer(int x, int y); /** + * Positions the window in the center of it's parent. + */ + void center(); + + /** * Overrideable functionality for when the window is to close. This * allows for class implementations to clean up or do certain actions * on window close they couldn't do otherwise. @@ -321,7 +317,6 @@ class Window : public gcn::Window, gcn::WidgetListener */ int getResizeHandles(gcn::MouseEvent &event); - GCContainer *mChrome; /**< Contained container */ ResizeGrip *mGrip; /**< Resize grip */ Window *mParent; /**< The parent window */ Layout *mLayout; /**< Layout handler */ diff --git a/src/gui/windowcontainer.cpp b/src/gui/windowcontainer.cpp index ad86a253..eda739b9 100644 --- a/src/gui/windowcontainer.cpp +++ b/src/gui/windowcontainer.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/gui/windowcontainer.h b/src/gui/windowcontainer.h index 23b221cf..bc918184 100644 --- a/src/gui/windowcontainer.h +++ b/src/gui/windowcontainer.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/guichanfwd.h b/src/guichanfwd.h index 8859780f..4863421c 100644 --- a/src/guichanfwd.h +++ b/src/guichanfwd.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/guild.cpp b/src/guild.cpp new file mode 100644 index 00000000..62c6e3f4 --- /dev/null +++ b/src/guild.cpp @@ -0,0 +1,69 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "guild.h" + +Guild::Guild(short id, short rights): + mId(id), + mCanInviteUsers(false) +{ + // to invite, rights must be greater than 0 + if (rights > 0) + mCanInviteUsers = true; +} + +void Guild::addMember(const std::string &name) +{ + if (!isMember(name)) + { + mMembers.push_back(name); + } +} + +void Guild::removeMember(const std::string &name) +{ + std::vector<std::string>::iterator itr = mMembers.begin(), + itr_end = mMembers.end(); + while(itr != itr_end) + { + if((*itr) == name) + { + mMembers.erase(itr); + } + ++itr; + } +} + +bool Guild::isMember(const std::string &name) +{ + std::vector<std::string>::iterator itr = mMembers.begin(), + itr_end = mMembers.end(); + while(itr != itr_end) + { + if((*itr) == name) + { + return true; + } + ++itr; + } + + return false; +} diff --git a/src/guild.h b/src/guild.h new file mode 100644 index 00000000..9ae16f0b --- /dev/null +++ b/src/guild.h @@ -0,0 +1,108 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef GUILD_H +#define GUILD_H + +#include <guichan/listmodel.hpp> + +#include <string> +#include <vector> + +class Guild : public gcn::ListModel +{ +public: + /** + * Constructor with guild id passed to it + */ + Guild(short id, short rights); + + /** + * Set the guild's name + */ + void setName(const std::string &name) + { + mName = name; + } + + /** + * Add member to the list + */ + void addMember(const std::string &name); + + /** + * Get the name of the guild + * @return returns name of the guild + */ + const std::string &getName() const + { + return mName; + } + + /** + * Get the id of the guild + * @return Returns the id of the guild + */ + short getId() const + { + return mId; + } + + /** + * Remove member from the guild + */ + void removeMember(const std::string &name); + + /** + * Get size of members list + * @return Returns the number of members in the guild. + */ + int getNumberOfElements() { + return mMembers.size(); + } + + /** + * Get member at i + * @return Returns the name of member. + */ + std::string getElementAt(int i) { + return mMembers[i]; + } + + /** + * Get whether user can invite users to this guild + * @return Returns true if user can invite users + */ + bool getInviteRights() + { + return mCanInviteUsers; + } + + bool isMember(const std::string &name); + +private: + std::string mName; + short mId; + std::vector<std::string> mMembers; + bool mCanInviteUsers; +}; + +#endif diff --git a/src/imageparticle.cpp b/src/imageparticle.cpp index d2c955ee..557b3553 100644 --- a/src/imageparticle.cpp +++ b/src/imageparticle.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/imageparticle.h b/src/imageparticle.h index 3465b3e0..317b17ea 100644 --- a/src/imageparticle.h +++ b/src/imageparticle.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/inventory.cpp b/src/inventory.cpp index 3d1a4786..59f51e39 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,7 +29,11 @@ struct SlotUsed : public std::unary_function<Item*, bool> { bool operator()(const Item *item) const { +#ifdef TMWSERV_SUPPORT + return item && item->getId() && item->getQuantity(); +#else return item && item->getId() != -1 && item->getQuantity() > 0; +#endif } }; @@ -50,15 +53,19 @@ Inventory::~Inventory() delete [] mItems; } -Item* Inventory::getItem(int index) const +Item *Inventory::getItem(int index) const { +#ifdef TMWSERV_SUPPORT + if (index < 0 || index >= mSize) +#else if (index < 0 || index >= mSize || !mItems[index] || mItems[index]->getQuantity() <= 0) +#endif return 0; return mItems[index]; } -Item* Inventory::findItem(int itemId) const +Item *Inventory::findItem(int itemId) const { for (int i = 0; i < mSize; i++) if (mItems[i] && mItems[i]->getId() == itemId) diff --git a/src/inventory.h b/src/inventory.h index e23f7657..008b7ec4 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,8 +24,12 @@ class Item; +#ifdef EATHENA_SUPPORT #define INVENTORY_SIZE 102 #define STORAGE_SIZE 301 +#else +#define INVENTORY_SIZE 50 +#endif class Inventory { @@ -34,7 +37,7 @@ class Inventory /** * Constructor. */ - Inventory(int size, int offset); + Inventory(int size, int offset = 0); /** * Destructor. @@ -62,12 +65,12 @@ class Inventory /** * Adds a new item in a free slot. */ - void addItem(int id, int quantity, bool equipment); + void addItem(int id, int quantity, bool equipment = false); /** * Sets the item at the given position. */ - void setItem(int index, int id, int quantity, bool equipment); + void setItem(int index, int id, int quantity, bool equipment = false); /** * Remove a item from the inventory. @@ -109,6 +112,7 @@ class Inventory */ int getInventorySize() const; + static const int NO_SLOT_INDEX = -1; /**< Slot has no index. */ protected: Item **mItems; /**< The holder of items */ int mSize; /**< The max number of inventory items */ diff --git a/src/item.cpp b/src/item.cpp index 2125756a..6f04b879 100644 --- a/src/item.cpp +++ b/src/item.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,13 +22,20 @@ #include "item.h" #include "resources/image.h" +#include "resources/iteminfo.h" #include "resources/resourcemanager.h" -Item::Item(int id, int quantity, bool equipment, bool equipped): +Item::Item(int id, int quantity, bool equipment +#ifdef EATHENA_SUPPORT + , bool equipped +#endif + ): mImage(0), mQuantity(quantity), - mEquipment(equipment), - mEquipped(equipped) + mEquipment(equipment) +#ifdef EATHENA_SUPPORT + , mEquipped(equipped) +#endif { setId(id); } @@ -44,6 +50,11 @@ void Item::setId(int id) { mId = id; +#ifdef TMWSERV_SUPPORT + // Types 0 and 1 are not equippable items. + mEquipment = id && getInfo().getType() >= 2; +#endif + // Load the associated image if (mImage) mImage->decRef(); @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,8 +35,11 @@ class Item /** * Constructor. */ - Item(int id = -1, int quantity = 0, - bool equipment = false, bool equipped = false); + Item(int id = -1, int quantity = 0, bool equipment = false +#ifdef EATHENA_SUPPORT + , bool equipped = false +#endif + ); /** * Destructor. @@ -84,6 +86,7 @@ class Item */ bool isEquipment() const { return mEquipment; } +#ifdef EATHENA_SUPPORT /** * Sets whether this item is equipped. */ @@ -93,6 +96,7 @@ class Item * Returns whether this item is equipped. */ bool isEquipped() const { return mEquipped; } +#endif /** * Sets the inventory index of this item. @@ -114,7 +118,9 @@ class Item Image *mImage; /**< Item image. */ int mQuantity; /**< Number of items. */ bool mEquipment; /**< Item is equipment. */ +#ifdef EATHENA_SUPPORT bool mEquipped; /**< Item is equipped. */ +#endif int mInvIndex; /**< Inventory index. */ }; diff --git a/src/itemshortcut.cpp b/src/itemshortcut.cpp index 0627ccda..2dea8c56 100644 --- a/src/itemshortcut.cpp +++ b/src/itemshortcut.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -73,14 +72,20 @@ void ItemShortcut::useItem(int index) { if (item->isEquipment()) { +#ifdef EATHENA_SUPPORT if (item->isEquipped()) player_node->unequipItem(item); else +#endif player_node->equipItem(item); } else { +#ifdef TMWSERV_SUPPORT + player_node->useItem(item->getInvIndex()); +#else player_node->useItem(item); +#endif } } } diff --git a/src/itemshortcut.h b/src/itemshortcut.h index 4203f600..95e17f44 100644 --- a/src/itemshortcut.h +++ b/src/itemshortcut.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/joystick.cpp b/src/joystick.cpp index 18a09207..b72c9103 100644 --- a/src/joystick.cpp +++ b/src/joystick.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,12 +19,12 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <cassert> - #include "configuration.h" #include "joystick.h" #include "log.h" +#include <cassert> + int Joystick::joystickCount = 0; void Joystick::init() diff --git a/src/joystick.h b/src/joystick.h index 67b5ab70..4c5390c2 100644 --- a/src/joystick.h +++ b/src/joystick.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/keyboardconfig.cpp b/src/keyboardconfig.cpp index 8ed23c65..06ce4ac7 100644 --- a/src/keyboardconfig.cpp +++ b/src/keyboardconfig.cpp @@ -1,9 +1,8 @@ /* - * Aethyra - * Copyright (C) 2007 The Mana World Development Team + * Custom keyboard shortcuts configuration + * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/keyboardconfig.h b/src/keyboardconfig.h index 61d7887d..f7750b30 100644 --- a/src/keyboardconfig.h +++ b/src/keyboardconfig.h @@ -1,9 +1,8 @@ /* - * Aethyra - * Copyright (C) 2007 The Mana World Development Team + * Custom keyboard shortcuts configuration + * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/localplayer.cpp b/src/localplayer.cpp index f72aa59a..4dd8f05f 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,50 +33,95 @@ #include "particle.h" #include "simpleanimation.h" #include "sound.h" +#include "statuseffect.h" #include "text.h" #include "gui/gui.h" +#include "gui/ministatus.h" #include "gui/palette.h" +#ifdef EATHENA_SUPPORT #include "gui/storagewindow.h" +#endif +#ifdef TMWSERV_SUPPORT +#include "effectmanager.h" +#include "guild.h" + +#include "net/tmwserv/gameserver/player.h" +#include "net/tmwserv/chatserver/guild.h" +#include "net/tmwserv/chatserver/party.h" +#endif + +#ifdef EATHENA_SUPPORT #include "net/messageout.h" -#include "net/protocol.h" +#include "net/ea/protocol.h" +#endif #include "resources/animation.h" #include "resources/imageset.h" +#include "resources/iteminfo.h" #include "resources/resourcemanager.h" +#include "utils/gettext.h" #include "utils/stringutils.h" +#ifdef TMWSERV_SUPPORT +const short walkingKeyboardDelay = 100; +#endif + LocalPlayer *player_node = NULL; static const int NAME_X_OFFSET = 15; static const int NAME_Y_OFFSET = 30; +#ifdef TMWSERV_SUPPORT +LocalPlayer::LocalPlayer(): + Player(65535, 0, NULL), + mEquipment(new Equipment), + mAttributeBase(NB_CHARACTER_ATTRIBUTES, -1), + mAttributeEffective(NB_CHARACTER_ATTRIBUTES, -1), + mExpCurrent(CHAR_SKILL_NB, -1), + mExpNext(CHAR_SKILL_NB, -1), + mCharacterPoints(-1), + mCorrectionPoints(-1), + mLevelProgress(0), +#else LocalPlayer::LocalPlayer(Uint32 id, Uint16 job, Map *map): Player(id, job, map), mCharId(0), mJobXp(0), - mLevel(0), mJobLevel(0), mXpForNextLevel(0), mJobXpForNextLevel(0), - mHp(0), mMaxHp(0), mMp(0), mMaxMp(0), - mGp(0), + mMp(0), mMaxMp(0), mAttackRange(0), - mTotalWeight(0), mMaxWeight(0), ATK(0), MATK(0), DEF(0), MDEF(0), HIT(0), FLEE(0), ATK_BONUS(0), MATK_BONUS(0), DEF_BONUS(0), MDEF_BONUS(0), FLEE_BONUS(0), mStatPoint(0), mSkillPoint(0), mStatsPointsToAttribute(0), - mEquipment(new Equipment()), - mXp(0), mNetwork(0), + mEquipment(new Equipment), + mNetwork(0), + mXp(0), + mInStorage(false), + mTargetTime(-1), + mLastTarget(-1), +#endif + mLevel(1), + mMoney(0), + mTotalWeight(1), mMaxWeight(1), + mHp(1), mMaxHp(1), mTarget(NULL), mPickUpTarget(NULL), mTrading(false), mGoingToTarget(false), - mTargetTime(-1), mLastAction(-1), - mLastTarget(-1), mWalkingDir(0), + mLastAction(-1), + mWalkingDir(0), mDestX(0), mDestY(0), +#ifdef TMWSERV_SUPPORT + mLocalWalkTime(-1), + mInventory(new Inventory(INVENTORY_SIZE)), + mExpMessageTime(0) +#else mInventory(new Inventory(INVENTORY_SIZE, 2)), mStorage(new Inventory(STORAGE_SIZE, 1)) +#endif { // Variable to keep the local player from doing certain actions before a map // is initialized. e.g. drawing a player's name using the TextManager, since @@ -92,7 +136,9 @@ LocalPlayer::LocalPlayer(Uint32 id, Uint16 job, Map *map): LocalPlayer::~LocalPlayer() { delete mInventory; +#ifdef EATHENA_SUPPORT delete mStorage; +#endif for (int i = Being::TC_SMALL; i < Being::NUM_TC; i++) { @@ -105,6 +151,7 @@ LocalPlayer::~LocalPlayer() void LocalPlayer::logic() { +#ifdef EATHENA_SUPPORT switch (mAction) { case STAND: @@ -120,7 +167,7 @@ void LocalPlayer::logic() break; case WALK: - mFrame = (get_elapsed_time(mWalkTime) * 6) / mWalkSpeed; + mFrame = (get_elapsed_time(mWalkTime) * 6) / getWalkSpeed(); if (mFrame >= 6) nextStep(); break; @@ -161,11 +208,33 @@ void LocalPlayer::logic() break; } +#endif // Actions are allowed once per second if (get_elapsed_time(mLastAction) >= 1000) mLastAction = -1; +#ifdef TMWSERV_SUPPORT + // Show XP messages + if (!mExpMessages.empty()) + { + if (mExpMessageTime == 0) + { + const Vector &pos = getPosition(); + + particleEngine->addTextRiseFadeOutEffect( + mExpMessages.front(), + (int) pos.x + 16, + (int) pos.y - 16, + &guiPalette->getColor(Palette::EXP_INFO), + gui->getInfoParticleFont(), true); + + mExpMessages.pop_front(); + mExpMessageTime = 30; + } + mExpMessageTime--; + } +#else // Targeting allowed 4 times a second if (get_elapsed_time(mLastTarget) >= 250) mLastTarget = -1; @@ -180,21 +249,32 @@ void LocalPlayer::logic() if (mTarget) { - // Find whether target is in range - const int rangeX = abs(mTarget->mX - mX); - const int rangeY = abs(mTarget->mY - mY); - const int attackRange = getAttackRange(); - const int inRange = rangeX > attackRange || rangeY > attackRange ? 1 : 0; - - mTarget->setTargetAnimation( - mTargetCursor[inRange][mTarget->getTargetCursorSize()]); - - if (mTarget->mAction == DEAD) - stopAttack(); - - if (mKeepAttacking && mTarget) - attack(mTarget, true); + if (mTarget->getType() == Being::NPC) + { + // NPCs are always in range + mTarget->setTargetAnimation( + mTargetCursor[0][mTarget->getTargetCursorSize()]); + } + else + { + // Find whether target is in range + const int rangeX = abs(mTarget->mX - mX); + const int rangeY = abs(mTarget->mY - mY); + const int attackRange = getAttackRange(); + const int inRange = rangeX > attackRange || rangeY > attackRange + ? 1 : 0; + + mTarget->setTargetAnimation( + mTargetCursor[inRange][mTarget->getTargetCursorSize()]); + + if (mTarget->mAction == DEAD) + stopAttack(); + + if (mKeepAttacking && mTarget) + attack(mTarget, true); + } } +#endif Being::logic(); } @@ -225,6 +305,8 @@ void LocalPlayer::setName(const std::string &name) void LocalPlayer::nextStep() { + // TODO: Fix picking up when reaching target (this method is obsolete) + // TODO: Fix holding walking button to keep walking smoothly if (mPath.empty()) { if (mPickUpTarget) @@ -234,10 +316,13 @@ void LocalPlayer::nextStep() walk(mWalkingDir); } + // TODO: Fix automatically walking within range of target, when wanted if (mGoingToTarget && mTarget && withinAttackRange(mTarget)) { mAction = Being::STAND; +#ifdef EATHENA_SUPPORT attack(mTarget, true); +#endif mGoingToTarget = false; mPath.clear(); return; @@ -248,17 +333,99 @@ void LocalPlayer::nextStep() mPath.clear(); } +#ifdef EATHENA_SUPPORT Player::nextStep(); +#endif +} + +#ifdef TMWSERV_SUPPORT +bool LocalPlayer::checkInviteRights(const std::string &guildName) +{ + Guild *guild = getGuild(guildName); + if (guild) + { + return guild->getInviteRights(); + } + + return false; +} + +void LocalPlayer::inviteToGuild(Being *being) +{ + // TODO: Allow user to choose which guild to invite being to + // For now, just invite to the first guild you have permissions to invite with + std::map<int, Guild*>::iterator itr = mGuilds.begin(); + std::map<int, Guild*>::iterator itr_end = mGuilds.end(); + for (; itr != itr_end; ++itr) + { + if (checkInviteRights(itr->second->getName())) + { + Net::ChatServer::Guild::invitePlayer(being->getName(), itr->second->getId()); + return; + } + } +} + +void LocalPlayer::inviteToParty(const std::string &name) +{ + Net::ChatServer::Party::invitePlayer(name); +} + +void LocalPlayer::clearInventory() +{ + mEquipment->clear(); + mInventory->clear(); +} + +void LocalPlayer::setInvItem(int index, int id, int amount) +{ + mInventory->setItem(index, id, amount); +} + +#endif + +void LocalPlayer::moveInvItem(Item *item, int newIndex) +{ + // special case, the old and new cannot copy over each other. + if (item->getInvIndex() == newIndex) + return; + +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::moveItem( + item->getInvIndex(), newIndex, item->getQuantity()); +#endif + // TODO: eAthena support } void LocalPlayer::equipItem(Item *item) { +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::equip(item->getInvIndex()); +#else MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_PLAYER_EQUIP); outMsg.writeInt16(item->getInvIndex()); outMsg.writeInt16(0); +#endif +} + +#ifdef TMWSERV_SUPPORT + +void LocalPlayer::unequipItem(int slot) +{ + Net::GameServer::Player::unequip(slot); + + // Tidy equipment directly to avoid weapon still shown bug, for instance + mEquipment->setEquipment(slot, 0); +} + +void LocalPlayer::useItem(int slot) +{ + Net::GameServer::Player::useItem(slot); } +#else + void LocalPlayer::unequipItem(Item *item) { if (!item) @@ -281,48 +448,102 @@ void LocalPlayer::useItem(Item *item) // Note: id is dest of item, usually player_node->account_ID ?? } +#endif + void LocalPlayer::dropItem(Item *item, int quantity) { +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::drop(item->getInvIndex(), quantity); +#else // TODO: Fix wrong coordinates of drops, serverside? MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_PLAYER_INVENTORY_DROP); outMsg.writeInt16(item->getInvIndex()); outMsg.writeInt16(quantity); +#endif } +#ifdef TMWSERV_SUPPORT +void LocalPlayer::splitItem(Item *item, int quantity) +{ + int newIndex = mInventory->getFreeSlot(); + if (newIndex > Inventory::NO_SLOT_INDEX) + { + Net::GameServer::Player::moveItem( + item->getInvIndex(), newIndex, quantity); + } +} +#endif + void LocalPlayer::pickUp(FloorItem *item) { +#ifdef TMWSERV_SUPPORT + int dx = item->getX() - (int) getPosition().x / 32; + int dy = item->getY() - (int) getPosition().y / 32; +#else int dx = item->getX() - mX; int dy = item->getY() - mY; +#endif if (dx * dx + dy * dy < 4) { +#ifdef TMWSERV_SUPPORT + int id = item->getId(); + Net::GameServer::Player::pickUp(id >> 16, id & 0xFFFF); +#else MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_ITEM_PICKUP); outMsg.writeInt32(item->getId()); +#endif mPickUpTarget = NULL; } else { +#ifdef TMWSERV_SUPPORT + setDestination(item->getX() * 32 + 16, item->getY() * 32 + 16); +#else setDestination(item->getX(), item->getY()); +#endif mPickUpTarget = item; +#ifdef EATHENA_SUPPORT stopAttack(); +#endif } } void LocalPlayer::walk(unsigned char dir) { + // TODO: Evaluate the implementation of this method for tmwserv if (!mMap || !dir) return; +#ifdef TMWSERV_SUPPORT + const Vector &pos = getPosition(); + int dScaler; // Distance to walk +#endif + if (mAction == WALK && !mPath.empty()) { // Just finish the current action, otherwise we get out of sync +#ifdef TMWSERV_SUPPORT + Being::setDestination(pos.x, pos.y); +#else Being::setDestination(mX, mY); +#endif return; } int dx = 0, dy = 0; +#ifdef TMWSERV_SUPPORT + if (dir & UP) + dy -= 32; + if (dir & DOWN) + dy += 32; + if (dir & LEFT) + dx -= 32; + if (dir & RIGHT) + dx += 32; +#else if (dir & UP) dy--; if (dir & DOWN) @@ -331,26 +552,65 @@ void LocalPlayer::walk(unsigned char dir) dx--; if (dir & RIGHT) dx++; +#endif + // Prevent skipping corners over colliding tiles - if (dx && mMap->tileCollides(mX + dx, mY)) +#ifdef TMWSERV_SUPPORT + if (dx && !mMap->getWalk(((int) pos.x + dx) / 32, + (int) pos.y / 32, getWalkMask())) + dx = 16 - (int) pos.x % 32; + if (dy && !mMap->getWalk((int) pos.x / 32, + ((int) pos.y + dy) / 32, getWalkMask())) + dy = 16 - (int) pos.y % 32; +#else + if (dx && !mMap->getWalk(mX + dx, mY, getWalkMask())) dx = 0; - if (dy && mMap->tileCollides(mX, mY + dy)) + if (dy && !mMap->getWalk(mX, mY + dy, getWalkMask())) dy = 0; +#endif // Choose a straight direction when diagonal target is blocked - if (dx && dy && mMap->tileCollides(mX + dx, mY + dy)) +#ifdef TMWSERV_SUPPORT + if (dx && dy && !mMap->getWalk((pos.x + dx) / 32, + (pos.y + dy) / 32, getWalkMask())) + dx = 16 - (int) pos.x % 32; + + // Checks our path up to 5 tiles, if a blocking tile is found + // We go to the last good tile, and break out of the loop + for (dScaler = 1; dScaler <= 10; dScaler++) + { + if ( (dx || dy) && + !mMap->getWalk( ((int) pos.x + (dx * dScaler)) / 32, + ((int) pos.y + (dy * dScaler)) / 32, getWalkMask()) ) + { + dScaler--; + break; + } + } + + if (dScaler >= 0) + { + setDestination((int) pos.x + (dx * dScaler), (int) pos.y + (dy * dScaler)); + } +#else + if (dx && dy && !mMap->getWalk(mX + dx, mY + dy, getWalkMask())) dx = 0; // Walk to where the player can actually go - if ((dx || dy) && !mMap->tileCollides(mX + dx, mY + dy)) + if ((dx || dy) && mMap->getWalk(mX + dx, mY + dy, getWalkMask())) { setDestination(mX + dx, mY + dy); } +#endif else if (dir) { // If the being can't move, just change direction - // TODO: Communicate this to the server (waiting on tmwserv) +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::changeDir(dir); +#else + // TODO: Communicate this to the server +#endif setDirection(dir); } } @@ -362,6 +622,7 @@ Being* LocalPlayer::getTarget() const void LocalPlayer::setTarget(Being *target) { +#ifdef EATHENA_SUPPORT if (mLastTarget != -1 || target == this) return; @@ -379,32 +640,63 @@ void LocalPlayer::setTarget(Being *target) mKeepAttacking = false; mTargetTime = -1; } +#endif if (mTarget) mTarget->untarget(); if (mTarget && mTarget->getType() == Being::MONSTER) - static_cast<Monster *>(mTarget)->showName(false); + static_cast<Monster *>(mTarget)->setShowName(false); mTarget = target; if (target && target->getType() == Being::MONSTER) - static_cast<Monster *>(target)->showName(true); + static_cast<Monster *>(target)->setShowName(true); } +#ifdef TMWSERV_SUPPORT +void LocalPlayer::setDestination(int x, int y) +#else void LocalPlayer::setDestination(Uint16 x, Uint16 y) +#endif { +#ifdef TMWSERV_SUPPORT + // Fix coordinates so that the player does not seem to dig into walls. + const int tx = x / 32; + const int ty = y / 32; + int fx = x % 32; + int fy = y % 32; + + if (fx != 16 && !mMap->getWalk(tx + fx / 16 * 2 - 1, ty, getWalkMask())) + fx = 16; + if (fy != 16 && !mMap->getWalk(tx, ty + fy / 16 * 2 - 1, getWalkMask())) + fy = 16; + if (fx != 16 && fy != 16 && !mMap->getWalk(tx + fx / 16 * 2 - 1, + ty + fy / 16 * 2 - 1, + getWalkMask())) + fx = 16; + + x = tx * 32 + fx; + y = ty * 32 + fy; +#endif + // Only send a new message to the server when destination changes if (x != mDestX || y != mDestY) { mDestX = x; mDestY = y; +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::walk(x, y); + //Debugging fire burst + effectManager->trigger(15,x,y); +#else char temp[4] = ""; MessageOut outMsg(mNetwork); set_coordinates(temp, x, y, mDirection); outMsg.writeInt16(0x0085); outMsg.writeString(temp, 3); +#endif } mPickUpTarget = NULL; @@ -413,18 +705,36 @@ void LocalPlayer::setDestination(Uint16 x, Uint16 y) void LocalPlayer::setWalkingDir(int dir) { - if (mWalkingDir != dir) - { - mWalkingDir = dir; - } + mWalkingDir = dir; // If we're not already walking, start walking. - if (mAction != WALK && dir) + if (mAction != WALK && dir +#ifdef TMWSERV_SUPPORT + && get_elapsed_time(mLocalWalkTime) >= walkingKeyboardDelay +#endif + ) { walk(dir); } } +#ifdef TMWSERV_SUPPORT +void LocalPlayer::stopWalking(bool sendToServer) +{ + if (mAction == WALK && mWalkingDir) { + mWalkingDir = 0; + mLocalWalkTime = 0; + Being::setDestination(getPosition().x,getPosition().y); + if (sendToServer) + Net::GameServer::Player::walk(getPosition().x, getPosition().y); + setAction(STAND); + } + + clearPath(); +} +#endif + +#ifdef EATHENA_SUPPORT void LocalPlayer::raiseAttribute(Attribute attr) { MessageOut outMsg(mNetwork); @@ -468,6 +778,7 @@ void LocalPlayer::raiseSkill(Uint16 skillId) outMsg.writeInt16(CMSG_SKILL_LEVELUP_REQUEST); outMsg.writeInt16(skillId); } +#endif void LocalPlayer::toggleSit() { @@ -475,18 +786,23 @@ void LocalPlayer::toggleSit() return; mLastAction = tick_time; - char type; + Being::Action newAction; switch (mAction) { - case STAND: type = 2; break; - case SIT: type = 3; break; + case STAND: newAction = SIT; break; + case SIT: newAction = STAND; break; default: return; } +#ifdef TMWSERV_SUPPORT + setAction(newAction); + Net::GameServer::Player::changeAction(newAction); +#else MessageOut outMsg(mNetwork); outMsg.writeInt16(0x0089); outMsg.writeInt32(0); - outMsg.writeInt8(type); + outMsg.writeInt8((newAction == SIT) ? 2 : 3); +#endif } void LocalPlayer::emote(Uint8 emotion) @@ -495,11 +811,15 @@ void LocalPlayer::emote(Uint8 emotion) return; mLastAction = tick_time; + // XXX Convert for new server +#ifdef EATHENA_SUPPORT MessageOut outMsg(mNetwork); outMsg.writeInt16(0x00bf); outMsg.writeInt8(emotion); +#endif } +#ifdef EATHENA_SUPPORT void LocalPlayer::tradeReply(bool accept) { if (!accept) @@ -509,12 +829,21 @@ void LocalPlayer::tradeReply(bool accept) outMsg.writeInt16(CMSG_TRADE_RESPONSE); outMsg.writeInt8(accept ? 3 : 4); } +#endif void LocalPlayer::trade(Being *being) const { +#ifdef TMWSERV_SUPPORT + extern std::string tradePartnerName; + extern int tradePartnerID; + tradePartnerName = being->getName(); + tradePartnerID = being->getId(); + Net::GameServer::Player::requestTrade(tradePartnerID); +#else MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_TRADE_REQUEST); outMsg.writeInt32(being->getId()); +#endif } bool LocalPlayer::tradeRequestOk() const @@ -522,11 +851,70 @@ bool LocalPlayer::tradeRequestOk() const return !mTrading; } +#ifdef TMWSERV_SUPPORT + +void LocalPlayer::attack() +{ + if (mLastAction != -1) + return; + + // Can only attack when standing still + if (mAction != STAND && mAction != ATTACK) + return; + + //Face direction of the target + if(mTarget){ + unsigned char dir = 0; + int x = 0, y = 0; + Vector plaPos = this->getPosition(); + Vector tarPos = mTarget->getPosition(); + x = plaPos.x - tarPos.x; + y = plaPos.y - tarPos.y; + if(abs(x) < abs(y)){ + //Check to see if target is above me or below me + if(y > 0){ + dir = UP; + } else { + dir = DOWN; + } + } else { + //check to see if the target is to the left or right of me + if(x > 0){ + dir = LEFT; + } else { + dir = RIGHT; + } + } + setDirection(dir); + } + + mLastAction = tick_time; + + setAction(ATTACK); + + if (mEquippedWeapon) + { + std::string soundFile = mEquippedWeapon->getSound(EQUIP_EVENT_STRIKE); + if (soundFile != "") sound.playSfx(soundFile); + } + else { + sound.playSfx("sfx/fist-swish.ogg"); + } + Net::GameServer::Player::attack(getSpriteDirection()); +} + +void LocalPlayer::useSpecial(int special) +{ + Net::GameServer::Player::useSpecial(special); +} + +#else + void LocalPlayer::attack(Being *target, bool keep) { mKeepAttacking = keep; - if (!target) + if (!target || target->getType() == Being::NPC) return; if ((mTarget != target) || !mTarget) @@ -538,10 +926,8 @@ void LocalPlayer::attack(Being *target, bool keep) int dist_x = target->mX - mX; int dist_y = target->mY - mY; - // Must be standing and be within attack range to continue - if ((mAction != STAND) || (mAttackRange < abs(dist_x)) || - (mAttackRange < abs(dist_y))) - return; + // Must be standing to attack + if (mAction != STAND) return; if (abs(dist_y) >= abs(dist_x)) { @@ -558,9 +944,6 @@ void LocalPlayer::attack(Being *target, bool keep) setDirection(LEFT); } - // Implement charging attacks here - mLastAttackTime = 0; - mWalkTime = tick_time; mTargetTime = tick_time; @@ -597,13 +980,87 @@ void LocalPlayer::stopAttack() mLastTarget = -1; } +#endif // no TMWSERV_SUPPORT + void LocalPlayer::revive() { + // XXX Convert for new server +#ifdef EATHENA_SUPPORT MessageOut outMsg(mNetwork); outMsg.writeInt16(0x00b2); outMsg.writeInt8(0); +#endif +} + +#ifdef TMWSERV_SUPPORT + +void LocalPlayer::raiseAttribute(size_t attr) +{ + // we assume that the server allows the change. When not we will undo it later. + mCharacterPoints--; + mAttributeBase.at(attr)++; + Net::GameServer::Player::raiseAttribute(attr + CHAR_ATTR_BEGIN); +} + +void LocalPlayer::lowerAttribute(size_t attr) +{ + // we assume that the server allows the change. When not we will undo it later. + mCorrectionPoints--; + mCharacterPoints++; + mAttributeBase.at(attr)--; + Net::GameServer::Player::lowerAttribute(attr + CHAR_ATTR_BEGIN); +} + +const struct LocalPlayer::SkillInfo& LocalPlayer::getSkillInfo(int skill) +{ + static const SkillInfo skills[CHAR_SKILL_NB + 1] = + { + { _("Unarmed"), "graphics/images/unarmed.png" }, // CHAR_SKILL_WEAPON_NONE + { _("Knife"), "graphics/images/knife.png" }, // CHAR_SKILL_WEAPON_KNIFE + { _("Sword"), "graphics/images/sword.png" }, // CHAR_SKILL_WEAPON_SWORD + { _("Polearm"), "graphics/images/polearm.png" }, // CHAR_SKILL_WEAPON_POLEARM + { _("Staff"), "graphics/images/staff.png" }, // CHAR_SKILL_WEAPON_STAFF + { _("Whip"), "graphics/images/whip.png" }, // CHAR_SKILL_WEAPON_WHIP + { _("Bow"), "graphics/images/bow.png" }, // CHAR_SKILL_WEAPON_BOW + { _("Shooting"), "graphics/images/shooting.png" }, // CHAR_SKILL_WEAPON_SHOOTING + { _("Mace"), "graphics/images/mace.png" }, // CHAR_SKILL_WEAPON_MACE + { _("Axe"), "graphics/images/axe.png" }, // CHAR_SKILL_WEAPON_AXE + { _("Thrown"), "graphics/images/thrown.png" }, // CHAR_SKILL_WEAPON_THROWN + { _("Magic"), "graphics/images/magic.png" }, // CHAR_SKILL_MAGIC_IAMJUSTAPLACEHOLDER + { _("Craft"), "graphics/images/craft.png" }, // CHAR_SKILL_CRAFT_IAMJUSTAPLACEHOLDER + { _("Unknown Skill"), "graphics/images/unknown.png" } + }; + + if ((skill < 0) || (skill > CHAR_SKILL_NB)) + { + return skills[CHAR_SKILL_NB]; + } + else + { + return skills[skill]; + } } +void LocalPlayer::setExperience(int skill, int current, int next) +{ + int diff = current - mExpCurrent.at(skill); + if (mMap && mExpCurrent.at(skill) != -1 && diff > 0) + { + const std::string text = toString(diff) + " " + getSkillInfo(skill).name + " xp"; + mExpMessages.push_back(text); + } + + mExpCurrent.at(skill) = current; + mExpNext.at(skill) = next; +} + +std::pair<int, int> LocalPlayer::getExperience(int skill) +{ + return std::pair<int, int> (mExpCurrent.at(skill), mExpNext.at(skill)); +} + +#else + void LocalPlayer::setXp(int xp) { if (mMap && xp > mXp) @@ -618,7 +1075,9 @@ void LocalPlayer::setXp(int xp) mXp = xp; } -void LocalPlayer::pickedUp(std::string item) +#endif + +void LocalPlayer::pickedUp(const std::string &item) { if (mMap) { @@ -629,8 +1088,32 @@ void LocalPlayer::pickedUp(std::string item) } } +int LocalPlayer::getAttackRange() +{ +#ifdef TMWSERV_SUPPORT + Item *weapon = mEquipment->getEquipment(EQUIP_FIGHT1_SLOT); + if (weapon) + { + const ItemInfo info = weapon->getInfo(); + return info.getAttackRange(); + } + return 32; // unarmed range +#else + return mAttackRange; +#endif +} + bool LocalPlayer::withinAttackRange(Being *target) { +#ifdef TMWSERV_SUPPORT + const Vector &targetPos = target->getPosition(); + const Vector &pos = getPosition(); + const int dx = abs(targetPos.x - pos.x); + const int dy = abs(targetPos.y - pos.y); + const int range = getAttackRange(); + + return !(dx > range || dy > range); +#else int dist_x = abs(target->mX - mX); int dist_y = abs(target->mY - mY); @@ -640,14 +1123,64 @@ bool LocalPlayer::withinAttackRange(Being *target) } return true; +#endif } void LocalPlayer::setGotoTarget(Being *target) { +#ifdef TMWSERV_SUPPORT + mTarget = target; + mGoingToTarget = true; + const Vector &targetPos = target->getPosition(); + setDestination(targetPos.x, targetPos.y); +#else mLastTarget = -1; setTarget(target); mGoingToTarget = true; setDestination(target->mX, target->mY); +#endif +} + + +extern MiniStatusWindow *miniStatusWindow; + +void LocalPlayer::handleStatusEffect(StatusEffect *effect, int effectId) +{ + Being::handleStatusEffect(effect, effectId); + + + + if (effect) { + effect->deliverMessage(); + effect->playSFX(); + + AnimatedSprite *sprite = effect->getIcon(); + + if (!sprite) { + // delete sprite, if necessary + for (unsigned int i = 0; i < mStatusEffectIcons.size();) + if (mStatusEffectIcons[i] == effectId) { + mStatusEffectIcons.erase(mStatusEffectIcons.begin() + i); + miniStatusWindow->eraseIcon(i); + } else i++; + } else { + // replace sprite or append + bool found = false; + + for (unsigned int i = 0; i < mStatusEffectIcons.size(); i++) + if (mStatusEffectIcons[i] == effectId) { + miniStatusWindow->setIcon(i, sprite); + found = true; + break; + } + + if (!found) { // add new + int offset = mStatusEffectIcons.size(); + miniStatusWindow->setIcon(offset, sprite); + mStatusEffectIcons.push_back(effectId); + } + } + } } void LocalPlayer::initTargetCursor() @@ -679,7 +1212,7 @@ void LocalPlayer::loadTargetCursor(std::string filename, int width, int height, ResourceManager *resman = ResourceManager::getInstance(); currentImageSet = resman->getImageSet(filename, width, height); - Animation *anim = new Animation(); + Animation *anim = new Animation; for (unsigned int i = 0; i < currentImageSet->size(); ++i) { @@ -696,9 +1229,11 @@ void LocalPlayer::loadTargetCursor(std::string filename, int width, int height, mTargetCursor[index][size] = currentCursor; } +#ifdef EATHENA_SUPPORT void LocalPlayer::setInStorage(bool inStorage) { mInStorage = inStorage; storageWindow->setVisible(inStorage); } +#endif diff --git a/src/localplayer.h b/src/localplayer.h index bd59462e..99cb00d6 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,19 +23,106 @@ #define LOCALPLAYER_H #include <memory> +#include <vector> #include "player.h" -// TODO move into some sane place... -#define MAX_SLOT 2 - class Equipment; class FloorItem; class ImageSet; class Inventory; class Item; class Map; +#ifdef EATHENA_SUPPORT class Network; +#endif + +#ifdef TMWSERV_SUPPORT + +/** + * Attributes used during combat. Available to all the beings. + */ +enum +{ +BASE_ATTR_BEGIN = 0, + BASE_ATTR_PHY_ATK_MIN = BASE_ATTR_BEGIN, + BASE_ATTR_PHY_ATK_DELTA, + /**< Physical attack power. */ + BASE_ATTR_MAG_ATK, /**< Magical attack power. */ + BASE_ATTR_PHY_RES, /**< Resistance to physical damage. */ + BASE_ATTR_MAG_RES, /**< Resistance to magical damage. */ + BASE_ATTR_EVADE, /**< Ability to avoid hits. */ + BASE_ATTR_HIT, /**< Ability to hit stuff. */ + BASE_ATTR_HP, /**< Hit Points (Base value: maximum, Modded value: current) */ + BASE_ATTR_HP_REGEN,/**< number of HP regenerated every 10 game ticks */ + BASE_ATTR_END, + BASE_ATTR_NB = BASE_ATTR_END - BASE_ATTR_BEGIN, + + BASE_ELEM_BEGIN = BASE_ATTR_END, + BASE_ELEM_NEUTRAL = BASE_ELEM_BEGIN, + BASE_ELEM_FIRE, + BASE_ELEM_WATER, + BASE_ELEM_EARTH, + BASE_ELEM_AIR, + BASE_ELEM_SACRED, + BASE_ELEM_DEATH, + BASE_ELEM_END, + BASE_ELEM_NB = BASE_ELEM_END - BASE_ELEM_BEGIN, + + NB_BEING_ATTRIBUTES = BASE_ELEM_END +}; + +/** + * Attributes of characters. Used to derive being attributes. + */ +enum +{ + CHAR_ATTR_BEGIN = NB_BEING_ATTRIBUTES, + CHAR_ATTR_STRENGTH = CHAR_ATTR_BEGIN, + CHAR_ATTR_AGILITY, + CHAR_ATTR_DEXTERITY, + CHAR_ATTR_VITALITY, + CHAR_ATTR_INTELLIGENCE, + CHAR_ATTR_WILLPOWER, + CHAR_ATTR_END, + CHAR_ATTR_NB = CHAR_ATTR_END - CHAR_ATTR_BEGIN, + + CHAR_SKILL_BEGIN = CHAR_ATTR_END, + + CHAR_SKILL_WEAPON_BEGIN = CHAR_SKILL_BEGIN, + CHAR_SKILL_WEAPON_NONE = CHAR_SKILL_WEAPON_BEGIN, + CHAR_SKILL_WEAPON_KNIFE, + CHAR_SKILL_WEAPON_SWORD, + CHAR_SKILL_WEAPON_POLEARM, + CHAR_SKILL_WEAPON_STAFF, + CHAR_SKILL_WEAPON_WHIP, + CHAR_SKILL_WEAPON_BOW, + CHAR_SKILL_WEAPON_SHOOTING, + CHAR_SKILL_WEAPON_MACE, + CHAR_SKILL_WEAPON_AXE, + CHAR_SKILL_WEAPON_THROWN, + CHAR_SKILL_WEAPON_END, + CHAR_SKILL_WEAPON_NB = CHAR_SKILL_WEAPON_END - CHAR_SKILL_WEAPON_BEGIN, + + CHAR_SKILL_MAGIC_BEGIN = CHAR_SKILL_WEAPON_END, + CHAR_SKILL_MAGIC_IAMJUSTAPLACEHOLDER = CHAR_SKILL_MAGIC_BEGIN, + // add magic skills here + CHAR_SKILL_MAGIC_END, + CHAR_SKILL_MAGIC_NB = CHAR_SKILL_MAGIC_END - CHAR_SKILL_MAGIC_BEGIN, + + CHAR_SKILL_CRAFT_BEGIN = CHAR_SKILL_MAGIC_END, + CHAR_SKILL_CRAFT_IAMJUSTAPLACEHOLDER = CHAR_SKILL_CRAFT_BEGIN, + // add crafting skills here + CHAR_SKILL_CRAFT_END, + CHAR_SKILL_CRAFT_NB = CHAR_SKILL_CRAFT_END - CHAR_SKILL_CRAFT_BEGIN, + + CHAR_SKILL_END = CHAR_SKILL_CRAFT_END, + CHAR_SKILL_NB = CHAR_SKILL_END - CHAR_SKILL_BEGIN, + + NB_CHARACTER_ATTRIBUTES = CHAR_SKILL_END +}; + +#endif /** * The local player character. @@ -46,13 +132,21 @@ class LocalPlayer : public Player public: enum Attribute { +#ifdef TMWSERV_SUPPORT + STR = 0, AGI, DEX, VIT, INT, WIL, CHR +#else STR = 0, AGI, VIT, INT, DEX, LUK +#endif }; /** * Constructor. */ +#ifdef TMWSERV_SUPPORT + LocalPlayer(); +#else LocalPlayer(Uint32 id, Uint16 job, Map *map); +#endif /** * Destructor. @@ -60,8 +154,11 @@ class LocalPlayer : public Player ~LocalPlayer(); virtual void setName(const std::string &name); + +#ifdef EATHENA_SUPPORT void setNetwork(Network *network) { mNetwork = network; } Network *getNetwork() {return mNetwork; } +#endif virtual void logic(); /** @@ -75,10 +172,37 @@ class LocalPlayer : public Player */ Inventory* getInventory() const { return mInventory; } +#ifdef EATHENA_SUPPORT /** * Returns the player's storage */ Inventory* getStorage() const { return mStorage; } +#endif + +#ifdef TMWSERV_SUPPORT + /** + * Check the player has permission to invite users to specific guild + */ + bool checkInviteRights(const std::string &guildName); + + /** + * Invite a player to join guild + */ + void inviteToGuild(Being *being); + + /** + * Invite a player to join their party + */ + void inviteToParty(const std::string &name); + + void clearInventory(); + void setInvItem(int index, int id, int amount); +#endif + + /** + * Move the Inventory item from the old slot to the new slot. + */ + void moveInvItem(Item *item, int newIndex); /** * Equips an item. @@ -88,21 +212,37 @@ class LocalPlayer : public Player /** * Unequips an item. */ +#ifdef TMWSERV_SUPPORT + void unequipItem(int slot); +#else void unequipItem(Item *item); +#endif +#ifdef TMWSERV_SUPPORT + void useItem(int slot); +#else void useItem(Item *item); +#endif + void dropItem(Item *item, int quantity); + +#ifdef TMWSERV_SUPPORT + void splitItem(Item *item, int quantity); +#endif + void pickUp(FloorItem *item); +#ifdef EATHENA_SUPPORT /** * Sets the attack range. */ void setAttackRange(int range) { mAttackRange = range; } +#endif /** * Gets the attack range. */ - int getAttackRange() const { return mAttackRange; } + int getAttackRange(); /** * Sents a trade request to the given being. @@ -126,7 +266,12 @@ class LocalPlayer : public Player */ void setTrading(bool trading) { mTrading = trading; } +#ifdef TMWSERV_SUPPORT + void attack(); + void useSpecial(int id); +#else void attack(Being *target = NULL, bool keep = false); +#endif /** * Triggers whether or not to show the name as a GM name. @@ -136,7 +281,9 @@ class LocalPlayer : public Player */ virtual void setGM(); +#ifdef EATHENA_SUPPORT void stopAttack(); +#endif /** * Overridden to do nothing. The attacks of the local player are @@ -148,12 +295,15 @@ class LocalPlayer : public Player * @param type the attack type */ virtual void handleAttack(Being *victim, int damage, AttackType type) {} + virtual void handleAttack() {} + /** * Returns the current target of the player. Returns 0 if no being is * currently targeted. */ Being* getTarget() const; + /** * Sets the target being of the player. */ @@ -162,7 +312,11 @@ class LocalPlayer : public Player /** * Sets a new destination for this being to walk to. */ +#ifdef TMWSERV_SUPPORT + void setDestination(int x, int y); +#else virtual void setDestination(Uint16 x, Uint16 y); +#endif /** * Sets a new direction to keep walking in. @@ -170,6 +324,12 @@ class LocalPlayer : public Player void setWalkingDir(int dir); /** + * Gets the walking direction + */ + int getWalkingDir() const + { return mWalkingDir; } + + /** * Sets going to being to attack */ void setGotoTarget(Being *target); @@ -179,8 +339,26 @@ class LocalPlayer : public Player */ bool withinAttackRange(Being *target); +#ifdef EATHENA_SUPPORT void raiseAttribute(Attribute attr); void raiseSkill(Uint16 skillId); +#else + + /** + * Stops the player dead in his tracks + */ + void stopWalking(bool sendToServer = true); + + /** + * Uses a character point to raise an attribute + */ + void raiseAttribute(size_t attr); + + /** + * Uses a correction point to lower an attribute + */ + void lowerAttribute(size_t attr); +#endif void toggleSit(); void emote(Uint8 emotion); @@ -188,6 +366,12 @@ class LocalPlayer : public Player void revive(); /** + * Shows item pickup effect if the player is on a map. + */ + void pickedUp(const std::string &item); + +#ifdef EATHENA_SUPPORT + /** * Accessors for mInStorage */ bool getInStorage() { return mInStorage; } @@ -200,11 +384,6 @@ class LocalPlayer : public Player void setXp(int xp); /** - * Shows item pickup effect if the player is on a map. - */ - void pickedUp(std::string item); - - /** * Returns the amount of experience points. */ int getXp() const { return mXp; } @@ -212,16 +391,12 @@ class LocalPlayer : public Player Uint32 mCharId; /**< Used only during character selection. */ Uint32 mJobXp; - Uint16 mLevel; Uint32 mJobLevel; Uint32 mXpForNextLevel, mJobXpForNextLevel; - Uint16 mHp, mMaxHp, mMp, mMaxMp; - Uint32 mGp; + Uint16 mMp, mMaxMp; Uint16 mAttackRange; - int mTotalWeight, mMaxWeight; - Uint8 mAttr[6]; Uint8 mAttrUp[6]; @@ -230,6 +405,88 @@ class LocalPlayer : public Player Uint16 mStatPoint, mSkillPoint; Uint16 mStatsPointsToAttribute; +#endif + + int getHp() const + { return mHp; } + + int getMaxHp() const + { return mMaxHp; } + + void setHp(int value) + { mHp = value; } + + void setMaxHp(int value) + { mMaxHp = value; } + + int getLevel() const + { return mLevel; } + + void setLevel(int value) + { mLevel = value; } + +#ifdef TMWSERV_SUPPORT + void setLevelProgress(int percent) + { mLevelProgress = percent; } + + int getLevelProgress() const + { return mLevelProgress; } +#endif + + int getMoney() const + { return mMoney; } + + void setMoney(int value) + { mMoney = value; } + + int getTotalWeight() const + { return mTotalWeight; } + + void setTotalWeight(int value) + { mTotalWeight = value; } + + int getMaxWeight() const + { return mMaxWeight; } + + void setMaxWeight(int value) + { mMaxWeight = value; } + +#ifdef TMWSERV_SUPPORT + int getAttributeBase(int num) const + { return mAttributeBase[num]; } + + void setAttributeBase(int num, int value) + { mAttributeBase[num] = value; } + + int getAttributeEffective(int num) const + { return mAttributeEffective[num]; } + + void setAttributeEffective(int num, int value) + { mAttributeEffective[num] = value; } + + int getCharacterPoints() const + { return mCharacterPoints; } + + void setCharacterPoints(int n) + { mCharacterPoints = n; } + + int getCorrectionPoints() const + { return mCorrectionPoints; } + + void setCorrectionPoints(int n) + { mCorrectionPoints = n; } + + void setExperience(int skill, int current, int next); + + struct SkillInfo { + std::string name; + std::string icon; + }; + + static const SkillInfo& getSkillInfo(int skill); + + std::pair<int, int> getExperience(int skill); +#endif bool mUpdateName; /** Whether or not the name settings have changed */ @@ -240,27 +497,57 @@ class LocalPlayer : public Player const std::auto_ptr<Equipment> mEquipment; protected: + virtual void + handleStatusEffect(StatusEffect *effect, int effectId); + void walk(unsigned char dir); +#ifdef EATHENA_SUPPORT + Network *mNetwork; int mXp; /**< Experience points. */ + bool mInStorage; /**< Whether storage is currently accessible */ + int mTargetTime; /** How long the being has been targeted **/ + int mLastTarget; /** Time stamp of last targeting action, -1 if none. */ +#endif + +#ifdef TMWSERV_SUPPORT + // Character status: + std::vector<int> mAttributeBase; + std::vector<int> mAttributeEffective; + std::vector<int> mExpCurrent; + std::vector<int> mExpNext; + int mCharacterPoints; + int mCorrectionPoints; + int mLevelProgress; +#endif + int mLevel; + int mMoney; + int mTotalWeight; + int mMaxWeight; + int mHp; + int mMaxHp; - Network *mNetwork; Being *mTarget; FloorItem *mPickUpTarget; bool mTrading; - bool mInStorage; /**< Whether storage is currently accessible */ bool mGoingToTarget; bool mKeepAttacking; /** Whether or not to continue to attack */ - int mTargetTime; /** How long the being has been targeted **/ int mLastAction; /**< Time stamp of the last action, -1 if none. */ - int mLastTarget; /** Time stamp of last targeting action, -1 if none. */ int mWalkingDir; /**< The direction the player is walking in. */ int mDestX; /**< X coordinate of destination. */ int mDestY; /**< Y coordinate of destination. */ +#ifdef TMWSERV_SUPPORT + int mLocalWalkTime; /**< Timestamp used to control keyboard walk + messages flooding */ +#endif + + std::vector<int> mStatusEffectIcons; Inventory *mInventory; +#ifdef EATHENA_SUPPORT Inventory *mStorage; +#endif // Load the target cursors into memory void initTargetCursor(); @@ -276,6 +563,11 @@ class LocalPlayer : public Player /** Animated target cursors. */ SimpleAnimation *mTargetCursor[2][NUM_TC]; + +#ifdef TMWSERV_SUPPORT + std::list<std::string> mExpMessages; /**< Queued exp messages*/ + int mExpMessageTime; +#endif }; extern LocalPlayer *player_node; diff --git a/src/lockedarray.h b/src/lockedarray.h index 3ef2bb99..c4c83ea9 100644 --- a/src/lockedarray.h +++ b/src/lockedarray.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -45,7 +44,7 @@ class LockedArray bool isLocked() const { return mLocked; }; T getEntry() const { return mData[mCurEntry]; }; - void setEntry(T entry) { mData[mCurEntry] = entry; }; + void setEntry(T entry) { mData[mCurEntry] = entry; mFilled = true; }; void next(); void prev(); @@ -54,6 +53,11 @@ class LockedArray unsigned int getSize() const { return mSize; }; + /** + * Clears the array without changing size or data type + */ + void clear(); + protected: unsigned int mSize; @@ -61,11 +65,14 @@ class LockedArray unsigned int mCurEntry; bool mLocked; + + bool mFilled; }; template<class T> LockedArray<T>::LockedArray(unsigned int size): - mSize(size), mData(new T[size]), mCurEntry(0), mLocked(false) + mSize(size), mData(new T[size]), mCurEntry(0), mLocked(false), + mFilled(false) { std::fill_n(mData, mSize, (T)0); } @@ -106,4 +113,19 @@ void LockedArray<T>::select(unsigned int pos) mCurEntry = 0; } +template<class T> +void LockedArray<T>::clear() +{ + if (!mFilled) return; + + delete [] mData; + + mData = new T[mSize]; + + std::fill_n(mData, mSize, (T)0); + + mCurEntry = 0; + + mLocked = false; +} #endif diff --git a/src/log.cpp b/src/log.cpp index 29eeb010..75b015da 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -104,7 +103,7 @@ void Logger::log(const char *log_text, ...) if (mChatWindow) { - mChatWindow->chatLog(buf, BY_LOGGER); + localChatTab->chatLog(buf, BY_LOGGER); } // Delete temporary buffer @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/logindata.h b/src/logindata.h index 3f686a22..ae89eb5f 100644 --- a/src/logindata.h +++ b/src/logindata.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,21 +24,51 @@ #include <string> +#include <string> + struct LoginData { std::string username; std::string password; + std::string newPassword; std::string hostname; std::string updateHost; +#ifdef TMWSERV_SUPPORT + std::string email; + std::string newEmail; +#endif short port; +#ifdef EATHENA_SUPPORT int account_ID; int session_ID1; int session_ID2; char sex; +#endif bool remember; /**< Whether to store the username and host. */ bool registerLogin; /**< Whether an account is being registered. */ -}; + void clear() + { + username.clear(); + password.clear(); + newPassword.clear(); + hostname.clear(); + updateHost.clear(); +#ifdef TMWSERV_SUPPORT + email.clear(); + newEmail.clear(); #endif + port = 0; + +#ifdef EATHENA_SUPPORT + account_ID = 0; + session_ID1 = 0; + session_ID2 = 0; + sex = 0; +#endif + }; +}; + +#endif // LOGINDATA_H diff --git a/src/main.cpp b/src/main.cpp index 014154e2..2ce47ac6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,18 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <getopt.h> -#include <iostream> -#include <physfs.h> -#include <SDL_image.h> -#include <unistd.h> -#include <vector> - -#include <guichan/actionlistener.hpp> - -#include <libxml/parser.h> - -#include <SDL/SDL_ttf.h> +#include "main.h" #include "configuration.h" #include "emoteshortcut.h" @@ -43,16 +31,19 @@ #include "lockedarray.h" #include "log.h" #include "logindata.h" -#include "main.h" #ifdef USE_OPENGL #include "openglgraphics.h" #endif #include "player_relations.h" #include "serverinfo.h" #include "sound.h" +#include "statuseffect.h" +#include "units.h" #include "gui/button.h" +#ifdef EATHENA_SUPPORT #include "gui/char_server.h" +#endif #include "gui/char_select.h" #include "gui/gui.h" #include "gui/label.h" @@ -63,13 +54,35 @@ #include "gui/register.h" #include "gui/sdlinput.h" #include "gui/setup.h" +#ifdef TMWSERV_SUPPORT +#include "gui/connection.h" +#include "gui/quitdialog.h" +#include "gui/serverdialog.h" +#endif #include "gui/updatewindow.h" -#include "net/charserverhandler.h" -#include "net/loginhandler.h" -#include "net/maploginhandler.h" +#ifdef TMWSERV_SUPPORT +#include "net/tmwserv/charserverhandler.h" +#include "net/tmwserv/connection.h" +#include "net/tmwserv/loginhandler.h" +#include "net/tmwserv/logouthandler.h" +#include "net/tmwserv/network.h" +#else +#include "net/ea/charserverhandler.h" +#include "net/ea/loginhandler.h" +#include "net/ea/network.h" +#include "net/ea/maploginhandler.h" #include "net/messageout.h" -#include "net/network.h" +#endif + +#ifdef TMWSERV_SUPPORT +#include "net/tmwserv/accountserver/accountserver.h" +#include "net/tmwserv/accountserver/account.h" + +#include "net/tmwserv/chatserver/chatserver.h" + +#include "net/tmwserv/gameserver/gameserver.h" +#endif #include "resources/colordb.h" #include "resources/emotedb.h" @@ -79,8 +92,24 @@ #include "resources/npcdb.h" #include "resources/resourcemanager.h" +#ifdef TMWSERV_SUPPORT +#include "utils/dtor.h" +#endif #include "utils/gettext.h" #include "utils/stringutils.h" +#include "utils/strprintf.h" + +#include <SDL_image.h> + +#include <guichan/actionlistener.hpp> + +#include <libxml/parser.h> + +#include <getopt.h> +#include <iostream> +#include <physfs.h> +#include <unistd.h> +#include <vector> #ifdef __APPLE__ #include <CoreFoundation/CFBundle.h> @@ -109,29 +138,43 @@ namespace } listener; } +#ifdef TMWSERV_SUPPORT +std::string token; //used to store magic_token +#else // Account infos char n_server, n_character; -Graphics *graphics; - // TODO Anyone knows a good location for this? Or a way to make it non-global? class SERVER_INFO; SERVER_INFO **server_info; +#endif + +Graphics *graphics; unsigned char state; std::string errorMessage; -unsigned char screen_mode; Sound sound; Music *bgm; Configuration config; /**< XML file configuration reader */ +Configuration branding; /**< XML branding information reader */ Logger *logger; /**< Log object */ KeyboardConfig keyboard; +#ifdef TMWSERV_SUPPORT +Net::Connection *gameServerConnection = 0; +Net::Connection *chatServerConnection = 0; +Net::Connection *accountServerConnection = 0; +#endif + CharServerHandler charServerHandler; LoginData loginData; -LockedArray<LocalPlayer*> charInfo(MAX_SLOT + 1); +#ifdef TMWSERV_SUPPORT +LoginHandler loginHandler; +LogoutHandler logoutHandler; +#endif +LockedArray<LocalPlayer*> charInfo(maxSlot + 1); Palette *guiPalette; @@ -142,8 +185,10 @@ std::string homeDir; std::string updateHost; std::string updatesDir; +#ifdef EATHENA_SUPPORT LoginHandler loginHandler; MapLoginHandler mapLoginHandler; +#endif SDL_Surface *icon; @@ -160,8 +205,9 @@ struct Options printHelp(false), printVersion(false), skipUpdate(false), - chooseDefault(false) - {}; + chooseDefault(false), + serverPort(0) + {} bool printHelp; bool printVersion; @@ -169,10 +215,13 @@ struct Options bool chooseDefault; std::string username; std::string password; - std::string playername; + std::string character; std::string configPath; std::string updateHost; std::string dataPath; + + std::string serverName; + short serverPort; }; /** @@ -187,7 +236,7 @@ static void setUpdatesDir() if (updateHost.empty()) { updateHost = - config.getValue("updatehost", "http://www.aethyra.org/updates"); + config.getValue("updatehost", "http://updates.themanaworld.org/"); } // Remove any trailing slash at the end of the update host @@ -209,7 +258,7 @@ static void setUpdatesDir() { logger->log("Error: Invalid update host: %s", updateHost.c_str()); errorMessage = _("Invalid update host: ") + updateHost; - state = ERROR_STATE; + state = STATE_ERROR; } } else @@ -242,35 +291,39 @@ static void setUpdatesDir() logger->log("Error: %s can't be made, but doesn't exist!", newDir.c_str()); errorMessage = _("Error creating updates directory!"); - state = ERROR_STATE; + state = STATE_ERROR; } #else logger->log("Error: %s/%s can't be made, but doesn't exist!", homeDir.c_str(), updatesDir.c_str()); errorMessage = _("Error creating updates directory!"); - state = ERROR_STATE; + state = STATE_ERROR; #endif } } } /** - * Do all initialization stuff + * Initializes the home directory. On UNIX and FreeBSD, ~/.tmw is used. On + * Windows and other systems we use the current working directory. */ -static void init_engine(const Options &options) +static void initHomeDir() { - homeDir = std::string(PHYSFS_getUserDir()) + "/.aethyra"; + homeDir = std::string(PHYSFS_getUserDir()) + + "/." + + branding.getValue("appShort", "tmw"); #if defined WIN32 if (!CreateDirectory(homeDir.c_str(), 0) && GetLastError() != ERROR_ALREADY_EXISTS) #elif defined __APPLE__ - // Use Application Directory instead of .aethyra + // Use Application Directory instead of .tmw homeDir = std::string(PHYSFS_getUserDir()) + - "/Library/Application Support/Aethyra"; + "/Library/Application Support/" + + branding.getValue("appName", "The Mana World"); if ((mkdir(homeDir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0) && (errno != EEXIST)) #else - // Checking if /home/user/.Aethyra folder exists. + // Checking if /home/user/.tmw folder exists. if ((mkdir(homeDir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0) && (errno != EEXIST)) #endif @@ -280,20 +333,76 @@ static void init_engine(const Options &options) << std::endl; exit(1); } +} + +/** + * Initialize configuration. + */ +static void initConfiguration(const Options &options) +{ + // Fill configuration with defaults + logger->log("Initializing configuration..."); + std::string defaultHost = branding.getValue("defaultServer", + "server.themanaworld.org"); + config.setValue("host", defaultHost); +#ifdef TWMSERV_SUPPORT + int defaultPort = (int)branding.getValue("defaultPort", 9601); +#else + int defaultPort = (int)branding.getValue("defaultPort", 6901); +#endif + config.setValue("port", defaultPort); + config.setValue("hwaccel", 0); +#if (defined __APPLE__ || defined WIN32) && defined USE_OPENGL + config.setValue("opengl", 1); +#else + config.setValue("opengl", 0); +#endif + config.setValue("screen", 0); + config.setValue("sound", 1); + config.setValue("guialpha", 0.8f); + config.setValue("remember", 1); + config.setValue("sfxVolume", 100); + config.setValue("musicVolume", 60); + config.setValue("fpslimit", 0); + std::string defaultUpdateHost = branding.getValue("defaultUpdateHost", + "http://updates.themanaworld.org"); + config.setValue("updatehost", defaultUpdateHost); + config.setValue("customcursor", 1); + config.setValue("ChatLogLength", 128); + + // Checking if the configuration file exists... otherwise create it with + // default options. + FILE *configFile = 0; + std::string configPath = options.configPath; + + if (configPath.empty()) + configPath = homeDir + "/config.xml"; - // Set log file - logger->setLogFile(homeDir + std::string("/aethyra.log")); + configFile = fopen(configPath.c_str(), "r"); - #ifdef PACKAGE_VERSION - logger->log("Starting Aethyra Version %s", PACKAGE_VERSION); - #else - logger->log("Starting Aethyra - Version not defined")); - #endif + // If we can't read it, it doesn't exist ! + if (configFile == NULL) { + // We reopen the file in write mode and we create it + configFile = fopen(configPath.c_str(), "wt"); + } + if (configFile == NULL) { + std::cout << "Can't create " << configPath << ". " + << "Using Defaults." << std::endl; + } else { + fclose(configFile); + config.init(configPath); + } +} +/** + * Do all initialization stuff. + */ +static void initEngine(const Options &options) +{ // Initialize SDL logger->log("Initializing SDL..."); if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) < 0) { - std::cerr << _("Could not initialize SDL: ") << + std::cerr << "Could not initialize SDL: " << SDL_GetError() << std::endl; exit(1); } @@ -302,11 +411,13 @@ static void init_engine(const Options &options) SDL_EnableUNICODE(1); SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); + SDL_WM_SetCaption(branding.getValue("appName", "The Mana World").c_str(), NULL); + ResourceManager *resman = ResourceManager::getInstance(); if (!resman->setWriteDir(homeDir)) { std::cout << homeDir - << _(" couldn't be set as home directory! Exiting.") + << " couldn't be set as home directory! Exiting." << std::endl; exit(1); } @@ -326,7 +437,7 @@ static void init_engine(const Options &options) if (!CFURLGetFileSystemRepresentation(resourcesURL, TRUE, (UInt8 *)path, PATH_MAX)) { - fprintf(stderr, _("Can't find Resources directory\n")); + fprintf(stderr, "Can't find Resources directory\n"); } CFRelease(resourcesURL); strncat(path, "/data", PATH_MAX - 1); @@ -335,51 +446,6 @@ static void init_engine(const Options &options) resman->addToSearchPath(PKG_DATADIR "data", true); #endif - // Fill configuration with defaults - logger->log("Initializing configuration..."); - config.setValue("host", "www.aethyra.org"); - config.setValue("port", 21001); - config.setValue("hwaccel", 0); -#if (defined __APPLE__ || defined WIN32) && defined USE_OPENGL - config.setValue("opengl", 1); -#else - config.setValue("opengl", 0); -#endif - config.setValue("screen", 0); - config.setValue("sound", 1); - config.setValue("guialpha", 0.8f); - config.setValue("remember", 1); - config.setValue("sfxVolume", 100); - config.setValue("musicVolume", 60); - config.setValue("fpslimit", 0); - config.setValue("updatehost", "http://www.aethyra.org/updates"); - config.setValue("customcursor", 1); - config.setValue("ChatLogLength", 128); - - // Checking if the configuration file exists... otherwise creates it with - // default options ! - FILE *configFile = 0; - std::string configPath = options.configPath; - - if (configPath.empty()) - configPath = homeDir + "/config.xml"; - - configFile = fopen(configPath.c_str(), "r"); - - // If we can't read it, it doesn't exist ! - if (configFile == NULL) { - // We reopen the file in write mode and we create it - configFile = fopen(configPath.c_str(), "wt"); - } - if (configFile == NULL) { - std::cout << "Can't create " << configPath << ". " - "Using Defaults." << std::endl; - } else { - fclose(configFile); - config.init(configPath); - } - - SDL_WM_SetCaption("Aethyra", NULL); #ifdef WIN32 static SDL_SysWMinfo pInfo; SDL_GetWMInfo(&pInfo); @@ -389,7 +455,7 @@ static void init_engine(const Options &options) SetClassLong(pInfo.window, GCL_HICON, (LONG) icon); } #else - icon = IMG_Load(PKG_DATADIR "data/icons/aethyra.png"); + icon = IMG_Load(resman->getPath(branding.getValue("appIcon", "data/icons/tmw.png")).c_str()); if (icon) { SDL_SetAlpha(icon, SDL_SRCALPHA, SDL_ALPHA_OPAQUE); @@ -404,10 +470,10 @@ static void init_engine(const Options &options) Image::setLoadAsOpenGL(useOpenGL); // Create the graphics context - graphics = useOpenGL ? new OpenGLGraphics() : new Graphics(); + graphics = useOpenGL ? new OpenGLGraphics : new Graphics; #else // Create the graphics context - graphics = new Graphics(); + graphics = new Graphics; #endif const int width = (int) config.getValue("screenwidth", defaultScreenWidth); @@ -429,13 +495,17 @@ static void init_engine(const Options &options) graphics->_beginDraw(); // Initialize the item shortcuts. - itemShortcut = new ItemShortcut(); + itemShortcut = new ItemShortcut; // Initialize the emote shortcuts. - emoteShortcut = new EmoteShortcut(); + emoteShortcut = new EmoteShortcut; gui = new Gui(graphics); - state = LOGIN_STATE; /**< Initial game state */ +#ifdef TMWSERV_SUPPORT + state = STATE_CHOOSE_SERVER; /**< Initial game state */ +#else + state = STATE_LOGIN; /**< Initial game state */ +#endif // Initialize sound engine try @@ -450,7 +520,7 @@ static void init_engine(const Options &options) } catch (const char *err) { - state = ERROR_STATE; + state = STATE_ERROR; errorMessage = err; logger->log("Warning: %s", err); } @@ -463,7 +533,7 @@ static void init_engine(const Options &options) } /** Clear the engine */ -static void exit_engine() +static void exitEngine() { // Before config.write() since it writes the shortcuts to the config delete itemShortcut; @@ -486,9 +556,9 @@ static void exit_engine() ItemDB::unload(); MonsterDB::unload(); NPCDB::unload(); + StatusEffect::unload(); ResourceManager::deleteInstance(); - delete logger; SDL_FreeSurface(icon); } @@ -496,16 +566,19 @@ static void exit_engine() static void printHelp() { std::cout - << _("aethyra") << std::endl << std::endl + << _("tmw") << std::endl << std::endl << _("Options: ") << std::endl << _(" -C --configfile : Configuration file to use") << std::endl << _(" -d --data : Directory to load game data from") << std::endl << _(" -D --default : Bypass the login process with default settings") << std::endl << _(" -h --help : Display this help") << std::endl + << _(" -S --homedir : Directory to use as home directory") << std::endl << _(" -H --updatehost : Use this update host") << std::endl - << _(" -p --playername : Login with this player") << std::endl << _(" -P --password : Login with this password") << std::endl + << _(" -c --character : Login with this character") << std::endl + << _(" -o --port : Login Server Port") << std::endl + << _(" -s --server : Login Server name or IP") << std::endl << _(" -u --skipupdate : Skip the update downloads") << std::endl << _(" -U --username : Login with this username") << std::endl << _(" -v --version : Display the version") << std::endl; @@ -514,26 +587,28 @@ static void printHelp() static void printVersion() { #ifdef PACKAGE_VERSION - std::cout << _("Aethyra version ") << PACKAGE_VERSION << - std::endl; + std::cout << _("The Mana World version ") << PACKAGE_VERSION << std::endl; #else - std::cout << _("Aethyra version ") << + std::cout << _("The Mana World version ") << _("(local build?, PACKAGE_VERSION is not defined)") << std::endl; #endif } static void parseOptions(int argc, char *argv[], Options &options) { - const char *optstring = "hvud:U:P:Dp:C:H:"; + const char *optstring = "hvud:U:P:Dc:s:o:C:H:S:"; const struct option long_options[] = { { "configfile", required_argument, 0, 'C' }, { "data", required_argument, 0, 'd' }, { "default", no_argument, 0, 'D' }, - { "playername", required_argument, 0, 'p' }, { "password", required_argument, 0, 'P' }, + { "character", required_argument, 0, 'c' }, { "help", no_argument, 0, 'h' }, + { "homedir", required_argument, 0, 'S' }, { "updatehost", required_argument, 0, 'H' }, + { "port", required_argument, 0, 'o' }, + { "server", required_argument, 0, 's' }, { "skipupdate", no_argument, 0, 'u' }, { "username", required_argument, 0, 'U' }, { "version", no_argument, 0, 'v' }, @@ -566,12 +641,18 @@ static void parseOptions(int argc, char *argv[], Options &options) case 'H': options.updateHost = optarg; break; - case 'p': - options.playername = optarg; + case 'c': + options.character = optarg; break; case 'P': options.password = optarg; break; + case 's': + options.serverName = optarg; + break; + case 'o': + options.serverPort = (short)atoi(optarg); + break; case 'u': options.skipUpdate = true; break; @@ -581,6 +662,9 @@ static void parseOptions(int argc, char *argv[], Options &options) case 'v': options.printVersion = true; break; + case 'S': + homeDir = optarg; + break; } } } @@ -610,20 +694,64 @@ struct ErrorListener : public gcn::ActionListener { void action(const gcn::ActionEvent &event) { - state = loginData.registerLogin ? REGISTER_STATE : LOGIN_STATE; +#ifdef TMWSERV_SUPPORT + state = STATE_CHOOSE_SERVER; +#else + state = loginData.registerLogin ? STATE_REGISTER : STATE_LOGIN; +#endif } } errorListener; +#ifdef TMWSERV_SUPPORT +struct AccountListener : public gcn::ActionListener +{ + void action(const gcn::ActionEvent &event) + { + state = STATE_CHAR_SELECT; + } +} accountListener; + +struct LoginListener : public gcn::ActionListener +{ + void action(const gcn::ActionEvent &event) + { + state = STATE_LOGIN; + } +} loginListener; +#endif + +} // namespace + // TODO Find some nice place for these functions +#ifdef TMWSERV_SUPPORT +static void accountLogin(LoginData *loginData) +#else static void accountLogin(Network *network, LoginData *loginData) +#endif { +#ifdef EATHENA_SUPPORT logger->log("Trying to connect to account server..."); +#endif logger->log("Username is %s", loginData->username.c_str()); +#ifdef EATHENA_SUPPORT network->connect(loginData->hostname, loginData->port); network->registerHandler(&loginHandler); +#endif loginHandler.setLoginData(loginData); +#ifdef TMWSERV_SUPPORT + Net::registerHandler(&loginHandler); + + charServerHandler.setCharInfo(&charInfo); + Net::registerHandler(&charServerHandler); +#endif // Send login infos +#ifdef TMWSERV_SUPPORT + Net::AccountServer::login(accountServerConnection, + 0, // client version + loginData->username, + loginData->password); +#else MessageOut outMsg(network); outMsg.writeInt16(0x0064); outMsg.writeInt32(0); // client version @@ -637,16 +765,19 @@ static void accountLogin(Network *network, LoginData *loginData) * 0 here. */ outMsg.writeInt8(0x01); +#endif // Clear the password, avoids auto login when returning to login loginData->password = ""; +#ifdef EATHENA_SUPPORT // Remove _M or _F from username after a login for registration purpose if (loginData->registerLogin) { loginData->username = loginData->username.substr(0, loginData->username.length() - 2); } +#endif // TODO This is not the best place to save the config, but at least better // than the login gui window @@ -658,16 +789,13 @@ static void accountLogin(Network *network, LoginData *loginData) config.setValue("remember", loginData->remember); } -inline int MIN(int x, int y) -{ - return x < y ? x : y; -} +#ifdef EATHENA_SUPPORT static void positionDialog(Window *dialog, int screenWidth, int screenHeight) { dialog->setPosition( - MIN(screenWidth * 5 / 8, screenWidth - dialog->getWidth()), - MIN(screenHeight * 5 / 8, screenHeight - dialog->getHeight())); + (screenWidth - dialog->getWidth()) / 2, + (screenHeight - dialog->getHeight()) / 2); } static void charLogin(Network *network, LoginData *loginData) @@ -719,7 +847,143 @@ static void mapLogin(Network *network, LoginData *loginData) network->skip(4); } -} // namespace +#else + +static void accountRegister(LoginData *loginData) +{ + logger->log("Username is %s", loginData->username.c_str()); + + Net::registerHandler(&loginHandler); + + charServerHandler.setCharInfo(&charInfo); + Net::registerHandler(&charServerHandler); + + Net::AccountServer::registerAccount(accountServerConnection, + 0, // client version + loginData->username, + loginData->password, + loginData->email); +} + +static void accountUnRegister(LoginData *loginData) +{ + Net::registerHandler(&logoutHandler); + + Net::AccountServer::Account::unregister(loginData->username, + loginData->password); + +} + +static void accountChangePassword(LoginData *loginData) +{ + Net::registerHandler(&loginHandler); + + Net::AccountServer::Account::changePassword(loginData->username, + loginData->password, + loginData->newPassword); +} + +static void accountChangeEmail(LoginData *loginData) +{ + Net::registerHandler(&loginHandler); + + Net::AccountServer::Account::changeEmail(loginData->newEmail); +} + +static void switchCharacter(std::string *passToken) +{ + Net::registerHandler(&logoutHandler); + + logoutHandler.reset(); + logoutHandler.setScenario(LOGOUT_SWITCH_CHARACTER, passToken); + + Net::GameServer::logout(true); + Net::ChatServer::logout(); +} + +static void switchAccountServer() +{ + Net::registerHandler(&logoutHandler); + + logoutHandler.reset(); + logoutHandler.setScenario(LOGOUT_SWITCH_ACCOUNTSERVER); + + //Can't logout if we were not logged in ... + if (accountServerConnection->isConnected()) + { + Net::AccountServer::logout(); + } + else + { + logoutHandler.setAccountLoggedOut(); + } + + if (gameServerConnection->isConnected()) + { + Net::GameServer::logout(false); + } + else + { + logoutHandler.setGameLoggedOut(); + } + + if (chatServerConnection->isConnected()) + { + Net::ChatServer::logout(); + } + else + { + logoutHandler.setChatLoggedOut(); + } +} + +static void logoutThenExit() +{ + Net::registerHandler(&logoutHandler); + + logoutHandler.reset(); + logoutHandler.setScenario(LOGOUT_EXIT); + + // Can't logout if we were not logged in ... + if (accountServerConnection->isConnected()) + { + Net::AccountServer::logout(); + } + else + { + logoutHandler.setAccountLoggedOut(); + } + + if (gameServerConnection->isConnected()) + { + Net::GameServer::logout(false); + } + else + { + logoutHandler.setGameLoggedOut(); + } + + if (chatServerConnection->isConnected()) + { + Net::ChatServer::logout(); + } + else + { + logoutHandler.setChatLoggedOut(); + } +} + +static void reconnectAccount(const std::string &passToken) +{ + Net::registerHandler(&loginHandler); + + charServerHandler.setCharInfo(&charInfo); + Net::registerHandler(&charServerHandler); + + Net::AccountServer::reconnectAccount(accountServerConnection, passToken); +} + +#endif static void initInternationalization() { @@ -737,17 +1001,30 @@ static void initInternationalization() #endif } +static void xmlNullLogger(void *ctx, const char *msg, ...) +{ + // Does nothing, that's the whole point of it +} + +// Initialize libxml2 and check for potential ABI mismatches between +// compiled version and the shared library actually used. +static void initXML() +{ + xmlInitParser(); + LIBXML_TEST_VERSION; + + // Suppress libxml2 error messages + xmlSetGenericErrorFunc(NULL, xmlNullLogger); +} + extern "C" char const *_nl_locale_name_default(void); /** Main */ int main(int argc, char *argv[]) { - logger = new Logger(); - + // Parse command line options Options options; - parseOptions(argc, argv, options); - if (options.printHelp) { printHelp(); @@ -761,36 +1038,54 @@ int main(int argc, char *argv[]) initInternationalization(); - // Initialize libxml2 and check for potential ABI mismatches between - // compiled version and the shared library actually used. - xmlInitParser(); - LIBXML_TEST_VERSION; - - // Redirect libxml errors to /dev/null - FILE *nullFile = fopen("/dev/null", "w"); - xmlSetGenericErrorFunc(nullFile, NULL); - // Initialize PhysicsFS PHYSFS_init(argv[0]); - init_engine(options); + initXML(); - SDL_Event event; + // load branding information + branding.init("data/branding.xml"); - unsigned int oldstate = !state; // We start with a status change. + initHomeDir(); + // Configure logger + logger = new Logger(); + logger->setLogFile(homeDir + std::string("/tmw.log")); + logger->setLogToStandardOut(config.getValue("logToStandardOut", 0)); + + // Log the tmw version +#ifdef PACKAGE_VERSION +#ifdef TMWSERV_SUPPORT + logger->log("The Mana World v%s TMWServ", PACKAGE_VERSION); +#else + logger->log("The Mana World v%s eAthena", PACKAGE_VERSION); +#endif +#else + logger->log("The Mana World - version not defined"); +#endif + + initConfiguration(options); + + initEngine(options); // Needs to be created in main, as the updater uses it guiPalette = new Palette; Game *game = NULL; Window *currentDialog = NULL; +#ifdef TMWSERV_SUPPORT + QuitDialog* quitDialog = NULL; +#endif Image *login_wallpaper = NULL; - setupWindow = new Setup(); + setupWindow = new Setup; gcn::Container *top = static_cast<gcn::Container*>(gui->getTop()); #ifdef PACKAGE_VERSION - gcn::Label *versionLabel = new Label(PACKAGE_VERSION); - top->add(versionLabel, 2, 2); +#ifdef TMWSERV_SUPPORT + gcn::Label *versionLabel = new Label(strprintf("%s TMWserv", PACKAGE_VERSION)); +#else + gcn::Label *versionLabel = new Label(strprintf("%s eAthena", PACKAGE_VERSION)); +#endif + top->add(versionLabel, 25, 2); #endif ProgressBar *progressBar = new ProgressBar(0.0f, 100, 20, 168, 116, 31); gcn::Label *progressLabel = new Label(); @@ -802,7 +1097,22 @@ int main(int argc, char *argv[]) setup->setPosition(top->getWidth() - setup->getWidth() - 3, 3); top->add(setup); - sound.playMusic("Magick - Real.ogg"); + sound.playMusic(branding.getValue("loginMusic", "")); + + // Server choice + if (options.serverName.empty()) { + loginData.hostname = config.getValue("MostUsedServerName0", + branding.getValue("defaultServer", "server.themanaworld.org").c_str()); + } + else { + loginData.hostname = options.serverName; + } + if (options.serverPort == 0) { + loginData.port = (short)config.getValue("MostUsedServerPort0", + branding.getValue("defaultPort", 9601)); + } else { + loginData.port = options.serverPort; + } loginData.username = options.username; if (loginData.username.empty()) { @@ -813,18 +1123,30 @@ int main(int argc, char *argv[]) if (!options.password.empty()) { loginData.password = options.password; } - loginData.hostname = config.getValue("host", "www.aethyra.org"); - loginData.port = (short)config.getValue("port", 21001); + +#ifdef EATHENA_SUPPORT + loginData.hostname = config.getValue("host", "server.themanaworld.org"); + loginData.port = (short)config.getValue("port", 6901); +#endif loginData.remember = config.getValue("remember", 0); loginData.registerLogin = false; +#ifdef TMWSERV_SUPPORT + Net::initialize(); + accountServerConnection = Net::getConnection(); + gameServerConnection = Net::getConnection(); + chatServerConnection = Net::getConnection(); +#else SDLNet_Init(); - Network *network = new Network(); + Network *network = new Network; +#endif // Set the most appropriate wallpaper, based on screen width int screenWidth = (int) config.getValue("screenwidth", defaultScreenWidth); +#ifdef EATHENA_SUPPORT int screenHeight = static_cast<int>(config.getValue("screenheight", defaultScreenHeight)); +#endif std::string wallpaperName; wallpaperName = "graphics/images/login_wallpaper.png"; @@ -837,12 +1159,22 @@ int main(int argc, char *argv[]) else if (screenWidth >= 1600) wallpaperName = "graphics/images/login_wallpaper_1600x1200.png"; - login_wallpaper = ResourceManager::getInstance()-> getImage(wallpaperName); + if (!ResourceManager::getInstance()->exists(wallpaperName)) + wallpaperName = "graphics/images/login_wallpaper.png"; + + login_wallpaper = ResourceManager::getInstance()->getImage(wallpaperName); if (!login_wallpaper) logger->log("Couldn't load %s as wallpaper", wallpaperName.c_str()); - while (state != EXIT_STATE) + unsigned int oldstate = !state; // We start with a status change. + + SDL_Event event; +#ifdef TMWSERV_SUPPORT + while (state != STATE_FORCE_QUIT) +#else + while (state != STATE_EXIT) +#endif { // Handle SDL events while (SDL_PollEvent(&event)) @@ -850,32 +1182,50 @@ int main(int argc, char *argv[]) switch (event.type) { case SDL_QUIT: - state = EXIT_STATE; +#ifdef TMWSERV_SUPPORT + state = STATE_FORCE_QUIT; +#else + state = STATE_EXIT; +#endif break; case SDL_KEYDOWN: if (event.key.keysym.sym == SDLK_ESCAPE) - state = EXIT_STATE; - + { +#ifdef TMWSERV_SUPPORT + if (!quitDialog) + quitDialog = new QuitDialog(NULL, &quitDialog); + else + quitDialog->requestMoveToTop(); +#else + state = STATE_EXIT; +#endif + } break; } guiInput->pushInput(event); } +#ifdef TMWSERV_SUPPORT + Net::flush(); +#else network->flush(); network->dispatchMessages(); +#endif gui->logic(); +#ifdef EATHENA_SUPPORT if (network->getState() == Network::NET_ERROR) { - state = ERROR_STATE; + state = STATE_ERROR; if (!network->getError().empty()) errorMessage = network->getError(); else errorMessage = _("Got disconnected from server!"); } +#endif if (progressBar->isVisible()) { @@ -887,7 +1237,7 @@ int main(int argc, char *argv[]) if (graphics->getWidth() > login_wallpaper->getWidth() || graphics->getHeight() > login_wallpaper->getHeight()) { - graphics->setColor(gcn::Color(255, 255, 255)); + graphics->setColor(gcn::Color(64, 64, 64)); graphics->fillRectangle(gcn::Rectangle( 0, 0, graphics->getWidth(), graphics->getHeight())); } @@ -897,11 +1247,320 @@ int main(int argc, char *argv[]) gui->draw(); graphics->updateScreen(); +#ifdef TMWSERV_SUPPORT + // TODO: Add connect timeouts + if (state == STATE_CONNECT_ACCOUNT && + accountServerConnection->isConnected()) + { + if (options.skipUpdate) { + state = STATE_LOADDATA; + } else { + state = STATE_UPDATE; + } + } + else if (state == STATE_CONNECT_GAME && + gameServerConnection->isConnected() && + chatServerConnection->isConnected()) + { + accountServerConnection->disconnect(); + Net::clearHandlers(); + + state = STATE_GAME; + } + else if (state == STATE_RECONNECT_ACCOUNT && + accountServerConnection->isConnected()) + { + reconnectAccount(token); + state = STATE_WAIT; + } + + if (state != oldstate) + { + // Load updates after exiting the update state + if (oldstate == STATE_UPDATE) + { + loadUpdates(); + // Reload the wallpaper in case that it was updated + login_wallpaper->decRef(); + login_wallpaper = ResourceManager::getInstance()->getImage( + branding.getValue("loginWallpaper", + "graphics/images/login_wallpaper.png")); + } + + oldstate = state; + + // Get rid of the dialog of the previous state + if (currentDialog) { + delete currentDialog; + currentDialog = NULL; + } + // State has changed, while the quitDialog was active, it might + // not be correct anymore + if (quitDialog) { + quitDialog->scheduleDelete(); + } + + switch (state) { + case STATE_CHOOSE_SERVER: + logger->log("State: CHOOSE_SERVER"); + + // Allow changing this using a server choice dialog + // We show the dialog box only if the command-line + // options weren't set. + if (options.serverName.empty() && options.serverPort == 0) { + currentDialog = new ServerDialog(&loginData); + } else { + state = STATE_CONNECT_ACCOUNT; + + // Reset options so that cancelling or connect + // timeout will show the server dialog. + options.serverName.clear(); + options.serverPort = 0; + } + break; + + case STATE_CONNECT_ACCOUNT: + logger->log("State: CONNECT_ACCOUNT"); + logger->log("Trying to connect to account server..."); + accountServerConnection->connect(loginData.hostname, + loginData.port); + currentDialog = new ConnectionDialog( + STATE_SWITCH_ACCOUNTSERVER_ATTEMPT); + break; + + case STATE_UPDATE: + // Determine which source to use for the update host + if (!options.updateHost.empty()) + updateHost = options.updateHost; + else + updateHost = loginData.updateHost; + + setUpdatesDir(); + logger->log("State: UPDATE"); + currentDialog = new UpdaterWindow(updateHost, + homeDir + "/" + updatesDir); + break; + + case STATE_LOGIN: + logger->log("State: LOGIN"); + if (options.username.empty() + || options.password.empty()) { + currentDialog = new LoginDialog(&loginData); + } else { + state = STATE_LOGIN_ATTEMPT; + // Clear the password so that when login fails, the + // dialog will show up next time. + options.password.clear(); + } + break; + + case STATE_LOADDATA: + logger->log("State: LOADDATA"); + + // Add customdata directory + ResourceManager::getInstance()->searchAndAddArchives( + "customdata/", + "zip", + false); + + // Load XML databases + ColorDB::load(); + ItemDB::load(); + MonsterDB::load(); + NPCDB::load(); + EmoteDB::load(); + Units::loadUnits(); + + state = STATE_LOGIN; + break; + + case STATE_LOGIN_ATTEMPT: + accountLogin(&loginData); + break; + + case STATE_LOGIN_ERROR: + logger->log("State: LOGIN ERROR"); + currentDialog = new OkDialog("Error ", errorMessage); + currentDialog->addActionListener(&loginListener); + currentDialog = NULL; // OkDialog deletes itself + break; + + case STATE_SWITCH_ACCOUNTSERVER: + logger->log("State: SWITCH_ACCOUNTSERVER"); + + gameServerConnection->disconnect(); + chatServerConnection->disconnect(); + accountServerConnection->disconnect(); + + state = STATE_CHOOSE_SERVER; + break; + + case STATE_SWITCH_ACCOUNTSERVER_ATTEMPT: + logger->log("State: SWITCH_ACCOUNTSERVER_ATTEMPT"); + switchAccountServer(); + + state = STATE_SWITCH_ACCOUNTSERVER; + break; + + case STATE_REGISTER: + logger->log("State: REGISTER"); + currentDialog = new RegisterDialog(&loginData); + break; + + case STATE_REGISTER_ATTEMPT: + accountRegister(&loginData); + break; + + case STATE_CHAR_SELECT: + logger->log("State: CHAR_SELECT"); + currentDialog = + new CharSelectDialog(&charInfo, &loginData); + + if (((CharSelectDialog*) currentDialog)-> + selectByName(options.character)) { + ((CharSelectDialog*) currentDialog)->action( + gcn::ActionEvent(NULL, "ok")); + } else { + ((CharSelectDialog*) currentDialog)->selectByName( + config.getValue("lastCharacter", "")); + } + + break; + + case STATE_CHANGEEMAIL_ATTEMPT: + logger->log("State: CHANGE EMAIL ATTEMPT"); + accountChangeEmail(&loginData); + break; + + case STATE_CHANGEEMAIL: + logger->log("State: CHANGE EMAIL"); + currentDialog = new OkDialog("Email Address change", + "Email Address changed successfully!"); + currentDialog->addActionListener(&accountListener); + currentDialog = NULL; // OkDialog deletes itself + loginData.email = loginData.newEmail; + loginData.newEmail = ""; + break; + + case STATE_CHANGEPASSWORD_ATTEMPT: + logger->log("State: CHANGE PASSWORD ATTEMPT"); + accountChangePassword(&loginData); + break; + + case STATE_CHANGEPASSWORD: + logger->log("State: CHANGE PASSWORD"); + currentDialog = new OkDialog("Password change", + "Password changed successfully!"); + currentDialog->addActionListener(&accountListener); + currentDialog = NULL; // OkDialog deletes itself + loginData.password = loginData.newPassword; + loginData.newPassword = ""; + break; + + case STATE_UNREGISTER_ATTEMPT: + logger->log("State: UNREGISTER ATTEMPT"); + accountUnRegister(&loginData); + break; + + case STATE_UNREGISTER: + logger->log("State: UNREGISTER"); + accountServerConnection->disconnect(); + currentDialog = new OkDialog("Unregister successful", + "Farewell, come back any time ...."); + loginData.clear(); + //The errorlistener sets the state to STATE_CHOOSE_SERVER + currentDialog->addActionListener(&errorListener); + currentDialog = NULL; // OkDialog deletes itself + break; + + case STATE_ACCOUNTCHANGE_ERROR: + logger->log("State: ACCOUNT CHANGE ERROR"); + currentDialog = new OkDialog("Error ", errorMessage); + currentDialog->addActionListener(&accountListener); + currentDialog = NULL; // OkDialog deletes itself + break; + + + case STATE_ERROR: + logger->log("State: ERROR"); + currentDialog = new OkDialog("Error", errorMessage); + currentDialog->addActionListener(&errorListener); + currentDialog = NULL; // OkDialog deletes itself + gameServerConnection->disconnect(); + chatServerConnection->disconnect(); + Net::clearHandlers(); + break; + + case STATE_CONNECT_GAME: + logger->log("State: CONNECT_GAME"); + currentDialog = new ConnectionDialog(STATE_SWITCH_ACCOUNTSERVER_ATTEMPT); + break; + + case STATE_GAME: + logger->log("Memorizing selected character %s", + player_node->getName().c_str()); + config.setValue("lastCharacter", player_node->getName()); + + Net::GameServer::connect(gameServerConnection, token); + Net::ChatServer::connect(chatServerConnection, token); + sound.fadeOutMusic(1000); + +#ifdef PACKAGE_VERSION + delete versionLabel; + versionLabel = NULL; +#endif + currentDialog = NULL; + + logger->log("State: GAME"); + game = new Game; + game->logic(); + delete game; + + // If the quitdialog didn't set the next state + if (state == STATE_GAME) + { + state = STATE_EXIT; + } + break; + + case STATE_SWITCH_CHARACTER: + logger->log("State: SWITCH_CHARACTER"); + switchCharacter(&token); + break; + + case STATE_RECONNECT_ACCOUNT: + logger->log("State: RECONNECT_ACCOUNT"); + + // Done with game & chat + gameServerConnection->disconnect(); + chatServerConnection->disconnect(); + + accountServerConnection->connect( + loginData.hostname, + loginData.port); + break; + + case STATE_WAIT: + break; + + case STATE_EXIT: + logger->log("State: EXIT"); + logoutThenExit(); + break; + + default: + state = STATE_FORCE_QUIT; + break; + } + } + +#else // no TMWSERV_SUPPORT + if (state != oldstate) { switch (oldstate) { - case UPDATE_STATE: + case STATE_UPDATE: loadUpdates(); // Reload the wallpaper in case that it was updated login_wallpaper->decRef(); @@ -910,12 +1569,12 @@ int main(int argc, char *argv[]) break; // Those states don't cause a network disconnect - case LOADDATA_STATE: + case STATE_LOADDATA: break; - case ACCOUNT_STATE: - case CHAR_CONNECT_STATE: - case CONNECTING_STATE: + case STATE_ACCOUNT: + case STATE_CHAR_CONNECT: + case STATE_CONNECTING: progressBar->setVisible(false); progressLabel->setCaption(""); break; @@ -928,8 +1587,8 @@ int main(int argc, char *argv[]) oldstate = state; - if (currentDialog && state != ACCOUNT_STATE && - state != CHAR_CONNECT_STATE) + if (currentDialog && state != STATE_ACCOUNT && + state != STATE_CHAR_CONNECT) { delete currentDialog; currentDialog = NULL; @@ -937,7 +1596,7 @@ int main(int argc, char *argv[]) switch (state) { - case LOADDATA_STATE: + case STATE_LOADDATA: logger->log("State: LOADDATA"); // Add customdata directory @@ -952,18 +1611,22 @@ int main(int argc, char *argv[]) MonsterDB::load(); NPCDB::load(); EmoteDB::load(); + StatusEffect::load(); Being::load(); // Hairstyles - state = CHAR_CONNECT_STATE; + // Load units + Units::loadUnits(); + + state = STATE_CHAR_CONNECT; break; - case LOGIN_STATE: + case STATE_LOGIN: logger->log("State: LOGIN"); if (!loginData.password.empty()) { loginData.registerLogin = false; - state = ACCOUNT_STATE; + state = STATE_ACCOUNT; } else { @@ -973,13 +1636,13 @@ int main(int argc, char *argv[]) } break; - case REGISTER_STATE: + case STATE_REGISTER: logger->log("State: REGISTER"); currentDialog = new RegisterDialog(&loginData); positionDialog(currentDialog, screenWidth, screenHeight); break; - case CHAR_SERVER_STATE: + case STATE_CHAR_SERVER: logger->log("State: CHAR_SERVER"); if (n_server == 1) @@ -988,32 +1651,32 @@ int main(int argc, char *argv[]) loginData.hostname = ipToString(si->address); loginData.port = si->port; loginData.updateHost = si->updateHost; - state = UPDATE_STATE; + state = STATE_UPDATE; } else { - int nextState = UPDATE_STATE; + int nextState = STATE_UPDATE; currentDialog = new ServerSelectDialog(&loginData, nextState); positionDialog(currentDialog, screenWidth, screenHeight); if (options.chooseDefault - || !options.playername.empty()) + || !options.character.empty()) { ((ServerSelectDialog*) currentDialog)->action( gcn::ActionEvent(NULL, "ok")); } } break; - case CHAR_SELECT_STATE: + case STATE_CHAR_SELECT: logger->log("State: CHAR_SELECT"); currentDialog = new CharSelectDialog(network, &charInfo, - (loginData.sex == 0) ? - GENDER_FEMALE : GENDER_MALE); + (loginData.sex == 0) ? + GENDER_FEMALE : GENDER_MALE); positionDialog(currentDialog, screenWidth, screenHeight); if (((CharSelectDialog*) currentDialog)-> - selectByName(options.playername)) + selectByName(options.character)) options.chooseDefault = true; else ((CharSelectDialog*) currentDialog)->selectByName( @@ -1025,7 +1688,7 @@ int main(int argc, char *argv[]) break; - case GAME_STATE: + case STATE_GAME: sound.fadeOutMusic(1000); #ifdef PACKAGE_VERSION @@ -1046,13 +1709,13 @@ int main(int argc, char *argv[]) game = new Game(network); game->logic(); delete game; - state = EXIT_STATE; + state = STATE_EXIT; break; - case UPDATE_STATE: + case STATE_UPDATE: if (options.skipUpdate) { - state = LOADDATA_STATE; + state = STATE_LOADDATA; } else { @@ -1072,7 +1735,7 @@ int main(int argc, char *argv[]) } break; - case ERROR_STATE: + case STATE_ERROR: logger->log("State: ERROR"); currentDialog = new OkDialog(_("Error"), errorMessage); positionDialog(currentDialog, screenWidth, screenHeight); @@ -1082,7 +1745,7 @@ int main(int argc, char *argv[]) network->clearHandlers(); break; - case CONNECTING_STATE: + case STATE_CONNECTING: logger->log("State: CONNECTING"); progressBar->setVisible(true); progressLabel->setCaption( @@ -1091,7 +1754,7 @@ int main(int argc, char *argv[]) mapLogin(network, &loginData); break; - case CHAR_CONNECT_STATE: + case STATE_CHAR_CONNECT: progressBar->setVisible(true); progressLabel->setCaption( _("Connecting to character server...")); @@ -1099,7 +1762,7 @@ int main(int argc, char *argv[]) charLogin(network, &loginData); break; - case ACCOUNT_STATE: + case STATE_ACCOUNT: progressBar->setVisible(true); progressLabel->setCaption( _("Connecting to account server...")); @@ -1108,10 +1771,11 @@ int main(int argc, char *argv[]) break; default: - state = EXIT_STATE; + state = STATE_EXIT; break; } } +#endif /* * This loop can really stress the CPU, for no reason since it's * just constantly redrawing the wallpaper. Added the following @@ -1129,15 +1793,28 @@ int main(int argc, char *argv[]) delete setup; delete setupWindow; +#ifdef TMWSERV_SUPPORT + if (accountServerConnection) + accountServerConnection->disconnect(); + if (gameServerConnection) + gameServerConnection->disconnect(); + if (chatServerConnection) + chatServerConnection->disconnect(); + + delete accountServerConnection; + delete gameServerConnection; + delete chatServerConnection; + Net::finalize(); +#else delete network; SDLNet_Quit(); +#endif - if (nullFile) - fclose(nullFile); - - logger->log("State: EXIT"); - exit_engine(); + logger->log("Quitting"); + exitEngine(); PHYSFS_deinit(); + delete logger; + return 0; } @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,6 +22,35 @@ #ifndef MAIN_H #define MAIN_H +/** + * \mainpage + * + * \section Introduction Introduction + * + * This is the documentation for the client of The Mana World + * (http://themanaworld.org). It is always a work in progress, with the intent + * to make it easier for new developers to grow familiar with the source code. + * + * \section General General information + * + * During the game, the current Map is displayed by the main Viewport, which + * is the bottom-most widget in the WindowContainer. Aside the viewport, the + * window container keeps track of all the \link Window Windows\endlink + * displayed during the game. It is the <i>top</i> widget for Guichan. + * + * A Map is composed of several layers of \link Image Images\endlink (tiles), + * a layer with collision information and \link Sprite Sprites\endlink. The + * sprites define the visible part of \link Being Beings\endlink and + * \link FloorItem FloorItems\endlink, they are drawn from top to bottom + * by the map, interleaved with the tiles in the fringe layer. + * + * The server is split up into an \link Net::AccountServer account + * server\endlink, a \link Net::ChatServer chat server\endlink and a \link + * Net::GameServer game server\endlink. There may be multiple game servers. + * Handling of incoming messages is spread over several \link MessageHandler + * MessageHanders\endlink. + */ + #include <string> #ifdef HAVE_CONFIG_H @@ -41,20 +69,43 @@ * Client different States */ enum { - EXIT_STATE, - LOADDATA_STATE, - LOGIN_STATE, - ACCOUNT_STATE, - REGISTER_STATE, - CHAR_CONNECT_STATE, - CHAR_SERVER_STATE, - CHAR_SELECT_STATE, - CHAR_NEW_STATE, - CHAR_DEL_STATE, - GAME_STATE, - ERROR_STATE, - UPDATE_STATE, - CONNECTING_STATE + STATE_EXIT, + STATE_LOADDATA, + STATE_LOGIN, + STATE_REGISTER, + STATE_CHAR_SELECT, + STATE_GAME, + STATE_ERROR, + STATE_UPDATE, +#ifdef TMWSERV_SUPPORT + STATE_CHOOSE_SERVER, + STATE_CONNECT_ACCOUNT, + STATE_LOGIN_ATTEMPT, + STATE_LOGIN_ERROR, + STATE_REGISTER_ATTEMPT, + STATE_ACCOUNTCHANGE_ERROR, + STATE_CHANGEEMAIL_ATTEMPT, + STATE_CHANGEEMAIL, + STATE_CHANGEPASSWORD_ATTEMPT, + STATE_CHANGEPASSWORD, + STATE_UNREGISTER_ATTEMPT, + STATE_UNREGISTER, + STATE_SWITCH_CHARACTER, + STATE_RECONNECT_ACCOUNT, + STATE_SWITCH_ACCOUNTSERVER_ATTEMPT, + STATE_SWITCH_ACCOUNTSERVER, + STATE_LOGOUT_ATTEMPT, + STATE_CONNECT_GAME, + STATE_WAIT, + STATE_FORCE_QUIT +#else + STATE_ACCOUNT, + STATE_CHAR_CONNECT, + STATE_CHAR_SERVER, + STATE_CHAR_NEW, + STATE_CHAR_DEL, + STATE_CONNECTING +#endif }; /* length definitions for several char[]s in order @@ -77,7 +128,15 @@ const short defaultScreenHeight = 600; const short defaultSfxVolume = 100; const short defaultMusicVolume = 60; +// Defines the number of usable player slots +const short maxSlot = 2; + +#ifdef TMWSERV_SUPPORT +extern std::string token; +#else extern char n_server, n_character; +#endif + extern unsigned char state; extern std::string errorMessage; diff --git a/src/map.cpp b/src/map.cpp index 877a8ba9..551c10f3 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -142,7 +141,11 @@ void MapLayer::draw(Graphics *graphics, int startX, int startY, // tiles have been drawn if (mIsFringeLayer) { +#ifdef TMWSERV_SUPPORT + while (si != sprites.end() && (*si)->getPixelY() <= y * 32) +#else while (si != sprites.end() && (*si)->getPixelY() <= y * 32 - 32) +#endif { (*si)->draw(graphics, -scrollX, -scrollY); si++; @@ -182,12 +185,21 @@ Map::Map(int width, int height, int tileWidth, int tileHeight): const int size = mWidth * mHeight; mMetaTiles = new MetaTile[size]; + for (int i = 0; i < NB_BLOCKTYPES; i++) + { + mOccupation[i] = new int[size]; + memset(mOccupation[i], 0, size * sizeof(int)); + } } Map::~Map() { // delete metadata, layers, tilesets and overlays delete[] mMetaTiles; + for (int i = 0; i < NB_BLOCKTYPES; i++) + { + delete[] mOccupation[i]; + } delete_all(mLayers); delete_all(mTilesets); delete_all(mOverlays); @@ -278,6 +290,59 @@ void Map::draw(Graphics *graphics, int scrollX, int scrollY) (int) config.getValue("OverlayDetail", 2)); } +void Map::drawCollision(Graphics *graphics, int scrollX, int scrollY) +{ + int endPixelY = graphics->getHeight() + scrollY + mTileHeight - 1; + int startX = scrollX / mTileWidth; + int startY = scrollY / mTileHeight; + int endX = (graphics->getWidth() + scrollX + mTileWidth - 1) / mTileWidth; + int endY = endPixelY / mTileHeight; + + if (startX < 0) startX = 0; + if (startY < 0) startY = 0; + if (endX > mWidth) endX = mWidth; + if (endY > mHeight) endY = mHeight; + + for (int y = startY; y < endY; y++) + { + for (int x = startX; x < endX; x++) + { + graphics->setColor(gcn::Color(0, 0, 0, 64)); + graphics->drawRectangle(gcn::Rectangle( + x * mTileWidth - scrollX, + y * mTileWidth - scrollY, + 33, 33)); + + if (!getWalk(x, y, BLOCKMASK_WALL)) + { + graphics->setColor(gcn::Color(0, 0, 200, 64)); + graphics->fillRectangle(gcn::Rectangle( + x * mTileWidth - scrollX, + y * mTileWidth - scrollY, + 32, 32)); + } + + if (!getWalk(x, y, BLOCKMASK_MONSTER)) + { + graphics->setColor(gcn::Color(200, 0, 0, 64)); + graphics->fillRectangle(gcn::Rectangle( + x * mTileWidth - scrollX, + y * mTileWidth - scrollY, + 32, 32)); + } + + if (!getWalk(x, y, BLOCKMASK_CHARACTER)) + { + graphics->setColor(gcn::Color(0, 200, 0, 64)); + graphics->fillRectangle(gcn::Rectangle( + x * mTileWidth - scrollX, + y * mTileWidth - scrollY, + 32, 32)); + } + } + } +} + void Map::drawOverlay(Graphics *graphics, float scrollX, float scrollY, int detail) { @@ -334,34 +399,46 @@ Tileset* Map::getTilesetWithGid(int gid) const containsGid.gid = gid; Tilesets::const_iterator i = find_if(mTilesets.begin(), mTilesets.end(), - containsGid); + containsGid); return (i == mTilesets.end()) ? NULL : *i; } -void Map::setWalk(int x, int y, bool walkable) +void Map::blockTile(int x, int y, BlockType type) { - mMetaTiles[x + y * mWidth].walkable = walkable; -} - -bool Map::occupied(int x, int y) const -{ - Beings &beings = beingManager->getAll(); - for (BeingIterator i = beings.begin(); i != beings.end(); i++) + if (type == BLOCKTYPE_NONE || !contains(x, y)) + return; + + int tileNum = x + y * mWidth; + + if ((++mOccupation[type][tileNum]) > 0) { - // job 45 is a portal, they don't collide - if ((*i)->mX == x && (*i)->mY == y && (*i)->mJob != 45) + switch (type) { - return true; + case BLOCKTYPE_WALL: + mMetaTiles[tileNum].blockmask |= BLOCKMASK_WALL; + break; + case BLOCKTYPE_CHARACTER: + mMetaTiles[tileNum].blockmask |= BLOCKMASK_CHARACTER; + break; + case BLOCKTYPE_MONSTER: + mMetaTiles[tileNum].blockmask |= BLOCKMASK_MONSTER; + break; + default: + // shut up! + break; } } - - return false; } -bool Map::tileCollides(int x, int y) const +bool Map::getWalk(int x, int y, char walkmask) const { - return !(contains(x, y) && mMetaTiles[x + y * mWidth].walkable); + // You can't walk outside of the map + if (!contains(x, y)) + return false; + + // Check if the tile is walkable + return !(mMetaTiles[x + y * mWidth].blockmask & walkmask); } bool Map::contains(int x, int y) const @@ -369,7 +446,7 @@ bool Map::contains(int x, int y) const return x >= 0 && y >= 0 && x < mWidth && y < mHeight; } -MetaTile* Map::getMetaTile(int x, int y) +MetaTile* Map::getMetaTile(int x, int y) const { return &mMetaTiles[x + y * mWidth]; } @@ -385,7 +462,9 @@ void Map::removeSprite(SpriteIterator iterator) mSprites.erase(iterator); } -Path Map::findPath(int startX, int startY, int destX, int destY) +static int const basicCost = 100; + +Path Map::findPath(int startX, int startY, int destX, int destY, unsigned char walkmask, int maxCost) { // Path to be built up (empty by default) Path path; @@ -393,6 +472,9 @@ Path Map::findPath(int startX, int startY, int destX, int destY) // Declare open list, a list with open tiles sorted on F cost std::priority_queue<Location> openList; + // Return when destination not walkable + if (!getWalk(destX, destY, walkmask)) return path; + // Reset starting tile's G cost to 0 MetaTile *startTile = getMetaTile(startX, startY); startTile->Gcost = 0; @@ -437,35 +519,55 @@ Path Map::findPath(int startX, int startY, int destX, int destY) MetaTile *newTile = getMetaTile(x, y); - // Skip if the tile is on the closed list or collides unless - // its the destination tile + // Skip if the tile is on the closed list or is not walkable + // unless its the destination tile if (newTile->whichList == mOnClosedList || - (tileCollides(x, y) && !(x == destX && y == destY))) + ((newTile->blockmask & walkmask) && !(x == destX && y == destY))) { continue; } // When taking a diagonal step, verify that we can skip the - // corner. We allow skipping past beings but not past non- - // walkable tiles. + // corner. if (dx != 0 && dy != 0) { MetaTile *t1 = getMetaTile(curr.x, curr.y + dy); MetaTile *t2 = getMetaTile(curr.x + dx, curr.y); - if (!(t1->walkable && t2->walkable)) + if (t1->blockmask & walkmask && !(t2->blockmask & walkmask)) // I hope I didn't fuck this line up { continue; } } - // Calculate G cost for this route, 10 for moving straight and - // 14 for moving diagonal (sqrt(200) = 14.1421...) - int Gcost = curr.tile->Gcost + ((dx == 0 || dy == 0) ? 10 : 14); + // Calculate G cost for this route, ~sqrt(2) for moving diagonal + int Gcost = curr.tile->Gcost + + (dx == 0 || dy == 0 ? basicCost : basicCost * 362 / 256); + + /* Demote an arbitrary direction to speed pathfinding by + adding a defect (TODO: change depending on the desired + visual effect, e.g. a cross-product defect toward + destination). + Important: as long as the total defect along any path is + less than the basicCost, the pathfinder will still find one + of the shortest paths! */ + if (dx == 0 || dy == 0) + { + // Demote horizontal and vertical directions, so that two + // consecutive directions cannot have the same Fcost. + ++Gcost; + } + + // It costs extra to walk through a being (needs to be enough + // to make it more attractive to walk around). + if (!getWalk(x, y, BLOCKMASK_CHARACTER | BLOCKMASK_MONSTER)) + { + Gcost += 3 * basicCost; + } // Skip if Gcost becomes too much // Warning: probably not entirely accurate - if (Gcost > 200) + if (Gcost > maxCost * basicCost) { continue; } @@ -473,8 +575,14 @@ Path Map::findPath(int startX, int startY, int destX, int destY) if (newTile->whichList != mOnOpenList) { // Found a new tile (not on open nor on closed list) - // Update Hcost of the new tile using Manhatten distance - newTile->Hcost = 10 * (abs(x - destX) + abs(y - destY)); + + /* Update Hcost of the new tile. The pathfinder does not + work reliably if the heuristic cost is higher than the + real cost. In particular, using Manhattan distance is + forbidden here. */ + int dx = std::abs(x - destX), dy = std::abs(y - destY); + newTile->Hcost = std::abs(dx - dy) * basicCost + + std::min(dx, dy) * (basicCost * 362 / 256); // Set the current tile as the parent of the new tile newTile->parentX = curr.x; @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -54,7 +53,7 @@ struct MetaTile /** * Constructor. */ - MetaTile():whichList(0) {}; + MetaTile():whichList(0), blockmask(0) {}; // Pathfinding members int Fcost; /**< Estimation of total path cost */ @@ -63,7 +62,7 @@ struct MetaTile int whichList; /**< No list, open list or closed list */ int parentX; /**< X coordinate of parent tile */ int parentY; /**< Y coordinate of parent tile */ - bool walkable; /**< Can beings walk on this tile */ + unsigned char blockmask; /**< Blocking properties of this tile */ }; /** @@ -144,6 +143,15 @@ class MapLayer class Map : public Properties { public: + enum BlockType + { + BLOCKTYPE_NONE = -1, + BLOCKTYPE_WALL, + BLOCKTYPE_CHARACTER, + BLOCKTYPE_MONSTER, + NB_BLOCKTYPES + }; + /** * Constructor, taking map and tile size as parameters. */ @@ -176,6 +184,11 @@ class Map : public Properties void draw(Graphics *graphics, int scrollX, int scrollY); /** + * Visualizes collision layer for debugging + */ + void drawCollision(Graphics *graphics, int scrollX, int scrollY); + + /** * Adds a layer to this map. The map takes ownership of the layer. */ void addLayer(MapLayer *layer); @@ -193,17 +206,18 @@ class Map : public Properties /** * Get tile reference. */ - MetaTile *getMetaTile(int x, int y); + MetaTile *getMetaTile(int x, int y) const; /** - * Set walkability flag for a tile. + * Marks a tile as occupied */ - void setWalk(int x, int y, bool walkable); + void blockTile(int x, int y, BlockType type); /** - * Tell if a tile collides, not including a check on beings. + * Gets walkability for a tile with a blocking bitmask. When called + * without walkmask, only blocks against colliding tiles. */ - bool tileCollides(int x, int y) const; + bool getWalk(int x, int y, char walkmask = BLOCKMASK_WALL) const; /** * Returns the width of this map. @@ -228,7 +242,8 @@ class Map : public Properties /** * Find a path from one location to the next. */ - Path findPath(int startX, int startY, int destX, int destY); + Path findPath(int startX, int startY, int destX, int destY, + unsigned char walkmask, int maxCost = 20); /** * Adds a sprite to the map. @@ -269,14 +284,17 @@ class Map : public Properties int detail); /** - * Tells whether a tile is occupied by a being. + * Tells whether the given coordinates fall within the map boundaries. */ - bool occupied(int x, int y) const; + bool contains(int x, int y) const; /** - * Tells whether the given coordinates fall within the map boundaries. + * Blockmasks for different entities */ - bool contains(int x, int y) const; + static const unsigned char BLOCKMASK_WALL = 0x80; // = bin 1000 0000 + static const unsigned char BLOCKMASK_CHARACTER = 0x01;// = bin 0000 0001 + static const unsigned char BLOCKMASK_MONSTER = 0x02; // = bin 0000 0010 + int *mOccupation[NB_BLOCKTYPES]; int mWidth, mHeight; int mTileWidth, mTileHeight; diff --git a/src/monster.cpp b/src/monster.cpp index f71457df..eaea6225 100644 --- a/src/monster.cpp +++ b/src/monster.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -40,7 +39,7 @@ Monster::Monster(int id, Uint16 job, Map *map): Being(id, job, map), mText(0) { - const MonsterInfo& info = MonsterDB::get(job - 1002); + const MonsterInfo& info = getInfo(); // Setup Monster sprites int c = BASE_SPRITE; @@ -82,11 +81,12 @@ Monster::~Monster() delete mText; } +#ifdef EATHENA_SUPPORT void Monster::logic() { if (mAction != STAND) { - mFrame = (get_elapsed_time(mWalkTime) * 4) / mWalkSpeed; + mFrame = (get_elapsed_time(mWalkTime) * 4) / getWalkSpeed(); if (mFrame >= 4 && mAction != DEAD) { @@ -96,13 +96,14 @@ void Monster::logic() Being::logic(); } +#endif Being::Type Monster::getType() const { return MONSTER; } -void Monster::setAction(Action action) +void Monster::setAction(Action action, int attackType) { SpriteAction currentAction = ACTION_INVALID; int rotation = 0; @@ -118,11 +119,11 @@ void Monster::setAction(Action action) sound.playSfx(getInfo().getSound(MONSTER_EVENT_DIE)); break; case ATTACK: - currentAction = ACTION_ATTACK; + currentAction = getInfo().getAttackAction(attackType); mSprites[BASE_SPRITE]->reset(); //attack particle effect - particleEffect = getInfo().getAttackParticleEffect(); + particleEffect = getInfo().getAttackParticleEffect(attackType); if (!particleEffect.empty() && mParticleEffects) { switch (mDirection) @@ -163,6 +164,22 @@ void Monster::setAction(Action action) } } +#ifdef TMWSERV_SUPPORT + +void Monster::handleAttack() +{ + Being::handleAttack(); + + const MonsterInfo &mi = getInfo(); + + // TODO: It's not possible to determine hit or miss here, so this stuff + // probably needs to be moved somewhere else. We may lose synchronization + // between attack animation and the sound, unless we adapt the protocol... + sound.playSfx(mi.getSound(MONSTER_EVENT_HIT)); +} + +#else + void Monster::handleAttack(Being *victim, int damage, AttackType type) { Being::handleAttack(victim, damage, type); @@ -172,6 +189,8 @@ void Monster::handleAttack(Being *victim, int damage, AttackType type) MONSTER_EVENT_HIT : MONSTER_EVENT_MISS)); } +#endif + void Monster::takeDamage(Being *attacker, int amount, AttackType type) { if (amount > 0) sound.playSfx(getInfo().getSound(MONSTER_EVENT_HURT)); @@ -185,15 +204,17 @@ Being::TargetCursorSize Monster::getTargetCursorSize() const const MonsterInfo &Monster::getInfo() const { +#ifdef TMWSERV_SUPPORT + return MonsterDB::get(mJob); +#else return MonsterDB::get(mJob - 1002); +#endif } -void Monster::showName(bool show) +void Monster::setShowName(bool show) { - if (mText) - { - delete mText; - } + delete mText; + if (show) { mText = new Text(getInfo().getName(), mPx + NAME_X_OFFSET, diff --git a/src/monster.h b/src/monster.h index afb55769..cd2a8f0c 100644 --- a/src/monster.h +++ b/src/monster.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,9 +34,11 @@ class Monster : public Being ~Monster(); +#ifdef EATHENA_SUPPORT virtual void logic(); +#endif - virtual void setAction(Action action); + virtual void setAction(Action action, int attackType = 0); virtual Type getType() const; @@ -52,7 +53,11 @@ class Monster : public Being * @param damage the amount of damage dealt (0 means miss) * @param type the attack type */ +#ifdef TMWSERV_SUPPORT + virtual void handleAttack(); +#else virtual void handleAttack(Being *victim, int damage, AttackType type); +#endif /** * Puts a damage bubble above this monster and plays the hurt sound @@ -71,10 +76,22 @@ class Monster : public Being /** * Determine whether the mob should show it's name */ - void showName(bool show); + void setShowName(bool show); + + /** + * Gets the way the monster is blocked by other objects + */ + virtual unsigned char getWalkMask() const + { return 0x83; } // blocked by walls, other monsters and players ( bin 1000 0011) protected: /** + * Gets the way the monster blocks pathfinding for other objects + */ + virtual Map::BlockType getBlockType() const + { return Map::BLOCKTYPE_MONSTER; } + + /** * Update the text when the monster moves */ void updateCoords(); diff --git a/src/net/beinghandler.cpp b/src/net/ea/beinghandler.cpp index d1810537..237c9f1f 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/ea/beinghandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,21 +19,27 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "net/ea/beinghandler.h" + +#include "net/ea/protocol.h" + +#include "net/messagein.h" + +#include "being.h" +#include "beingmanager.h" +#include "effectmanager.h" +#include "game.h" +#include "localplayer.h" +#include "log.h" +#include "npc.h" +#include "player_relations.h" + +#include "gui/npc_text.h" + #include <iostream> #include <SDL_types.h> -#include "beinghandler.h" -#include "messagein.h" -#include "protocol.h" - -#include "../being.h" -#include "../beingmanager.h" -#include "../effectmanager.h" -#include "../game.h" -#include "../localplayer.h" -#include "../log.h" -#include "../npc.h" -#include "../player_relations.h" +extern NpcTextDialog *npcTextDialog; const int EMOTION_TIME = 150; /**< Duration of emotion icon */ @@ -58,35 +63,39 @@ BeingHandler::BeingHandler(bool enableSync): SMSG_PLAYER_STOP, SMSG_PLAYER_MOVE_TO_ATTACK, 0x0119, + 0x0196, 0 }; handledMessages = _messages; } -void BeingHandler::handleMessage(MessageIn *msg) +void BeingHandler::handleMessage(MessageIn &msg) { int id; Uint16 job, speed; Uint16 headTop, headMid, headBottom; - Uint16 shoes, gloves, cape, misc1, misc2; + Uint16 shoes, gloves; Uint16 weapon, shield; Uint16 gmstatus; int param1; + int stunMode; + Uint32 statusEffects; int type; + Uint16 status; Being *srcBeing, *dstBeing; - int hairStyle, hairColor; + int hairStyle, hairColor, flag; - switch (msg->getId()) + switch (msg.getId()) { case SMSG_BEING_VISIBLE: case SMSG_BEING_MOVE: // Information about a being in range - id = msg->readInt32(); - speed = msg->readInt16(); - msg->readInt16(); // opt1 - msg->readInt16(); // opt2 - msg->readInt16(); // option - job = msg->readInt16(); // class + id = msg.readInt32(); + speed = msg.readInt16(); + stunMode = msg.readInt16(); // opt1 + statusEffects = msg.readInt16(); // opt2 + statusEffects |= ((Uint32)msg.readInt16()) << 16; // option + job = msg.readInt16(); // class dstBeing = beingManager->findBeing(id); @@ -101,7 +110,7 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing = beingManager->createBeing(id, job); } - else if (msg->getId() == 0x0078) + else if (msg.getId() == 0x0078) { dstBeing->clearPath(); dstBeing->mFrame = 0; @@ -109,34 +118,35 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setAction(Being::STAND); } + // Prevent division by 0 when calculating frame if (speed == 0) { speed = 150; } dstBeing->setWalkSpeed(speed); dstBeing->mJob = job; - hairStyle = msg->readInt16(); - dstBeing->setSprite(Being::WEAPON_SPRITE, msg->readInt16()); - headBottom = msg->readInt16(); + hairStyle = msg.readInt16(); + dstBeing->setSprite(Being::WEAPON_SPRITE, msg.readInt16()); + headBottom = msg.readInt16(); - if (msg->getId() == SMSG_BEING_MOVE) + if (msg.getId() == SMSG_BEING_MOVE) { - msg->readInt32(); // server tick + msg.readInt32(); // server tick } - dstBeing->setSprite(Being::SHIELD_SPRITE, msg->readInt16()); - headTop = msg->readInt16(); - headMid = msg->readInt16(); - hairColor = msg->readInt16(); - shoes = msg->readInt16(); - gloves = msg->readInt16(); - msg->readInt16(); // guild - msg->readInt16(); // unknown - msg->readInt16(); // unknown - msg->readInt16(); // manner - msg->readInt16(); // karma - msg->readInt8(); // unknown + dstBeing->setSprite(Being::SHIELD_SPRITE, msg.readInt16()); + headTop = msg.readInt16(); + headMid = msg.readInt16(); + hairColor = msg.readInt16(); + shoes = msg.readInt16(); // clothes color - "abused" as shoes + gloves = msg.readInt16(); // head dir - "abused" as gloves + msg.readInt16(); // guild + msg.readInt16(); // unknown + msg.readInt16(); // unknown + msg.readInt16(); // manner + dstBeing->setStatusEffectBlock(32, msg.readInt16()); // opt3 + msg.readInt8(); // karma dstBeing->setGender( - (msg->readInt8() == 0) ? GENDER_FEMALE : GENDER_MALE); + (msg.readInt8() == 0) ? GENDER_FEMALE : GENDER_MALE); // Set these after the gender, as the sprites may be gender-specific dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom); @@ -146,10 +156,10 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setSprite(Being::GLOVES_SPRITE, gloves); dstBeing->setHairStyle(hairStyle, hairColor); - if (msg->getId() == SMSG_BEING_MOVE) + if (msg.getId() == SMSG_BEING_MOVE) { Uint16 srcX, srcY, dstX, dstY; - msg->readCoordinatePair(srcX, srcY, dstX, dstY); + msg.readCoordinatePair(srcX, srcY, dstX, dstY); dstBeing->setAction(Being::STAND); dstBeing->mX = srcX; dstBeing->mY = srcY; @@ -158,13 +168,17 @@ void BeingHandler::handleMessage(MessageIn *msg) else { Uint8 dir; - msg->readCoordinates(dstBeing->mX, dstBeing->mY, dir); + msg.readCoordinates(dstBeing->mX, dstBeing->mY, dir); dstBeing->setDirection(dir); } - msg->readInt8(); // unknown - msg->readInt8(); // unknown - msg->readInt8(); // unknown / sit + msg.readInt8(); // unknown + msg.readInt8(); // unknown + msg.readInt8(); // unknown / sit + + dstBeing->setStunMode(stunMode); + dstBeing->setStatusEffectBlock(0, (statusEffects >> 16) & 0xffff); + dstBeing->setStatusEffectBlock(16, statusEffects & 0xffff); break; case SMSG_BEING_MOVE2: @@ -173,11 +187,11 @@ void BeingHandler::handleMessage(MessageIn *msg) * later versions of eAthena for both mobs and * players */ - dstBeing = beingManager->findBeing(msg->readInt32()); + dstBeing = beingManager->findBeing(msg.readInt32()); Uint16 srcX, srcY, dstX, dstY; - msg->readCoordinatePair(srcX, srcY, dstX, dstY); - msg->readInt32(); // Server tick + msg.readCoordinatePair(srcX, srcY, dstX, dstY); + msg.readInt32(); // Server tick /* * This packet doesn't have enough info to actually @@ -196,11 +210,12 @@ void BeingHandler::handleMessage(MessageIn *msg) case SMSG_BEING_REMOVE: // A being should be removed or has died - id = msg->readInt32(); - dstBeing = beingManager->findBeing(id); + id = msg.readInt32(); if (id == current_npc) - current_npc = 0; + npcTextDialog->showCloseButton(); + + dstBeing = beingManager->findBeing(id); if (!dstBeing) break; @@ -209,7 +224,7 @@ void BeingHandler::handleMessage(MessageIn *msg) if (dstBeing == player_node->getTarget()) player_node->stopAttack(); - if (msg->readInt8() == 1) + if (msg.readInt8() == 1) dstBeing->setAction(Being::DEAD); else beingManager->destroyBeing(dstBeing); @@ -217,15 +232,15 @@ void BeingHandler::handleMessage(MessageIn *msg) break; case SMSG_BEING_ACTION: - srcBeing = beingManager->findBeing(msg->readInt32()); - dstBeing = beingManager->findBeing(msg->readInt32()); - msg->readInt32(); // server tick - msg->readInt32(); // src speed - msg->readInt32(); // dst speed - param1 = msg->readInt16(); - msg->readInt16(); // param 2 - type = msg->readInt8(); - msg->readInt16(); // param 3 + srcBeing = beingManager->findBeing(msg.readInt32()); + dstBeing = beingManager->findBeing(msg.readInt32()); + msg.readInt32(); // server tick + msg.readInt32(); // src speed + msg.readInt32(); // dst speed + param1 = msg.readInt16(); + msg.readInt16(); // param 2 + type = msg.readInt8(); + msg.readInt16(); // param 3 switch (type) { @@ -261,11 +276,11 @@ void BeingHandler::handleMessage(MessageIn *msg) break; case SMSG_BEING_SELFEFFECT: { - id = (Uint32)msg->readInt32(); + id = (Uint32)msg.readInt32(); if (!beingManager->findBeing(id)) break; - int effectType = msg->readInt32(); + int effectType = msg.readInt32(); Being* being = beingManager->findBeing(id); effectManager->trigger(effectType, being); @@ -274,13 +289,13 @@ void BeingHandler::handleMessage(MessageIn *msg) } case SMSG_BEING_EMOTION: - if (!(dstBeing = beingManager->findBeing(msg->readInt32()))) + if (!(dstBeing = beingManager->findBeing(msg.readInt32()))) { break; } if (player_relations.hasPermission(dstBeing, PlayerRelation::EMOTE)) - dstBeing->setEmote(msg->readInt8(), EMOTION_TIME); + dstBeing->setEmote(msg.readInt8(), EMOTION_TIME); break; @@ -299,20 +314,20 @@ void BeingHandler::handleMessage(MessageIn *msg) * 16 bit value will be 0. */ - if (!(dstBeing = beingManager->findBeing(msg->readInt32()))) + if (!(dstBeing = beingManager->findBeing(msg.readInt32()))) { break; } - int type = msg->readInt8(); + int type = msg.readInt8(); int id = 0; int id2 = 0; - if (msg->getId() == SMSG_BEING_CHANGE_LOOKS) { - id = msg->readInt8(); + if (msg.getId() == SMSG_BEING_CHANGE_LOOKS) { + id = msg.readInt8(); } else { // SMSG_BEING_CHANGE_LOOKS2 - id = msg->readInt16(); - id2 = msg->readInt16(); + id = msg.readInt16(); + id2 = msg.readInt16(); } switch (type) { @@ -362,9 +377,9 @@ void BeingHandler::handleMessage(MessageIn *msg) break; case SMSG_BEING_NAME_RESPONSE: - if ((dstBeing = beingManager->findBeing(msg->readInt32()))) + if ((dstBeing = beingManager->findBeing(msg.readInt32()))) { - dstBeing->setName(msg->readString(24)); + dstBeing->setName(msg.readString(24)); } break; @@ -372,12 +387,13 @@ void BeingHandler::handleMessage(MessageIn *msg) case SMSG_PLAYER_UPDATE_2: case SMSG_PLAYER_MOVE: // An update about a player, potentially including movement. - id = msg->readInt32(); - speed = msg->readInt16(); - cape = msg->readInt16(); - misc1 = msg->readInt16(); - misc2 = msg->readInt16(); - job = msg->readInt16(); + id = msg.readInt32(); + speed = msg.readInt16(); + stunMode = msg.readInt16(); // opt1; Aethyra use this as cape + statusEffects = msg.readInt16(); // opt2; Aethyra use this as misc1 + statusEffects |= ((Uint32) msg.readInt16()) + << 16; // status.options; Aethyra uses this as misc2 + job = msg.readInt16(); dstBeing = beingManager->findBeing(id); @@ -388,27 +404,28 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setWalkSpeed(speed); dstBeing->mJob = job; - hairStyle = msg->readInt16(); - weapon = msg->readInt16(); - shield = msg->readInt16(); - headBottom = msg->readInt16(); + hairStyle = msg.readInt16(); + weapon = msg.readInt16(); + shield = msg.readInt16(); + headBottom = msg.readInt16(); - if (msg->getId() == SMSG_PLAYER_MOVE) + if (msg.getId() == SMSG_PLAYER_MOVE) { - msg->readInt32(); // server tick + msg.readInt32(); // server tick } - headTop = msg->readInt16(); - headMid = msg->readInt16(); - hairColor = msg->readInt16(); - shoes = msg->readInt16(); - gloves = msg->readInt16(); - msg->readInt32(); // guild - msg->readInt32(); // emblem - msg->readInt16(); // manner - msg->readInt8(); // karma + headTop = msg.readInt16(); + headMid = msg.readInt16(); + hairColor = msg.readInt16(); + msg.readInt16(); // clothes color - Aethyra-"abused" as shoes, we ignore it + msg.readInt16(); // head dir - Aethyra-"abused" as gloves, we ignore it + msg.readInt32(); // guild + msg.readInt16(); // emblem + msg.readInt16(); // manner + dstBeing->setStatusEffectBlock(32, msg.readInt16()); // opt3 + msg.readInt8(); // karma dstBeing->setGender( - (msg->readInt8() == 0) ? GENDER_FEMALE : GENDER_MALE); + (msg.readInt8() == 0) ? GENDER_FEMALE : GENDER_MALE); // Set these after the gender, as the sprites may be gender-specific dstBeing->setSprite(Being::WEAPON_SPRITE, weapon); @@ -416,19 +433,15 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom); dstBeing->setSprite(Being::TOPCLOTHES_SPRITE, headMid); dstBeing->setSprite(Being::HAT_SPRITE, headTop); - dstBeing->setSprite(Being::SHOE_SPRITE, shoes); - // Compensation for the unpatched TMW server - if (gloves > 10) - dstBeing->setSprite(Being::GLOVES_SPRITE, gloves); - dstBeing->setSprite(Being::CAPE_SPRITE, cape); - dstBeing->setSprite(Being::MISC1_SPRITE, misc1); - dstBeing->setSprite(Being::MISC2_SPRITE, misc2); + //dstBeing->setSprite(Being::CAPE_SPRITE, cape); + //dstBeing->setSprite(Being::MISC1_SPRITE, misc1); + //dstBeing->setSprite(Being::MISC2_SPRITE, misc2); dstBeing->setHairStyle(hairStyle, hairColor); - if (msg->getId() == SMSG_PLAYER_MOVE) + if (msg.getId() == SMSG_PLAYER_MOVE) { Uint16 srcX, srcY, dstX, dstY; - msg->readCoordinatePair(srcX, srcY, dstX, dstY); + msg.readCoordinatePair(srcX, srcY, dstX, dstY); dstBeing->mX = srcX; dstBeing->mY = srcY; dstBeing->setDestination(dstX, dstY); @@ -436,33 +449,37 @@ void BeingHandler::handleMessage(MessageIn *msg) else { Uint8 dir; - msg->readCoordinates(dstBeing->mX, dstBeing->mY, dir); + msg.readCoordinates(dstBeing->mX, dstBeing->mY, dir); dstBeing->setDirection(dir); } - gmstatus = msg->readInt16(); + gmstatus = msg.readInt16(); if (gmstatus & 0x80) dstBeing->setGM(); - if (msg->getId() == SMSG_PLAYER_UPDATE_1) + if (msg.getId() == SMSG_PLAYER_UPDATE_1) { - switch (msg->readInt8()) + switch (msg.readInt8()) { case 2: dstBeing->setAction(Being::SIT); break; } } - else if (msg->getId() == SMSG_PLAYER_MOVE) + else if (msg.getId() == SMSG_PLAYER_MOVE) { - msg->readInt8(); // unknown + msg.readInt8(); // unknown } - msg->readInt8(); // Lv - msg->readInt8(); // unknown + msg.readInt8(); // Lv + msg.readInt8(); // unknown dstBeing->mWalkTime = tick_time; dstBeing->mFrame = 0; + + dstBeing->setStunMode(stunMode); + dstBeing->setStatusEffectBlock(0, (statusEffects >> 16) & 0xffff); + dstBeing->setStatusEffectBlock(16, statusEffects & 0xffff); break; case SMSG_PLAYER_STOP: @@ -478,12 +495,12 @@ void BeingHandler::handleMessage(MessageIn *msg) * of the config setting. */ - id = msg->readInt32(); + id = msg.readInt32(); if (mSync || id != player_node->getId()) { dstBeing = beingManager->findBeing(id); if (dstBeing) { - dstBeing->mX = msg->readInt16(); - dstBeing->mY = msg->readInt16(); + dstBeing->mX = msg.readInt16(); + dstBeing->mY = msg.readInt16(); if (dstBeing->mAction == Being::WALK) { dstBeing->mFrame = 0; dstBeing->setAction(Being::STAND); @@ -502,10 +519,30 @@ void BeingHandler::handleMessage(MessageIn *msg) break; case 0x0119: - // Change in players look - logger->log("0x0119 %i %i %i %x %i", msg->readInt32(), - msg->readInt16(), msg->readInt16(), msg->readInt16(), - msg->readInt8()); + // Change in players' flags + id = msg.readInt32(); + dstBeing = beingManager->findBeing(id); + stunMode = msg.readInt16(); + statusEffects = msg.readInt16(); + statusEffects |= ((Uint32) msg.readInt16()) << 16; + msg.readInt8(); + + if (dstBeing) { + dstBeing->setStunMode(stunMode); + dstBeing->setStatusEffectBlock(0, (statusEffects >> 16) & 0xffff); + dstBeing->setStatusEffectBlock(16, statusEffects & 0xffff); + } + break; + + case 0x0196: + // Status change + status = msg.readInt16(); + id = msg.readInt32(); + flag = msg.readInt8(); // 0: stop, 1: start + + dstBeing = beingManager->findBeing(id); + if (dstBeing) + dstBeing->setStatusEffect(status, flag); break; } } diff --git a/src/net/beinghandler.h b/src/net/ea/beinghandler.h index 5fbb57ce..1246f1c1 100644 --- a/src/net/beinghandler.h +++ b/src/net/ea/beinghandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,21 +19,21 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_BEINGHANDLER_H -#define NET_BEINGHANDLER_H +#ifndef NET_EA_BEINGHANDLER_H +#define NET_EA_BEINGHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" class BeingHandler : public MessageHandler { public: BeingHandler(bool enableSync); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); private: // Should we honor server "Stop Walking" packets bool mSync; }; -#endif +#endif // NET_EA_BEINGHANDLER_H diff --git a/src/net/buysellhandler.cpp b/src/net/ea/buysellhandler.cpp index 287e5400..b99db6a4 100644 --- a/src/net/buysellhandler.cpp +++ b/src/net/ea/buysellhandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,24 +19,26 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <SDL_types.h> +#include "net/ea/buysellhandler.h" + +#include "net/ea/protocol.h" -#include "buysellhandler.h" -#include "messagein.h" -#include "protocol.h" +#include "net/messagein.h" -#include "../beingmanager.h" -#include "../inventory.h" -#include "../item.h" -#include "../localplayer.h" -#include "../npc.h" +#include "beingmanager.h" +#include "inventory.h" +#include "item.h" +#include "localplayer.h" +#include "npc.h" -#include "../gui/buy.h" -#include "../gui/buysell.h" -#include "../gui/chat.h" -#include "../gui/sell.h" +#include "gui/buy.h" +#include "gui/buysell.h" +#include "gui/chat.h" +#include "gui/sell.h" -#include "../utils/gettext.h" +#include "utils/gettext.h" + +#include <SDL_types.h> BuySellHandler::BuySellHandler() { @@ -52,51 +53,51 @@ BuySellHandler::BuySellHandler() handledMessages = _messages; } -void BuySellHandler::handleMessage(MessageIn *msg) +void BuySellHandler::handleMessage(MessageIn &msg) { int n_items; - switch (msg->getId()) + switch (msg.getId()) { case SMSG_NPC_BUY_SELL_CHOICE: buyDialog->setVisible(false); buyDialog->reset(); sellDialog->setVisible(false); sellDialog->reset(); - current_npc = msg->readInt32(); + current_npc = msg.readInt32(); buySellDialog->setVisible(true); break; case SMSG_NPC_BUY: - msg->readInt16(); // length - n_items = (msg->getLength() - 4) / 11; + msg.readInt16(); // length + n_items = (msg.getLength() - 4) / 11; buyDialog->reset(); - buyDialog->setMoney(player_node->mGp); + buyDialog->setMoney(player_node->getMoney()); buyDialog->setVisible(true); for (int k = 0; k < n_items; k++) { - int value = msg->readInt32(); - msg->readInt32(); // DCvalue - msg->readInt8(); // type - int itemId = msg->readInt16(); - buyDialog->addItem(itemId, value); + int value = msg.readInt32(); + msg.readInt32(); // DCvalue + msg.readInt8(); // type + int itemId = msg.readInt16(); + buyDialog->addItem(itemId, 0, value); } break; case SMSG_NPC_SELL: - msg->readInt16(); // length - n_items = (msg->getLength() - 4) / 10; + msg.readInt16(); // length + n_items = (msg.getLength() - 4) / 10; if (n_items > 0) { - sellDialog->setMoney(player_node->mGp); + sellDialog->setMoney(player_node->getMoney()); sellDialog->reset(); sellDialog->setVisible(true); for (int k = 0; k < n_items; k++) { - int index = msg->readInt16(); - int value = msg->readInt32(); - msg->readInt32(); // OCvalue + int index = msg.readInt16(); + int value = msg.readInt32(); + msg.readInt32(); // OCvalue Item *item = player_node->getInventory()->getItem(index); @@ -106,30 +107,30 @@ void BuySellHandler::handleMessage(MessageIn *msg) } else { - chatWindow->chatLog(_("Nothing to sell"), BY_SERVER); + localChatTab->chatLog(_("Nothing to sell"), BY_SERVER); current_npc = 0; } break; case SMSG_NPC_BUY_RESPONSE: - if (msg->readInt8() == 0) + if (msg.readInt8() == 0) { - chatWindow->chatLog(_("Thanks for buying"), BY_SERVER); + localChatTab->chatLog(_("Thanks for buying"), BY_SERVER); } else { // Reset player money since buy dialog already assumed purchase // would go fine - buyDialog->setMoney(player_node->mGp); - chatWindow->chatLog(_("Unable to buy"), BY_SERVER); + buyDialog->setMoney(player_node->getMoney()); + localChatTab->chatLog(_("Unable to buy"), BY_SERVER); } break; case SMSG_NPC_SELL_RESPONSE: - if (msg->readInt8() == 0) - chatWindow->chatLog(_("Thanks for selling"), BY_SERVER); + if (msg.readInt8() == 0) + localChatTab->chatLog(_("Thanks for selling"), BY_SERVER); else - chatWindow->chatLog(_("Unable to sell"), BY_SERVER); + localChatTab->chatLog(_("Unable to sell"), BY_SERVER); break; } diff --git a/src/net/ea/buysellhandler.h b/src/net/ea/buysellhandler.h new file mode 100644 index 00000000..7b85b65d --- /dev/null +++ b/src/net/ea/buysellhandler.h @@ -0,0 +1,35 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_EA_BUYSELLHANDLER_H +#define NET_EA_BUYSELLHANDLER_H + +#include "net/messagehandler.h" + +class BuySellHandler : public MessageHandler +{ + public: + BuySellHandler(); + + void handleMessage(MessageIn &msg); +}; + +#endif // NET_EA_BUYSELLHANDLER_H diff --git a/src/net/charserverhandler.cpp b/src/net/ea/charserverhandler.cpp index 95555300..d212ebfe 100644 --- a/src/net/charserverhandler.cpp +++ b/src/net/ea/charserverhandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,21 +19,23 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "charserverhandler.h" -#include "messagein.h" -#include "protocol.h" +#include "net/ea/charserverhandler.h" -#include "../game.h" -#include "../localplayer.h" -#include "../log.h" -#include "../logindata.h" -#include "../main.h" +#include "net/ea/protocol.h" -#include "../gui/char_select.h" -#include "../gui/ok_dialog.h" +#include "net/messagein.h" -#include "../utils/gettext.h" -#include "../utils/stringutils.h" +#include "game.h" +#include "localplayer.h" +#include "log.h" +#include "logindata.h" +#include "main.h" + +#include "gui/char_select.h" +#include "gui/ok_dialog.h" + +#include "utils/gettext.h" +#include "utils/stringutils.h" CharServerHandler::CharServerHandler(): mCharCreateDialog(0) @@ -53,17 +54,17 @@ CharServerHandler::CharServerHandler(): handledMessages = _messages; } -void CharServerHandler::handleMessage(MessageIn *msg) +void CharServerHandler::handleMessage(MessageIn &msg) { int slot, flags, code; LocalPlayer *tempPlayer; logger->log("CharServerHandler: Packet ID: %x, Length: %d", - msg->getId(), msg->getLength()); - switch (msg->getId()) + msg.getId(), msg.getLength()); + switch (msg.getId()) { case SMSG_CONNECTION_PROBLEM: - code = msg->readInt8(); + code = msg.readInt8(); logger->log("Connection problem: %i", code); switch (code) { @@ -86,32 +87,32 @@ void CharServerHandler::handleMessage(MessageIn *msg) errorMessage = _("Unknown connection error"); break; } - state = ERROR_STATE; + state = STATE_ERROR; break; case 0x006b: - msg->skip(2); // Length word - flags = msg->readInt32(); // Aethyra extensions flags + msg.skip(2); // Length word + flags = msg.readInt32(); // Aethyra extensions flags logger->log("Server flags are: %x", flags); - msg->skip(16); // Unused + msg.skip(16); // Unused // Derive number of characters from message length - n_character = (msg->getLength() - 24) / 106; + n_character = (msg.getLength() - 24) / 106; for (int i = 0; i < n_character; i++) { - tempPlayer = readPlayerData(*msg, slot); + tempPlayer = readPlayerData(msg, slot); mCharInfo->select(slot); mCharInfo->setEntry(tempPlayer); logger->log("CharServer: Player: %s (%d)", tempPlayer->getName().c_str(), slot); } - state = CHAR_SELECT_STATE; + state = STATE_CHAR_SELECT; break; case 0x006c: - switch (msg->readInt8()) { + switch (msg.readInt8()) { case 0: errorMessage = _("Access denied"); break; @@ -126,7 +127,7 @@ void CharServerHandler::handleMessage(MessageIn *msg) break; case 0x006d: - tempPlayer = readPlayerData(*msg, slot); + tempPlayer = readPlayerData(msg, slot); mCharInfo->unlock(); mCharInfo->select(slot); mCharInfo->setEntry(tempPlayer); @@ -164,10 +165,10 @@ void CharServerHandler::handleMessage(MessageIn *msg) case 0x0071: player_node = mCharInfo->getEntry(); slot = mCharInfo->getPos(); - msg->skip(4); // CharID, must be the same as player_node->charID - map_path = msg->readString(16); - mLoginData->hostname = ipToString(msg->readInt32()); - mLoginData->port = msg->readInt16(); + msg.skip(4); // CharID, must be the same as player_node->charID + map_path = msg.readString(16); + mLoginData->hostname = ipToString(msg.readInt32()); + mLoginData->port = msg.readInt16(); mCharInfo->unlock(); mCharInfo->select(0); // Clear unselected players infos @@ -183,7 +184,7 @@ void CharServerHandler::handleMessage(MessageIn *msg) } while (mCharInfo->getPos()); mCharInfo->select(slot); - state = CONNECTING_STATE; + state = STATE_CONNECTING; break; } } @@ -196,7 +197,7 @@ LocalPlayer *CharServerHandler::readPlayerData(MessageIn &msg, int &slot) tempPlayer->mCharId = msg.readInt32(); tempPlayer->setXp(msg.readInt32()); - tempPlayer->mGp = msg.readInt32(); + tempPlayer->setMoney(msg.readInt32()); tempPlayer->mJobXp = msg.readInt32(); tempPlayer->mJobLevel = msg.readInt32(); tempPlayer->setSprite(Being::SHOE_SPRITE, msg.readInt16()); @@ -207,8 +208,8 @@ LocalPlayer *CharServerHandler::readPlayerData(MessageIn &msg, int &slot) msg.readInt32(); // karma msg.readInt32(); // manner msg.skip(2); // unknown - tempPlayer->mHp = msg.readInt16(); - tempPlayer->mMaxHp = msg.readInt16(); + tempPlayer->setHp(msg.readInt16()); + tempPlayer->setMaxHp(msg.readInt16()); tempPlayer->mMp = msg.readInt16(); tempPlayer->mMaxMp = msg.readInt16(); msg.readInt16(); // speed @@ -216,7 +217,7 @@ LocalPlayer *CharServerHandler::readPlayerData(MessageIn &msg, int &slot) int hairStyle = msg.readInt16(); Uint16 weapon = msg.readInt16(); tempPlayer->setSprite(Being::WEAPON_SPRITE, weapon); - tempPlayer->mLevel = msg.readInt16(); + tempPlayer->setLevel(msg.readInt16()); msg.readInt16(); // skill point tempPlayer->setSprite(Being::BOTTOMCLOTHES_SPRITE, msg.readInt16()); // head bottom tempPlayer->setSprite(Being::SHIELD_SPRITE, msg.readInt16()); diff --git a/src/net/charserverhandler.h b/src/net/ea/charserverhandler.h index 2a5331b5..3b5a4cd8 100644 --- a/src/net/charserverhandler.h +++ b/src/net/ea/charserverhandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,12 +19,12 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_CHARSERVERHANDLER_H -#define NET_CHARSERVERHANDLER_H +#ifndef NET_EA_CHARSERVERHANDLER_H +#define NET_EA_CHARSERVERHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" -#include "../lockedarray.h" +#include "lockedarray.h" class CharCreateDialog; class LocalPlayer; @@ -39,7 +38,7 @@ class CharServerHandler : public MessageHandler public: CharServerHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); void setCharInfo(LockedArray<LocalPlayer*> *charInfo) { mCharInfo = charInfo; } @@ -60,7 +59,7 @@ class CharServerHandler : public MessageHandler LockedArray<LocalPlayer*> *mCharInfo; CharCreateDialog *mCharCreateDialog; - LocalPlayer* readPlayerData(MessageIn &msg, int &slot); + LocalPlayer *readPlayerData(MessageIn &msg, int &slot); }; -#endif +#endif // NET_EA_CHARSERVERHANDLER_H diff --git a/src/net/chathandler.cpp b/src/net/ea/chathandler.cpp index 185ce7d8..14432b28 100644 --- a/src/net/chathandler.cpp +++ b/src/net/ea/chathandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,22 +19,23 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <SDL_types.h> -#include <string> +#include "net/ea/chathandler.h" + +#include "net/ea/protocol.h" -#include "chathandler.h" -#include "messagein.h" -#include "protocol.h" +#include "net/messagein.h" -#include "../being.h" -#include "../beingmanager.h" -#include "../game.h" -#include "../player_relations.h" +#include "being.h" +#include "beingmanager.h" +#include "game.h" +#include "player_relations.h" -#include "../gui/chat.h" +#include "gui/chat.h" -#include "../utils/gettext.h" -#include "../utils/stringutils.h" +#include "utils/gettext.h" +#include "utils/stringutils.h" + +#include <string> extern Being *player_node; @@ -56,63 +56,62 @@ ChatHandler::ChatHandler() handledMessages = _messages; } -void ChatHandler::handleMessage(MessageIn *msg) +void ChatHandler::handleMessage(MessageIn &msg) { Being *being; std::string chatMsg; std::string nick; int chatMsgLength; - switch (msg->getId()) + switch (msg.getId()) { case SMSG_WHISPER_RESPONSE: - switch (msg->readInt8()) + switch (msg.readInt8()) { case 0x00: // comment out since we'll local echo in chat.cpp instead, then only report failures - //chatWindow->chatLog("Whisper sent", BY_SERVER); + //localChatTab->chatLog("Whisper sent", BY_SERVER); break; case 0x01: - chatWindow->chatLog(_("Whisper could not be sent, user is offline"), BY_SERVER); + localChatTab->chatLog(_("Whisper could not be sent, user is offline"), BY_SERVER); break; case 0x02: - chatWindow->chatLog(_("Whisper could not be sent, ignored by user"), BY_SERVER); + localChatTab->chatLog(_("Whisper could not be sent, ignored by user"), BY_SERVER); break; } break; // Received whisper case SMSG_WHISPER: - chatMsgLength = msg->readInt16() - 28; - nick = msg->readString(24); + chatMsgLength = msg.readInt16() - 28; + nick = msg.readString(24); if (chatMsgLength <= 0) break; - chatMsg = msg->readString(chatMsgLength); - if (nick != SERVER_NAME) - chatMsg = nick + " : " + chatMsg; + chatMsg = msg.readString(chatMsgLength); - if (nick == SERVER_NAME) - chatWindow->chatLog(chatMsg, BY_SERVER); - else { + if (nick != SERVER_NAME) + { if (player_relations.hasPermission(nick, PlayerRelation::WHISPER)) - chatWindow->chatLog(chatMsg, ACT_WHISPER); + chatWindow->whisper(nick, chatMsg); + } + else + { + localChatTab->chatLog(chatMsg, BY_SERVER); } break; // Received speech from being case SMSG_BEING_CHAT: { - chatMsgLength = msg->readInt16() - 8; - being = beingManager->findBeing(msg->readInt32()); + chatMsgLength = msg.readInt16() - 8; + being = beingManager->findBeing(msg.readInt32()); if (!being || chatMsgLength <= 0) - { break; - } - chatMsg = msg->readString(chatMsgLength); + chatMsg = msg.readString(chatMsgLength); std::string::size_type pos = chatMsg.find(" : ", 0); std::string sender_name = ((pos == std::string::npos) @@ -122,7 +121,7 @@ void ChatHandler::handleMessage(MessageIn *msg) // We use getIgnorePlayer instead of ignoringPlayer here because ignorePlayer' side // effects are triggered right below for Being::IGNORE_SPEECH_FLOAT. if (player_relations.checkPermissionSilently(sender_name, PlayerRelation::SPEECH_LOG)) - chatWindow->chatLog(chatMsg, BY_OTHER); + localChatTab->chatLog(chatMsg, BY_OTHER); chatMsg.erase(0, pos + 3); trim(chatMsg); @@ -134,19 +133,17 @@ void ChatHandler::handleMessage(MessageIn *msg) case SMSG_PLAYER_CHAT: case SMSG_GM_CHAT: { - chatMsgLength = msg->readInt16() - 4; + chatMsgLength = msg.readInt16() - 4; if (chatMsgLength <= 0) - { break; - } - chatMsg = msg->readString(chatMsgLength); + chatMsg = msg.readString(chatMsgLength); std::string::size_type pos = chatMsg.find(" : ", 0); - if (msg->getId() == SMSG_PLAYER_CHAT) + if (msg.getId() == SMSG_PLAYER_CHAT) { - chatWindow->chatLog(chatMsg, BY_PLAYER); + localChatTab->chatLog(chatMsg, BY_PLAYER); if (pos != std::string::npos) chatMsg.erase(0, pos + 3); @@ -157,20 +154,20 @@ void ChatHandler::handleMessage(MessageIn *msg) } else { - chatWindow->chatLog(chatMsg, BY_GM); + localChatTab->chatLog(chatMsg, BY_GM); } break; } case SMSG_WHO_ANSWER: - chatWindow->chatLog("Online users: " + toString(msg->readInt32()), + localChatTab->chatLog("Online users: " + toString(msg.readInt32()), BY_SERVER); break; case 0x010c: // Display MVP player - msg->readInt32(); // id - chatWindow->chatLog("MVP player", BY_SERVER); + msg.readInt32(); // id + localChatTab->chatLog("MVP player", BY_SERVER); break; } } diff --git a/src/net/chathandler.h b/src/net/ea/chathandler.h index 9a47c633..62a8c663 100644 --- a/src/net/chathandler.h +++ b/src/net/ea/chathandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,17 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_CHATHANDLER_H -#define NET_CHATHANDLER_H +#ifndef NET_EA_CHATHANDLER_H +#define NET_EA_CHATHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" class ChatHandler : public MessageHandler { public: ChatHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); }; -#endif +#endif // NET_EA_CHATHANDLER_H diff --git a/src/net/equipmenthandler.cpp b/src/net/ea/equipmenthandler.cpp index 9a6f424e..7a287bea 100644 --- a/src/net/equipmenthandler.cpp +++ b/src/net/ea/equipmenthandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,19 +19,21 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "equipmenthandler.h" -#include "messagein.h" -#include "protocol.h" +#include "net/ea/equipmenthandler.h" -#include "../equipment.h" -#include "../inventory.h" -#include "../item.h" -#include "../localplayer.h" -#include "../log.h" +#include "net/ea/protocol.h" -#include "../gui/chat.h" +#include "net/messagein.h" -#include "../utils/gettext.h" +#include "equipment.h" +#include "inventory.h" +#include "item.h" +#include "localplayer.h" +#include "log.h" + +#include "gui/chat.h" + +#include "utils/gettext.h" EquipmentHandler::EquipmentHandler() { @@ -47,7 +48,7 @@ EquipmentHandler::EquipmentHandler() handledMessages = _messages; } -void EquipmentHandler::handleMessage(MessageIn *msg) +void EquipmentHandler::handleMessage(MessageIn &msg) { int itemCount; int index, equipPoint, itemId; @@ -56,23 +57,23 @@ void EquipmentHandler::handleMessage(MessageIn *msg) Item *item; Inventory *inventory = player_node->getInventory(); - switch (msg->getId()) + switch (msg.getId()) { case SMSG_PLAYER_EQUIPMENT: - msg->readInt16(); // length - itemCount = (msg->getLength() - 4) / 20; + msg.readInt16(); // length + itemCount = (msg.getLength() - 4) / 20; for (int loop = 0; loop < itemCount; loop++) { - index = msg->readInt16(); - itemId = msg->readInt16(); - msg->readInt8(); // type - msg->readInt8(); // identify flag - msg->readInt16(); // equip type - equipPoint = msg->readInt16(); - msg->readInt8(); // attribute - msg->readInt8(); // refine - msg->skip(8); // card + index = msg.readInt16(); + itemId = msg.readInt16(); + msg.readInt8(); // type + msg.readInt8(); // identify flag + msg.readInt16(); // equip type + equipPoint = msg.readInt16(); + msg.readInt8(); // attribute + msg.readInt8(); // refine + msg.skip(8); // card inventory->setItem(index, itemId, 1, true); @@ -92,14 +93,14 @@ void EquipmentHandler::handleMessage(MessageIn *msg) break; case SMSG_PLAYER_EQUIP: - index = msg->readInt16(); - equipPoint = msg->readInt16(); - type = msg->readInt8(); + index = msg.readInt16(); + equipPoint = msg.readInt16(); + type = msg.readInt8(); logger->log("Equipping: %i %i %i", index, equipPoint, type); if (!type) { - chatWindow->chatLog(_("Unable to equip."), BY_SERVER); + localChatTab->chatLog(_("Unable to equip."), BY_SERVER); break; } @@ -132,12 +133,12 @@ void EquipmentHandler::handleMessage(MessageIn *msg) break; case SMSG_PLAYER_UNEQUIP: - index = msg->readInt16(); - equipPoint = msg->readInt16(); - type = msg->readInt8(); + index = msg.readInt16(); + equipPoint = msg.readInt16(); + type = msg.readInt8(); if (!type) { - chatWindow->chatLog(_("Unable to unequip."), BY_SERVER); + localChatTab->chatLog(_("Unable to unequip."), BY_SERVER); break; } @@ -170,11 +171,11 @@ void EquipmentHandler::handleMessage(MessageIn *msg) break; case SMSG_PLAYER_ATTACK_RANGE: - player_node->setAttackRange(msg->readInt16()); + player_node->setAttackRange(msg.readInt16()); break; case SMSG_PLAYER_ARROW_EQUIP: - index = msg->readInt16(); + index = msg.readInt16(); if (index <= 1) break; diff --git a/src/net/equipmenthandler.h b/src/net/ea/equipmenthandler.h index 08de3b36..2bb73c97 100644 --- a/src/net/equipmenthandler.h +++ b/src/net/ea/equipmenthandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,17 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_EQUIPMENTHANDLER_H -#define NET_EQUIPMENTHANDLER_H +#ifndef NET_EA_EQUIPMENTHANDLER_H +#define NET_EA_EQUIPMENTHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" class EquipmentHandler : public MessageHandler { public: EquipmentHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); }; -#endif +#endif // NET_EA_EQUIPMENTHANDLER_H diff --git a/src/net/inventoryhandler.cpp b/src/net/ea/inventoryhandler.cpp index 9fcfedf1..21ae6dcb 100644 --- a/src/net/inventoryhandler.cpp +++ b/src/net/ea/inventoryhandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,27 +19,29 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <SDL_types.h> +#include "net/ea/inventoryhandler.h" + +#include "net/ea/protocol.h" -#include "inventoryhandler.h" -#include "messagein.h" -#include "protocol.h" +#include "net/messagein.h" -#include "../configuration.h" -#include "../inventory.h" -#include "../item.h" -#include "../itemshortcut.h" -#include "../localplayer.h" -#include "../log.h" +#include "configuration.h" +#include "inventory.h" +#include "item.h" +#include "itemshortcut.h" +#include "localplayer.h" +#include "log.h" -#include "../gui/chat.h" -#include "../gui/storagewindow.h" +#include "gui/chat.h" +#include "gui/storagewindow.h" -#include "../resources/iteminfo.h" +#include "resources/iteminfo.h" -#include "../utils/gettext.h" -#include "../utils/strprintf.h" -#include "../utils/stringutils.h" +#include "utils/gettext.h" +#include "utils/strprintf.h" +#include "utils/stringutils.h" + +#include <SDL_types.h> InventoryHandler::InventoryHandler() { @@ -61,7 +62,7 @@ InventoryHandler::InventoryHandler() handledMessages = _messages; } -void InventoryHandler::handleMessage(MessageIn *msg) +void InventoryHandler::handleMessage(MessageIn &msg) { int number; int index, amount, itemId, equipType, arrow; @@ -69,11 +70,11 @@ void InventoryHandler::handleMessage(MessageIn *msg) Inventory *inventory = player_node->getInventory(); Inventory *storage = player_node->getStorage(); - switch (msg->getId()) + switch (msg.getId()) { case SMSG_PLAYER_INVENTORY: case SMSG_PLAYER_STORAGE_ITEMS: - switch (msg->getId()) { + switch (msg.getId()) { case SMSG_PLAYER_INVENTORY: // Clear inventory - this will be a complete refresh inventory->clear(); @@ -91,20 +92,20 @@ void InventoryHandler::handleMessage(MessageIn *msg) logger->log("HOW DID WE GET HERE?"); return; } - msg->readInt16(); // length - number = (msg->getLength() - 4) / 18; + msg.readInt16(); // length + number = (msg.getLength() - 4) / 18; for (int loop = 0; loop < number; loop++) { - index = msg->readInt16(); - itemId = msg->readInt16(); - itemType = msg->readInt8(); - identified = msg->readInt8(); - amount = msg->readInt16(); - arrow = msg->readInt16(); + index = msg.readInt16(); + itemId = msg.readInt16(); + itemType = msg.readInt8(); + identified = msg.readInt8(); + amount = msg.readInt16(); + arrow = msg.readInt16(); for (int i = 0; i < 4; i++) - cards[i] = msg->readInt16(); + cards[i] = msg.readInt16(); - if (msg->getId() == SMSG_PLAYER_INVENTORY) { + if (msg.getId() == SMSG_PLAYER_INVENTORY) { inventory->setItem(index, itemId, amount, false); // Trick because arrows are not considered equipment @@ -121,21 +122,21 @@ void InventoryHandler::handleMessage(MessageIn *msg) break; case SMSG_PLAYER_STORAGE_EQUIP: - msg->readInt16(); // length - number = (msg->getLength() - 4) / 20; + msg.readInt16(); // length + number = (msg.getLength() - 4) / 20; for (int loop = 0; loop < number; loop++) { - index = msg->readInt16(); - itemId = msg->readInt16(); - itemType = msg->readInt8(); - identified = msg->readInt8(); + index = msg.readInt16(); + itemId = msg.readInt16(); + itemType = msg.readInt8(); + identified = msg.readInt8(); amount = 1; - msg->readInt16(); // Equip Point? - msg->readInt16(); // Another Equip Point? - msg->readInt8(); // Attribute (broken) - msg->readInt8(); // Refine level + msg.readInt16(); // Equip Point? + msg.readInt16(); // Another Equip Point? + msg.readInt8(); // Attribute (broken) + msg.readInt8(); // Refine level for (int i = 0; i < 4; i++) - cards[i] = msg->readInt16(); + cards[i] = msg.readInt16(); logger->log("Index:%d, ID:%d, Type:%d, Identified:%d, Qty:%d, Cards:%d, %d, %d, %d", index, itemId, itemType, identified, amount, cards[0], cards[1], cards[2], cards[3]); @@ -144,27 +145,27 @@ void InventoryHandler::handleMessage(MessageIn *msg) break; case SMSG_PLAYER_INVENTORY_ADD: - index = msg->readInt16(); - amount = msg->readInt16(); - itemId = msg->readInt16(); - identified = msg->readInt8(); - msg->readInt8(); // attribute - msg->readInt8(); // refine + index = msg.readInt16(); + amount = msg.readInt16(); + itemId = msg.readInt16(); + identified = msg.readInt8(); + msg.readInt8(); // attribute + msg.readInt8(); // refine for (int i = 0; i < 4; i++) - cards[i] = msg->readInt16(); - equipType = msg->readInt16(); - itemType = msg->readInt8(); + cards[i] = msg.readInt16(); + equipType = msg.readInt16(); + itemType = msg.readInt8(); - if (msg->readInt8() > 0) { + if (msg.readInt8() > 0) { if (config.getValue("showpickupchat", true)) { - chatWindow->chatLog(_("Unable to pick up item"), BY_SERVER); + localChatTab->chatLog(_("Unable to pick up item"), BY_SERVER); } } else { const ItemInfo &itemInfo = ItemDB::get(itemId); const std::string amountStr = (amount > 1) ? toString(amount) : "a"; if (config.getValue("showpickupchat", true)) { - chatWindow->chatLog(strprintf(_("You picked up %s [%s]"), + localChatTab->chatLog(strprintf(_("You picked up %s [%s]"), amountStr.c_str(), itemInfo.getName().c_str()), BY_SERVER); } @@ -182,8 +183,8 @@ void InventoryHandler::handleMessage(MessageIn *msg) break; case SMSG_PLAYER_INVENTORY_REMOVE: - index = msg->readInt16(); - amount = msg->readInt16(); + index = msg.readInt16(); + amount = msg.readInt16(); if (Item *item = inventory->getItem(index)) { item->increaseQuantity(-amount); if (item->getQuantity() == 0) @@ -192,22 +193,22 @@ void InventoryHandler::handleMessage(MessageIn *msg) break; case SMSG_PLAYER_INVENTORY_USE: - index = msg->readInt16(); - msg->readInt16(); // item id - msg->readInt32(); // id - amount = msg->readInt16(); - msg->readInt8(); // type + index = msg.readInt16(); + msg.readInt16(); // item id + msg.readInt32(); // id + amount = msg.readInt16(); + msg.readInt8(); // type if (Item *item = inventory->getItem(index)) item->setQuantity(amount); break; case SMSG_ITEM_USE_RESPONSE: - index = msg->readInt16(); - amount = msg->readInt16(); + index = msg.readInt16(); + amount = msg.readInt16(); - if (msg->readInt8() == 0) { - chatWindow->chatLog(_("Failed to use item"), BY_SERVER); + if (msg.readInt8() == 0) { + localChatTab->chatLog(_("Failed to use item"), BY_SERVER); } else { if (Item *item = inventory->getItem(index)) item->setQuantity(amount); @@ -218,25 +219,25 @@ void InventoryHandler::handleMessage(MessageIn *msg) /* * This is the closest we get to an "Open Storage" packet from the * server. It always comes after the two SMSG_PLAYER_STORAGE_... - * packets that update storage contents.. + * packets that update storage contents. */ player_node->setInStorage(true); - msg->readInt16(); // Storage capacity - msg->readInt16(); // Used count + msg.readInt16(); // Storage capacity + msg.readInt16(); // Used count break; case SMSG_PLAYER_STORAGE_ADD: /* * Move an item into storage */ - index = msg->readInt16(); - amount = msg->readInt32(); - itemId = msg->readInt16(); - identified = msg->readInt8(); - msg->readInt8(); // attribute - msg->readInt8(); // refine + index = msg.readInt16(); + amount = msg.readInt32(); + itemId = msg.readInt16(); + identified = msg.readInt8(); + msg.readInt8(); // attribute + msg.readInt8(); // refine for (int i = 0; i < 4; i++) - cards[i] = msg->readInt16(); + cards[i] = msg.readInt16(); if (Item *item = storage->getItem(index)) { item->setId(itemId); @@ -250,8 +251,8 @@ void InventoryHandler::handleMessage(MessageIn *msg) /* * Move an item out of storage */ - index = msg->readInt16(); - amount = msg->readInt16(); + index = msg.readInt16(); + amount = msg.readInt16(); if (Item *item = storage->getItem(index)) { item->increaseQuantity(-amount); if (item->getQuantity() == 0) diff --git a/src/net/ea/inventoryhandler.h b/src/net/ea/inventoryhandler.h new file mode 100644 index 00000000..7374fed9 --- /dev/null +++ b/src/net/ea/inventoryhandler.h @@ -0,0 +1,35 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_EA_INVENTORYHANDLER_H +#define NET_EA_INVENTORYHANDLER_H + +#include "net/messagehandler.h" + +class InventoryHandler : public MessageHandler +{ + public: + InventoryHandler(); + + void handleMessage(MessageIn &msg); +}; + +#endif // NET_EA_INVENTORYHANDLER_H diff --git a/src/net/itemhandler.cpp b/src/net/ea/itemhandler.cpp index d9d84248..427b29bd 100644 --- a/src/net/itemhandler.cpp +++ b/src/net/ea/itemhandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,12 +19,14 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "itemhandler.h" -#include "messagein.h" -#include "protocol.h" +#include "net/ea/itemhandler.h" -#include "../engine.h" -#include "../flooritemmanager.h" +#include "net/ea/protocol.h" + +#include "net/messagein.h" + +#include "engine.h" +#include "flooritemmanager.h" ItemHandler::ItemHandler() { @@ -38,29 +39,29 @@ ItemHandler::ItemHandler() handledMessages = _messages; } -void ItemHandler::handleMessage(MessageIn *msg) +void ItemHandler::handleMessage(MessageIn &msg) { Uint32 id; Uint16 x, y; int itemId; - switch (msg->getId()) + switch (msg.getId()) { case SMSG_ITEM_VISIBLE: case SMSG_ITEM_DROPPED: - id = msg->readInt32(); - itemId = msg->readInt16(); - msg->readInt8(); // identify flag - x = msg->readInt16(); - y = msg->readInt16(); - msg->skip(4); // amount,subX,subY / subX,subY,amount + id = msg.readInt32(); + itemId = msg.readInt16(); + msg.readInt8(); // identify flag + x = msg.readInt16(); + y = msg.readInt16(); + msg.skip(4); // amount,subX,subY / subX,subY,amount floorItemManager->create(id, itemId, x, y, engine->getCurrentMap()); break; case SMSG_ITEM_REMOVE: FloorItem *item; - item = floorItemManager->findById(msg->readInt32()); + item = floorItemManager->findById(msg.readInt32()); if (item) floorItemManager->destroy(item); break; diff --git a/src/net/ea/itemhandler.h b/src/net/ea/itemhandler.h new file mode 100644 index 00000000..42a9e4e7 --- /dev/null +++ b/src/net/ea/itemhandler.h @@ -0,0 +1,35 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_EA_ITEMHANDLER_H +#define NET_EA_ITEMHANDLER_H + +#include "net/messagehandler.h" + +class ItemHandler : public MessageHandler +{ + public: + ItemHandler(); + + void handleMessage(MessageIn &msg); +}; + +#endif // NET_EA_ITEMHANDLER_H diff --git a/src/net/loginhandler.cpp b/src/net/ea/loginhandler.cpp index cf45dbd4..06bdb4bc 100644 --- a/src/net/loginhandler.cpp +++ b/src/net/ea/loginhandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,18 +19,20 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "loginhandler.h" -#include "messagein.h" -#include "protocol.h" +#include "net/ea/loginhandler.h" -#include "../log.h" -#include "../logindata.h" -#include "../main.h" -#include "../serverinfo.h" +#include "net/ea/protocol.h" -#include "../utils/gettext.h" -#include "../utils/strprintf.h" -#include "../utils/stringutils.h" +#include "net/messagein.h" + +#include "log.h" +#include "logindata.h" +#include "main.h" +#include "serverinfo.h" + +#include "utils/gettext.h" +#include "utils/strprintf.h" +#include "utils/stringutils.h" extern SERVER_INFO **server_info; @@ -47,14 +48,14 @@ LoginHandler::LoginHandler() handledMessages = _messages; } -void LoginHandler::handleMessage(MessageIn *msg) +void LoginHandler::handleMessage(MessageIn &msg) { int code; - switch (msg->getId()) + switch (msg.getId()) { case SMSG_CONNECTION_PROBLEM: - code = msg->readInt8(); + code = msg.readInt8(); logger->log("Connection problem: %i", code); switch (code) { @@ -71,14 +72,14 @@ void LoginHandler::handleMessage(MessageIn *msg) errorMessage = _("Unknown connection error"); break; } - state = ERROR_STATE; + state = STATE_ERROR; break; case SMSG_UPDATE_HOST: int len; - len = msg->readInt16() - 4; - mUpdateHost = msg->readString(len); + len = msg.readInt16() - 4; + mUpdateHost = msg.readString(len); logger->log("Received update host \"%s\" from login server", mUpdateHost.c_str()); @@ -86,39 +87,39 @@ void LoginHandler::handleMessage(MessageIn *msg) case 0x0069: // Skip the length word - msg->skip(2); + msg.skip(2); - n_server = (msg->getLength() - 47) / 32; + n_server = (msg.getLength() - 47) / 32; server_info = (SERVER_INFO**) malloc(sizeof(SERVER_INFO*) * n_server); - mLoginData->session_ID1 = msg->readInt32(); - mLoginData->account_ID = msg->readInt32(); - mLoginData->session_ID2 = msg->readInt32(); - msg->skip(30); // unknown - mLoginData->sex = msg->readInt8(); + mLoginData->session_ID1 = msg.readInt32(); + mLoginData->account_ID = msg.readInt32(); + mLoginData->session_ID2 = msg.readInt32(); + msg.skip(30); // unknown + mLoginData->sex = msg.readInt8(); for (int i = 0; i < n_server; i++) { server_info[i] = new SERVER_INFO; - server_info[i]->address = msg->readInt32(); - server_info[i]->port = msg->readInt16(); - server_info[i]->name = msg->readString(20); - server_info[i]->online_users = msg->readInt32(); + server_info[i]->address = msg.readInt32(); + server_info[i]->port = msg.readInt16(); + server_info[i]->name = msg.readString(20); + server_info[i]->online_users = msg.readInt32(); server_info[i]->updateHost = mUpdateHost; - msg->skip(2); // unknown + msg.skip(2); // unknown logger->log("Network: Server: %s (%s:%d)", server_info[i]->name.c_str(), ipToString(server_info[i]->address), server_info[i]->port); } - state = CHAR_SERVER_STATE; + state = STATE_CHAR_SERVER; break; case 0x006a: - code = msg->readInt8(); + code = msg.readInt8(); logger->log("Login::error code: %i", code); switch (code) { @@ -144,7 +145,7 @@ void LoginHandler::handleMessage(MessageIn *msg) "banned from the game until " "%s.\n Please contact the GM " "team via the forums."), - msg->readString(20).c_str()); + msg.readString(20).c_str()); break; case 9: errorMessage = _("This user name is already taken"); @@ -153,7 +154,7 @@ void LoginHandler::handleMessage(MessageIn *msg) errorMessage = _("Unknown error"); break; } - state = ERROR_STATE; + state = STATE_ERROR; break; } } diff --git a/src/net/loginhandler.h b/src/net/ea/loginhandler.h index 6b938627..074bc9e2 100644 --- a/src/net/loginhandler.h +++ b/src/net/ea/loginhandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,12 +19,12 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_LOGINHANDLER_H -#define NET_LOGINHANDLER_H +#ifndef NET_EA_LOGINHANDLER_H +#define NET_EA_LOGINHANDLER_H -#include <string> +#include "net/messagehandler.h" -#include "messagehandler.h" +#include <string> struct LoginData; @@ -34,13 +33,13 @@ class LoginHandler : public MessageHandler public: LoginHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); - void setLoginData(LoginData *loginData) { mLoginData = loginData; }; + void setLoginData(LoginData *loginData) { mLoginData = loginData; } private: LoginData *mLoginData; std::string mUpdateHost; }; -#endif +#endif // NET_EA_LOGINHANDLER_H diff --git a/src/net/maploginhandler.cpp b/src/net/ea/maploginhandler.cpp index bcd3dd62..78f021b0 100644 --- a/src/net/maploginhandler.cpp +++ b/src/net/ea/maploginhandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,15 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "maploginhandler.h" -#include "messagein.h" -#include "protocol.h" +#include "net/ea/maploginhandler.h" -#include "../localplayer.h" -#include "../log.h" -#include "../main.h" +#include "net/ea/protocol.h" -#include "../utils/gettext.h" +#include "net/messagein.h" + +#include "localplayer.h" +#include "log.h" +#include "main.h" + +#include "utils/gettext.h" MapLoginHandler::MapLoginHandler() { @@ -40,15 +41,15 @@ MapLoginHandler::MapLoginHandler() handledMessages = _messages; } -void MapLoginHandler::handleMessage(MessageIn *msg) +void MapLoginHandler::handleMessage(MessageIn &msg) { int code; unsigned char direction; - switch (msg->getId()) + switch (msg.getId()) { case SMSG_CONNECTION_PROBLEM: - code = msg->readInt8(); + code = msg.readInt8(); logger->log("Connection problem: %i", code); switch (code) { @@ -62,16 +63,16 @@ void MapLoginHandler::handleMessage(MessageIn *msg) errorMessage = _("Unknown connection error"); break; } - state = ERROR_STATE; + state = STATE_ERROR; break; case SMSG_LOGIN_SUCCESS: - msg->readInt32(); // server tick - msg->readCoordinates(player_node->mX, player_node->mY, direction); - msg->skip(2); // unknown + msg.readInt32(); // server tick + msg.readCoordinates(player_node->mX, player_node->mY, direction); + msg.skip(2); // unknown logger->log("Protocol: Player start position: (%d, %d), Direction: %d", player_node->mX, player_node->mY, direction); - state = GAME_STATE; + state = STATE_GAME; break; } } diff --git a/src/net/maploginhandler.h b/src/net/ea/maploginhandler.h index fb083b51..40f8e7bc 100644 --- a/src/net/maploginhandler.h +++ b/src/net/ea/maploginhandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,17 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_MAPLOGINHANDLER_H -#define NET_MAPLOGINHANDLER_H +#ifndef NET_EA_MAPLOGINHANDLER_H +#define NET_EA_MAPLOGINHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" class MapLoginHandler : public MessageHandler { public: MapLoginHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); }; -#endif +#endif // NET_EA_MAPLOGINHANDLER_H diff --git a/src/net/network.cpp b/src/net/ea/network.cpp index 0126ad6d..e17b8f3b 100644 --- a/src/net/network.cpp +++ b/src/net/ea/network.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,14 +19,15 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <sstream> +#include "net/ea/network.h" + +#include "net/messagehandler.h" +#include "net/messagein.h" -#include "messagehandler.h" -#include "messagein.h" -#include "network.h" +#include "log.h" +#include "utils/stringutils.h" -#include "../log.h" -#include "../utils/stringutils.h" +#include <sstream> /** Warning: buffers and other variables are shared, so there can be only one connection active at a time */ @@ -208,7 +208,7 @@ void Network::dispatchMessages() MessageHandlerIterator iter = mMessageHandlers.find(msg.getId()); if (iter != mMessageHandlers.end()) - iter->second->handleMessage(&msg); + iter->second->handleMessage(msg); else logger->log("Unhandled packet: %x", msg.getId()); @@ -420,7 +420,7 @@ void Network::receive() SDLNet_FreeSocketSet(set); } -void Network::setError(const std::string& error) +void Network::setError(const std::string &error) { logger->log("Network error: %s", error.c_str()); mError = error; diff --git a/src/net/network.h b/src/net/ea/network.h index e264f8a5..651b1182 100644 --- a/src/net/network.h +++ b/src/net/ea/network.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,8 +19,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NETWORK_ -#define NETWORK_ +#ifndef EA_NETWORK_H +#define EA_NETWORK_H #include <map> #include <SDL_net.h> @@ -61,7 +60,7 @@ class Network int getState() const { return mState; } - const std::string& getError() const { return mError; } + const std::string &getError() const { return mError; } bool isConnected() const { return mState == CONNECTED; } @@ -87,7 +86,7 @@ class Network }; protected: - void setError(const std::string& error); + void setError(const std::string &error); Uint16 readWord(int pos); diff --git a/src/net/npchandler.cpp b/src/net/ea/npchandler.cpp index 60a77af1..165cc2d3 100644 --- a/src/net/npchandler.cpp +++ b/src/net/ea/npchandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,20 +19,22 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <SDL_types.h> +#include "net/ea/npchandler.h" + +#include "net/ea/protocol.h" -#include "messagein.h" -#include "npchandler.h" -#include "protocol.h" +#include "net/messagein.h" -#include "../beingmanager.h" -#include "../localplayer.h" -#include "../npc.h" +#include "beingmanager.h" +#include "localplayer.h" +#include "npc.h" -#include "../gui/npc_text.h" -#include "../gui/npcintegerdialog.h" -#include "../gui/npclistdialog.h" -#include "../gui/npcstringdialog.h" +#include "gui/npc_text.h" +#include "gui/npcintegerdialog.h" +#include "gui/npclistdialog.h" +#include "gui/npcstringdialog.h" + +#include <SDL_types.h> NPCHandler::NPCHandler() { @@ -49,51 +50,61 @@ NPCHandler::NPCHandler() handledMessages = _messages; } -void NPCHandler::handleMessage(MessageIn *msg) +void NPCHandler::handleMessage(MessageIn &msg) { int id; - switch (msg->getId()) + switch (msg.getId()) { case SMSG_NPC_CHOICE: - msg->readInt16(); // length - current_npc = msg->readInt32(); + msg.readInt16(); // length + current_npc = msg.readInt32(); player_node->setAction(LocalPlayer::STAND); - npcListDialog->parseItems(msg->readString(msg->getLength() - 8)); + npcListDialog->parseItems(msg.readString(msg.getLength() - 8)); npcListDialog->requestFocus(); break; case SMSG_NPC_MESSAGE: - msg->readInt16(); // length - current_npc = msg->readInt32(); + msg.readInt16(); // length + current_npc = msg.readInt32(); player_node->setAction(LocalPlayer::STAND); - npcTextDialog->addText(msg->readString(msg->getLength() - 8)); + npcTextDialog->addText(msg.readString(msg.getLength() - 8)); npcTextDialog->requestFocus(); break; case SMSG_NPC_CLOSE: - id = msg->readInt32(); - if (current_npc == id) - current_npc = 0; - npcTextDialog->closeDialog(id); + id = msg.readInt32(); + // If we're talking to that NPC, show the close button + if (id == current_npc) + npcTextDialog->showCloseButton(); + // Otherwise, move on as an empty dialog doesn't help + else + npcTextDialog->closeDialog(id); break; case SMSG_NPC_NEXT: - // Next button in NPC dialog, currently unused + id = msg.readInt32(); + // If we're talking to that NPC, show the next button + if (id == current_npc) + npcTextDialog->showNextButton(); + // Otherwise, move on as an empty dialog doesn't help + else + npcTextDialog->nextDialog(id); break; case SMSG_NPC_INT_INPUT: // Request for an integer - current_npc = msg->readInt32(); + current_npc = msg.readInt32(); player_node->setAction(LocalPlayer::STAND); npcIntegerDialog->setRange(0, 2147483647); + npcIntegerDialog->setDefaultValue(0); npcIntegerDialog->setVisible(true); npcIntegerDialog->requestFocus(); break; case SMSG_NPC_STR_INPUT: // Request for a string - current_npc = msg->readInt32(); + current_npc = msg.readInt32(); player_node->setAction(LocalPlayer::STAND); npcStringDialog->setValue(""); npcStringDialog->setVisible(true); diff --git a/src/net/ea/npchandler.h b/src/net/ea/npchandler.h new file mode 100644 index 00000000..8c252175 --- /dev/null +++ b/src/net/ea/npchandler.h @@ -0,0 +1,35 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_EA_NPCHANDLER_H +#define NET_EA_NPCHANDLER_H + +#include "net/messagehandler.h" + +class NPCHandler : public MessageHandler +{ + public: + NPCHandler(); + + void handleMessage(MessageIn &msg); +}; + +#endif // NET_EA_NPCHANDLER_H diff --git a/src/net/partyhandler.cpp b/src/net/ea/partyhandler.cpp index b65ff2c9..d903976e 100644 --- a/src/net/partyhandler.cpp +++ b/src/net/ea/partyhandler.cpp @@ -1,8 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 Lloyd Bryant <lloyd_bryant@netzero.net> * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,21 +15,20 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with The Mana World; if not, write to the Free Software + * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <guichan/actionlistener.hpp> +#include "net/ea/partyhandler.h" -#include "partyhandler.h" -#include "protocol.h" -#include "messagein.h" +#include "net/ea/protocol.h" -#include "../gui/chat.h" -#include "../gui/confirm_dialog.h" +#include "net/messagein.h" -#include "../beingmanager.h" -#include "../party.h" +#include "gui/chat.h" + +#include "beingmanager.h" +#include "party.h" PartyHandler::PartyHandler(Party *party) : mParty(party) { @@ -49,25 +48,25 @@ PartyHandler::PartyHandler(Party *party) : mParty(party) handledMessages = _messages; } -void PartyHandler::handleMessage(MessageIn *msg) +void PartyHandler::handleMessage(MessageIn &msg) { - switch (msg->getId()) + switch (msg.getId()) { case SMSG_PARTY_CREATE: - mParty->createResponse(msg->readInt8()); + mParty->createResponse(msg.readInt8()); break; case SMSG_PARTY_INFO: break; case SMSG_PARTY_INVITE: { - std::string nick = msg->readString(24); - int status = msg->readInt8(); + std::string nick = msg.readString(24); + int status = msg.readInt8(); mParty->inviteResponse(nick, status); break; } case SMSG_PARTY_INVITED: { - int id = msg->readInt32(); + int id = msg.readInt32(); Being *being = beingManager->findBeing(id); if (!being) { @@ -84,7 +83,7 @@ void PartyHandler::handleMessage(MessageIn *msg) { nick = being->getName(); gender = being->getGender(); - partyName = msg->readString(24); + partyName = msg.readString(24); } mParty->invitedAsk(nick, gender, partyName); break; @@ -95,9 +94,9 @@ void PartyHandler::handleMessage(MessageIn *msg) break; case SMSG_PARTY_LEAVE: { - /*int id = */msg->readInt32(); - std::string nick = msg->readString(24); - /*int fail = */msg->readInt8(); + /*int id = */msg.readInt32(); + std::string nick = msg.readString(24); + /*int fail = */msg.readInt8(); mParty->leftResponse(nick); break; } @@ -107,14 +106,14 @@ void PartyHandler::handleMessage(MessageIn *msg) break; case SMSG_PARTY_MESSAGE: { // new block to enable local variables - int msgLength = msg->readInt16() - 8; + int msgLength = msg.readInt16() - 8; if (msgLength <= 0) { return; } - int id = msg->readInt32(); + int id = msg.readInt32(); Being *being = beingManager->findBeing(id); - std::string chatMsg = msg->readString(msgLength); + std::string chatMsg = msg.readString(msgLength); mParty->receiveChat(being, chatMsg); } break; diff --git a/src/net/partyhandler.h b/src/net/ea/partyhandler.h index 158e89e6..851c4ae3 100644 --- a/src/net/partyhandler.h +++ b/src/net/ea/partyhandler.h @@ -1,8 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 Lloyd Bryant <lloyd_bryant@netzero.net> * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,14 +15,14 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with The Mana World; if not, write to the Free Software + * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef PARTYHANDLER_H -#define PARTYHANDLER_H +#ifndef NET_EA_PARTYHANDLER_H +#define NET_EA_PARTYHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" class Party; @@ -31,9 +31,10 @@ class PartyHandler : public MessageHandler public: PartyHandler(Party *party); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); + private: Party *mParty; }; -#endif +#endif // NET_EA_PARTYHANDLER_H diff --git a/src/net/playerhandler.cpp b/src/net/ea/playerhandler.cpp index 3dd2bad2..00230ea3 100644 --- a/src/net/playerhandler.cpp +++ b/src/net/ea/playerhandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,31 +19,34 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "messagein.h" -#include "playerhandler.h" -#include "protocol.h" - -#include "../engine.h" -#include "../localplayer.h" -#include "../log.h" -#include "../npc.h" - -#include "../gui/buy.h" -#include "../gui/buysell.h" -#include "../gui/chat.h" -#include "../gui/gui.h" -#include "../gui/npc_text.h" -#include "../gui/npcintegerdialog.h" -#include "../gui/npclistdialog.h" -#include "../gui/npcstringdialog.h" -#include "../gui/ok_dialog.h" -#include "../gui/sell.h" -#include "../gui/skill.h" -#include "../gui/storagewindow.h" -#include "../gui/viewport.h" - -#include "../utils/stringutils.h" -#include "../utils/gettext.h" +#include "net/ea/playerhandler.h" + +#include "net/ea/protocol.h" + +#include "net/messagein.h" + +#include "engine.h" +#include "localplayer.h" +#include "log.h" +#include "npc.h" +#include "units.h" + +#include "gui/buy.h" +#include "gui/buysell.h" +#include "gui/chat.h" +#include "gui/gui.h" +#include "gui/npc_text.h" +#include "gui/npcintegerdialog.h" +#include "gui/npclistdialog.h" +#include "gui/npcstringdialog.h" +#include "gui/ok_dialog.h" +#include "gui/sell.h" +#include "gui/skill.h" +#include "gui/storagewindow.h" +#include "gui/viewport.h" + +#include "utils/stringutils.h" +#include "utils/gettext.h" // TODO Move somewhere else OkDialog *weightNotice = NULL; @@ -54,11 +56,12 @@ OkDialog *deathNotice = NULL; // everything beyond will reset the port hard. static const int MAP_TELEPORT_SCROLL_DISTANCE = 8; -/** - * Listener used for handling the overweigth message. - */ // TODO Move somewhere else namespace { + + /** + * Listener used for handling the overweigth message. + */ struct WeightListener : public gcn::ActionListener { void action(const gcn::ActionEvent &event) @@ -66,13 +69,10 @@ namespace { weightNotice = NULL; } } weightListener; -} -/** - * Listener used for handling death message. - */ -// TODO Move somewhere else -namespace { + /** + * Listener used for handling death message. + */ struct DeathListener : public gcn::ActionListener { void action(const gcn::ActionEvent &event) @@ -90,10 +90,59 @@ namespace { buyDialog->setVisible(false); sellDialog->setVisible(false); buySellDialog->setVisible(false); + if (storageWindow->isVisible()) storageWindow->close(); - current_npc = 0; } } deathListener; + +} // anonymous namespace + +static const char *randomDeathMessage() +{ + static char const *const deadMsg[] = + { + N_("You are dead."), + N_("We regret to inform you that your character was killed in " + "battle."), + N_("You are not that alive anymore."), + N_("The cold hands of the grim reaper are grabbing for your soul."), + N_("Game Over!"), + N_("Insert coin to continue"), + N_("No, kids. Your character did not really die. It... " + "err... went to a better place."), + N_("Your plan of breaking your enemies weapon by " + "bashing it with your throat failed."), + N_("I guess this did not run too well."), + // NetHack reference: + N_("Do you want your possessions identified?"), + // Secret of Mana reference: + N_("Sadly, no trace of you was ever found..."), + // Final Fantasy VI reference: + N_("Annihilated."), + // Earthbound reference: + N_("Looks like you got your head handed to you."), + // Leisure Suit Larry 1 reference: + N_("You screwed up again, dump your body down the tubes " + "and get you another one."), + // Monty Python references (Dead Parrot sketch mostly): + N_("You're not dead yet. You're just resting."), + N_("You are no more."), + N_("You have ceased to be."), + N_("You've expired and gone to meet your maker."), + N_("You're a stiff."), + N_("Bereft of life, you rest in peace."), + N_("If you weren't so animated, you'd be pushing up the daisies."), + N_("Your metabolic processes are now history."), + N_("You're off the twig."), + N_("You've kicked the bucket."), + N_("You've shuffled off your mortal coil, run down the " + "curtain and joined the bleedin' choir invisibile."), + N_("You are an ex-player."), + N_("You're pining for the fjords.") + }; + + const int random = rand() % (sizeof(deadMsg) / sizeof(deadMsg[0])); + return gettext(deadMsg[random]); } PlayerHandler::PlayerHandler() @@ -113,9 +162,9 @@ PlayerHandler::PlayerHandler() handledMessages = _messages; } -void PlayerHandler::handleMessage(MessageIn *msg) +void PlayerHandler::handleMessage(MessageIn &msg) { - switch (msg->getId()) + switch (msg.getId()) { case SMSG_WALK_RESPONSE: /* @@ -127,10 +176,10 @@ void PlayerHandler::handleMessage(MessageIn *msg) case SMSG_PLAYER_WARP: { - std::string mapPath = msg->readString(16); + std::string mapPath = msg.readString(16); bool nearby; - Uint16 x = msg->readInt16(); - Uint16 y = msg->readInt16(); + Uint16 x = msg.readInt16(); + Uint16 y = msg.readInt16(); logger->log("Warping to %s (%d, %d)", mapPath.c_str(), x, y); @@ -145,8 +194,6 @@ void PlayerHandler::handleMessage(MessageIn *msg) // Switch the actual map, deleting the previous one if necessary engine->changeMap(mapPath); - current_npc = 0; - float scrollOffsetX = 0.0f; float scrollOffsetY = 0.0f; @@ -173,30 +220,30 @@ void PlayerHandler::handleMessage(MessageIn *msg) case SMSG_PLAYER_STAT_UPDATE_1: { - int type = msg->readInt16(); - int value = msg->readInt32(); + int type = msg.readInt16(); + int value = msg.readInt32(); switch (type) { //case 0x0000: - // player_node->setWalkSpeed(msg->readInt32()); + // player_node->setWalkSpeed(msg.readInt32()); // break; - case 0x0005: player_node->mHp = value; break; - case 0x0006: player_node->mMaxHp = value; break; + case 0x0005: player_node->setHp(value); break; + case 0x0006: player_node->setMaxHp(value); break; case 0x0007: player_node->mMp = value; break; case 0x0008: player_node->mMaxMp = value; break; case 0x0009: player_node->mStatsPointsToAttribute = value; break; - case 0x000b: player_node->mLevel = value; break; + case 0x000b: player_node->setLevel(value); break; case 0x000c: player_node->mSkillPoint = value; skillDialog->update(); break; case 0x0018: - if (value >= player_node->mMaxWeight / 2 && - player_node->mTotalWeight < - player_node->mMaxWeight / 2) + if (value >= player_node->getMaxWeight() / 2 && + player_node->getTotalWeight() < + player_node->getMaxWeight() / 2) { weightNotice = new OkDialog(_("Message"), _("You are carrying more than " @@ -205,9 +252,9 @@ void PlayerHandler::handleMessage(MessageIn *msg) weightNotice->addActionListener( &weightListener); } - player_node->mTotalWeight = value; + player_node->setTotalWeight(value); break; - case 0x0019: player_node->mMaxWeight = value; break; + case 0x0019: player_node->setMaxWeight(value); break; case 0x0029: player_node->ATK = value; break; case 0x002b: player_node->MATK = value; break; case 0x002d: player_node->DEF = value; break; @@ -219,54 +266,10 @@ void PlayerHandler::handleMessage(MessageIn *msg) case 0x0037: player_node->mJobLevel = value; break; } - if (player_node->mHp == 0 && !deathNotice) + if (player_node->getHp() == 0 && !deathNotice) { - static char const *const deadMsg[] = - { - _("You are dead."), - _("We regret to inform you that your character was " - "killed in battle."), - _("You are not that alive anymore."), - _("The cold hands of the grim reaper are grabbing for " - "your soul."), - _("Game Over!"), - _("Insert coin to continue"), - _("No, kids. Your character did not really die. It... " - "err... went to a better place."), - _("Your plan of breaking your enemies weapon by " - "bashing it with your throat failed."), - _("I guess this did not run too well."), - // NetHack reference: - _("Do you want your possessions identified?"), - // Secret of Mana reference: - _("Sadly, no trace of you was ever found..."), - // Final Fantasy VI reference: - _("Annihilated."), - // Earthbound reference: - _("Looks like you got your head handed to you."), - // Leisure Suit Larry 1 reference: - _("You screwed up again, dump your body down the tubes " - "and get you another one."), - // Monty Python references (Dead Parrot sketch mostly): - _("You're not dead yet. You're just resting."), - _("You are no more."), - _("You have ceased to be."), - _("You've expired and gone to meet your maker."), - _("You're a stiff."), - _("Bereft of life, you rest in peace."), - _("If you weren't so animated, you'd be pushing up the " - "daisies."), - _("Your metabolic processes are now history."), - _("You're off the twig."), - _("You've kicked the bucket."), - _("You've shuffled off your mortal coil, run down the " - "curtain and joined the bleedin' choir invisibile."), - _("You are an ex-player."), - _("You're pining for the fjords.") - }; - std::string message(deadMsg[rand()%27]); - - deathNotice = new OkDialog(_("Message"), message); + deathNotice = new OkDialog(_("Message"), + randomDeathMessage()); deathNotice->addActionListener(&deathListener); player_node->setAction(Being::DEAD); } @@ -274,36 +277,36 @@ void PlayerHandler::handleMessage(MessageIn *msg) break; case SMSG_PLAYER_STAT_UPDATE_2: - switch (msg->readInt16()) { + switch (msg.readInt16()) { case 0x0001: - player_node->setXp(msg->readInt32()); + player_node->setXp(msg.readInt32()); break; case 0x0002: - player_node->mJobXp = msg->readInt32(); + player_node->mJobXp = msg.readInt32(); break; case 0x0014: { - Uint32 curGp = player_node->mGp; - player_node->mGp = msg->readInt32(); - if (player_node->mGp > curGp) - chatWindow->chatLog(_("You picked up ") + - toString(player_node->mGp - curGp) + " GP", - BY_SERVER); + int curGp = player_node->getMoney(); + player_node->setMoney(msg.readInt32()); + if (player_node->getMoney() > curGp) + localChatTab->chatLog(_("You picked up ") + + Units::formatCurrency(player_node->getMoney() + - curGp), BY_SERVER); } break; case 0x0016: - player_node->mXpForNextLevel = msg->readInt32(); + player_node->mXpForNextLevel = msg.readInt32(); break; case 0x0017: - player_node->mJobXpForNextLevel = msg->readInt32(); + player_node->mJobXpForNextLevel = msg.readInt32(); break; } break; case SMSG_PLAYER_STAT_UPDATE_3: { - int type = msg->readInt32(); - int base = msg->readInt32(); - int bonus = msg->readInt32(); + int type = msg.readInt32(); + int base = msg.readInt32(); + int bonus = msg.readInt32(); int total = base + bonus; switch (type) { @@ -325,9 +328,9 @@ void PlayerHandler::handleMessage(MessageIn *msg) case SMSG_PLAYER_STAT_UPDATE_4: { - int type = msg->readInt16(); - int fail = msg->readInt8(); - int value = msg->readInt8(); + int type = msg.readInt16(); + int fail = msg.readInt8(); + int value = msg.readInt8(); if (fail != 1) break; @@ -351,64 +354,64 @@ void PlayerHandler::handleMessage(MessageIn *msg) // Updates stats and status points case SMSG_PLAYER_STAT_UPDATE_5: - player_node->mStatsPointsToAttribute = msg->readInt16(); - player_node->mAttr[LocalPlayer::STR] = msg->readInt8(); - player_node->mAttrUp[LocalPlayer::STR] = msg->readInt8(); - player_node->mAttr[LocalPlayer::AGI] = msg->readInt8(); - player_node->mAttrUp[LocalPlayer::AGI] = msg->readInt8(); - player_node->mAttr[LocalPlayer::VIT] = msg->readInt8(); - player_node->mAttrUp[LocalPlayer::VIT] = msg->readInt8(); - player_node->mAttr[LocalPlayer::INT] = msg->readInt8(); - player_node->mAttrUp[LocalPlayer::INT] = msg->readInt8(); - player_node->mAttr[LocalPlayer::DEX] = msg->readInt8(); - player_node->mAttrUp[LocalPlayer::DEX] = msg->readInt8(); - player_node->mAttr[LocalPlayer::LUK] = msg->readInt8(); - player_node->mAttrUp[LocalPlayer::LUK] = msg->readInt8(); - player_node->ATK = msg->readInt16(); // ATK - player_node->ATK_BONUS = msg->readInt16(); // ATK bonus - player_node->MATK = msg->readInt16(); // MATK max - player_node->MATK_BONUS = msg->readInt16(); // MATK min - player_node->DEF = msg->readInt16(); // DEF - player_node->DEF_BONUS = msg->readInt16(); // DEF bonus - player_node->MDEF = msg->readInt16(); // MDEF - player_node->MDEF_BONUS = msg->readInt16(); // MDEF bonus - player_node->HIT = msg->readInt16(); // HIT - player_node->FLEE = msg->readInt16(); // FLEE - player_node->FLEE_BONUS = msg->readInt16(); // FLEE bonus - msg->readInt16(); // critical - msg->readInt16(); // unknown + player_node->mStatsPointsToAttribute = msg.readInt16(); + player_node->mAttr[LocalPlayer::STR] = msg.readInt8(); + player_node->mAttrUp[LocalPlayer::STR] = msg.readInt8(); + player_node->mAttr[LocalPlayer::AGI] = msg.readInt8(); + player_node->mAttrUp[LocalPlayer::AGI] = msg.readInt8(); + player_node->mAttr[LocalPlayer::VIT] = msg.readInt8(); + player_node->mAttrUp[LocalPlayer::VIT] = msg.readInt8(); + player_node->mAttr[LocalPlayer::INT] = msg.readInt8(); + player_node->mAttrUp[LocalPlayer::INT] = msg.readInt8(); + player_node->mAttr[LocalPlayer::DEX] = msg.readInt8(); + player_node->mAttrUp[LocalPlayer::DEX] = msg.readInt8(); + player_node->mAttr[LocalPlayer::LUK] = msg.readInt8(); + player_node->mAttrUp[LocalPlayer::LUK] = msg.readInt8(); + player_node->ATK = msg.readInt16(); // ATK + player_node->ATK_BONUS = msg.readInt16(); // ATK bonus + player_node->MATK = msg.readInt16(); // MATK max + player_node->MATK_BONUS = msg.readInt16(); // MATK min + player_node->DEF = msg.readInt16(); // DEF + player_node->DEF_BONUS = msg.readInt16(); // DEF bonus + player_node->MDEF = msg.readInt16(); // MDEF + player_node->MDEF_BONUS = msg.readInt16(); // MDEF bonus + player_node->HIT = msg.readInt16(); // HIT + player_node->FLEE = msg.readInt16(); // FLEE + player_node->FLEE_BONUS = msg.readInt16(); // FLEE bonus + msg.readInt16(); // critical + msg.readInt16(); // unknown break; case SMSG_PLAYER_STAT_UPDATE_6: - switch (msg->readInt16()) { + switch (msg.readInt16()) { case 0x0020: - player_node->mAttrUp[LocalPlayer::STR] = msg->readInt8(); + player_node->mAttrUp[LocalPlayer::STR] = msg.readInt8(); break; case 0x0021: - player_node->mAttrUp[LocalPlayer::AGI] = msg->readInt8(); + player_node->mAttrUp[LocalPlayer::AGI] = msg.readInt8(); break; case 0x0022: - player_node->mAttrUp[LocalPlayer::VIT] = msg->readInt8(); + player_node->mAttrUp[LocalPlayer::VIT] = msg.readInt8(); break; case 0x0023: - player_node->mAttrUp[LocalPlayer::INT] = msg->readInt8(); + player_node->mAttrUp[LocalPlayer::INT] = msg.readInt8(); break; case 0x0024: - player_node->mAttrUp[LocalPlayer::DEX] = msg->readInt8(); + player_node->mAttrUp[LocalPlayer::DEX] = msg.readInt8(); break; case 0x0025: - player_node->mAttrUp[LocalPlayer::LUK] = msg->readInt8(); + player_node->mAttrUp[LocalPlayer::LUK] = msg.readInt8(); break; } break; case SMSG_PLAYER_ARROW_MESSAGE: { - int type = msg->readInt16(); + int type = msg.readInt16(); switch (type) { case 0: - chatWindow->chatLog(_("Equip arrows first"), + localChatTab->chatLog(_("Equip arrows first"), BY_SERVER); break; default: diff --git a/src/net/playerhandler.h b/src/net/ea/playerhandler.h index 0500ae44..9fb2c982 100644 --- a/src/net/playerhandler.h +++ b/src/net/ea/playerhandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,17 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_PLAYERHANDLER_H -#define NET_PLAYERHANDLER_H +#ifndef NET_EA_PLAYERHANDLER_H +#define NET_EA_PLAYERHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" class PlayerHandler : public MessageHandler { public: PlayerHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); }; -#endif +#endif // NET_EA_PLAYERHANDLER_H diff --git a/src/net/protocol.cpp b/src/net/ea/protocol.cpp index 563c1cc4..9d9db56f 100644 --- a/src/net/protocol.cpp +++ b/src/net/ea/protocol.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,7 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "protocol.h" +#include "net/ea/protocol.h" #define LOBYTE(w) ((unsigned char)(w)) #define HIBYTE(w) ((unsigned char)(((unsigned short)(w)) >> 8)) diff --git a/src/net/protocol.h b/src/net/ea/protocol.h index 645d667f..c96ff7b6 100644 --- a/src/net/protocol.h +++ b/src/net/ea/protocol.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,8 +19,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef PROTOCOL_ -#define PROTOCOL_ +#ifndef EA_PROTOCOL_H +#define EA_PROTOCOL_H /********************************* * Packets from server to client * diff --git a/src/net/ea/skillhandler.cpp b/src/net/ea/skillhandler.cpp new file mode 100644 index 00000000..fcc0f4b2 --- /dev/null +++ b/src/net/ea/skillhandler.cpp @@ -0,0 +1,208 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/ea/skillhandler.h" + +#include "net/ea/protocol.h" + +#include "net/messagein.h" + +#include "log.h" + +#include "gui/chat.h" +#include "gui/skill.h" + +#include "utils/gettext.h" + +/** job dependend identifiers (?) */ +#define SKILL_BASIC 0x0001 +#define SKILL_WARP 0x001b +#define SKILL_STEAL 0x0032 +#define SKILL_ENVENOM 0x0034 + +/** basic skills identifiers */ +#define BSKILL_TRADE 0x0000 +#define BSKILL_EMOTE 0x0001 +#define BSKILL_SIT 0x0002 +#define BSKILL_CREATECHAT 0x0003 +#define BSKILL_JOINPARTY 0x0004 +#define BSKILL_SHOUT 0x0005 +#define BSKILL_PK 0x0006 // ?? +#define BSKILL_SETALLIGN 0x0007 // ?? + +/** reasons why action failed */ +#define RFAIL_SKILLDEP 0x00 +#define RFAIL_INSUFHP 0x01 +#define RFAIL_INSUFSP 0x02 +#define RFAIL_NOMEMO 0x03 +#define RFAIL_SKILLDELAY 0x04 +#define RFAIL_ZENY 0x05 +#define RFAIL_WEAPON 0x06 +#define RFAIL_REDGEM 0x07 +#define RFAIL_BLUEGEM 0x08 +#define RFAIL_OVERWEIGHT 0x09 +#define RFAIL_GENERIC 0x0a + +/** should always be zero if failed */ +#define SKILL_FAILED 0x00 + +SkillHandler::SkillHandler() +{ + static const Uint16 _messages[] = { + SMSG_PLAYER_SKILLS, + SMSG_SKILL_FAILED, + 0 + }; + handledMessages = _messages; +} + +void SkillHandler::handleMessage(MessageIn &msg) +{ + int skillCount; + + switch (msg.getId()) + { + case SMSG_PLAYER_SKILLS: + msg.readInt16(); // length + skillCount = (msg.getLength() - 4) / 37; + skillDialog->cleanList(); + + for (int k = 0; k < skillCount; k++) + { + int skillId = msg.readInt16(); + msg.readInt16(); // target type + msg.readInt16(); // unknown + int level = msg.readInt16(); + int sp = msg.readInt16(); + msg.readInt16(); // range + std::string skillName = msg.readString(24); + int up = msg.readInt8(); + + if (level != 0 || up != 0) + { + if (skillDialog->hasSkill(skillId)) { + skillDialog->setSkill(skillId, level, sp); + } + else { + skillDialog->addSkill(skillId, level, sp); + } + } + } + skillDialog->update(); + break; + + case SMSG_SKILL_FAILED: + // Action failed (ex. sit because you have not reached the + // right level) + short skill = msg.readInt16(); + short bskill = msg.readInt16(); + msg.readInt16(); // unknown + char success = msg.readInt8(); + char reason = msg.readInt8(); + if (success != SKILL_FAILED && bskill == BSKILL_EMOTE) + { + logger->log("Action: %d/%d", bskill, success); + } + + std::string msg; + if (success == SKILL_FAILED && skill == SKILL_BASIC) + { + switch (bskill) + { + case BSKILL_TRADE: + msg = _("Trade failed!"); + break; + case BSKILL_EMOTE: + msg = _("Emote failed!"); + break; + case BSKILL_SIT: + msg = _("Sit failed!"); + break; + case BSKILL_CREATECHAT: + msg = _("Chat creating failed!"); + break; + case BSKILL_JOINPARTY: + msg = _("Could not join party!"); + break; + case BSKILL_SHOUT: + msg = _("Cannot shout!"); + break; + } + + msg += " "; + + switch (reason) + { + case RFAIL_SKILLDEP: + msg += _("You have not yet reached a high enough lvl!"); + break; + case RFAIL_INSUFHP: + msg += _("Insufficient HP!"); + break; + case RFAIL_INSUFSP: + msg += _("Insufficient SP!"); + break; + case RFAIL_NOMEMO: + msg += _("You have no memos!"); + break; + case RFAIL_SKILLDELAY: + msg += _("You cannot do that right now!"); + break; + case RFAIL_ZENY: + msg += _("Seems you need more money... ;-)"); + break; + case RFAIL_WEAPON: + msg += _("You cannot use this skill with that kind of weapon!"); + break; + case RFAIL_REDGEM: + msg += _("You need another red gem!"); + break; + case RFAIL_BLUEGEM: + msg += _("You need another blue gem!"); + break; + case RFAIL_OVERWEIGHT: + msg += _("You're carrying to much to do this!"); + break; + default: + msg += _("Huh? What's that?"); + break; + } + } + else + { + switch (skill) + { + case SKILL_WARP : + msg = _("Warp failed..."); + break; + case SKILL_STEAL : + msg = _("Could not steal anything..."); + break; + case SKILL_ENVENOM : + msg = _("Poison had no effect..."); + break; + } + } + + localChatTab->chatLog(msg); + break; + } +} diff --git a/src/net/skillhandler.h b/src/net/ea/skillhandler.h index 689e42dc..f2c950c9 100644 --- a/src/net/skillhandler.h +++ b/src/net/ea/skillhandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,17 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_SKILLHANDLER_H -#define NET_SKILLHANDLER_H +#ifndef NET_EA_SKILLHANDLER_H +#define NET_EA_SKILLHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" class SkillHandler : public MessageHandler { public: SkillHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); }; -#endif +#endif // NET_EA_SKILLHANDLER_H diff --git a/src/net/tradehandler.cpp b/src/net/ea/tradehandler.cpp index fd772d01..ea41ed70 100644 --- a/src/net/tradehandler.cpp +++ b/src/net/ea/tradehandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,20 +19,22 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "messagein.h" -#include "protocol.h" -#include "tradehandler.h" +#include "net/ea/tradehandler.h" -#include "../inventory.h" -#include "../item.h" -#include "../localplayer.h" -#include "../player_relations.h" +#include "net/ea/protocol.h" -#include "../gui/chat.h" -#include "../gui/confirm_dialog.h" -#include "../gui/trade.h" +#include "net/messagein.h" -#include "../utils/gettext.h" +#include "inventory.h" +#include "item.h" +#include "localplayer.h" +#include "player_relations.h" + +#include "gui/chat.h" +#include "gui/confirm_dialog.h" +#include "gui/trade.h" + +#include "utils/gettext.h" std::string tradePartnerName; @@ -46,7 +47,7 @@ namespace { void action(const gcn::ActionEvent &event) { player_node->tradeReply(event.getId() == "yes"); - }; + } } listener; } @@ -66,9 +67,9 @@ TradeHandler::TradeHandler() } -void TradeHandler::handleMessage(MessageIn *msg) +void TradeHandler::handleMessage(MessageIn &msg) { - switch (msg->getId()) + switch (msg.getId()) { case SMSG_TRADE_REQUEST: // If a trade window or request window is already open, send a @@ -77,7 +78,7 @@ void TradeHandler::handleMessage(MessageIn *msg) // Note that it would be nice if the server would prevent this // situation, and that the requesting player would get a // special message about the player being occupied. - tradePartnerName = msg->readString(24); + tradePartnerName = msg.readString(24); if (player_relations.hasPermission(tradePartnerName, PlayerRelation::TRADE)) { @@ -102,18 +103,18 @@ void TradeHandler::handleMessage(MessageIn *msg) break; case SMSG_TRADE_RESPONSE: - switch (msg->readInt8()) + switch (msg.readInt8()) { case 0: // Too far away - chatWindow->chatLog(_("Trading isn't possible. Trade partner is too far away."), + localChatTab->chatLog(_("Trading isn't possible. Trade partner is too far away."), BY_SERVER); break; case 1: // Character doesn't exist - chatWindow->chatLog(_("Trading isn't possible. Character doesn't exist."), + localChatTab->chatLog(_("Trading isn't possible. Character doesn't exist."), BY_SERVER); break; case 2: // Invite request check failed... - chatWindow->chatLog(_("Trade cancelled due to an unknown reason."), + localChatTab->chatLog(_("Trade cancelled due to an unknown reason."), BY_SERVER); break; case 3: // Trade accepted @@ -125,7 +126,7 @@ void TradeHandler::handleMessage(MessageIn *msg) case 4: // Trade cancelled if (player_relations.hasPermission(tradePartnerName, PlayerRelation::SPEECH_LOG)) - chatWindow->chatLog(_("Trade with ") + tradePartnerName + + localChatTab->chatLog(_("Trade with ") + tradePartnerName + _(" cancelled"), BY_SERVER); // otherwise ignore silently @@ -133,7 +134,7 @@ void TradeHandler::handleMessage(MessageIn *msg) player_node->setTrading(false); break; default: // Shouldn't happen as well, but to be sure - chatWindow->chatLog(_("Unhandled trade cancel packet"), + localChatTab->chatLog(_("Unhandled trade cancel packet"), BY_SERVER); break; } @@ -141,16 +142,16 @@ void TradeHandler::handleMessage(MessageIn *msg) case SMSG_TRADE_ITEM_ADD: { - int amount = msg->readInt32(); - int type = msg->readInt16(); - msg->readInt8(); // identified flag - msg->readInt8(); // attribute - msg->readInt8(); // refine - msg->skip(8); // card (4 shorts) + int amount = msg.readInt32(); + int type = msg.readInt16(); + msg.readInt8(); // identified flag + msg.readInt8(); // attribute + msg.readInt8(); // refine + msg.skip(8); // card (4 shorts) // TODO: handle also identified, etc if (type == 0) { - tradeWindow->addMoney(amount); + tradeWindow->setMoney(amount); } else { tradeWindow->addItem(type, false, amount, false); } @@ -160,16 +161,16 @@ void TradeHandler::handleMessage(MessageIn *msg) case SMSG_TRADE_ITEM_ADD_RESPONSE: // Trade: New Item add response (was 0x00ea, now 01b1) { - const int index = msg->readInt16(); + const int index = msg.readInt16(); Item *item = player_node->getInventory()->getItem(index); if (!item) { tradeWindow->receivedOk(true); return; } - int quantity = msg->readInt16(); + int quantity = msg.readInt16(); - switch (msg->readInt8()) + switch (msg.readInt8()) { case 0: // Successfully added item @@ -183,16 +184,16 @@ void TradeHandler::handleMessage(MessageIn *msg) break; case 1: // Add item failed - player overweighted - chatWindow->chatLog(_("Failed adding item. Trade partner is over weighted."), + localChatTab->chatLog(_("Failed adding item. Trade partner is over weighted."), BY_SERVER); break; case 2: // Add item failed - player has no free slot - chatWindow->chatLog(_("Failed adding item. Trade partner has no free slot."), + localChatTab->chatLog(_("Failed adding item. Trade partner has no free slot."), BY_SERVER); break; default: - chatWindow->chatLog(_("Failed adding item for unknown reason."), + localChatTab->chatLog(_("Failed adding item for unknown reason."), BY_SERVER); break; } @@ -201,18 +202,18 @@ void TradeHandler::handleMessage(MessageIn *msg) case SMSG_TRADE_OK: // 0 means ok from myself, 1 means ok from other; - tradeWindow->receivedOk(msg->readInt8() == 0); + tradeWindow->receivedOk(msg.readInt8() == 0); break; case SMSG_TRADE_CANCEL: - chatWindow->chatLog(_("Trade canceled."), BY_SERVER); + localChatTab->chatLog(_("Trade canceled."), BY_SERVER); tradeWindow->setVisible(false); tradeWindow->reset(); player_node->setTrading(false); break; case SMSG_TRADE_COMPLETE: - chatWindow->chatLog(_("Trade completed."), BY_SERVER); + localChatTab->chatLog(_("Trade completed."), BY_SERVER); tradeWindow->setVisible(false); tradeWindow->reset(); player_node->setTrading(false); diff --git a/src/net/tradehandler.h b/src/net/ea/tradehandler.h index 8f108248..e141f6b5 100644 --- a/src/net/tradehandler.h +++ b/src/net/ea/tradehandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,19 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_TRADEHANDLER_H -#define NET_TRADEHANDLER_H +#ifndef NET_EA_TRADEHANDLER_H +#define NET_EA_TRADEHANDLER_H -#include "messagehandler.h" - -class Network; +#include "net/messagehandler.h" class TradeHandler : public MessageHandler { public: TradeHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); }; -#endif +#endif // NET_EA_TRADEHANDLER_H diff --git a/src/net/messagehandler.cpp b/src/net/messagehandler.cpp index f45000be..4cb6af0b 100644 --- a/src/net/messagehandler.cpp +++ b/src/net/messagehandler.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,24 +19,37 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <cassert> +#include "net/messagehandler.h" + +#ifdef TMWSERV_SUPPORT +#include "net/tmwserv/network.h" +#else +#include "net/ea/network.h" +#endif -#include "messagehandler.h" -#include "network.h" +#include <cassert> -MessageHandler::MessageHandler(): - mNetwork(0) +MessageHandler::MessageHandler() +#ifdef EATHENA_SUPPORT + : mNetwork(0) +#endif { } MessageHandler::~MessageHandler() { +#ifdef TMWSERV_SUPPORT + Net::unregisterHandler(this); +#else if (mNetwork) mNetwork->unregisterHandler(this); +#endif } +#ifdef EATHENA_SUPPORT void MessageHandler::setNetwork(Network *network) { assert(!(network && mNetwork)); mNetwork = network; } +#endif diff --git a/src/net/messagehandler.h b/src/net/messagehandler.h index 7ff5194b..261a8351 100644 --- a/src/net/messagehandler.h +++ b/src/net/messagehandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,8 +25,13 @@ #include <SDL_types.h> class MessageIn; +#ifdef EATHENA_SUPPORT class Network; +#endif +/** + * \ingroup Network + */ class MessageHandler { public: @@ -36,12 +40,14 @@ class MessageHandler MessageHandler(); virtual ~MessageHandler(); - virtual void handleMessage(MessageIn *msg) =0; + virtual void handleMessage(MessageIn &msg) = 0; +#ifdef EATHENA_SUPPORT void setNetwork(Network *network); protected: Network *mNetwork; +#endif }; #endif diff --git a/src/net/messagein.cpp b/src/net/messagein.cpp index f1ff4013..f365bb7f 100644 --- a/src/net/messagein.cpp +++ b/src/net/messagein.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,11 +19,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <cassert> +#include "net/messagein.h" + +#ifdef TMWSERV_SUPPORT +#include <enet/enet.h> +#else #include <SDL.h> #include <SDL_endian.h> +#endif -#include "messagein.h" +#include <cassert> #define MAKEWORD(low,high) \ ((unsigned short)(((unsigned char)(low)) | \ @@ -39,32 +43,68 @@ MessageIn::MessageIn(const char *data, unsigned int length): mId = readInt16(); } -Sint8 MessageIn::readInt8() +int MessageIn::readInt8() { - assert(mPos < mLength); - return mData[mPos++]; + int value = -1; + if (mPos < mLength) + { + value = (unsigned char) mData[mPos]; + } + mPos += 1; + return value; } -Sint16 MessageIn::readInt16() +int MessageIn::readInt16() { - assert(mPos + 2 <= mLength); - mPos += 2; + int value = -1; + if (mPos + 2 <= mLength) + { +#ifdef TMWSERV_SUPPORT + uint16_t t; + memcpy(&t, mData + mPos, 2); + value = (unsigned short) ENET_NET_TO_HOST_16(t); +#else #if SDL_BYTEORDER == SDL_BIG_ENDIAN - return SDL_Swap16(*(Sint16*)(mData + (mPos - 2))); + value = SDL_Swap16(*(Sint16*)(mData + mPos)); #else - return (*(Sint16*)(mData + (mPos - 2))); + value = (*(Sint16*)(mData + mPos)); #endif +#endif // TMWSERV_SUPPORT + } + mPos += 2; + return value; } -Sint32 MessageIn::readInt32() +int MessageIn::readInt32() { - assert(mPos + 4 <= mLength); - mPos += 4; + int value = -1; + if (mPos + 4 <= mLength) + { +#ifdef TMWSERV_SUPPORT + uint32_t t; + memcpy(&t, mData + mPos, 4); + value = ENET_NET_TO_HOST_32(t); +#else #if SDL_BYTEORDER == SDL_BIG_ENDIAN - return SDL_Swap32(*(Sint32*)(mData + (mPos - 4))); + value = SDL_Swap32(*(Sint32*)(mData + mPos)); #else - return (*(Sint32*)(mData + (mPos - 4))); + value = (*(Sint32*)(mData + mPos)); #endif +#endif // TMWSERV_SUPPORT + } + mPos += 4; + return value; +} + +void MessageIn::readCoordinates(Uint16 &x, Uint16 &y) +{ + if (mPos + 3 <= mLength) + { + unsigned char const *p = reinterpret_cast< unsigned char const * >(mData + mPos); + x = p[0] | ((p[1] & 0x07) << 8); + y = (p[1] >> 3) | ((p[2] & 0x3F) << 5); + } + mPos += 3; } void MessageIn::readCoordinates(Uint16 &x, Uint16 &y, Uint8 &direction) @@ -165,21 +205,3 @@ std::string MessageIn::readString(int length) mPos += length; return readString; } - -Sint8& operator<<(Sint8 &lhs, MessageIn &msg) -{ - lhs = msg.readInt8(); - return lhs; -} - -Sint16& operator<<(Sint16 &lhs, MessageIn &msg) -{ - lhs = msg.readInt16(); - return lhs; -} - -Sint32& operator<<(Sint32 &lhs, MessageIn &msg) -{ - lhs = msg.readInt32(); - return lhs; -} diff --git a/src/net/messagein.h b/src/net/messagein.h index 94f2bee7..0d0e9981 100644 --- a/src/net/messagein.h +++ b/src/net/messagein.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,13 +27,11 @@ /** * Used for parsing an incoming message. + * + * \ingroup Network */ class MessageIn { - friend Sint8& operator<<(Sint8 &lhs, MessageIn &msg); - friend Sint16& operator<<(Sint16 &lhs, MessageIn &msg); - friend Sint32& operator<<(Sint32 &lhs, MessageIn &msg); - public: /** * Constructor. @@ -44,16 +41,27 @@ class MessageIn /** * Returns the message ID. */ - short getId() { return mId; } + int getId() const { return mId; } /** * Returns the message length. */ - unsigned int getLength() { return mLength; } + unsigned int getLength() const { return mLength; } + + /** + * Returns the length of unread data. + */ + unsigned int getUnreadLength() const { return mLength - mPos; } - Sint8 readInt8(); /**< Reads a byte. */ - Sint16 readInt16(); /**< Reads a short. */ - Sint32 readInt32(); /**< Reads a long. */ + int readInt8(); /**< Reads a byte. */ + int readInt16(); /**< Reads a short. */ + int readInt32(); /**< Reads a long. */ + + /** + * Reads a 3-byte block containing tile-based coordinates. Used by + * tmwserv. + */ + void readCoordinates(Uint16 &x, Uint16 &y); /** * Reads a special 3 byte block used by eAthena, containing x and y @@ -83,8 +91,14 @@ class MessageIn private: const char* mData; /**< The message data. */ unsigned int mLength; /**< The length of the data. */ - unsigned int mPos; /**< The position in the data. */ - short mId; /**< The message ID. */ + unsigned short mId; /**< The message ID. */ + + /** + * Actual position in the packet. From 0 to packet->length. + * A value bigger than packet->length means EOP was reached when + * reading it. + */ + unsigned int mPos; }; #endif diff --git a/src/net/messageout.cpp b/src/net/messageout.cpp index ab17f537..4cb4dc36 100644 --- a/src/net/messageout.cpp +++ b/src/net/messageout.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,95 +19,132 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <cstring> +#include "net/messageout.h" + +#ifdef TMWSERV_SUPPORT +#include <enet/enet.h> +#else +#include "net/ea/network.h" + #include <SDL.h> #include <SDL_endian.h> -#include <string> +#endif -#include "messageout.h" -#include "network.h" +#include <cstring> +#include <string> +#ifdef TMWSERV_SUPPORT +MessageOut::MessageOut(short id): + mData(0), +#else MessageOut::MessageOut(Network *network): mNetwork(network), - mData(0), +#endif mDataSize(0), mPos(0) { +#ifdef TMWSERV_SUPPORT + writeInt16(id); +#else mData = mNetwork->mOutBuffer + mNetwork->mOutSize; +#endif } +#ifdef TMWSERV_SUPPORT +MessageOut::~MessageOut() +{ + free(mData); +} + +void MessageOut::expand(size_t bytes) +{ + mData = (char*)realloc(mData, bytes); + mDataSize = bytes; +} +#endif + void MessageOut::writeInt8(Sint8 value) { +#ifdef TMWSERV_SUPPORT + expand(mPos + 1); +#else + mNetwork->mOutSize += 1; +#endif mData[mPos] = value; - mPos += sizeof(Sint8); - mNetwork->mOutSize+= sizeof(Sint8); + mPos += 1; } void MessageOut::writeInt16(Sint16 value) { +#ifdef TMWSERV_SUPPORT + expand(mPos + 2); + uint16_t t = ENET_HOST_TO_NET_16(value); + memcpy(mData + mPos, &t, 2); +#else #if SDL_BYTEORDER == SDL_BIG_ENDIAN (*(Sint16 *)(mData + mPos)) = SDL_Swap16(value); #else (*(Sint16 *)(mData + mPos)) = value; #endif - mPos += sizeof(Sint16); - mNetwork->mOutSize += sizeof(Sint16); + mNetwork->mOutSize += 2; +#endif // TMWSERV_SUPPORT + mPos += 2; } void MessageOut::writeInt32(Sint32 value) { +#ifdef TMWSERV_SUPPORT + expand(mPos + 4); + uint32_t t = ENET_HOST_TO_NET_32(value); + memcpy(mData + mPos, &t, 4); +#else #if SDL_BYTEORDER == SDL_BIG_ENDIAN (*(Sint32 *)(mData + mPos)) = SDL_Swap32(value); #else (*(Sint32 *)(mData + mPos)) = value; #endif - mPos += sizeof(Sint32); - mNetwork->mOutSize += sizeof(Sint32); + mNetwork->mOutSize += 4; +#endif // TMWSERV_SUPPORT + mPos += 4; } void MessageOut::writeString(const std::string &string, int length) { - std::string toWrite = string; - + int stringLength = string.length(); if (length < 0) { // Write the length at the start if not fixed - writeInt16(string.length()); + writeInt16(stringLength); + length = stringLength; } - else + else if (length < stringLength) { // Make sure the length of the string is no longer than specified - toWrite = string.substr(0, length); + stringLength = length; } +#ifdef TMWSERV_SUPPORT + expand(mPos + length); +#else + mNetwork->mOutSize += length; +#endif // Write the actual string - memcpy(&mData[mPos], (void*)toWrite.c_str(), toWrite.length()); - mPos += toWrite.length(); - mNetwork->mOutSize += toWrite.length(); + memcpy(mData + mPos, string.c_str(), stringLength); // Pad remaining space with zeros - if (length > (int)toWrite.length()) + if (length > stringLength) { - memset(&mData[mPos], '\0', length - toWrite.length()); - mPos += length - toWrite.length(); - mNetwork->mOutSize += length - toWrite.length(); + memset(mData + mPos + stringLength, '\0', length - stringLength); } + mPos += length; } -MessageOut& operator<<(MessageOut &msg, const Sint8 &rhs) -{ - msg.writeInt8(rhs); - return msg; -} - -MessageOut& operator<<(MessageOut &msg, const Sint16 &rhs) +char *MessageOut::getData() const { - msg.writeInt16(rhs); - return msg; + return mData; } -MessageOut& operator<<(MessageOut &msg, const Sint32 &rhs) +unsigned int MessageOut::getDataSize() const { - msg.writeInt32(rhs); - return msg; + return mDataSize; } diff --git a/src/net/messageout.h b/src/net/messageout.h index 93f1c2e8..bc701b92 100644 --- a/src/net/messageout.h +++ b/src/net/messageout.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,26 +25,38 @@ #include <iosfwd> #include <SDL_types.h> +#ifdef EATHENA_SUPPORT class Network; +#endif /** * Used for building an outgoing message. + * + * With tmwserv, the message is sent using Net::Connection::send() when + * finished. + * + * \ingroup Network */ class MessageOut { - friend MessageOut& operator<<(MessageOut &msg, const Sint8 &rhs); - friend MessageOut& operator<<(MessageOut &msg, const Sint16 &rhs); - friend MessageOut& operator<<(MessageOut &msg, const Sint32 &rhs); - public: /** * Constructor. */ +#ifdef TMWSERV_SUPPORT + MessageOut(short id); + + /** + * Destructor. + */ + ~MessageOut(); +#else MessageOut(Network *network); +#endif void writeInt8(Sint8 value); /**< Writes a byte. */ void writeInt16(Sint16 value); /**< Writes a short. */ - void writeInt32(Sint32 value); /**< Writes a long. */ + void writeInt32(Sint32 value); /**< Writes a long. */ /** * Writes a string. If a fixed length is not given (-1), it is stored @@ -53,8 +64,29 @@ class MessageOut */ void writeString(const std::string &string, int length = -1); + /** + * Returns the content of the message. + */ + char *getData() const; + + /** + * Returns the length of the data. + */ + unsigned int getDataSize() const; + private: +#ifdef TMWSERV_SUPPORT + /** + * Expand the packet data to be able to hold more data. + * + * NOTE: For performance enhancements this method could allocate extra + * memory in advance instead of expanding size every time more data is + * added. + */ + void expand(size_t size); +#else Network *mNetwork; +#endif char *mData; /**< Data building up. */ unsigned int mDataSize; /**< Size of data. */ diff --git a/src/net/skillhandler.cpp b/src/net/skillhandler.cpp deleted file mode 100644 index be757d7c..00000000 --- a/src/net/skillhandler.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Aethyra - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of Aethyra based on original code - * from The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "messagein.h" -#include "protocol.h" -#include "skillhandler.h" - -#include "../log.h" - -#include "../gui/chat.h" -#include "../gui/skill.h" - -SkillHandler::SkillHandler() -{ - static const Uint16 _messages[] = { - SMSG_PLAYER_SKILLS, - SMSG_SKILL_FAILED, - 0 - }; - handledMessages = _messages; -} - -void SkillHandler::handleMessage(MessageIn *msg) -{ - int skillCount; - - switch (msg->getId()) - { - case SMSG_PLAYER_SKILLS: - msg->readInt16(); // length - skillCount = (msg->getLength() - 4) / 37; - skillDialog->cleanList(); - - for (int k = 0; k < skillCount; k++) - { - int skillId = msg->readInt16(); - msg->readInt16(); // target type - msg->readInt16(); // unknown - int level = msg->readInt16(); - int sp = msg->readInt16(); - msg->readInt16(); // range - std::string skillName = msg->readString(24); - int up = msg->readInt8(); - - if (level != 0 || up != 0) - { - if (skillDialog->hasSkill(skillId)) { - skillDialog->setSkill(skillId, level, sp); - } - else { - skillDialog->addSkill(skillId, level, sp); - } - } - } - skillDialog->update(); - break; - - case SMSG_SKILL_FAILED: - // Action failed (ex. sit because you have not reached the - // right level) - CHATSKILL action; - action.skill = msg->readInt16(); - action.bskill = msg->readInt16(); - action.unused = msg->readInt16(); // unknown - action.success = msg->readInt8(); - action.reason = msg->readInt8(); - if (action.success != SKILL_FAILED && - action.bskill == BSKILL_EMOTE) - { - logger->log("Action: %d/%d", action.bskill, action.success); - } - chatWindow->chatLog(action); - break; - } -} diff --git a/src/net/tmwserv/accountserver/account.cpp b/src/net/tmwserv/accountserver/account.cpp new file mode 100644 index 00000000..e6c1830b --- /dev/null +++ b/src/net/tmwserv/accountserver/account.cpp @@ -0,0 +1,108 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "account.h" + +#include "internal.h" + +#include "net/tmwserv/connection.h" +#include "net/tmwserv/protocol.h" + +#include "net/messageout.h" + +#include "utils/sha256.h" + +#include <string> + +void Net::AccountServer::Account::createCharacter( + const std::string &name, char hairStyle, char hairColor, char gender, + short strength, short agility, short vitality, + short intelligence, short dexterity, short willpower) +{ + MessageOut msg(PAMSG_CHAR_CREATE); + + msg.writeString(name); + msg.writeInt8(hairStyle); + msg.writeInt8(hairColor); + msg.writeInt8(gender); + msg.writeInt16(strength); + msg.writeInt16(agility); + msg.writeInt16(vitality); + msg.writeInt16(intelligence); + msg.writeInt16(dexterity); + msg.writeInt16(willpower); + + Net::AccountServer::connection->send(msg); +} + +void Net::AccountServer::Account::deleteCharacter(char slot) +{ + MessageOut msg(PAMSG_CHAR_DELETE); + + msg.writeInt8(slot); + + Net::AccountServer::connection->send(msg); +} + +void Net::AccountServer::Account::selectCharacter(char slot) +{ + MessageOut msg(PAMSG_CHAR_SELECT); + + msg.writeInt8(slot); + + Net::AccountServer::connection->send(msg); +} + +void Net::AccountServer::Account::unregister(const std::string &username, + const std::string &password) +{ + MessageOut msg(PAMSG_UNREGISTER); + + msg.writeString(username); + msg.writeString(sha256(username + password)); + + Net::AccountServer::connection->send(msg); +} + +void Net::AccountServer::Account::changeEmail(const std::string &email) +{ + MessageOut msg(PAMSG_EMAIL_CHANGE); + + // Email is sent clearly so the server can validate the data. + // Encryption is assumed server-side. + msg.writeString(email); + + Net::AccountServer::connection->send(msg); +} + +void Net::AccountServer::Account::changePassword( + const std::string &username, + const std::string &oldPassword, + const std::string &newPassword) +{ + MessageOut msg(PAMSG_PASSWORD_CHANGE); + + // Change password using SHA2 encryption + msg.writeString(sha256(username + oldPassword)); + msg.writeString(sha256(username + newPassword)); + + Net::AccountServer::connection->send(msg); +} diff --git a/src/net/tmwserv/accountserver/account.h b/src/net/tmwserv/accountserver/account.h new file mode 100644 index 00000000..03e83881 --- /dev/null +++ b/src/net/tmwserv/accountserver/account.h @@ -0,0 +1,54 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_ACCOUNTSERVER_CHARACTER_H +#define NET_ACCOUNTSERVER_CHARACTER_H + +#include <iosfwd> + +namespace Net +{ + namespace AccountServer + { + namespace Account + { + void createCharacter(const std::string &name, + char hairStyle, char hairColor, char gender, + short strength, short agility, short vitality, + short intelligence, short dexterity, short willpower); + + void deleteCharacter(char slot); + + void selectCharacter(char slot); + + void unregister(const std::string &username, + const std::string &password); + + void changeEmail(const std::string &email); + + void changePassword(const std::string &username, + const std::string &oldPassword, + const std::string &newPassword); + } + } +} + +#endif diff --git a/src/net/tmwserv/accountserver/accountserver.cpp b/src/net/tmwserv/accountserver/accountserver.cpp new file mode 100644 index 00000000..83895377 --- /dev/null +++ b/src/net/tmwserv/accountserver/accountserver.cpp @@ -0,0 +1,82 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "accountserver.h" + +#include "internal.h" + +#include "net/tmwserv/connection.h" +#include "net/tmwserv/protocol.h" + +#include "net/messageout.h" + +#include "utils/sha256.h" + +#include <string> + +void Net::AccountServer::login(Net::Connection *connection, int version, + const std::string &username, const std::string &password) +{ + Net::AccountServer::connection = connection; + + MessageOut msg(PAMSG_LOGIN); + + msg.writeInt32(version); + msg.writeString(username); + msg.writeString(sha256(username + password)); + + Net::AccountServer::connection->send(msg); +} + +void Net::AccountServer::registerAccount(Net::Connection *connection, + int version, const std::string &username, const std::string &password, + const std::string &email) +{ + Net::AccountServer::connection = connection; + + MessageOut msg(PAMSG_REGISTER); + + msg.writeInt32(version); // client version + msg.writeString(username); + // When registering, the password and email hash is assumed by server. + // Hence, data can be validated safely server-side. + // This is the only time we send a clear password. + msg.writeString(password); + msg.writeString(email); + + Net::AccountServer::connection->send(msg); +} + +void Net::AccountServer::logout() +{ + MessageOut msg(PAMSG_LOGOUT); + Net::AccountServer::connection->send(msg); +} + +void Net::AccountServer::reconnectAccount(Net::Connection *connection, + const std::string &passToken) +{ + Net::AccountServer::connection = connection; + + MessageOut msg(PAMSG_RECONNECT); + msg.writeString(passToken, 32); + Net::AccountServer::connection->send(msg); +} diff --git a/src/net/tmwserv/accountserver/accountserver.h b/src/net/tmwserv/accountserver/accountserver.h new file mode 100644 index 00000000..dd62fd25 --- /dev/null +++ b/src/net/tmwserv/accountserver/accountserver.h @@ -0,0 +1,47 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_ACCOUNTSERVER_ACCOUNTSERVER_H +#define NET_ACCOUNTSERVER_ACCOUNTSERVER_H + +#include <iosfwd> + +namespace Net +{ + class Connection; + + namespace AccountServer + { + void login(Net::Connection *connection, int version, + const std::string &username, const std::string &password); + + void registerAccount(Net::Connection *connection, int version, + const std::string &username, const std::string &password, + const std::string &email); + + void logout(); + + void reconnectAccount(Net::Connection *connection, + const std::string &passToken); + } +} + +#endif diff --git a/src/net/tmwserv/accountserver/internal.cpp b/src/net/tmwserv/accountserver/internal.cpp new file mode 100644 index 00000000..de1d412c --- /dev/null +++ b/src/net/tmwserv/accountserver/internal.cpp @@ -0,0 +1,32 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "internal.h" + +namespace Net +{ + class Connection; + + namespace AccountServer + { + Connection *connection = 0; + } +} diff --git a/src/net/tmwserv/accountserver/internal.h b/src/net/tmwserv/accountserver/internal.h new file mode 100644 index 00000000..ff741872 --- /dev/null +++ b/src/net/tmwserv/accountserver/internal.h @@ -0,0 +1,35 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_ACCOUNTSERVER_INTERNAL_H +#define NET_ACCOUNTSERVER_INTERNAL_H + +namespace Net +{ + class Connection; + + namespace AccountServer + { + extern Connection *connection; + } +} + +#endif diff --git a/src/net/tmwserv/beinghandler.cpp b/src/net/tmwserv/beinghandler.cpp new file mode 100644 index 00000000..1a1744cc --- /dev/null +++ b/src/net/tmwserv/beinghandler.cpp @@ -0,0 +1,357 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/beinghandler.h" + +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "being.h" +#include "beingmanager.h" +#include "game.h" +#include "localplayer.h" +#include "log.h" +#include "main.h" +#include "npc.h" +#include "particle.h" +#include "sound.h" + +#include "gui/ok_dialog.h" + +#include "utils/gettext.h" + +#include "net/tmwserv/gameserver/player.h" + +const int EMOTION_TIME = 150; /**< Duration of emotion icon */ + +BeingHandler::BeingHandler() +{ + static const Uint16 _messages[] = { + GPMSG_BEING_ATTACK, + GPMSG_BEING_ENTER, + GPMSG_BEING_LEAVE, + GPMSG_BEINGS_MOVE, + GPMSG_BEINGS_DAMAGE, + GPMSG_BEING_ACTION_CHANGE, + GPMSG_BEING_LOOKS_CHANGE, + GPMSG_BEING_DIR_CHANGE, + 0 + }; + handledMessages = _messages; +} + +void BeingHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case GPMSG_BEING_ENTER: + handleBeingEnterMessage(msg); + break; + case GPMSG_BEING_LEAVE: + handleBeingLeaveMessage(msg); + break; + case GPMSG_BEINGS_MOVE: + handleBeingsMoveMessage(msg); + break; + case GPMSG_BEING_ATTACK: + handleBeingAttackMessage(msg); + break; + case GPMSG_BEINGS_DAMAGE: + handleBeingsDamageMessage(msg); + break; + case GPMSG_BEING_ACTION_CHANGE: + handleBeingActionChangeMessage(msg); + break; + case GPMSG_BEING_LOOKS_CHANGE: + handleBeingLooksChangeMessage(msg); + break; + case GPMSG_BEING_DIR_CHANGE: + handleBeingDirChangeMessage(msg); + break; + } +} + +static void handleLooks(Player *being, MessageIn &msg) +{ + // Order of sent slots. Has to be in sync with the server code. + static int const nb_slots = 4; + static int const slots[nb_slots] = + { Being::WEAPON_SPRITE, Being::HAT_SPRITE, Being::TOPCLOTHES_SPRITE, + Being::BOTTOMCLOTHES_SPRITE }; + + int mask = msg.readInt8(); + + if (mask & (1 << 7)) + { + // The equipment has to be cleared first. + for (int i = 0; i < nb_slots; ++i) + { + being->setSprite(slots[i], 0); + } + } + + // Fill slots enumerated by the bitmask. + for (int i = 0; i < nb_slots; ++i) + { + if (!(mask & (1 << i))) continue; + int id = msg.readInt16(); + being->setSprite(slots[i], id); + } +} + +void BeingHandler::handleBeingEnterMessage(MessageIn &msg) +{ + int type = msg.readInt8(); + int id = msg.readInt16(); + Being::Action action = (Being::Action)msg.readInt8(); + int px = msg.readInt16(); + int py = msg.readInt16(); + Being *being; + + switch (type) + { + case OBJECT_PLAYER: + { + std::string name = msg.readString(); + if (player_node->getName() == name) + { + being = player_node; + being->setId(id); + } + else + { + being = beingManager->createBeing(id, type, 0); + being->setName(name); + } + Player *p = static_cast< Player * >(being); + int hs = msg.readInt8(), hc = msg.readInt8(); + p->setHairStyle(hs, hc); + p->setGender(msg.readInt8() == GENDER_MALE ? + GENDER_MALE : GENDER_FEMALE); + handleLooks(p, msg); + } break; + + case OBJECT_MONSTER: + case OBJECT_NPC: + { + int subtype = msg.readInt16(); + being = beingManager->createBeing(id, type, subtype); + std::string name = msg.readString(); + if (name.length() > 0) being->setName(name); + } break; + + default: + return; + } + + being->setPosition(px, py); + being->setDestination(px, py); + being->setAction(action); +} + +void BeingHandler::handleBeingLeaveMessage(MessageIn &msg) +{ + Being *being = beingManager->findBeing(msg.readInt16()); + if (!being) return; + + beingManager->destroyBeing(being); +} + +void BeingHandler::handleBeingsMoveMessage(MessageIn &msg) +{ + while (msg.getUnreadLength()) + { + int id = msg.readInt16(); + int flags = msg.readInt8(); + Being *being = beingManager->findBeing(id); + int sx = 0; + int sy = 0; + int dx = 0; + int dy = 0; + int speed = 0; + + printf("handleBeingsMoveMessage for %p (%s | %s)\n", + (void*) being, + (flags & MOVING_POSITION) ? "pos" : "", + (flags & MOVING_DESTINATION) ? "dest" : ""); + + if (flags & MOVING_POSITION) + { + Uint16 sx2, sy2; + msg.readCoordinates(sx2, sy2); + sx = sx2 * 32 + 16; + sy = sy2 * 32 + 16; + speed = msg.readInt8(); + } + if (flags & MOVING_DESTINATION) + { + dx = msg.readInt16(); + dy = msg.readInt16(); + if (!(flags & MOVING_POSITION)) + { + sx = dx; + sy = dy; + } + } + if (!being || !(flags & (MOVING_POSITION | MOVING_DESTINATION))) + { + continue; + } + if (speed) + { + /* The speed on the server is the cost of moving from one tile to + * the next. Beings get 1000 cost units per second. The speed is + * transferred as devided by 10, so that slower speeds fit in a + * byte. Here we convert the speed to pixels per second. + */ + const float tilesPerSecond = 100.0f / speed; + being->setWalkSpeed((int) (tilesPerSecond * 32)); + } + + // Ignore messages from the server for the local player + if (being == player_node) + continue; + + // If being is a player, and he only moves a little, its ok to be a little out of sync + if (being->getType() == Being::PLAYER && abs(being->getPixelX() - dx) + + abs(being->getPixelY() - dy) < 2 * 32 && + (dx != being->getDestination().x && dy != being->getDestination().y)) + { + being->setDestination(being->getPixelX(),being->getPixelY()); + continue; + } + if (abs(being->getPixelX() - sx) + + abs(being->getPixelY() - sy) > 10 * 32) + { + // Too large a desynchronization. + being->setPosition(sx, sy); + being->setDestination(dx, dy); + } + else if (!(flags & MOVING_POSITION)) + { + being->setDestination(dx, dy); + } + else if (!(flags & MOVING_DESTINATION)) + { + being->adjustCourse(sx, sy); + } + else + { + being->adjustCourse(sx, sy, dx, dy); + } + } +} + +void BeingHandler::handleBeingAttackMessage(MessageIn &msg) +{ + Being *being = beingManager->findBeing(msg.readInt16()); + int direction = msg.readInt8(); + int attackType = msg.readInt8(); + + if (!being) return; + + switch (direction) + { + case DIRECTION_UP: being->setDirection(Being::UP); break; + case DIRECTION_DOWN: being->setDirection(Being::DOWN); break; + case DIRECTION_LEFT: being->setDirection(Being::LEFT); break; + case DIRECTION_RIGHT: being->setDirection(Being::RIGHT); break; + } + + being->setAction(Being::ATTACK, attackType); +} + +void BeingHandler::handleBeingsDamageMessage(MessageIn &msg) +{ + while (msg.getUnreadLength()) + { + Being *being = beingManager->findBeing(msg.readInt16()); + int damage = msg.readInt16(); + if (being) + { + being->takeDamage(0, damage, Being::HIT); + } + } +} + +void BeingHandler::handleBeingActionChangeMessage(MessageIn &msg) +{ + Being* being = beingManager->findBeing(msg.readInt16()); + Being::Action action = (Being::Action) msg.readInt8(); + if (!being) return; + + being->setAction(action); + + if (action == Being::DEAD && being==player_node) + { + static char const *const deadMsg[] = + { + _("You are dead."), + _("We regret to inform you that your character was killed in battle."), + _("You are not that alive anymore."), + _("The cold hands of the grim reaper are grabbing for your soul."), + _("Game Over!"), + _("No, kids. Your character did not really die. It... err... went to a better place."), + _("Your plan of breaking your enemies weapon by bashing it with your throat failed."), + _("I guess this did not run too well."), + _("Do you want your possessions identified?"), // Nethack reference + _("Sadly, no trace of you was ever found..."), // Secret of Mana reference + _("Annihilated."), // Final Fantasy VI reference + _("Looks like you got your head handed to you."), //Earthbound reference + _("You screwed up again, dump your body down the tubes and get you another one.") // Leisure Suit Larry 1 Reference + + }; + std::string message(deadMsg[rand()%13]); + message.append(_(" Press OK to respawn")); + OkDialog *dlg = new OkDialog(_("You died"), message); + dlg->addActionListener(&(Net::GameServer::Player::respawnListener)); + } +} + +void BeingHandler::handleBeingLooksChangeMessage(MessageIn &msg) +{ + Being *being = beingManager->findBeing(msg.readInt16()); + if (!being || being->getType() != Being::PLAYER) return; + Player * player = static_cast< Player * >(being); + handleLooks(player, msg); + if (msg.getUnreadLength()) + { + int style = msg.readInt16(); + int color = msg.readInt16(); + player->setHairStyle(style, color); + player->setGender((Gender)msg.readInt16()); + } +} + +void BeingHandler::handleBeingDirChangeMessage(MessageIn &msg) +{ + Being *being = beingManager->findBeing(msg.readInt16()); + if (!being) return; + int data = msg.readInt8(); + switch (data) + { + case DIRECTION_UP: being->setDirection(Being::UP); break; + case DIRECTION_DOWN: being->setDirection(Being::DOWN); break; + case DIRECTION_LEFT: being->setDirection(Being::LEFT); break; + case DIRECTION_RIGHT: being->setDirection(Being::RIGHT); break; + } +} diff --git a/src/net/tmwserv/beinghandler.h b/src/net/tmwserv/beinghandler.h new file mode 100644 index 00000000..0ca186f0 --- /dev/null +++ b/src/net/tmwserv/beinghandler.h @@ -0,0 +1,45 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_BEINGHANDLER_H +#define NET_TMWSERV_BEINGHANDLER_H + +#include "net/messagehandler.h" + +class BeingHandler : public MessageHandler +{ + public: + BeingHandler(); + + void handleMessage(MessageIn &msg); + + private: + void handleBeingAttackMessage(MessageIn &msg); + void handleBeingEnterMessage(MessageIn &msg); + void handleBeingLeaveMessage(MessageIn &msg); + void handleBeingsMoveMessage(MessageIn &msg); + void handleBeingsDamageMessage(MessageIn &msg); + void handleBeingActionChangeMessage(MessageIn &msg); + void handleBeingLooksChangeMessage(MessageIn &msg); + void handleBeingDirChangeMessage(MessageIn &msg); +}; + +#endif diff --git a/src/net/tmwserv/buysellhandler.cpp b/src/net/tmwserv/buysellhandler.cpp new file mode 100644 index 00000000..bab475d2 --- /dev/null +++ b/src/net/tmwserv/buysellhandler.cpp @@ -0,0 +1,91 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/buysellhandler.h" + +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "beingmanager.h" +#include "item.h" +#include "localplayer.h" +#include "npc.h" + +#include "gui/buy.h" +#include "gui/chat.h" +#include "gui/sell.h" + +extern BuyDialog *buyDialog; +extern SellDialog *sellDialog; +extern Window *buySellDialog; + +BuySellHandler::BuySellHandler() +{ + static const Uint16 _messages[] = { + GPMSG_NPC_BUY, + GPMSG_NPC_SELL, + 0 + }; + handledMessages = _messages; +} + +void BuySellHandler::handleMessage(MessageIn &msg) +{ + Being *being = beingManager->findBeing(msg.readInt16()); + if (!being || being->getType() != Being::NPC) + { + return; + } + + current_npc = being->getId(); + + switch (msg.getId()) + { + case GPMSG_NPC_BUY: + buyDialog->reset(); + buyDialog->setMoney(player_node->getMoney()); + buyDialog->setVisible(true); + + while (msg.getUnreadLength()) + { + int itemId = msg.readInt16(); + int amount = msg.readInt16(); + int value = msg.readInt16(); + buyDialog->addItem(itemId, amount, value); + } + break; + + case GPMSG_NPC_SELL: + sellDialog->setMoney(player_node->getMoney()); + sellDialog->reset(); + sellDialog->setVisible(true); + + while (msg.getUnreadLength()) + { + int itemId = msg.readInt16(); + int amount = msg.readInt16(); + int value = msg.readInt16(); + sellDialog->addItem(itemId, amount, value); + } + break; + } +} diff --git a/src/net/buysellhandler.h b/src/net/tmwserv/buysellhandler.h index 2b4aaf4f..32f273f1 100644 --- a/src/net/buysellhandler.h +++ b/src/net/tmwserv/buysellhandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,17 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_BUYSELLHANDLER_H -#define NET_BUYSELLHANDLER_H +#ifndef NET_TMWSERV_BUYSELLHANDLER_H +#define NET_TMWSERV_BUYSELLHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" class BuySellHandler : public MessageHandler { public: BuySellHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); }; #endif diff --git a/src/net/tmwserv/charserverhandler.cpp b/src/net/tmwserv/charserverhandler.cpp new file mode 100644 index 00000000..0779e499 --- /dev/null +++ b/src/net/tmwserv/charserverhandler.cpp @@ -0,0 +1,228 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/charserverhandler.h" + +#include "net/tmwserv/connection.h" +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "game.h" +#include "localplayer.h" +#include "log.h" +#include "logindata.h" +#include "main.h" + +#include "gui/ok_dialog.h" +#include "gui/char_select.h" + +extern Net::Connection *gameServerConnection; +extern Net::Connection *chatServerConnection; + +CharServerHandler::CharServerHandler(): + mCharCreateDialog(0) +{ + static const Uint16 _messages[] = { + APMSG_CHAR_CREATE_RESPONSE, + APMSG_CHAR_DELETE_RESPONSE, + APMSG_CHAR_INFO, + APMSG_CHAR_SELECT_RESPONSE, + 0 + }; + handledMessages = _messages; +} + +void CharServerHandler::handleMessage(MessageIn &msg) +{ + int slot; + LocalPlayer *tempPlayer; + + switch (msg.getId()) + { + case APMSG_CHAR_CREATE_RESPONSE: + handleCharCreateResponse(msg); + break; + + case APMSG_CHAR_DELETE_RESPONSE: + { + int errMsg = msg.readInt8(); + // Character deletion successful + if (errMsg == ERRMSG_OK) + { + delete mCharInfo->getEntry(); + mCharInfo->setEntry(0); + mCharInfo->unlock(); + new OkDialog("Info", "Player deleted"); + } + // Character deletion failed + else + { + std::string message = ""; + switch (errMsg) + { + case ERRMSG_NO_LOGIN: + message = "Not logged in"; + break; + case ERRMSG_INVALID_ARGUMENT: + message = "Selection out of range"; + break; + default: + message = "Unknown error"; + } + mCharInfo->unlock(); + new OkDialog("Error", message); + } + } + break; + + case APMSG_CHAR_INFO: + tempPlayer = readPlayerData(msg, slot); + mCharInfo->unlock(); + mCharInfo->select(slot); + mCharInfo->setEntry(tempPlayer); + + // Close the character create dialog + if (mCharCreateDialog) + { + mCharCreateDialog->scheduleDelete(); + mCharCreateDialog = 0; + } + break; + + case APMSG_CHAR_SELECT_RESPONSE: + handleCharSelectResponse(msg); + break; + } +} + +void CharServerHandler::handleCharCreateResponse(MessageIn &msg) +{ + int errMsg = msg.readInt8(); + + // Character creation failed + if (errMsg != ERRMSG_OK) + { + std::string message = ""; + switch (errMsg) + { + case ERRMSG_NO_LOGIN: + message = "Not logged in"; + break; + case CREATE_TOO_MUCH_CHARACTERS: + message = "No empty slot"; + break; + case ERRMSG_INVALID_ARGUMENT: + message = "Invalid name"; + break; + case CREATE_EXISTS_NAME: + message = "Character's name already exists"; + break; + case CREATE_INVALID_HAIRSTYLE: + message = "Invalid hairstyle"; + break; + case CREATE_INVALID_HAIRCOLOR: + message = "Invalid hair color"; + break; + case CREATE_INVALID_GENDER: + message = "Invalid gender"; + break; + case CREATE_RAW_STATS_TOO_HIGH: + message = "Character's stats are too high"; + break; + case CREATE_RAW_STATS_TOO_LOW: + message = "Character's stats are too low"; + break; + case CREATE_RAW_STATS_EQUAL_TO_ZERO: + message = "One stat is zero"; + break; + default: + message = "Unknown error"; + break; + } + new OkDialog("Error", message); + } + + if (mCharCreateDialog) + mCharCreateDialog->unlock(); +} + +void CharServerHandler::handleCharSelectResponse(MessageIn &msg) +{ + int errMsg = msg.readInt8(); + + if (errMsg == ERRMSG_OK) + { + token = msg.readString(32); + std::string gameServer = msg.readString(); + unsigned short gameServerPort = msg.readInt16(); + std::string chatServer = msg.readString(); + unsigned short chatServerPort = msg.readInt16(); + + logger->log("Game server: %s:%d", gameServer.c_str(), gameServerPort); + logger->log("Chat server: %s:%d", chatServer.c_str(), chatServerPort); + + gameServerConnection->connect(gameServer, gameServerPort); + chatServerConnection->connect(chatServer, chatServerPort); + + // Keep the selected character and delete the others + player_node = mCharInfo->getEntry(); + int slot = mCharInfo->getPos(); + mCharInfo->unlock(); + mCharInfo->select(0); + + do { + LocalPlayer *tmp = mCharInfo->getEntry(); + if (tmp != player_node) + { + delete tmp; + mCharInfo->setEntry(0); + } + mCharInfo->next(); + } while (mCharInfo->getPos()); + mCharInfo->select(slot); + + mCharInfo->clear(); //player_node will be deleted by ~Game + + state = STATE_CONNECT_GAME; + } +} + +LocalPlayer* CharServerHandler::readPlayerData(MessageIn &msg, int &slot) +{ + LocalPlayer *tempPlayer = new LocalPlayer; + slot = msg.readInt8(); // character slot + tempPlayer->setName(msg.readString()); + tempPlayer->setGender(msg.readInt8() == GENDER_MALE ? GENDER_MALE : GENDER_FEMALE); + int hs = msg.readInt8(), hc = msg.readInt8(); + tempPlayer->setHairStyle(hs, hc); + tempPlayer->setLevel(msg.readInt16()); + tempPlayer->setCharacterPoints(msg.readInt16()); + tempPlayer->setCorrectionPoints(msg.readInt16()); + tempPlayer->setMoney(msg.readInt32()); + + for (int i = 0; i < 7; i++) + { + tempPlayer->setAttributeBase(i, msg.readInt8()); + } + + return tempPlayer; +} diff --git a/src/net/tmwserv/charserverhandler.h b/src/net/tmwserv/charserverhandler.h new file mode 100644 index 00000000..e1e13b55 --- /dev/null +++ b/src/net/tmwserv/charserverhandler.h @@ -0,0 +1,68 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_CHARSERVERHANDLER_H +#define NET_TMWSERV_CHARSERVERHANDLER_H + +#include "net/messagehandler.h" + +#include "lockedarray.h" + +class CharCreateDialog; +class LocalPlayer; +class LoginData; + +/** + * Deals with incoming messages related to character selection. + */ +class CharServerHandler : public MessageHandler +{ + public: + CharServerHandler(); + + void handleMessage(MessageIn &msg); + + void setCharInfo(LockedArray<LocalPlayer*> *charInfo) + { + mCharInfo = charInfo; + } + + /** + * Sets the character create dialog. The handler will clean up this + * dialog when a new character is succesfully created, and will unlock + * the dialog when a new character failed to be created. + */ + void setCharCreateDialog(CharCreateDialog *window) + { mCharCreateDialog = window; } + + protected: + void handleCharCreateResponse(MessageIn &msg); + + void handleCharSelectResponse(MessageIn &msg); + + LockedArray<LocalPlayer*> *mCharInfo; + CharCreateDialog *mCharCreateDialog; + + LocalPlayer* + readPlayerData(MessageIn &msg, int &slot); +}; + +#endif diff --git a/src/net/tmwserv/chathandler.cpp b/src/net/tmwserv/chathandler.cpp new file mode 100644 index 00000000..1c537e30 --- /dev/null +++ b/src/net/tmwserv/chathandler.cpp @@ -0,0 +1,285 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/chathandler.h" + +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "being.h" +#include "beingmanager.h" +#include "game.h" +#include "channel.h" +#include "channelmanager.h" + +#include "gui/widgets/channeltab.h" +#include "gui/chat.h" +#include "gui/guildwindow.h" + +#include <string> +#include <iostream> + +#include "utils/gettext.h" + +extern Being *player_node; + +ChatHandler::ChatHandler() +{ + static const Uint16 _messages[] = { + GPMSG_SAY, + CPMSG_ENTER_CHANNEL_RESPONSE, + CPMSG_LIST_CHANNELS_RESPONSE, + CPMSG_PUBMSG, + CPMSG_ANNOUNCEMENT, + CPMSG_PRIVMSG, + CPMSG_QUIT_CHANNEL_RESPONSE, + CPMSG_LIST_CHANNELUSERS_RESPONSE, + CPMSG_CHANNEL_EVENT, + 0 + }; + handledMessages = _messages; +} + +void ChatHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case GPMSG_SAY: + handleGameChatMessage(msg); + break; + + case CPMSG_ENTER_CHANNEL_RESPONSE: + handleEnterChannelResponse(msg); + break; + + case CPMSG_LIST_CHANNELS_RESPONSE: + handleListChannelsResponse(msg); + break; + + case CPMSG_PRIVMSG: + handlePrivateMessage(msg); + break; + + case CPMSG_ANNOUNCEMENT: + handleAnnouncement(msg); + break; + + case CPMSG_PUBMSG: + handleChatMessage(msg); + break; + + case CPMSG_QUIT_CHANNEL_RESPONSE: + handleQuitChannelResponse(msg); + break; + + case CPMSG_LIST_CHANNELUSERS_RESPONSE: + handleListChannelUsersResponse(msg); + break; + + case CPMSG_CHANNEL_EVENT: + handleChannelEvent(msg); + } +} + +void ChatHandler::handleGameChatMessage(MessageIn &msg) +{ + short id = msg.readInt16(); + std::string chatMsg = msg.readString(); + + if (id == 0) + { + localChatTab->chatLog(chatMsg, BY_SERVER); + return; + } + + Being *being = beingManager->findBeing(id); + + std::string mes; + if (being) + { + mes = being->getName() + " : " + chatMsg; + being->setSpeech(chatMsg, SPEECH_TIME); + } + else + mes = "Unknown : " + chatMsg; + + localChatTab->chatLog(mes, being == player_node ? BY_PLAYER : BY_OTHER); +} + +void ChatHandler::handleEnterChannelResponse(MessageIn &msg) +{ + if(msg.readInt8() == ERRMSG_OK) + { + short channelId = msg.readInt16(); + std::string channelName = msg.readString(); + std::string announcement = msg.readString(); + Channel *channel = new Channel(channelId, channelName, announcement); + channelManager->addChannel(channel); + ChatTab *tab = channel->getTab(); + tab->chatLog(_("Topic: ") + announcement, BY_CHANNEL); + + std::string user; + std::string userModes; + tab->chatLog("Players in this channel:", BY_CHANNEL); + while(msg.getUnreadLength()) + { + user = msg.readString(); + if (user == "") + return; + userModes = msg.readString(); + if (userModes.find('o') != std::string::npos) + { + user = "@" + user; + } + tab->chatLog(user, BY_CHANNEL); + } + + } + else + { + localChatTab->chatLog("Error joining channel", BY_SERVER); + } +} + +void ChatHandler::handleListChannelsResponse(MessageIn &msg) +{ + localChatTab->chatLog("Listing Channels", BY_SERVER); + while(msg.getUnreadLength()) + { + std::string channelName = msg.readString(); + if (channelName == "") + return; + std::ostringstream numUsers; + numUsers << msg.readInt16(); + channelName += " - "; + channelName += numUsers.str(); + localChatTab->chatLog(channelName, BY_SERVER); + } + localChatTab->chatLog("End of channel list", BY_SERVER); +} + +void ChatHandler::handlePrivateMessage(MessageIn &msg) +{ + std::string userNick = msg.readString(); + std::string chatMsg = msg.readString(); + + chatWindow->whisper(userNick, chatMsg); +} + +void ChatHandler::handleAnnouncement(MessageIn &msg) +{ + std::string chatMsg = msg.readString(); + localChatTab->chatLog(chatMsg, BY_GM); +} + +void ChatHandler::handleChatMessage(MessageIn &msg) +{ + short channelId = msg.readInt16(); + std::string userNick = msg.readString(); + std::string chatMsg = msg.readString(); + + Channel *channel = channelManager->findById(channelId); + channel->getTab()->chatLog(userNick, chatMsg); +} + +void ChatHandler::handleQuitChannelResponse(MessageIn &msg) +{ + if(msg.readInt8() == ERRMSG_OK) + { + short channelId = msg.readInt16(); + Channel *channel = channelManager->findById(channelId); + channelManager->removeChannel(channel); + } +} + +void ChatHandler::handleListChannelUsersResponse(MessageIn &msg) +{ + std::string channelName = msg.readString(); + std::string userNick; + std::string userModes; + Channel *channel = channelManager->findByName(channelName); + channel->getTab()->chatLog("Players in this channel:", BY_CHANNEL); + while(msg.getUnreadLength()) + { + userNick = msg.readString(); + if (userNick == "") + { + break; + } + userModes = msg.readString(); + if (userModes.find('o') != std::string::npos) + { + userNick = "@" + userNick; + } + localChatTab->chatLog(userNick, BY_CHANNEL, channel); + } +} + +void ChatHandler::handleChannelEvent(MessageIn &msg) +{ + short channelId = msg.readInt16(); + char eventId = msg.readInt8(); + std::string line = msg.readString(); + Channel *channel = channelManager->findById(channelId); + + if(channel) + { + switch(eventId) + { + case CHAT_EVENT_NEW_PLAYER: + line += " entered the channel."; + break; + + case CHAT_EVENT_LEAVING_PLAYER: + line += " left the channel."; + break; + + case CHAT_EVENT_TOPIC_CHANGE: + line = "Topic: " + line; + break; + + case CHAT_EVENT_MODE_CHANGE: + { + int first = line.find(":"); + int second = line.find(":", first+1); + std::string user1 = line.substr(0, first); + std::string user2 = line.substr(first+1, second); + std::string mode = line.substr(second+1, line.length()); + line = user1 + " has set mode " + mode + " on user " + user2; + } break; + + case CHAT_EVENT_KICKED_PLAYER: + { + int first = line.find(":"); + std::string user1 = line.substr(0, first); + std::string user2 = line.substr(first+1, line.length()); + line = user1 + " has kicked " + user2; + } break; + + default: + line = "Unknown channel event."; + } + + channel->getTab()->chatLog(line, BY_CHANNEL); + } +} + diff --git a/src/net/tmwserv/chathandler.h b/src/net/tmwserv/chathandler.h new file mode 100644 index 00000000..f0604da8 --- /dev/null +++ b/src/net/tmwserv/chathandler.h @@ -0,0 +1,84 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_CHATHANDLER_H +#define NET_TMWSERV_CHATHANDLER_H + +#include "net/messagehandler.h" + +class ChatHandler : public MessageHandler +{ + public: + ChatHandler(); + + /** + * Handle the given message appropriately. + */ + void handleMessage(MessageIn &msg); + + private: + /** + * Handle chat messages sent from the game server. + */ + void handleGameChatMessage(MessageIn &msg); + + /** + * Handle channel entry responses. + */ + void handleEnterChannelResponse(MessageIn &msg); + + /** + * Handle list channels responses. + */ + void handleListChannelsResponse(MessageIn &msg); + + /** + * Handle private messages. + */ + void handlePrivateMessage(MessageIn &msg); + + /** + * Handle announcements. + */ + void handleAnnouncement(MessageIn &msg); + + /** + * Handle chat messages. + */ + void handleChatMessage(MessageIn &msg); + + /** + * Handle quit channel responses. + */ + void handleQuitChannelResponse(MessageIn &msg); + + /** + * Handle list channel users responses. + */ + void handleListChannelUsersResponse(MessageIn &msg); + + /** + * Handle channel events. + */ + void handleChannelEvent(MessageIn &msg); +}; + +#endif diff --git a/src/net/tmwserv/chatserver/chatserver.cpp b/src/net/tmwserv/chatserver/chatserver.cpp new file mode 100644 index 00000000..49a17367 --- /dev/null +++ b/src/net/tmwserv/chatserver/chatserver.cpp @@ -0,0 +1,147 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "chatserver.h" + +#include "internal.h" + +#include "net/tmwserv/connection.h" +#include "net/tmwserv/protocol.h" + +#include "net/messageout.h" + +using Net::ChatServer::connection; + +void Net::ChatServer::connect(Net::Connection *connection, + const std::string &token) +{ + Net::ChatServer::connection = connection; + + MessageOut msg(PCMSG_CONNECT); + + msg.writeString(token, 32); + + connection->send(msg); +} + +void Net::ChatServer::logout() +{ + MessageOut msg(PCMSG_DISCONNECT); + + connection->send(msg); +} + +void Net::ChatServer::chat(short channel, const std::string &text) +{ + MessageOut msg(PCMSG_CHAT); + + msg.writeString(text); + msg.writeInt16(channel); + + connection->send(msg); +} + +void Net::ChatServer::announce(const std::string &text) +{ + MessageOut msg(PCMSG_ANNOUNCE); + + msg.writeString(text); + + connection->send(msg); +} + +void Net::ChatServer::privMsg(const std::string &recipient, + const std::string &text) +{ + MessageOut msg(PCMSG_PRIVMSG); + + msg.writeString(recipient); + msg.writeString(text); + + connection->send(msg); +} + +void Net::ChatServer::enterChannel(const std::string &channel, const std::string &password) +{ + MessageOut msg(PCMSG_ENTER_CHANNEL); + + msg.writeString(channel); + msg.writeString(password); + + connection->send(msg); +} + +void Net::ChatServer::quitChannel(short channel) +{ + MessageOut msg(PCMSG_QUIT_CHANNEL); + + msg.writeInt16(channel); + + connection->send(msg); +} + +void Net::ChatServer::getChannelList() +{ + MessageOut msg(PCMSG_LIST_CHANNELS); + + connection->send(msg); +} + +void Net::ChatServer::getUserList(const std::string &channel) +{ + MessageOut msg(PCMSG_LIST_CHANNELUSERS); + + msg.writeString(channel); + + connection->send(msg); +} + +void Net::ChatServer::setChannelTopic(short channel, const std::string &topic) +{ + MessageOut msg(PCMSG_TOPIC_CHANGE); + + msg.writeInt16(channel); + msg.writeString(topic); + + connection->send(msg); +} + +void Net::ChatServer::setUserMode(short channel, const std::string &user, + unsigned char mode) +{ + MessageOut msg(PCMSG_USER_MODE); + + msg.writeInt16(channel); + msg.writeString(user); + msg.writeInt8(mode); + + connection->send(msg); +} + +void Net::ChatServer::kickUser(short channel, const std::string &user) +{ + MessageOut msg(PCMSG_KICK_USER); + + msg.writeInt16(channel); + msg.writeString(user); + + connection->send(msg); +} diff --git a/src/net/tmwserv/chatserver/chatserver.h b/src/net/tmwserv/chatserver/chatserver.h new file mode 100644 index 00000000..8a6025a7 --- /dev/null +++ b/src/net/tmwserv/chatserver/chatserver.h @@ -0,0 +1,60 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_CHATSERVER_CHATSERVER_H +#define NET_CHATSERVER_CHATSERVER_H + +#include <iosfwd> + +namespace Net +{ + class Connection; + + namespace ChatServer + { + void connect(Net::Connection *connection, const std::string &token); + + void logout(); + + void chat(short channel, const std::string &text); + + void announce(const std::string &text); + + void privMsg(const std::string &recipient, const std::string &text); + + void enterChannel(const std::string &channel, const std::string &password); + + void quitChannel(short channel); + + void getChannelList(); + + void getUserList(const std::string &channel); + + void setChannelTopic(short channel, const std::string &topic); + + void setUserMode(short channel, const std::string &user, unsigned char mode); + + void kickUser(short channel, const std::string &user); + + } +} + +#endif diff --git a/src/net/tmwserv/chatserver/guild.cpp b/src/net/tmwserv/chatserver/guild.cpp new file mode 100644 index 00000000..740e9efa --- /dev/null +++ b/src/net/tmwserv/chatserver/guild.cpp @@ -0,0 +1,95 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "guild.h" + +#include "internal.h" + +#include "net/tmwserv/connection.h" +#include "net/tmwserv/protocol.h" + +#include "net/messageout.h" + +#include "log.h" + +void Net::ChatServer::Guild::createGuild(const std::string &name) +{ + logger->log("Sending PCMSG_GUILD_CREATE"); + MessageOut msg(PCMSG_GUILD_CREATE); + + msg.writeString(name); + + Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Guild::invitePlayer(const std::string &name, short guildId) +{ + logger->log("Sending PCMSG_GUILD_INVITE"); + MessageOut msg(PCMSG_GUILD_INVITE); + + msg.writeInt16(guildId); + msg.writeString(name); + + Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Guild::acceptInvite(const std::string &name) +{ + logger->log("Sending PCMSG_GUILD_ACCEPT"); + MessageOut msg(PCMSG_GUILD_ACCEPT); + + msg.writeString(name); + + Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Guild::getGuildMembers(short guildId) +{ + logger->log("Sending PCMSG_GUILD_GET_MEMBERS"); + MessageOut msg(PCMSG_GUILD_GET_MEMBERS); + + msg.writeInt16(guildId); + + Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Guild::promoteMember(const std::string &name, + short guildId, short level) +{ + logger->log("Sending PCMSG_GUILD_PROMOTE_MEMBER"); + MessageOut msg(PCMSG_GUILD_PROMOTE_MEMBER); + + msg.writeInt16(guildId); + msg.writeString(name); + msg.writeInt8(level); + + Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Guild::quitGuild(short guildId) +{ + logger->log("Sending PCMSG_GUILD_QUIT"); + MessageOut msg(PCMSG_GUILD_QUIT); + + msg.writeInt16(guildId); + + Net::ChatServer::connection->send(msg); +} diff --git a/src/net/tmwserv/chatserver/guild.h b/src/net/tmwserv/chatserver/guild.h new file mode 100644 index 00000000..2e9cf9a6 --- /dev/null +++ b/src/net/tmwserv/chatserver/guild.h @@ -0,0 +1,67 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_CHATSERVER_GUILD_H +#define NET_CHATSERVER_GUILD_H + +#include <iosfwd> + +namespace Net +{ + namespace ChatServer + { + namespace Guild + { + /** + * Create guild. + */ + void createGuild(const std::string &name); + + /** + * Invite a player to your guild. + */ + void invitePlayer(const std::string &name, short guildId); + + /** + * Accept an invite another player has sent to join their guild. + */ + void acceptInvite(const std::string &name); + + /** + * Get a list of members in a guild. + */ + void getGuildMembers(short guildId); + + /** + * Promote guild member + */ + void promoteMember(const std::string &name, short guildId, + short level); + + /** + * Quit guild. + */ + void quitGuild(short guildId); + } + } +} + +#endif diff --git a/src/net/tmwserv/chatserver/internal.cpp b/src/net/tmwserv/chatserver/internal.cpp new file mode 100644 index 00000000..52744804 --- /dev/null +++ b/src/net/tmwserv/chatserver/internal.cpp @@ -0,0 +1,32 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "internal.h" + +namespace Net +{ + class Connection; + + namespace ChatServer + { + Connection *connection = 0; + } +} diff --git a/src/net/tmwserv/chatserver/internal.h b/src/net/tmwserv/chatserver/internal.h new file mode 100644 index 00000000..162d54fb --- /dev/null +++ b/src/net/tmwserv/chatserver/internal.h @@ -0,0 +1,35 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_CHATSERVER_INTERNAL_H +#define NET_CHATSERVER_INTERNAL_H + +namespace Net +{ + class Connection; + + namespace ChatServer + { + extern Connection *connection; + } +} + +#endif diff --git a/src/net/tmwserv/chatserver/party.cpp b/src/net/tmwserv/chatserver/party.cpp new file mode 100644 index 00000000..e5bdd861 --- /dev/null +++ b/src/net/tmwserv/chatserver/party.cpp @@ -0,0 +1,69 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "party.h" + +#include "internal.h" + +#include "net/tmwserv/connection.h" +#include "net/tmwserv/protocol.h" + +#include "net/messageout.h" + +#include "log.h" + +void Net::ChatServer::Party::invitePlayer(const std::string &name) +{ + logger->log("Sending PCMSG_PARTY_INVITE"); + MessageOut msg(PCMSG_PARTY_INVITE); + + msg.writeString(name); + + Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Party::acceptInvite(const std::string &name) +{ + logger->log("Sending PCMSG_PARTY_ACCEPT_INVITE"); + MessageOut msg(PCMSG_PARTY_ACCEPT_INVITE); + + msg.writeString(name); + + Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Party::getPartyMembers() +{ + logger->log("Sending PCMSG_PARTY_GET_MEMBERS"); +// MessageOut msg(PCMSG_GUILD_GET_MEMBERS); + +// msg.writeInt16(guildId); + +// Net::ChatServer::connection->send(msg); +} + +void Net::ChatServer::Party::quitParty() +{ + logger->log("Sending PCMSG_PARTY_QUIT"); + MessageOut msg(PCMSG_PARTY_QUIT); + + Net::ChatServer::connection->send(msg); +} diff --git a/src/net/tmwserv/chatserver/party.h b/src/net/tmwserv/chatserver/party.h new file mode 100644 index 00000000..b3f0020b --- /dev/null +++ b/src/net/tmwserv/chatserver/party.h @@ -0,0 +1,56 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_CHATSERVER_PARTY_H +#define NET_CHATSERVER_PARTY_H + +#include <iosfwd> + +namespace Net +{ + namespace ChatServer + { + namespace Party + { + /** + * Invite a player to the party. + */ + void invitePlayer(const std::string &name); + + /** + * Accept an invite another player has sent to join their party + */ + void acceptInvite(const std::string &name); + + /** + * Get a list of party members + */ + void getPartyMembers(); + + /** + * Leave party + */ + void quitParty(); + } + } +} + +#endif diff --git a/src/net/tmwserv/connection.cpp b/src/net/tmwserv/connection.cpp new file mode 100644 index 00000000..0fcd530b --- /dev/null +++ b/src/net/tmwserv/connection.cpp @@ -0,0 +1,104 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/connection.h" + +#include "net/tmwserv/internal.h" + +#include "net/messageout.h" + +#include "log.h" + +#include <string> + +Net::Connection::Connection(ENetHost *client): + mConnection(0), mClient(client) +{ + Net::connections++; +} + +Net::Connection::~Connection() +{ + Net::connections--; +} + +bool Net::Connection::connect(const std::string &address, short port) +{ + logger->log("Net::Connection::connect(%s, %i)", address.c_str(), port); + + if (address.empty()) + { + logger->log("Net::Connection::connect() got empty address!"); + mState = NET_ERROR; + return false; + } + + ENetAddress enetAddress; + + enet_address_set_host(&enetAddress, address.c_str()); + enetAddress.port = port; + + // Initiate the connection, allocating channel 0. + mConnection = enet_host_connect(mClient, &enetAddress, 1); + + if (!mConnection) + { + logger->log("Unable to initiate connection to the server."); + mState = NET_ERROR; + return false; + } + + return true; +} + +void Net::Connection::disconnect() +{ + if (!mConnection) + return; + + enet_peer_disconnect(mConnection, 0); + enet_host_flush(mClient); + enet_peer_reset(mConnection); + + mConnection = 0; +} + +bool Net::Connection::isConnected() +{ + return bool (mConnection) ? + (mConnection->state == ENET_PEER_STATE_CONNECTED) : false; +} + +void Net::Connection::send(const MessageOut &msg) +{ + if (!isConnected()) + { + logger->log("Warning: cannot send message to not connected server!"); + return; + } + + //logger->log("Sending message of size %d...", msg.getDataSize()); + + ENetPacket *packet = enet_packet_create(msg.getData(), + msg.getDataSize(), + ENET_PACKET_FLAG_RELIABLE); + enet_peer_send(mConnection, 0, packet); +} diff --git a/src/net/tmwserv/connection.h b/src/net/tmwserv/connection.h new file mode 100644 index 00000000..447cf71c --- /dev/null +++ b/src/net/tmwserv/connection.h @@ -0,0 +1,80 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_CONNECTION_H +#define NET_TMWSERV_CONNECTION_H + +#include <iosfwd> + +#include <enet/enet.h> + +class MessageOut; + +namespace Net +{ + /** + * \ingroup Network + */ + class Connection + { + public: + enum State { + OK, + NET_ERROR + }; + + ~Connection(); + + /** + * Connects to the given server with the specified address and port. + * This method is non-blocking, use isConnected to check whether the + * server is connected. + */ + bool connect(const std::string &address, short port); + + /** + * Disconnects from the given server. + */ + void disconnect(); + + State getState() { return mState; } + + /** + * Returns whether the server is connected. + */ + bool isConnected(); + + /** + * Sends a message. + */ + void send(const MessageOut &msg); + + private: + friend Connection *Net::getConnection(); + Connection(ENetHost *client); + + ENetPeer *mConnection; + ENetHost *mClient; + State mState; + }; +} + +#endif diff --git a/src/net/tmwserv/effecthandler.cpp b/src/net/tmwserv/effecthandler.cpp new file mode 100644 index 00000000..d2b26fca --- /dev/null +++ b/src/net/tmwserv/effecthandler.cpp @@ -0,0 +1,59 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/effecthandler.h" + +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "effectmanager.h" + + +EffectHandler::EffectHandler() +{ + static const Uint16 _messages[] = { + GPMSG_CREATE_EFFECT, + 0 + }; + handledMessages = _messages; +} + +void EffectHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case GPMSG_CREATE_EFFECT: + handleCreateEffects(msg); + break; + default: + break; + } +} + +void EffectHandler::handleCreateEffects(MessageIn &msg) +{ + int id = msg.readInt16(); + Uint16 x = msg.readInt16(); + Uint16 y = msg.readInt16(); + effectManager->trigger(id, x, y); +} + diff --git a/src/net/tmwserv/effecthandler.h b/src/net/tmwserv/effecthandler.h new file mode 100644 index 00000000..894ad1c8 --- /dev/null +++ b/src/net/tmwserv/effecthandler.h @@ -0,0 +1,38 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_EFFECTSHANDLER_H +#define NET_TMWSERV_EFFECTSHANDLER_H + +#include "net/messagehandler.h" + +class EffectHandler : public MessageHandler +{ + public: + EffectHandler(); + + void handleMessage(MessageIn &msg); + + private: + void handleCreateEffects(MessageIn &msg); +}; + +#endif diff --git a/src/net/tmwserv/gameserver/gameserver.cpp b/src/net/tmwserv/gameserver/gameserver.cpp new file mode 100644 index 00000000..e70c4d19 --- /dev/null +++ b/src/net/tmwserv/gameserver/gameserver.cpp @@ -0,0 +1,50 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "gameserver.h" + +#include "internal.h" + +#include "net/tmwserv/connection.h" +#include "net/tmwserv/protocol.h" + +#include "net/messageout.h" + +void Net::GameServer::connect(Net::Connection *connection, + const std::string &token) +{ + Net::GameServer::connection = connection; + + MessageOut msg(PGMSG_CONNECT); + + msg.writeString(token, 32); + + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::logout(bool reconnectAccount) +{ + MessageOut msg(PGMSG_DISCONNECT); + + msg.writeInt8((unsigned char) reconnectAccount); + + Net::GameServer::connection->send(msg); +} diff --git a/src/net/tmwserv/gameserver/gameserver.h b/src/net/tmwserv/gameserver/gameserver.h new file mode 100644 index 00000000..6de82c2e --- /dev/null +++ b/src/net/tmwserv/gameserver/gameserver.h @@ -0,0 +1,39 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_GAMESERVER_GAMESERVER_H +#define NET_GAMESERVER_GAMESERVER_H + +#include <iosfwd> + +namespace Net +{ + class Connection; + + namespace GameServer + { + void connect(Net::Connection *connection, const std::string &token); + + void logout(bool reconnectAccount); + } +} + +#endif diff --git a/src/net/tmwserv/gameserver/internal.cpp b/src/net/tmwserv/gameserver/internal.cpp new file mode 100644 index 00000000..27cb4a47 --- /dev/null +++ b/src/net/tmwserv/gameserver/internal.cpp @@ -0,0 +1,32 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "internal.h" + +namespace Net +{ + class Connection; + + namespace GameServer + { + Connection *connection = 0; + } +} diff --git a/src/net/tmwserv/gameserver/internal.h b/src/net/tmwserv/gameserver/internal.h new file mode 100644 index 00000000..6c6e2613 --- /dev/null +++ b/src/net/tmwserv/gameserver/internal.h @@ -0,0 +1,35 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_GAMESERVER_INTERNAL_H +#define NET_GAMESERVER_INTERNAL_H + +namespace Net +{ + class Connection; + + namespace GameServer + { + extern Connection *connection; + } +} + +#endif diff --git a/src/net/tmwserv/gameserver/player.cpp b/src/net/tmwserv/gameserver/player.cpp new file mode 100644 index 00000000..ec346d9f --- /dev/null +++ b/src/net/tmwserv/gameserver/player.cpp @@ -0,0 +1,203 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "player.h" + +#include "internal.h" + +#include "net/tmwserv/connection.h" +#include "net/tmwserv/protocol.h" + +#include "net/messageout.h" + +void RespawnRequestListener::action(const gcn::ActionEvent &event) +{ + Net::GameServer::Player::respawn(); +} + +void Net::GameServer::Player::say(const std::string &text) +{ + MessageOut msg(PGMSG_SAY); + msg.writeString(text); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::walk(int x, int y) +{ + MessageOut msg(PGMSG_WALK); + msg.writeInt16(x); + msg.writeInt16(y); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::pickUp(int x, int y) +{ + MessageOut msg(PGMSG_PICKUP); + msg.writeInt16(x); + msg.writeInt16(y); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::moveItem(int oldSlot, int newSlot, int amount) +{ + MessageOut msg(PGMSG_MOVE_ITEM); + msg.writeInt8(oldSlot); + msg.writeInt8(newSlot); + msg.writeInt8(amount); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::drop(int slot, int amount) +{ + MessageOut msg(PGMSG_DROP); + msg.writeInt8(slot); + msg.writeInt8(amount); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::equip(int slot) +{ + MessageOut msg(PGMSG_EQUIP); + msg.writeInt8(slot); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::unequip(int slot) +{ + MessageOut msg(PGMSG_UNEQUIP); + msg.writeInt8(slot); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::useItem(int slot) +{ + MessageOut msg(PGMSG_USE_ITEM); + msg.writeInt8(slot); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::attack(int direction) +{ + MessageOut msg(PGMSG_ATTACK); + msg.writeInt8(direction); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::useSpecial(int special) +{ + MessageOut msg(PGMSG_USE_SPECIAL); + msg.writeInt8(special); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::changeAction(Being::Action action) +{ + MessageOut msg(PGMSG_ACTION_CHANGE); + msg.writeInt8(action); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::talkToNPC(int id, bool restart) +{ + MessageOut msg(restart ? PGMSG_NPC_TALK : PGMSG_NPC_TALK_NEXT); + msg.writeInt16(id); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::selectFromNPC(int id, int choice) +{ + MessageOut msg(PGMSG_NPC_SELECT); + msg.writeInt16(id); + msg.writeInt8(choice); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::requestTrade(int id) +{ + MessageOut msg(PGMSG_TRADE_REQUEST); + msg.writeInt16(id); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::acceptTrade(bool accept) +{ + MessageOut msg(accept ? PGMSG_TRADE_ACCEPT : PGMSG_TRADE_CANCEL); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::tradeItem(int slot, int amount) +{ + MessageOut msg(PGMSG_TRADE_ADD_ITEM); + msg.writeInt8(slot); + msg.writeInt8(amount); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::tradeMoney(int amount) +{ + MessageOut msg(PGMSG_TRADE_SET_MONEY); + msg.writeInt32(amount); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::tradeWithNPC(int item, int amount) +{ + MessageOut msg(PGMSG_NPC_BUYSELL); + msg.writeInt16(item); + msg.writeInt16(amount); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::sendLetter(const std::string &player, + const std::string &text) +{ + MessageOut msg(PGMSG_NPC_POST_SEND); + msg.writeString(player); + msg.writeString(text); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::raiseAttribute(int attribute) +{ + MessageOut msg(PGMSG_RAISE_ATTRIBUTE); + msg.writeInt8(attribute); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::lowerAttribute(int attribute) +{ + MessageOut msg(PGMSG_LOWER_ATTRIBUTE); + msg.writeInt8(attribute); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::respawn() +{ + MessageOut msg(PGMSG_RESPAWN); + Net::GameServer::connection->send(msg); +} + +void Net::GameServer::Player::changeDir(unsigned char dir) +{ + MessageOut msg(PGMSG_DIRECTION_CHANGE); + msg.writeInt8(dir); + Net::GameServer::connection->send(msg); +} diff --git a/src/net/tmwserv/gameserver/player.h b/src/net/tmwserv/gameserver/player.h new file mode 100644 index 00000000..3f33c7d5 --- /dev/null +++ b/src/net/tmwserv/gameserver/player.h @@ -0,0 +1,71 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_GAMESERVER_PLAYER_H +#define NET_GAMESERVER_PLAYER_H + +#include "being.h" + +#include <guichan/actionlistener.hpp> + +#include <iosfwd> + + +struct RespawnRequestListener : public gcn::ActionListener +{ + void action(const gcn::ActionEvent &event); +}; + +namespace Net +{ + namespace GameServer + { + namespace Player + { + void say(const std::string &text); + void walk(int x, int y); + void pickUp(int x, int y); + void moveItem(int oldSlot, int newSlot, int amount); + void drop(int slot, int amount); + void equip(int slot); + void unequip(int slot); + void useItem(int slot); + void attack(int direction); + void useSpecial(int special); + void changeAction(Being::Action action); + void talkToNPC(int id, bool restart); + void selectFromNPC(int id, int choice); + void requestTrade(int id); + void acceptTrade(bool accept); + void tradeItem(int slot, int amount); + void tradeMoney(int amount); + void tradeWithNPC(int item, int amount); + void sendLetter(const std::string &player, const std::string &text); + void raiseAttribute(int attribute); + void lowerAttribute(int attribute); + void respawn(); + static RespawnRequestListener respawnListener; + void changeDir(unsigned char dir); + } + } +} + +#endif diff --git a/src/net/tmwserv/guildhandler.cpp b/src/net/tmwserv/guildhandler.cpp new file mode 100644 index 00000000..21b43063 --- /dev/null +++ b/src/net/tmwserv/guildhandler.cpp @@ -0,0 +1,243 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/guildhandler.h" + +#include "net/messagein.h" + +#include "net/tmwserv/chatserver/chatserver.h" +#include "net/tmwserv/chatserver/guild.h" +#include "net/tmwserv/protocol.h" + +#include "gui/widgets/channeltab.h" +#include "gui/chat.h" +#include "gui/guildwindow.h" + +#include "guild.h" +#include "log.h" +#include "localplayer.h" +#include "channel.h" +#include "channelmanager.h" + +#include <iostream> + +GuildHandler::GuildHandler() +{ + static const Uint16 _messages[] = { + CPMSG_GUILD_CREATE_RESPONSE, + CPMSG_GUILD_INVITE_RESPONSE, + CPMSG_GUILD_ACCEPT_RESPONSE, + CPMSG_GUILD_GET_MEMBERS_RESPONSE, + CPMSG_GUILD_UPDATE_LIST, + CPMSG_GUILD_INVITED, + CPMSG_GUILD_REJOIN, + CPMSG_GUILD_QUIT_RESPONSE, + 0 + }; + handledMessages = _messages; + +} + +void GuildHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case CPMSG_GUILD_CREATE_RESPONSE: + { + logger->log("Received CPMSG_GUILD_CREATE_RESPONSE"); + if(msg.readInt8() == ERRMSG_OK) + { + // TODO - Acknowledge guild was created + localChatTab->chatLog("Guild created."); + joinedGuild(msg); + } + else + { + localChatTab->chatLog("Error creating guild."); + } + } break; + + case CPMSG_GUILD_INVITE_RESPONSE: + { + logger->log("Received CPMSG_GUILD_INVITE_RESPONSE"); + if(msg.readInt8() == ERRMSG_OK) + { + // TODO - Acknowledge invite was sent + localChatTab->chatLog("Invite sent."); + } + } break; + + case CPMSG_GUILD_ACCEPT_RESPONSE: + { + logger->log("Received CPMSG_GUILD_ACCEPT_RESPONSE"); + if(msg.readInt8() == ERRMSG_OK) + { + // TODO - Acknowledge accepted into guild + joinedGuild(msg); + } + } break; + + case CPMSG_GUILD_GET_MEMBERS_RESPONSE: + { + logger->log("Received CPMSG_GUILD_GET_MEMBERS_RESPONSE"); + if(msg.readInt8() == ERRMSG_OK) + { + std::string guildMember; + bool online; + std::string guildName; + Guild *guild; + + short guildId = msg.readInt16(); + guild = player_node->getGuild(guildId); + + if (!guild) + return; + + guildName = guild->getName(); + + while(msg.getUnreadLength()) + { + guildMember = msg.readString(); + online = msg.readInt8(); + if(guildMember != "") + { + guild->addMember(guildMember); + guildWindow->setOnline(guildName, guildMember, online); + } + } + + guildWindow->updateTab(); + } + } break; + + case CPMSG_GUILD_UPDATE_LIST: + { + logger->log("Received CPMSG_GUILD_UPDATE_LIST"); + short guildId = msg.readInt16(); + std::string guildMember = msg.readString(); + char eventId = msg.readInt8(); + + Guild *guild = player_node->getGuild(guildId); + if (guild) + { + switch(eventId) + { + case GUILD_EVENT_NEW_PLAYER: + guild->addMember(guildMember); + guildWindow->setOnline(guild->getName(), guildMember, true); + break; + + case GUILD_EVENT_LEAVING_PLAYER: + guild->removeMember(guildMember); + break; + + case GUILD_EVENT_ONLINE_PLAYER: + guildWindow->setOnline(guild->getName(), guildMember, true); + break; + + case GUILD_EVENT_OFFLINE_PLAYER: + guildWindow->setOnline(guild->getName(), guildMember, false); + break; + + default: + logger->log("Invalid guild event"); + } + } + guildWindow->updateTab(); + + + } break; + + case CPMSG_GUILD_INVITED: + { + logger->log("Received CPMSG_GUILD_INVITED"); + std::string inviterName = msg.readString(); + std::string guildName = msg.readString(); + + // Open a dialog asking if the player accepts joining the guild. + guildWindow->openAcceptDialog(inviterName, guildName); + } break; + + case CPMSG_GUILD_PROMOTE_MEMBER_RESPONSE: + { + logger->log("Received CPMSG_GUILD_PROMOTE_MEMBER_RESPONSE"); + + if (msg.readInt8() == ERRMSG_OK) + { + // promotion succeeded + localChatTab->chatLog("Member was promoted successfully"); + } + else + { + // promotion failed + localChatTab->chatLog("Failed to promote member"); + } + } + + case CPMSG_GUILD_REJOIN: + { + logger->log("Received CPMSG_GUILD_REJOIN"); + + joinedGuild(msg); + } break; + + case CPMSG_GUILD_QUIT_RESPONSE: + { + logger->log("Received CPMSG_GUILD_QUIT_RESPONSE"); + + if (msg.readInt8() == ERRMSG_OK) + { + // Must remove tab first, as it wont find the guild + // name after its removed from the player + int guildId = msg.readInt16(); + Guild *guild = player_node->getGuild(guildId); + if (guild) + { + Channel *channel = channelManager->findByName(guild->getName()); + channelManager->removeChannel(channel); + guildWindow->removeTab(guildId); + player_node->removeGuild(guildId); + } + } + } break; + } +} + +void GuildHandler::joinedGuild(MessageIn &msg) +{ + std::string guildName = msg.readString(); + short guildId = msg.readInt16(); + short permissions = msg.readInt16(); + short channelId = msg.readInt16(); + std::string announcement = msg.readString(); + + // Add guild to player and create new guild tab + Guild *guild = player_node->addGuild(guildId, permissions); + guild->setName(guildName); + guildWindow->newGuildTab(guildName); + guildWindow->requestMemberList(guildId); + + // Automatically create the guild channel + // COMMENT: Should this go here?? + Channel *channel = new Channel(channelId, guildName, announcement); + channelManager->addChannel(channel); + channel->getTab()->chatLog("Topic: " + announcement, BY_CHANNEL); +} diff --git a/src/net/tmwserv/guildhandler.h b/src/net/tmwserv/guildhandler.h new file mode 100644 index 00000000..9b900d9f --- /dev/null +++ b/src/net/tmwserv/guildhandler.h @@ -0,0 +1,40 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_GUILDHANDLER_H +#define NET_TMWSERV_GUILDHANDLER_H + +#include "net/messagehandler.h" + +#include <string> + +class GuildHandler : public MessageHandler +{ +public: + GuildHandler(); + + void handleMessage(MessageIn &msg); + +protected: + void joinedGuild(MessageIn &msg); +}; + +#endif diff --git a/src/net/tmwserv/internal.cpp b/src/net/tmwserv/internal.cpp new file mode 100644 index 00000000..253d4f5f --- /dev/null +++ b/src/net/tmwserv/internal.cpp @@ -0,0 +1,27 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/internal.h" + +namespace Net +{ + int connections = 0; +} diff --git a/src/net/tmwserv/internal.h b/src/net/tmwserv/internal.h new file mode 100644 index 00000000..17ee9081 --- /dev/null +++ b/src/net/tmwserv/internal.h @@ -0,0 +1,30 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_INTERNAL_H +#define NET_TMWSERV_INTERNAL_H + +namespace Net +{ + extern int connections; +} + +#endif diff --git a/src/net/tmwserv/inventoryhandler.cpp b/src/net/tmwserv/inventoryhandler.cpp new file mode 100644 index 00000000..f6522128 --- /dev/null +++ b/src/net/tmwserv/inventoryhandler.cpp @@ -0,0 +1,79 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/inventoryhandler.h" + +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "equipment.h" +#include "inventory.h" +#include "item.h" +#include "itemshortcut.h" +#include "localplayer.h" + +#include "gui/chat.h" + +#include "resources/iteminfo.h" + +InventoryHandler::InventoryHandler() +{ + static const Uint16 _messages[] = { + GPMSG_INVENTORY_FULL, + GPMSG_INVENTORY, + 0 + }; + handledMessages = _messages; +} + +void InventoryHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case GPMSG_INVENTORY_FULL: + player_node->clearInventory(); + // no break! + + case GPMSG_INVENTORY: + while (msg.getUnreadLength()) + { + int slot = msg.readInt8(); + if (slot == 255) + { + player_node->setMoney(msg.readInt32()); + continue; + } + + int id = msg.readInt16(); + if (slot < EQUIPMENT_SIZE) + { + player_node->mEquipment->setEquipment(slot, id); + } + else if (slot >= 32 && slot < 32 + INVENTORY_SIZE) + { + int amount = id ? msg.readInt8() : 0; + player_node->setInvItem(slot - 32, id, amount); + } + }; + break; + } +} diff --git a/src/net/inventoryhandler.h b/src/net/tmwserv/inventoryhandler.h index f87e1214..4144d89c 100644 --- a/src/net/inventoryhandler.h +++ b/src/net/tmwserv/inventoryhandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,17 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_INVENTORYHANDLER_H -#define NET_INVENTORYHANDLER_H +#ifndef NET_TMWSERV_INVENTORYHANDLER_H +#define NET_TMWSERV_INVENTORYHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" class InventoryHandler : public MessageHandler { public: InventoryHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); }; #endif diff --git a/src/net/tmwserv/itemhandler.cpp b/src/net/tmwserv/itemhandler.cpp new file mode 100644 index 00000000..4ed61266 --- /dev/null +++ b/src/net/tmwserv/itemhandler.cpp @@ -0,0 +1,66 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/itemhandler.h" + +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "engine.h" +#include "flooritemmanager.h" + +ItemHandler::ItemHandler() +{ + static const Uint16 _messages[] = { + GPMSG_ITEMS, + GPMSG_ITEM_APPEAR, + 0 + }; + handledMessages = _messages; +} + +void ItemHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case GPMSG_ITEM_APPEAR: + case GPMSG_ITEMS: + { + while (msg.getUnreadLength()) + { + int itemId = msg.readInt16(); + int x = msg.readInt16(); + int y = msg.readInt16(); + int id = (x << 16) | y; // dummy id + + if (itemId) + { + floorItemManager->create(id, itemId, x / 32, y / 32, engine->getCurrentMap()); + } + else if (FloorItem *item = floorItemManager->findById(id)) + { + floorItemManager->destroy(item); + } + } + } break; + } +} diff --git a/src/net/itemhandler.h b/src/net/tmwserv/itemhandler.h index 0f292d46..6a2a96c8 100644 --- a/src/net/itemhandler.h +++ b/src/net/tmwserv/itemhandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,17 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_ITEMHANDLER_H -#define NET_ITEMHANDLER_H +#ifndef NET_TMWSERV_ITEMHANDLER_H +#define NET_TMWSERV_ITEMHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" class ItemHandler : public MessageHandler { public: ItemHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); }; #endif diff --git a/src/net/tmwserv/loginhandler.cpp b/src/net/tmwserv/loginhandler.cpp new file mode 100644 index 00000000..ccba06ed --- /dev/null +++ b/src/net/tmwserv/loginhandler.cpp @@ -0,0 +1,226 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/loginhandler.h" + +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "logindata.h" +#include "main.h" + +LoginHandler::LoginHandler() +{ + static const Uint16 _messages[] = { + APMSG_LOGIN_RESPONSE, + APMSG_REGISTER_RESPONSE, + APMSG_RECONNECT_RESPONSE, + APMSG_PASSWORD_CHANGE_RESPONSE, + APMSG_EMAIL_CHANGE_RESPONSE, + 0 + }; + handledMessages = _messages; +} + +void LoginHandler::setLoginData(LoginData *loginData) +{ + mLoginData = loginData; +} + +void LoginHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case APMSG_LOGIN_RESPONSE: + handleLoginResponse(msg); + break; + case APMSG_REGISTER_RESPONSE: + handleRegisterResponse(msg); + break; + case APMSG_RECONNECT_RESPONSE: + { + int errMsg = msg.readInt8(); + // Successful login + if (errMsg == ERRMSG_OK) + { + state = STATE_CHAR_SELECT; + } + // Login failed + else + { + switch (errMsg) { + case ERRMSG_INVALID_ARGUMENT: + errorMessage = "Wrong magic_token"; + break; + case ERRMSG_FAILURE: + errorMessage = "Already logged in"; + break; + case LOGIN_SERVER_FULL: + errorMessage = "Server is full"; + break; + default: + errorMessage = "Unknown error"; + break; + } + state = STATE_ERROR; + } + } + break; + + case APMSG_PASSWORD_CHANGE_RESPONSE: + { + int errMsg = msg.readInt8(); + // Successful pass change + if (errMsg == ERRMSG_OK) + { + state = STATE_CHANGEPASSWORD; + } + // pass change failed + else + { + switch (errMsg) { + case ERRMSG_INVALID_ARGUMENT: + errorMessage = "New password incorrect"; + break; + case ERRMSG_FAILURE: + errorMessage = "Old password incorrect"; + break; + case ERRMSG_NO_LOGIN: + errorMessage = "Account not connected. Please login first."; + break; + default: + errorMessage = "Unknown error"; + break; + } + state = STATE_ACCOUNTCHANGE_ERROR; + } + } + break; + + case APMSG_EMAIL_CHANGE_RESPONSE: + { + int errMsg = msg.readInt8(); + // Successful pass change + if (errMsg == ERRMSG_OK) + { + state = STATE_CHANGEEMAIL; + } + // pass change failed + else + { + switch (errMsg) { + case ERRMSG_INVALID_ARGUMENT: + errorMessage = "New email address incorrect"; + break; + case ERRMSG_FAILURE: + errorMessage = "Old email address incorrect"; + break; + case ERRMSG_NO_LOGIN: + errorMessage = "Account not connected. Please login first."; + break; + case ERRMSG_EMAIL_ALREADY_EXISTS: + errorMessage = "The new Email Address already exists."; + break; + default: + errorMessage = "Unknown error"; + break; + } + state = STATE_ACCOUNTCHANGE_ERROR; + } + } + break; + + } +} + +void LoginHandler::handleLoginResponse(MessageIn &msg) +{ + const int errMsg = msg.readInt8(); + + if (errMsg == ERRMSG_OK) + { + readUpdateHost(msg); + state = STATE_CHAR_SELECT; + } + else + { + switch (errMsg) { + case LOGIN_INVALID_VERSION: + errorMessage = "Client version is too old"; + break; + case ERRMSG_INVALID_ARGUMENT: + errorMessage = "Wrong username or password"; + break; + case ERRMSG_FAILURE: + errorMessage = "Already logged in"; + break; + case LOGIN_SERVER_FULL: + errorMessage = "Server is full"; + break; + default: + errorMessage = "Unknown error"; + break; + } + state = STATE_LOGIN_ERROR; + } +} + +void LoginHandler::handleRegisterResponse(MessageIn &msg) +{ + const int errMsg = msg.readInt8(); + + if (errMsg == ERRMSG_OK) + { + readUpdateHost(msg); + state = STATE_CHAR_SELECT; + } + else + { + switch (errMsg) { + case REGISTER_INVALID_VERSION: + errorMessage = "Client version is too old"; + break; + case ERRMSG_INVALID_ARGUMENT: + errorMessage = "Wrong username, password or email address"; + break; + case REGISTER_EXISTS_USERNAME: + errorMessage = "Username already exists"; + break; + case REGISTER_EXISTS_EMAIL: + errorMessage = "Email address already exists"; + break; + default: + errorMessage = "Unknown error"; + break; + } + state = STATE_LOGIN_ERROR; + } +} + +void LoginHandler::readUpdateHost(MessageIn &msg) +{ + // Set the update host when included in the message + if (msg.getUnreadLength() > 0) + { + mLoginData->updateHost = msg.readString(); + } +} diff --git a/src/net/tmwserv/loginhandler.h b/src/net/tmwserv/loginhandler.h new file mode 100644 index 00000000..81dd273c --- /dev/null +++ b/src/net/tmwserv/loginhandler.h @@ -0,0 +1,47 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_LOGINHANDLER_H +#define NET_TMWSERV_LOGINHANDLER_H + +#include "net/messagehandler.h" + +class LoginData; + +class LoginHandler : public MessageHandler +{ + public: + LoginHandler(); + + void setLoginData(LoginData *loginData); + + void handleMessage(MessageIn &msg); + + private: + void handleLoginResponse(MessageIn &msg); + void handleRegisterResponse(MessageIn &msg); + + void readUpdateHost(MessageIn &msg); + + LoginData *mLoginData; +}; + +#endif // NET_TMWSERV_LOGINHANDLER_H diff --git a/src/net/tmwserv/logouthandler.cpp b/src/net/tmwserv/logouthandler.cpp new file mode 100644 index 00000000..8b0e2d6e --- /dev/null +++ b/src/net/tmwserv/logouthandler.cpp @@ -0,0 +1,218 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/logouthandler.h" + +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "main.h" + +LogoutHandler::LogoutHandler(): + mPassToken(NULL), + mScenario(LOGOUT_EXIT), + mLoggedOutAccount(false), + mLoggedOutGame(false), + mLoggedOutChat(false) +{ + static const Uint16 _messages[] = { + APMSG_LOGOUT_RESPONSE, + APMSG_UNREGISTER_RESPONSE, + GPMSG_DISCONNECT_RESPONSE, + CPMSG_DISCONNECT_RESPONSE, + 0 + }; + handledMessages = _messages; +} + +void LogoutHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case APMSG_LOGOUT_RESPONSE: + { + int errMsg = msg.readInt8(); + + // Successful logout + if (errMsg == ERRMSG_OK) + { + mLoggedOutAccount = true; + + switch (mScenario) + { + case LOGOUT_SWITCH_ACCOUNTSERVER: + if (mLoggedOutGame && mLoggedOutChat) + state = STATE_SWITCH_ACCOUNTSERVER; + break; + + case LOGOUT_EXIT: + default: + if (mLoggedOutGame && mLoggedOutChat) + state = STATE_FORCE_QUIT; + break; + } + } + // Logout failed + else + { + switch (errMsg) { + case ERRMSG_NO_LOGIN: + errorMessage = "Accountserver: Not logged in"; + break; + default: + errorMessage = "Accountserver: Unknown error"; + break; + } + state = STATE_ERROR; + } + } + break; + case APMSG_UNREGISTER_RESPONSE: + { + int errMsg = msg.readInt8(); + // Successful unregistration + if (errMsg == ERRMSG_OK) + { + state = STATE_UNREGISTER; + } + // Unregistration failed + else + { + switch (errMsg) { + case ERRMSG_INVALID_ARGUMENT: + errorMessage = + "Accountserver: Wrong username or password"; + break; + default: + errorMessage = "Accountserver: Unknown error"; + break; + } + state = STATE_ACCOUNTCHANGE_ERROR; + } + } + break; + case GPMSG_DISCONNECT_RESPONSE: + { + int errMsg = msg.readInt8(); + // Successful logout + if (errMsg == ERRMSG_OK) + { + mLoggedOutGame = true; + + switch (mScenario) + { + case LOGOUT_SWITCH_CHARACTER: + if (mPassToken) + { + *mPassToken = msg.readString(32); + mPassToken = NULL; + } + if (mLoggedOutChat) state = STATE_RECONNECT_ACCOUNT; + break; + + case LOGOUT_SWITCH_ACCOUNTSERVER: + if (mLoggedOutAccount && mLoggedOutChat) + state = STATE_SWITCH_ACCOUNTSERVER; + break; + + case LOGOUT_EXIT: + default: + if (mLoggedOutAccount && mLoggedOutChat) + state = STATE_FORCE_QUIT; + break; + } + } + // Logout failed + else + { + switch (errMsg) { + case ERRMSG_NO_LOGIN: + errorMessage = "Gameserver: Not logged in"; + break; + default: + errorMessage = "Gameserver: Unknown error"; + break; + } + state = STATE_ERROR; + } + } + break; + case CPMSG_DISCONNECT_RESPONSE: + { + int errMsg = msg.readInt8(); + // Successful logout + if (errMsg == ERRMSG_OK) + { + mLoggedOutChat = true; + + switch (mScenario) + { + case LOGOUT_SWITCH_CHARACTER: + if (mLoggedOutGame) state = STATE_RECONNECT_ACCOUNT; + break; + + case LOGOUT_SWITCH_ACCOUNTSERVER: + if (mLoggedOutAccount && mLoggedOutGame) + state = STATE_SWITCH_ACCOUNTSERVER; + break; + + case LOGOUT_EXIT: + default: + if (mLoggedOutAccount && mLoggedOutGame) + { + state = STATE_FORCE_QUIT; + } + break; + } + } + else + { + switch (errMsg) { + case ERRMSG_NO_LOGIN: + errorMessage = "Chatserver: Not logged in"; + break; + default: + errorMessage = "Chatserver: Unknown error"; + break; + } + state = STATE_ERROR; + } + } + break; + } +} + +void LogoutHandler::setScenario(unsigned short scenario, + std::string *passToken) +{ + mScenario = scenario; + mPassToken = passToken; +} + +void LogoutHandler::reset() +{ + mPassToken = NULL; + mScenario = LOGOUT_EXIT; + mLoggedOutAccount = false; + mLoggedOutGame = false; + mLoggedOutChat = false; +} diff --git a/src/net/tmwserv/logouthandler.h b/src/net/tmwserv/logouthandler.h new file mode 100644 index 00000000..6c69c8be --- /dev/null +++ b/src/net/tmwserv/logouthandler.h @@ -0,0 +1,62 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_LOGOUTHANDLER_H +#define NET_TMWSERV_LOGOUTHANDLER_H + +#include "net/messagehandler.h" + +#include <string> + +/** + * The different scenarios for which LogoutHandler can be used + */ +enum { + LOGOUT_EXIT, + LOGOUT_SWITCH_ACCOUNTSERVER, + LOGOUT_SWITCH_CHARACTER +}; + +class LogoutHandler : public MessageHandler +{ + public: + LogoutHandler(); + + void handleMessage(MessageIn &msg); + + void setScenario(unsigned short scenario, + std::string *passToken = NULL); + + void reset(); + + void setAccountLoggedOut() { mLoggedOutAccount = true; } + void setGameLoggedOut() { mLoggedOutGame = true; } + void setChatLoggedOut() { mLoggedOutChat = true; } + + private: + std::string* mPassToken; + unsigned short mScenario; + bool mLoggedOutAccount; + bool mLoggedOutGame; + bool mLoggedOutChat; +}; + +#endif diff --git a/src/net/tmwserv/network.cpp b/src/net/tmwserv/network.cpp new file mode 100644 index 00000000..d353da17 --- /dev/null +++ b/src/net/tmwserv/network.cpp @@ -0,0 +1,170 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/network.h" + +#include "net/tmwserv/connection.h" +#include "net/tmwserv/internal.h" + +#include "net/messagehandler.h" +#include "net/messagein.h" + +#include "log.h" + +#include <enet/enet.h> + +#include <map> + +/** + * The local host which is shared for all outgoing connections. + */ +namespace { + ENetHost *client; +} + +typedef std::map<unsigned short, MessageHandler*> MessageHandlers; +typedef MessageHandlers::iterator MessageHandlerIterator; +static MessageHandlers mMessageHandlers; + +void Net::initialize() +{ + if (enet_initialize()) + { + logger->error("Failed to initialize ENet."); + } + + client = enet_host_create(NULL, 3, 0, 0); + + if (!client) + { + logger->error("Failed to create the local host."); + } +} + +void Net::finalize() +{ + if (!client) + return; // Wasn't initialized at all + + if (Net::connections) { + logger->error("Tried to shutdown the network subsystem while there " + "are network connections left!"); + } + + clearHandlers(); + enet_deinitialize(); +} + +Net::Connection *Net::getConnection() +{ + if (!client) + { + logger->error("Tried to instantiate a network object before " + "initializing the network subsystem!"); + } + + return new Net::Connection(client); +} + +void Net::registerHandler(MessageHandler *handler) +{ + for (const Uint16 *i = handler->handledMessages; *i; i++) + { + mMessageHandlers[*i] = handler; + } +} + +void Net::unregisterHandler(MessageHandler *handler) +{ + for (const Uint16 *i = handler->handledMessages; *i; i++) + { + mMessageHandlers.erase(*i); + } +} + +void Net::clearHandlers() +{ + mMessageHandlers.clear(); +} + + +/** + * Dispatches a message to the appropriate message handler and + * destroys it afterwards. + */ +namespace +{ + void dispatchMessage(ENetPacket *packet) + { + MessageIn msg((const char *)packet->data, packet->dataLength); + + MessageHandlerIterator iter = mMessageHandlers.find(msg.getId()); + + if (iter != mMessageHandlers.end()) { + //logger->log("Received packet %x (%i B)", + // msg.getId(), msg.getLength()); + iter->second->handleMessage(msg); + } + else { + logger->log("Unhandled packet %x (%i B)", + msg.getId(), msg.getLength()); + } + + // Clean up the packet now that we're done using it. + enet_packet_destroy(packet); + } +} + +void Net::flush() +{ + ENetEvent event; + + // Wait up to 10 milliseconds for an event. + while (enet_host_service(client, &event, 10) > 0) + { + switch (event.type) + { + case ENET_EVENT_TYPE_CONNECT: + logger->log("Connected to port %d.", event.peer->address.port); + // Store any relevant server information here. + event.peer->data = 0; + break; + + case ENET_EVENT_TYPE_RECEIVE: + dispatchMessage(event.packet); + break; + + case ENET_EVENT_TYPE_DISCONNECT: + logger->log("Disconnected."); + // Reset the server information. + event.peer->data = 0; + break; + + case ENET_EVENT_TYPE_NONE: + logger->log("No event during 10 milliseconds."); + break; + + default: + logger->log("Unhandled enet event."); + break; + } + } +} diff --git a/src/net/tmwserv/network.h b/src/net/tmwserv/network.h new file mode 100644 index 00000000..1b5c7bc6 --- /dev/null +++ b/src/net/tmwserv/network.h @@ -0,0 +1,79 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_NETWORK_H +#define NET_TMWSERV_NETWORK_H + +#include <iosfwd> + +/** + * \defgroup Network Core network layer + */ + +class MessageHandler; +class MessageOut; + +/** + * \ingroup Network + */ +namespace Net +{ + class Connection; + + /** + * Initializes the network subsystem. + */ + void initialize(); + + /** + * Finalizes the network subsystem. + */ + void finalize(); + + /** + * Returns a new Connection object. Should be deleted by the caller. + */ + Connection *getConnection(); + + /** + * Registers a message handler. A message handler handles a certain + * subset of incoming messages. + */ + void registerHandler(MessageHandler *handler); + + /** + * Unregisters a message handler. + */ + void unregisterHandler(MessageHandler *handler); + + /** + * Clears all registered message handlers. + */ + void clearHandlers(); + + /* + * Handles all events and dispatches incoming messages to the + * registered handlers + */ + void flush(); +} + +#endif diff --git a/src/net/tmwserv/npchandler.cpp b/src/net/tmwserv/npchandler.cpp new file mode 100644 index 00000000..bae5228c --- /dev/null +++ b/src/net/tmwserv/npchandler.cpp @@ -0,0 +1,83 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/npchandler.h" + +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "beingmanager.h" +#include "npc.h" + +#include "gui/npclistdialog.h" +#include "gui/npcpostdialog.h" +#include "gui/npc_text.h" + +NPCHandler::NPCHandler() +{ + static const Uint16 _messages[] = { + GPMSG_NPC_CHOICE, + GPMSG_NPC_POST, + GPMSG_NPC_MESSAGE, + GPMSG_NPC_ERROR, + 0 + }; + handledMessages = _messages; +} + +void NPCHandler::handleMessage(MessageIn &msg) +{ + Being *being = beingManager->findBeing(msg.readInt16()); + if (!being || being->getType() != Being::NPC) + { + return; + } + + current_npc = being->getId(); + + switch (msg.getId()) + { + case GPMSG_NPC_CHOICE: + npcListDialog->reset(); + while (msg.getUnreadLength()) + { + npcListDialog->addItem(msg.readString()); + } + npcListDialog->setVisible(true); + break; + + case GPMSG_NPC_POST: + npcTextDialog->setVisible(false); + npcPostDialog->clear(); + npcPostDialog->setVisible(true); + break; + + case GPMSG_NPC_ERROR: + current_npc = NULL; + case GPMSG_NPC_MESSAGE: + npcTextDialog->addText(msg.readString(msg.getUnreadLength())); + npcListDialog->setVisible(false); + npcTextDialog->setVisible(true); + npcPostDialog->setVisible(false); + break; + } +} diff --git a/src/net/npchandler.h b/src/net/tmwserv/npchandler.h index 35db2956..905c9b01 100644 --- a/src/net/npchandler.h +++ b/src/net/tmwserv/npchandler.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,17 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef NET_NPCHANDLER_H -#define NET_NPCHANDLER_H +#ifndef NET_TMWSERV_NPCHANDLER_H +#define NET_TMWSERV_NPCHANDLER_H -#include "messagehandler.h" +#include "net/messagehandler.h" class NPCHandler : public MessageHandler { public: NPCHandler(); - void handleMessage(MessageIn *msg); + void handleMessage(MessageIn &msg); }; #endif diff --git a/src/net/tmwserv/partyhandler.cpp b/src/net/tmwserv/partyhandler.cpp new file mode 100644 index 00000000..dfbcea80 --- /dev/null +++ b/src/net/tmwserv/partyhandler.cpp @@ -0,0 +1,105 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/partyhandler.h" + +#include "net/tmwserv/chatserver/chatserver.h" +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "gui/chat.h" +#include "gui/partywindow.h" + +#include "log.h" +#include "localplayer.h" + +#include <iostream> + +PartyHandler::PartyHandler() +{ + static const Uint16 _messages[] = { + CPMSG_PARTY_INVITE_RESPONSE, + CPMSG_PARTY_INVITED, + CPMSG_PARTY_ACCEPT_INVITE_RESPONSE, + CPMSG_PARTY_QUIT_RESPONSE, + CPMSG_PARTY_NEW_MEMBER, + CPMSG_PARTY_MEMBER_LEFT, + 0 + }; + handledMessages = _messages; + +} + +void PartyHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case CPMSG_PARTY_INVITE_RESPONSE: + { + if (msg.readInt8() == ERRMSG_OK) + { + + } + } break; + + case CPMSG_PARTY_INVITED: + { + std::string inviter = msg.readString(); + partyWindow->showPartyInvite(inviter); + } break; + + case CPMSG_PARTY_ACCEPT_INVITE_RESPONSE: + { + if (msg.readInt8() == ERRMSG_OK) + { + player_node->setInParty(true); + localChatTab->chatLog("Joined party"); + } + } + + case CPMSG_PARTY_QUIT_RESPONSE: + { + if (msg.readInt8() == ERRMSG_OK) + { + player_node->setInParty(false); + } + } break; + + case CPMSG_PARTY_NEW_MEMBER: + { + msg.readInt16(); // being id + std::string name = msg.readString(); + + localChatTab->chatLog(name + " joined the party"); + + if (!player_node->getInParty()) + player_node->setInParty(true); + + partyWindow->addPartyMember(name); + } break; + + case CPMSG_PARTY_MEMBER_LEFT: + { + partyWindow->removePartyMember(msg.readString()); + } break; + } +} diff --git a/src/net/tmwserv/partyhandler.h b/src/net/tmwserv/partyhandler.h new file mode 100644 index 00000000..66e29b0d --- /dev/null +++ b/src/net/tmwserv/partyhandler.h @@ -0,0 +1,38 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_PARTYHANDLER_H +#define NET_TMWSERV_PARTYHANDLER_H + +#include "net/messagehandler.h" + +#include <string> + +class PartyHandler : public MessageHandler +{ +public: + PartyHandler(); + + void handleMessage(MessageIn &msg); +}; + +#endif + diff --git a/src/net/tmwserv/playerhandler.cpp b/src/net/tmwserv/playerhandler.cpp new file mode 100644 index 00000000..863fcb65 --- /dev/null +++ b/src/net/tmwserv/playerhandler.cpp @@ -0,0 +1,329 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/playerhandler.h" + +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "engine.h" +#include "localplayer.h" +#include "log.h" +#include "particle.h" +#include "npc.h" + +#include "gui/buy.h" +#include "gui/chat.h" +#include "gui/gui.h" +#include "gui/npclistdialog.h" +#include "gui/npc_text.h" +#include "gui/ok_dialog.h" +#include "gui/sell.h" +#include "gui/skill.h" +#include "gui/viewport.h" + +// TODO Move somewhere else +OkDialog *weightNotice = NULL; +OkDialog *deathNotice = NULL; + +extern NpcListDialog *npcListDialog; +extern NpcTextDialog *npcTextDialog; +extern BuyDialog *buyDialog; +extern SellDialog *sellDialog; +extern Window *buySellDialog; + +/* Max. distance we are willing to scroll after a teleport; + * everything beyond will reset the port hard. + */ +static const int MAP_TELEPORT_SCROLL_DISTANCE = 8 * 32; + +/** + * Listener used for handling the overweigth message. + */ +// TODO Move somewhere else +namespace { + struct WeightListener : public gcn::ActionListener + { + void action(const gcn::ActionEvent &event) + { + weightNotice = NULL; + } + } weightListener; +} + +/** + * Listener used for handling death message. + */ +// TODO Move somewhere else +namespace { + struct DeathListener : public gcn::ActionListener + { + void action(const gcn::ActionEvent &event) + { + player_node->revive(); + deathNotice = NULL; + npcListDialog->setVisible(false); + npcTextDialog->setVisible(false); + buyDialog->setVisible(false); + sellDialog->setVisible(false); +#ifdef EATHENA_SUPPORT + buySellDialog->setVisible(false); +#endif + current_npc = 0; + } + } deathListener; +} + +PlayerHandler::PlayerHandler() +{ + static const Uint16 _messages[] = { + GPMSG_PLAYER_MAP_CHANGE, + GPMSG_PLAYER_SERVER_CHANGE, + GPMSG_PLAYER_ATTRIBUTE_CHANGE, + GPMSG_PLAYER_EXP_CHANGE, + GPMSG_LEVELUP, + GPMSG_LEVEL_PROGRESS, + GPMSG_RAISE_ATTRIBUTE_RESPONSE, + GPMSG_LOWER_ATTRIBUTE_RESPONSE, + 0 + }; + handledMessages = _messages; +} + +void PlayerHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case GPMSG_PLAYER_MAP_CHANGE: + handleMapChangeMessage(msg); + break; + + case GPMSG_PLAYER_SERVER_CHANGE: + { // TODO: Implement reconnecting to another game server + std::string token = msg.readString(32); + std::string address = msg.readString(); + int port = msg.readInt16(); + logger->log("Changing server to %s:%d", address.c_str(), port); + } break; + + case GPMSG_PLAYER_ATTRIBUTE_CHANGE: + { + logger->log("ATTRIBUTE UPDATE:"); + while (msg.getUnreadLength()) + { + int stat = msg.readInt8(); + int base = msg.readInt16(); + int value = msg.readInt16(); + logger->log("%d set to %d %d", stat, base, value); + + if (stat == BASE_ATTR_HP) + { + player_node->setMaxHp(base); + player_node->setHp(value); + } + else if (stat < NB_CHARACTER_ATTRIBUTES) + { + if (stat >= CHAR_SKILL_BEGIN && stat < CHAR_SKILL_END + && player_node->getAttributeBase(stat) < base + && player_node->getAttributeBase(stat) > -1) + { + Particle* effect = particleEngine->addEffect("graphics/particles/skillup.particle.xml", 0, 0); + player_node->controlParticle(effect); + } + + player_node->setAttributeBase(stat, base); + player_node->setAttributeEffective(stat, value); + } + else + { + logger->log("Warning: server wants to update unknown " + "attribute %d to %d", stat, value); + } + } + } break; + + case GPMSG_PLAYER_EXP_CHANGE: + { + logger->log("EXP Update"); + while (msg.getUnreadLength()) + { + int skill = msg.readInt8(); + int current = msg.readInt32(); + int next = msg.readInt32(); + + if (skill < CHAR_SKILL_NB) + { + player_node->setExperience(skill, current, next); + } + else + { + logger->log("Warning: server wants to update experience of unknown " + "skill %d to %d / %d", skill, current, next); + } + } + } break; + + case GPMSG_LEVELUP: + { + player_node->setLevel(msg.readInt16()); + player_node->setCharacterPoints(msg.readInt16()); + player_node->setCorrectionPoints(msg.readInt16()); + Particle* effect = particleEngine->addEffect("graphics/particles/levelup.particle.xml", 0, 0); + player_node->controlParticle(effect); + } break; + + + case GPMSG_LEVEL_PROGRESS: + { + logger->log("Level Progress Update"); + player_node->setLevelProgress(msg.readInt8()); + } break; + + + case GPMSG_RAISE_ATTRIBUTE_RESPONSE: + { + int errCode = msg.readInt8(); + int attrNum = msg.readInt8() - CHAR_ATTR_BEGIN; + switch (errCode) + { + case ATTRIBMOD_OK: + { + // feel(acknowledgment); + } break; + case ATTRIBMOD_INVALID_ATTRIBUTE: + { + logger->log("Warning: Server denied increase of attribute %d (unknown attribute) ", attrNum); + } break; + case ATTRIBMOD_NO_POINTS_LEFT: + { + // when the server says "you got no points" it + // has to be correct. The server is always right! + // undo attribute change and set points to 0 + logger->log("Warning: Server denied increase of attribute %d (no points left) ", attrNum); + int attrValue = player_node->getAttributeBase(attrNum) - 1; + player_node->setCharacterPoints(0); + player_node->setAttributeBase(attrNum, attrValue); + } break; + case ATTRIBMOD_DENIED: + { + // undo attribute change + logger->log("Warning: Server denied increase of attribute %d (reason unknown) ", attrNum); + int points = player_node->getCharacterPoints() - 1; + player_node->setCharacterPoints(points); + int attrValue = player_node->getAttributeBase(attrNum) - 1; + player_node->setAttributeBase(attrNum, attrValue); + } break; + } + } break; + + case GPMSG_LOWER_ATTRIBUTE_RESPONSE: + { + int errCode = msg.readInt8(); + int attrNum = msg.readInt8() - CHAR_ATTR_BEGIN; + switch (errCode) + { + case ATTRIBMOD_OK: + { + // feel(acknowledgment); + } break; + case ATTRIBMOD_INVALID_ATTRIBUTE: + { + logger->log("Warning: Server denied reduction of attribute %d (unknown attribute) ", attrNum); + } break; + case ATTRIBMOD_NO_POINTS_LEFT: + { + // when the server says "you got no points" it + // has to be correct. The server is always right! + // undo attribute change and set points to 0 + logger->log("Warning: Server denied reduction of attribute %d (no points left) ", attrNum); + int attrValue = player_node->getAttributeBase(attrNum) + 1; + player_node->setCorrectionPoints(0); + player_node->setAttributeBase(attrNum, attrValue); + break; + } break; + case ATTRIBMOD_DENIED: + { + // undo attribute change + logger->log("Warning: Server denied reduction of attribute %d (reason unknown) ", attrNum); + int charaPoints = player_node->getCharacterPoints() - 1; + player_node->setCharacterPoints(charaPoints); + int correctPoints = player_node->getCorrectionPoints() + 1; + player_node->setCorrectionPoints(correctPoints); + int attrValue = player_node->getAttributeBase(attrNum) + 1; + player_node->setAttributeBase(attrNum, attrValue); + } break; + } + + } break; + /* + case SMSG_PLAYER_ARROW_MESSAGE: + { + Sint16 type = msg.readInt16(); + + switch (type) { + case 0: + localChatTab->chatLog("Equip arrows first", + BY_SERVER); + break; + default: + logger->log("0x013b: Unhandled message %i", type); + break; + } + } + break; + */ + } +} + +void PlayerHandler::handleMapChangeMessage(MessageIn &msg) +{ + const std::string mapName = msg.readString(); + const unsigned short x = msg.readInt16(); + const unsigned short y = msg.readInt16(); + const bool nearby = (engine->getCurrentMapName() == mapName); + + logger->log("Changing map to %s (%d, %d)", mapName.c_str(), x, y); + + // Switch the actual map, deleting the previous one + engine->changeMap(mapName); + + current_npc = 0; + + const Vector &playerPos = player_node->getPosition(); + float scrollOffsetX = 0.0f; + float scrollOffsetY = 0.0f; + + /* Scroll if neccessary */ + if (!nearby + || (abs(x - (int) playerPos.x) > MAP_TELEPORT_SCROLL_DISTANCE) + || (abs(y - (int) playerPos.y) > MAP_TELEPORT_SCROLL_DISTANCE)) { + scrollOffsetX = x - (int) playerPos.x; + scrollOffsetY = y - (int) playerPos.y; + } + + player_node->setAction(Being::STAND); + player_node->setPosition(x, y); + + logger->log("Adjust scrolling by %d,%d", (int) scrollOffsetX, + (int) scrollOffsetY); + viewport->scrollBy(scrollOffsetX, scrollOffsetY); +} diff --git a/src/net/tmwserv/playerhandler.h b/src/net/tmwserv/playerhandler.h new file mode 100644 index 00000000..c8eacc38 --- /dev/null +++ b/src/net/tmwserv/playerhandler.h @@ -0,0 +1,38 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_PLAYERHANDLER_H +#define NET_TMWSERV_PLAYERHANDLER_H + +#include "net/messagehandler.h" + +class PlayerHandler : public MessageHandler +{ + public: + PlayerHandler(); + + void handleMessage(MessageIn &msg); + + private: + void handleMapChangeMessage(MessageIn &msg); +}; + +#endif diff --git a/src/net/tmwserv/protocol.h b/src/net/tmwserv/protocol.h new file mode 100644 index 00000000..7eb0b931 --- /dev/null +++ b/src/net/tmwserv/protocol.h @@ -0,0 +1,295 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef TMWSERV_PROTOCOL_H +#define TMWSERV_PROTOCOL_H + +/** + * Enumerated type for communicated messages: + * + * - PAMSG_*: from client to account server + * - APMSG_*: from account server to client + * - PCMSG_*: from client to chat server + * - CPMSG_*: from chat server to client + * - PGMSG_*: from client to game server + * - GPMSG_*: from game server to client + * + * Components: B byte, W word, D double word, S variable-size string + * C tile-based coordinates (B*3) + * + * Hosts: P (player's client), A (account server), C (char server), + * G (game server) + */ +enum { + // Login/Register + PAMSG_REGISTER = 0x0000, // L version, S username, S password, S email + APMSG_REGISTER_RESPONSE = 0x0002, // B error [, S updatehost] + PAMSG_UNREGISTER = 0x0003, // - + APMSG_UNREGISTER_RESPONSE = 0x0004, // B error + PAMSG_LOGIN = 0x0010, // L version, S username, S password + APMSG_LOGIN_RESPONSE = 0x0012, // B error [, S updatehost] + PAMSG_LOGOUT = 0x0013, // - + APMSG_LOGOUT_RESPONSE = 0x0014, // B error + PAMSG_CHAR_CREATE = 0x0020, // S name, B hair style, B hair color, B gender, W*6 stats + APMSG_CHAR_CREATE_RESPONSE = 0x0021, // B error + PAMSG_CHAR_DELETE = 0x0022, // B index + APMSG_CHAR_DELETE_RESPONSE = 0x0023, // B error + APMSG_CHAR_INFO = 0x0024, // B index, S name, B gender, B hair style, B hair color, W level, W character points, W correction points, D money, W*6 stats + PAMSG_CHAR_SELECT = 0x0026, // B index + APMSG_CHAR_SELECT_RESPONSE = 0x0027, // B error, B*32 token, S game address, W game port, S chat address, W chat port + PAMSG_EMAIL_CHANGE = 0x0030, // S email + APMSG_EMAIL_CHANGE_RESPONSE = 0x0031, // B error + PAMSG_PASSWORD_CHANGE = 0x0034, // S old password, S new password + APMSG_PASSWORD_CHANGE_RESPONSE = 0x0035, // B error + + PGMSG_CONNECT = 0x0050, // B*32 token + GPMSG_CONNECT_RESPONSE = 0x0051, // B error + PCMSG_CONNECT = 0x0053, // B*32 token + CPMSG_CONNECT_RESPONSE = 0x0054, // B error + + PGMSG_DISCONNECT = 0x0060, // B reconnect account + GPMSG_DISCONNECT_RESPONSE = 0x0061, // B error, B*32 token + PCMSG_DISCONNECT = 0x0063, // - + CPMSG_DISCONNECT_RESPONSE = 0x0064, // B error + + PAMSG_RECONNECT = 0x0065, // B*32 token + APMSG_RECONNECT_RESPONSE = 0x0066, // B error + + // Game + GPMSG_PLAYER_MAP_CHANGE = 0x0100, // S filename, W x, W y + GPMSG_PLAYER_SERVER_CHANGE = 0x0101, // B*32 token, S game address, W game port + PGMSG_PICKUP = 0x0110, // W*2 position + PGMSG_DROP = 0x0111, // B slot, B amount + PGMSG_EQUIP = 0x0112, // B slot + PGMSG_UNEQUIP = 0x0113, // B slot + PGMSG_MOVE_ITEM = 0x0114, // B slot1, B slot2, B amount + GPMSG_INVENTORY = 0x0120, // { B slot, W item id [, B amount] }* + GPMSG_INVENTORY_FULL = 0x0121, // { B slot, W item id [, B amount] }* + GPMSG_PLAYER_ATTRIBUTE_CHANGE = 0x0130, // { B attribute, W base value, W modified value }* + GPMSG_PLAYER_EXP_CHANGE = 0x0140, // { B skill, D exp got, D exp needed }* + GPMSG_LEVELUP = 0x0150, // W new level + GPMSG_LEVEL_PROGRESS = 0x0151, // B percent completed to next levelup + PGMSG_RAISE_ATTRIBUTE = 0x0160, // B attribute + GPMSG_RAISE_ATTRIBUTE_RESPONSE = 0x0161, // B error, B attribute + PGMSG_LOWER_ATTRIBUTE = 0x0170, // B attribute + GPMSG_LOWER_ATTRIBUTE_RESPONSE = 0x0171, // B error, B attribute + PGMSG_RESPAWN = 0x0180, // - + GPMSG_BEING_ENTER = 0x0200, // B type, W being id, B action, W*2 position + // player: S name, B hair style, B hair color, B gender, B item bitmask, { W item id }* + // monster: W type id + // npc: W type id + GPMSG_BEING_LEAVE = 0x0201, // W being id + GPMSG_ITEM_APPEAR = 0x0202, // W item id, W*2 position + GPMSG_BEING_LOOKS_CHANGE = 0x0210, // W weapon, W hat, W top clothes, W bottom clothes + PGMSG_WALK = 0x0260, // W*2 destination + PGMSG_ACTION_CHANGE = 0x0270, // B Action + GPMSG_BEING_ACTION_CHANGE = 0x0271, // W being id, B action + PGMSG_DIRECTION_CHANGE = 0x0272, // B Direction + GPMSG_BEING_DIR_CHANGE = 0x0273, // W being id, B direction + GPMSG_BEINGS_MOVE = 0x0280, // { W being id, B flags [, C position, B speed] [, W*2 destination] }* + GPMSG_ITEMS = 0x0281, // { W item id, W*2 position }* + PGMSG_ATTACK = 0x0290, // B direction + PGMSG_USE_SPECIAL = 0x0292, // B specialID + GPMSG_BEING_ATTACK = 0x0291, // W being id + PGMSG_SAY = 0x02A0, // S text + GPMSG_SAY = 0x02A1, // W being id, S text + GPMSG_NPC_CHOICE = 0x02B0, // W being id, { S text }* + GPMSG_NPC_MESSAGE = 0x02B1, // W being id, B* text + PGMSG_NPC_TALK = 0x02B2, // W being id + PGMSG_NPC_TALK_NEXT = 0x02B3, // W being id + PGMSG_NPC_SELECT = 0x02B4, // W being id, B choice + GPMSG_NPC_BUY = 0x02B5, // W being id, { W item id, W amount, W cost }* + GPMSG_NPC_SELL = 0x02B6, // W being id, { W item id, W amount, W cost }* + PGMSG_NPC_BUYSELL = 0x02B7, // W item id, W amount + GPMSG_NPC_ERROR = 0x02B8, // B error + GPMSG_NPC_POST = 0x02D0, // W being id + PGMSG_NPC_POST_SEND = 0x02D1, // S name, S text, W item id + GPMSG_NPC_POST_GET = 0x02D2, // W being id, { S name, S text, W item id } + PGMSG_TRADE_REQUEST = 0x02C0, // W being id + GPMSG_TRADE_REQUEST = 0x02C1, // W being id + GPMSG_TRADE_START = 0x02C2, // - + GPMSG_TRADE_COMPLETE = 0x02C3, // - + PGMSG_TRADE_CANCEL = 0x02C4, // - + GPMSG_TRADE_CANCEL = 0x02C5, // - + PGMSG_TRADE_ACCEPT = 0x02C6, // - + GPMSG_TRADE_ACCEPT = 0x02C7, // - + PGMSG_TRADE_ADD_ITEM = 0x02C8, // B slot, B amount + GPMSG_TRADE_ADD_ITEM = 0x02C9, // W item id, B amount + PGMSG_TRADE_SET_MONEY = 0x02CA, // L amount + GPMSG_TRADE_SET_MONEY = 0x02CB, // L amount + PGMSG_USE_ITEM = 0x0300, // B slot + GPMSG_USE_RESPONSE = 0x0301, // B error + GPMSG_BEINGS_DAMAGE = 0x0310, // { W being id, W amount }* + GPMSG_CREATE_EFFECT = 0x0320, // W effect id, W*2 position + + // Guild + PCMSG_GUILD_CREATE = 0x0350, // S name + CPMSG_GUILD_CREATE_RESPONSE = 0x0351, // B error, W guild, B rights, W channel + PCMSG_GUILD_INVITE = 0x0352, // W id, S name + CPMSG_GUILD_INVITE_RESPONSE = 0x0353, // B error + PCMSG_GUILD_ACCEPT = 0x0354, // W id + CPMSG_GUILD_ACCEPT_RESPONSE = 0x0355, // B error, W guild, B rights, W channel + PCMSG_GUILD_GET_MEMBERS = 0x0356, // W id + CPMSG_GUILD_GET_MEMBERS_RESPONSE = 0x0357, // S names, B online + CPMSG_GUILD_UPDATE_LIST = 0x0358, // W id, S name, B event + PCMSG_GUILD_QUIT = 0x0360, // W id + CPMSG_GUILD_QUIT_RESPONSE = 0x0361, // B error + PCMSG_GUILD_PROMOTE_MEMBER = 0x0365, // W guild, S name, B rights + CPMSG_GUILD_PROMOTE_MEMBER_RESPONSE = 0x0366, // B error + + CPMSG_GUILD_INVITED = 0x0370, // S char name, S guild name, W id + CPMSG_GUILD_REJOIN = 0x0371, // S name, W guild, W rights, W channel, S announce + + // Party + PCMSG_PARTY_INVITE = 0x03A0, // S name + CPMSG_PARTY_INVITE_RESPONSE = 0x03A1, // B error + CPMSG_PARTY_INVITED = 0x03A2, // S name + PCMSG_PARTY_ACCEPT_INVITE = 0x03A5, // S name + CPMSG_PARTY_ACCEPT_INVITE_RESPONSE = 0x03A6, // B error, { S name } + PCMSG_PARTY_QUIT = 0x03AA, // - + CPMSG_PARTY_QUIT_RESPONSE = 0x03AB, // B error + CPMSG_PARTY_NEW_MEMBER = 0x03B0, // W being id, S name + CPMSG_PARTY_MEMBER_LEFT = 0x03B1, // W being id + + // Chat + CPMSG_ERROR = 0x0401, // B error + CPMSG_ANNOUNCEMENT = 0x0402, // S text + CPMSG_PRIVMSG = 0x0403, // S user, S text + CPMSG_PUBMSG = 0x0404, // W channel, S user, S text + PCMSG_CHAT = 0x0410, // S text, W channel + PCMSG_ANNOUNCE = 0x0411, // S text + PCMSG_PRIVMSG = 0x0412, // S user, S text + // -- Channeling + CPMSG_CHANNEL_EVENT = 0x0430, // W channel, B event, S info + PCMSG_ENTER_CHANNEL = 0x0440, // S channel, S password + CPMSG_ENTER_CHANNEL_RESPONSE = 0x0441, // B error, W id, S name, S topic, S userlist + PCMSG_QUIT_CHANNEL = 0x0443, // W channel id + CPMSG_QUIT_CHANNEL_RESPONSE = 0x0444, // B error, W channel id + PCMSG_LIST_CHANNELS = 0x0445, // - + CPMSG_LIST_CHANNELS_RESPONSE = 0x0446, // S names, W number of users + PCMSG_LIST_CHANNELUSERS = 0x0460, // S channel + CPMSG_LIST_CHANNELUSERS_RESPONSE = 0x0461, // S channel, { S user, B mode } + PCMSG_TOPIC_CHANGE = 0x0462, // W channel id, S topic + // -- User mode + PCMSG_USER_MODE = 0x0465, // W channel id, S name, B mode + PCMSG_KICK_USER = 0x0466, // W channel id, S name + + XXMSG_INVALID = 0x7FFF +}; + +// Generic return values + +enum { + ERRMSG_OK = 0, // everything is fine + ERRMSG_FAILURE, // the action failed + ERRMSG_NO_LOGIN, // the user is not yet logged + ERRMSG_NO_CHARACTER_SELECTED, // the user needs a character + ERRMSG_INSUFFICIENT_RIGHTS, // the user is not privileged + ERRMSG_INVALID_ARGUMENT, // part of the received message was invalid + ERRMSG_EMAIL_ALREADY_EXISTS, // The Email Address already exists + ERRMSG_ALREADY_TAKEN, // name used was already taken + ERRMSG_SERVER_FULL, // the server is overloaded + ERRMSG_TIME_OUT // data failed to arrive in due time +}; + +// Login specific return values +enum { + LOGIN_INVALID_VERSION = 0x40, // the user is using an incompatible protocol + LOGIN_SERVER_FULL // the server is overloaded +}; + +// Account register specific return values +enum { + REGISTER_INVALID_VERSION = 0x40, // the user is using an incompatible protocol + REGISTER_EXISTS_USERNAME, // there already is an account with this username + REGISTER_EXISTS_EMAIL // there already is an account with this email address +}; + +// Character creation specific return values +enum { + CREATE_INVALID_HAIRSTYLE = 0x40, + CREATE_INVALID_HAIRCOLOR, + CREATE_INVALID_GENDER, + CREATE_RAW_STATS_TOO_HIGH, + CREATE_RAW_STATS_TOO_LOW, + CREATE_RAW_STATS_EQUAL_TO_ZERO, + CREATE_EXISTS_NAME, + CREATE_TOO_MUCH_CHARACTERS +}; + +// Character attribute modification specific return value +enum AttribmodResponseCode { + ATTRIBMOD_OK = ERRMSG_OK, + ATTRIBMOD_INVALID_ATTRIBUTE = 0x40, + ATTRIBMOD_NO_POINTS_LEFT, + ATTRIBMOD_DENIED +}; +// Object type enumeration +enum { + // A simple item + OBJECT_ITEM = 0, + // An item that can be activated (doors, switchs, sign, ...) + OBJECT_ACTOR, + // Non-Playable-Character is an actor capable of movement and maybe actions + OBJECT_NPC, + // A monster (moving actor with AI. able to toggle map/quest actions, too) + OBJECT_MONSTER, + // A player + OBJECT_PLAYER +}; + +// Moving object flags +enum { + // Payload contains the current position. + MOVING_POSITION = 1, + // Payload contains the destination. + MOVING_DESTINATION = 2 +}; + +// Email change specific return values +enum { + EMAILCHG_EXISTS_EMAIL = 0x40 +}; + +// Chat errors return values +enum { + CHAT_USING_BAD_WORDS = 0x40, + CHAT_UNHANDLED_COMMAND +}; + +// Chat channels event values +enum { + CHAT_EVENT_NEW_PLAYER = 0, + CHAT_EVENT_LEAVING_PLAYER, + CHAT_EVENT_TOPIC_CHANGE, + CHAT_EVENT_MODE_CHANGE, + CHAT_EVENT_KICKED_PLAYER +}; + +// Guild member event values +enum { + GUILD_EVENT_NEW_PLAYER = 0, + GUILD_EVENT_LEAVING_PLAYER, + GUILD_EVENT_ONLINE_PLAYER, + GUILD_EVENT_OFFLINE_PLAYER +}; + +#endif diff --git a/src/net/tmwserv/tradehandler.cpp b/src/net/tmwserv/tradehandler.cpp new file mode 100644 index 00000000..85228355 --- /dev/null +++ b/src/net/tmwserv/tradehandler.cpp @@ -0,0 +1,137 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "net/tmwserv/tradehandler.h" + +#include "net/tmwserv/gameserver/player.h" +#include "net/tmwserv/protocol.h" + +#include "net/messagein.h" + +#include "beingmanager.h" +#include "item.h" +#include "localplayer.h" + +#include "gui/chat.h" +#include "gui/confirm_dialog.h" +#include "gui/trade.h" + +std::string tradePartnerName; +int tradePartnerID; + +/** + * Listener for request trade dialogs + */ +namespace { + struct RequestTradeListener : public gcn::ActionListener + { + void action(const gcn::ActionEvent &event) + { + if (event.getId() == "yes") + Net::GameServer::Player::requestTrade(tradePartnerID); + else + Net::GameServer::Player::acceptTrade(false); + } + } listener; +} + +TradeHandler::TradeHandler(): + mAcceptTradeRequests(true) +{ + static const Uint16 _messages[] = { + GPMSG_TRADE_REQUEST, + GPMSG_TRADE_CANCEL, + GPMSG_TRADE_START, + GPMSG_TRADE_COMPLETE, + GPMSG_TRADE_ACCEPT, + GPMSG_TRADE_ADD_ITEM, + GPMSG_TRADE_SET_MONEY, + 0 + }; + handledMessages = _messages; +} + +void TradeHandler::setAcceptTradeRequests(bool acceptTradeRequests) +{ + mAcceptTradeRequests = acceptTradeRequests; + if (mAcceptTradeRequests) { + localChatTab->chatLog("Accepting incoming trade requests", BY_SERVER); + } else { + localChatTab->chatLog("Ignoring incoming trade requests", BY_SERVER); + } +} + +void TradeHandler::handleMessage(MessageIn &msg) +{ + switch (msg.getId()) + { + case GPMSG_TRADE_REQUEST: + { + Being *being = beingManager->findBeing(msg.readInt16()); + if (!being || !mAcceptTradeRequests) + { + Net::GameServer::Player::acceptTrade(false); + break; + } + player_node->setTrading(true); + tradePartnerName = being->getName(); + tradePartnerID = being->getId(); + ConfirmDialog *dlg = new ConfirmDialog("Request for trade", + tradePartnerName + " wants to trade with you, do you accept?"); + dlg->addActionListener(&listener); + } break; + + case GPMSG_TRADE_ADD_ITEM: + { + int type = msg.readInt16(); + int amount = msg.readInt8(); + tradeWindow->addItem(type, false, amount); + } break; + + case GPMSG_TRADE_SET_MONEY: + tradeWindow->setMoney(msg.readInt32()); + break; + + case GPMSG_TRADE_START: + tradeWindow->reset(); + tradeWindow->setCaption("Trading with " + tradePartnerName); + tradeWindow->setVisible(true); + break; + + case GPMSG_TRADE_ACCEPT: + tradeWindow->receivedOk(); + break; + + case GPMSG_TRADE_CANCEL: + localChatTab->chatLog("Trade canceled.", BY_SERVER); + tradeWindow->setVisible(false); + tradeWindow->reset(); + player_node->setTrading(false); + break; + + case GPMSG_TRADE_COMPLETE: + localChatTab->chatLog("Trade completed.", BY_SERVER); + tradeWindow->setVisible(false); + tradeWindow->reset(); + player_node->setTrading(false); + break; + } +} diff --git a/src/net/tmwserv/tradehandler.h b/src/net/tmwserv/tradehandler.h new file mode 100644 index 00000000..a064bbce --- /dev/null +++ b/src/net/tmwserv/tradehandler.h @@ -0,0 +1,53 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NET_TMWSERV_TRADEHANDLER_H +#define NET_TMWSERV_TRADEHANDLER_H + +#include "net/messagehandler.h" + +class TradeHandler : public MessageHandler +{ + public: + TradeHandler(); + + void handleMessage(MessageIn &msg); + + /** + * Returns whether trade requests are accepted. + * + * @see setAcceptTradeRequests + */ + bool acceptTradeRequests() const + { return mAcceptTradeRequests; } + + /** + * Sets whether trade requests are accepted. When set to false, trade + * requests are automatically denied. When true, a popup will ask the + * player whether he wants to trade. + */ + void setAcceptTradeRequests(bool acceptTradeRequests); + + private: + bool mAcceptTradeRequests; +}; + +#endif diff --git a/src/npc.cpp b/src/npc.cpp index a6d60dbb..d0a1a523 100644 --- a/src/npc.cpp +++ b/src/npc.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -29,19 +28,29 @@ #include "gui/npc_text.h" #include "gui/palette.h" +#ifdef TMWSERV_SUPPORT +#include "net/tmwserv/gameserver/player.h" +#else #include "net/messageout.h" -#include "net/protocol.h" +#include "net/ea/protocol.h" +#endif #include "resources/npcdb.h" -bool NPC::mTalking = false; +bool NPC::isTalking = false; int current_npc = 0; static const int NAME_X_OFFSET = 15; static const int NAME_Y_OFFSET = 30; +#ifdef TMWSERV_SUPPORT +NPC::NPC(Uint16 id, int job, Map *map): + Player(id, job, map) +#else NPC::NPC(int id, Uint16 job, Map *map, Network *network): - Player(id, job, map), mNetwork(network) + Player(id, job, map), + mNetwork(network) +#endif { NPCInfo info = NPCDB::get(job); @@ -110,18 +119,37 @@ Being::Type NPC::getType() const void NPC::talk() { - if (mTalking || !mNetwork) + if (isTalking) + return; + + isTalking = true; + +#ifdef TMWSERV_SUPPORT + Net::GameServer::Player::talkToNPC(mId, true); +#else + if (!mNetwork) return; - mTalking = true; MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_NPC_TALK); + //outMsg.writeInt16(CMSG_NPC_TALK); outMsg.writeInt32(mId); outMsg.writeInt8(0); +#endif } void NPC::updateCoords() { if (mName) - mName->adviseXY(mPx + NAME_X_OFFSET, mPy + NAME_Y_OFFSET); + { +#ifdef TMWSERV_SUPPORT + const Vector &pos = getPosition(); + const int px = (int) pos.x + NAME_X_OFFSET; + const int py = (int) pos.y + NAME_Y_OFFSET; +#else + const int px = mPx + NAME_X_OFFSET; + const int py = mPy + NAME_Y_OFFSET; +#endif + mName->adviseXY(px, py); + } } @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,14 +24,20 @@ #include "player.h" +#ifdef EATHENA_SUPPORT class Network; +#endif class Graphics; class Text; class NPC : public Player { public: +#ifdef TMWSERV_SUPPORT + NPC(Uint16 id, int sprite, Map *map); +#else NPC(int id, Uint16 job, Map *map, Network *network); +#endif ~NPC(); @@ -42,12 +47,25 @@ class NPC : public Player virtual Type getType() const; - void talk();; + void talk(); - static bool mTalking; + /** + * Gets the way an NPC is blocked by other things on the map + */ + virtual unsigned char getWalkMask() const + { return 0x83; } // blocked like a monster by walls, monsters and characters ( bin 1000 0011) + static bool isTalking; protected: + /** + * Gets the way a monster blocks pathfinding for other objects + */ + virtual Map::BlockType getBlockType() const + { return Map::BLOCKTYPE_CHARACTER; } //blocks like a player character + +#ifdef EATHENA_SUPPORT Network *mNetwork; +#endif void updateCoords(); private: Text *mName; diff --git a/src/openglgraphics.cpp b/src/openglgraphics.cpp index df8d264f..7a1d259e 100644 --- a/src/openglgraphics.cpp +++ b/src/openglgraphics.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,12 +26,12 @@ #include "resources/image.h" +#ifdef USE_OPENGL + #ifdef __APPLE__ #include <OpenGL/OpenGL.h> #endif -#ifdef USE_OPENGL - #ifndef GL_TEXTURE_RECTANGLE_ARB #define GL_TEXTURE_RECTANGLE_ARB 0x84F5 #define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 diff --git a/src/openglgraphics.h b/src/openglgraphics.h index a7181420..469e1f53 100644 --- a/src/openglgraphics.h +++ b/src/openglgraphics.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/particle.cpp b/src/particle.cpp index 0e412ada..21844f01 100644 --- a/src/particle.cpp +++ b/src/particle.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -250,7 +249,7 @@ void Particle::moveTo(float x, float y) moveTo(Vector(x, y, mPos.z)); } -Particle* Particle::addEffect(const std::string &particleEffectFile, +Particle *Particle::addEffect(const std::string &particleEffectFile, int pixelX, int pixelY, int rotation) { Particle *newParticle = NULL; diff --git a/src/particle.h b/src/particle.h index 76beb8d1..f3f5571a 100644 --- a/src/particle.h +++ b/src/particle.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,8 +19,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef _PARTICLE_H -#define _PARTICLE_H +#ifndef PARTICLE_H +#define PARTICLE_H #include <list> #include <string> diff --git a/src/particlecontainer.cpp b/src/particlecontainer.cpp index 0ebf4bc3..63f89079 100644 --- a/src/particlecontainer.cpp +++ b/src/particlecontainer.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,15 +24,17 @@ #include "particle.h" #include "particlecontainer.h" -ParticleContainer::ParticleContainer(ParticleContainer *parent, bool delParent) : + +ParticleContainer::ParticleContainer(ParticleContainer *parent, + bool delParent): mDelParent(delParent), mNext(parent) -{}; +{} ParticleContainer::~ParticleContainer() { clearLocally(); - if (mNext && mDelParent) + if (mDelParent) delete mNext; } @@ -52,10 +53,12 @@ void ParticleContainer::moveTo(float x, float y) // -- particle list ---------------------------------------- -ParticleList::ParticleList(ParticleContainer *parent, bool delParent) : - ParticleContainer(parent, delParent) {}; +ParticleList::ParticleList(ParticleContainer *parent, bool delParent): + ParticleContainer(parent, delParent) +{} -ParticleList::~ParticleList() {} +ParticleList::~ParticleList() +{} void ParticleList::addLocally(Particle *particle) { @@ -71,10 +74,12 @@ void ParticleList::removeLocally(Particle *particle) { for (std::list<Particle *>::iterator it = mElements.begin(); it != mElements.end(); it++) + { if (*it == particle) { (*it)->kill(); mElements.erase(it); } + } } void ParticleList::clearLocally() @@ -82,7 +87,7 @@ void ParticleList::clearLocally() for (std::list<Particle *>::iterator it = mElements.begin(); it != mElements.end(); it++) (*it)->kill(); - + mElements.clear(); } @@ -106,10 +111,12 @@ void ParticleList::moveTo(float x, float y) // -- particle vector ---------------------------------------- -ParticleVector::ParticleVector(ParticleContainer *parent, bool delParent) : - ParticleContainer(parent, delParent) {}; +ParticleVector::ParticleVector(ParticleContainer *parent, bool delParent): + ParticleContainer(parent, delParent) +{} -ParticleVector::~ParticleVector() {}; +ParticleVector::~ParticleVector() +{} void ParticleVector::setLocally(int index, Particle *particle) { @@ -120,6 +127,8 @@ void ParticleVector::setLocally(int index, Particle *particle) if (mIndexedElements.size() <= (unsigned) index) mIndexedElements.resize(index + 1, NULL); + if (particle) + particle->disableAutoDelete(); mIndexedElements[index] = particle; } @@ -149,7 +158,7 @@ void ParticleVector::moveTo(float x, float y) ParticleContainer::moveTo(x, y); for (std::vector<Particle *>::iterator it = mIndexedElements.begin(); - it != mIndexedElements.end(); it++) + it != mIndexedElements.end(); it++) { if (*it) { (*it)->moveTo(x, y); @@ -160,5 +169,6 @@ void ParticleVector::moveTo(float x, float y) *it = NULL; } } + } } diff --git a/src/particlecontainer.h b/src/particlecontainer.h index 1e2f8ff7..26539dd7 100644 --- a/src/particlecontainer.h +++ b/src/particlecontainer.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -61,8 +60,8 @@ public: virtual void moveTo(float x, float y); protected: - bool mDelParent; /**< Delete mNext in destructor */ - ParticleContainer *mNext; /**< Contained container, if any */ + bool mDelParent; /**< Delete mNext in destructor */ + ParticleContainer *mNext; /**< Contained container, if any */ }; /** @@ -89,7 +88,7 @@ public: virtual void moveTo(float x, float y); protected: - std::list<Particle *> mElements; /**< Contained particle effects */ + std::list<Particle *> mElements; /**< Contained particle effects */ }; /** diff --git a/src/particleemitter.cpp b/src/particleemitter.cpp index 84c4c1ec..25e6ade5 100644 --- a/src/particleemitter.cpp +++ b/src/particleemitter.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/particleemitter.h b/src/particleemitter.h index 835f39c5..67b35ae2 100644 --- a/src/particleemitter.h +++ b/src/particleemitter.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/particleemitterprop.h b/src/particleemitterprop.h index e3817763..e68ac222 100644 --- a/src/particleemitterprop.h +++ b/src/particleemitterprop.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/party.cpp b/src/party.cpp index a4f1b940..51a86360 100644 --- a/src/party.cpp +++ b/src/party.cpp @@ -1,8 +1,8 @@ /* - * Aethyra - * Copyright 2008 Lloyd Bryant <lloyd_bryant@netzero.net> + * The Mana World + * Copyright (C) 2008 Lloyd Bryant <lloyd_bryant@netzero.net> * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,17 +23,17 @@ #include "localplayer.h" #include "party.h" +#include "gui/widgets/chattab.h" #include "gui/chat.h" #include "gui/confirm_dialog.h" #include "net/messageout.h" -#include "net/protocol.h" +#include "net/ea/protocol.h" #include "utils/gettext.h" #include "utils/strprintf.h" -Party::Party(ChatWindow *chat, Network *network) : - mChat(chat), +Party::Party(Network *network) : mNetwork(network), mInviteListener(network, &mInParty) { @@ -53,7 +53,7 @@ void Party::respond(const std::string &command, const std::string &args) } if (command == "settings") { - mChat->chatLog(_("Not yet implemented!"), BY_SERVER); + localChatTab->chatLog(_("Not yet implemented!"), BY_SERVER); return; /* MessageOut outMsg(mNetwork); @@ -62,14 +62,14 @@ void Party::respond(const std::string &command, const std::string &args) outMsg.writeInt16(0); // Item */ } - mChat->chatLog(_("Party command not known."), BY_SERVER); + localChatTab->chatLog(_("Party command not known."), BY_SERVER); } void Party::create(const std::string &party) { if (party.empty()) { - mChat->chatLog(_("Party name is missing."), BY_SERVER); + localChatTab->chatLog(_("Party name is missing."), BY_SERVER); return; } MessageOut outMsg(mNetwork); @@ -82,7 +82,7 @@ void Party::leave(const std::string &args) { MessageOut outMsg(mNetwork); outMsg.writeInt16(CMSG_PARTY_LEAVE); - mChat->chatLog(_("Left party."), BY_SERVER); + localChatTab->chatLog(_("Left party."), BY_SERVER); mInParty = false; } @@ -90,12 +90,12 @@ void Party::createResponse(bool ok) { if (ok) { - mChat->chatLog(_("Party successfully created."), BY_SERVER); + localChatTab->chatLog(_("Party successfully created."), BY_SERVER); mInParty = true; } else { - mChat->chatLog(_("Could not create party."), BY_SERVER); + localChatTab->chatLog(_("Could not create party."), BY_SERVER); } } @@ -104,15 +104,15 @@ void Party::inviteResponse(const std::string &nick, int status) switch (status) { case 0: - mChat->chatLog(strprintf(_("%s is already a member of a party."), + localChatTab->chatLog(strprintf(_("%s is already a member of a party."), nick.c_str()), BY_SERVER); break; case 1: - mChat->chatLog(strprintf(_("%s refused your invitation."), + localChatTab->chatLog(strprintf(_("%s refused your invitation."), nick.c_str()), BY_SERVER); break; case 2: - mChat->chatLog(strprintf(_("%s is now a member of your party."), + localChatTab->chatLog(strprintf(_("%s is now a member of your party."), nick.c_str()), BY_SERVER); break; } @@ -124,7 +124,7 @@ void Party::invitedAsk(const std::string &nick, int gender, mPartyName = partyName; /* Quick and nasty - needs redoing */ if (nick.empty()) { - mChat->chatLog(_("You can\'t have a blank party name!"), BY_SERVER); + localChatTab->chatLog(_("You can\'t have a blank party name!"), BY_SERVER); return; } mCreating = false; @@ -147,7 +147,7 @@ void Party::InviteListener::action(const gcn::ActionEvent &event) void Party::leftResponse(const std::string &nick) { - mChat->chatLog(strprintf(_("%s has left your party."), nick.c_str()), + localChatTab->chatLog(strprintf(_("%s has left your party."), nick.c_str()), BY_SERVER); } @@ -159,47 +159,50 @@ void Party::receiveChat(Being *being, const std::string &msg) } if (being->getType() != Being::PLAYER) { - mChat->chatLog(_("Party chat received, but being is not a player"), + localChatTab->chatLog(_("Party chat received, but being is not a player"), BY_SERVER); return; } being->setSpeech(msg, SPEECH_TIME); - mChat->chatLog(being->getName() + " : " + msg, BY_PARTY); + localChatTab->chatLog(being->getName() + " : " + msg, BY_PARTY); } -void Party::help(const std::string &msg) +void Party::help(const std::string &args) { + // Strip "party " from the front + std::string msg = args.substr(6, args.length()); + if (msg.empty()) { - mChat->chatLog(_("Command: /party <command> <args>"), BY_SERVER); - mChat->chatLog(_("where <command> can be one of:"), BY_SERVER); - mChat->chatLog(_(" /new"), BY_SERVER); - mChat->chatLog(_(" /create"), BY_SERVER); - mChat->chatLog(_(" /prefix"), BY_SERVER); - mChat->chatLog(_(" /leave"), BY_SERVER); - mChat->chatLog(_("This command implements the partying function."), + localChatTab->chatLog(_("Command: /party <command> <args>"), BY_SERVER); + localChatTab->chatLog(_("where <command> can be one of:"), BY_SERVER); + localChatTab->chatLog(_(" /new"), BY_SERVER); + localChatTab->chatLog(_(" /create"), BY_SERVER); + localChatTab->chatLog(_(" /prefix"), BY_SERVER); + localChatTab->chatLog(_(" /leave"), BY_SERVER); + localChatTab->chatLog(_("This command implements the partying function."), BY_SERVER); - mChat->chatLog(_("Type /help party <command> for further help."), + localChatTab->chatLog(_("Type /help party <command> for further help."), BY_SERVER); return; } if (msg == "new" || msg == "create") { - mChat->chatLog(_("Command: /party new <party-name>"), BY_SERVER); - mChat->chatLog(_("Command: /party create <party-name>"), BY_SERVER); - mChat->chatLog(_("These commands create a new party <party-name."), + localChatTab->chatLog(_("Command: /party new <party-name>"), BY_SERVER); + localChatTab->chatLog(_("Command: /party create <party-name>"), BY_SERVER); + localChatTab->chatLog(_("These commands create a new party <party-name."), BY_SERVER); return; } if (msg == "prefix") { - mChat->chatLog(_("Command: /party prefix <prefix-char>"), BY_SERVER); - mChat->chatLog(_("This command sets the party prefix character."), + localChatTab->chatLog(_("Command: /party prefix <prefix-char>"), BY_SERVER); + localChatTab->chatLog(_("This command sets the party prefix character."), BY_SERVER); - mChat->chatLog(_("Any message preceded by <prefix-char> is sent to " + localChatTab->chatLog(_("Any message preceded by <prefix-char> is sent to " "the party instead of everyone."), BY_SERVER); - mChat->chatLog(_("Command: /party prefix"), BY_SERVER); - mChat->chatLog(_("This command reports the current party prefix " + localChatTab->chatLog(_("Command: /party prefix"), BY_SERVER); + localChatTab->chatLog(_("This command reports the current party prefix " "character."), BY_SERVER); return; } @@ -207,11 +210,11 @@ void Party::help(const std::string &msg) //if (msg == "info") if (msg == "leave") { - mChat->chatLog(_("Command: /party leave"), BY_SERVER); - mChat->chatLog(_("This command causes the player to leave the party."), + localChatTab->chatLog(_("Command: /party leave"), BY_SERVER); + localChatTab->chatLog(_("This command causes the player to leave the party."), BY_SERVER); return; } - mChat->chatLog(_("Unknown /party command."), BY_SERVER); - mChat->chatLog(_("Type /help party for a list of options."), BY_SERVER); + localChatTab->chatLog(_("Unknown /party command."), BY_SERVER); + localChatTab->chatLog(_("Type /help party for a list of options."), BY_SERVER); } diff --git a/src/party.h b/src/party.h index 0a19ae1d..d73b4a0f 100644 --- a/src/party.h +++ b/src/party.h @@ -1,8 +1,8 @@ /* - * Aethyra - * Copyright 2008 Lloyd Bryant <lloyd_bryant@netzero.net> + * The Mana World + * Copyright (C) 2008 Lloyd Bryant <lloyd_bryant@netzero.net> * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ class Network; class Party { public: - Party(ChatWindow *chat, Network *network); + Party(Network *network); void respond(const std::string &command, const std::string &args); void create(const std::string &party); @@ -47,10 +47,9 @@ class Party void leftResponse(const std::string &nick); void receiveChat(Being *being, const std::string &msg); - void help(const std::string &msg); + void help(const std::string &args); private: - ChatWindow *mChat; std::string mPartyName; Network *mNetwork; bool mInParty; @@ -73,4 +72,6 @@ class Party InviteListener mInviteListener; }; +extern Party *playerParty; + #endif diff --git a/src/player.cpp b/src/player.cpp index ba4ed1ff..de4a012b 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,6 +21,9 @@ #include "animatedsprite.h" #include "game.h" +#ifdef TMWSERV_SUPPORT +#include "guild.h" +#endif #include "localplayer.h" #include "particle.h" #include "player.h" @@ -31,6 +33,7 @@ #include "resources/colordb.h" #include "resources/itemdb.h" +#include "resources/iteminfo.h" #include "utils/strprintf.h" @@ -72,6 +75,7 @@ void Player::setName(const std::string &name) } } +#ifdef EATHENA_SUPPORT void Player::logic() { switch (mAction) @@ -89,7 +93,7 @@ void Player::logic() break; case WALK: - mFrame = (get_elapsed_time(mWalkTime) * 6) / mWalkSpeed; + mFrame = (get_elapsed_time(mWalkTime) * 6) / getWalkSpeed(); if (mFrame >= 6) nextStep(); @@ -137,6 +141,7 @@ void Player::logic() Being::logic(); } +#endif Being::Type Player::getType() const { @@ -183,7 +188,7 @@ void Player::setHairStyle(int style, int color) setAction(mAction); } -void Player::setSprite(int slot, int id, std::string color) +void Player::setSprite(int slot, int id, const std::string &color) { // id = 0 means unequip if (id == 0) @@ -191,8 +196,10 @@ void Player::setSprite(int slot, int id, std::string color) delete mSprites[slot]; mSprites[slot] = NULL; +#ifdef EATHENA_SUPPORT if (slot == WEAPON_SPRITE) mEquippedWeapon = NULL; +#endif } else { @@ -229,3 +236,55 @@ void Player::updateCoords() mName->adviseXY(mPx + NAME_X_OFFSET, mPy + NAME_Y_OFFSET); } +#ifdef TMWSERV_SUPPORT + +Guild* Player::addGuild(short guildId, short rights) +{ + Guild *guild = new Guild(guildId, rights); + mGuilds.insert(std::pair<int, Guild*>(guildId, guild)); + return guild; +} + +void Player::removeGuild(int id) +{ + mGuilds.erase(id); +} + +Guild* Player::getGuild(const std::string &guildName) +{ + std::map<int, Guild*>::iterator itr, itr_end = mGuilds.end(); + for (itr = mGuilds.begin(); itr != itr_end; ++itr) + { + Guild *guild = itr->second; + if (guild->getName() == guildName) + { + return guild; + } + } + + return NULL; +} + +Guild* Player::getGuild(int id) +{ + std::map<int, Guild*>::iterator itr; + itr = mGuilds.find(id); + if (itr != mGuilds.end()) + { + return itr->second; + } + + return NULL; +} + +short Player::getNumberOfGuilds() +{ + return mGuilds.size(); +} + +void Player::setInParty(bool value) +{ + mInParty = value; +} + +#endif diff --git a/src/player.h b/src/player.h index b815b829..1904c6d9 100644 --- a/src/player.h +++ b/src/player.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,6 +27,9 @@ class FlashText; class Graphics; class Map; +#ifdef TMWSERV_SUPPORT +class Guild; +#endif /** * A player being. Players have their name drawn beneath them. This class also @@ -37,6 +39,9 @@ class Map; class Player : public Being { public: + /** + * Constructor. + */ Player(int id, int job, Map *map); ~Player(); @@ -46,7 +51,9 @@ class Player : public Being */ virtual void setName(const std::string &name); +#ifdef EATHENA_SUPPORT virtual void logic(); +#endif virtual Type getType() const; @@ -67,17 +74,76 @@ class Player : public Being /** * Sets visible equipments for this player. */ - virtual void setSprite(int slot, int id, std::string color = ""); + virtual void setSprite(int slot, int id, const std::string &color = ""); /** * Flash the player's name */ void flash(int time); +#ifdef TMWSERV_SUPPORT + /** + * Adds a guild to the player. + */ + Guild* addGuild(short guildId, short rights); + + /** + * Removers a guild from the player. + */ + void removeGuild(int id); + + /** + * Returns a pointer to the specified guild. + */ + Guild* getGuild(const std::string &guildName); + + /** + * Returns a pointer to the guild with matching id. + */ + Guild* getGuild(int id); + + /** + * Get number of guilds the player belongs to. + */ + short getNumberOfGuilds(); + + /** + * Set the player in party + */ + void setInParty(bool value); + + /** + * Returns whether player is in the party + */ + bool getInParty() const { return mInParty; } +#endif + + /** + * Gets the way the character is blocked by other objects. + */ + virtual unsigned char getWalkMask() const + { return 0x82; } // blocked by walls and monsters (bin 1000 0010) + protected: + /** + * Gets the way the monster blocks pathfinding for other objects. + */ + virtual Map::BlockType getBlockType() const + { return Map::BLOCKTYPE_CHARACTER; } + virtual void updateCoords(); +#ifdef TMWSERV_SUPPORT + // Character guild information + std::map<int, Guild*> mGuilds; +#endif + FlashText *mName; + +#ifdef TMWSERV_SUPPORT + private: + bool mInParty; +#endif }; #endif diff --git a/src/player_relations.cpp b/src/player_relations.cpp index eec4153c..ef2ef1bc 100644 --- a/src/player_relations.cpp +++ b/src/player_relations.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -352,8 +351,6 @@ private: -static std::vector<PlayerIgnoreStrategy *> player_ignore_strategies; - std::vector<PlayerIgnoreStrategy *> * PlayerRelationsManager::getPlayerIgnoreStrategies() { diff --git a/src/player_relations.h b/src/player_relations.h index f4860e08..a6c6a115 100644 --- a/src/player_relations.h +++ b/src/player_relations.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -95,7 +94,6 @@ class PlayerRelationsManager { public: PlayerRelationsManager(); - ~PlayerRelationsManager(); /** diff --git a/src/position.cpp b/src/position.cpp index f370f27b..69d50476 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/position.h b/src/position.h index 1c961c46..cbcf8c99 100644 --- a/src/position.h +++ b/src/position.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/properties.h b/src/properties.h index ad5af1d6..a2ce5b88 100644 --- a/src/properties.h +++ b/src/properties.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -46,7 +45,8 @@ class Properties * @return the value of the given property or the given default when it * doesn't exist. */ - const std::string& getProperty(const std::string &name, const std::string &def = "") const + const std::string &getProperty(const std::string &name, + const std::string &def = "") const { PropertyMap::const_iterator i = mProperties.find(name); return (i != mProperties.end()) ? i->second : def; @@ -60,7 +60,7 @@ class Properties * @return the value of the given property, or 0.0f when it doesn't * exist. */ - float getFloatProperty(std::string const &name, float def = 0.0f) const + float getFloatProperty(const std::string &name, float def = 0.0f) const { PropertyMap::const_iterator i = mProperties.find(name); float ret = def; diff --git a/src/resources/action.cpp b/src/resources/action.cpp index 27369def..7bd7c54f 100644 --- a/src/resources/action.cpp +++ b/src/resources/action.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,10 +19,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "action.h" -#include "animation.h" +#include "resources/action.h" -#include "../utils/dtor.h" +#include "resources/animation.h" + +#include "utils/dtor.h" Action::Action() { diff --git a/src/resources/action.h b/src/resources/action.h index 8dde068c..387f1b14 100644 --- a/src/resources/action.h +++ b/src/resources/action.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,19 +34,13 @@ class Animation; class Action { public: - /** - * Constructor. - */ Action(); - /** - * Destructor. - */ ~Action(); void setAnimation(int direction, Animation *animation); - Animation* getAnimation(int direction) const; + Animation *getAnimation(int direction) const; protected: typedef std::map<int, Animation*> Animations; diff --git a/src/resources/ambientoverlay.cpp b/src/resources/ambientoverlay.cpp index 9585f4f7..93c7c3e1 100644 --- a/src/resources/ambientoverlay.cpp +++ b/src/resources/ambientoverlay.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,10 +19,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "ambientoverlay.h" -#include "image.h" +#include "resources/ambientoverlay.h" -#include "../graphics.h" +#include "resources/image.h" + +#include "graphics.h" AmbientOverlay::AmbientOverlay(Image *img, float parallax, float speedX, float speedY): diff --git a/src/resources/ambientoverlay.h b/src/resources/ambientoverlay.h index 142dfd2f..756d0eb7 100644 --- a/src/resources/ambientoverlay.h +++ b/src/resources/ambientoverlay.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,17 +31,14 @@ class AmbientOverlay /** * Constructor. * - * @param img the image this overlay displays - * @param parallax scroll factor based on camera position - * @param speedX scrolling speed in x-direction - * @param speedY scrolling speed in y-direction + * @param img the image this overlay displays + * @param parallax scroll factor based on camera position + * @param speedX scrolling speed in x-direction + * @param speedY scrolling speed in y-direction */ AmbientOverlay(Image *img, float parallax, float speedX, float speedY); - /** - * Destructor. - */ ~AmbientOverlay(); void update(int timePassed, float dx, float dy); diff --git a/src/resources/animation.cpp b/src/resources/animation.cpp index 901f4f25..40a2687f 100644 --- a/src/resources/animation.cpp +++ b/src/resources/animation.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,16 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "animation.h" +#include "resources/animation.h" -#include "../utils/dtor.h" +#include "utils/dtor.h" Animation::Animation(): mDuration(0) { } -void Animation::addFrame(Image *image, unsigned int delay, int offsetX, int offsetY) +void Animation::addFrame(Image *image, unsigned int delay, + int offsetX, int offsetY) { Frame frame = { image, delay, offsetX, offsetY }; mFrames.push_back(frame); diff --git a/src/resources/animation.h b/src/resources/animation.h index bc8431c7..f309dbf8 100644 --- a/src/resources/animation.h +++ b/src/resources/animation.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,15 +46,13 @@ struct Frame class Animation { public: - /** - * Constructor. - */ Animation(); /** * Appends a new animation at the end of the sequence. */ - void addFrame(Image *image, unsigned int delay, int offsetX, int offsetY); + void addFrame(Image *image, unsigned int delay, + int offsetX, int offsetY); /** * Appends an animation terminator that states that the animation @@ -66,7 +63,7 @@ class Animation /** * Returns the frame at the specified index. */ - Frame* getFrame(int index) { return &(mFrames[index]); } + Frame *getFrame(int index) { return &(mFrames[index]); } /** * Returns the length of this animation in frames. diff --git a/src/resources/colordb.cpp b/src/resources/colordb.cpp index c9252a8a..af498297 100644 --- a/src/resources/colordb.cpp +++ b/src/resources/colordb.cpp @@ -1,8 +1,8 @@ /* - * Color Database - * Copyright 2008 Aethyra Development Team + * Color database + * Copyright (C) 2008 Aethyra Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,17 +15,17 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <libxml/tree.h> +#include "resources/colordb.h" -#include "colordb.h" +#include "log.h" -#include "../log.h" +#include "utils/xml.h" -#include "../utils/xml.h" +#include <libxml/tree.h> #define HAIR_COLOR_FILE "colors.xml" #define TMW_COLOR_FILE "hair.xml" @@ -96,7 +96,7 @@ void ColorDB::unload() mLoaded = false; } -std::string& ColorDB::get(int id) +std::string &ColorDB::get(int id) { if (!mLoaded) load(); diff --git a/src/resources/colordb.h b/src/resources/colordb.h index d4568d54..92b63d77 100644 --- a/src/resources/colordb.h +++ b/src/resources/colordb.h @@ -1,8 +1,8 @@ /* - * Color Database - * Copyright 2008 Aethyra Development Team + * Color database + * Copyright (C) 2008 Aethyra Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,8 +15,8 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef COLOR_MANAGER_H @@ -26,7 +26,7 @@ #include <string> /** - * The class that holds the color information. + * Color information database. */ namespace ColorDB { @@ -40,13 +40,13 @@ namespace ColorDB */ void unload(); - std::string& get(int id); + std::string &get(int id); int size(); // Color DB typedef std::map<int, std::string> Colors; typedef Colors::iterator ColorIterator; -}; +} #endif diff --git a/src/resources/dye.cpp b/src/resources/dye.cpp index 35a8ca89..aa4d6835 100644 --- a/src/resources/dye.cpp +++ b/src/resources/dye.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,18 +19,22 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <sstream> +#include "resources/dye.h" -#include "dye.h" +#include "log.h" -#include "../log.h" +#include <sstream> DyePalette::DyePalette(const std::string &description) { int size = description.length(); - if (size == 0 || description[0] != '#') + if (size == 0) + return; + if (description[0] != '#') + { // TODO: load palette from file. return; + } int pos = 1; for (;;) diff --git a/src/resources/dye.h b/src/resources/dye.h index f39ba043..d0d010bc 100644 --- a/src/resources/dye.h +++ b/src/resources/dye.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/resources/emotedb.cpp b/src/resources/emotedb.cpp index ec87c5cd..3ee40f0e 100644 --- a/src/resources/emotedb.cpp +++ b/src/resources/emotedb.cpp @@ -1,8 +1,8 @@ /* * Emote database - * Copyright 2009 Aethyra Development Team + * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,16 +15,16 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "emotedb.h" +#include "resources/emotedb.h" -#include "../animatedsprite.h" -#include "../log.h" +#include "animatedsprite.h" +#include "log.h" -#include "../utils/xml.h" +#include "utils/xml.h" namespace { @@ -138,13 +138,13 @@ const EmoteInfo *EmoteDB::get(int id) } } -const AnimatedSprite* EmoteDB::getAnimation(int id) +const AnimatedSprite *EmoteDB::getAnimation(int id) { const EmoteInfo *info = get(id); return info->sprites.front()->sprite; } -const int& EmoteDB::getLast() +const int &EmoteDB::getLast() { return mLastEmote; } diff --git a/src/resources/emotedb.h b/src/resources/emotedb.h index 48e1d53c..375887d2 100644 --- a/src/resources/emotedb.h +++ b/src/resources/emotedb.h @@ -1,8 +1,8 @@ /* * Emote database - * Copyright 2009 Aethyra Development Team + * Copyright (C) 2009 Aethyra Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,8 +15,8 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef EMOTE_DB_H @@ -55,7 +55,7 @@ namespace EmoteDB const AnimatedSprite *getAnimation(int id); - const int& getLast(); + const int &getLast(); typedef EmoteInfos::iterator EmoteInfosIterator; } diff --git a/src/resources/image.cpp b/src/resources/image.cpp index cff40197..0c542a8b 100644 --- a/src/resources/image.cpp +++ b/src/resources/image.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,13 +19,13 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <SDL_image.h> +#include "resources/image.h" + +#include "resources/dye.h" -#include "dye.h" -#include "image.h" +#include "log.h" -#include "../log.h" -#include "../position.h" +#include <SDL_image.h> #ifdef USE_OPENGL bool Image::mUseOpenGL = false; @@ -316,7 +315,7 @@ void Image::setAlpha(float a) } } -Image* Image::merge(Image* image, const Position& pos) +Image* Image::merge(Image *image, int x, int y) { SDL_Surface* surface = new SDL_Surface(*(image->mImage)); @@ -326,20 +325,20 @@ Image* Image::merge(Image* image, const Position& pos) SDL_PixelFormat *current_fmt = mImage->format; SDL_PixelFormat *surface_fmt = surface->format; int current_offset, surface_offset; - Position offset(0, 0); + int offset_x, offset_y; SDL_LockSurface(surface); SDL_LockSurface(mImage); // for each pixel lines of a source image - for (offset.x = (pos.x > 0 ? 0 : -pos.x); offset.x < image->getWidth() && - pos.x + offset.x < getWidth(); offset.x++) + for (offset_x = (x > 0 ? 0 : -x); offset_x < image->getWidth() && + x + offset_x < getWidth(); offset_x++) { - for (offset.y = (pos.y > 0 ? 0 : -pos.y); offset.y < image->getHeight() - && pos.y + offset.y < getHeight(); offset.y++) + for (offset_y = (y > 0 ? 0 : -y); offset_y < image->getHeight() + && y + offset_y < getHeight(); offset_y++) { // Computing offset on both images - current_offset = (pos.y + offset.y) * getWidth() + pos.x + offset.x; - surface_offset = offset.y * surface->w + offset.x; + current_offset = (y + offset_y) * getWidth() + x + offset_x; + surface_offset = offset_y * surface->w + offset_x; // Retrieving a pixel to merge surface_pix = ((Uint32*) surface->pixels)[surface_offset]; @@ -386,12 +385,12 @@ Image* Image::merge(Image* image, const Position& pos) SDL_UnlockSurface(surface); SDL_UnlockSurface(mImage); - Image* newImage = new Image(surface); + Image *newImage = new Image(surface); return newImage; } -float Image::getAlpha() +float Image::getAlpha() const { return mAlpha; } diff --git a/src/resources/image.h b/src/resources/image.h index f6b77f26..3cfb9216 100644 --- a/src/resources/image.h +++ b/src/resources/image.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,9 +22,11 @@ #ifndef IMAGE_H #define IMAGE_H -#include <SDL.h> +#include "main.h" + +#include "resources/resource.h" -#include "../main.h" +#include <SDL.h> #ifdef USE_OPENGL @@ -38,12 +39,8 @@ #include <SDL_opengl.h> #endif -#include "resource.h" - class Dye; class Position; -class SDL_Rect; -class SDL_Surface; /** * Defines a class for loading and storing images. @@ -123,7 +120,7 @@ class Image : public Resource /** * Returns the alpha value of this image. */ - float getAlpha(); + float getAlpha() const; #ifdef USE_OPENGL /** @@ -140,7 +137,7 @@ class Image : public Resource * improve overall framerates. Don't use unless you are using it to * reduce the number of overall layers that need to be drawn through SDL. */ - Image* merge(Image* image, const Position& pos); + Image *merge(Image *image, int x, int y); protected: /** diff --git a/src/resources/imageloader.cpp b/src/resources/imageloader.cpp index fe420e89..694c57af 100644 --- a/src/resources/imageloader.cpp +++ b/src/resources/imageloader.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,14 +19,15 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <cassert> +#include "resources/imageloader.h" + +#include "resources/image.h" +#include "resources/resourcemanager.h" #include <guichan/color.hpp> #include <guichan/sdl/sdlpixel.hpp> -#include "image.h" -#include "imageloader.h" -#include "resourcemanager.h" +#include <cassert> ProxyImage::ProxyImage(SDL_Surface *s): mImage(NULL), mSDLImage(s) @@ -88,7 +88,7 @@ void ProxyImage::convertToDisplayFormat() mSDLImage = NULL; } -gcn::Image *ImageLoader::load(std::string const &filename, bool convert) +gcn::Image *ImageLoader::load(const std::string &filename, bool convert) { ResourceManager *resman = ResourceManager::getInstance(); ProxyImage *i = new ProxyImage(resman->loadSDLSurface(filename)); diff --git a/src/resources/imageloader.h b/src/resources/imageloader.h index 2695b99c..d3207715 100644 --- a/src/resources/imageloader.h +++ b/src/resources/imageloader.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,11 +22,11 @@ #ifndef IMAGELOADER_H #define IMAGELOADER_H -#include <string> - #include <guichan/image.hpp> #include <guichan/imageloader.hpp> +#include <string> + class Image; struct SDL_Surface; @@ -36,6 +35,7 @@ class ProxyImage : public gcn::Image public: ProxyImage(SDL_Surface *); ~ProxyImage(); + void free(); int getWidth() const; int getHeight() const; @@ -62,7 +62,8 @@ class ProxyImage : public gcn::Image class ImageLoader : public gcn::ImageLoader { public: - gcn::Image *load(std::string const &filename, bool convertToDisplayFormat); + gcn::Image *load(const std::string &filename, + bool convertToDisplayFormat); }; #endif diff --git a/src/resources/imageset.cpp b/src/resources/imageset.cpp index 33be1573..0c836134 100644 --- a/src/resources/imageset.cpp +++ b/src/resources/imageset.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,12 +19,13 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "image.h" -#include "imageset.h" +#include "resources/imageset.h" -#include "../log.h" +#include "resources/image.h" -#include "../utils/dtor.h" +#include "log.h" + +#include "utils/dtor.h" ImageSet::ImageSet(Image *img, int width, int height) { diff --git a/src/resources/imageset.h b/src/resources/imageset.h index ad209aaf..f4464017 100644 --- a/src/resources/imageset.h +++ b/src/resources/imageset.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,9 +22,9 @@ #ifndef IMAGESET_H #define IMAGESET_H -#include <vector> +#include "resources/resource.h" -#include "resource.h" +#include <vector> class Image; @@ -35,7 +34,7 @@ class Image; class ImageSet : public Resource { public: - /* + /** * Cuts the passed image in a grid of sub images. */ ImageSet(Image *img, int w, int h); @@ -48,12 +47,12 @@ class ImageSet : public Resource /** * Returns the width of the images in the image set. */ - int getWidth() const { return mWidth; }; + int getWidth() const { return mWidth; } /** * Returns the height of the images in the image set. */ - int getHeight() const { return mHeight; }; + int getHeight() const { return mHeight; } typedef std::vector<Image*>::size_type size_type; Image* get(size_type i) const; diff --git a/src/resources/imagewriter.cpp b/src/resources/imagewriter.cpp index 854753c1..097e0c05 100644 --- a/src/resources/imagewriter.cpp +++ b/src/resources/imagewriter.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,14 +19,14 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "resources/imagewriter.h" + +#include "log.h" + #include <png.h> #include <SDL.h> #include <string> -#include "imagewriter.h" - -#include "../log.h" - bool ImageWriter::writePNG(SDL_Surface *surface, const std::string &filename) { // TODO Maybe someone can make this look nice? diff --git a/src/resources/imagewriter.h b/src/resources/imagewriter.h index c69eb2d3..a9133846 100644 --- a/src/resources/imagewriter.h +++ b/src/resources/imagewriter.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,6 +19,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include <iosfwd> + struct SDL_Surface; class ImageWriter diff --git a/src/resources/itemdb.cpp b/src/resources/itemdb.cpp index 49913300..db919b64 100644 --- a/src/resources/itemdb.cpp +++ b/src/resources/itemdb.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,18 +19,22 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <cassert> +#include "resources/itemdb.h" -#include <libxml/tree.h> +#include "resources/iteminfo.h" +#include "resources/resourcemanager.h" -#include "itemdb.h" +#include "log.h" -#include "../log.h" +#include "utils/dtor.h" +#include "utils/gettext.h" +#include "utils/strprintf.h" +#include "utils/stringutils.h" +#include "utils/xml.h" -#include "../utils/dtor.h" -#include "../utils/gettext.h" -#include "../utils/stringutils.h" -#include "../utils/xml.h" +#include <libxml/tree.h> + +#include <cassert> namespace { @@ -45,6 +48,48 @@ namespace static void loadSpriteRef(ItemInfo *itemInfo, xmlNodePtr node); static void loadSoundRef(ItemInfo *itemInfo, xmlNodePtr node); +static char const *const fields[][2] = +{ + { "attack", N_("Attack %+d") }, + { "defense", N_("Defense %+d") }, + { "hp", N_("HP %+d") }, + { "mp", N_("MP %+d") } +}; + +static ItemType itemTypeFromString(const std::string &name, int id = 0) +{ + if (name=="generic") return ITEM_UNUSABLE; + else if (name=="usable") return ITEM_USABLE; + else if (name=="equip-1hand") return ITEM_EQUIPMENT_ONE_HAND_WEAPON; + else if (name=="equip-2hand") return ITEM_EQUIPMENT_TWO_HANDS_WEAPON; + else if (name=="equip-torso") return ITEM_EQUIPMENT_TORSO; + else if (name=="equip-arms") return ITEM_EQUIPMENT_ARMS; + else if (name=="equip-head") return ITEM_EQUIPMENT_HEAD; + else if (name=="equip-legs") return ITEM_EQUIPMENT_LEGS; + else if (name=="equip-shield") return ITEM_EQUIPMENT_SHIELD; + else if (name=="equip-ring") return ITEM_EQUIPMENT_RING; + else if (name=="equip-necklace") return ITEM_EQUIPMENT_NECKLACE; + else if (name=="equip-feet") return ITEM_EQUIPMENT_FEET; + else if (name=="equip-ammo") return ITEM_EQUIPMENT_AMMO; + else return ITEM_UNUSABLE; +} + +static WeaponType weaponTypeFromString(const std::string &name, int id = 0) +{ + if (name=="knife") return WPNTYPE_KNIFE; + else if (name=="sword") return WPNTYPE_SWORD; + else if (name=="polearm") return WPNTYPE_POLEARM; + else if (name=="staff") return WPNTYPE_STAFF; + else if (name=="whip") return WPNTYPE_WHIP; + else if (name=="bow") return WPNTYPE_BOW; + else if (name=="shooting") return WPNTYPE_SHOOTING; + else if (name=="mace") return WPNTYPE_MACE; + else if (name=="axe") return WPNTYPE_AXE; + else if (name=="thrown") return WPNTYPE_THROWN; + + else return WPNTYPE_NONE; +} + void ItemDB::load() { if (mLoaded) @@ -52,7 +97,7 @@ void ItemDB::load() logger->log("Initializing item database..."); - mUnknown = new ItemInfo(); + mUnknown = new ItemInfo; mUnknown->setName(_("Unknown item")); mUnknown->setImageName(""); mUnknown->setSprite("error.xml", GENDER_MALE); @@ -83,61 +128,81 @@ void ItemDB::load() logger->log("ItemDB: Redefinition of item ID %d", id); } - std::string type = XML::getProperty(node, "type", "other"); + std::string typeStr = XML::getProperty(node, "type", "other"); int weight = XML::getProperty(node, "weight", 0); int view = XML::getProperty(node, "view", 0); std::string name = XML::getProperty(node, "name", ""); std::string image = XML::getProperty(node, "image", ""); std::string description = XML::getProperty(node, "description", ""); - std::string effect = XML::getProperty(node, "effect", ""); +#ifdef TMWSERV_SUPPORT + int weaponType = weaponTypeFromString(XML::getProperty(node, "weapon-type", "")); +#else int weaponType = XML::getProperty(node, "weapon_type", 0); +#endif + int attackRange = XML::getProperty(node, "attack-range", 0); + + ItemInfo *itemInfo = new ItemInfo; + itemInfo->setId(id); + itemInfo->setImageName(image); + itemInfo->setName(name.empty() ? _("Unnamed") : name); + itemInfo->setDescription(description); +#ifdef TMWSERV_SUPPORT + int type = itemTypeFromString(typeStr); + itemInfo->setType(type); +#else + itemInfo->setType(typeStr); +#endif + itemInfo->setView(view); + itemInfo->setWeight(weight); + itemInfo->setWeaponType(weaponType); + itemInfo->setAttackRange(attackRange); + +#ifdef TMWSERV_SUPPORT + std::string effect; + for (int i = 0; i < int(sizeof(fields) / sizeof(fields[0])); ++i) + { + int value = XML::getProperty(node, fields[i][0], 0); + if (!value) continue; + if (!effect.empty()) effect += " / "; + effect += strprintf(gettext(fields[i][1]), value); + } +#else + std::string effect = XML::getProperty(node, "effect", ""); +#endif + itemInfo->setEffect(effect); - if (id) + + for_each_xml_child_node(itemChild, node) { - ItemInfo *itemInfo = new ItemInfo; - itemInfo->setId(id); - itemInfo->setImageName(image); - itemInfo->setName(name.empty() ? _("Unnamed") : name); - itemInfo->setDescription(description); - itemInfo->setEffect(effect); - itemInfo->setType(type); - itemInfo->setView(view); - itemInfo->setWeight(weight); - itemInfo->setWeaponType(weaponType); - - for_each_xml_child_node(itemChild, node) + if (xmlStrEqual(itemChild->name, BAD_CAST "sprite")) { - if (xmlStrEqual(itemChild->name, BAD_CAST "sprite")) - { - std::string attackParticle = XML::getProperty( - itemChild, "particle-effect", ""); - itemInfo->setParticleEffect(attackParticle); - - loadSpriteRef(itemInfo, itemChild); - } - else if (xmlStrEqual(itemChild->name, BAD_CAST "sound")) - { - loadSoundRef(itemInfo, itemChild); - } + std::string attackParticle = XML::getProperty( + itemChild, "particle-effect", ""); + itemInfo->setParticleEffect(attackParticle); + + loadSpriteRef(itemInfo, itemChild); } + else if (xmlStrEqual(itemChild->name, BAD_CAST "sound")) + { + loadSoundRef(itemInfo, itemChild); + } + } + + mItemInfos[id] = itemInfo; + if (!name.empty()) + { + std::string temp = name; + toLower(trim(temp)); - mItemInfos[id] = itemInfo; - if (!name.empty()) + NamedItemInfoIterator itr = mNamedItemInfos.find(temp); + if (itr == mNamedItemInfos.end()) + { + mNamedItemInfos[temp] = itemInfo; + } + else { - std::string temp = name; - toLower(trim(temp)); - - NamedItemInfoIterator itr = mNamedItemInfos.find(temp); - if (itr == mNamedItemInfos.end()) - { - mNamedItemInfos[temp] = itemInfo; - } - else - { - logger->log("ItemDB: Duplicate name of item found item %d", - id); - } + logger->log("ItemDB: Duplicate name of item found item %d", id); } } diff --git a/src/resources/itemdb.h b/src/resources/itemdb.h index 1e55f146..aa5edab5 100644 --- a/src/resources/itemdb.h +++ b/src/resources/itemdb.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,13 +23,12 @@ #define ITEM_MANAGER_H #include <map> - -#include "iteminfo.h" +#include <string> class ItemInfo; /** - * The namespace that holds the item information. + * Item information database. */ namespace ItemDB { @@ -44,8 +42,8 @@ namespace ItemDB */ void unload(); - const ItemInfo& get(int id); - const ItemInfo& get(const std::string &name); + const ItemInfo &get(int id); + const ItemInfo &get(const std::string &name); // Items database typedef std::map<int, ItemInfo*> ItemInfos; diff --git a/src/resources/iteminfo.cpp b/src/resources/iteminfo.cpp index 8dcb1c32..63b0c00e 100644 --- a/src/resources/iteminfo.cpp +++ b/src/resources/iteminfo.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,10 +19,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "itemdb.h" -#include "iteminfo.h" +#include "resources/iteminfo.h" -const std::string& ItemInfo::getSprite(Gender gender) const +#include "resources/itemdb.h" + +const std::string &ItemInfo::getSprite(Gender gender) const { if (mView) { @@ -45,6 +45,26 @@ void ItemInfo::setWeaponType(int type) // See server item.hpp file for type values. switch (type) { +#ifdef TMWSERV_SUPPORT + case WPNTYPE_NONE: + mAttackType = ACTION_DEFAULT; + break; + case WPNTYPE_KNIFE: + case WPNTYPE_SWORD: + mAttackType = ACTION_ATTACK_STAB; + break; + case WPNTYPE_THROWN: + mAttackType = ACTION_ATTACK_THROW; + break; + case WPNTYPE_BOW: + mAttackType = ACTION_ATTACK_BOW; + break; + case WPNTYPE_POLEARM: + mAttackType = ACTION_ATTACK_SWING; + break; + default: + mAttackType = ACTION_ATTACK; +#else case 0: // none mAttackType = ACTION_DEFAULT; break; @@ -63,6 +83,7 @@ void ItemInfo::setWeaponType(int type) break; default: mAttackType = ACTION_ATTACK; +#endif } } @@ -71,7 +92,7 @@ void ItemInfo::addSound(EquipmentSoundEvent event, const std::string &filename) mSounds[event].push_back("sfx/" + filename); } -const std::string& ItemInfo::getSound(EquipmentSoundEvent event) const +const std::string &ItemInfo::getSound(EquipmentSoundEvent event) const { static const std::string empty; std::map< EquipmentSoundEvent, std::vector<std::string> >::const_iterator i; diff --git a/src/resources/iteminfo.h b/src/resources/iteminfo.h index 0ea59050..bcee1fbd 100644 --- a/src/resources/iteminfo.h +++ b/src/resources/iteminfo.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,20 +22,88 @@ #ifndef ITEMINFO_H #define ITEMINFO_H +#include "resources/spritedef.h" + +#include "being.h" + #include <map> #include <string> #include <vector> -#include "spritedef.h" - -#include "../being.h" - enum EquipmentSoundEvent { EQUIP_EVENT_STRIKE, EQUIP_EVENT_HIT }; +enum EquipmentSlot +{ + // Equipment rules: + // 1 Brest equipment + EQUIP_TORSO_SLOT = 0, + // 1 arms equipment + EQUIP_ARMS_SLOT = 1, + // 1 head equipment + EQUIP_HEAD_SLOT = 2, + // 1 legs equipment + EQUIP_LEGS_SLOT = 3, + // 1 feet equipment + EQUIP_FEET_SLOT = 4, + // 2 rings + EQUIP_RING1_SLOT = 5, + EQUIP_RING2_SLOT = 6, + // 1 necklace + EQUIP_NECKLACE_SLOT = 7, + // Fight: + // 2 one-handed weapons + // or 1 two-handed weapon + // or 1 one-handed weapon + 1 shield. + EQUIP_FIGHT1_SLOT = 8, + EQUIP_FIGHT2_SLOT = 9, + // Projectile: + // this item does not amount to one, it only indicates the chosen projectile. + EQUIP_PROJECTILE_SLOT = 10 +}; + + +/** + * Enumeration of available Item types. + */ +enum ItemType +{ + ITEM_UNUSABLE = 0, + ITEM_USABLE, // 1 + ITEM_EQUIPMENT_ONE_HAND_WEAPON, // 2 + ITEM_EQUIPMENT_TWO_HANDS_WEAPON,// 3 + ITEM_EQUIPMENT_TORSO,// 4 + ITEM_EQUIPMENT_ARMS,// 5 + ITEM_EQUIPMENT_HEAD,// 6 + ITEM_EQUIPMENT_LEGS,// 7 + ITEM_EQUIPMENT_SHIELD,// 8 + ITEM_EQUIPMENT_RING,// 9 + ITEM_EQUIPMENT_NECKLACE,// 10 + ITEM_EQUIPMENT_FEET,// 11 + ITEM_EQUIPMENT_AMMO// 12 +}; + +/** + * Enumeration of available weapon's types. + */ +enum WeaponType +{ + WPNTYPE_NONE = 0, + WPNTYPE_KNIFE, + WPNTYPE_SWORD, + WPNTYPE_POLEARM, + WPNTYPE_STAFF, + WPNTYPE_WHIP, + WPNTYPE_BOW, + WPNTYPE_SHOOTING, + WPNTYPE_MACE, + WPNTYPE_AXE, + WPNTYPE_THROWN +}; + /** * Defines a class for storing item infos. This includes information used when * the item is equipped. @@ -48,7 +115,9 @@ class ItemInfo * Constructor. */ ItemInfo(): - mType(""), +#ifdef TMWSERV_SUPPORT + mType(ITEM_UNUSABLE), +#endif mWeight(0), mView(0), mAttackType(ACTION_DEFAULT) @@ -64,7 +133,7 @@ class ItemInfo void setName(const std::string &name) { mName = name; } - const std::string& getName() const + const std::string &getName() const { return mName; } void setParticleEffect(const std::string &particleEffect) @@ -75,24 +144,32 @@ class ItemInfo void setImageName(const std::string &imageName) { mImageName = imageName; } - const std::string& getImageName() const + const std::string &getImageName() const { return mImageName; } void setDescription(const std::string &description) { mDescription = description; } - const std::string& getDescription() const + const std::string &getDescription() const { return mDescription; } void setEffect(const std::string &effect) { mEffect = effect; } - const std::string& getEffect() const { return mEffect; } + const std::string &getEffect() const { return mEffect; } - void setType(const std::string& type) +#ifdef TMWSERV_SUPPORT + void setType(short type) { mType = type; } - const std::string& getType() const { return mType; } + short getType() const + { return mType; } +#else + void setType(const std::string &type) + { mType = type; } + + const std::string &getType() const { return mType; } +#endif void setWeight(short weight) { mWeight = weight; } @@ -106,23 +183,33 @@ class ItemInfo void setSprite(const std::string &animationFile, Gender gender) { mAnimationFiles[gender] = animationFile; } - const std::string& getSprite(Gender gender) const; + const std::string &getSprite(Gender gender) const; void setWeaponType(int); SpriteAction getAttackType() const { return mAttackType; } + int getAttackRange() const + { return mAttackRange; } + + void setAttackRange(int r) + { mAttackRange = r; } + void addSound(EquipmentSoundEvent event, const std::string &filename); - const std::string& getSound(EquipmentSoundEvent event) const; + const std::string &getSound(EquipmentSoundEvent event) const; protected: std::string mImageName; /**< The filename of the icon image. */ std::string mName; std::string mDescription; /**< Short description. */ std::string mEffect; /**< Description of effects. */ +#ifdef TMWSERV_SUPPORT + char mType; /**< Item type. */ +#else std::string mType; /**< Item type. */ +#endif std::string mParticle; /**< Particle effect used with this item */ short mWeight; /**< Weight in grams. */ int mView; /**< Item ID of how this item looks. */ @@ -130,6 +217,7 @@ class ItemInfo // Equipment related members SpriteAction mAttackType; /**< Attack type, in case of weapon. */ + int mAttackRange; /**< Attack range, will be zero if non weapon. */ /** Maps gender to sprite filenames. */ std::map<int, std::string> mAnimationFiles; diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp index e40acd77..50d7cf67 100644 --- a/src/resources/mapreader.cpp +++ b/src/resources/mapreader.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,22 +19,22 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <cassert> -#include <iostream> -#include <zlib.h> +#include "resources/animation.h" +#include "resources/image.h" +#include "resources/mapreader.h" +#include "resources/resourcemanager.h" -#include "animation.h" -#include "image.h" -#include "mapreader.h" -#include "resourcemanager.h" +#include "log.h" +#include "map.h" +#include "tileset.h" -#include "../log.h" -#include "../map.h" -#include "../tileset.h" +#include "utils/base64.h" +#include "utils/stringutils.h" +#include "utils/xml.h" -#include "../utils/base64.h" -#include "../utils/stringutils.h" -#include "../utils/xml.h" +#include <cassert> +#include <iostream> +#include <zlib.h> const unsigned int DEFAULT_TILE_WIDTH = 32; const unsigned int DEFAULT_TILE_HEIGHT = 32; @@ -311,7 +310,8 @@ static void setTile(Map *map, MapLayer *layer, int x, int y, int gid) layer->setTile(x, y, img); } else { // Set collision tile - map->setWalk(x, y, (!set || (gid - set->getFirstGid() == 0))); + if (set && (gid - set->getFirstGid() != 0)) + map->blockTile(x, y, Map::BLOCKTYPE_WALL); } } @@ -361,12 +361,12 @@ void MapReader::readLayer(xmlNodePtr node, Map *map) xmlNodePtr dataChild = childNode->xmlChildrenNode; if (!dataChild) continue; - + int len = strlen((const char*)dataChild->content) + 1; unsigned char *charData = new unsigned char[len + 1]; const char *charStart = (const char*)dataChild->content; unsigned char *charIndex = charData; - + while (*charStart) { if (*charStart != ' ' && *charStart != '\t' && *charStart != '\n') @@ -428,10 +428,10 @@ void MapReader::readLayer(xmlNodePtr node, Map *map) } } else { - // Read plain XML map file - for_each_xml_child_node(childNode2, childNode) - { - if (!xmlStrEqual(childNode2->name, BAD_CAST "tile")) + // Read plain XML map file + for_each_xml_child_node(childNode2, childNode) + { + if (!xmlStrEqual(childNode2->name, BAD_CAST "tile")) continue; const int gid = XML::getProperty(childNode2, "gid", -1); @@ -445,12 +445,12 @@ void MapReader::readLayer(xmlNodePtr node, Map *map) } } } - + if (y < h) std::cerr << "TOO SMALL!\n"; if (x) std::cerr << "TOO SMALL!\n"; - + // There can be only one data element break; } @@ -524,7 +524,7 @@ Tileset *MapReader::readTileset(xmlNodePtr node, // create animation if (!set) continue; - Animation *ani = new Animation(); + Animation *ani = new Animation; for (int i = 0; ;i++) { std::map<std::string, int>::iterator iFrame, iDelay; diff --git a/src/resources/mapreader.h b/src/resources/mapreader.h index 2f64aa8c..0ed553c3 100644 --- a/src/resources/mapreader.h +++ b/src/resources/mapreader.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/resources/monsterdb.cpp b/src/resources/monsterdb.cpp index b1965989..7bbf9288 100644 --- a/src/resources/monsterdb.cpp +++ b/src/resources/monsterdb.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,14 +19,15 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "monsterdb.h" -#include "monsterinfo.h" +#include "resources/monsterdb.h" -#include "../log.h" +#include "resources/monsterinfo.h" -#include "../utils/dtor.h" -#include "../utils/gettext.h" -#include "../utils/xml.h" +#include "log.h" + +#include "utils/dtor.h" +#include "utils/gettext.h" +#include "utils/xml.h" namespace { @@ -62,7 +62,7 @@ void MonsterDB::load() continue; } - MonsterInfo *currentInfo = new MonsterInfo(); + MonsterInfo *currentInfo = new MonsterInfo; currentInfo->setName(XML::getProperty(monsterNode, "name", _("unnamed"))); @@ -96,8 +96,7 @@ void MonsterDB::load() currentInfo->addSprite( (const char*) spriteNode->xmlChildrenNode->content); } - - if (xmlStrEqual(spriteNode->name, BAD_CAST "sound")) + else if (xmlStrEqual(spriteNode->name, BAD_CAST "sound")) { std::string event = XML::getProperty(spriteNode, "event", ""); const char *filename; @@ -127,15 +126,16 @@ void MonsterDB::load() currentInfo->getName().c_str()); } } - - if (xmlStrEqual(spriteNode->name, BAD_CAST "attack")) + else if (xmlStrEqual(spriteNode->name, BAD_CAST "attack")) { - std::string event = XML::getProperty( + const int id = XML::getProperty(spriteNode, "id", 0); + const std::string particleEffect = XML::getProperty( spriteNode, "particle-effect", ""); - currentInfo->addAttackParticleEffect(event); + SpriteAction spriteAction = SpriteDef::makeSpriteAction( + XML::getProperty(spriteNode, "action", "attack")); + currentInfo->addMonsterAttack(id, particleEffect, spriteAction); } - - if (xmlStrEqual(spriteNode->name, BAD_CAST "particlefx")) + else if (xmlStrEqual(spriteNode->name, BAD_CAST "particlefx")) { currentInfo->addParticleEffect( (const char*) spriteNode->xmlChildrenNode->content); diff --git a/src/resources/monsterdb.h b/src/resources/monsterdb.h index e49901d5..27536ffc 100644 --- a/src/resources/monsterdb.h +++ b/src/resources/monsterdb.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,7 +35,7 @@ namespace MonsterDB void unload(); - const MonsterInfo& get(int id); + const MonsterInfo &get(int id); typedef std::map<int, MonsterInfo*> MonsterInfos; typedef MonsterInfos::iterator MonsterInfoIterator; diff --git a/src/resources/monsterinfo.cpp b/src/resources/monsterinfo.cpp index 725e9cf5..06a6d3b6 100644 --- a/src/resources/monsterinfo.cpp +++ b/src/resources/monsterinfo.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,13 +19,12 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "monsterinfo.h" +#include "resources/monsterinfo.h" -#include "../utils/dtor.h" +#include "utils/dtor.h" MonsterInfo::MonsterInfo() { - } MonsterInfo::~MonsterInfo() @@ -36,7 +34,7 @@ MonsterInfo::~MonsterInfo() mSounds.clear(); } -void MonsterInfo::addSound(MonsterSoundEvent event, std::string filename) +void MonsterInfo::addSound(MonsterSoundEvent event, const std::string &filename) { if (mSounds.find(event) == mSounds.end()) { @@ -46,24 +44,41 @@ void MonsterInfo::addSound(MonsterSoundEvent event, std::string filename) mSounds[event]->push_back("sfx/" + filename); } +const std::string &MonsterInfo::getSound(MonsterSoundEvent event) const +{ + static std::string empty(""); + std::map<MonsterSoundEvent, std::vector<std::string>* >::const_iterator i = + mSounds.find(event); + return (i == mSounds.end()) ? empty : + i->second->at(rand() % i->second->size()); +} -std::string MonsterInfo::getSound(MonsterSoundEvent event) const +const std::string &MonsterInfo::getAttackParticleEffect(int attackType) const { - std::map<MonsterSoundEvent, std::vector<std::string>* >::const_iterator i; + static std::string empty(""); + std::map<int, MonsterAttack*>::const_iterator i = + mMonsterAttacks.find(attackType); + return (i == mMonsterAttacks.end()) ? empty : (*i).second->particleEffect; +} - i = mSounds.find(event); +SpriteAction MonsterInfo::getAttackAction(int attackType) const +{ + std::map<int, MonsterAttack*>::const_iterator i = + mMonsterAttacks.find(attackType); + return (i == mMonsterAttacks.end()) ? ACTION_ATTACK : (*i).second->action; +} - if (i == mSounds.end()) - { - return ""; - } - else - { - return i->second->at(rand()%i->second->size()); - } +void MonsterInfo::addMonsterAttack(int id, + const std::string &particleEffect, + SpriteAction action) +{ + MonsterAttack *a = new MonsterAttack; + a->particleEffect = particleEffect; + a->action = action; + mMonsterAttacks[id] = a; } -void MonsterInfo::addParticleEffect(std::string filename) +void MonsterInfo::addParticleEffect(const std::string &filename) { mParticleEffects.push_back(filename); } diff --git a/src/resources/monsterinfo.h b/src/resources/monsterinfo.h index 4a3208f4..f8dce13f 100644 --- a/src/resources/monsterinfo.h +++ b/src/resources/monsterinfo.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,13 +22,13 @@ #ifndef MONSTERINFO_H #define MONSTERINFO_H +#include "being.h" + #include <list> #include <map> #include <string> #include <vector> -#include "../being.h" - enum MonsterSoundEvent { MONSTER_EVENT_HIT, @@ -38,6 +37,12 @@ enum MonsterSoundEvent MONSTER_EVENT_DIE }; +struct MonsterAttack +{ + std::string particleEffect; + SpriteAction action; +}; + /** * Holds information about a certain type of monster. This includes the name * of the monster, the sprite to display and the sounds the monster makes. @@ -47,28 +52,23 @@ enum MonsterSoundEvent class MonsterInfo { public: - /** - * Constructor. - */ MonsterInfo(); - /** - * Destructor. - */ ~MonsterInfo(); - void setName(std::string name) { mName = name; } + void setName(const std::string &name) { mName = name; } - void addSprite(std::string filename) { mSprites.push_back(filename); } + void addSprite(const std::string &filename) + { mSprites.push_back(filename); } void setTargetCursorSize(Being::TargetCursorSize targetCursorSize) { mTargetCursorSize = targetCursorSize; } - void addSound(MonsterSoundEvent event, std::string filename); + void addSound(MonsterSoundEvent event, const std::string &filename); - void addParticleEffect(std::string filename); + void addParticleEffect(const std::string &filename); - const std::string& getName() const + const std::string &getName() const { return mName; } const std::list<std::string>& getSprites() const @@ -77,23 +77,26 @@ class MonsterInfo Being::TargetCursorSize getTargetCursorSize() const { return mTargetCursorSize; } - std::string getSound(MonsterSoundEvent event) const; + const std::string &getSound(MonsterSoundEvent event) const; + + void addMonsterAttack(int id, + const std::string &particleEffect, + SpriteAction action); - std::string getAttackParticleEffect() const { return mAttackParticle; } + const std::string &getAttackParticleEffect(int attackType) const; - void addAttackParticleEffect(const std::string &particleEffect) - { mAttackParticle = particleEffect; } + SpriteAction getAttackAction(int attackType) const; const std::list<std::string>& getParticleEffects() const { return mParticleEffects; } private: std::string mName; - std::string mAttackParticle; std::list<std::string> mSprites; Being::TargetCursorSize mTargetCursorSize; std::map<MonsterSoundEvent, std::vector<std::string>* > mSounds; + std::map<int, MonsterAttack*> mMonsterAttacks; std::list<std::string> mParticleEffects; }; -#endif +#endif // MONSTERINFO_H diff --git a/src/resources/music.cpp b/src/resources/music.cpp index 72094025..5937f96b 100644 --- a/src/resources/music.cpp +++ b/src/resources/music.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,9 +19,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "music.h" +#include "resources/music.h" -#include "../log.h" +#include "log.h" Music::Music(Mix_Chunk *music): mChunk(music), diff --git a/src/resources/music.h b/src/resources/music.h index f89c0fb2..88ef93d0 100644 --- a/src/resources/music.h +++ b/src/resources/music.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,12 +22,13 @@ #ifndef MUSIC_H #define MUSIC_H +#include "resources/resource.h" + #ifdef __APPLE__ #include <SDL_mixer/SDL_mixer.h> #else #include <SDL_mixer.h> #endif -#include "resource.h" /** * Defines a class for loading and storing music. diff --git a/src/resources/npcdb.cpp b/src/resources/npcdb.cpp index 3e9decf1..6a880faa 100644 --- a/src/resources/npcdb.cpp +++ b/src/resources/npcdb.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,12 +19,12 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "npcdb.h" +#include "resources/npcdb.h" -#include "../log.h" +#include "log.h" -#include "../utils/gettext.h" -#include "../utils/xml.h" +#include "utils/gettext.h" +#include "utils/xml.h" namespace { diff --git a/src/resources/npcdb.h b/src/resources/npcdb.h index 394154fa..af6764bf 100644 --- a/src/resources/npcdb.h +++ b/src/resources/npcdb.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/resources/resource.cpp b/src/resources/resource.cpp index ca9a69c3..86e85c9b 100644 --- a/src/resources/resource.cpp +++ b/src/resources/resource.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,10 +19,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <cassert> +#include "resources/resource.h" + +#include "resources/resourcemanager.h" -#include "resource.h" -#include "resourcemanager.h" +#include <cassert> Resource::~Resource() { diff --git a/src/resources/resource.h b/src/resources/resource.h index f8822d72..5b70c720 100644 --- a/src/resources/resource.h +++ b/src/resources/resource.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -56,8 +55,8 @@ class Resource /** * Return the path identifying this resource. */ - const std::string& - getIdPath() { return mIdPath; } + const std::string &getIdPath() const + { return mIdPath; } protected: /** diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp index d6ab39a0..33d5e3e5 100644 --- a/src/resources/resourcemanager.cpp +++ b/src/resources/resourcemanager.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,6 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "resources/resourcemanager.h" + +#include "resources/dye.h" +#include "resources/image.h" +#include "resources/imageset.h" +#include "resources/music.h" +#include "resources/soundeffect.h" +#include "resources/spritedef.h" + +#include "log.h" + #include <cassert> #include <physfs.h> #include <SDL_image.h> @@ -27,16 +37,6 @@ #include <sys/time.h> -#include "dye.h" -#include "image.h" -#include "imageset.h" -#include "music.h" -#include "resourcemanager.h" -#include "soundeffect.h" -#include "spritedef.h" - -#include "../log.h" - ResourceManager *ResourceManager::instance = NULL; ResourceManager::ResourceManager() @@ -214,7 +214,7 @@ std::string ResourceManager::getPath(const std::string &file) return path; } -Resource *ResourceManager::get(std::string const &idPath, generator fun, +Resource *ResourceManager::get(const std::string &idPath, generator fun, void *data) { // Check if the id exists, and return the value if it does. @@ -266,7 +266,7 @@ struct ResourceLoader } }; -Resource *ResourceManager::load(std::string const &path, loader fun) +Resource *ResourceManager::load(const std::string &path, loader fun) { ResourceLoader l = { this, path, fun }; return get(path, ResourceLoader::load, &l); @@ -308,7 +308,7 @@ struct DyedImageLoader } }; -Image *ResourceManager::getImage(std::string const &idPath) +Image *ResourceManager::getImage(const std::string &idPath) { DyedImageLoader l = { this, idPath }; return static_cast<Image*>(get(idPath, DyedImageLoader::load, &l)); @@ -350,8 +350,7 @@ struct SpriteDefLoader } }; -SpriteDef *ResourceManager::getSprite - (std::string const &path, int variant) +SpriteDef *ResourceManager::getSprite(const std::string &path, int variant) { SpriteDefLoader l = { path, variant }; std::stringstream ss; @@ -380,7 +379,8 @@ void ResourceManager::release(Resource *res) ResourceManager *ResourceManager::getInstance() { // Create a new instance if necessary. - if (instance == NULL) instance = new ResourceManager(); + if (!instance) + instance = new ResourceManager; return instance; } @@ -441,7 +441,7 @@ std::vector<std::string> ResourceManager::loadTextFile(const std::string &fileNa return lines; } -SDL_Surface *ResourceManager::loadSDLSurface(const std::string& filename) +SDL_Surface *ResourceManager::loadSDLSurface(const std::string &filename) { int fileSize; void *buffer = loadFile(filename, fileSize); diff --git a/src/resources/resourcemanager.h b/src/resources/resourcemanager.h index 10f6fffe..828c5b0a 100644 --- a/src/resources/resourcemanager.h +++ b/src/resources/resourcemanager.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -116,7 +115,7 @@ class ResourceManager * @return A valid resource or <code>NULL</code> if the resource could * not be generated. */ - Resource *get(std::string const &idPath, generator fun, void *data); + Resource *get(const std::string &idPath, generator fun, void *data); /** * Loads a resource from a file and adds it to the resource map. @@ -126,7 +125,7 @@ class ResourceManager * @return A valid resource or <code>NULL</code> if the resource could * not be loaded. */ - Resource *load(std::string const &path, loader fun); + Resource *load(const std::string &path, loader fun); /** * Convenience wrapper around ResourceManager::get for loading @@ -156,7 +155,7 @@ class ResourceManager * Creates a sprite definition based on a given path and the supplied * variant. */ - SpriteDef *getSprite(std::string const &path, int variant = 0); + SpriteDef *getSprite(const std::string &path, int variant = 0); /** * Releases a resource, placing it in the set of orphaned resources. @@ -184,7 +183,7 @@ class ResourceManager * Loads the given filename as an SDL surface. The returned surface is * expected to be freed by the caller using SDL_FreeSurface. */ - SDL_Surface *loadSDLSurface(const std::string& filename); + SDL_Surface *loadSDLSurface(const std::string &filename); /** * Returns an instance of the class, creating one if it does not diff --git a/src/resources/soundeffect.cpp b/src/resources/soundeffect.cpp index d1d24afb..bdb393ff 100644 --- a/src/resources/soundeffect.cpp +++ b/src/resources/soundeffect.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,9 +19,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "soundeffect.h" +#include "resources/soundeffect.h" -#include "../log.h" +#include "log.h" SoundEffect::~SoundEffect() { diff --git a/src/resources/soundeffect.h b/src/resources/soundeffect.h index fe14df02..dd5d166f 100644 --- a/src/resources/soundeffect.h +++ b/src/resources/soundeffect.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,14 +22,14 @@ #ifndef SOUND_EFFECT_H #define SOUND_EFFECT_H +#include "resources/resource.h" + #ifdef __APPLE__ #include <SDL_mixer/SDL_mixer.h> #else #include <SDL_mixer.h> #endif -#include "resource.h" - /** * Defines a class for loading and storing sound effects. */ @@ -73,4 +72,4 @@ class SoundEffect : public Resource Mix_Chunk *mChunk; }; -#endif +#endif // SOUND_EFFECT_H diff --git a/src/resources/spritedef.cpp b/src/resources/spritedef.cpp index d6cc8960..30d8e778 100644 --- a/src/resources/spritedef.cpp +++ b/src/resources/spritedef.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,20 +19,22 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <set> +#include "resources/spritedef.h" + +#include "resources/action.h" +#include "resources/animation.h" +#include "resources/dye.h" +#include "resources/image.h" +#include "resources/imageset.h" +#include "resources/resourcemanager.h" -#include "action.h" -#include "animation.h" -#include "dye.h" -#include "image.h" -#include "imageset.h" -#include "resourcemanager.h" -#include "spritedef.h" +#include "log.h" -#include "../log.h" -#include "../utils/xml.h" +#include "utils/xml.h" + +#include <set> -Action* SpriteDef::getAction(SpriteAction action) const +Action *SpriteDef::getAction(SpriteAction action) const { Actions::const_iterator i = mActions.find(action); @@ -46,7 +47,7 @@ Action* SpriteDef::getAction(SpriteAction action) const return i->second; } -SpriteDef *SpriteDef::load(std::string const &animationFile, int variant) +SpriteDef *SpriteDef::load(const std::string &animationFile, int variant) { std::string::size_type pos = animationFile.find('|'); std::string palettes; @@ -121,7 +122,7 @@ void SpriteDef::loadSprite(xmlNodePtr spriteNode, int variant, } } -void SpriteDef::loadImageSet(xmlNodePtr node, std::string const &palettes) +void SpriteDef::loadImageSet(xmlNodePtr node, const std::string &palettes) { const std::string name = XML::getProperty(node, "name", ""); @@ -167,7 +168,7 @@ void SpriteDef::loadAction(xmlNodePtr node, int variant_offset) actionName.c_str(), getIdPath().c_str()); return; } - Action *action = new Action(); + Action *action = new Action; mActions[actionType] = action; // When first action set it as default direction @@ -201,7 +202,7 @@ void SpriteDef::loadAnimation(xmlNodePtr animationNode, return; } - Animation *animation = new Animation(); + Animation *animation = new Animation; action->setAnimation(directionType, animation); // Get animation frames @@ -320,7 +321,7 @@ SpriteDef::~SpriteDef() } } -SpriteAction SpriteDef::makeSpriteAction(const std::string& action) +SpriteAction SpriteDef::makeSpriteAction(const std::string &action) { if (action.empty() || action == "default") { return ACTION_DEFAULT; @@ -349,6 +350,36 @@ SpriteAction SpriteDef::makeSpriteAction(const std::string& action) else if (action == "attack_throw") { return ACTION_ATTACK_THROW; } + else if (action == "special0") { + return ACTION_SPECIAL_0; + } + else if (action == "special1") { + return ACTION_SPECIAL_1; + } + else if (action == "special2") { + return ACTION_SPECIAL_2; + } + else if (action == "special3") { + return ACTION_SPECIAL_3; + } + else if (action == "special4") { + return ACTION_SPECIAL_4; + } + else if (action == "special5") { + return ACTION_SPECIAL_5; + } + else if (action == "special6") { + return ACTION_SPECIAL_6; + } + else if (action == "special7") { + return ACTION_SPECIAL_7; + } + else if (action == "special8") { + return ACTION_SPECIAL_8; + } + else if (action == "special9") { + return ACTION_SPECIAL_9; + } else if (action == "cast_magic") { return ACTION_CAST_MAGIC; } @@ -372,7 +403,7 @@ SpriteAction SpriteDef::makeSpriteAction(const std::string& action) } } -SpriteDirection SpriteDef::makeSpriteDirection(const std::string& direction) +SpriteDirection SpriteDef::makeSpriteDirection(const std::string &direction) { if (direction.empty() || direction == "default") { return DIRECTION_DEFAULT; @@ -391,5 +422,5 @@ SpriteDirection SpriteDef::makeSpriteDirection(const std::string& direction) } else { return DIRECTION_INVALID; - }; + } } diff --git a/src/resources/spritedef.h b/src/resources/spritedef.h index 040d96e2..45b5b043 100644 --- a/src/resources/spritedef.h +++ b/src/resources/spritedef.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,13 +22,13 @@ #ifndef SPRITEDEF_H #define SPRITEDEF_H +#include "resources/resource.h" + #include <map> #include <string> #include <libxml/tree.h> -#include "resource.h" - class Action; class ImageSet; @@ -44,6 +43,16 @@ enum SpriteAction ACTION_ATTACK_STAB, ACTION_ATTACK_BOW, ACTION_ATTACK_THROW, + ACTION_SPECIAL_0, + ACTION_SPECIAL_1, + ACTION_SPECIAL_2, + ACTION_SPECIAL_3, + ACTION_SPECIAL_4, + ACTION_SPECIAL_5, + ACTION_SPECIAL_6, + ACTION_SPECIAL_7, + ACTION_SPECIAL_8, + ACTION_SPECIAL_9, ACTION_CAST_MAGIC, ACTION_USE_ITEM, ACTION_SIT, @@ -56,8 +65,8 @@ enum SpriteAction enum SpriteDirection { DIRECTION_DEFAULT = 0, - DIRECTION_DOWN, DIRECTION_UP, + DIRECTION_DOWN, DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_INVALID @@ -72,13 +81,24 @@ class SpriteDef : public Resource /** * Loads a sprite definition file. */ - static SpriteDef *load(std::string const &file, int variant); + static SpriteDef *load(const std::string &file, int variant); /** * Returns the specified action. */ Action *getAction(SpriteAction action) const; + /** + * Converts a string into a SpriteAction enum. + */ + static SpriteAction makeSpriteAction(const std::string &action); + + /** + * Converts a string into a SpriteDirection enum. + */ + static SpriteDirection + makeSpriteDirection(const std::string &direction); + private: /** * Constructor. @@ -99,7 +119,7 @@ class SpriteDef : public Resource /** * Loads an imageset element. */ - void loadImageSet(xmlNodePtr node, std::string const &palettes); + void loadImageSet(xmlNodePtr node, const std::string &palettes); /** * Loads an action element. @@ -129,16 +149,6 @@ class SpriteDef : public Resource */ void substituteAction(SpriteAction complete, SpriteAction with); - /** - * Converts a string into a SpriteAction enum. - */ - static SpriteAction makeSpriteAction(const std::string &action); - - /** - * Converts a string into a SpriteDirection enum. - */ - static SpriteDirection makeSpriteDirection(const std::string &direction); - typedef std::map<std::string, ImageSet*> ImageSets; typedef ImageSets::iterator ImageSetIterator; @@ -148,4 +158,4 @@ class SpriteDef : public Resource Actions mActions; }; -#endif +#endif // SPRITEDEF_H diff --git a/src/serverinfo.h b/src/serverinfo.h index fc3ef032..c38d13c7 100644 --- a/src/serverinfo.h +++ b/src/serverinfo.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shopitem.cpp b/src/shopitem.cpp index f1ef3dad..683cef7a 100644 --- a/src/shopitem.cpp +++ b/src/shopitem.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,20 +21,25 @@ #include "shopitem.h" -#include "utils/stringutils.h" +#include "units.h" -ShopItem::ShopItem (int inventoryIndex, int id, int quantity, int price) : - Item (id, 0), +#include "resources/iteminfo.h" + +ShopItem::ShopItem(int inventoryIndex, int id, + int quantity, int price) : + Item(id, 0), mPrice(price) { - mDisplayName = getInfo().getName() + " (" + toString(mPrice) + " GP)"; + mDisplayName = getInfo().getName() + + " (" + Units::formatCurrency(mPrice).c_str() + ")"; setInvIndex(inventoryIndex); addDuplicate(inventoryIndex, quantity); } ShopItem::ShopItem (int id, int price) : Item (id, 0), mPrice(price) { - mDisplayName = getInfo().getName() + " (" + toString(mPrice) + " GP)"; + mDisplayName = getInfo().getName() + + " (" + Units::formatCurrency(mPrice).c_str() + ")"; setInvIndex(-1); addDuplicate(-1, 0); } @@ -81,4 +85,3 @@ int ShopItem::sellCurrentDuplicate(int quantity) } return sellCount; } - diff --git a/src/shopitem.h b/src/shopitem.h index afc48bf5..f552c0fe 100644 --- a/src/shopitem.h +++ b/src/shopitem.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -118,12 +117,11 @@ class ShopItem : public Item * * @return the display name for the item in the shop list */ - const std::string& getDisplayName() const + const std::string &getDisplayName() const { return mDisplayName; } protected: int mPrice; - int mIndex; std::string mDisplayName; /** diff --git a/src/simpleanimation.cpp b/src/simpleanimation.cpp index c3584ede..65d8e8e2 100644 --- a/src/simpleanimation.cpp +++ b/src/simpleanimation.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,13 +34,13 @@ SimpleAnimation::SimpleAnimation(Animation *animation): mAnimationPhase(0), mCurrentFrame(mAnimation->getFrame(0)) { -}; +} SimpleAnimation::SimpleAnimation(xmlNodePtr animationNode): mAnimationTime(0), mAnimationPhase(0) { - mAnimation = new Animation(); + mAnimation = new Animation; ImageSet *imageset = ResourceManager::getInstance()->getImageSet( XML::getProperty(animationNode, "imageset", ""), diff --git a/src/simpleanimation.h b/src/simpleanimation.h index 5583e449..e48644d4 100644 --- a/src/simpleanimation.h +++ b/src/simpleanimation.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/sound.cpp b/src/sound.cpp index 5b8dedef..6e0b0da0 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/sound.h b/src/sound.h index 5c0c7ef8..c30ef7cd 100644 --- a/src/sound.h +++ b/src/sound.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,6 +29,8 @@ #endif #include <string> +#include <string> + /** Sound engine * * \ingroup CORE diff --git a/src/sprite.h b/src/sprite.h index c2b0fc7c..a6384e94 100644 --- a/src/sprite.h +++ b/src/sprite.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/statuseffect.cpp b/src/statuseffect.cpp new file mode 100644 index 00000000..077fbb63 --- /dev/null +++ b/src/statuseffect.cpp @@ -0,0 +1,174 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <map> + +#include "gui/chat.h" +#include "statuseffect.h" + +#include "log.h" +#include "utils/xml.h" + + +#define STATUS_EFFECTS_FILE "status-effects.xml" + +StatusEffect::StatusEffect() : + mPersistentParticleEffect(false) +{} + +StatusEffect::~StatusEffect() +{} + +void StatusEffect::playSFX() +{ + if (!mSFXEffect.empty()) + sound.playSfx(mSFXEffect); +} + +void StatusEffect::deliverMessage() +{ + if (!mMessage.empty()) + localChatTab->chatLog(mMessage, BY_SERVER); +} + +Particle *StatusEffect::getParticle() +{ + if (mParticleEffect.empty()) + return NULL; + else + return particleEngine->addEffect(mParticleEffect, 0, 0); +} + +AnimatedSprite *StatusEffect::getIcon() +{ + if (mIcon.empty()) + return NULL; + else { + AnimatedSprite *sprite = AnimatedSprite::load( + "graphics/sprites/" + mIcon); + if (false && sprite) { + sprite->play(ACTION_DEFAULT); + sprite->reset(); + } + return sprite; + } +} + +SpriteAction StatusEffect::getAction() +{ + if (mAction.empty()) + return ACTION_INVALID; + else + return SpriteDef::makeSpriteAction(mAction); +} + + +// -- initialisation and static parts -- + + +typedef std::map<int, StatusEffect *> status_effect_map[2]; + +static status_effect_map statusEffects; +static status_effect_map stunEffects; +static std::map<int, int> blockEffectIndexMap; + +int StatusEffect::blockEffectIndexToEffectIndex(int blockIndex) +{ + if (blockEffectIndexMap.find(blockIndex) == blockEffectIndexMap.end()) + return -1; + return blockEffectIndexMap[blockIndex]; +} + +StatusEffect *StatusEffect::getStatusEffect(int index, bool enabling) +{ + return statusEffects[enabling][index]; +} + +StatusEffect *StatusEffect::getStunEffect(int index, bool enabling) +{ + return stunEffects[enabling][index]; +} + +void StatusEffect::load() +{ + XML::Document doc(STATUS_EFFECTS_FILE); + xmlNodePtr rootNode = doc.rootNode(); + + if (!rootNode || !xmlStrEqual(rootNode->name, BAD_CAST "status-effects")) + { + logger->log("Error loading status effects file: " + STATUS_EFFECTS_FILE); + return; + } + + for_each_xml_child_node(node, rootNode) + { + status_effect_map *the_map = NULL; + + int index = atoi(XML::getProperty(node, "id", "-1").c_str()); + + if (xmlStrEqual(node->name, BAD_CAST "status-effect")) + { + the_map = &statusEffects; + int block_index = atoi(XML::getProperty(node, "block-id", "-1").c_str()); + + if (index >= 0 && block_index >= 0) + blockEffectIndexMap[block_index] = index; + + } else if (xmlStrEqual(node->name, BAD_CAST "stun-effect")) + the_map = &stunEffects; + + if (the_map) { + StatusEffect *startEffect = new StatusEffect; + StatusEffect *endEffect = new StatusEffect; + + startEffect->mMessage = XML::getProperty(node, "start-message", ""); + startEffect->mSFXEffect = XML::getProperty(node, "start-audio", ""); + startEffect->mParticleEffect = XML::getProperty(node, "start-particle", ""); + startEffect->mIcon = XML::getProperty(node, "icon", ""); + startEffect->mAction = XML::getProperty(node, "action", ""); + startEffect->mPersistentParticleEffect = (XML::getProperty(node, "persistent-particle-effect", "no")) != "no"; + + endEffect->mMessage = XML::getProperty(node, "end-message", ""); + endEffect->mSFXEffect = XML::getProperty(node, "end-audio", ""); + endEffect->mParticleEffect = XML::getProperty(node, "end-particle", ""); + + (*the_map)[1][index] = startEffect; + (*the_map)[0][index] = endEffect; + } + } +} + +void unloadMap(std::map<int, StatusEffect *> map) +{ + std::map<int, StatusEffect *>::iterator it; + + for (it = map.begin(); it != map.end(); it++) + delete (*it).second; +} + +void StatusEffect::unload() +{ + unloadMap(statusEffects[0]); + unloadMap(statusEffects[1]); + unloadMap(stunEffects[0]); + unloadMap(stunEffects[1]); +} diff --git a/src/statuseffect.h b/src/statuseffect.h new file mode 100644 index 00000000..f1af93d2 --- /dev/null +++ b/src/statuseffect.h @@ -0,0 +1,110 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef STATUS_EFFECT_H +#define STATUS_EFFECT_H + +#include "resources/animation.h" +#include "particle.h" +#include "animatedsprite.h" +#include "sound.h" + +class StatusEffect +{ +public: + StatusEffect(); + ~StatusEffect(); + + /** + * Plays the sound effect associated with this status effect, if possible. + */ + void playSFX(); + + /** + * Delivers the chat message associated with this status effect, if + * possible. + */ + void deliverMessage(); + + /** + * Creates the particle effect associated with this status effect, if + * possible. + */ + Particle *getParticle(); + + /** + * Retrieves the status icon for this effect, if applicable + */ + AnimatedSprite *getIcon(); + + /** + * Retrieves an action to perform, or ACTION_INVALID + */ + SpriteAction getAction(); + + /** + * Determines whether the particle effect should be restarted when the + * being changes maps + */ + bool particleEffectIsPersistent() const { return mPersistentParticleEffect; } + + + /** + * Retrieves a status effect. + * + * \param index Index of the status effect. + * \param enabling Whether to retrieve the activating effect (true) or + * the deactivating effect (false). + */ + static StatusEffect *getStatusEffect(int index, bool enabling); + + /** + * Retrieves a stun effect. + * + * \param index Index of the stun effect. + * \param enabling Whether to retrieve the activating effect (true) or + * the deactivating effect (false). + */ + static StatusEffect *getStunEffect(int index, bool enabling); + + /** + * Maps a block effect index to its corresponding effect index. Block + * effect indices are used for opt2/opt3/status.option blocks; their + * mapping to regular effect indices is handled in the config file. + * + * Returns -1 on failure. + */ + static int blockEffectIndexToEffectIndex(int blocKIndex); + + static void load(); + + static void unload(); +private: + + std::string mMessage; + std::string mSFXEffect; + std::string mParticleEffect; + std::string mIcon; + std::string mAction; + bool mPersistentParticleEffect; +}; + +#endif // !defined(STATUS_EFFECT_H) diff --git a/src/text.cpp b/src/text.cpp index 4e697f15..83bd6c24 100644 --- a/src/text.cpp +++ b/src/text.cpp @@ -3,7 +3,7 @@ * Copyright (C) 2008 Douglas Boffey <DougABoffey@netscape.net> * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,29 +20,58 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "text.h" + #include <guichan/font.hpp> -#include "text.h" +#include "configuration.h" #include "textmanager.h" +#include "resources/resourcemanager.h" +#include "resources/image.h" #include "gui/gui.h" #include "gui/palette.h" #include "gui/textrenderer.h" int Text::mInstances = 0; +ImageRect Text::mBubble; +Image *Text::mBubbleArrow; Text::Text(const std::string &text, int x, int y, - gcn::Graphics::Alignment alignment, const gcn::Color* color) : + gcn::Graphics::Alignment alignment, + const gcn::Color* color, bool isSpeech) : mText(text), - mColor(color) + mColor(color), + mIsSpeech(isSpeech) { if (textManager == 0) { - textManager = new TextManager(); + textManager = new TextManager; + ResourceManager *resman = ResourceManager::getInstance(); + Image *sbImage = resman->getImage("graphics/gui/bubble.png|W:#" + + config.getValue("speechBubblecolor", "000000")); + mBubble.grid[0] = sbImage->getSubImage(0, 0, 5, 5); + mBubble.grid[1] = sbImage->getSubImage(5, 0, 5, 5); + mBubble.grid[2] = sbImage->getSubImage(10, 0, 5, 5); + mBubble.grid[3] = sbImage->getSubImage(0, 5, 5, 5); + mBubble.grid[4] = sbImage->getSubImage(5, 5, 5, 5); + mBubble.grid[5] = sbImage->getSubImage(10, 5, 5, 5); + mBubble.grid[6] = sbImage->getSubImage(0, 10, 5, 5); + mBubble.grid[7] = sbImage->getSubImage(5, 10, 5, 5); + mBubble.grid[8] = sbImage->getSubImage(10, 10, 5, 5); + mBubbleArrow = sbImage->getSubImage(0, 15, 15, 10); + const float bubbleAlpha = config.getValue("speechBubbleAlpha", 1.0); + for (int i = 0; i < 9; i++) + { + mBubble.grid[i]->setAlpha(bubbleAlpha); + } + mBubbleArrow->setAlpha(bubbleAlpha); + sbImage->decRef(); } ++mInstances; mHeight = boldFont->getHeight(); mWidth = boldFont->getWidth(text); + switch (alignment) { case gcn::Graphics::LEFT: @@ -60,11 +89,6 @@ Text::Text(const std::string &text, int x, int y, textManager->addText(this); } -void Text::adviseXY(int x, int y) -{ - textManager->moveText(this, x - mXOffset, y); -} - Text::~Text() { textManager->removeText(this); @@ -72,16 +96,44 @@ Text::~Text() { delete textManager; textManager = 0; + delete mBubble.grid[0]; + delete mBubble.grid[1]; + delete mBubble.grid[2]; + delete mBubble.grid[3]; + delete mBubble.grid[4]; + delete mBubble.grid[5]; + delete mBubble.grid[6]; + delete mBubble.grid[7]; + delete mBubble.grid[8]; + delete mBubbleArrow; } } +void Text::adviseXY(int x, int y) +{ + textManager->moveText(this, x - mXOffset, y); +} + void Text::draw(gcn::Graphics *graphics, int xOff, int yOff) { graphics->setFont(boldFont); + if (mIsSpeech) { + static_cast<Graphics*>(graphics)->drawImageRect( + mX - xOff - 5, mY - yOff - 5, mWidth + 10, mHeight + 10, + mBubble); + /* + if (mWidth >= 15) { + static_cast<Graphics*>(graphics)->drawImage( + mBubbleArrow, mX - xOff - 7 + mWidth / 2, + mY - yOff + mHeight + 4); + } + */ + } + TextRenderer::renderText(graphics, mText, mX - xOff, mY - yOff, gcn::Graphics::LEFT, - *mColor, boldFont, true); + *mColor, boldFont, !mIsSpeech, true); } FlashText::FlashText(const std::string &text, int x, int y, @@ -3,7 +3,7 @@ * Copyright (C) 2008 Douglas Boffey <DougABoffey@netscape.net> * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,8 +24,8 @@ #define TEXT_H #include <guichan/color.hpp> -#include <guichan/graphics.hpp> +#include "graphics.h" #include "guichanfwd.h" class TextManager; @@ -40,7 +40,7 @@ class Text */ Text(const std::string &text, int x, int y, gcn::Graphics::Alignment alignment, - const gcn::Color *color); + const gcn::Color *color, bool isSpeech = false); /** * Destructor. The text is removed from the screen. @@ -66,6 +66,11 @@ class Text static int mInstances; /**< Instances of text. */ std::string mText; /**< The text to display. */ const gcn::Color *mColor; /**< The color of the text. */ + bool mIsSpeech; /**< Is this text a speech bubble? */ + + protected: + static ImageRect mBubble; /**< Speech bubble graphic */ + static Image *mBubbleArrow; /**< Speech bubble arrow graphic */ }; class FlashText : public Text @@ -81,12 +86,12 @@ class FlashText : public Text virtual ~FlashText() {} /** - * Flash the text for so many refreshes + * Flash the text for so many refreshes. */ void flash(int time) {mTime = time; } /** - * Draws the text + * Draws the text. */ virtual void draw(gcn::Graphics *graphics, int xOff, int yOff); diff --git a/src/textmanager.cpp b/src/textmanager.cpp index 0cf09478..6bc8f8b6 100644 --- a/src/textmanager.cpp +++ b/src/textmanager.cpp @@ -2,7 +2,7 @@ * Support for non-overlapping floating text * Copyright (C) 2008 Douglas Boffey <DougABoffey@netscape.net> * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,10 +19,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "textmanager.h" + #include <cstring> #include "text.h" -#include "textmanager.h" TextManager *textManager = 0; diff --git a/src/textmanager.h b/src/textmanager.h index d6485e34..ee8e1209 100644 --- a/src/textmanager.h +++ b/src/textmanager.h @@ -2,7 +2,7 @@ * Support for non-overlapping floating text * Copyright (C) 2008 Douglas Boffey <DougABoffey@netscape.net> * - * This file is part of Aethyra. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/textparticle.cpp b/src/textparticle.cpp index 957d67c0..04b7abe1 100644 --- a/src/textparticle.cpp +++ b/src/textparticle.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/textparticle.h b/src/textparticle.h index 1a49b5ef..8b7d3e01 100644 --- a/src/textparticle.h +++ b/src/textparticle.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2006 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,8 +19,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef _TEXTPARTICLE_H -#define _TEXTPARTICLE_H +#ifndef TEXTPARTICLE_H +#define TEXTPARTICLE_H #include "guichanfwd.h" #include "particle.h" diff --git a/src/tileset.h b/src/tileset.h index 28f7d9d5..d4de7ba5 100644 --- a/src/tileset.h +++ b/src/tileset.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/aethyra.rc b/src/tmw.rc index e9d32be9..d9689f28 100644 --- a/src/aethyra.rc +++ b/src/tmw.rc @@ -1,22 +1,23 @@ -#include <windows.h> // include for version info constants
-
-#include "winver.h"
-
-A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "data/icons/aethyra.ico"
-
-1 VERSIONINFO
-FILEVERSION VER_MAJOR,VER_MINOR,VER_RELEASE,VER_BUILD
-PRODUCTVERSION VER_MAJOR,VER_MINOR,VER_RELEASE,VER_BUILD
-FILETYPE VFT_APP {
- BLOCK "StringFileInfo" {
- BLOCK "040904E4" {
- VALUE "CompanyName", "Aethyra Development Team"
- VALUE "FileVersion", PACKAGE_VERSION
- VALUE "FileDescription", "Aethyra Experiment"
- VALUE "LegalCopyright", "2009 (C)"
- VALUE "OriginalFilename", "aethyra.exe"
- VALUE "ProductName", "Aethyra MMORPG"
- VALUE "ProductVersion", PACKAGE_VERSION
- }
- }
+#include <windows.h> // include for version info constants + +#include "winver.h" + +A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "data/icons/tmw.ico" + +1 VERSIONINFO +FILEVERSION VER_MAJOR,VER_MINOR,VER_RELEASE,VER_BUILD +PRODUCTVERSION VER_MAJOR,VER_MINOR,VER_RELEASE,VER_BUILD +FILETYPE VFT_APP { + BLOCK "StringFileInfo" { + BLOCK "040904E4" { + VALUE "CompanyName", "The Mana World Development Team" + VALUE "FileVersion", PACKAGE_VERSION + VALUE "FileDescription", "The Mana World" + VALUE "LegalCopyright", "2004-2009 (C)" + VALUE "OriginalFilename", "tmw.exe" + VALUE "ProductName", "The Mana World MMORPG" + VALUE "ProductVersion", PACKAGE_VERSION + } + } } + diff --git a/src/units.cpp b/src/units.cpp new file mode 100644 index 00000000..acdbd564 --- /dev/null +++ b/src/units.cpp @@ -0,0 +1,234 @@ +/* + * Support for custom units + * Copyright (C) 2009 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "units.h" + +#include "log.h" + +#include "utils/strprintf.h" +#include "utils/stringutils.h" +#include "utils/xml.h" + +#include <cmath> +#include <climits> +#include <vector> + +struct UnitLevel { + std::string symbol; + int count; + int round; +}; + +struct UnitDescription { + std::vector<struct UnitLevel> levels; + double conversion; + bool mix; +}; + +enum UnitType { + UNIT_WEIGHT = 0, + UNIT_CURRENCY = 1, + UNIT_END +}; + +struct UnitDescription units[UNIT_END]; + +void Units::loadUnits() +{ + { // Setup default weight + struct UnitDescription ud; + + ud.conversion = 1.0; + ud.mix = false; + + struct UnitLevel bu; + bu.symbol = "g"; + bu.count = 1; + bu.round = 0; + + ud.levels.push_back(bu); + + struct UnitLevel ul; + ul.symbol = "kg"; + ul.count = 1000; + ul.round = 2; + + ud.levels.push_back(ul); + + units[UNIT_WEIGHT] = ud; + } + + { // Setup default currency + struct UnitDescription ud; + + ud.conversion = 1.0; + ud.mix = false; + + struct UnitLevel bu; + bu.symbol = "¤"; + bu.count = 1; + bu.round = 0; + + ud.levels.push_back(bu); + + units[UNIT_CURRENCY] = ud; + } + + XML::Document doc("units.xml"); + xmlNodePtr root = doc.rootNode(); + + if (!root || !xmlStrEqual(root->name, BAD_CAST "units")) + { + logger->log("Error loading unit definition file: units.xml"); + return; + } + + for_each_xml_child_node(node, root) + { + if (xmlStrEqual(node->name, BAD_CAST "unit")) + { + struct UnitDescription ud; + int level = 1; + const std::string type = XML::getProperty(node, "type", ""); + ud.conversion = XML::getProperty(node, "conversion", 1.0); + ud.mix = XML::getProperty(node, "mix", "no") == "yes"; + + struct UnitLevel bu; + bu.symbol = XML::getProperty(node, "base", "¤"); + bu.count = 1; + bu.round = XML::getProperty(node, "round", 2); + + ud.levels.push_back(bu); + + for_each_xml_child_node(uLevel, node) + { + if (xmlStrEqual(uLevel->name, BAD_CAST "level")) + { + struct UnitLevel ul; + ul.symbol = XML::getProperty(uLevel, "symbol", + strprintf("¤%d",level)); + ul.count = XML::getProperty(uLevel, "count", -1); + ul.round = XML::getProperty(uLevel, "round", bu.round); + + if (ul.count > 0) + { + ud.levels.push_back(ul); + level++; + } + else + { + logger->log("Error bad unit count: %d for %s in %s", + ul.count, ul.symbol.c_str(), bu.symbol.c_str()); + } + } + } + + // Add one more level for saftey + struct UnitLevel ll; + ll.symbol = ""; + ll.count = INT_MAX; + ll.round = 0; + + ud.levels.push_back(ll); + + if (type == "weight") + units[UNIT_WEIGHT] = ud; + else if (type == "currency") + units[UNIT_CURRENCY] = ud; + else + logger->log("Error unknown unit type: %s", type.c_str()); + } + } +} + +std::string formatUnit(int value, int type) +{ + struct UnitDescription ud = units[type]; + struct UnitLevel ul; + + // Shortcut for 0; do the same for values less than 0 (for now) + if (value <= 0) { + ul = ud.levels[0]; + return strprintf("0%s", ul.symbol.c_str()); + } else { + double amount = ud.conversion * value; + + // If only the first level is needed, act like mix if false + if (ud.mix && ud.levels.size() > 0 && ud.levels[1].count < amount) + { + std::string output; + struct UnitLevel pl = ud.levels[0]; + ul = ud.levels[1]; + int levelAmount = (int) amount; + int nextAmount; + + levelAmount /= ul.count; + + amount -= levelAmount * ul.count; + + if (amount > 0) { + output = strprintf("%.*f%s", pl.round, amount, + pl.symbol.c_str()); + } + + for (unsigned int i = 2; i < ud.levels.size(); i++) + { + pl = ul; + ul = ud.levels[i]; + + nextAmount = levelAmount / ul.count; + levelAmount %= ul.count; + + if (levelAmount > 0) output = strprintf("%d%s", + levelAmount, pl.symbol.c_str()) + output; + + if (!nextAmount) break; + levelAmount = nextAmount; + } + + return output; + } + else + { + for (unsigned int i = 0; i < ud.levels.size(); i++) + { + ul = ud.levels[i]; + if (amount < ul.count && ul.count > 0) { + ul = ud.levels[i - 1]; + break; + } + amount /= ul.count; + } + + return strprintf("%.*f%s", ul.round, amount, ul.symbol.c_str()); + } + } +} + +std::string Units::formatCurrency(int value) +{ + return formatUnit(value, UNIT_CURRENCY); +} + +std::string Units::formatWeight(int value) +{ + return formatUnit(value, UNIT_WEIGHT); +} diff --git a/src/units.h b/src/units.h new file mode 100644 index 00000000..6aa07b70 --- /dev/null +++ b/src/units.h @@ -0,0 +1,46 @@ +/* + * Support for custom units + * Copyright (C) 2009 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef UNITS_H +#define UNITS_H + +#include <string> + +class Units +{ + public: + /** + * Loads and parses the units.xml file (if found). + */ + static void loadUnits(); + + /** + * Formats the given number in the correct currency format. + */ + static std::string formatCurrency(int value); + + /** + * Formats the given number in the correct weight/mass format. + */ + static std::string formatWeight(int value); +}; + +#endif // UNITS_H diff --git a/src/utils/base64.cpp b/src/utils/base64.cpp index 9d8ba836..298841be 100644 --- a/src/utils/base64.cpp +++ b/src/utils/base64.cpp @@ -27,11 +27,11 @@ +----------------------------------------------------------------------+ */ +#include "utils/base64.h" + #include <stdlib.h> #include <string.h> -#include "base64.h" - static char base64_table[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', diff --git a/src/utils/dtor.h b/src/utils/dtor.h index 96ce63d4..e7240d12 100644 --- a/src/utils/dtor.h +++ b/src/utils/dtor.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -40,7 +39,7 @@ public std::unary_function <std::pair<T1, T2>, void> void operator()(std::pair<T1, T2> &pair) { delete pair.second; } }; - template<class Cont> +template<class Cont> inline dtor<typename Cont::value_type> make_dtor(Cont const&) { return dtor<typename Cont::value_type>(); @@ -52,5 +51,4 @@ inline void delete_all(Container &c) std::for_each(c.begin(), c.end(), make_dtor(c)); } - #endif diff --git a/src/utils/gettext.h b/src/utils/gettext.h index f7286187..55e72555 100644 --- a/src/utils/gettext.h +++ b/src/utils/gettext.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,4 +41,4 @@ #endif -#endif +#endif // UTILS_GETTEXT_H diff --git a/src/utils/mutex.h b/src/utils/mutex.h index 569b6808..41701709 100644 --- a/src/utils/mutex.h +++ b/src/utils/mutex.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2008 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,9 +22,9 @@ #ifndef MUTEX_H #define MUTEX_H -#include <SDL_thread.h> +#include "log.h" -#include "../log.h" +#include <SDL_thread.h> /** * A mutex provides mutual exclusion of access to certain data that is diff --git a/src/utils/sha256.cpp b/src/utils/sha256.cpp new file mode 100644 index 00000000..4f23e01a --- /dev/null +++ b/src/utils/sha256.cpp @@ -0,0 +1,276 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file has been slighly modified as part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* +------------------------------------+ + * | Inspire Internet Relay Chat Daemon | + * +------------------------------------+ + * + * InspIRCd: (C) 2002-2008 InspIRCd Development Team + * See: http://www.inspircd.org/wiki/index.php/Credits + * + * This program is free but copyrighted software; see + * the file COPYING for details. + * + * --------------------------------------------------- + */ + +/* m_sha256 - Based on m_opersha256 written by Special <john@yarbbles.com> + * Modified and improved by Craig Edwards, December 2006. + * + * + * FIPS 180-2 SHA-224/256/384/512 implementation + * Last update: 05/23/2005 + * Issue date: 04/30/2005 + * + * Copyright (C) 2005 Olivier Gay <olivier.gay@a3.epfl.ch> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "utils/sha256.h" + +#include <memory.h> + +#ifdef HAS_STDINT +#include <stdint.h> +#endif +#ifndef HAS_STDINT +typedef unsigned int uint32_t; +#endif + +#define SHA256_BLOCK_SIZE (512 / 8) + +/** An sha 256 context, used by original m_opersha256 */ +class SHA256Context +{ + public: + unsigned int tot_len; + unsigned int len; + unsigned char block[2 * SHA256_BLOCK_SIZE]; + uint32_t h[8]; +}; + +#define SHA256_DIGEST_SIZE (256 / 8) + +#define SHFR(x, n) (x >> n) +#define ROTR(x, n) ((x >> n) | (x << ((sizeof(x) << 3) - n))) +#define ROTL(x, n) ((x << n) | (x >> ((sizeof(x) << 3) - n))) +#define CH(x, y, z) ((x & y) ^ (~x & z)) +#define MAJ(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) + +#define SHA256_F1(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22)) +#define SHA256_F2(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25)) +#define SHA256_F3(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHFR(x, 3)) +#define SHA256_F4(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHFR(x, 10)) + +#define UNPACK32(x, str) \ +{ \ + *((str) + 3) = (uint8_t) ((x) ); \ + *((str) + 2) = (uint8_t) ((x) >> 8); \ + *((str) + 1) = (uint8_t) ((x) >> 16); \ + *((str) + 0) = (uint8_t) ((x) >> 24); \ +} + +#define PACK32(str, x) \ +{ \ + *(x) = ((uint32_t) *((str) + 3) ) \ + | ((uint32_t) *((str) + 2) << 8) \ + | ((uint32_t) *((str) + 1) << 16) \ + | ((uint32_t) *((str) + 0) << 24); \ +} + +/* Macros used for loops unrolling */ + +#define SHA256_SCR(i) \ +{ \ + w[i] = SHA256_F4(w[i - 2]) + w[i - 7] \ + + SHA256_F3(w[i - 15]) + w[i - 16]; \ +} + +const unsigned int sha256_h0[8] = +{ + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, + 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 +}; + +uint32_t sha256_k[64] = +{ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, + 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, + 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +}; + +void SHA256Init(SHA256Context *ctx) +{ + for (int i = 0; i < 8; i++) + ctx->h[i] = sha256_h0[i]; + ctx->len = 0; + ctx->tot_len = 0; +} + +void SHA256Transform(SHA256Context *ctx, + unsigned char *message, + unsigned int block_nb) +{ + uint32_t w[64]; + uint32_t wv[8]; + unsigned char *sub_block; + for (unsigned int i = 1; i <= block_nb; i++) + { + int j; + sub_block = message + ((i - 1) << 6); + + for (j = 0; j < 16; j++) + PACK32(&sub_block[j << 2], &w[j]); + for (j = 16; j < 64; j++) + SHA256_SCR(j); + for (j = 0; j < 8; j++) + wv[j] = ctx->h[j]; + for (j = 0; j < 64; j++) + { + uint32_t t1 = wv[7] + SHA256_F2(wv[4]) + CH(wv[4], wv[5], wv[6]) + sha256_k[j] + w[j]; + uint32_t t2 = SHA256_F1(wv[0]) + MAJ(wv[0], wv[1], wv[2]); + wv[7] = wv[6]; + wv[6] = wv[5]; + wv[5] = wv[4]; + wv[4] = wv[3] + t1; + wv[3] = wv[2]; + wv[2] = wv[1]; + wv[1] = wv[0]; + wv[0] = t1 + t2; + } + for (j = 0; j < 8; j++) + ctx->h[j] += wv[j]; + } +} + +void SHA256Update(SHA256Context *ctx, + unsigned char *message, + unsigned int len) +{ + /* + * XXX here be dragons! + * After many hours of pouring over this, I think I've found the problem. + * When Special created our module from the reference one, he used: + * + * unsigned int rem_len = SHA256_BLOCK_SIZE - ctx->len; + * + * instead of the reference's version of: + * + * unsigned int tmp_len = SHA256_BLOCK_SIZE - ctx->len; + * unsigned int rem_len = len < tmp_len ? len : tmp_len; + * + * I've changed back to the reference version of this code, and it seems to work with no errors. + * So I'm inclined to believe this was the problem.. + * -- w00t (January 06, 2008) + */ + unsigned int tmp_len = SHA256_BLOCK_SIZE - ctx->len; + unsigned int rem_len = len < tmp_len ? len : tmp_len; + + memcpy(&ctx->block[ctx->len], message, rem_len); + if (ctx->len + len < SHA256_BLOCK_SIZE) + { + ctx->len += len; + return; + } + unsigned int new_len = len - rem_len; + unsigned int block_nb = new_len / SHA256_BLOCK_SIZE; + unsigned char *shifted_message = message + rem_len; + SHA256Transform(ctx, ctx->block, 1); + SHA256Transform(ctx, shifted_message, block_nb); + rem_len = new_len % SHA256_BLOCK_SIZE; + memcpy(ctx->block, &shifted_message[block_nb << 6],rem_len); + ctx->len = rem_len; + ctx->tot_len += (block_nb + 1) << 6; +} + +void SHA256Final(SHA256Context *ctx, unsigned char *digest) +{ + unsigned int block_nb = (1 + ((SHA256_BLOCK_SIZE - 9) < (ctx->len % SHA256_BLOCK_SIZE))); + unsigned int len_b = (ctx->tot_len + ctx->len) << 3; + unsigned int pm_len = block_nb << 6; + memset(ctx->block + ctx->len, 0, pm_len - ctx->len); + ctx->block[ctx->len] = 0x80; + UNPACK32(len_b, ctx->block + pm_len - 4); + SHA256Transform(ctx, ctx->block, block_nb); + for (int i = 0 ; i < 8; i++) + UNPACK32(ctx->h[i], &digest[i << 2]); +} + +std::string SHA256Hash(const char *src, int len) +{ + // Generate the hash + unsigned char bytehash[SHA256_DIGEST_SIZE]; + SHA256Context ctx; + SHA256Init(&ctx); + SHA256Update(&ctx, (unsigned char *)src, (unsigned int)len); + SHA256Final(&ctx, bytehash); + // Convert it to hex + const char* hxc = "0123456789abcdef"; + std::string hash = ""; + for (int i = 0; i < SHA256_DIGEST_SIZE; i++) + { + hash += hxc[bytehash[i] / 16]; + hash += hxc[bytehash[i] % 16]; + } + return hash; +} + +std::string sha256(const std::string &string) +{ + return SHA256Hash(string.c_str(), string.length()); +} diff --git a/src/utils/sha256.h b/src/utils/sha256.h new file mode 100644 index 00000000..d0543cbf --- /dev/null +++ b/src/utils/sha256.h @@ -0,0 +1,35 @@ +/* + * The Mana World + * Copyright (C) 2007 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef UTILS_SHA256_H +#define UTILS_SHA256_H + +#include <string> + +/** + * Returns the SHA-256 hash for the given string. + * + * @param string the string to create the SHA-256 hash for + * @return the SHA-256 hash for the given string. + */ +std::string sha256(const std::string &string); + +#endif // UTILS_SHA256_H diff --git a/src/utils/stringutils.cpp b/src/utils/stringutils.cpp index d414d665..6a88a12e 100644 --- a/src/utils/stringutils.cpp +++ b/src/utils/stringutils.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,7 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "stringutils.h" +#include "utils/stringutils.h" #include <algorithm> diff --git a/src/utils/stringutils.h b/src/utils/stringutils.h index 7d8df748..8b8b7bc2 100644 --- a/src/utils/stringutils.h +++ b/src/utils/stringutils.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/utils/strprintf.cpp b/src/utils/strprintf.cpp index f90e6258..d960bc96 100644 --- a/src/utils/strprintf.cpp +++ b/src/utils/strprintf.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,11 +19,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "utils/strprintf.h" + #include <cstdarg> #include <cstdio> -#include "strprintf.h" - std::string strprintf(char const *format, ...) { char buf[256]; @@ -46,4 +45,3 @@ std::string strprintf(char const *format, ...) delete [] buf2; return res; } - diff --git a/src/utils/strprintf.h b/src/utils/strprintf.h index 1d33c3f7..78e7a04c 100644 --- a/src/utils/strprintf.h +++ b/src/utils/strprintf.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/utils/xml.cpp b/src/utils/xml.cpp index 562f69e3..7a6f75de 100644 --- a/src/utils/xml.cpp +++ b/src/utils/xml.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,16 +19,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "xml.h" +#include "utils/xml.h" -#include "../log.h" +#include "log.h" -#include "../resources/resourcemanager.h" +#include "resources/resourcemanager.h" namespace XML { Document::Document(const std::string &filename): - mDoc(NULL) + mDoc(0) { int size; ResourceManager *resman = ResourceManager::getInstance(); @@ -88,7 +87,8 @@ namespace XML return ret; } - std::string getProperty(xmlNodePtr node, const char *name, const std::string &def) + std::string getProperty(xmlNodePtr node, const char *name, + const std::string &def) { xmlChar *prop = xmlGetProp(node, BAD_CAST name); if (prop) { @@ -108,4 +108,5 @@ namespace XML return NULL; } -} + +} // namespace XML diff --git a/src/utils/xml.h b/src/utils/xml.h index b7d67924..e7075279 100644 --- a/src/utils/xml.h +++ b/src/utils/xml.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,10 +22,10 @@ #ifndef XML_H #define XML_H -#include <string> - #include <libxml/tree.h> +#include <string> + /** * XML helper functions. */ @@ -82,7 +81,8 @@ namespace XML /** * Gets a string property from an xmlNodePtr. */ - std::string getProperty(xmlNodePtr node, const char *name, const std::string &def); + std::string getProperty(xmlNodePtr node, const char *name, + const std::string &def); /** * Finds the first child node with the given name @@ -93,4 +93,4 @@ namespace XML #define for_each_xml_child_node(var, parent) \ for (xmlNodePtr var = parent->xmlChildrenNode; var; var = var->next) -#endif +#endif // XML_H diff --git a/src/vector.cpp b/src/vector.cpp index bbfb1a70..9b573e88 100644 --- a/src/vector.cpp +++ b/src/vector.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/vector.h b/src/vector.h index 48933155..6dd461ac 100644 --- a/src/vector.h +++ b/src/vector.h @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2007 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/winver.h b/src/winver.h index a10e2e76..4996bdfb 100644 --- a/src/winver.h +++ b/src/winver.h @@ -1,6 +1,6 @@ -/* VERSION DEFINITIONS */
-#define VER_MAJOR 0
-#define VER_MINOR 0
-#define VER_RELEASE 29
-#define VER_BUILD 0
+/* VERSION DEFINITIONS */ +#define VER_MAJOR 0 +#define VER_MINOR 0 +#define VER_RELEASE 29 +#define VER_BUILD 0 #define PACKAGE_VERSION "0.0.29" diff --git a/themanaworld.xcodeproj/garfield.mode1 b/themanaworld.xcodeproj/garfield.mode1 new file mode 100644 index 00000000..debfe473 --- /dev/null +++ b/themanaworld.xcodeproj/garfield.mode1 @@ -0,0 +1,1329 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActivePerspectiveName</key> + <string>Project</string> + <key>AllowedModules</key> + <array> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Name</key> + <string>Groups and Files Outline View</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Name</key> + <string>Editor</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCTaskListModule</string> + <key>Name</key> + <string>Task List</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCDetailModule</string> + <key>Name</key> + <string>File and Smart Group Detail Viewer</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXBuildResultsModule</string> + <key>Name</key> + <string>Detailed Build Results Viewer</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXProjectFindModule</string> + <key>Name</key> + <string>Project Batch Find Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXRunSessionModule</string> + <key>Name</key> + <string>Run Log</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXBookmarksModule</string> + <key>Name</key> + <string>Bookmarks Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXClassBrowserModule</string> + <key>Name</key> + <string>Class Browser</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXCVSModule</string> + <key>Name</key> + <string>Source Code Control Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXDebugBreakpointsModule</string> + <key>Name</key> + <string>Debug Breakpoints Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>XCDockableInspector</string> + <key>Name</key> + <string>Inspector</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>n</string> + <key>Module</key> + <string>PBXOpenQuicklyModule</string> + <key>Name</key> + <string>Open Quickly Tool</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Name</key> + <string>Debugger</string> + </dict> + <dict> + <key>BundleLoadPath</key> + <string></string> + <key>MaxInstances</key> + <string>1</string> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Name</key> + <string>Debug Console</string> + </dict> + </array> + <key>Description</key> + <string>DefaultDescriptionKey</string> + <key>DockingSystemVisible</key> + <false/> + <key>Extension</key> + <string>mode1</string> + <key>FavBarConfig</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>92BC40BF0BAEE965000DAB7F</string> + <key>XCBarModuleItemNames</key> + <dict/> + <key>XCBarModuleItems</key> + <array/> + </dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>com.apple.perspectives.project.mode1</string> + <key>MajorVersion</key> + <integer>31</integer> + <key>MinorVersion</key> + <integer>1</integer> + <key>Name</key> + <string>Default</string> + <key>Notifications</key> + <array/> + <key>OpenEditors</key> + <array/> + <key>PerspectiveWidths</key> + <array> + <integer>-1</integer> + <integer>-1</integer> + </array> + <key>Perspectives</key> + <array> + <dict> + <key>ChosenToolbarItems</key> + <array> + <string>active-target-popup</string> + <string>action</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>buildOrClean</string> + <string>build-and-runOrDebug</string> + <string>debug</string> + <string>clean-target</string> + <string>com.apple.ide.PBXToolbarStopButton</string> + <string>get-info</string> + <string>toggle-editor</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>com.apple.pbx.toolbar.searchfield</string> + </array> + <key>ControllerClassBaseName</key> + <string></string> + <key>IconName</key> + <string>WindowOfProjectWithEditor</string> + <key>Identifier</key> + <string>perspective.project</string> + <key>IsVertical</key> + <false/> + <key>Layout</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C37FBAC04509CD000000102</string> + <string>1C37FAAC04509CD000000102</string> + <string>1C08E77C0454961000C914BD</string> + <string>1C37FABC05509CD000000102</string> + <string>1C37FABC05539CD112110102</string> + <string>E2644B35053B69B200211256</string> + <string>1C37FABC04509CD000100104</string> + <string>1CC0EA4004350EF90044410B</string> + <string>1CC0EA4004350EF90041110B</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>1CE0B1FE06471DED0097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>yes</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>186</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>20286C29FDCF999611CA2CEA</string> + <string>20286C2AFDCF999611CA2CEA</string> + <string>20286C32FDCF999611CA2CEA</string> + <string>1C37FBAC04509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>78</integer> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 1010}, {186, 520}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <true/> + <key>XCSharingToken</key> + <string>com.apple.Xcode.GFSharingToken</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {203, 538}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>186</real> + </array> + <key>RubberWindowFrame</key> + <string>372 210 780 579 0 0 1280 832 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>203pt</string> + </dict> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CE0B20306471E060097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>MyNewFile14.java</string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CE0B20406471E060097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>MyNewFile14.java</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <true/> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {572, 0}}</string> + <key>RubberWindowFrame</key> + <string>372 210 780 579 0 0 1280 832 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>0pt</string> + </dict> + <dict> + <key>BecomeActive</key> + <true/> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CE0B20506471E060097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Detail</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 5}, {572, 533}}</string> + <key>RubberWindowFrame</key> + <string>372 210 780 579 0 0 1280 832 </string> + </dict> + <key>Module</key> + <string>XCDetailModule</string> + <key>Proportion</key> + <string>533pt</string> + </dict> + </array> + <key>Proportion</key> + <string>572pt</string> + </dict> + </array> + <key>Name</key> + <string>Project</string> + <key>ServiceClasses</key> + <array> + <string>XCModuleDock</string> + <string>PBXSmartGroupTreeModule</string> + <string>XCModuleDock</string> + <string>PBXNavigatorGroup</string> + <string>XCDetailModule</string> + </array> + <key>TableOfContents</key> + <array> + <string>924A47AB0D1069F5004FEA83</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>924A47AC0D1069F5004FEA83</string> + <string>1CE0B20306471E060097A5F4</string> + <string>1CE0B20506471E060097A5F4</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.default</string> + </dict> + <dict> + <key>ControllerClassBaseName</key> + <string></string> + <key>IconName</key> + <string>WindowOfProject</string> + <key>Identifier</key> + <string>perspective.morph</string> + <key>IsVertical</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C37FBAC04509CD000000102</string> + <string>1C37FAAC04509CD000000102</string> + <string>1C08E77C0454961000C914BD</string> + <string>1C37FABC05509CD000000102</string> + <string>1C37FABC05539CD112110102</string> + <string>E2644B35053B69B200211256</string> + <string>1C37FABC04509CD000100104</string> + <string>1CC0EA4004350EF90044410B</string> + <string>1CC0EA4004350EF90041110B</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>11E0B1FE06471DED0097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>yes</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>186</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>29B97314FDCFA39411CA2CEA</string> + <string>1C37FABC05509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {186, 337}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <integer>1</integer> + <key>XCSharingToken</key> + <string>com.apple.Xcode.GFSharingToken</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {203, 355}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>186</real> + </array> + <key>RubberWindowFrame</key> + <string>373 269 690 397 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Morph</string> + <key>PreferredWidth</key> + <integer>300</integer> + <key>ServiceClasses</key> + <array> + <string>XCModuleDock</string> + <string>PBXSmartGroupTreeModule</string> + </array> + <key>TableOfContents</key> + <array> + <string>11E0B1FE06471DED0097A5F4</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.default.short</string> + </dict> + </array> + <key>PerspectivesBarVisible</key> + <false/> + <key>ShelfIsVisible</key> + <false/> + <key>SourceDescription</key> + <string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string> + <key>StatusbarIsVisible</key> + <true/> + <key>TimeStamp</key> + <real>0.0</real> + <key>ToolbarDisplayMode</key> + <integer>1</integer> + <key>ToolbarIsVisible</key> + <true/> + <key>ToolbarSizeMode</key> + <integer>1</integer> + <key>Type</key> + <string>Perspectives</string> + <key>UpdateMessage</key> + <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string> + <key>WindowJustification</key> + <integer>5</integer> + <key>WindowOrderList</key> + <array> + <string>92BC40B30BAEE8C1000DAB7F</string> + <string>/Users/garfield/programming/themanaworld/tmw/branches/0.0/themanaworld.xcodeproj</string> + </array> + <key>WindowString</key> + <string>372 210 780 579 0 0 1280 832 </string> + <key>WindowTools</key> + <array> + <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>windowTool.build</string> + <key>IsVertical</key> + <true/> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528F0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string></string> + <key>StatusBarVisibility</key> + <true/> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {553, 0}}</string> + <key>RubberWindowFrame</key> + <string>316 222 553 548 0 0 1280 832 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>0pt</string> + </dict> + <dict> + <key>BecomeActive</key> + <true/> + <key>ContentConfiguration</key> + <dict> + <key>PBXBuildLogShowsTranscriptDefaultKey</key> + <string>{{0, 5}, {553, 497}}</string> + <key>PBXProjectModuleGUID</key> + <string>XCMainBuildResultsModuleGUID</string> + <key>PBXProjectModuleLabel</key> + <string>Build</string> + <key>XCBuildResultsTrigger_Collapse</key> + <integer>1021</integer> + <key>XCBuildResultsTrigger_Open</key> + <integer>1011</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 5}, {553, 502}}</string> + <key>RubberWindowFrame</key> + <string>316 222 553 548 0 0 1280 832 </string> + </dict> + <key>Module</key> + <string>PBXBuildResultsModule</string> + <key>Proportion</key> + <string>502pt</string> + </dict> + </array> + <key>Proportion</key> + <string>507pt</string> + </dict> + </array> + <key>Name</key> + <string>Build Results</string> + <key>ServiceClasses</key> + <array> + <string>PBXBuildResultsModule</string> + </array> + <key>StatusbarIsVisible</key> + <true/> + <key>TableOfContents</key> + <array> + <string>92BC40B30BAEE8C1000DAB7F</string> + <string>924A47B10D107075004FEA83</string> + <string>1CD0528F0623707200166675</string> + <string>XCMainBuildResultsModuleGUID</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.build</string> + <key>WindowString</key> + <string>316 222 553 548 0 0 1280 832 </string> + <key>WindowToolGUID</key> + <string>92BC40B30BAEE8C1000DAB7F</string> + <key>WindowToolIsVisible</key> + <false/> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debugger</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>Debugger</key> + <dict> + <key>HorizontalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {317, 164}}</string> + <string>{{317, 0}, {377, 164}}</string> + </array> + </dict> + <key>VerticalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {694, 164}}</string> + <string>{{0, 164}, {694, 216}}</string> + </array> + </dict> + </dict> + <key>LauncherConfigVersion</key> + <string>8</string> + <key>PBXProjectModuleGUID</key> + <string>1C162984064C10D400B95A72</string> + <key>PBXProjectModuleLabel</key> + <string>Debug - GLUTExamples (Underwater)</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>DebugConsoleDrawerSize</key> + <string>{100, 120}</string> + <key>DebugConsoleVisible</key> + <string>None</string> + <key>DebugConsoleWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>DebugSTDIOWindowFrame</key> + <string>{{200, 200}, {500, 300}}</string> + <key>Frame</key> + <string>{{0, 0}, {694, 380}}</string> + <key>RubberWindowFrame</key> + <string>321 238 694 422 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXDebugSessionModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Debugger</string> + <key>ServiceClasses</key> + <array> + <string>PBXDebugSessionModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1CD10A99069EF8BA00B06720</string> + <string>1C0AD2AB069F1E9B00FABCE6</string> + <string>1C162984064C10D400B95A72</string> + <string>1C0AD2AC069F1E9B00FABCE6</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debug</string> + <key>WindowString</key> + <string>321 238 694 422 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1CD10A99069EF8BA00B06720</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>windowTool.find</string> + <key>IsVertical</key> + <true/> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CDD528C0622207200134675</string> + <key>PBXProjectModuleLabel</key> + <string>playerhandler.cpp</string> + <key>StatusBarVisibility</key> + <true/> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {781, 212}}</string> + <key>RubberWindowFrame</key> + <string>212 362 781 470 0 0 1280 832 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>781pt</string> + </dict> + </array> + <key>Proportion</key> + <string>212pt</string> + </dict> + <dict> + <key>BecomeActive</key> + <true/> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528E0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string>Project Find</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 217}, {781, 212}}</string> + <key>RubberWindowFrame</key> + <string>212 362 781 470 0 0 1280 832 </string> + </dict> + <key>Module</key> + <string>PBXProjectFindModule</string> + <key>Proportion</key> + <string>212pt</string> + </dict> + </array> + <key>Proportion</key> + <string>429pt</string> + </dict> + </array> + <key>Name</key> + <string>Project Find</string> + <key>ServiceClasses</key> + <array> + <string>PBXProjectFindModule</string> + </array> + <key>StatusbarIsVisible</key> + <true/> + <key>TableOfContents</key> + <array> + <string>1C530D57069F1CE1000CFCEE</string> + <string>92E427510C1EB4AC000361B7</string> + <string>92E427520C1EB4AC000361B7</string> + <string>1CDD528C0622207200134675</string> + <string>1CD0528E0623707200166675</string> + </array> + <key>WindowString</key> + <string>212 362 781 470 0 0 1280 832 </string> + <key>WindowToolGUID</key> + <string>1C530D57069F1CE1000CFCEE</string> + <key>WindowToolIsVisible</key> + <false/> + </dict> + <dict> + <key>Identifier</key> + <string>MENUSEPARATOR</string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debuggerConsole</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAAC065D492600B07095</string> + <key>PBXProjectModuleLabel</key> + <string>Debugger Console</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {440, 358}}</string> + <key>RubberWindowFrame</key> + <string>650 41 440 400 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXDebugCLIModule</string> + <key>Proportion</key> + <string>358pt</string> + </dict> + </array> + <key>Proportion</key> + <string>358pt</string> + </dict> + </array> + <key>Name</key> + <string>Debugger Console</string> + <key>ServiceClasses</key> + <array> + <string>PBXDebugCLIModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C78EAAD065D492600B07095</string> + <string>1C78EAAE065D492600B07095</string> + <string>1C78EAAC065D492600B07095</string> + </array> + <key>WindowString</key> + <string>650 41 440 400 0 0 1280 1002 </string> + </dict> + <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>windowTool.run</string> + <key>IsVertical</key> + <true/> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>LauncherConfigVersion</key> + <string>3</string> + <key>PBXProjectModuleGUID</key> + <string>1CD0528B0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string>Run</string> + <key>Runner</key> + <dict> + <key>HorizontalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {493, 167}}</string> + <string>{{0, 176}, {493, 267}}</string> + </array> + </dict> + <key>VerticalSplitView</key> + <dict> + <key>_collapsingFrameDimension</key> + <real>0.0</real> + <key>_indexOfCollapsedView</key> + <integer>0</integer> + <key>_percentageOfCollapsedView</key> + <real>0.0</real> + <key>isCollapsed</key> + <string>yes</string> + <key>sizes</key> + <array> + <string>{{0, 0}, {405, 443}}</string> + <string>{{414, 0}, {514, 443}}</string> + </array> + </dict> + </dict> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {459, 159}}</string> + <key>RubberWindowFrame</key> + <string>316 570 459 200 0 0 1280 832 </string> + </dict> + <key>Module</key> + <string>PBXRunSessionModule</string> + <key>Proportion</key> + <string>159pt</string> + </dict> + </array> + <key>Proportion</key> + <string>159pt</string> + </dict> + </array> + <key>Name</key> + <string>Run Log</string> + <key>ServiceClasses</key> + <array> + <string>PBXRunSessionModule</string> + </array> + <key>StatusbarIsVisible</key> + <true/> + <key>TableOfContents</key> + <array> + <string>1C0AD2B3069F1EA900FABCE6</string> + <string>92AA62E70C21BDEA007FAAD0</string> + <string>1CD0528B0623707200166675</string> + <string>92AA62E80C21BDEA007FAAD0</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.run</string> + <key>WindowString</key> + <string>316 570 459 200 0 0 1280 832 </string> + <key>WindowToolGUID</key> + <string>1C0AD2B3069F1EA900FABCE6</string> + <key>WindowToolIsVisible</key> + <false/> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.scm</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAB2065D492600B07095</string> + <key>PBXProjectModuleLabel</key> + <string><No Editor></string> + <key>PBXSplitModuleInNavigatorKey</key> + <dict> + <key>Split0</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1C78EAB3065D492600B07095</string> + </dict> + <key>SplitCount</key> + <string>1</string> + </dict> + <key>StatusBarVisibility</key> + <integer>1</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {452, 0}}</string> + <key>RubberWindowFrame</key> + <string>743 379 452 308 0 0 1280 1002 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>0pt</string> + </dict> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD052920623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string>SCM</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>ConsoleFrame</key> + <string>{{0, 259}, {452, 0}}</string> + <key>Frame</key> + <string>{{0, 7}, {452, 259}}</string> + <key>RubberWindowFrame</key> + <string>743 379 452 308 0 0 1280 1002 </string> + <key>TableConfiguration</key> + <array> + <string>Status</string> + <real>30</real> + <string>FileName</string> + <real>199</real> + <string>Path</string> + <real>197.09500122070312</real> + </array> + <key>TableFrame</key> + <string>{{0, 0}, {452, 250}}</string> + </dict> + <key>Module</key> + <string>PBXCVSModule</string> + <key>Proportion</key> + <string>262pt</string> + </dict> + </array> + <key>Proportion</key> + <string>266pt</string> + </dict> + </array> + <key>Name</key> + <string>SCM</string> + <key>ServiceClasses</key> + <array> + <string>PBXCVSModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1C78EAB4065D492600B07095</string> + <string>1C78EAB5065D492600B07095</string> + <string>1C78EAB2065D492600B07095</string> + <string>1CD052920623707200166675</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.scm</string> + <key>WindowString</key> + <string>743 379 452 308 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.breakpoints</string> + <key>IsVertical</key> + <integer>0</integer> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXProjectModuleGUID</key> + <string>1CE0B1FE06471DED0097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>no</string> + <key>PBXSmartGroupTreeModuleColumnData</key> + <dict> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>168</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>1C77FABC04509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> + <array> + <integer>0</integer> + </array> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {168, 350}}</string> + </dict> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <integer>0</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {185, 368}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>168</real> + </array> + <key>RubberWindowFrame</key> + <string>315 424 744 409 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXSmartGroupTreeModule</string> + <key>Proportion</key> + <string>185pt</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CA1AED706398EBD00589147</string> + <key>PBXProjectModuleLabel</key> + <string>Detail</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{190, 0}, {554, 368}}</string> + <key>RubberWindowFrame</key> + <string>315 424 744 409 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>XCDetailModule</string> + <key>Proportion</key> + <string>554pt</string> + </dict> + </array> + <key>Proportion</key> + <string>368pt</string> + </dict> + </array> + <key>MajorVersion</key> + <integer>2</integer> + <key>MinorVersion</key> + <integer>0</integer> + <key>Name</key> + <string>Breakpoints</string> + <key>ServiceClasses</key> + <array> + <string>PBXSmartGroupTreeModule</string> + <string>XCDetailModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>TableOfContents</key> + <array> + <string>1CDDB66807F98D9800BB5817</string> + <string>1CDDB66907F98D9800BB5817</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>1CA1AED706398EBD00589147</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.breakpoints</string> + <key>WindowString</key> + <string>315 424 744 409 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1CDDB66807F98D9800BB5817</string> + <key>WindowToolIsVisible</key> + <integer>1</integer> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.debugAnimator</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Debug Visualizer</string> + <key>ServiceClasses</key> + <array> + <string>PBXNavigatorGroup</string> + </array> + <key>StatusbarIsVisible</key> + <integer>1</integer> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.debugAnimator</string> + <key>WindowString</key> + <string>100 100 700 500 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.bookmarks</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>PBXBookmarksModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Bookmarks</string> + <key>ServiceClasses</key> + <array> + <string>PBXBookmarksModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>WindowString</key> + <string>538 42 401 187 0 0 1280 1002 </string> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.classBrowser</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>BecomeActive</key> + <integer>1</integer> + <key>ContentConfiguration</key> + <dict> + <key>OptionsSetName</key> + <string>Hierarchy, all classes</string> + <key>PBXProjectModuleGUID</key> + <string>1CA6456E063B45B4001379D8</string> + <key>PBXProjectModuleLabel</key> + <string>Class Browser - NSObject</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>ClassesFrame</key> + <string>{{0, 0}, {374, 96}}</string> + <key>ClassesTreeTableConfiguration</key> + <array> + <string>PBXClassNameColumnIdentifier</string> + <real>208</real> + <string>PBXClassBookColumnIdentifier</string> + <real>22</real> + </array> + <key>Frame</key> + <string>{{0, 0}, {630, 331}}</string> + <key>MembersFrame</key> + <string>{{0, 105}, {374, 395}}</string> + <key>MembersTreeTableConfiguration</key> + <array> + <string>PBXMemberTypeIconColumnIdentifier</string> + <real>22</real> + <string>PBXMemberNameColumnIdentifier</string> + <real>216</real> + <string>PBXMemberTypeColumnIdentifier</string> + <real>97</real> + <string>PBXMemberBookColumnIdentifier</string> + <real>22</real> + </array> + <key>PBXModuleWindowStatusBarHidden2</key> + <integer>1</integer> + <key>RubberWindowFrame</key> + <string>385 179 630 352 0 0 1440 878 </string> + </dict> + <key>Module</key> + <string>PBXClassBrowserModule</string> + <key>Proportion</key> + <string>332pt</string> + </dict> + </array> + <key>Proportion</key> + <string>332pt</string> + </dict> + </array> + <key>Name</key> + <string>Class Browser</string> + <key>ServiceClasses</key> + <array> + <string>PBXClassBrowserModule</string> + </array> + <key>StatusbarIsVisible</key> + <integer>0</integer> + <key>TableOfContents</key> + <array> + <string>1C0AD2AF069F1E9B00FABCE6</string> + <string>1C0AD2B0069F1E9B00FABCE6</string> + <string>1CA6456E063B45B4001379D8</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.classbrowser</string> + <key>WindowString</key> + <string>385 179 630 352 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1C0AD2AF069F1E9B00FABCE6</string> + <key>WindowToolIsVisible</key> + <integer>0</integer> + </dict> + </array> +</dict> +</plist> diff --git a/Aethyra.xcodeproj/trevor.perspectivev3 b/themanaworld.xcodeproj/garfield.mode1v3 index 1690f5d0..0076a8bc 100644 --- a/Aethyra.xcodeproj/trevor.perspectivev3 +++ b/themanaworld.xcodeproj/garfield.mode1v3 @@ -167,18 +167,16 @@ <string>Snapshots Tool</string> </dict> </array> - <key>BundlePath</key> - <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string> <key>Description</key> - <string>AIODescriptionKey</string> + <string>DefaultDescriptionKey</string> <key>DockingSystemVisible</key> <false/> <key>Extension</key> - <string>perspectivev3</string> + <string>mode1v3</string> <key>FavBarConfig</key> <dict> <key>PBXProjectModuleGUID</key> - <string>69E42B8C0F450BA40058B232</string> + <string>92A4CC870D1C46A000CA28FB</string> <key>XCBarModuleItemNames</key> <dict/> <key>XCBarModuleItems</key> @@ -187,42 +185,43 @@ <key>FirstTimeWindowDisplayed</key> <false/> <key>Identifier</key> - <string>com.apple.perspectives.project.defaultV3</string> + <string>com.apple.perspectives.project.mode1v3</string> <key>MajorVersion</key> - <integer>34</integer> + <integer>33</integer> <key>MinorVersion</key> <integer>0</integer> <key>Name</key> - <string>All-In-One</string> + <string>Default</string> <key>Notifications</key> <array/> <key>OpenEditors</key> <array/> <key>PerspectiveWidths</key> <array> - <integer>888</integer> - <integer>888</integer> + <integer>-1</integer> + <integer>-1</integer> </array> <key>Perspectives</key> <array> <dict> <key>ChosenToolbarItems</key> <array> - <string>XCToolbarPerspectiveControl</string> - <string>NSToolbarSeparatorItem</string> - <string>active-combo-popup</string> + <string>active-target-popup</string> + <string>active-buildstyle-popup</string> <string>action</string> <string>NSToolbarFlexibleSpaceItem</string> - <string>build-and-go</string> + <string>buildOrClean</string> + <string>build-and-goOrGo</string> <string>com.apple.ide.PBXToolbarStopButton</string> - <string>NSToolbarFlexibleSpaceItem</string> <string>get-info</string> + <string>toggle-editor</string> + <string>NSToolbarFlexibleSpaceItem</string> <string>com.apple.pbx.toolbar.searchfield</string> </array> <key>ControllerClassBaseName</key> <string></string> <key>IconName</key> - <string>WindowOfProject</string> + <string>WindowOfProjectWithEditor</string> <key>Identifier</key> <string>perspective.project</string> <key>IsVertical</key> @@ -243,10 +242,9 @@ <string>1C37FABC04509CD000100104</string> <string>1CC0EA4004350EF90044410B</string> <string>1CC0EA4004350EF90041110B</string> - <string>1C77FABC04509CD000000102</string> </array> <key>PBXProjectModuleGUID</key> - <string>1CA23ED40692098700951B8B</string> + <string>1CE0B1FE06471DED0097A5F4</string> <key>PBXProjectModuleLabel</key> <string>Files</string> <key>PBXProjectStructureProvided</key> @@ -255,7 +253,7 @@ <dict> <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> <array> - <real>185</real> + <real>186</real> </array> <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> <array> @@ -266,48 +264,43 @@ <dict> <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> <array> - <string>29B97314FDCFA39411CA2CEA</string> - <string>080E96DDFE201D6D7F000001</string> - <string>69E4305B0F451EF00058B232</string> - <string>69E431700F451EF00058B232</string> - <string>29B97315FDCFA39411CA2CEA</string> - <string>29B97317FDCFA39411CA2CEA</string> - <string>1C37FBAC04509CD000000102</string> + <string>20286C29FDCF999611CA2CEA</string> + <string>5048396909E3304600765E4B</string> + <string>20286C2CFDCF999611CA2CEA</string> </array> <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> <array> <array> - <integer>120</integer> - <integer>80</integer> - <integer>2</integer> <integer>1</integer> <integer>0</integer> </array> </array> <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 1693}, {185, 577}}</string> + <string>{{0, 0}, {186, 520}}</string> </dict> <key>PBXTopSmartGroupGIDs</key> <array/> <key>XCIncludePerspectivesSwitch</key> - <false/> + <true/> + <key>XCSharingToken</key> + <string>com.apple.Xcode.GFSharingToken</string> </dict> <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {202, 595}}</string> + <string>{{0, 0}, {203, 538}}</string> <key>GroupTreeTableConfiguration</key> <array> <string>MainColumn</string> - <real>185</real> + <real>186</real> </array> <key>RubberWindowFrame</key> - <string>232 242 888 636 0 0 1440 878 </string> + <string>670 363 780 579 0 0 1680 1028 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>202pt</string> + <string>203pt</string> </dict> <dict> <key>Dock</key> @@ -316,47 +309,41 @@ <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> - <string>69E42B800F450BA40058B232</string> + <string>1CE0B20306471E060097A5F4</string> <key>PBXProjectModuleLabel</key> - <string>music.h</string> + <string>Info.plist</string> <key>PBXSplitModuleInNavigatorKey</key> <dict> <key>Split0</key> <dict> <key>PBXProjectModuleGUID</key> - <string>69E42B810F450BA40058B232</string> + <string>1CE0B20406471E060097A5F4</string> <key>PBXProjectModuleLabel</key> - <string>music.h</string> + <string>Info.plist</string> <key>_historyCapacity</key> <integer>0</integer> <key>bookmark</key> - <string>694D2A7E0F45543600254953</string> + <string>927F62650ED4F41700D919E6</string> <key>history</key> <array> - <string>69E432D90F4527F50058B232</string> - <string>69E433420F452C7C0058B232</string> - <string>69E433430F452C7C0058B232</string> - <string>69E433440F452C7C0058B232</string> - <string>69E433450F452C7C0058B232</string> - <string>69E439D80F453D9B0058B232</string> - <string>69E439EB0F453E840058B232</string> - <string>694D2A790F45543600254953</string> - <string>694D2A7A0F45543600254953</string> - <string>694D2A7B0F45543600254953</string> + <string>92B1EBDE0ED4E43D009AF197</string> + <string>92B1EBF30ED4E5C5009AF197</string> + <string>927F625B0ED4F41700D919E6</string> + <string>927F625C0ED4F41700D919E6</string> + <string>927F625D0ED4F41700D919E6</string> </array> <key>prevStack</key> <array> - <string>69E432DB0F4527F50058B232</string> - <string>69E432DC0F4527F50058B232</string> - <string>69E432DD0F4527F50058B232</string> - <string>69E432DE0F4527F50058B232</string> - <string>69E433490F452C7C0058B232</string> - <string>69E4334A0F452C7C0058B232</string> - <string>69E4334B0F452C7C0058B232</string> - <string>69E439DA0F453D9B0058B232</string> - <string>69E439DB0F453D9B0058B232</string> - <string>694D2A7C0F45543600254953</string> - <string>694D2A7D0F45543600254953</string> + <string>92B1EBE00ED4E43D009AF197</string> + <string>92B1EBE10ED4E43D009AF197</string> + <string>92B1EBF50ED4E5C5009AF197</string> + <string>927F625E0ED4F41700D919E6</string> + <string>927F625F0ED4F41700D919E6</string> + <string>927F62600ED4F41700D919E6</string> + <string>927F62610ED4F41700D919E6</string> + <string>927F62620ED4F41700D919E6</string> + <string>927F62630ED4F41700D919E6</string> + <string>927F62640ED4F41700D919E6</string> </array> </dict> <key>SplitCount</key> @@ -364,105 +351,42 @@ </dict> <key>StatusBarVisibility</key> <true/> - <key>XCSharingToken</key> - <string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string> </dict> <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {681, 280}}</string> + <string>{{0, 0}, {572, 403}}</string> <key>RubberWindowFrame</key> - <string>232 242 888 636 0 0 1440 878 </string> + <string>670 363 780 579 0 0 1680 1028 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> <key>Proportion</key> - <string>280pt</string> + <string>403pt</string> </dict> <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CE0B20506471E060097A5F4</string> + <key>PBXProjectModuleLabel</key> + <string>Detail</string> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 408}, {572, 130}}</string> + <key>RubberWindowFrame</key> + <string>670 363 780 579 0 0 1680 1028 </string> + </dict> + <key>Module</key> + <string>XCDetailModule</string> <key>Proportion</key> - <string>310pt</string> - <key>Tabs</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CA23EDF0692099D00951B8B</string> - <key>PBXProjectModuleLabel</key> - <string>Detail</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{10, 27}, {681, 283}}</string> - </dict> - <key>Module</key> - <string>XCDetailModule</string> - </dict> - <dict> - <key>BecomeActive</key> - <true/> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CA23EE00692099D00951B8B</string> - <key>PBXProjectModuleLabel</key> - <string>Project Find</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{10, 27}, {681, 283}}</string> - <key>RubberWindowFrame</key> - <string>232 242 888 636 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXProjectFindModule</string> - </dict> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXCVSModuleFilterTypeKey</key> - <integer>1032</integer> - <key>PBXProjectModuleGUID</key> - <string>1CA23EE10692099D00951B8B</string> - <key>PBXProjectModuleLabel</key> - <string>SCM Results</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> - </dict> - <key>Module</key> - <string>PBXCVSModule</string> - </dict> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>XCMainBuildResultsModuleGUID</string> - <key>PBXProjectModuleLabel</key> - <string>Build</string> - <key>XCBuildResultsTrigger_Collapse</key> - <integer>1021</integer> - <key>XCBuildResultsTrigger_Open</key> - <integer>1011</integer> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{10, 27}, {681, 283}}</string> - </dict> - <key>Module</key> - <string>PBXBuildResultsModule</string> - </dict> - </array> + <string>130pt</string> </dict> </array> <key>Proportion</key> - <string>681pt</string> + <string>572pt</string> </dict> </array> <key>Name</key> @@ -473,184 +397,126 @@ <string>PBXSmartGroupTreeModule</string> <string>XCModuleDock</string> <string>PBXNavigatorGroup</string> - <string>XCDockableTabModule</string> <string>XCDetailModule</string> - <string>PBXProjectFindModule</string> - <string>PBXCVSModule</string> - <string>PBXBuildResultsModule</string> </array> <key>TableOfContents</key> <array> - <string>694D2A7F0F45543600254953</string> - <string>1CA23ED40692098700951B8B</string> - <string>694D2A800F45543600254953</string> - <string>69E42B800F450BA40058B232</string> - <string>694D2A810F45543600254953</string> - <string>1CA23EDF0692099D00951B8B</string> - <string>1CA23EE00692099D00951B8B</string> - <string>1CA23EE10692099D00951B8B</string> - <string>XCMainBuildResultsModuleGUID</string> + <string>927F621A0ED4EA6A00D919E6</string> + <string>1CE0B1FE06471DED0097A5F4</string> + <string>927F621B0ED4EA6A00D919E6</string> + <string>1CE0B20306471E060097A5F4</string> + <string>1CE0B20506471E060097A5F4</string> </array> <key>ToolbarConfiguration</key> <string>xcode.toolbar.config.defaultV3</string> </dict> <dict> - <key>ChosenToolbarItems</key> - <array> - <string>XCToolbarPerspectiveControl</string> - <string>NSToolbarSeparatorItem</string> - <string>active-combo-popup</string> - <string>NSToolbarFlexibleSpaceItem</string> - <string>build-and-go</string> - <string>com.apple.ide.PBXToolbarStopButton</string> - <string>debugger-restart-executable</string> - <string>debugger-pause</string> - <string>debugger-step-over</string> - <string>debugger-step-into</string> - <string>debugger-step-out</string> - <string>debugger-enable-breakpoints</string> - <string>NSToolbarFlexibleSpaceItem</string> - <string>com.apple.ide.XCBreakpointsToolbarItem</string> - <string>clear-log</string> - </array> <key>ControllerClassBaseName</key> - <string>PBXDebugSessionModule</string> + <string></string> <key>IconName</key> - <string>DebugTabIcon</string> + <string>WindowOfProject</string> <key>Identifier</key> - <string>perspective.debug</string> + <string>perspective.morph</string> <key>IsVertical</key> - <true/> + <false/> <key>Layout</key> <array> <dict> + <key>BecomeActive</key> + <integer>1</integer> <key>ContentConfiguration</key> <dict> + <key>PBXBottomSmartGroupGIDs</key> + <array> + <string>1C37FBAC04509CD000000102</string> + <string>1C37FAAC04509CD000000102</string> + <string>1C08E77C0454961000C914BD</string> + <string>1C37FABC05509CD000000102</string> + <string>1C37FABC05539CD112110102</string> + <string>E2644B35053B69B200211256</string> + <string>1C37FABC04509CD000100104</string> + <string>1CC0EA4004350EF90044410B</string> + <string>1CC0EA4004350EF90041110B</string> + </array> <key>PBXProjectModuleGUID</key> - <string>1CCC7628064C1048000F2A68</string> + <string>11E0B1FE06471DED0097A5F4</string> <key>PBXProjectModuleLabel</key> - <string>Debugger Console</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {888, 0}}</string> - </dict> - <key>Module</key> - <string>PBXDebugCLIModule</string> - <key>Proportion</key> - <string>0pt</string> - </dict> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>Debugger</key> + <string>Files</string> + <key>PBXProjectStructureProvided</key> + <string>yes</string> + <key>PBXSmartGroupTreeModuleColumnData</key> <dict> - <key>HorizontalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {433, 287}}</string> - <string>{{433, 0}, {455, 287}}</string> - </array> - </dict> - <key>VerticalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> + <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> + <array> + <real>186</real> + </array> + <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> + <array> + <string>MainColumn</string> + </array> + </dict> + <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> + <dict> + <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> + <array> + <string>29B97314FDCFA39411CA2CEA</string> + <string>1C37FABC05509CD000000102</string> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> + <array> <array> - <string>{{0, 0}, {888, 287}}</string> - <string>{{0, 287}, {888, 303}}</string> + <integer>0</integer> </array> - </dict> + </array> + <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> + <string>{{0, 0}, {186, 337}}</string> </dict> - <key>LauncherConfigVersion</key> - <string>8</string> - <key>PBXProjectModuleGUID</key> - <string>1CCC7629064C1048000F2A68</string> - <key>PBXProjectModuleLabel</key> - <string>Debug</string> + <key>PBXTopSmartGroupGIDs</key> + <array/> + <key>XCIncludePerspectivesSwitch</key> + <integer>1</integer> + <key>XCSharingToken</key> + <string>com.apple.Xcode.GFSharingToken</string> </dict> <key>GeometryConfiguration</key> <dict> - <key>DebugConsoleVisible</key> - <string>None</string> - <key>DebugConsoleWindowFrame</key> - <string>{{200, 200}, {500, 300}}</string> - <key>DebugSTDIOWindowFrame</key> - <string>{{200, 200}, {500, 300}}</string> <key>Frame</key> - <string>{{0, 5}, {888, 590}}</string> - <key>PBXDebugSessionStackFrameViewKey</key> - <dict> - <key>DebugVariablesTableConfiguration</key> - <array> - <string>Name</string> - <real>120</real> - <string>Value</string> - <real>85</real> - <string>Summary</string> - <real>225</real> - </array> - <key>Frame</key> - <string>{{433, 0}, {455, 287}}</string> - </dict> + <string>{{0, 0}, {203, 355}}</string> + <key>GroupTreeTableConfiguration</key> + <array> + <string>MainColumn</string> + <real>186</real> + </array> + <key>RubberWindowFrame</key> + <string>373 269 690 397 0 0 1440 878 </string> </dict> <key>Module</key> - <string>PBXDebugSessionModule</string> + <string>PBXSmartGroupTreeModule</string> <key>Proportion</key> - <string>590pt</string> + <string>100%</string> </dict> </array> <key>Name</key> - <string>Debug</string> + <string>Morph</string> + <key>PreferredWidth</key> + <integer>300</integer> <key>ServiceClasses</key> <array> <string>XCModuleDock</string> - <string>PBXDebugCLIModule</string> - <string>PBXDebugSessionModule</string> - <string>PBXDebugProcessAndThreadModule</string> - <string>PBXDebugProcessViewModule</string> - <string>PBXDebugThreadViewModule</string> - <string>PBXDebugStackFrameViewModule</string> - <string>PBXNavigatorGroup</string> + <string>PBXSmartGroupTreeModule</string> </array> <key>TableOfContents</key> <array> - <string>697E849B0F454F9400BD2714</string> - <string>1CCC7628064C1048000F2A68</string> - <string>1CCC7629064C1048000F2A68</string> - <string>697E849C0F454F9400BD2714</string> - <string>697E849D0F454F9400BD2714</string> - <string>697E849E0F454F9400BD2714</string> - <string>697E849F0F454F9400BD2714</string> - <string>697E84A00F454F9400BD2714</string> + <string>11E0B1FE06471DED0097A5F4</string> </array> <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.debugV3</string> + <string>xcode.toolbar.config.default.shortV3</string> </dict> </array> <key>PerspectivesBarVisible</key> - <true/> + <false/> <key>ShelfIsVisible</key> <false/> - <key>SourceDescription</key> - <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec'</string> <key>StatusbarIsVisible</key> <true/> <key>TimeStamp</key> @@ -664,20 +530,116 @@ <key>Type</key> <string>Perspectives</string> <key>UpdateMessage</key> - <string></string> + <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string> <key>WindowJustification</key> <integer>5</integer> <key>WindowOrderList</key> <array> - <string>/Users/trevor/Desktop/Aethyra/Aethyra/Aethyra.xcodeproj</string> + <string>92A4CC8A0D1C5F1E00CA28FB</string> + <string>1CD10A99069EF8BA00B06720</string> + <string>1C78EAAD065D492600B07095</string> + <string>/Users/garfield/programming/tmwclient/themanaworld.xcodeproj</string> </array> <key>WindowString</key> - <string>232 242 888 636 0 0 1440 878 </string> + <string>670 363 780 579 0 0 1680 1028 </string> <key>WindowToolsV3</key> <array> <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> + <key>Identifier</key> + <string>windowTool.build</string> + <key>IsVertical</key> + <true/> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXProjectModuleGUID</key> + <string>1CD0528F0623707200166675</string> + <key>PBXProjectModuleLabel</key> + <string></string> + <key>StatusBarVisibility</key> + <true/> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 0}, {553, 151}}</string> + <key>RubberWindowFrame</key> + <string>490 365 553 548 0 0 1680 1028 </string> + </dict> + <key>Module</key> + <string>PBXNavigatorGroup</string> + <key>Proportion</key> + <string>151pt</string> + </dict> + <dict> + <key>ContentConfiguration</key> + <dict> + <key>PBXBuildLogShowsTranscriptDefaultKey</key> + <string>{{0, 166}, {553, 185}}</string> + <key>PBXProjectModuleGUID</key> + <string>XCMainBuildResultsModuleGUID</string> + <key>PBXProjectModuleLabel</key> + <string>Build</string> + <key>XCBuildResultsTrigger_Collapse</key> + <integer>1021</integer> + <key>XCBuildResultsTrigger_Open</key> + <integer>1011</integer> + </dict> + <key>GeometryConfiguration</key> + <dict> + <key>Frame</key> + <string>{{0, 156}, {553, 351}}</string> + <key>RubberWindowFrame</key> + <string>490 365 553 548 0 0 1680 1028 </string> + </dict> + <key>Module</key> + <string>PBXBuildResultsModule</string> + <key>Proportion</key> + <string>351pt</string> + </dict> + </array> + <key>Proportion</key> + <string>507pt</string> + </dict> + </array> + <key>Name</key> + <string>Build Results</string> + <key>ServiceClasses</key> + <array> + <string>PBXBuildResultsModule</string> + </array> + <key>StatusbarIsVisible</key> + <true/> + <key>TableOfContents</key> + <array> + <string>92A4CC8A0D1C5F1E00CA28FB</string> + <string>927F623B0ED4EBEB00D919E6</string> + <string>1CD0528F0623707200166675</string> + <string>XCMainBuildResultsModuleGUID</string> + </array> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.buildV3</string> + <key>WindowString</key> + <string>490 365 553 548 0 0 1680 1028 </string> + <key>WindowToolGUID</key> + <string>92A4CC8A0D1C5F1E00CA28FB</string> + <key>WindowToolIsVisible</key> + <false/> + </dict> + <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> <key>Identifier</key> <string>windowTool.debugger</string> + <key>IsVertical</key> + <true/> <key>Layout</key> <array> <dict> @@ -700,8 +662,8 @@ <string>yes</string> <key>sizes</key> <array> - <string>{{0, 0}, {317, 164}}</string> - <string>{{317, 0}, {377, 164}}</string> + <string>{{0, 0}, {316, 203}}</string> + <string>{{316, 0}, {378, 203}}</string> </array> </dict> <key>VerticalSplitView</key> @@ -716,8 +678,8 @@ <string>yes</string> <key>sizes</key> <array> - <string>{{0, 0}, {694, 164}}</string> - <string>{{0, 164}, {694, 216}}</string> + <string>{{0, 0}, {694, 203}}</string> + <string>{{0, 203}, {694, 178}}</string> </array> </dict> </dict> @@ -730,8 +692,6 @@ </dict> <key>GeometryConfiguration</key> <dict> - <key>DebugConsoleDrawerSize</key> - <string>{100, 120}</string> <key>DebugConsoleVisible</key> <string>None</string> <key>DebugConsoleWindowFrame</key> @@ -739,18 +699,34 @@ <key>DebugSTDIOWindowFrame</key> <string>{{200, 200}, {500, 300}}</string> <key>Frame</key> - <string>{{0, 0}, {694, 380}}</string> + <string>{{0, 0}, {694, 381}}</string> + <key>PBXDebugSessionStackFrameViewKey</key> + <dict> + <key>DebugVariablesTableConfiguration</key> + <array> + <string>Name</string> + <real>120</real> + <string>Value</string> + <real>85</real> + <string>Summary</string> + <real>986</real> + </array> + <key>Frame</key> + <string>{{316, 0}, {378, 203}}</string> + <key>RubberWindowFrame</key> + <string>348 319 694 422 0 0 1680 1028 </string> + </dict> <key>RubberWindowFrame</key> - <string>321 238 694 422 0 0 1440 878 </string> + <string>348 319 694 422 0 0 1680 1028 </string> </dict> <key>Module</key> <string>PBXDebugSessionModule</string> <key>Proportion</key> - <string>100%</string> + <string>381pt</string> </dict> </array> <key>Proportion</key> - <string>100%</string> + <string>381pt</string> </dict> </array> <key>Name</key> @@ -760,113 +736,34 @@ <string>PBXDebugSessionModule</string> </array> <key>StatusbarIsVisible</key> - <integer>1</integer> + <true/> <key>TableOfContents</key> <array> <string>1CD10A99069EF8BA00B06720</string> - <string>1C0AD2AB069F1E9B00FABCE6</string> + <string>927F621D0ED4EA6A00D919E6</string> <string>1C162984064C10D400B95A72</string> - <string>1C0AD2AC069F1E9B00FABCE6</string> + <string>927F621E0ED4EA6A00D919E6</string> + <string>927F621F0ED4EA6A00D919E6</string> + <string>927F62200ED4EA6A00D919E6</string> + <string>927F62210ED4EA6A00D919E6</string> + <string>927F62220ED4EA6A00D919E6</string> </array> <key>ToolbarConfiguration</key> <string>xcode.toolbar.config.debugV3</string> <key>WindowString</key> - <string>321 238 694 422 0 0 1440 878 </string> + <string>348 319 694 422 0 0 1680 1028 </string> <key>WindowToolGUID</key> <string>1CD10A99069EF8BA00B06720</string> <key>WindowToolIsVisible</key> - <integer>0</integer> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.build</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD0528F0623707200166675</string> - <key>PBXProjectModuleLabel</key> - <string><No Editor></string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD052900623707200166675</string> - </dict> - <key>SplitCount</key> - <string>1</string> - </dict> - <key>StatusBarVisibility</key> - <integer>1</integer> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {500, 215}}</string> - <key>RubberWindowFrame</key> - <string>192 257 500 500 0 0 1280 1002 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>218pt</string> - </dict> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>XCMainBuildResultsModuleGUID</string> - <key>PBXProjectModuleLabel</key> - <string>Build</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 222}, {500, 236}}</string> - <key>RubberWindowFrame</key> - <string>192 257 500 500 0 0 1280 1002 </string> - </dict> - <key>Module</key> - <string>PBXBuildResultsModule</string> - <key>Proportion</key> - <string>236pt</string> - </dict> - </array> - <key>Proportion</key> - <string>458pt</string> - </dict> - </array> - <key>Name</key> - <string>Build Results</string> - <key>ServiceClasses</key> - <array> - <string>PBXBuildResultsModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>TableOfContents</key> - <array> - <string>1C78EAA5065D492600B07095</string> - <string>1C78EAA6065D492600B07095</string> - <string>1CD0528F0623707200166675</string> - <string>XCMainBuildResultsModuleGUID</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.buildV3</string> - <key>WindowString</key> - <string>192 257 500 500 0 0 1280 1002 </string> + <true/> </dict> <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> <key>Identifier</key> <string>windowTool.find</string> + <key>IsVertical</key> + <true/> <key>Layout</key> <array> <dict> @@ -882,25 +779,15 @@ <string>1CDD528C0622207200134675</string> <key>PBXProjectModuleLabel</key> <string><No Editor></string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD0528D0623707200166675</string> - </dict> - <key>SplitCount</key> - <string>1</string> - </dict> <key>StatusBarVisibility</key> - <integer>1</integer> + <true/> </dict> <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {781, 167}}</string> + <string>{{0, 0}, {781, 212}}</string> <key>RubberWindowFrame</key> - <string>62 385 781 470 0 0 1440 878 </string> + <string>212 362 781 470 0 0 1280 832 </string> </dict> <key>Module</key> <string>PBXNavigatorGroup</string> @@ -909,11 +796,9 @@ </dict> </array> <key>Proportion</key> - <string>50%</string> + <string>212pt</string> </dict> <dict> - <key>BecomeActive</key> - <integer>1</integer> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -924,18 +809,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{8, 0}, {773, 254}}</string> + <string>{{0, 217}, {781, 212}}</string> <key>RubberWindowFrame</key> - <string>62 385 781 470 0 0 1440 878 </string> + <string>212 362 781 470 0 0 1280 832 </string> </dict> <key>Module</key> <string>PBXProjectFindModule</string> <key>Proportion</key> - <string>50%</string> + <string>212pt</string> </dict> </array> <key>Proportion</key> - <string>428pt</string> + <string>429pt</string> </dict> </array> <key>Name</key> @@ -945,61 +830,35 @@ <string>PBXProjectFindModule</string> </array> <key>StatusbarIsVisible</key> - <integer>1</integer> + <true/> <key>TableOfContents</key> <array> <string>1C530D57069F1CE1000CFCEE</string> - <string>1C530D58069F1CE1000CFCEE</string> - <string>1C530D59069F1CE1000CFCEE</string> + <string>92983E440D3A6D3600350ADB</string> + <string>92983E450D3A6D3600350ADB</string> <string>1CDD528C0622207200134675</string> - <string>1C530D5A069F1CE1000CFCEE</string> - <string>1CE0B1FE06471DED0097A5F4</string> <string>1CD0528E0623707200166675</string> </array> <key>WindowString</key> - <string>62 385 781 470 0 0 1440 878 </string> + <string>212 362 781 470 0 0 1280 832 </string> <key>WindowToolGUID</key> <string>1C530D57069F1CE1000CFCEE</string> <key>WindowToolIsVisible</key> - <integer>0</integer> + <false/> </dict> <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> <key>Identifier</key> - <string>windowTool.snapshots</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Module</key> - <string>XCSnapshotModule</string> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Name</key> - <string>Snapshots</string> - <key>ServiceClasses</key> - <array> - <string>XCSnapshotModule</string> - </array> - <key>StatusbarIsVisible</key> - <string>Yes</string> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.snapshots</string> - <key>WindowString</key> - <string>315 824 300 550 0 0 1440 878 </string> - <key>WindowToolIsVisible</key> - <string>Yes</string> + <string>MENUSEPARATOR</string> </dict> <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> <key>Identifier</key> <string>windowTool.debuggerConsole</string> + <key>IsVertical</key> + <true/> <key>Layout</key> <array> <dict> @@ -1007,7 +866,7 @@ <array> <dict> <key>BecomeActive</key> - <integer>1</integer> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -1018,18 +877,18 @@ <key>GeometryConfiguration</key> <dict> <key>Frame</key> - <string>{{0, 0}, {700, 358}}</string> + <string>{{0, 0}, {440, 359}}</string> <key>RubberWindowFrame</key> - <string>149 87 700 400 0 0 1440 878 </string> + <string>655 284 440 400 0 0 1680 1028 </string> </dict> <key>Module</key> <string>PBXDebugCLIModule</string> <key>Proportion</key> - <string>358pt</string> + <string>359pt</string> </dict> </array> <key>Proportion</key> - <string>358pt</string> + <string>359pt</string> </dict> </array> <key>Name</key> @@ -1039,23 +898,59 @@ <string>PBXDebugCLIModule</string> </array> <key>StatusbarIsVisible</key> - <integer>1</integer> + <true/> <key>TableOfContents</key> <array> - <string>1C530D5B069F1CE1000CFCEE</string> - <string>1C530D5C069F1CE1000CFCEE</string> + <string>1C78EAAD065D492600B07095</string> + <string>927F623C0ED4EBEB00D919E6</string> <string>1C78EAAC065D492600B07095</string> </array> <key>ToolbarConfiguration</key> <string>xcode.toolbar.config.consoleV3</string> <key>WindowString</key> - <string>149 87 440 400 0 0 1440 878 </string> + <string>655 284 440 400 0 0 1680 1028 </string> <key>WindowToolGUID</key> - <string>1C530D5B069F1CE1000CFCEE</string> + <string>1C78EAAD065D492600B07095</string> <key>WindowToolIsVisible</key> - <integer>0</integer> + <true/> + </dict> + <dict> + <key>Identifier</key> + <string>windowTool.snapshots</string> + <key>Layout</key> + <array> + <dict> + <key>Dock</key> + <array> + <dict> + <key>Module</key> + <string>XCSnapshotModule</string> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Proportion</key> + <string>100%</string> + </dict> + </array> + <key>Name</key> + <string>Snapshots</string> + <key>ServiceClasses</key> + <array> + <string>XCSnapshotModule</string> + </array> + <key>StatusbarIsVisible</key> + <string>Yes</string> + <key>ToolbarConfiguration</key> + <string>xcode.toolbar.config.snapshots</string> + <key>WindowString</key> + <string>315 824 300 550 0 0 1440 878 </string> + <key>WindowToolIsVisible</key> + <string>Yes</string> </dict> <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> <key>Identifier</key> <string>windowTool.scm</string> <key>Layout</key> @@ -1142,7 +1037,7 @@ <string>PBXCVSModule</string> </array> <key>StatusbarIsVisible</key> - <integer>1</integer> + <true/> <key>TableOfContents</key> <array> <string>1C78EAB4065D492600B07095</string> @@ -1151,23 +1046,23 @@ <string>1CD052920623707200166675</string> </array> <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.scmV3</string> + <string>xcode.toolbar.config.scm</string> <key>WindowString</key> <string>743 379 452 308 0 0 1280 1002 </string> </dict> <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> <key>Identifier</key> <string>windowTool.breakpoints</string> <key>IsVertical</key> - <integer>0</integer> + <false/> <key>Layout</key> <array> <dict> <key>Dock</key> <array> <dict> - <key>BecomeActive</key> - <integer>1</integer> <key>ContentConfiguration</key> <dict> <key>PBXBottomSmartGroupGIDs</key> @@ -1209,7 +1104,7 @@ <key>PBXTopSmartGroupGIDs</key> <array/> <key>XCIncludePerspectivesSwitch</key> - <integer>0</integer> + <false/> </dict> <key>GeometryConfiguration</key> <dict> @@ -1221,7 +1116,7 @@ <real>168</real> </array> <key>RubberWindowFrame</key> - <string>315 424 744 409 0 0 1440 878 </string> + <string>243 383 744 409 0 0 1280 832 </string> </dict> <key>Module</key> <string>PBXSmartGroupTreeModule</string> @@ -1229,6 +1124,8 @@ <string>185pt</string> </dict> <dict> + <key>BecomeActive</key> + <true/> <key>ContentConfiguration</key> <dict> <key>PBXProjectModuleGUID</key> @@ -1241,7 +1138,7 @@ <key>Frame</key> <string>{{190, 0}, {554, 368}}</string> <key>RubberWindowFrame</key> - <string>315 424 744 409 0 0 1440 878 </string> + <string>243 383 744 409 0 0 1280 832 </string> </dict> <key>Module</key> <string>XCDetailModule</string> @@ -1265,24 +1162,26 @@ <string>XCDetailModule</string> </array> <key>StatusbarIsVisible</key> - <integer>1</integer> + <true/> <key>TableOfContents</key> <array> - <string>1CDDB66807F98D9800BB5817</string> - <string>1CDDB66907F98D9800BB5817</string> + <string>92EE9EF30D2E0CA400DDE300</string> + <string>92EE9EF40D2E0CA400DDE300</string> <string>1CE0B1FE06471DED0097A5F4</string> <string>1CA1AED706398EBD00589147</string> </array> <key>ToolbarConfiguration</key> <string>xcode.toolbar.config.breakpointsV3</string> <key>WindowString</key> - <string>315 424 744 409 0 0 1440 878 </string> + <string>243 383 744 409 0 0 1280 832 </string> <key>WindowToolGUID</key> - <string>1CDDB66807F98D9800BB5817</string> + <string>92EE9EF30D2E0CA400DDE300</string> <key>WindowToolIsVisible</key> - <integer>1</integer> + <false/> </dict> <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> <key>Identifier</key> <string>windowTool.debugAnimator</string> <key>Layout</key> @@ -1308,13 +1207,15 @@ <string>PBXNavigatorGroup</string> </array> <key>StatusbarIsVisible</key> - <integer>1</integer> + <true/> <key>ToolbarConfiguration</key> <string>xcode.toolbar.config.debugAnimatorV3</string> <key>WindowString</key> <string>100 100 700 500 0 0 1280 1002 </string> </dict> <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> <key>Identifier</key> <string>windowTool.bookmarks</string> <key>Layout</key> @@ -1326,11 +1227,11 @@ <key>Module</key> <string>PBXBookmarksModule</string> <key>Proportion</key> - <string>166pt</string> + <string>100%</string> </dict> </array> <key>Proportion</key> - <string>166pt</string> + <string>100%</string> </dict> </array> <key>Name</key> @@ -1340,7 +1241,7 @@ <string>PBXBookmarksModule</string> </array> <key>StatusbarIsVisible</key> - <integer>0</integer> + <false/> <key>WindowString</key> <string>538 42 401 187 0 0 1280 1002 </string> </dict> @@ -1370,13 +1271,15 @@ <string>XCProjectFormatConflictsModule</string> </array> <key>StatusbarIsVisible</key> - <integer>0</integer> + <false/> <key>WindowContentMinSize</key> <string>450 300</string> <key>WindowString</key> <string>50 850 472 307 0 0 1440 877</string> </dict> <dict> + <key>FirstTimeWindowDisplayed</key> + <false/> <key>Identifier</key> <string>windowTool.classBrowser</string> <key>Layout</key> @@ -1399,7 +1302,7 @@ <key>GeometryConfiguration</key> <dict> <key>ClassesFrame</key> - <string>{{0, 0}, {369, 96}}</string> + <string>{{0, 0}, {374, 96}}</string> <key>ClassesTreeTableConfiguration</key> <array> <string>PBXClassNameColumnIdentifier</string> @@ -1408,9 +1311,9 @@ <real>22</real> </array> <key>Frame</key> - <string>{{0, 0}, {616, 353}}</string> + <string>{{0, 0}, {630, 331}}</string> <key>MembersFrame</key> - <string>{{0, 105}, {369, 395}}</string> + <string>{{0, 105}, {374, 395}}</string> <key>MembersTreeTableConfiguration</key> <array> <string>PBXMemberTypeIconColumnIdentifier</string> @@ -1418,23 +1321,23 @@ <string>PBXMemberNameColumnIdentifier</string> <real>216</real> <string>PBXMemberTypeColumnIdentifier</string> - <real>94</real> + <real>97</real> <string>PBXMemberBookColumnIdentifier</string> <real>22</real> </array> <key>PBXModuleWindowStatusBarHidden2</key> <integer>1</integer> <key>RubberWindowFrame</key> - <string>597 125 616 374 0 0 1280 1002 </string> + <string>385 179 630 352 0 0 1440 878 </string> </dict> <key>Module</key> <string>PBXClassBrowserModule</string> <key>Proportion</key> - <string>354pt</string> + <string>332pt</string> </dict> </array> <key>Proportion</key> - <string>354pt</string> + <string>332pt</string> </dict> </array> <key>Name</key> @@ -1444,23 +1347,27 @@ <string>PBXClassBrowserModule</string> </array> <key>StatusbarIsVisible</key> - <integer>0</integer> + <false/> <key>TableOfContents</key> <array> - <string>1C78EABA065D492600B07095</string> - <string>1C78EABB065D492600B07095</string> + <string>1C0AD2AF069F1E9B00FABCE6</string> + <string>1C0AD2B0069F1E9B00FABCE6</string> <string>1CA6456E063B45B4001379D8</string> </array> <key>ToolbarConfiguration</key> <string>xcode.toolbar.config.classbrowser</string> <key>WindowString</key> - <string>597 125 616 374 0 0 1280 1002 </string> + <string>385 179 630 352 0 0 1440 878 </string> + <key>WindowToolGUID</key> + <string>1C0AD2AF069F1E9B00FABCE6</string> + <key>WindowToolIsVisible</key> + <false/> </dict> <dict> <key>Identifier</key> <string>windowTool.refactoring</string> <key>IncludeInToolsMenu</key> - <integer>0</integer> + <false/> <key>Layout</key> <array> <dict> @@ -1468,7 +1375,7 @@ <array> <dict> <key>BecomeActive</key> - <integer>1</integer> + <true/> <key>GeometryConfiguration</key> <dict> <key>Frame</key> diff --git a/themanaworld.xcodeproj/garfield.pbxuser b/themanaworld.xcodeproj/garfield.pbxuser new file mode 100644 index 00000000..42957a89 --- /dev/null +++ b/themanaworld.xcodeproj/garfield.pbxuser @@ -0,0 +1,925 @@ +// !$*UTF8*$! +{ + 20286C28FDCF999611CA2CEA /* Project object */ = { + activeBuildConfigurationName = Release; + activeExecutable = 92BC3EBC0BAEE3BB000DAB7F /* themanaworld */; + activeTarget = 8D0C4E890486CD37000505A6 /* themanaworld */; + addToTargets = ( + 8D0C4E890486CD37000505A6 /* themanaworld */, + ); + breakpoints = ( + ); + codeSenseManager = 92BC3EC90BAEE3C8000DAB7F /* Code sense */; + executables = ( + 92BC3EBC0BAEE3BB000DAB7F /* themanaworld */, + ); + perUserDictionary = { + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 216, + 20, + 100, + 99, + 10, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_IgnoreCountID, + PBXBreakpointsDataSource_ContinueID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 300, + 133, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXErrorsWarningsDataSource_TypeID, + PBXErrorsWarningsDataSource_MessageID, + PBXErrorsWarningsDataSource_LocationID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; + PBXFileTableDataSourceColumnWidthsKey = ( + 22, + 300, + 131, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXExecutablesDataSource_ActiveFlagID, + PBXExecutablesDataSource_NameID, + PBXExecutablesDataSource_CommentsID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 333, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 219, + 20, + 48.1626, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_SCM_ColumnID, + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 293, + 60, + 20, + 48, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 249045476; + PBXWorkspaceStateSaveDate = 249045476; + }; + perUserProjectItems = { + 927F625B0ED4F41700D919E6 = 927F625B0ED4F41700D919E6 /* PBXTextBookmark */; + 927F625C0ED4F41700D919E6 = 927F625C0ED4F41700D919E6 /* PBXTextBookmark */; + 927F625D0ED4F41700D919E6 = 927F625D0ED4F41700D919E6 /* PlistBookmark */; + 927F625E0ED4F41700D919E6 = 927F625E0ED4F41700D919E6 /* PlistBookmark */; + 927F625F0ED4F41700D919E6 = 927F625F0ED4F41700D919E6 /* PBXTextBookmark */; + 927F62600ED4F41700D919E6 = 927F62600ED4F41700D919E6 /* PBXTextBookmark */; + 927F62610ED4F41700D919E6 = 927F62610ED4F41700D919E6 /* PlistBookmark */; + 927F62620ED4F41700D919E6 = 927F62620ED4F41700D919E6 /* PBXTextBookmark */; + 927F62630ED4F41700D919E6 = 927F62630ED4F41700D919E6 /* PlistBookmark */; + 927F62640ED4F41700D919E6 = 927F62640ED4F41700D919E6 /* PBXTextBookmark */; + 927F62650ED4F41700D919E6 = 927F62650ED4F41700D919E6 /* PlistBookmark */; + 92B1EBDE0ED4E43D009AF197 = 92B1EBDE0ED4E43D009AF197 /* PBXTextBookmark */; + 92B1EBE00ED4E43D009AF197 = 92B1EBE00ED4E43D009AF197 /* PBXTextBookmark */; + 92B1EBE10ED4E43D009AF197 = 92B1EBE10ED4E43D009AF197 /* PBXTextBookmark */; + 92B1EBF30ED4E5C5009AF197 = 92B1EBF30ED4E5C5009AF197 /* PBXTextBookmark */; + 92B1EBF50ED4E5C5009AF197 = 92B1EBF50ED4E5C5009AF197 /* PBXTextBookmark */; + }; + sourceControlManager = 92BC3EC80BAEE3C8000DAB7F /* Source Control */; + userBuildSettings = { + }; + }; + 8D0C4E890486CD37000505A6 /* themanaworld */ = { + activeExec = 0; + executables = ( + 92BC3EBC0BAEE3BB000DAB7F /* themanaworld */, + ); + }; + 92024E740CF1DCF6006B55CB /* imageloader.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1400}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1434, 1155}"; + sepNavWindowFrame = "{{65, 113}, {627, 714}}"; + }; + }; + 92037A190ED2035A00D3712D /* SDLMain.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {802, 506}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 307}"; + sepNavWindowFrame = "{{15, 389}, {861, 634}}"; + }; + }; + 924A42600C0874D00066885E /* Info.plist */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {674, 474}}"; + sepNavSelRange = "{418, 0}"; + sepNavVisRange = "{0, 771}"; + sepNavVisRect = "{{0, 0}, {557, 473}}"; + sepNavWindowFrame = "{{192, 99}, {602, 602}}"; + }; + }; + 926F9CF60DB005FA00AACD26 /* itemshortcut.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 1302}}"; + sepNavSelRange = "{1424, 0}"; + sepNavVisRange = "{1251, 209}"; + }; + }; + 927F625B0ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92037A190ED2035A00D3712D /* SDLMain.h */; + name = "SDLMain.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 307; + vrLoc = 0; + }; + 927F625C0ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; + name = "SDLMain.m: 14"; + rLen = 0; + rLoc = 440; + rType = 0; + vrLen = 759; + vrLoc = 0; + }; + 927F625D0ED4F41700D919E6 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 924A42600C0874D00066885E /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + ); + name = /Users/garfield/programming/tmwclient/Info.plist; + rLen = 0; + rLoc = 2147483647; + }; + 927F625E0ED4F41700D919E6 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 924A42600C0874D00066885E /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + NSPrincipalClass, + ); + name = /Users/garfield/programming/tmwclient/Info.plist; + rLen = 0; + rLoc = 2147483647; + }; + 927F625F0ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92037A190ED2035A00D3712D /* SDLMain.h */; + name = "SDLMain.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 307; + vrLoc = 0; + }; + 927F62600ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; + name = "SDLMain.m: 14"; + rLen = 0; + rLoc = 440; + rType = 0; + vrLen = 635; + vrLoc = 124; + }; + 927F62610ED4F41700D919E6 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 924A42600C0874D00066885E /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + NSPrincipalClass, + ); + name = /Users/garfield/programming/tmwclient/Info.plist; + rLen = 0; + rLoc = 2147483647; + }; + 927F62620ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; + name = "SDLMain.m: 14"; + rLen = 0; + rLoc = 440; + rType = 0; + vrLen = 643; + vrLoc = 7053; + }; + 927F62630ED4F41700D919E6 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 924A42600C0874D00066885E /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + ); + name = /Users/garfield/programming/tmwclient/Info.plist; + rLen = 0; + rLoc = 2147483647; + }; + 927F62640ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; + name = "SDLMain.m: 14"; + rLen = 0; + rLoc = 440; + rType = 0; + vrLen = 759; + vrLoc = 0; + }; + 927F62650ED4F41700D919E6 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 924A42600C0874D00066885E /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + CFBundleVersion, + ); + name = /Users/garfield/programming/tmwclient/Info.plist; + rLen = 0; + rLoc = 2147483647; + }; + 92A4CCE70D1DA58D00CA28FB /* zip.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 20230}}"; + sepNavSelRange = "{229, 19}"; + sepNavVisRange = "{0, 1138}"; + sepNavWindowFrame = "{{180, 8}, {627, 714}}"; + }; + }; + 92A4CCF10D1DA5A800CA28FB /* physfs_platforms.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 586}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1165}"; + sepNavWindowFrame = "{{88, 92}, {627, 714}}"; + }; + }; + 92A4CCF20D1DA5C600CA28FB /* macosx.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {720, 5558}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 961}"; + sepNavWindowFrame = "{{180, 8}, {627, 714}}"; + }; + }; + 92B1EBDE0ED4E43D009AF197 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC3F660BAEE55B000DAB7F /* viewport.cpp */; + name = "viewport.cpp: 261"; + rLen = 63; + rLoc = 7873; + rType = 0; + vrLen = 780; + vrLoc = 7501; + }; + 92B1EBE00ED4E43D009AF197 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; + name = "SDLMain.m: 14"; + rLen = 0; + rLoc = 440; + rType = 0; + vrLen = 759; + vrLoc = 0; + }; + 92B1EBE10ED4E43D009AF197 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC3F660BAEE55B000DAB7F /* viewport.cpp */; + name = "viewport.cpp: 261"; + rLen = 63; + rLoc = 7873; + rType = 0; + vrLen = 780; + vrLoc = 7501; + }; + 92B1EBF30ED4E5C5009AF197 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC3EEF0BAEE55A000DAB7F /* graphics.h */; + name = "graphics.h: 25"; + rLen = 39; + rLoc = 879; + rType = 0; + vrLen = 692; + vrLoc = 434; + }; + 92B1EBF50ED4E5C5009AF197 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC3EEF0BAEE55A000DAB7F /* graphics.h */; + name = "graphics.h: 25"; + rLen = 39; + rLoc = 879; + rType = 0; + vrLen = 692; + vrLoc = 434; + }; + 92BC3EBC0BAEE3BB000DAB7F /* themanaworld */ = { + isa = PBXExecutable; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 0; + configStateDict = { + }; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = themanaworld; + savedGlobals = { + }; + sourceDirectories = ( + ); + variableFormatDictionary = { + }; + }; + 92BC3EC80BAEE3C8000DAB7F /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + }; + scmType = ""; + }; + 92BC3EC90BAEE3C8000DAB7F /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 92BC3ECC0BAEE55A000DAB7F /* being.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {543, 6776}}"; + sepNavSelRange = "{2724, 0}"; + sepNavVisRange = "{2276, 537}"; + sepNavVisRect = "{{0, 1497}, {557, 473}}"; + sepNavWindowFrame = "{{100, 183}, {602, 602}}"; + }; + }; + 92BC3EE40BAEE55A000DAB7F /* engine.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {720, 1848}}"; + sepNavSelRange = "{3021, 9}"; + sepNavVisRange = "{2828, 277}"; + sepNavWindowFrame = "{{64, 113}, {627, 714}}"; + }; + }; + 92BC3EE60BAEE55A000DAB7F /* equipment.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 700}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{268, 1098}"; + sepNavWindowFrame = "{{64, 113}, {627, 714}}"; + }; + }; + 92BC3EEC0BAEE55A000DAB7F /* game.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 11256}}"; + sepNavSelRange = "{24258, 0}"; + sepNavVisRange = "{18439, 446}"; + sepNavVisRect = "{{0, 4423}, {734, 180}}"; + sepNavWindowFrame = "{{134, 50}, {627, 714}}"; + }; + }; + 92BC3EED0BAEE55A000DAB7F /* game.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {543, 1148}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1178, 918}"; + sepNavVisRect = "{{0, 297}, {557, 473}}"; + sepNavWindowFrame = "{{215, 78}, {602, 602}}"; + }; + }; + 92BC3EEF0BAEE55A000DAB7F /* graphics.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {492, 2240}}"; + sepNavSelRange = "{879, 39}"; + sepNavVisRange = "{878, 92}"; + sepNavVisRect = "{{0, 1767}, {557, 473}}"; + sepNavWindowFrame = "{{192, 99}, {602, 602}}"; + }; + }; + 92BC3EF70BAEE55A000DAB7F /* button.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 2044}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 1537}, {557, 473}}"; + sepNavWindowFrame = "{{54, 225}, {602, 602}}"; + }; + }; + 92BC3EFB0BAEE55A000DAB7F /* buysell.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 924}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 418}, {557, 473}}"; + sepNavWindowFrame = "{{54, 225}, {602, 602}}"; + }; + }; + 92BC3F0D0BAEE55A000DAB7F /* debugwindow.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {720, 1428}}"; + sepNavSelRange = "{2619, 0}"; + sepNavVisRange = "{2223, 508}"; + }; + }; + 92BC3F120BAEE55A000DAB7F /* focushandler.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 952}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1387}"; + sepNavWindowFrame = "{{64, 113}, {627, 714}}"; + }; + }; + 92BC3F150BAEE55A000DAB7F /* gui.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 3234}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{2374, 1272}"; + sepNavWindowFrame = "{{157, 29}, {627, 714}}"; + }; + }; + 92BC3F1D0BAEE55A000DAB7F /* inventorywindow.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 3486}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 2371}, {557, 473}}"; + sepNavWindowFrame = "{{100, 183}, {602, 602}}"; + }; + }; + 92BC3F340BAEE55A000DAB7F /* ok_dialog.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 980}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{755, 1075}"; + sepNavWindowFrame = "{{88, 92}, {627, 714}}"; + }; + }; + 92BC3F350BAEE55A000DAB7F /* ok_dialog.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 742}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{361, 1114}"; + sepNavWindowFrame = "{{65, 113}, {627, 714}}"; + }; + }; + 92BC3F450BAEE55A000DAB7F /* sell.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 3962}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 2734}, {557, 473}}"; + sepNavWindowFrame = "{{77, 204}, {602, 602}}"; + }; + }; + 92BC3F580BAEE55A000DAB7F /* status.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 5530}}"; + sepNavSelRange = "{12685, 0}"; + sepNavVisRect = "{{0, 3895}, {557, 473}}"; + sepNavWindowFrame = "{{54, 225}, {602, 602}}"; + }; + }; + 92BC3F620BAEE55B000DAB7F /* updatewindow.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 6762}}"; + sepNavSelRange = "{9189, 0}"; + sepNavVisRange = "{9082, 354}"; + sepNavWindowFrame = "{{157, 29}, {627, 714}}"; + }; + }; + 92BC3F660BAEE55B000DAB7F /* viewport.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {511, 6706}}"; + sepNavSelRange = "{7873, 63}"; + sepNavVisRange = "{7501, 780}"; + sepNavVisRect = "{{0, 4144}, {732, 459}}"; + sepNavWindowFrame = "{{61, 197}, {777, 588}}"; + }; + }; + 92BC3F670BAEE55B000DAB7F /* viewport.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {732, 2520}}"; + sepNavSelRange = "{3505, 0}"; + sepNavVisRect = "{{0, 1906}, {732, 459}}"; + sepNavWindowFrame = "{{153, 113}, {777, 588}}"; + }; + }; + 92BC3F680BAEE55B000DAB7F /* window.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 6580}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 6107}, {557, 473}}"; + sepNavWindowFrame = "{{100, 183}, {602, 602}}"; + }; + }; + 92BC3F690BAEE55B000DAB7F /* window.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 3878}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 533}, {557, 473}}"; + sepNavWindowFrame = "{{77, 204}, {602, 602}}"; + }; + }; + 92BC3F6D0BAEE55B000DAB7F /* inventory.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 1904}}"; + sepNavSelRange = "{1728, 0}"; + sepNavVisRange = "{1653, 334}"; + }; + }; + 92BC3F700BAEE55B000DAB7F /* item.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 1890}}"; + sepNavSelRange = "{1887, 0}"; + sepNavVisRange = "{1727, 287}"; + }; + }; + 92BC3F730BAEE55B000DAB7F /* localplayer.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {543, 6706}}"; + sepNavSelRange = "{6691, 0}"; + sepNavVisRange = "{6631, 622}"; + sepNavVisRect = "{{0, 3594}, {734, 180}}"; + sepNavWindowFrame = "{{436, 128}, {602, 602}}"; + }; + }; + 92BC3F740BAEE55B000DAB7F /* localplayer.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 2940}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 2240}, {557, 473}}"; + sepNavWindowFrame = "{{238, 57}, {602, 602}}"; + }; + }; + 92BC3F790BAEE55B000DAB7F /* main.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {718, 12404}}"; + sepNavSelRange = "{958, 19}"; + sepNavVisRange = "{616, 747}"; + sepNavVisRect = "{{0, 1289}, {732, 459}}"; + sepNavWindowFrame = "{{100, 219}, {777, 588}}"; + }; + }; + 92BC3F7A0BAEE55B000DAB7F /* main.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {734, 1022}}"; + sepNavSelRange = "{989, 8}"; + sepNavVisRect = "{{0, 324}, {734, 180}}"; + }; + }; + 92BC3F7C0BAEE55B000DAB7F /* map.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 6706}}"; + sepNavSelRange = "{8349, 0}"; + sepNavVisRange = "{13918, 210}"; + sepNavVisRect = "{{0, 2184}, {732, 459}}"; + sepNavWindowFrame = "{{107, 155}, {777, 588}}"; + }; + }; + 92BC3F7D0BAEE55B000DAB7F /* map.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {732, 3220}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 1156}, {732, 459}}"; + sepNavWindowFrame = "{{84, 176}, {777, 588}}"; + }; + }; + 92BC3F810BAEE55B000DAB7F /* beinghandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 5586}}"; + sepNavSelRange = "{1189, 0}"; + sepNavVisRange = "{567, 1104}"; + sepNavWindowFrame = "{{284, 87}, {627, 714}}"; + }; + }; + 92BC3F870BAEE55B000DAB7F /* chathandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 1666}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 403}, {557, 473}}"; + sepNavWindowFrame = "{{261, 36}, {602, 602}}"; + }; + }; + 92BC3F890BAEE55B000DAB7F /* equipmenthandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {482, 3024}}"; + sepNavSelRange = "{6326, 0}"; + sepNavVisRect = "{{0, 544}, {453, 186}}"; + }; + }; + 92BC3F8B0BAEE55B000DAB7F /* inventoryhandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1946}}"; + sepNavSelRange = "{1765, 0}"; + sepNavVisRange = "{1454, 1476}"; + sepNavWindowFrame = "{{65, 113}, {627, 714}}"; + }; + }; + 92BC3F930BAEE55B000DAB7F /* messagehandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 644}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 162}, {557, 473}}"; + sepNavWindowFrame = "{{284, 15}, {602, 602}}"; + }; + }; + 92BC3F950BAEE55B000DAB7F /* messagein.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 2730}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 2257}, {557, 473}}"; + sepNavWindowFrame = "{{54, 225}, {602, 602}}"; + }; + }; + 92BC3F9A0BAEE55B000DAB7F /* network.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {482, 1470}}"; + sepNavSelRange = "{956, 21}"; + sepNavVisRect = "{{0, 292}, {453, 186}}"; + }; + }; + 92BC3F9D0BAEE55B000DAB7F /* playerhandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 4858}}"; + sepNavSelRange = "{13406, 0}"; + sepNavVisRect = "{{0, 2215}, {557, 473}}"; + sepNavWindowFrame = "{{169, 120}, {602, 602}}"; + }; + }; + 92BC3F9F0BAEE55B000DAB7F /* protocol.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 1120}}"; + sepNavSelRange = "{1206, 0}"; + sepNavVisRange = "{1930, 220}"; + sepNavVisRect = "{{0, 56}, {557, 473}}"; + sepNavWindowFrame = "{{192, 99}, {602, 602}}"; + }; + }; + 92BC3FA00BAEE55B000DAB7F /* protocol.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {584, 1568}}"; + sepNavSelRange = "{1647, 0}"; + sepNavVisRect = "{{0, 482}, {557, 473}}"; + sepNavWindowFrame = "{{215, 78}, {602, 602}}"; + }; + }; + 92BC3FA70BAEE55B000DAB7F /* openglgraphics.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 5012}}"; + sepNavSelRange = "{2418, 0}"; + sepNavVisRange = "{1719, 1239}"; + sepNavWindowFrame = "{{111, 71}, {627, 714}}"; + }; + }; + 92BC3FAB0BAEE55B000DAB7F /* physfs.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 30534}}"; + sepNavSelRange = "{2692, 19}"; + sepNavVisRange = "{2207, 1196}"; + sepNavVisRect = "{{0, 0}, {734, 180}}"; + sepNavWindowFrame = "{{157, 29}, {627, 714}}"; + }; + }; + 92BC3FAC0BAEE55B000DAB7F /* physfs.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {594, 32648}}"; + sepNavSelRange = "{68391, 0}"; + sepNavVisRange = "{91786, 1458}"; + sepNavWindowFrame = "{{140, 245}, {627, 714}}"; + }; + }; + 92BC3FAD0BAEE55B000DAB7F /* physfs_byteorder.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 4424}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1921, 2082}"; + sepNavVisRect = "{{0, 0}, {734, 180}}"; + sepNavWindowFrame = "{{134, 50}, {627, 714}}"; + }; + }; + 92BC3FAE0BAEE55B000DAB7F /* physfs_internal.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {708, 25382}}"; + sepNavSelRange = "{67524, 9}"; + sepNavVisRange = "{2139, 2075}"; + sepNavWindowFrame = "{{111, 71}, {627, 714}}"; + }; + }; + 92BC3FB50BAEE55B000DAB7F /* posix.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 5642}}"; + sepNavSelRange = "{6658, 0}"; + sepNavVisRange = "{6143, 1239}"; + sepNavVisRect = "{{0, 0}, {734, 180}}"; + sepNavWindowFrame = "{{65, 113}, {627, 714}}"; + }; + }; + 92BC3FB70BAEE55B000DAB7F /* unix.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {734, 8232}}"; + sepNavSelRange = "{188, 8}"; + sepNavVisRect = "{{0, 0}, {734, 180}}"; + }; + }; + 92BC3FBA0BAEE55B000DAB7F /* player.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {543, 2870}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1100}"; + sepNavVisRect = "{{0, 2733}, {557, 473}}"; + sepNavWindowFrame = "{{77, 204}, {602, 602}}"; + }; + }; + 92BC3FBB0BAEE55B000DAB7F /* player.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 952}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 479}, {557, 473}}"; + sepNavWindowFrame = "{{123, 162}, {602, 602}}"; + }; + }; + 92BC3FC90BAEE55B000DAB7F /* image.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 5544}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1527, 900}"; + sepNavWindowFrame = "{{179, 8}, {627, 714}}"; + }; + }; + 92BC3FD70BAEE55B000DAB7F /* music.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1274}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1087, 1007}"; + sepNavWindowFrame = "{{64, 113}, {627, 714}}"; + }; + }; + 92BC3FD80BAEE55B000DAB7F /* music.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1148}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{919, 1041}"; + sepNavWindowFrame = "{{87, 92}, {627, 714}}"; + }; + }; + 92BC3FDC0BAEE55B000DAB7F /* resource.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1078}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1038, 870}"; + sepNavWindowFrame = "{{110, 71}, {627, 714}}"; + }; + }; + 92BC3FDD0BAEE55B000DAB7F /* resourcemanager.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 6650}}"; + sepNavSelRange = "{5598, 0}"; + sepNavVisRange = "{5065, 1072}"; + sepNavWindowFrame = "{{351, 73}, {627, 714}}"; + }; + }; + 92BC3FDE0BAEE55B000DAB7F /* resourcemanager.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 3276}}"; + sepNavSelRange = "{3055, 0}"; + sepNavVisRange = "{2573, 1462}"; + sepNavWindowFrame = "{{133, 50}, {627, 714}}"; + }; + }; + 92BC3FE20BAEE55B000DAB7F /* soundeffect.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1064}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1110, 1062}"; + sepNavWindowFrame = "{{179, 8}, {627, 714}}"; + }; + }; + 92BC3FEA0BAEE55B000DAB7F /* sound.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 3066}}"; + sepNavSelRange = "{3587, 0}"; + sepNavVisRange = "{3180, 872}"; + sepNavWindowFrame = "{{110, 71}, {627, 714}}"; + }; + }; + 92BC3FEB0BAEE55B000DAB7F /* sound.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {720, 1764}}"; + sepNavSelRange = "{1673, 9}"; + sepNavVisRange = "{1374, 363}"; + sepNavWindowFrame = "{{156, 29}, {627, 714}}"; + }; + }; + 92BC3FF20BAEE55B000DAB7F /* tostring.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 532}}"; + sepNavSelRange = "{1038, 0}"; + sepNavVisRange = "{962, 150}"; + }; + }; + 92BC40E50BAEF54B000DAB7F /* SDLMain.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {726, 3906}}"; + sepNavSelRange = "{3069, 0}"; + sepNavVisRange = "{2696, 949}"; + sepNavWindowFrame = "{{583, 96}, {627, 714}}"; + }; + }; + 92BC416E0BAF664C000DAB7F /* ChangeLog */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {734, 59234}}"; + sepNavSelRange = "{146456, 3}"; + sepNavVisRect = "{{0, 47601}, {734, 180}}"; + sepNavWindowFrame = "{{130, 134}, {777, 588}}"; + }; + }; + 92FD19AE0DDCE51000D14E5D /* player_relations.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {632, 5388}}"; + sepNavSelRange = "{3940, 0}"; + sepNavVisRange = "{3262, 1320}"; + sepNavWindowFrame = "{{180, 8}, {627, 714}}"; + }; + }; +} diff --git a/themanaworld.xcodeproj/project.pbxproj b/themanaworld.xcodeproj/project.pbxproj new file mode 100644 index 00000000..f2dadea7 --- /dev/null +++ b/themanaworld.xcodeproj/project.pbxproj @@ -0,0 +1,1803 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; }; + 92024D2F0CF1BD9E006B55CB /* keyboardconfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92024D2A0CF1BD9E006B55CB /* keyboardconfig.cpp */; }; + 92024D3D0CF1BDF7006B55CB /* setup_keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92024D360CF1BDF7006B55CB /* setup_keyboard.cpp */; }; + 92024E150CF1C0DA006B55CB /* close_button.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 92024D5B0CF1BE5C006B55CB /* close_button.png */; }; + 92024E160CF1C0FB006B55CB /* unknown-item.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 92024D5D0CF1BE5C006B55CB /* unknown-item.png */; }; + 92024E170CF1C11D006B55CB /* item_shortcut_bgr.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 92024D5C0CF1BE5C006B55CB /* item_shortcut_bgr.png */; }; + 92024E760CF1DCF6006B55CB /* imageloader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92024E740CF1DCF6006B55CB /* imageloader.cpp */; }; + 92037A1F0ED2037300D3712D /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92037A1B0ED2037300D3712D /* text.cpp */; }; + 92037A200ED2037300D3712D /* textmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92037A1D0ED2037300D3712D /* textmanager.cpp */; }; + 922CD9580E3D00900074C50E /* npcdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 922CD9560E3D00900074C50E /* npcdb.cpp */; }; + 922CD95F0E3D01080074C50E /* shopitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 922CD95D0E3D01080074C50E /* shopitem.cpp */; }; + 922CD9ED0E3D02C50074C50E /* guichan.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 922CD9EC0E3D02C50074C50E /* guichan.framework */; }; + 922CDA6A0E3D07150074C50E /* guichan.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 922CD9EC0E3D02C50074C50E /* guichan.framework */; }; + 924A39F20C0784280066885E /* animationparticle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A39E80C0784280066885E /* animationparticle.cpp */; }; + 924A39F30C0784280066885E /* imageparticle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A39EA0C0784280066885E /* imageparticle.cpp */; }; + 924A39F40C0784280066885E /* particle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A39EC0C0784280066885E /* particle.cpp */; }; + 924A39F50C0784280066885E /* particleemitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A39EE0C0784280066885E /* particleemitter.cpp */; }; + 924A39F60C0784280066885E /* textparticle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A39F00C0784280066885E /* textparticle.cpp */; }; + 924A3A120C07A60B0066885E /* resizegrip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A3A100C07A60B0066885E /* resizegrip.cpp */; }; + 924A40570C085EF50066885E /* items.xsd in Copy Data Files */ = {isa = PBXBuildFile; fileRef = 924A401C0C085ED80066885E /* items.xsd */; }; + 924A405A0C085F950066885E /* bg_quad_dis.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E600C085ED70066885E /* bg_quad_dis.png */; }; + 924A405C0C085F950066885E /* button.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E620C085ED70066885E /* button.png */; }; + 924A405D0C085F950066885E /* button_disabled.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E630C085ED70066885E /* button_disabled.png */; }; + 924A405E0C085F950066885E /* buttonhi.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E640C085ED70066885E /* buttonhi.png */; }; + 924A405F0C085F950066885E /* buttonpress.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E650C085ED70066885E /* buttonpress.png */; }; + 924A40600C085F950066885E /* checkbox.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E660C085ED70066885E /* checkbox.png */; }; + 924A40610C085F950066885E /* deepbox.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E680C085ED70066885E /* deepbox.png */; }; + 924A40620C085F950066885E /* fixedfont.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E690C085ED70066885E /* fixedfont.png */; }; + 924A40630C085F950066885E /* hits_blue.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6A0C085ED70066885E /* hits_blue.png */; }; + 924A40640C085F950066885E /* hits_red.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6B0C085ED70066885E /* hits_red.png */; }; + 924A40650C085F950066885E /* hits_yellow.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6C0C085ED70066885E /* hits_yellow.png */; }; + 924A40660C085F950066885E /* hscroll_left_default.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6D0C085ED70066885E /* hscroll_left_default.png */; }; + 924A40670C085F950066885E /* hscroll_left_highlight.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6E0C085ED70066885E /* hscroll_left_highlight.png */; }; + 924A40680C085F950066885E /* hscroll_left_pressed.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6F0C085ED70066885E /* hscroll_left_pressed.png */; }; + 924A40690C085F950066885E /* hscroll_right_default.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E700C085ED70066885E /* hscroll_right_default.png */; }; + 924A406A0C085F950066885E /* hscroll_right_highlight.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E710C085ED70066885E /* hscroll_right_highlight.png */; }; + 924A406B0C085F950066885E /* hscroll_right_pressed.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E720C085ED70066885E /* hscroll_right_pressed.png */; }; + 924A406C0C085F950066885E /* menuitemD.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E740C085ED70066885E /* menuitemD.png */; }; + 924A406D0C085F950066885E /* menuitemF.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E750C085ED70066885E /* menuitemF.png */; }; + 924A406E0C085F950066885E /* menuitemN.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E760C085ED70066885E /* menuitemN.png */; }; + 924A406F0C085F950066885E /* menuitemP.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E770C085ED70066885E /* menuitemP.png */; }; + 924A40700C085F950066885E /* mouse.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E780C085ED70066885E /* mouse.png */; }; + 924A40710C085F950066885E /* radioin.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E790C085ED70066885E /* radioin.png */; }; + 924A40720C085F950066885E /* radioout.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E7A0C085ED70066885E /* radioout.png */; }; + 924A40730C085F950066885E /* resize.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E7B0C085ED70066885E /* resize.png */; }; + 924A40740C085F950066885E /* rpgfont_wider.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E7C0C085ED70066885E /* rpgfont_wider.png */; }; + 924A40760C085F950066885E /* selection.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E7E0C085ED70066885E /* selection.png */; }; + 924A40770C085F950066885E /* slider.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E7F0C085ED70066885E /* slider.png */; }; + 924A40780C085F950066885E /* target-cursor-blue-l.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E800C085ED70066885E /* target-cursor-blue-l.png */; }; + 924A40790C085F950066885E /* target-cursor-blue-m.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E810C085ED70066885E /* target-cursor-blue-m.png */; }; + 924A407A0C085F950066885E /* target-cursor-blue-s.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E820C085ED70066885E /* target-cursor-blue-s.png */; }; + 924A407B0C085F950066885E /* target-cursor-red-l.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E830C085ED70066885E /* target-cursor-red-l.png */; }; + 924A407C0C085F950066885E /* target-cursor-red-m.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E840C085ED70066885E /* target-cursor-red-m.png */; }; + 924A407D0C085F950066885E /* target-cursor-red-s.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E850C085ED70066885E /* target-cursor-red-s.png */; }; + 924A407E0C085F950066885E /* thickborder.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E860C085ED70066885E /* thickborder.png */; }; + 924A407F0C085F950066885E /* vscroll_blue.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E870C085ED70066885E /* vscroll_blue.png */; }; + 924A40800C085F950066885E /* vscroll_down_default.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E880C085ED70066885E /* vscroll_down_default.png */; }; + 924A40810C085F950066885E /* vscroll_down_highlight.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E890C085ED70066885E /* vscroll_down_highlight.png */; }; + 924A40820C085F950066885E /* vscroll_down_pressed.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8A0C085ED70066885E /* vscroll_down_pressed.png */; }; + 924A40830C085F950066885E /* vscroll_grey.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8B0C085ED70066885E /* vscroll_grey.png */; }; + 924A40840C085F950066885E /* vscroll_red.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8C0C085ED70066885E /* vscroll_red.png */; }; + 924A40850C085F950066885E /* vscroll_up_default.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8D0C085ED70066885E /* vscroll_up_default.png */; }; + 924A40860C085F950066885E /* vscroll_up_highlight.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8E0C085ED70066885E /* vscroll_up_highlight.png */; }; + 924A40870C085F950066885E /* vscroll_up_pressed.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8F0C085ED70066885E /* vscroll_up_pressed.png */; }; + 924A408A0C0860120066885E /* error.png in Copy Image Files */ = {isa = PBXBuildFile; fileRef = 924A3E990C085ED70066885E /* error.png */; }; + 924A408B0C0860120066885E /* login_wallpaper.png in Copy Image Files */ = {isa = PBXBuildFile; fileRef = 924A3E9A0C085ED70066885E /* login_wallpaper.png */; }; + 924A42020C0861EC0066885E /* about.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A400A0C085ED80066885E /* about.txt */; }; + 924A42030C0861EC0066885E /* changes.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A400B0C085ED80066885E /* changes.txt */; }; + 924A42040C0861EC0066885E /* commands.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A400D0C085ED80066885E /* commands.txt */; }; + 924A42050C0861EC0066885E /* header.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A400E0C085ED80066885E /* header.txt */; }; + 924A42060C0861EC0066885E /* index.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A400F0C085ED80066885E /* index.txt */; }; + 924A42070C0861EC0066885E /* skills.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A40110C085ED80066885E /* skills.txt */; }; + 924A42080C0861EC0066885E /* support.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A40120C085ED80066885E /* support.txt */; }; + 924A42090C0861EC0066885E /* team.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A40130C085ED80066885E /* team.txt */; }; + 924A425A0C0871EC0066885E /* The Mana World.icns in Resources */ = {isa = PBXBuildFile; fileRef = 924A42590C0871EC0066885E /* The Mana World.icns */; }; + 925350030BC12A3200115FD5 /* imageset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 925350010BC12A3200115FD5 /* imageset.cpp */; }; + 926A294A0F23BD88005D6466 /* layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926A29440F23BD88005D6466 /* layout.cpp */; }; + 926A294B0F23BD88005D6466 /* tab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926A29460F23BD88005D6466 /* tab.cpp */; }; + 926A294C0F23BD88005D6466 /* tabbedarea.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926A29480F23BD88005D6466 /* tabbedarea.cpp */; }; + 926A29560F23BD9E005D6466 /* npcintegerdialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926A294E0F23BD9E005D6466 /* npcintegerdialog.cpp */; }; + 926A29570F23BD9E005D6466 /* npcstringdialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926A29500F23BD9E005D6466 /* npcstringdialog.cpp */; }; + 926A29580F23BD9E005D6466 /* sdlinput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926A29520F23BD9E005D6466 /* sdlinput.cpp */; }; + 926A29590F23BD9E005D6466 /* truetypefont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926A29540F23BD9E005D6466 /* truetypefont.cpp */; }; + 926A297A0F23C155005D6466 /* SDL_ttf.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 926A29790F23C155005D6466 /* SDL_ttf.framework */; }; + 926A29800F23C18E005D6466 /* tab.png in Resources */ = {isa = PBXBuildFile; fileRef = 926A297E0F23C18E005D6466 /* tab.png */; }; + 926A29810F23C18E005D6466 /* tabselected.png in Resources */ = {isa = PBXBuildFile; fileRef = 926A297F0F23C18E005D6466 /* tabselected.png */; }; + 926A29850F23C1C8005D6466 /* windows.txt in Resources */ = {isa = PBXBuildFile; fileRef = 926A29840F23C1C8005D6466 /* windows.txt */; }; + 926F9CF80DB005FA00AACD26 /* itemshortcut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926F9CF60DB005FA00AACD26 /* itemshortcut.cpp */; }; + 926F9D450DB00AFC00AACD26 /* itemshortcutcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926F9D410DB00AFC00AACD26 /* itemshortcutcontainer.cpp */; }; + 926F9D460DB00AFC00AACD26 /* itemshortcutwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926F9D430DB00AFC00AACD26 /* itemshortcutwindow.cpp */; }; + 9273BDFC0EF33DFD008E56E1 /* COPYING in Resources */ = {isa = PBXBuildFile; fileRef = 9273BDFB0EF33DFD008E56E1 /* COPYING */; }; + 9273BDFF0EF33E1A008E56E1 /* AUTHORS in Resources */ = {isa = PBXBuildFile; fileRef = 9273BDFD0EF33E1A008E56E1 /* AUTHORS */; }; + 9273BE000EF33E1A008E56E1 /* README in Resources */ = {isa = PBXBuildFile; fileRef = 9273BDFE0EF33E1A008E56E1 /* README */; }; + 9273BE080EF33FB3008E56E1 /* particlecontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9273BE040EF33FB3008E56E1 /* particlecontainer.cpp */; }; + 9273BE090EF33FB3008E56E1 /* statuseffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9273BE060EF33FB3008E56E1 /* statuseffect.cpp */; }; + 9273BE2D0EF3403E008E56E1 /* Clouds Calling.ogg in Copy Music Files */ = {isa = PBXBuildFile; fileRef = 9273BE0B0EF33FFF008E56E1 /* Clouds Calling.ogg */; }; + 9273BE2E0EF3403E008E56E1 /* Faith.ogg in Copy Music Files */ = {isa = PBXBuildFile; fileRef = 9273BE0C0EF33FFF008E56E1 /* Faith.ogg */; }; + 9273BE2F0EF3403E008E56E1 /* finalman_and_yakslem-cavesong.ogg in Copy Music Files */ = {isa = PBXBuildFile; fileRef = 9273BE0D0EF33FFF008E56E1 /* finalman_and_yakslem-cavesong.ogg */; }; + 9273BE300EF3403E008E56E1 /* Magick - Real.ogg in Copy Music Files */ = {isa = PBXBuildFile; fileRef = 9273BE0E0EF33FFF008E56E1 /* Magick - Real.ogg */; }; + 9273BE310EF3403E008E56E1 /* The Mana World - Snow Village.ogg in Copy Music Files */ = {isa = PBXBuildFile; fileRef = 9273BE0F0EF33FFF008E56E1 /* The Mana World - Snow Village.ogg */; }; + 9273BE320EF3403E008E56E1 /* The Mana World - The Forest.ogg in Copy Music Files */ = {isa = PBXBuildFile; fileRef = 9273BE100EF33FFF008E56E1 /* The Mana World - The Forest.ogg */; }; + 9294DA9B0C17E70400FCEDE9 /* physfs.c in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FAB0BAEE55B000DAB7F /* physfs.c */; }; + 9294DA9C0C17E70600FCEDE9 /* physfs_byteorder.c in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FAD0BAEE55B000DAB7F /* physfs_byteorder.c */; }; + 9294DAA10C17E73200FCEDE9 /* libpng.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9294DAA00C17E73200FCEDE9 /* libpng.framework */; }; + 92A4CC9E0D1C622E00CA28FB /* dye.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CC9D0D1C622E00CA28FB /* dye.cpp */; }; + 92A4CCE80D1DA58D00CA28FB /* dir.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE00D1DA58D00CA28FB /* dir.c */; }; + 92A4CCE90D1DA58D00CA28FB /* grp.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE10D1DA58D00CA28FB /* grp.c */; }; + 92A4CCEA0D1DA58D00CA28FB /* hog.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE20D1DA58D00CA28FB /* hog.c */; }; + 92A4CCEB0D1DA58D00CA28FB /* lzma.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE30D1DA58D00CA28FB /* lzma.c */; }; + 92A4CCEC0D1DA58D00CA28FB /* mvl.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE40D1DA58D00CA28FB /* mvl.c */; }; + 92A4CCED0D1DA58D00CA28FB /* qpak.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE50D1DA58D00CA28FB /* qpak.c */; }; + 92A4CCEE0D1DA58D00CA28FB /* wad.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE60D1DA58D00CA28FB /* wad.c */; }; + 92A4CCEF0D1DA58D00CA28FB /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE70D1DA58D00CA28FB /* zip.c */; }; + 92A4CCF30D1DA5C600CA28FB /* macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCF20D1DA5C600CA28FB /* macosx.c */; }; + 92A4CCF90D1DA81A00CA28FB /* posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FB50BAEE55B000DAB7F /* posix.c */; }; + 92A4CCFC0D1DA89800CA28FB /* physfs_unicode.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCFB0D1DA89800CA28FB /* physfs_unicode.c */; }; + 92BC3FF60BAEE55B000DAB7F /* animatedsprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3ECA0BAEE55A000DAB7F /* animatedsprite.cpp */; }; + 92BC3FF70BAEE55B000DAB7F /* being.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3ECC0BAEE55A000DAB7F /* being.cpp */; }; + 92BC3FF80BAEE55B000DAB7F /* beingmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3ECE0BAEE55A000DAB7F /* beingmanager.cpp */; }; + 92BC3FFA0BAEE55B000DAB7F /* configuration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3ED20BAEE55A000DAB7F /* configuration.cpp */; }; + 92BC40020BAEE55B000DAB7F /* engine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EE40BAEE55A000DAB7F /* engine.cpp */; }; + 92BC40030BAEE55B000DAB7F /* equipment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EE60BAEE55A000DAB7F /* equipment.cpp */; }; + 92BC40040BAEE55B000DAB7F /* floor_item.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EE80BAEE55A000DAB7F /* floor_item.cpp */; }; + 92BC40050BAEE55B000DAB7F /* flooritemmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EEA0BAEE55A000DAB7F /* flooritemmanager.cpp */; }; + 92BC40060BAEE55B000DAB7F /* game.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EEC0BAEE55A000DAB7F /* game.cpp */; }; + 92BC40070BAEE55B000DAB7F /* graphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EEE0BAEE55A000DAB7F /* graphics.cpp */; }; + 92BC40090BAEE55B000DAB7F /* browserbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EF30BAEE55A000DAB7F /* browserbox.cpp */; }; + 92BC400A0BAEE55B000DAB7F /* buddywindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EF50BAEE55A000DAB7F /* buddywindow.cpp */; }; + 92BC400B0BAEE55B000DAB7F /* button.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EF70BAEE55A000DAB7F /* button.cpp */; }; + 92BC400C0BAEE55B000DAB7F /* buy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EF90BAEE55A000DAB7F /* buy.cpp */; }; + 92BC400D0BAEE55B000DAB7F /* buysell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EFB0BAEE55A000DAB7F /* buysell.cpp */; }; + 92BC400E0BAEE55B000DAB7F /* char_select.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EFD0BAEE55A000DAB7F /* char_select.cpp */; }; + 92BC400F0BAEE55B000DAB7F /* char_server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EFF0BAEE55A000DAB7F /* char_server.cpp */; }; + 92BC40110BAEE55B000DAB7F /* chat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F030BAEE55A000DAB7F /* chat.cpp */; }; + 92BC40120BAEE55B000DAB7F /* chatinput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F050BAEE55A000DAB7F /* chatinput.cpp */; }; + 92BC40130BAEE55B000DAB7F /* checkbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F070BAEE55A000DAB7F /* checkbox.cpp */; }; + 92BC40140BAEE55B000DAB7F /* confirm_dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F090BAEE55A000DAB7F /* confirm_dialog.cpp */; }; + 92BC40150BAEE55B000DAB7F /* connection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F0B0BAEE55A000DAB7F /* connection.cpp */; }; + 92BC40160BAEE55B000DAB7F /* debugwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F0D0BAEE55A000DAB7F /* debugwindow.cpp */; }; + 92BC40170BAEE55B000DAB7F /* equipmentwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F0F0BAEE55A000DAB7F /* equipmentwindow.cpp */; }; + 92BC40180BAEE55B000DAB7F /* focushandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F110BAEE55A000DAB7F /* focushandler.cpp */; }; + 92BC40190BAEE55B000DAB7F /* gccontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F130BAEE55A000DAB7F /* gccontainer.cpp */; }; + 92BC401A0BAEE55B000DAB7F /* gui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F150BAEE55A000DAB7F /* gui.cpp */; }; + 92BC401C0BAEE55B000DAB7F /* help.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F190BAEE55A000DAB7F /* help.cpp */; }; + 92BC401D0BAEE55B000DAB7F /* inttextbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F1B0BAEE55A000DAB7F /* inttextbox.cpp */; }; + 92BC401E0BAEE55B000DAB7F /* inventorywindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F1D0BAEE55A000DAB7F /* inventorywindow.cpp */; }; + 92BC401F0BAEE55B000DAB7F /* item_amount.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F1F0BAEE55A000DAB7F /* item_amount.cpp */; }; + 92BC40200BAEE55B000DAB7F /* itemcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F210BAEE55A000DAB7F /* itemcontainer.cpp */; }; + 92BC40210BAEE55B000DAB7F /* listbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F240BAEE55A000DAB7F /* listbox.cpp */; }; + 92BC40220BAEE55B000DAB7F /* login.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F260BAEE55A000DAB7F /* login.cpp */; }; + 92BC40230BAEE55B000DAB7F /* menuwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F280BAEE55A000DAB7F /* menuwindow.cpp */; }; + 92BC40240BAEE55B000DAB7F /* minimap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F2A0BAEE55A000DAB7F /* minimap.cpp */; }; + 92BC40250BAEE55B000DAB7F /* ministatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F2C0BAEE55A000DAB7F /* ministatus.cpp */; }; + 92BC40270BAEE55B000DAB7F /* npc_text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F300BAEE55A000DAB7F /* npc_text.cpp */; }; + 92BC40280BAEE55B000DAB7F /* npclistdialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F320BAEE55A000DAB7F /* npclistdialog.cpp */; }; + 92BC40290BAEE55B000DAB7F /* ok_dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F340BAEE55A000DAB7F /* ok_dialog.cpp */; }; + 92BC402A0BAEE55B000DAB7F /* passwordfield.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F360BAEE55A000DAB7F /* passwordfield.cpp */; }; + 92BC402B0BAEE55B000DAB7F /* playerbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F380BAEE55A000DAB7F /* playerbox.cpp */; }; + 92BC402C0BAEE55B000DAB7F /* popupmenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F3A0BAEE55A000DAB7F /* popupmenu.cpp */; }; + 92BC402D0BAEE55B000DAB7F /* progressbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F3C0BAEE55A000DAB7F /* progressbar.cpp */; }; + 92BC402E0BAEE55B000DAB7F /* radiobutton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F3E0BAEE55A000DAB7F /* radiobutton.cpp */; }; + 92BC402F0BAEE55B000DAB7F /* register.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F400BAEE55A000DAB7F /* register.cpp */; }; + 92BC40300BAEE55B000DAB7F /* scrollarea.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F420BAEE55A000DAB7F /* scrollarea.cpp */; }; + 92BC40310BAEE55B000DAB7F /* sell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F450BAEE55A000DAB7F /* sell.cpp */; }; + 92BC40320BAEE55B000DAB7F /* setup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F470BAEE55A000DAB7F /* setup.cpp */; }; + 92BC40330BAEE55B000DAB7F /* setup_audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F490BAEE55A000DAB7F /* setup_audio.cpp */; }; + 92BC40340BAEE55B000DAB7F /* setup_joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F4B0BAEE55A000DAB7F /* setup_joystick.cpp */; }; + 92BC40350BAEE55B000DAB7F /* setup_video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F4D0BAEE55A000DAB7F /* setup_video.cpp */; }; + 92BC40360BAEE55B000DAB7F /* shop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F500BAEE55A000DAB7F /* shop.cpp */; }; + 92BC40370BAEE55B000DAB7F /* shoplistbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F520BAEE55A000DAB7F /* shoplistbox.cpp */; }; + 92BC40380BAEE55B000DAB7F /* skill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F540BAEE55A000DAB7F /* skill.cpp */; }; + 92BC40390BAEE55B000DAB7F /* slider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F560BAEE55A000DAB7F /* slider.cpp */; }; + 92BC403A0BAEE55B000DAB7F /* status.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F580BAEE55A000DAB7F /* status.cpp */; }; + 92BC403C0BAEE55B000DAB7F /* textbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F5C0BAEE55B000DAB7F /* textbox.cpp */; }; + 92BC403D0BAEE55B000DAB7F /* textfield.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F5E0BAEE55B000DAB7F /* textfield.cpp */; }; + 92BC403E0BAEE55B000DAB7F /* trade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F600BAEE55B000DAB7F /* trade.cpp */; }; + 92BC403F0BAEE55B000DAB7F /* updatewindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F620BAEE55B000DAB7F /* updatewindow.cpp */; }; + 92BC40410BAEE55B000DAB7F /* viewport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F660BAEE55B000DAB7F /* viewport.cpp */; }; + 92BC40420BAEE55B000DAB7F /* window.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F680BAEE55B000DAB7F /* window.cpp */; }; + 92BC40430BAEE55B000DAB7F /* windowcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F6A0BAEE55B000DAB7F /* windowcontainer.cpp */; }; + 92BC40440BAEE55B000DAB7F /* inventory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F6D0BAEE55B000DAB7F /* inventory.cpp */; }; + 92BC40450BAEE55B000DAB7F /* item.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F6F0BAEE55B000DAB7F /* item.cpp */; }; + 92BC40460BAEE55B000DAB7F /* joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F710BAEE55B000DAB7F /* joystick.cpp */; }; + 92BC40470BAEE55B000DAB7F /* localplayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F730BAEE55B000DAB7F /* localplayer.cpp */; }; + 92BC40480BAEE55B000DAB7F /* log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F760BAEE55B000DAB7F /* log.cpp */; }; + 92BC40490BAEE55B000DAB7F /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F790BAEE55B000DAB7F /* main.cpp */; }; + 92BC404B0BAEE55B000DAB7F /* map.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F7C0BAEE55B000DAB7F /* map.cpp */; }; + 92BC404C0BAEE55B000DAB7F /* monster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F7E0BAEE55B000DAB7F /* monster.cpp */; }; + 92BC404D0BAEE55B000DAB7F /* beinghandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F810BAEE55B000DAB7F /* beinghandler.cpp */; }; + 92BC404E0BAEE55B000DAB7F /* buysellhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F830BAEE55B000DAB7F /* buysellhandler.cpp */; }; + 92BC404F0BAEE55B000DAB7F /* charserverhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F850BAEE55B000DAB7F /* charserverhandler.cpp */; }; + 92BC40500BAEE55B000DAB7F /* chathandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F870BAEE55B000DAB7F /* chathandler.cpp */; }; + 92BC40510BAEE55B000DAB7F /* equipmenthandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F890BAEE55B000DAB7F /* equipmenthandler.cpp */; }; + 92BC40520BAEE55B000DAB7F /* inventoryhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F8B0BAEE55B000DAB7F /* inventoryhandler.cpp */; }; + 92BC40530BAEE55B000DAB7F /* itemhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F8D0BAEE55B000DAB7F /* itemhandler.cpp */; }; + 92BC40540BAEE55B000DAB7F /* loginhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F8F0BAEE55B000DAB7F /* loginhandler.cpp */; }; + 92BC40550BAEE55B000DAB7F /* maploginhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F910BAEE55B000DAB7F /* maploginhandler.cpp */; }; + 92BC40560BAEE55B000DAB7F /* messagehandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F930BAEE55B000DAB7F /* messagehandler.cpp */; }; + 92BC40570BAEE55B000DAB7F /* messagein.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F950BAEE55B000DAB7F /* messagein.cpp */; }; + 92BC40580BAEE55B000DAB7F /* messageout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F970BAEE55B000DAB7F /* messageout.cpp */; }; + 92BC40590BAEE55B000DAB7F /* network.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F990BAEE55B000DAB7F /* network.cpp */; }; + 92BC405A0BAEE55B000DAB7F /* npchandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F9B0BAEE55B000DAB7F /* npchandler.cpp */; }; + 92BC405B0BAEE55B000DAB7F /* playerhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F9D0BAEE55B000DAB7F /* playerhandler.cpp */; }; + 92BC405C0BAEE55B000DAB7F /* protocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F9F0BAEE55B000DAB7F /* protocol.cpp */; }; + 92BC405D0BAEE55B000DAB7F /* skillhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FA10BAEE55B000DAB7F /* skillhandler.cpp */; }; + 92BC405E0BAEE55B000DAB7F /* tradehandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FA30BAEE55B000DAB7F /* tradehandler.cpp */; }; + 92BC405F0BAEE55B000DAB7F /* npc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FA50BAEE55B000DAB7F /* npc.cpp */; }; + 92BC40600BAEE55B000DAB7F /* openglgraphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FA70BAEE55B000DAB7F /* openglgraphics.cpp */; }; + 92BC406E0BAEE55B000DAB7F /* player.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FBA0BAEE55B000DAB7F /* player.cpp */; }; + 92BC406F0BAEE55B000DAB7F /* action.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FBE0BAEE55B000DAB7F /* action.cpp */; }; + 92BC40700BAEE55B000DAB7F /* ambientoverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FC00BAEE55B000DAB7F /* ambientoverlay.cpp */; }; + 92BC40710BAEE55B000DAB7F /* animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FC20BAEE55B000DAB7F /* animation.cpp */; }; + 92BC40720BAEE55B000DAB7F /* buddylist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FC40BAEE55B000DAB7F /* buddylist.cpp */; }; + 92BC40740BAEE55B000DAB7F /* image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FC90BAEE55B000DAB7F /* image.cpp */; }; + 92BC40750BAEE55B000DAB7F /* imagewriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FCB0BAEE55B000DAB7F /* imagewriter.cpp */; }; + 92BC40760BAEE55B000DAB7F /* itemdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FCD0BAEE55B000DAB7F /* itemdb.cpp */; }; + 92BC40770BAEE55B000DAB7F /* iteminfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FCF0BAEE55B000DAB7F /* iteminfo.cpp */; }; + 92BC40780BAEE55B000DAB7F /* mapreader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FD10BAEE55B000DAB7F /* mapreader.cpp */; }; + 92BC40790BAEE55B000DAB7F /* monsterdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FD30BAEE55B000DAB7F /* monsterdb.cpp */; }; + 92BC407A0BAEE55B000DAB7F /* monsterinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FD50BAEE55B000DAB7F /* monsterinfo.cpp */; }; + 92BC407B0BAEE55B000DAB7F /* music.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FD70BAEE55B000DAB7F /* music.cpp */; }; + 92BC407D0BAEE55B000DAB7F /* resource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FDB0BAEE55B000DAB7F /* resource.cpp */; }; + 92BC407E0BAEE55B000DAB7F /* resourcemanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FDD0BAEE55B000DAB7F /* resourcemanager.cpp */; }; + 92BC40800BAEE55B000DAB7F /* soundeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FE10BAEE55B000DAB7F /* soundeffect.cpp */; }; + 92BC40810BAEE55B000DAB7F /* spritedef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FE30BAEE55B000DAB7F /* spritedef.cpp */; }; + 92BC40830BAEE55B000DAB7F /* simpleanimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FE80BAEE55B000DAB7F /* simpleanimation.cpp */; }; + 92BC40840BAEE55B000DAB7F /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FEA0BAEE55B000DAB7F /* sound.cpp */; }; + 92BC40850BAEE55B000DAB7F /* base64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FEF0BAEE55B000DAB7F /* base64.cpp */; }; + 92BC40860BAEE55B000DAB7F /* xml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FF40BAEE55B000DAB7F /* xml.cpp */; }; + 92BC40940BAEE818000DAB7F /* SDL_image.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC408E0BAEE818000DAB7F /* SDL_image.framework */; }; + 92BC40950BAEE818000DAB7F /* SDL_mixer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC408F0BAEE818000DAB7F /* SDL_mixer.framework */; }; + 92BC40960BAEE818000DAB7F /* SDL_net.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40900BAEE818000DAB7F /* SDL_net.framework */; }; + 92BC40970BAEE818000DAB7F /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40910BAEE818000DAB7F /* SDL.framework */; }; + 92BC40C70BAEEDAA000DAB7F /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40C60BAEEDAA000DAB7F /* OpenGL.framework */; }; + 92BC40D90BAEEED3000DAB7F /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40D80BAEEED3000DAB7F /* IOKit.framework */; }; + 92BC40E60BAEF54B000DAB7F /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; }; + 92BC40E90BAEF57D000DAB7F /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40E80BAEF57D000DAB7F /* Cocoa.framework */; }; + 92EEA0030D2E20B300DDE300 /* libpng.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 9294DAA00C17E73200FCEDE9 /* libpng.framework */; }; + 92EEA0050D2E20B300DDE300 /* SDL_image.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC408E0BAEE818000DAB7F /* SDL_image.framework */; }; + 92EEA0060D2E20B300DDE300 /* SDL_mixer.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC408F0BAEE818000DAB7F /* SDL_mixer.framework */; }; + 92EEA0070D2E20B300DDE300 /* SDL_net.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40900BAEE818000DAB7F /* SDL_net.framework */; }; + 92EEA0080D2E20B300DDE300 /* SDL.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40910BAEE818000DAB7F /* SDL.framework */; }; + 92FD19B00DDCE51000D14E5D /* player_relations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92FD19AE0DDCE51000D14E5D /* player_relations.cpp */; }; + 92FD19BA0DDCE53400D14E5D /* setup_players.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92FD19B30DDCE53400D14E5D /* setup_players.cpp */; }; + 92FD19BB0DDCE53400D14E5D /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92FD19B50DDCE53400D14E5D /* table.cpp */; }; + 92FD19BC0DDCE53400D14E5D /* table_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92FD19B70DDCE53400D14E5D /* table_model.cpp */; }; + 92FD19C10DDCE6F700D14E5D /* strprintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92FD19BF0DDCE6F700D14E5D /* strprintf.cpp */; }; + 92FD19C80DDCEBA500D14E5D /* emotions.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 92FD19C60DDCEB8500D14E5D /* emotions.png */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 924A3A520C085C190066885E /* Copy Data Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = data; + dstSubfolderSpec = 7; + files = ( + 924A40570C085EF50066885E /* items.xsd in Copy Data Files */, + ); + name = "Copy Data Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 924A3E540C085CAF0066885E /* Copy GUI Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = data/graphics/gui; + dstSubfolderSpec = 7; + files = ( + 92FD19C80DDCEBA500D14E5D /* emotions.png in Copy GUI Files */, + 92024E170CF1C11D006B55CB /* item_shortcut_bgr.png in Copy GUI Files */, + 92024E150CF1C0DA006B55CB /* close_button.png in Copy GUI Files */, + 924A405A0C085F950066885E /* bg_quad_dis.png in Copy GUI Files */, + 924A405C0C085F950066885E /* button.png in Copy GUI Files */, + 924A405D0C085F950066885E /* button_disabled.png in Copy GUI Files */, + 924A405E0C085F950066885E /* buttonhi.png in Copy GUI Files */, + 92024E160CF1C0FB006B55CB /* unknown-item.png in Copy GUI Files */, + 924A405F0C085F950066885E /* buttonpress.png in Copy GUI Files */, + 924A40600C085F950066885E /* checkbox.png in Copy GUI Files */, + 924A40610C085F950066885E /* deepbox.png in Copy GUI Files */, + 924A40620C085F950066885E /* fixedfont.png in Copy GUI Files */, + 924A40630C085F950066885E /* hits_blue.png in Copy GUI Files */, + 924A40640C085F950066885E /* hits_red.png in Copy GUI Files */, + 924A40650C085F950066885E /* hits_yellow.png in Copy GUI Files */, + 924A40660C085F950066885E /* hscroll_left_default.png in Copy GUI Files */, + 924A40670C085F950066885E /* hscroll_left_highlight.png in Copy GUI Files */, + 924A40680C085F950066885E /* hscroll_left_pressed.png in Copy GUI Files */, + 924A40690C085F950066885E /* hscroll_right_default.png in Copy GUI Files */, + 924A406A0C085F950066885E /* hscroll_right_highlight.png in Copy GUI Files */, + 924A406B0C085F950066885E /* hscroll_right_pressed.png in Copy GUI Files */, + 924A406C0C085F950066885E /* menuitemD.png in Copy GUI Files */, + 924A406D0C085F950066885E /* menuitemF.png in Copy GUI Files */, + 924A406E0C085F950066885E /* menuitemN.png in Copy GUI Files */, + 924A406F0C085F950066885E /* menuitemP.png in Copy GUI Files */, + 924A40700C085F950066885E /* mouse.png in Copy GUI Files */, + 924A40710C085F950066885E /* radioin.png in Copy GUI Files */, + 924A40720C085F950066885E /* radioout.png in Copy GUI Files */, + 924A40730C085F950066885E /* resize.png in Copy GUI Files */, + 924A40740C085F950066885E /* rpgfont_wider.png in Copy GUI Files */, + 924A40760C085F950066885E /* selection.png in Copy GUI Files */, + 924A40770C085F950066885E /* slider.png in Copy GUI Files */, + 924A40780C085F950066885E /* target-cursor-blue-l.png in Copy GUI Files */, + 924A40790C085F950066885E /* target-cursor-blue-m.png in Copy GUI Files */, + 924A407A0C085F950066885E /* target-cursor-blue-s.png in Copy GUI Files */, + 924A407B0C085F950066885E /* target-cursor-red-l.png in Copy GUI Files */, + 924A407C0C085F950066885E /* target-cursor-red-m.png in Copy GUI Files */, + 924A407D0C085F950066885E /* target-cursor-red-s.png in Copy GUI Files */, + 924A407E0C085F950066885E /* thickborder.png in Copy GUI Files */, + 924A407F0C085F950066885E /* vscroll_blue.png in Copy GUI Files */, + 924A40800C085F950066885E /* vscroll_down_default.png in Copy GUI Files */, + 924A40810C085F950066885E /* vscroll_down_highlight.png in Copy GUI Files */, + 924A40820C085F950066885E /* vscroll_down_pressed.png in Copy GUI Files */, + 924A40830C085F950066885E /* vscroll_grey.png in Copy GUI Files */, + 924A40840C085F950066885E /* vscroll_red.png in Copy GUI Files */, + 924A40850C085F950066885E /* vscroll_up_default.png in Copy GUI Files */, + 924A40860C085F950066885E /* vscroll_up_highlight.png in Copy GUI Files */, + 924A40870C085F950066885E /* vscroll_up_pressed.png in Copy GUI Files */, + ); + name = "Copy GUI Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 924A40880C085FBD0066885E /* Copy Image Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = data/graphics/images; + dstSubfolderSpec = 7; + files = ( + 924A408A0C0860120066885E /* error.png in Copy Image Files */, + 924A408B0C0860120066885E /* login_wallpaper.png in Copy Image Files */, + ); + name = "Copy Image Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 924A42000C0861C70066885E /* Copy Help Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = data/help; + dstSubfolderSpec = 7; + files = ( + 924A42020C0861EC0066885E /* about.txt in Copy Help Files */, + 924A42030C0861EC0066885E /* changes.txt in Copy Help Files */, + 924A42040C0861EC0066885E /* commands.txt in Copy Help Files */, + 924A42050C0861EC0066885E /* header.txt in Copy Help Files */, + 924A42060C0861EC0066885E /* index.txt in Copy Help Files */, + 924A42070C0861EC0066885E /* skills.txt in Copy Help Files */, + 924A42080C0861EC0066885E /* support.txt in Copy Help Files */, + 924A42090C0861EC0066885E /* team.txt in Copy Help Files */, + ); + name = "Copy Help Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 9273BE3C0EF34050008E56E1 /* Copy Music Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = data/music; + dstSubfolderSpec = 7; + files = ( + 9273BE2D0EF3403E008E56E1 /* Clouds Calling.ogg in Copy Music Files */, + 9273BE2E0EF3403E008E56E1 /* Faith.ogg in Copy Music Files */, + 9273BE2F0EF3403E008E56E1 /* finalman_and_yakslem-cavesong.ogg in Copy Music Files */, + 9273BE300EF3403E008E56E1 /* Magick - Real.ogg in Copy Music Files */, + 9273BE310EF3403E008E56E1 /* The Mana World - Snow Village.ogg in Copy Music Files */, + 9273BE320EF3403E008E56E1 /* The Mana World - The Forest.ogg in Copy Music Files */, + ); + name = "Copy Music Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 92EEA0090D2E20D100DDE300 /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 922CDA6A0E3D07150074C50E /* guichan.framework in Copy Frameworks */, + 92EEA0030D2E20B300DDE300 /* libpng.framework in Copy Frameworks */, + 92EEA0050D2E20B300DDE300 /* SDL_image.framework in Copy Frameworks */, + 92EEA0060D2E20B300DDE300 /* SDL_mixer.framework in Copy Frameworks */, + 92EEA0070D2E20B300DDE300 /* SDL_net.framework in Copy Frameworks */, + 92EEA0080D2E20B300DDE300 /* SDL.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 20286C33FDCF999611CA2CEA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; }; + 508344B209E5C41E0093A071 /* The Mana World.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "The Mana World.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 92024D2A0CF1BD9E006B55CB /* keyboardconfig.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = keyboardconfig.cpp; path = src/keyboardconfig.cpp; sourceTree = "<group>"; }; + 92024D2B0CF1BD9E006B55CB /* keyboardconfig.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = keyboardconfig.h; path = src/keyboardconfig.h; sourceTree = "<group>"; }; + 92024D2C0CF1BD9E006B55CB /* vector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vector.h; path = src/vector.h; sourceTree = "<group>"; }; + 92024D360CF1BDF7006B55CB /* setup_keyboard.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setup_keyboard.cpp; sourceTree = "<group>"; }; + 92024D370CF1BDF7006B55CB /* setup_keyboard.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setup_keyboard.h; sourceTree = "<group>"; }; + 92024D400CF1BE22006B55CB /* fastsqrt.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = fastsqrt.h; sourceTree = "<group>"; }; + 92024D420CF1BE22006B55CB /* trim.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = trim.h; sourceTree = "<group>"; }; + 92024D5B0CF1BE5C006B55CB /* close_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = close_button.png; sourceTree = "<group>"; }; + 92024D5C0CF1BE5C006B55CB /* item_shortcut_bgr.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = item_shortcut_bgr.png; sourceTree = "<group>"; }; + 92024D5D0CF1BE5C006B55CB /* unknown-item.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unknown-item.png"; sourceTree = "<group>"; }; + 92024DDD0CF1BFC8006B55CB /* The Mana World.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = "The Mana World.icns"; sourceTree = "<group>"; }; + 92024E740CF1DCF6006B55CB /* imageloader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = imageloader.cpp; sourceTree = "<group>"; }; + 92024E750CF1DCF6006B55CB /* imageloader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = imageloader.h; sourceTree = "<group>"; }; + 92037A190ED2035A00D3712D /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMain.h; path = src/SDLMain.h; sourceTree = "<group>"; }; + 92037A1A0ED2037300D3712D /* particleemitterprop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = particleemitterprop.h; path = src/particleemitterprop.h; sourceTree = "<group>"; }; + 92037A1B0ED2037300D3712D /* text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = text.cpp; path = src/text.cpp; sourceTree = "<group>"; }; + 92037A1C0ED2037300D3712D /* text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = text.h; path = src/text.h; sourceTree = "<group>"; }; + 92037A1D0ED2037300D3712D /* textmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = textmanager.cpp; path = src/textmanager.cpp; sourceTree = "<group>"; }; + 92037A1E0ED2037300D3712D /* textmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = textmanager.h; path = src/textmanager.h; sourceTree = "<group>"; }; + 922CD9560E3D00900074C50E /* npcdb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npcdb.cpp; sourceTree = "<group>"; }; + 922CD9570E3D00900074C50E /* npcdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npcdb.h; sourceTree = "<group>"; }; + 922CD95D0E3D01080074C50E /* shopitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = shopitem.cpp; path = src/shopitem.cpp; sourceTree = "<group>"; }; + 922CD95E0E3D01080074C50E /* shopitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = shopitem.h; path = src/shopitem.h; sourceTree = "<group>"; }; + 922CD9EC0E3D02C50074C50E /* guichan.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = guichan.framework; sourceTree = "<group>"; }; + 924A39E80C0784280066885E /* animationparticle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = animationparticle.cpp; path = src/animationparticle.cpp; sourceTree = "<group>"; }; + 924A39E90C0784280066885E /* animationparticle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = animationparticle.h; path = src/animationparticle.h; sourceTree = "<group>"; }; + 924A39EA0C0784280066885E /* imageparticle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = imageparticle.cpp; path = src/imageparticle.cpp; sourceTree = "<group>"; }; + 924A39EB0C0784280066885E /* imageparticle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = imageparticle.h; path = src/imageparticle.h; sourceTree = "<group>"; }; + 924A39EC0C0784280066885E /* particle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = particle.cpp; path = src/particle.cpp; sourceTree = "<group>"; }; + 924A39ED0C0784280066885E /* particle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = particle.h; path = src/particle.h; sourceTree = "<group>"; }; + 924A39EE0C0784280066885E /* particleemitter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = particleemitter.cpp; path = src/particleemitter.cpp; sourceTree = "<group>"; }; + 924A39EF0C0784280066885E /* particleemitter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = particleemitter.h; path = src/particleemitter.h; sourceTree = "<group>"; }; + 924A39F00C0784280066885E /* textparticle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = textparticle.cpp; path = src/textparticle.cpp; sourceTree = "<group>"; }; + 924A39F10C0784280066885E /* textparticle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = textparticle.h; path = src/textparticle.h; sourceTree = "<group>"; }; + 924A3A100C07A60B0066885E /* resizegrip.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = resizegrip.cpp; sourceTree = "<group>"; }; + 924A3A110C07A60B0066885E /* resizegrip.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = resizegrip.h; sourceTree = "<group>"; }; + 924A3E600C085ED70066885E /* bg_quad_dis.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bg_quad_dis.png; sourceTree = "<group>"; }; + 924A3E620C085ED70066885E /* button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button.png; sourceTree = "<group>"; }; + 924A3E630C085ED70066885E /* button_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_disabled.png; sourceTree = "<group>"; }; + 924A3E640C085ED70066885E /* buttonhi.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = buttonhi.png; sourceTree = "<group>"; }; + 924A3E650C085ED70066885E /* buttonpress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = buttonpress.png; sourceTree = "<group>"; }; + 924A3E660C085ED70066885E /* checkbox.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox.png; sourceTree = "<group>"; }; + 924A3E680C085ED70066885E /* deepbox.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = deepbox.png; sourceTree = "<group>"; }; + 924A3E690C085ED70066885E /* fixedfont.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fixedfont.png; sourceTree = "<group>"; }; + 924A3E6A0C085ED70066885E /* hits_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hits_blue.png; sourceTree = "<group>"; }; + 924A3E6B0C085ED70066885E /* hits_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hits_red.png; sourceTree = "<group>"; }; + 924A3E6C0C085ED70066885E /* hits_yellow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hits_yellow.png; sourceTree = "<group>"; }; + 924A3E6D0C085ED70066885E /* hscroll_left_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_left_default.png; sourceTree = "<group>"; }; + 924A3E6E0C085ED70066885E /* hscroll_left_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_left_highlight.png; sourceTree = "<group>"; }; + 924A3E6F0C085ED70066885E /* hscroll_left_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_left_pressed.png; sourceTree = "<group>"; }; + 924A3E700C085ED70066885E /* hscroll_right_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_right_default.png; sourceTree = "<group>"; }; + 924A3E710C085ED70066885E /* hscroll_right_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_right_highlight.png; sourceTree = "<group>"; }; + 924A3E720C085ED70066885E /* hscroll_right_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_right_pressed.png; sourceTree = "<group>"; }; + 924A3E740C085ED70066885E /* menuitemD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menuitemD.png; sourceTree = "<group>"; }; + 924A3E750C085ED70066885E /* menuitemF.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menuitemF.png; sourceTree = "<group>"; }; + 924A3E760C085ED70066885E /* menuitemN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menuitemN.png; sourceTree = "<group>"; }; + 924A3E770C085ED70066885E /* menuitemP.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menuitemP.png; sourceTree = "<group>"; }; + 924A3E780C085ED70066885E /* mouse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mouse.png; sourceTree = "<group>"; }; + 924A3E790C085ED70066885E /* radioin.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radioin.png; sourceTree = "<group>"; }; + 924A3E7A0C085ED70066885E /* radioout.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radioout.png; sourceTree = "<group>"; }; + 924A3E7B0C085ED70066885E /* resize.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = resize.png; sourceTree = "<group>"; }; + 924A3E7C0C085ED70066885E /* rpgfont_wider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rpgfont_wider.png; sourceTree = "<group>"; }; + 924A3E7E0C085ED70066885E /* selection.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = selection.png; sourceTree = "<group>"; }; + 924A3E7F0C085ED70066885E /* slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = slider.png; sourceTree = "<group>"; }; + 924A3E800C085ED70066885E /* target-cursor-blue-l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-blue-l.png"; sourceTree = "<group>"; }; + 924A3E810C085ED70066885E /* target-cursor-blue-m.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-blue-m.png"; sourceTree = "<group>"; }; + 924A3E820C085ED70066885E /* target-cursor-blue-s.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-blue-s.png"; sourceTree = "<group>"; }; + 924A3E830C085ED70066885E /* target-cursor-red-l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-red-l.png"; sourceTree = "<group>"; }; + 924A3E840C085ED70066885E /* target-cursor-red-m.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-red-m.png"; sourceTree = "<group>"; }; + 924A3E850C085ED70066885E /* target-cursor-red-s.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-red-s.png"; sourceTree = "<group>"; }; + 924A3E860C085ED70066885E /* thickborder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thickborder.png; sourceTree = "<group>"; }; + 924A3E870C085ED70066885E /* vscroll_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_blue.png; sourceTree = "<group>"; }; + 924A3E880C085ED70066885E /* vscroll_down_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_down_default.png; sourceTree = "<group>"; }; + 924A3E890C085ED70066885E /* vscroll_down_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_down_highlight.png; sourceTree = "<group>"; }; + 924A3E8A0C085ED70066885E /* vscroll_down_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_down_pressed.png; sourceTree = "<group>"; }; + 924A3E8B0C085ED70066885E /* vscroll_grey.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_grey.png; sourceTree = "<group>"; }; + 924A3E8C0C085ED70066885E /* vscroll_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_red.png; sourceTree = "<group>"; }; + 924A3E8D0C085ED70066885E /* vscroll_up_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_up_default.png; sourceTree = "<group>"; }; + 924A3E8E0C085ED70066885E /* vscroll_up_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_up_highlight.png; sourceTree = "<group>"; }; + 924A3E8F0C085ED70066885E /* vscroll_up_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_up_pressed.png; sourceTree = "<group>"; }; + 924A3E990C085ED70066885E /* error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = error.png; sourceTree = "<group>"; }; + 924A3E9A0C085ED70066885E /* login_wallpaper.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = login_wallpaper.png; sourceTree = "<group>"; }; + 924A400A0C085ED80066885E /* about.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = about.txt; sourceTree = "<group>"; }; + 924A400B0C085ED80066885E /* changes.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = changes.txt; sourceTree = "<group>"; }; + 924A400D0C085ED80066885E /* commands.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = commands.txt; sourceTree = "<group>"; }; + 924A400E0C085ED80066885E /* header.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = header.txt; sourceTree = "<group>"; }; + 924A400F0C085ED80066885E /* index.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = index.txt; sourceTree = "<group>"; }; + 924A40110C085ED80066885E /* skills.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = skills.txt; sourceTree = "<group>"; }; + 924A40120C085ED80066885E /* support.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = support.txt; sourceTree = "<group>"; }; + 924A40130C085ED80066885E /* team.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = team.txt; sourceTree = "<group>"; }; + 924A40180C085ED80066885E /* tmw.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = tmw.ico; sourceTree = "<group>"; }; + 924A40190C085ED80066885E /* tmw.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tmw.png; sourceTree = "<group>"; }; + 924A401A0C085ED80066885E /* tmw.xpm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = tmw.xpm; sourceTree = "<group>"; }; + 924A401C0C085ED80066885E /* items.xsd */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = items.xsd; sourceTree = "<group>"; }; + 924A42590C0871EC0066885E /* The Mana World.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = "The Mana World.icns"; sourceTree = "<group>"; }; + 924A42600C0874D00066885E /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + 925350010BC12A3200115FD5 /* imageset.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = imageset.cpp; sourceTree = "<group>"; }; + 925350020BC12A3200115FD5 /* imageset.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = imageset.h; sourceTree = "<group>"; }; + 926A29440F23BD88005D6466 /* layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = layout.cpp; sourceTree = "<group>"; }; + 926A29450F23BD88005D6466 /* layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = layout.h; sourceTree = "<group>"; }; + 926A29460F23BD88005D6466 /* tab.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tab.cpp; sourceTree = "<group>"; }; + 926A29470F23BD88005D6466 /* tab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tab.h; sourceTree = "<group>"; }; + 926A29480F23BD88005D6466 /* tabbedarea.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tabbedarea.cpp; sourceTree = "<group>"; }; + 926A29490F23BD88005D6466 /* tabbedarea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tabbedarea.h; sourceTree = "<group>"; }; + 926A294E0F23BD9E005D6466 /* npcintegerdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npcintegerdialog.cpp; sourceTree = "<group>"; }; + 926A294F0F23BD9E005D6466 /* npcintegerdialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npcintegerdialog.h; sourceTree = "<group>"; }; + 926A29500F23BD9E005D6466 /* npcstringdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npcstringdialog.cpp; sourceTree = "<group>"; }; + 926A29510F23BD9E005D6466 /* npcstringdialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npcstringdialog.h; sourceTree = "<group>"; }; + 926A29520F23BD9E005D6466 /* sdlinput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sdlinput.cpp; sourceTree = "<group>"; }; + 926A29530F23BD9E005D6466 /* sdlinput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sdlinput.h; sourceTree = "<group>"; }; + 926A29540F23BD9E005D6466 /* truetypefont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = truetypefont.cpp; sourceTree = "<group>"; }; + 926A29550F23BD9E005D6466 /* truetypefont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = truetypefont.h; sourceTree = "<group>"; }; + 926A295A0F23BDB1005D6466 /* gettext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gettext.h; sourceTree = "<group>"; }; + 926A295B0F23BDB1005D6466 /* mutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mutex.h; sourceTree = "<group>"; }; + 926A29790F23C155005D6466 /* SDL_ttf.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_ttf.framework; path = /Library/Frameworks/SDL_ttf.framework; sourceTree = "<absolute>"; }; + 926A297E0F23C18E005D6466 /* tab.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tab.png; sourceTree = "<group>"; }; + 926A297F0F23C18E005D6466 /* tabselected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tabselected.png; sourceTree = "<group>"; }; + 926A29840F23C1C8005D6466 /* windows.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = windows.txt; sourceTree = "<group>"; }; + 926F9CF60DB005FA00AACD26 /* itemshortcut.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = itemshortcut.cpp; path = src/itemshortcut.cpp; sourceTree = "<group>"; }; + 926F9CF70DB005FA00AACD26 /* itemshortcut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = itemshortcut.h; path = src/itemshortcut.h; sourceTree = "<group>"; }; + 926F9D410DB00AFC00AACD26 /* itemshortcutcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itemshortcutcontainer.cpp; sourceTree = "<group>"; }; + 926F9D420DB00AFC00AACD26 /* itemshortcutcontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemshortcutcontainer.h; sourceTree = "<group>"; }; + 926F9D430DB00AFC00AACD26 /* itemshortcutwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itemshortcutwindow.cpp; sourceTree = "<group>"; }; + 926F9D440DB00AFC00AACD26 /* itemshortcutwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemshortcutwindow.h; sourceTree = "<group>"; }; + 9273BDFB0EF33DFD008E56E1 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = COPYING; sourceTree = "<group>"; }; + 9273BDFD0EF33E1A008E56E1 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AUTHORS; sourceTree = "<group>"; }; + 9273BDFE0EF33E1A008E56E1 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; }; + 9273BE040EF33FB3008E56E1 /* particlecontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = particlecontainer.cpp; path = src/particlecontainer.cpp; sourceTree = "<group>"; }; + 9273BE050EF33FB3008E56E1 /* particlecontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = particlecontainer.h; path = src/particlecontainer.h; sourceTree = "<group>"; }; + 9273BE060EF33FB3008E56E1 /* statuseffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = statuseffect.cpp; path = src/statuseffect.cpp; sourceTree = "<group>"; }; + 9273BE070EF33FB3008E56E1 /* statuseffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = statuseffect.h; path = src/statuseffect.h; sourceTree = "<group>"; }; + 9273BE0B0EF33FFF008E56E1 /* Clouds Calling.ogg */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Clouds Calling.ogg"; sourceTree = "<group>"; }; + 9273BE0C0EF33FFF008E56E1 /* Faith.ogg */ = {isa = PBXFileReference; lastKnownFileType = file; path = Faith.ogg; sourceTree = "<group>"; }; + 9273BE0D0EF33FFF008E56E1 /* finalman_and_yakslem-cavesong.ogg */ = {isa = PBXFileReference; lastKnownFileType = file; path = "finalman_and_yakslem-cavesong.ogg"; sourceTree = "<group>"; }; + 9273BE0E0EF33FFF008E56E1 /* Magick - Real.ogg */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Magick - Real.ogg"; sourceTree = "<group>"; }; + 9273BE0F0EF33FFF008E56E1 /* The Mana World - Snow Village.ogg */ = {isa = PBXFileReference; lastKnownFileType = file; path = "The Mana World - Snow Village.ogg"; sourceTree = "<group>"; }; + 9273BE100EF33FFF008E56E1 /* The Mana World - The Forest.ogg */ = {isa = PBXFileReference; lastKnownFileType = file; path = "The Mana World - The Forest.ogg"; sourceTree = "<group>"; }; + 9294DAA00C17E73200FCEDE9 /* libpng.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libpng.framework; path = /Library/Frameworks/libpng.framework; sourceTree = "<absolute>"; }; + 92A4CC9D0D1C622E00CA28FB /* dye.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dye.cpp; path = src/resources/dye.cpp; sourceTree = "<group>"; }; + 92A4CCE00D1DA58D00CA28FB /* dir.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dir.c; sourceTree = "<group>"; }; + 92A4CCE10D1DA58D00CA28FB /* grp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = grp.c; sourceTree = "<group>"; }; + 92A4CCE20D1DA58D00CA28FB /* hog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hog.c; sourceTree = "<group>"; }; + 92A4CCE30D1DA58D00CA28FB /* lzma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lzma.c; sourceTree = "<group>"; }; + 92A4CCE40D1DA58D00CA28FB /* mvl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mvl.c; sourceTree = "<group>"; }; + 92A4CCE50D1DA58D00CA28FB /* qpak.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qpak.c; sourceTree = "<group>"; }; + 92A4CCE60D1DA58D00CA28FB /* wad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = wad.c; sourceTree = "<group>"; }; + 92A4CCE70D1DA58D00CA28FB /* zip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = "<group>"; }; + 92A4CCF00D1DA5A800CA28FB /* physfs_casefolding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = physfs_casefolding.h; sourceTree = "<group>"; }; + 92A4CCF10D1DA5A800CA28FB /* physfs_platforms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = physfs_platforms.h; sourceTree = "<group>"; }; + 92A4CCF20D1DA5C600CA28FB /* macosx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = macosx.c; sourceTree = "<group>"; }; + 92A4CCFB0D1DA89800CA28FB /* physfs_unicode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = physfs_unicode.c; sourceTree = "<group>"; }; + 92BC3ECA0BAEE55A000DAB7F /* animatedsprite.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = animatedsprite.cpp; path = src/animatedsprite.cpp; sourceTree = "<group>"; }; + 92BC3ECB0BAEE55A000DAB7F /* animatedsprite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = animatedsprite.h; path = src/animatedsprite.h; sourceTree = "<group>"; }; + 92BC3ECC0BAEE55A000DAB7F /* being.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = being.cpp; path = src/being.cpp; sourceTree = "<group>"; }; + 92BC3ECD0BAEE55A000DAB7F /* being.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = being.h; path = src/being.h; sourceTree = "<group>"; }; + 92BC3ECE0BAEE55A000DAB7F /* beingmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = beingmanager.cpp; path = src/beingmanager.cpp; sourceTree = "<group>"; }; + 92BC3ECF0BAEE55A000DAB7F /* beingmanager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = beingmanager.h; path = src/beingmanager.h; sourceTree = "<group>"; }; + 92BC3ED10BAEE55A000DAB7F /* configlistener.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = configlistener.h; path = src/configlistener.h; sourceTree = "<group>"; }; + 92BC3ED20BAEE55A000DAB7F /* configuration.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = configuration.cpp; path = src/configuration.cpp; sourceTree = "<group>"; }; + 92BC3ED30BAEE55A000DAB7F /* configuration.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = configuration.h; path = src/configuration.h; sourceTree = "<group>"; }; + 92BC3EE40BAEE55A000DAB7F /* engine.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = engine.cpp; path = src/engine.cpp; sourceTree = "<group>"; }; + 92BC3EE50BAEE55A000DAB7F /* engine.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = engine.h; path = src/engine.h; sourceTree = "<group>"; }; + 92BC3EE60BAEE55A000DAB7F /* equipment.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = equipment.cpp; path = src/equipment.cpp; sourceTree = "<group>"; }; + 92BC3EE70BAEE55A000DAB7F /* equipment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = equipment.h; path = src/equipment.h; sourceTree = "<group>"; }; + 92BC3EE80BAEE55A000DAB7F /* floor_item.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = floor_item.cpp; path = src/floor_item.cpp; sourceTree = "<group>"; }; + 92BC3EE90BAEE55A000DAB7F /* floor_item.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = floor_item.h; path = src/floor_item.h; sourceTree = "<group>"; }; + 92BC3EEA0BAEE55A000DAB7F /* flooritemmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flooritemmanager.cpp; path = src/flooritemmanager.cpp; sourceTree = "<group>"; }; + 92BC3EEB0BAEE55A000DAB7F /* flooritemmanager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flooritemmanager.h; path = src/flooritemmanager.h; sourceTree = "<group>"; }; + 92BC3EEC0BAEE55A000DAB7F /* game.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = game.cpp; path = src/game.cpp; sourceTree = "<group>"; }; + 92BC3EED0BAEE55A000DAB7F /* game.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = game.h; path = src/game.h; sourceTree = "<group>"; }; + 92BC3EEE0BAEE55A000DAB7F /* graphics.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = graphics.cpp; path = src/graphics.cpp; sourceTree = "<group>"; }; + 92BC3EEF0BAEE55A000DAB7F /* graphics.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = graphics.h; path = src/graphics.h; sourceTree = "<group>"; }; + 92BC3EF30BAEE55A000DAB7F /* browserbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = browserbox.cpp; sourceTree = "<group>"; }; + 92BC3EF40BAEE55A000DAB7F /* browserbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = browserbox.h; sourceTree = "<group>"; }; + 92BC3EF50BAEE55A000DAB7F /* buddywindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = buddywindow.cpp; sourceTree = "<group>"; }; + 92BC3EF60BAEE55A000DAB7F /* buddywindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = buddywindow.h; sourceTree = "<group>"; }; + 92BC3EF70BAEE55A000DAB7F /* button.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = button.cpp; sourceTree = "<group>"; }; + 92BC3EF80BAEE55A000DAB7F /* button.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = button.h; sourceTree = "<group>"; }; + 92BC3EF90BAEE55A000DAB7F /* buy.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = buy.cpp; sourceTree = "<group>"; }; + 92BC3EFA0BAEE55A000DAB7F /* buy.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = buy.h; sourceTree = "<group>"; }; + 92BC3EFB0BAEE55A000DAB7F /* buysell.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = buysell.cpp; sourceTree = "<group>"; }; + 92BC3EFC0BAEE55A000DAB7F /* buysell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = buysell.h; sourceTree = "<group>"; }; + 92BC3EFD0BAEE55A000DAB7F /* char_select.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = char_select.cpp; sourceTree = "<group>"; }; + 92BC3EFE0BAEE55A000DAB7F /* char_select.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = char_select.h; sourceTree = "<group>"; }; + 92BC3EFF0BAEE55A000DAB7F /* char_server.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = char_server.cpp; sourceTree = "<group>"; }; + 92BC3F000BAEE55A000DAB7F /* char_server.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = char_server.h; sourceTree = "<group>"; }; + 92BC3F030BAEE55A000DAB7F /* chat.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = chat.cpp; sourceTree = "<group>"; }; + 92BC3F040BAEE55A000DAB7F /* chat.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = chat.h; sourceTree = "<group>"; }; + 92BC3F050BAEE55A000DAB7F /* chatinput.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = chatinput.cpp; sourceTree = "<group>"; }; + 92BC3F060BAEE55A000DAB7F /* chatinput.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = chatinput.h; sourceTree = "<group>"; }; + 92BC3F070BAEE55A000DAB7F /* checkbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = checkbox.cpp; sourceTree = "<group>"; }; + 92BC3F080BAEE55A000DAB7F /* checkbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = checkbox.h; sourceTree = "<group>"; }; + 92BC3F090BAEE55A000DAB7F /* confirm_dialog.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = confirm_dialog.cpp; sourceTree = "<group>"; }; + 92BC3F0A0BAEE55A000DAB7F /* confirm_dialog.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = confirm_dialog.h; sourceTree = "<group>"; }; + 92BC3F0B0BAEE55A000DAB7F /* connection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = connection.cpp; sourceTree = "<group>"; }; + 92BC3F0C0BAEE55A000DAB7F /* connection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = connection.h; sourceTree = "<group>"; }; + 92BC3F0D0BAEE55A000DAB7F /* debugwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = debugwindow.cpp; sourceTree = "<group>"; }; + 92BC3F0E0BAEE55A000DAB7F /* debugwindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = debugwindow.h; sourceTree = "<group>"; }; + 92BC3F0F0BAEE55A000DAB7F /* equipmentwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = equipmentwindow.cpp; sourceTree = "<group>"; }; + 92BC3F100BAEE55A000DAB7F /* equipmentwindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = equipmentwindow.h; sourceTree = "<group>"; }; + 92BC3F110BAEE55A000DAB7F /* focushandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = focushandler.cpp; sourceTree = "<group>"; }; + 92BC3F120BAEE55A000DAB7F /* focushandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = focushandler.h; sourceTree = "<group>"; }; + 92BC3F130BAEE55A000DAB7F /* gccontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = gccontainer.cpp; sourceTree = "<group>"; }; + 92BC3F140BAEE55A000DAB7F /* gccontainer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = gccontainer.h; sourceTree = "<group>"; }; + 92BC3F150BAEE55A000DAB7F /* gui.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = gui.cpp; sourceTree = "<group>"; }; + 92BC3F160BAEE55A000DAB7F /* gui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = gui.h; sourceTree = "<group>"; }; + 92BC3F190BAEE55A000DAB7F /* help.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = help.cpp; sourceTree = "<group>"; }; + 92BC3F1A0BAEE55A000DAB7F /* help.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = help.h; sourceTree = "<group>"; }; + 92BC3F1B0BAEE55A000DAB7F /* inttextbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = inttextbox.cpp; sourceTree = "<group>"; }; + 92BC3F1C0BAEE55A000DAB7F /* inttextbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = inttextbox.h; sourceTree = "<group>"; }; + 92BC3F1D0BAEE55A000DAB7F /* inventorywindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = inventorywindow.cpp; sourceTree = "<group>"; }; + 92BC3F1E0BAEE55A000DAB7F /* inventorywindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = inventorywindow.h; sourceTree = "<group>"; }; + 92BC3F1F0BAEE55A000DAB7F /* item_amount.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = item_amount.cpp; sourceTree = "<group>"; }; + 92BC3F200BAEE55A000DAB7F /* item_amount.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = item_amount.h; sourceTree = "<group>"; }; + 92BC3F210BAEE55A000DAB7F /* itemcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = itemcontainer.cpp; sourceTree = "<group>"; }; + 92BC3F220BAEE55A000DAB7F /* itemcontainer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = itemcontainer.h; sourceTree = "<group>"; }; + 92BC3F230BAEE55A000DAB7F /* linkhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = linkhandler.h; sourceTree = "<group>"; }; + 92BC3F240BAEE55A000DAB7F /* listbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = listbox.cpp; sourceTree = "<group>"; }; + 92BC3F250BAEE55A000DAB7F /* listbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = listbox.h; sourceTree = "<group>"; }; + 92BC3F260BAEE55A000DAB7F /* login.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = login.cpp; sourceTree = "<group>"; }; + 92BC3F270BAEE55A000DAB7F /* login.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = login.h; sourceTree = "<group>"; }; + 92BC3F280BAEE55A000DAB7F /* menuwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = menuwindow.cpp; sourceTree = "<group>"; }; + 92BC3F290BAEE55A000DAB7F /* menuwindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = menuwindow.h; sourceTree = "<group>"; }; + 92BC3F2A0BAEE55A000DAB7F /* minimap.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = minimap.cpp; sourceTree = "<group>"; }; + 92BC3F2B0BAEE55A000DAB7F /* minimap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = minimap.h; sourceTree = "<group>"; }; + 92BC3F2C0BAEE55A000DAB7F /* ministatus.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ministatus.cpp; sourceTree = "<group>"; }; + 92BC3F2D0BAEE55A000DAB7F /* ministatus.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ministatus.h; sourceTree = "<group>"; }; + 92BC3F300BAEE55A000DAB7F /* npc_text.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = npc_text.cpp; sourceTree = "<group>"; }; + 92BC3F310BAEE55A000DAB7F /* npc_text.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = npc_text.h; sourceTree = "<group>"; }; + 92BC3F320BAEE55A000DAB7F /* npclistdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = npclistdialog.cpp; sourceTree = "<group>"; }; + 92BC3F330BAEE55A000DAB7F /* npclistdialog.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = npclistdialog.h; sourceTree = "<group>"; }; + 92BC3F340BAEE55A000DAB7F /* ok_dialog.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ok_dialog.cpp; sourceTree = "<group>"; }; + 92BC3F350BAEE55A000DAB7F /* ok_dialog.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ok_dialog.h; sourceTree = "<group>"; }; + 92BC3F360BAEE55A000DAB7F /* passwordfield.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = passwordfield.cpp; sourceTree = "<group>"; }; + 92BC3F370BAEE55A000DAB7F /* passwordfield.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = passwordfield.h; sourceTree = "<group>"; }; + 92BC3F380BAEE55A000DAB7F /* playerbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = playerbox.cpp; sourceTree = "<group>"; }; + 92BC3F390BAEE55A000DAB7F /* playerbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = playerbox.h; sourceTree = "<group>"; }; + 92BC3F3A0BAEE55A000DAB7F /* popupmenu.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = popupmenu.cpp; sourceTree = "<group>"; }; + 92BC3F3B0BAEE55A000DAB7F /* popupmenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = popupmenu.h; sourceTree = "<group>"; }; + 92BC3F3C0BAEE55A000DAB7F /* progressbar.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = progressbar.cpp; sourceTree = "<group>"; }; + 92BC3F3D0BAEE55A000DAB7F /* progressbar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = progressbar.h; sourceTree = "<group>"; }; + 92BC3F3E0BAEE55A000DAB7F /* radiobutton.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = radiobutton.cpp; sourceTree = "<group>"; }; + 92BC3F3F0BAEE55A000DAB7F /* radiobutton.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = radiobutton.h; sourceTree = "<group>"; }; + 92BC3F400BAEE55A000DAB7F /* register.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = register.cpp; sourceTree = "<group>"; }; + 92BC3F410BAEE55A000DAB7F /* register.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = register.h; sourceTree = "<group>"; }; + 92BC3F420BAEE55A000DAB7F /* scrollarea.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = scrollarea.cpp; sourceTree = "<group>"; }; + 92BC3F430BAEE55A000DAB7F /* scrollarea.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = scrollarea.h; sourceTree = "<group>"; }; + 92BC3F450BAEE55A000DAB7F /* sell.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = sell.cpp; sourceTree = "<group>"; }; + 92BC3F460BAEE55A000DAB7F /* sell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = sell.h; sourceTree = "<group>"; }; + 92BC3F470BAEE55A000DAB7F /* setup.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setup.cpp; sourceTree = "<group>"; }; + 92BC3F480BAEE55A000DAB7F /* setup.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setup.h; sourceTree = "<group>"; }; + 92BC3F490BAEE55A000DAB7F /* setup_audio.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setup_audio.cpp; sourceTree = "<group>"; }; + 92BC3F4A0BAEE55A000DAB7F /* setup_audio.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setup_audio.h; sourceTree = "<group>"; }; + 92BC3F4B0BAEE55A000DAB7F /* setup_joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setup_joystick.cpp; sourceTree = "<group>"; }; + 92BC3F4C0BAEE55A000DAB7F /* setup_joystick.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setup_joystick.h; sourceTree = "<group>"; }; + 92BC3F4D0BAEE55A000DAB7F /* setup_video.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setup_video.cpp; sourceTree = "<group>"; }; + 92BC3F4E0BAEE55A000DAB7F /* setup_video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setup_video.h; sourceTree = "<group>"; }; + 92BC3F4F0BAEE55A000DAB7F /* setuptab.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setuptab.h; sourceTree = "<group>"; }; + 92BC3F500BAEE55A000DAB7F /* shop.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = shop.cpp; sourceTree = "<group>"; }; + 92BC3F510BAEE55A000DAB7F /* shop.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = shop.h; sourceTree = "<group>"; }; + 92BC3F520BAEE55A000DAB7F /* shoplistbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = shoplistbox.cpp; sourceTree = "<group>"; }; + 92BC3F530BAEE55A000DAB7F /* shoplistbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = shoplistbox.h; sourceTree = "<group>"; }; + 92BC3F540BAEE55A000DAB7F /* skill.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = skill.cpp; sourceTree = "<group>"; }; + 92BC3F550BAEE55A000DAB7F /* skill.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = skill.h; sourceTree = "<group>"; }; + 92BC3F560BAEE55A000DAB7F /* slider.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = slider.cpp; sourceTree = "<group>"; }; + 92BC3F570BAEE55A000DAB7F /* slider.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = slider.h; sourceTree = "<group>"; }; + 92BC3F580BAEE55A000DAB7F /* status.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = status.cpp; sourceTree = "<group>"; }; + 92BC3F590BAEE55B000DAB7F /* status.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = status.h; sourceTree = "<group>"; }; + 92BC3F5C0BAEE55B000DAB7F /* textbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = textbox.cpp; sourceTree = "<group>"; }; + 92BC3F5D0BAEE55B000DAB7F /* textbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = textbox.h; sourceTree = "<group>"; }; + 92BC3F5E0BAEE55B000DAB7F /* textfield.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = textfield.cpp; sourceTree = "<group>"; }; + 92BC3F5F0BAEE55B000DAB7F /* textfield.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = textfield.h; sourceTree = "<group>"; }; + 92BC3F600BAEE55B000DAB7F /* trade.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = trade.cpp; sourceTree = "<group>"; }; + 92BC3F610BAEE55B000DAB7F /* trade.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = trade.h; sourceTree = "<group>"; }; + 92BC3F620BAEE55B000DAB7F /* updatewindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = updatewindow.cpp; sourceTree = "<group>"; }; + 92BC3F630BAEE55B000DAB7F /* updatewindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = updatewindow.h; sourceTree = "<group>"; }; + 92BC3F660BAEE55B000DAB7F /* viewport.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = viewport.cpp; sourceTree = "<group>"; }; + 92BC3F670BAEE55B000DAB7F /* viewport.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = viewport.h; sourceTree = "<group>"; }; + 92BC3F680BAEE55B000DAB7F /* window.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = window.cpp; sourceTree = "<group>"; }; + 92BC3F690BAEE55B000DAB7F /* window.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = window.h; sourceTree = "<group>"; }; + 92BC3F6A0BAEE55B000DAB7F /* windowcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = windowcontainer.cpp; sourceTree = "<group>"; }; + 92BC3F6B0BAEE55B000DAB7F /* windowcontainer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = windowcontainer.h; sourceTree = "<group>"; }; + 92BC3F6C0BAEE55B000DAB7F /* guichanfwd.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = guichanfwd.h; path = src/guichanfwd.h; sourceTree = "<group>"; }; + 92BC3F6D0BAEE55B000DAB7F /* inventory.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = inventory.cpp; path = src/inventory.cpp; sourceTree = "<group>"; }; + 92BC3F6E0BAEE55B000DAB7F /* inventory.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inventory.h; path = src/inventory.h; sourceTree = "<group>"; }; + 92BC3F6F0BAEE55B000DAB7F /* item.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = item.cpp; path = src/item.cpp; sourceTree = "<group>"; }; + 92BC3F700BAEE55B000DAB7F /* item.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = item.h; path = src/item.h; sourceTree = "<group>"; }; + 92BC3F710BAEE55B000DAB7F /* joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = joystick.cpp; path = src/joystick.cpp; sourceTree = "<group>"; }; + 92BC3F720BAEE55B000DAB7F /* joystick.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = joystick.h; path = src/joystick.h; sourceTree = "<group>"; }; + 92BC3F730BAEE55B000DAB7F /* localplayer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = localplayer.cpp; path = src/localplayer.cpp; sourceTree = "<group>"; }; + 92BC3F740BAEE55B000DAB7F /* localplayer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = localplayer.h; path = src/localplayer.h; sourceTree = "<group>"; }; + 92BC3F750BAEE55B000DAB7F /* lockedarray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = lockedarray.h; path = src/lockedarray.h; sourceTree = "<group>"; }; + 92BC3F760BAEE55B000DAB7F /* log.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = log.cpp; path = src/log.cpp; sourceTree = "<group>"; }; + 92BC3F770BAEE55B000DAB7F /* log.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = log.h; path = src/log.h; sourceTree = "<group>"; }; + 92BC3F780BAEE55B000DAB7F /* logindata.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = logindata.h; path = src/logindata.h; sourceTree = "<group>"; }; + 92BC3F790BAEE55B000DAB7F /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = "<group>"; }; + 92BC3F7A0BAEE55B000DAB7F /* main.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = main.h; path = src/main.h; sourceTree = "<group>"; }; + 92BC3F7C0BAEE55B000DAB7F /* map.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = map.cpp; path = src/map.cpp; sourceTree = "<group>"; }; + 92BC3F7D0BAEE55B000DAB7F /* map.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = map.h; path = src/map.h; sourceTree = "<group>"; }; + 92BC3F7E0BAEE55B000DAB7F /* monster.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = monster.cpp; path = src/monster.cpp; sourceTree = "<group>"; }; + 92BC3F7F0BAEE55B000DAB7F /* monster.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = monster.h; path = src/monster.h; sourceTree = "<group>"; }; + 92BC3F810BAEE55B000DAB7F /* beinghandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = beinghandler.cpp; sourceTree = "<group>"; }; + 92BC3F820BAEE55B000DAB7F /* beinghandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = beinghandler.h; sourceTree = "<group>"; }; + 92BC3F830BAEE55B000DAB7F /* buysellhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = buysellhandler.cpp; sourceTree = "<group>"; }; + 92BC3F840BAEE55B000DAB7F /* buysellhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = buysellhandler.h; sourceTree = "<group>"; }; + 92BC3F850BAEE55B000DAB7F /* charserverhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = charserverhandler.cpp; sourceTree = "<group>"; }; + 92BC3F860BAEE55B000DAB7F /* charserverhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = charserverhandler.h; sourceTree = "<group>"; }; + 92BC3F870BAEE55B000DAB7F /* chathandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = chathandler.cpp; sourceTree = "<group>"; }; + 92BC3F880BAEE55B000DAB7F /* chathandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = chathandler.h; sourceTree = "<group>"; }; + 92BC3F890BAEE55B000DAB7F /* equipmenthandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = equipmenthandler.cpp; sourceTree = "<group>"; }; + 92BC3F8A0BAEE55B000DAB7F /* equipmenthandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = equipmenthandler.h; sourceTree = "<group>"; }; + 92BC3F8B0BAEE55B000DAB7F /* inventoryhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = inventoryhandler.cpp; sourceTree = "<group>"; }; + 92BC3F8C0BAEE55B000DAB7F /* inventoryhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = inventoryhandler.h; sourceTree = "<group>"; }; + 92BC3F8D0BAEE55B000DAB7F /* itemhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = itemhandler.cpp; sourceTree = "<group>"; }; + 92BC3F8E0BAEE55B000DAB7F /* itemhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = itemhandler.h; sourceTree = "<group>"; }; + 92BC3F8F0BAEE55B000DAB7F /* loginhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = loginhandler.cpp; sourceTree = "<group>"; }; + 92BC3F900BAEE55B000DAB7F /* loginhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = loginhandler.h; sourceTree = "<group>"; }; + 92BC3F910BAEE55B000DAB7F /* maploginhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = maploginhandler.cpp; sourceTree = "<group>"; }; + 92BC3F920BAEE55B000DAB7F /* maploginhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = maploginhandler.h; sourceTree = "<group>"; }; + 92BC3F930BAEE55B000DAB7F /* messagehandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = messagehandler.cpp; sourceTree = "<group>"; }; + 92BC3F940BAEE55B000DAB7F /* messagehandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = messagehandler.h; sourceTree = "<group>"; }; + 92BC3F950BAEE55B000DAB7F /* messagein.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = messagein.cpp; sourceTree = "<group>"; }; + 92BC3F960BAEE55B000DAB7F /* messagein.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = messagein.h; sourceTree = "<group>"; }; + 92BC3F970BAEE55B000DAB7F /* messageout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = messageout.cpp; sourceTree = "<group>"; }; + 92BC3F980BAEE55B000DAB7F /* messageout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = messageout.h; sourceTree = "<group>"; }; + 92BC3F990BAEE55B000DAB7F /* network.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = network.cpp; sourceTree = "<group>"; }; + 92BC3F9A0BAEE55B000DAB7F /* network.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = network.h; sourceTree = "<group>"; }; + 92BC3F9B0BAEE55B000DAB7F /* npchandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = npchandler.cpp; sourceTree = "<group>"; }; + 92BC3F9C0BAEE55B000DAB7F /* npchandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = npchandler.h; sourceTree = "<group>"; }; + 92BC3F9D0BAEE55B000DAB7F /* playerhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = playerhandler.cpp; sourceTree = "<group>"; }; + 92BC3F9E0BAEE55B000DAB7F /* playerhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = playerhandler.h; sourceTree = "<group>"; }; + 92BC3F9F0BAEE55B000DAB7F /* protocol.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = protocol.cpp; sourceTree = "<group>"; }; + 92BC3FA00BAEE55B000DAB7F /* protocol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = protocol.h; sourceTree = "<group>"; }; + 92BC3FA10BAEE55B000DAB7F /* skillhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = skillhandler.cpp; sourceTree = "<group>"; }; + 92BC3FA20BAEE55B000DAB7F /* skillhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = skillhandler.h; sourceTree = "<group>"; }; + 92BC3FA30BAEE55B000DAB7F /* tradehandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = tradehandler.cpp; sourceTree = "<group>"; }; + 92BC3FA40BAEE55B000DAB7F /* tradehandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = tradehandler.h; sourceTree = "<group>"; }; + 92BC3FA50BAEE55B000DAB7F /* npc.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = npc.cpp; path = src/npc.cpp; sourceTree = "<group>"; }; + 92BC3FA60BAEE55B000DAB7F /* npc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = npc.h; path = src/npc.h; sourceTree = "<group>"; }; + 92BC3FA70BAEE55B000DAB7F /* openglgraphics.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = openglgraphics.cpp; path = src/openglgraphics.cpp; sourceTree = "<group>"; }; + 92BC3FA80BAEE55B000DAB7F /* openglgraphics.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = openglgraphics.h; path = src/openglgraphics.h; sourceTree = "<group>"; }; + 92BC3FAB0BAEE55B000DAB7F /* physfs.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = physfs.c; sourceTree = "<group>"; }; + 92BC3FAC0BAEE55B000DAB7F /* physfs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = physfs.h; sourceTree = "<group>"; }; + 92BC3FAD0BAEE55B000DAB7F /* physfs_byteorder.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = physfs_byteorder.c; sourceTree = "<group>"; }; + 92BC3FAE0BAEE55B000DAB7F /* physfs_internal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = physfs_internal.h; sourceTree = "<group>"; }; + 92BC3FB50BAEE55B000DAB7F /* posix.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = posix.c; sourceTree = "<group>"; }; + 92BC3FB70BAEE55B000DAB7F /* unix.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = unix.c; sourceTree = "<group>"; }; + 92BC3FBA0BAEE55B000DAB7F /* player.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = player.cpp; path = src/player.cpp; sourceTree = "<group>"; }; + 92BC3FBB0BAEE55B000DAB7F /* player.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = player.h; path = src/player.h; sourceTree = "<group>"; }; + 92BC3FBC0BAEE55B000DAB7F /* properties.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = properties.h; path = src/properties.h; sourceTree = "<group>"; }; + 92BC3FBE0BAEE55B000DAB7F /* action.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = action.cpp; sourceTree = "<group>"; }; + 92BC3FBF0BAEE55B000DAB7F /* action.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = action.h; sourceTree = "<group>"; }; + 92BC3FC00BAEE55B000DAB7F /* ambientoverlay.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ambientoverlay.cpp; sourceTree = "<group>"; }; + 92BC3FC10BAEE55B000DAB7F /* ambientoverlay.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ambientoverlay.h; sourceTree = "<group>"; }; + 92BC3FC20BAEE55B000DAB7F /* animation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = animation.cpp; sourceTree = "<group>"; }; + 92BC3FC30BAEE55B000DAB7F /* animation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = animation.h; sourceTree = "<group>"; }; + 92BC3FC40BAEE55B000DAB7F /* buddylist.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = buddylist.cpp; sourceTree = "<group>"; }; + 92BC3FC50BAEE55B000DAB7F /* buddylist.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = buddylist.h; sourceTree = "<group>"; }; + 92BC3FC90BAEE55B000DAB7F /* image.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = image.cpp; sourceTree = "<group>"; }; + 92BC3FCA0BAEE55B000DAB7F /* image.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = image.h; sourceTree = "<group>"; }; + 92BC3FCB0BAEE55B000DAB7F /* imagewriter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = imagewriter.cpp; sourceTree = "<group>"; }; + 92BC3FCC0BAEE55B000DAB7F /* imagewriter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = imagewriter.h; sourceTree = "<group>"; }; + 92BC3FCD0BAEE55B000DAB7F /* itemdb.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = itemdb.cpp; sourceTree = "<group>"; }; + 92BC3FCE0BAEE55B000DAB7F /* itemdb.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = itemdb.h; sourceTree = "<group>"; }; + 92BC3FCF0BAEE55B000DAB7F /* iteminfo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = iteminfo.cpp; sourceTree = "<group>"; }; + 92BC3FD00BAEE55B000DAB7F /* iteminfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = iteminfo.h; sourceTree = "<group>"; }; + 92BC3FD10BAEE55B000DAB7F /* mapreader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = mapreader.cpp; sourceTree = "<group>"; }; + 92BC3FD20BAEE55B000DAB7F /* mapreader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mapreader.h; sourceTree = "<group>"; }; + 92BC3FD30BAEE55B000DAB7F /* monsterdb.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = monsterdb.cpp; sourceTree = "<group>"; }; + 92BC3FD40BAEE55B000DAB7F /* monsterdb.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = monsterdb.h; sourceTree = "<group>"; }; + 92BC3FD50BAEE55B000DAB7F /* monsterinfo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = monsterinfo.cpp; sourceTree = "<group>"; }; + 92BC3FD60BAEE55B000DAB7F /* monsterinfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = monsterinfo.h; sourceTree = "<group>"; }; + 92BC3FD70BAEE55B000DAB7F /* music.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = music.cpp; sourceTree = "<group>"; }; + 92BC3FD80BAEE55B000DAB7F /* music.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = music.h; sourceTree = "<group>"; }; + 92BC3FDB0BAEE55B000DAB7F /* resource.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = resource.cpp; sourceTree = "<group>"; }; + 92BC3FDC0BAEE55B000DAB7F /* resource.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = "<group>"; }; + 92BC3FDD0BAEE55B000DAB7F /* resourcemanager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = resourcemanager.cpp; sourceTree = "<group>"; }; + 92BC3FDE0BAEE55B000DAB7F /* resourcemanager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = resourcemanager.h; sourceTree = "<group>"; }; + 92BC3FE10BAEE55B000DAB7F /* soundeffect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = soundeffect.cpp; sourceTree = "<group>"; }; + 92BC3FE20BAEE55B000DAB7F /* soundeffect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = soundeffect.h; sourceTree = "<group>"; }; + 92BC3FE30BAEE55B000DAB7F /* spritedef.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = spritedef.cpp; sourceTree = "<group>"; }; + 92BC3FE40BAEE55B000DAB7F /* spritedef.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = spritedef.h; sourceTree = "<group>"; }; + 92BC3FE70BAEE55B000DAB7F /* serverinfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = serverinfo.h; path = src/serverinfo.h; sourceTree = "<group>"; }; + 92BC3FE80BAEE55B000DAB7F /* simpleanimation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = simpleanimation.cpp; path = src/simpleanimation.cpp; sourceTree = "<group>"; }; + 92BC3FE90BAEE55B000DAB7F /* simpleanimation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = simpleanimation.h; path = src/simpleanimation.h; sourceTree = "<group>"; }; + 92BC3FEA0BAEE55B000DAB7F /* sound.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = sound.cpp; path = src/sound.cpp; sourceTree = "<group>"; }; + 92BC3FEB0BAEE55B000DAB7F /* sound.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sound.h; path = src/sound.h; sourceTree = "<group>"; }; + 92BC3FEC0BAEE55B000DAB7F /* sprite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sprite.h; path = src/sprite.h; sourceTree = "<group>"; }; + 92BC3FED0BAEE55B000DAB7F /* tileset.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = tileset.h; path = src/tileset.h; sourceTree = "<group>"; }; + 92BC3FEF0BAEE55B000DAB7F /* base64.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = base64.cpp; sourceTree = "<group>"; }; + 92BC3FF00BAEE55B000DAB7F /* base64.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = "<group>"; }; + 92BC3FF10BAEE55B000DAB7F /* dtor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = dtor.h; sourceTree = "<group>"; }; + 92BC3FF20BAEE55B000DAB7F /* tostring.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = tostring.h; sourceTree = "<group>"; }; + 92BC3FF40BAEE55B000DAB7F /* xml.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = xml.cpp; sourceTree = "<group>"; }; + 92BC3FF50BAEE55B000DAB7F /* xml.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = xml.h; sourceTree = "<group>"; }; + 92BC408E0BAEE818000DAB7F /* SDL_image.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_image.framework; path = /Library/Frameworks/SDL_image.framework; sourceTree = "<absolute>"; }; + 92BC408F0BAEE818000DAB7F /* SDL_mixer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_mixer.framework; path = /Library/Frameworks/SDL_mixer.framework; sourceTree = "<absolute>"; }; + 92BC40900BAEE818000DAB7F /* SDL_net.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_net.framework; path = /Library/Frameworks/SDL_net.framework; sourceTree = "<absolute>"; }; + 92BC40910BAEE818000DAB7F /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = /Library/Frameworks/SDL.framework; sourceTree = "<absolute>"; }; + 92BC40C60BAEEDAA000DAB7F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; }; + 92BC40D80BAEEED3000DAB7F /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; }; + 92BC40E50BAEF54B000DAB7F /* SDLMain.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = SDLMain.m; path = src/SDLMain.m; sourceTree = "<group>"; }; + 92BC40E80BAEF57D000DAB7F /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; + 92FD19AE0DDCE51000D14E5D /* player_relations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = player_relations.cpp; path = src/player_relations.cpp; sourceTree = "<group>"; }; + 92FD19AF0DDCE51000D14E5D /* player_relations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = player_relations.h; path = src/player_relations.h; sourceTree = "<group>"; }; + 92FD19B30DDCE53400D14E5D /* setup_players.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = setup_players.cpp; sourceTree = "<group>"; }; + 92FD19B40DDCE53400D14E5D /* setup_players.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setup_players.h; sourceTree = "<group>"; }; + 92FD19B50DDCE53400D14E5D /* table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = table.cpp; sourceTree = "<group>"; }; + 92FD19B60DDCE53400D14E5D /* table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = table.h; sourceTree = "<group>"; }; + 92FD19B70DDCE53400D14E5D /* table_model.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = table_model.cpp; sourceTree = "<group>"; }; + 92FD19B80DDCE53400D14E5D /* table_model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = table_model.h; sourceTree = "<group>"; }; + 92FD19BD0DDCE56A00D14E5D /* dye.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dye.h; sourceTree = "<group>"; }; + 92FD19BF0DDCE6F700D14E5D /* strprintf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strprintf.cpp; sourceTree = "<group>"; }; + 92FD19C00DDCE6F700D14E5D /* strprintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strprintf.h; sourceTree = "<group>"; }; + 92FD19C60DDCEB8500D14E5D /* emotions.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = emotions.png; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D0C4E910486CD37000505A6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */, + 92BC40940BAEE818000DAB7F /* SDL_image.framework in Frameworks */, + 92BC40950BAEE818000DAB7F /* SDL_mixer.framework in Frameworks */, + 92BC40960BAEE818000DAB7F /* SDL_net.framework in Frameworks */, + 92BC40970BAEE818000DAB7F /* SDL.framework in Frameworks */, + 92BC40C70BAEEDAA000DAB7F /* OpenGL.framework in Frameworks */, + 92BC40D90BAEEED3000DAB7F /* IOKit.framework in Frameworks */, + 92BC40E90BAEF57D000DAB7F /* Cocoa.framework in Frameworks */, + 9294DAA10C17E73200FCEDE9 /* libpng.framework in Frameworks */, + 922CD9ED0E3D02C50074C50E /* guichan.framework in Frameworks */, + 926A297A0F23C155005D6466 /* SDL_ttf.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 195DF8CFFE9D517E11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 508344B209E5C41E0093A071 /* The Mana World.app */, + ); + name = Products; + sourceTree = "<group>"; + }; + 20286C29FDCF999611CA2CEA /* themanaworld */ = { + isa = PBXGroup; + children = ( + 924A42600C0874D00066885E /* Info.plist */, + 5048396909E3304600765E4B /* Configuration Files */, + 20286C2AFDCF999611CA2CEA /* Sources */, + 20286C2CFDCF999611CA2CEA /* Resources */, + 20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */, + 195DF8CFFE9D517E11CA2CBB /* Products */, + ); + name = themanaworld; + sourceTree = "<group>"; + }; + 20286C2AFDCF999611CA2CEA /* Sources */ = { + isa = PBXGroup; + children = ( + 9273BE040EF33FB3008E56E1 /* particlecontainer.cpp */, + 9273BE050EF33FB3008E56E1 /* particlecontainer.h */, + 9273BE060EF33FB3008E56E1 /* statuseffect.cpp */, + 9273BE070EF33FB3008E56E1 /* statuseffect.h */, + 92037A1A0ED2037300D3712D /* particleemitterprop.h */, + 92037A1B0ED2037300D3712D /* text.cpp */, + 92037A1C0ED2037300D3712D /* text.h */, + 92037A1D0ED2037300D3712D /* textmanager.cpp */, + 92037A1E0ED2037300D3712D /* textmanager.h */, + 922CD95D0E3D01080074C50E /* shopitem.cpp */, + 922CD95E0E3D01080074C50E /* shopitem.h */, + 92FD19AE0DDCE51000D14E5D /* player_relations.cpp */, + 92FD19AF0DDCE51000D14E5D /* player_relations.h */, + 926F9CF60DB005FA00AACD26 /* itemshortcut.cpp */, + 926F9CF70DB005FA00AACD26 /* itemshortcut.h */, + 92A4CC9D0D1C622E00CA28FB /* dye.cpp */, + 92024D2A0CF1BD9E006B55CB /* keyboardconfig.cpp */, + 92024D2B0CF1BD9E006B55CB /* keyboardconfig.h */, + 92024D2C0CF1BD9E006B55CB /* vector.h */, + 924A39E80C0784280066885E /* animationparticle.cpp */, + 924A39E90C0784280066885E /* animationparticle.h */, + 924A39EA0C0784280066885E /* imageparticle.cpp */, + 924A39EB0C0784280066885E /* imageparticle.h */, + 924A39EC0C0784280066885E /* particle.cpp */, + 924A39ED0C0784280066885E /* particle.h */, + 924A39EE0C0784280066885E /* particleemitter.cpp */, + 924A39EF0C0784280066885E /* particleemitter.h */, + 924A39F00C0784280066885E /* textparticle.cpp */, + 924A39F10C0784280066885E /* textparticle.h */, + 92BC3ECA0BAEE55A000DAB7F /* animatedsprite.cpp */, + 92BC3ECB0BAEE55A000DAB7F /* animatedsprite.h */, + 92BC3ECC0BAEE55A000DAB7F /* being.cpp */, + 92BC3ECD0BAEE55A000DAB7F /* being.h */, + 92BC3ECE0BAEE55A000DAB7F /* beingmanager.cpp */, + 92BC3ECF0BAEE55A000DAB7F /* beingmanager.h */, + 92BC3ED10BAEE55A000DAB7F /* configlistener.h */, + 92BC3ED20BAEE55A000DAB7F /* configuration.cpp */, + 92BC3ED30BAEE55A000DAB7F /* configuration.h */, + 92BC3EE40BAEE55A000DAB7F /* engine.cpp */, + 92BC3EE50BAEE55A000DAB7F /* engine.h */, + 92BC3EE60BAEE55A000DAB7F /* equipment.cpp */, + 92BC3EE70BAEE55A000DAB7F /* equipment.h */, + 92BC3EE80BAEE55A000DAB7F /* floor_item.cpp */, + 92BC3EE90BAEE55A000DAB7F /* floor_item.h */, + 92BC3EEA0BAEE55A000DAB7F /* flooritemmanager.cpp */, + 92BC3EEB0BAEE55A000DAB7F /* flooritemmanager.h */, + 92BC3EEC0BAEE55A000DAB7F /* game.cpp */, + 92BC3EED0BAEE55A000DAB7F /* game.h */, + 92BC3EEE0BAEE55A000DAB7F /* graphics.cpp */, + 92BC3EEF0BAEE55A000DAB7F /* graphics.h */, + 92BC3EF00BAEE55A000DAB7F /* gui */, + 92BC3F6C0BAEE55B000DAB7F /* guichanfwd.h */, + 92BC3F6D0BAEE55B000DAB7F /* inventory.cpp */, + 92BC3F6E0BAEE55B000DAB7F /* inventory.h */, + 92BC3F6F0BAEE55B000DAB7F /* item.cpp */, + 92BC3F700BAEE55B000DAB7F /* item.h */, + 92BC3F710BAEE55B000DAB7F /* joystick.cpp */, + 92BC3F720BAEE55B000DAB7F /* joystick.h */, + 92BC3F730BAEE55B000DAB7F /* localplayer.cpp */, + 92BC3F740BAEE55B000DAB7F /* localplayer.h */, + 92BC3F750BAEE55B000DAB7F /* lockedarray.h */, + 92BC3F760BAEE55B000DAB7F /* log.cpp */, + 92BC3F770BAEE55B000DAB7F /* log.h */, + 92BC3F780BAEE55B000DAB7F /* logindata.h */, + 92BC3F790BAEE55B000DAB7F /* main.cpp */, + 92BC3F7A0BAEE55B000DAB7F /* main.h */, + 92BC3F7C0BAEE55B000DAB7F /* map.cpp */, + 92BC3F7D0BAEE55B000DAB7F /* map.h */, + 92BC3F7E0BAEE55B000DAB7F /* monster.cpp */, + 92BC3F7F0BAEE55B000DAB7F /* monster.h */, + 92BC3F800BAEE55B000DAB7F /* net */, + 92BC3FA50BAEE55B000DAB7F /* npc.cpp */, + 92BC3FA60BAEE55B000DAB7F /* npc.h */, + 92BC3FA70BAEE55B000DAB7F /* openglgraphics.cpp */, + 92BC3FA80BAEE55B000DAB7F /* openglgraphics.h */, + 92BC3FA90BAEE55B000DAB7F /* physfs */, + 92BC3FBA0BAEE55B000DAB7F /* player.cpp */, + 92BC3FBB0BAEE55B000DAB7F /* player.h */, + 92BC3FBC0BAEE55B000DAB7F /* properties.h */, + 92BC3FBD0BAEE55B000DAB7F /* resources */, + 92BC3FE70BAEE55B000DAB7F /* serverinfo.h */, + 92BC3FE80BAEE55B000DAB7F /* simpleanimation.cpp */, + 92BC3FE90BAEE55B000DAB7F /* simpleanimation.h */, + 92BC3FEA0BAEE55B000DAB7F /* sound.cpp */, + 92BC3FEB0BAEE55B000DAB7F /* sound.h */, + 92BC3FEC0BAEE55B000DAB7F /* sprite.h */, + 92BC3FED0BAEE55B000DAB7F /* tileset.h */, + 92BC3FEE0BAEE55B000DAB7F /* utils */, + ); + name = Sources; + sourceTree = "<group>"; + }; + 20286C2CFDCF999611CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 9273BDFD0EF33E1A008E56E1 /* AUTHORS */, + 9273BDFE0EF33E1A008E56E1 /* README */, + 9273BDFB0EF33DFD008E56E1 /* COPYING */, + 924A42590C0871EC0066885E /* The Mana World.icns */, + 924A3E590C085ED70066885E /* data */, + ); + name = Resources; + sourceTree = "<group>"; + }; + 20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 926A29790F23C155005D6466 /* SDL_ttf.framework */, + 922CD9EC0E3D02C50074C50E /* guichan.framework */, + 9294DAA00C17E73200FCEDE9 /* libpng.framework */, + 92BC40E80BAEF57D000DAB7F /* Cocoa.framework */, + 92BC40D80BAEEED3000DAB7F /* IOKit.framework */, + 92BC40C60BAEEDAA000DAB7F /* OpenGL.framework */, + 92BC408E0BAEE818000DAB7F /* SDL_image.framework */, + 92BC408F0BAEE818000DAB7F /* SDL_mixer.framework */, + 92BC40900BAEE818000DAB7F /* SDL_net.framework */, + 92BC40910BAEE818000DAB7F /* SDL.framework */, + 20286C33FDCF999611CA2CEA /* Carbon.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = "<group>"; + }; + 5048396909E3304600765E4B /* Configuration Files */ = { + isa = PBXGroup; + children = ( + 92037A190ED2035A00D3712D /* SDLMain.h */, + 92BC40E50BAEF54B000DAB7F /* SDLMain.m */, + ); + name = "Configuration Files"; + sourceTree = "<group>"; + }; + 924A3A0F0C07A60B0066885E /* widgets */ = { + isa = PBXGroup; + children = ( + 926A29440F23BD88005D6466 /* layout.cpp */, + 926A29450F23BD88005D6466 /* layout.h */, + 926A29460F23BD88005D6466 /* tab.cpp */, + 926A29470F23BD88005D6466 /* tab.h */, + 926A29480F23BD88005D6466 /* tabbedarea.cpp */, + 926A29490F23BD88005D6466 /* tabbedarea.h */, + 924A3A100C07A60B0066885E /* resizegrip.cpp */, + 924A3A110C07A60B0066885E /* resizegrip.h */, + ); + path = widgets; + sourceTree = "<group>"; + }; + 924A3E590C085ED70066885E /* data */ = { + isa = PBXGroup; + children = ( + 9273BE0A0EF33FFF008E56E1 /* music */, + 924A3E5C0C085ED70066885E /* graphics */, + 924A40090C085ED80066885E /* help */, + 924A40140C085ED80066885E /* icons */, + 924A401C0C085ED80066885E /* items.xsd */, + ); + path = data; + sourceTree = "<group>"; + }; + 924A3E5C0C085ED70066885E /* graphics */ = { + isa = PBXGroup; + children = ( + 924A3E5E0C085ED70066885E /* gui */, + 924A3E900C085ED70066885E /* images */, + ); + path = graphics; + sourceTree = "<group>"; + }; + 924A3E5E0C085ED70066885E /* gui */ = { + isa = PBXGroup; + children = ( + 926A297E0F23C18E005D6466 /* tab.png */, + 926A297F0F23C18E005D6466 /* tabselected.png */, + 92FD19C60DDCEB8500D14E5D /* emotions.png */, + 92024D5B0CF1BE5C006B55CB /* close_button.png */, + 92024D5D0CF1BE5C006B55CB /* unknown-item.png */, + 92024D5C0CF1BE5C006B55CB /* item_shortcut_bgr.png */, + 924A3E600C085ED70066885E /* bg_quad_dis.png */, + 924A3E620C085ED70066885E /* button.png */, + 924A3E630C085ED70066885E /* button_disabled.png */, + 924A3E640C085ED70066885E /* buttonhi.png */, + 924A3E650C085ED70066885E /* buttonpress.png */, + 924A3E660C085ED70066885E /* checkbox.png */, + 924A3E680C085ED70066885E /* deepbox.png */, + 924A3E690C085ED70066885E /* fixedfont.png */, + 924A3E6A0C085ED70066885E /* hits_blue.png */, + 924A3E6B0C085ED70066885E /* hits_red.png */, + 924A3E6C0C085ED70066885E /* hits_yellow.png */, + 924A3E6D0C085ED70066885E /* hscroll_left_default.png */, + 924A3E6E0C085ED70066885E /* hscroll_left_highlight.png */, + 924A3E6F0C085ED70066885E /* hscroll_left_pressed.png */, + 924A3E700C085ED70066885E /* hscroll_right_default.png */, + 924A3E710C085ED70066885E /* hscroll_right_highlight.png */, + 924A3E720C085ED70066885E /* hscroll_right_pressed.png */, + 924A3E740C085ED70066885E /* menuitemD.png */, + 924A3E750C085ED70066885E /* menuitemF.png */, + 924A3E760C085ED70066885E /* menuitemN.png */, + 924A3E770C085ED70066885E /* menuitemP.png */, + 924A3E780C085ED70066885E /* mouse.png */, + 924A3E790C085ED70066885E /* radioin.png */, + 924A3E7A0C085ED70066885E /* radioout.png */, + 924A3E7B0C085ED70066885E /* resize.png */, + 924A3E7C0C085ED70066885E /* rpgfont_wider.png */, + 924A3E7E0C085ED70066885E /* selection.png */, + 924A3E7F0C085ED70066885E /* slider.png */, + 924A3E800C085ED70066885E /* target-cursor-blue-l.png */, + 924A3E810C085ED70066885E /* target-cursor-blue-m.png */, + 924A3E820C085ED70066885E /* target-cursor-blue-s.png */, + 924A3E830C085ED70066885E /* target-cursor-red-l.png */, + 924A3E840C085ED70066885E /* target-cursor-red-m.png */, + 924A3E850C085ED70066885E /* target-cursor-red-s.png */, + 924A3E860C085ED70066885E /* thickborder.png */, + 924A3E870C085ED70066885E /* vscroll_blue.png */, + 924A3E880C085ED70066885E /* vscroll_down_default.png */, + 924A3E890C085ED70066885E /* vscroll_down_highlight.png */, + 924A3E8A0C085ED70066885E /* vscroll_down_pressed.png */, + 924A3E8B0C085ED70066885E /* vscroll_grey.png */, + 924A3E8C0C085ED70066885E /* vscroll_red.png */, + 924A3E8D0C085ED70066885E /* vscroll_up_default.png */, + 924A3E8E0C085ED70066885E /* vscroll_up_highlight.png */, + 924A3E8F0C085ED70066885E /* vscroll_up_pressed.png */, + ); + path = gui; + sourceTree = "<group>"; + }; + 924A3E900C085ED70066885E /* images */ = { + isa = PBXGroup; + children = ( + 924A3E990C085ED70066885E /* error.png */, + 924A3E9A0C085ED70066885E /* login_wallpaper.png */, + ); + path = images; + sourceTree = "<group>"; + }; + 924A40090C085ED80066885E /* help */ = { + isa = PBXGroup; + children = ( + 926A29840F23C1C8005D6466 /* windows.txt */, + 924A400A0C085ED80066885E /* about.txt */, + 924A400B0C085ED80066885E /* changes.txt */, + 924A400D0C085ED80066885E /* commands.txt */, + 924A400E0C085ED80066885E /* header.txt */, + 924A400F0C085ED80066885E /* index.txt */, + 924A40110C085ED80066885E /* skills.txt */, + 924A40120C085ED80066885E /* support.txt */, + 924A40130C085ED80066885E /* team.txt */, + ); + path = help; + sourceTree = "<group>"; + }; + 924A40140C085ED80066885E /* icons */ = { + isa = PBXGroup; + children = ( + 92024DDD0CF1BFC8006B55CB /* The Mana World.icns */, + 924A40180C085ED80066885E /* tmw.ico */, + 924A40190C085ED80066885E /* tmw.png */, + 924A401A0C085ED80066885E /* tmw.xpm */, + ); + path = icons; + sourceTree = "<group>"; + }; + 9273BE0A0EF33FFF008E56E1 /* music */ = { + isa = PBXGroup; + children = ( + 9273BE0B0EF33FFF008E56E1 /* Clouds Calling.ogg */, + 9273BE0C0EF33FFF008E56E1 /* Faith.ogg */, + 9273BE0D0EF33FFF008E56E1 /* finalman_and_yakslem-cavesong.ogg */, + 9273BE0E0EF33FFF008E56E1 /* Magick - Real.ogg */, + 9273BE0F0EF33FFF008E56E1 /* The Mana World - Snow Village.ogg */, + 9273BE100EF33FFF008E56E1 /* The Mana World - The Forest.ogg */, + ); + path = music; + sourceTree = "<group>"; + }; + 92A4CCDF0D1DA58D00CA28FB /* archivers */ = { + isa = PBXGroup; + children = ( + 92A4CCE00D1DA58D00CA28FB /* dir.c */, + 92A4CCE10D1DA58D00CA28FB /* grp.c */, + 92A4CCE20D1DA58D00CA28FB /* hog.c */, + 92A4CCE30D1DA58D00CA28FB /* lzma.c */, + 92A4CCE40D1DA58D00CA28FB /* mvl.c */, + 92A4CCE50D1DA58D00CA28FB /* qpak.c */, + 92A4CCE60D1DA58D00CA28FB /* wad.c */, + 92A4CCE70D1DA58D00CA28FB /* zip.c */, + ); + path = archivers; + sourceTree = "<group>"; + }; + 92BC3EF00BAEE55A000DAB7F /* gui */ = { + isa = PBXGroup; + children = ( + 926A294E0F23BD9E005D6466 /* npcintegerdialog.cpp */, + 926A294F0F23BD9E005D6466 /* npcintegerdialog.h */, + 926A29500F23BD9E005D6466 /* npcstringdialog.cpp */, + 926A29510F23BD9E005D6466 /* npcstringdialog.h */, + 926A29520F23BD9E005D6466 /* sdlinput.cpp */, + 926A29530F23BD9E005D6466 /* sdlinput.h */, + 926A29540F23BD9E005D6466 /* truetypefont.cpp */, + 926A29550F23BD9E005D6466 /* truetypefont.h */, + 92FD19B30DDCE53400D14E5D /* setup_players.cpp */, + 92FD19B40DDCE53400D14E5D /* setup_players.h */, + 92FD19B50DDCE53400D14E5D /* table.cpp */, + 92FD19B60DDCE53400D14E5D /* table.h */, + 92FD19B70DDCE53400D14E5D /* table_model.cpp */, + 92FD19B80DDCE53400D14E5D /* table_model.h */, + 926F9D410DB00AFC00AACD26 /* itemshortcutcontainer.cpp */, + 926F9D420DB00AFC00AACD26 /* itemshortcutcontainer.h */, + 926F9D430DB00AFC00AACD26 /* itemshortcutwindow.cpp */, + 926F9D440DB00AFC00AACD26 /* itemshortcutwindow.h */, + 92024D360CF1BDF7006B55CB /* setup_keyboard.cpp */, + 92024D370CF1BDF7006B55CB /* setup_keyboard.h */, + 924A3A0F0C07A60B0066885E /* widgets */, + 92BC3EF30BAEE55A000DAB7F /* browserbox.cpp */, + 92BC3EF40BAEE55A000DAB7F /* browserbox.h */, + 92BC3EF50BAEE55A000DAB7F /* buddywindow.cpp */, + 92BC3EF60BAEE55A000DAB7F /* buddywindow.h */, + 92BC3EF70BAEE55A000DAB7F /* button.cpp */, + 92BC3EF80BAEE55A000DAB7F /* button.h */, + 92BC3EF90BAEE55A000DAB7F /* buy.cpp */, + 92BC3EFA0BAEE55A000DAB7F /* buy.h */, + 92BC3EFB0BAEE55A000DAB7F /* buysell.cpp */, + 92BC3EFC0BAEE55A000DAB7F /* buysell.h */, + 92BC3EFD0BAEE55A000DAB7F /* char_select.cpp */, + 92BC3EFE0BAEE55A000DAB7F /* char_select.h */, + 92BC3EFF0BAEE55A000DAB7F /* char_server.cpp */, + 92BC3F000BAEE55A000DAB7F /* char_server.h */, + 92BC3F030BAEE55A000DAB7F /* chat.cpp */, + 92BC3F040BAEE55A000DAB7F /* chat.h */, + 92BC3F050BAEE55A000DAB7F /* chatinput.cpp */, + 92BC3F060BAEE55A000DAB7F /* chatinput.h */, + 92BC3F070BAEE55A000DAB7F /* checkbox.cpp */, + 92BC3F080BAEE55A000DAB7F /* checkbox.h */, + 92BC3F090BAEE55A000DAB7F /* confirm_dialog.cpp */, + 92BC3F0A0BAEE55A000DAB7F /* confirm_dialog.h */, + 92BC3F0B0BAEE55A000DAB7F /* connection.cpp */, + 92BC3F0C0BAEE55A000DAB7F /* connection.h */, + 92BC3F0D0BAEE55A000DAB7F /* debugwindow.cpp */, + 92BC3F0E0BAEE55A000DAB7F /* debugwindow.h */, + 92BC3F0F0BAEE55A000DAB7F /* equipmentwindow.cpp */, + 92BC3F100BAEE55A000DAB7F /* equipmentwindow.h */, + 92BC3F110BAEE55A000DAB7F /* focushandler.cpp */, + 92BC3F120BAEE55A000DAB7F /* focushandler.h */, + 92BC3F130BAEE55A000DAB7F /* gccontainer.cpp */, + 92BC3F140BAEE55A000DAB7F /* gccontainer.h */, + 92BC3F150BAEE55A000DAB7F /* gui.cpp */, + 92BC3F160BAEE55A000DAB7F /* gui.h */, + 92BC3F190BAEE55A000DAB7F /* help.cpp */, + 92BC3F1A0BAEE55A000DAB7F /* help.h */, + 92BC3F1B0BAEE55A000DAB7F /* inttextbox.cpp */, + 92BC3F1C0BAEE55A000DAB7F /* inttextbox.h */, + 92BC3F1D0BAEE55A000DAB7F /* inventorywindow.cpp */, + 92BC3F1E0BAEE55A000DAB7F /* inventorywindow.h */, + 92BC3F1F0BAEE55A000DAB7F /* item_amount.cpp */, + 92BC3F200BAEE55A000DAB7F /* item_amount.h */, + 92BC3F210BAEE55A000DAB7F /* itemcontainer.cpp */, + 92BC3F220BAEE55A000DAB7F /* itemcontainer.h */, + 92BC3F230BAEE55A000DAB7F /* linkhandler.h */, + 92BC3F240BAEE55A000DAB7F /* listbox.cpp */, + 92BC3F250BAEE55A000DAB7F /* listbox.h */, + 92BC3F260BAEE55A000DAB7F /* login.cpp */, + 92BC3F270BAEE55A000DAB7F /* login.h */, + 92BC3F280BAEE55A000DAB7F /* menuwindow.cpp */, + 92BC3F290BAEE55A000DAB7F /* menuwindow.h */, + 92BC3F2A0BAEE55A000DAB7F /* minimap.cpp */, + 92BC3F2B0BAEE55A000DAB7F /* minimap.h */, + 92BC3F2C0BAEE55A000DAB7F /* ministatus.cpp */, + 92BC3F2D0BAEE55A000DAB7F /* ministatus.h */, + 92BC3F300BAEE55A000DAB7F /* npc_text.cpp */, + 92BC3F310BAEE55A000DAB7F /* npc_text.h */, + 92BC3F320BAEE55A000DAB7F /* npclistdialog.cpp */, + 92BC3F330BAEE55A000DAB7F /* npclistdialog.h */, + 92BC3F340BAEE55A000DAB7F /* ok_dialog.cpp */, + 92BC3F350BAEE55A000DAB7F /* ok_dialog.h */, + 92BC3F360BAEE55A000DAB7F /* passwordfield.cpp */, + 92BC3F370BAEE55A000DAB7F /* passwordfield.h */, + 92BC3F380BAEE55A000DAB7F /* playerbox.cpp */, + 92BC3F390BAEE55A000DAB7F /* playerbox.h */, + 92BC3F3A0BAEE55A000DAB7F /* popupmenu.cpp */, + 92BC3F3B0BAEE55A000DAB7F /* popupmenu.h */, + 92BC3F3C0BAEE55A000DAB7F /* progressbar.cpp */, + 92BC3F3D0BAEE55A000DAB7F /* progressbar.h */, + 92BC3F3E0BAEE55A000DAB7F /* radiobutton.cpp */, + 92BC3F3F0BAEE55A000DAB7F /* radiobutton.h */, + 92BC3F400BAEE55A000DAB7F /* register.cpp */, + 92BC3F410BAEE55A000DAB7F /* register.h */, + 92BC3F420BAEE55A000DAB7F /* scrollarea.cpp */, + 92BC3F430BAEE55A000DAB7F /* scrollarea.h */, + 92BC3F450BAEE55A000DAB7F /* sell.cpp */, + 92BC3F460BAEE55A000DAB7F /* sell.h */, + 92BC3F470BAEE55A000DAB7F /* setup.cpp */, + 92BC3F480BAEE55A000DAB7F /* setup.h */, + 92BC3F490BAEE55A000DAB7F /* setup_audio.cpp */, + 92BC3F4A0BAEE55A000DAB7F /* setup_audio.h */, + 92BC3F4B0BAEE55A000DAB7F /* setup_joystick.cpp */, + 92BC3F4C0BAEE55A000DAB7F /* setup_joystick.h */, + 92BC3F4D0BAEE55A000DAB7F /* setup_video.cpp */, + 92BC3F4E0BAEE55A000DAB7F /* setup_video.h */, + 92BC3F4F0BAEE55A000DAB7F /* setuptab.h */, + 92BC3F500BAEE55A000DAB7F /* shop.cpp */, + 92BC3F510BAEE55A000DAB7F /* shop.h */, + 92BC3F520BAEE55A000DAB7F /* shoplistbox.cpp */, + 92BC3F530BAEE55A000DAB7F /* shoplistbox.h */, + 92BC3F540BAEE55A000DAB7F /* skill.cpp */, + 92BC3F550BAEE55A000DAB7F /* skill.h */, + 92BC3F560BAEE55A000DAB7F /* slider.cpp */, + 92BC3F570BAEE55A000DAB7F /* slider.h */, + 92BC3F580BAEE55A000DAB7F /* status.cpp */, + 92BC3F590BAEE55B000DAB7F /* status.h */, + 92BC3F5C0BAEE55B000DAB7F /* textbox.cpp */, + 92BC3F5D0BAEE55B000DAB7F /* textbox.h */, + 92BC3F5E0BAEE55B000DAB7F /* textfield.cpp */, + 92BC3F5F0BAEE55B000DAB7F /* textfield.h */, + 92BC3F600BAEE55B000DAB7F /* trade.cpp */, + 92BC3F610BAEE55B000DAB7F /* trade.h */, + 92BC3F620BAEE55B000DAB7F /* updatewindow.cpp */, + 92BC3F630BAEE55B000DAB7F /* updatewindow.h */, + 92BC3F660BAEE55B000DAB7F /* viewport.cpp */, + 92BC3F670BAEE55B000DAB7F /* viewport.h */, + 92BC3F680BAEE55B000DAB7F /* window.cpp */, + 92BC3F690BAEE55B000DAB7F /* window.h */, + 92BC3F6A0BAEE55B000DAB7F /* windowcontainer.cpp */, + 92BC3F6B0BAEE55B000DAB7F /* windowcontainer.h */, + ); + name = gui; + path = src/gui; + sourceTree = "<group>"; + }; + 92BC3F800BAEE55B000DAB7F /* net */ = { + isa = PBXGroup; + children = ( + 92BC3F810BAEE55B000DAB7F /* beinghandler.cpp */, + 92BC3F820BAEE55B000DAB7F /* beinghandler.h */, + 92BC3F830BAEE55B000DAB7F /* buysellhandler.cpp */, + 92BC3F840BAEE55B000DAB7F /* buysellhandler.h */, + 92BC3F850BAEE55B000DAB7F /* charserverhandler.cpp */, + 92BC3F860BAEE55B000DAB7F /* charserverhandler.h */, + 92BC3F870BAEE55B000DAB7F /* chathandler.cpp */, + 92BC3F880BAEE55B000DAB7F /* chathandler.h */, + 92BC3F890BAEE55B000DAB7F /* equipmenthandler.cpp */, + 92BC3F8A0BAEE55B000DAB7F /* equipmenthandler.h */, + 92BC3F8B0BAEE55B000DAB7F /* inventoryhandler.cpp */, + 92BC3F8C0BAEE55B000DAB7F /* inventoryhandler.h */, + 92BC3F8D0BAEE55B000DAB7F /* itemhandler.cpp */, + 92BC3F8E0BAEE55B000DAB7F /* itemhandler.h */, + 92BC3F8F0BAEE55B000DAB7F /* loginhandler.cpp */, + 92BC3F900BAEE55B000DAB7F /* loginhandler.h */, + 92BC3F910BAEE55B000DAB7F /* maploginhandler.cpp */, + 92BC3F920BAEE55B000DAB7F /* maploginhandler.h */, + 92BC3F930BAEE55B000DAB7F /* messagehandler.cpp */, + 92BC3F940BAEE55B000DAB7F /* messagehandler.h */, + 92BC3F950BAEE55B000DAB7F /* messagein.cpp */, + 92BC3F960BAEE55B000DAB7F /* messagein.h */, + 92BC3F970BAEE55B000DAB7F /* messageout.cpp */, + 92BC3F980BAEE55B000DAB7F /* messageout.h */, + 92BC3F990BAEE55B000DAB7F /* network.cpp */, + 92BC3F9A0BAEE55B000DAB7F /* network.h */, + 92BC3F9B0BAEE55B000DAB7F /* npchandler.cpp */, + 92BC3F9C0BAEE55B000DAB7F /* npchandler.h */, + 92BC3F9D0BAEE55B000DAB7F /* playerhandler.cpp */, + 92BC3F9E0BAEE55B000DAB7F /* playerhandler.h */, + 92BC3F9F0BAEE55B000DAB7F /* protocol.cpp */, + 92BC3FA00BAEE55B000DAB7F /* protocol.h */, + 92BC3FA10BAEE55B000DAB7F /* skillhandler.cpp */, + 92BC3FA20BAEE55B000DAB7F /* skillhandler.h */, + 92BC3FA30BAEE55B000DAB7F /* tradehandler.cpp */, + 92BC3FA40BAEE55B000DAB7F /* tradehandler.h */, + ); + name = net; + path = src/net; + sourceTree = "<group>"; + }; + 92BC3FA90BAEE55B000DAB7F /* physfs */ = { + isa = PBXGroup; + children = ( + 92A4CCFB0D1DA89800CA28FB /* physfs_unicode.c */, + 92A4CCF00D1DA5A800CA28FB /* physfs_casefolding.h */, + 92A4CCF10D1DA5A800CA28FB /* physfs_platforms.h */, + 92A4CCDF0D1DA58D00CA28FB /* archivers */, + 92BC3FAB0BAEE55B000DAB7F /* physfs.c */, + 92BC3FAC0BAEE55B000DAB7F /* physfs.h */, + 92BC3FAD0BAEE55B000DAB7F /* physfs_byteorder.c */, + 92BC3FAE0BAEE55B000DAB7F /* physfs_internal.h */, + 92BC3FAF0BAEE55B000DAB7F /* platform */, + ); + name = physfs; + path = src/physfs; + sourceTree = "<group>"; + }; + 92BC3FAF0BAEE55B000DAB7F /* platform */ = { + isa = PBXGroup; + children = ( + 92A4CCF20D1DA5C600CA28FB /* macosx.c */, + 92BC3FB50BAEE55B000DAB7F /* posix.c */, + 92BC3FB70BAEE55B000DAB7F /* unix.c */, + ); + path = platform; + sourceTree = "<group>"; + }; + 92BC3FBD0BAEE55B000DAB7F /* resources */ = { + isa = PBXGroup; + children = ( + 922CD9560E3D00900074C50E /* npcdb.cpp */, + 922CD9570E3D00900074C50E /* npcdb.h */, + 92FD19BD0DDCE56A00D14E5D /* dye.h */, + 92024E740CF1DCF6006B55CB /* imageloader.cpp */, + 92024E750CF1DCF6006B55CB /* imageloader.h */, + 925350010BC12A3200115FD5 /* imageset.cpp */, + 925350020BC12A3200115FD5 /* imageset.h */, + 92BC3FBE0BAEE55B000DAB7F /* action.cpp */, + 92BC3FBF0BAEE55B000DAB7F /* action.h */, + 92BC3FC00BAEE55B000DAB7F /* ambientoverlay.cpp */, + 92BC3FC10BAEE55B000DAB7F /* ambientoverlay.h */, + 92BC3FC20BAEE55B000DAB7F /* animation.cpp */, + 92BC3FC30BAEE55B000DAB7F /* animation.h */, + 92BC3FC40BAEE55B000DAB7F /* buddylist.cpp */, + 92BC3FC50BAEE55B000DAB7F /* buddylist.h */, + 92BC3FC90BAEE55B000DAB7F /* image.cpp */, + 92BC3FCA0BAEE55B000DAB7F /* image.h */, + 92BC3FCB0BAEE55B000DAB7F /* imagewriter.cpp */, + 92BC3FCC0BAEE55B000DAB7F /* imagewriter.h */, + 92BC3FCD0BAEE55B000DAB7F /* itemdb.cpp */, + 92BC3FCE0BAEE55B000DAB7F /* itemdb.h */, + 92BC3FCF0BAEE55B000DAB7F /* iteminfo.cpp */, + 92BC3FD00BAEE55B000DAB7F /* iteminfo.h */, + 92BC3FD10BAEE55B000DAB7F /* mapreader.cpp */, + 92BC3FD20BAEE55B000DAB7F /* mapreader.h */, + 92BC3FD30BAEE55B000DAB7F /* monsterdb.cpp */, + 92BC3FD40BAEE55B000DAB7F /* monsterdb.h */, + 92BC3FD50BAEE55B000DAB7F /* monsterinfo.cpp */, + 92BC3FD60BAEE55B000DAB7F /* monsterinfo.h */, + 92BC3FD70BAEE55B000DAB7F /* music.cpp */, + 92BC3FD80BAEE55B000DAB7F /* music.h */, + 92BC3FDB0BAEE55B000DAB7F /* resource.cpp */, + 92BC3FDC0BAEE55B000DAB7F /* resource.h */, + 92BC3FDD0BAEE55B000DAB7F /* resourcemanager.cpp */, + 92BC3FDE0BAEE55B000DAB7F /* resourcemanager.h */, + 92BC3FE10BAEE55B000DAB7F /* soundeffect.cpp */, + 92BC3FE20BAEE55B000DAB7F /* soundeffect.h */, + 92BC3FE30BAEE55B000DAB7F /* spritedef.cpp */, + 92BC3FE40BAEE55B000DAB7F /* spritedef.h */, + ); + name = resources; + path = src/resources; + sourceTree = "<group>"; + }; + 92BC3FEE0BAEE55B000DAB7F /* utils */ = { + isa = PBXGroup; + children = ( + 926A295A0F23BDB1005D6466 /* gettext.h */, + 926A295B0F23BDB1005D6466 /* mutex.h */, + 92FD19BF0DDCE6F700D14E5D /* strprintf.cpp */, + 92FD19C00DDCE6F700D14E5D /* strprintf.h */, + 92024D400CF1BE22006B55CB /* fastsqrt.h */, + 92024D420CF1BE22006B55CB /* trim.h */, + 92BC3FEF0BAEE55B000DAB7F /* base64.cpp */, + 92BC3FF00BAEE55B000DAB7F /* base64.h */, + 92BC3FF10BAEE55B000DAB7F /* dtor.h */, + 92BC3FF20BAEE55B000DAB7F /* tostring.h */, + 92BC3FF40BAEE55B000DAB7F /* xml.cpp */, + 92BC3FF50BAEE55B000DAB7F /* xml.h */, + ); + name = utils; + path = src/utils; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D0C4E890486CD37000505A6 /* themanaworld */ = { + isa = PBXNativeTarget; + buildConfigurationList = C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "themanaworld" */; + buildPhases = ( + 8D0C4E8C0486CD37000505A6 /* Resources */, + 8D0C4E8F0486CD37000505A6 /* Sources */, + 8D0C4E910486CD37000505A6 /* Frameworks */, + 924A3A520C085C190066885E /* Copy Data Files */, + 924A3E540C085CAF0066885E /* Copy GUI Files */, + 924A40880C085FBD0066885E /* Copy Image Files */, + 924A42000C0861C70066885E /* Copy Help Files */, + 92EEA0090D2E20D100DDE300 /* Copy Frameworks */, + 9273BE3C0EF34050008E56E1 /* Copy Music Files */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = themanaworld; + productInstallPath = "$(HOME)/Applications"; + productName = themanaworld; + productReference = 508344B209E5C41E0093A071 /* The Mana World.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 20286C28FDCF999611CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "themanaworld" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + mainGroup = 20286C29FDCF999611CA2CEA /* themanaworld */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D0C4E890486CD37000505A6 /* themanaworld */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D0C4E8C0486CD37000505A6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 924A425A0C0871EC0066885E /* The Mana World.icns in Resources */, + 9273BDFC0EF33DFD008E56E1 /* COPYING in Resources */, + 9273BDFF0EF33E1A008E56E1 /* AUTHORS in Resources */, + 9273BE000EF33E1A008E56E1 /* README in Resources */, + 926A29800F23C18E005D6466 /* tab.png in Resources */, + 926A29810F23C18E005D6466 /* tabselected.png in Resources */, + 926A29850F23C1C8005D6466 /* windows.txt in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D0C4E8F0486CD37000505A6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 92BC3FF60BAEE55B000DAB7F /* animatedsprite.cpp in Sources */, + 92BC3FF70BAEE55B000DAB7F /* being.cpp in Sources */, + 92BC3FF80BAEE55B000DAB7F /* beingmanager.cpp in Sources */, + 92BC3FFA0BAEE55B000DAB7F /* configuration.cpp in Sources */, + 92BC40020BAEE55B000DAB7F /* engine.cpp in Sources */, + 92BC40030BAEE55B000DAB7F /* equipment.cpp in Sources */, + 92BC40040BAEE55B000DAB7F /* floor_item.cpp in Sources */, + 92BC40050BAEE55B000DAB7F /* flooritemmanager.cpp in Sources */, + 92BC40060BAEE55B000DAB7F /* game.cpp in Sources */, + 92BC40070BAEE55B000DAB7F /* graphics.cpp in Sources */, + 92BC40090BAEE55B000DAB7F /* browserbox.cpp in Sources */, + 92BC400A0BAEE55B000DAB7F /* buddywindow.cpp in Sources */, + 92BC400B0BAEE55B000DAB7F /* button.cpp in Sources */, + 92BC400C0BAEE55B000DAB7F /* buy.cpp in Sources */, + 92BC400D0BAEE55B000DAB7F /* buysell.cpp in Sources */, + 92BC400E0BAEE55B000DAB7F /* char_select.cpp in Sources */, + 92BC400F0BAEE55B000DAB7F /* char_server.cpp in Sources */, + 92BC40110BAEE55B000DAB7F /* chat.cpp in Sources */, + 92BC40120BAEE55B000DAB7F /* chatinput.cpp in Sources */, + 92BC40130BAEE55B000DAB7F /* checkbox.cpp in Sources */, + 92BC40140BAEE55B000DAB7F /* confirm_dialog.cpp in Sources */, + 92BC40150BAEE55B000DAB7F /* connection.cpp in Sources */, + 92BC40160BAEE55B000DAB7F /* debugwindow.cpp in Sources */, + 92BC40170BAEE55B000DAB7F /* equipmentwindow.cpp in Sources */, + 92BC40180BAEE55B000DAB7F /* focushandler.cpp in Sources */, + 92BC40190BAEE55B000DAB7F /* gccontainer.cpp in Sources */, + 92BC401A0BAEE55B000DAB7F /* gui.cpp in Sources */, + 92BC401C0BAEE55B000DAB7F /* help.cpp in Sources */, + 92BC401D0BAEE55B000DAB7F /* inttextbox.cpp in Sources */, + 92BC401E0BAEE55B000DAB7F /* inventorywindow.cpp in Sources */, + 92BC401F0BAEE55B000DAB7F /* item_amount.cpp in Sources */, + 92BC40200BAEE55B000DAB7F /* itemcontainer.cpp in Sources */, + 92BC40210BAEE55B000DAB7F /* listbox.cpp in Sources */, + 92BC40220BAEE55B000DAB7F /* login.cpp in Sources */, + 92BC40230BAEE55B000DAB7F /* menuwindow.cpp in Sources */, + 92BC40240BAEE55B000DAB7F /* minimap.cpp in Sources */, + 92BC40250BAEE55B000DAB7F /* ministatus.cpp in Sources */, + 92BC40270BAEE55B000DAB7F /* npc_text.cpp in Sources */, + 92BC40280BAEE55B000DAB7F /* npclistdialog.cpp in Sources */, + 92BC40290BAEE55B000DAB7F /* ok_dialog.cpp in Sources */, + 92BC402A0BAEE55B000DAB7F /* passwordfield.cpp in Sources */, + 92BC402B0BAEE55B000DAB7F /* playerbox.cpp in Sources */, + 92BC402C0BAEE55B000DAB7F /* popupmenu.cpp in Sources */, + 92BC402D0BAEE55B000DAB7F /* progressbar.cpp in Sources */, + 92BC402E0BAEE55B000DAB7F /* radiobutton.cpp in Sources */, + 92BC402F0BAEE55B000DAB7F /* register.cpp in Sources */, + 92BC40300BAEE55B000DAB7F /* scrollarea.cpp in Sources */, + 92BC40310BAEE55B000DAB7F /* sell.cpp in Sources */, + 92BC40320BAEE55B000DAB7F /* setup.cpp in Sources */, + 92BC40330BAEE55B000DAB7F /* setup_audio.cpp in Sources */, + 92BC40340BAEE55B000DAB7F /* setup_joystick.cpp in Sources */, + 92BC40350BAEE55B000DAB7F /* setup_video.cpp in Sources */, + 92BC40360BAEE55B000DAB7F /* shop.cpp in Sources */, + 92BC40370BAEE55B000DAB7F /* shoplistbox.cpp in Sources */, + 92BC40380BAEE55B000DAB7F /* skill.cpp in Sources */, + 92BC40390BAEE55B000DAB7F /* slider.cpp in Sources */, + 92BC403A0BAEE55B000DAB7F /* status.cpp in Sources */, + 92BC403C0BAEE55B000DAB7F /* textbox.cpp in Sources */, + 92BC403D0BAEE55B000DAB7F /* textfield.cpp in Sources */, + 92BC403E0BAEE55B000DAB7F /* trade.cpp in Sources */, + 92BC403F0BAEE55B000DAB7F /* updatewindow.cpp in Sources */, + 92BC40410BAEE55B000DAB7F /* viewport.cpp in Sources */, + 92BC40420BAEE55B000DAB7F /* window.cpp in Sources */, + 92BC40430BAEE55B000DAB7F /* windowcontainer.cpp in Sources */, + 92BC40440BAEE55B000DAB7F /* inventory.cpp in Sources */, + 92BC40450BAEE55B000DAB7F /* item.cpp in Sources */, + 92BC40460BAEE55B000DAB7F /* joystick.cpp in Sources */, + 92BC40470BAEE55B000DAB7F /* localplayer.cpp in Sources */, + 92BC40480BAEE55B000DAB7F /* log.cpp in Sources */, + 92BC40490BAEE55B000DAB7F /* main.cpp in Sources */, + 92BC404B0BAEE55B000DAB7F /* map.cpp in Sources */, + 92BC404C0BAEE55B000DAB7F /* monster.cpp in Sources */, + 92BC404D0BAEE55B000DAB7F /* beinghandler.cpp in Sources */, + 92BC404E0BAEE55B000DAB7F /* buysellhandler.cpp in Sources */, + 92BC404F0BAEE55B000DAB7F /* charserverhandler.cpp in Sources */, + 92BC40500BAEE55B000DAB7F /* chathandler.cpp in Sources */, + 92BC40510BAEE55B000DAB7F /* equipmenthandler.cpp in Sources */, + 92BC40520BAEE55B000DAB7F /* inventoryhandler.cpp in Sources */, + 92BC40530BAEE55B000DAB7F /* itemhandler.cpp in Sources */, + 92BC40540BAEE55B000DAB7F /* loginhandler.cpp in Sources */, + 92BC40550BAEE55B000DAB7F /* maploginhandler.cpp in Sources */, + 92BC40560BAEE55B000DAB7F /* messagehandler.cpp in Sources */, + 92BC40570BAEE55B000DAB7F /* messagein.cpp in Sources */, + 92BC40580BAEE55B000DAB7F /* messageout.cpp in Sources */, + 92BC40590BAEE55B000DAB7F /* network.cpp in Sources */, + 92BC405A0BAEE55B000DAB7F /* npchandler.cpp in Sources */, + 92BC405B0BAEE55B000DAB7F /* playerhandler.cpp in Sources */, + 92BC405C0BAEE55B000DAB7F /* protocol.cpp in Sources */, + 92BC405D0BAEE55B000DAB7F /* skillhandler.cpp in Sources */, + 92BC405E0BAEE55B000DAB7F /* tradehandler.cpp in Sources */, + 92BC405F0BAEE55B000DAB7F /* npc.cpp in Sources */, + 92BC40600BAEE55B000DAB7F /* openglgraphics.cpp in Sources */, + 92BC406E0BAEE55B000DAB7F /* player.cpp in Sources */, + 92BC406F0BAEE55B000DAB7F /* action.cpp in Sources */, + 92BC40700BAEE55B000DAB7F /* ambientoverlay.cpp in Sources */, + 92BC40710BAEE55B000DAB7F /* animation.cpp in Sources */, + 92BC40720BAEE55B000DAB7F /* buddylist.cpp in Sources */, + 92BC40740BAEE55B000DAB7F /* image.cpp in Sources */, + 92BC40750BAEE55B000DAB7F /* imagewriter.cpp in Sources */, + 92BC40760BAEE55B000DAB7F /* itemdb.cpp in Sources */, + 92BC40770BAEE55B000DAB7F /* iteminfo.cpp in Sources */, + 92BC40780BAEE55B000DAB7F /* mapreader.cpp in Sources */, + 92BC40790BAEE55B000DAB7F /* monsterdb.cpp in Sources */, + 92BC407A0BAEE55B000DAB7F /* monsterinfo.cpp in Sources */, + 92BC407B0BAEE55B000DAB7F /* music.cpp in Sources */, + 92BC407D0BAEE55B000DAB7F /* resource.cpp in Sources */, + 92BC407E0BAEE55B000DAB7F /* resourcemanager.cpp in Sources */, + 92BC40800BAEE55B000DAB7F /* soundeffect.cpp in Sources */, + 92BC40810BAEE55B000DAB7F /* spritedef.cpp in Sources */, + 92BC40830BAEE55B000DAB7F /* simpleanimation.cpp in Sources */, + 92BC40840BAEE55B000DAB7F /* sound.cpp in Sources */, + 92BC40850BAEE55B000DAB7F /* base64.cpp in Sources */, + 92BC40860BAEE55B000DAB7F /* xml.cpp in Sources */, + 92BC40E60BAEF54B000DAB7F /* SDLMain.m in Sources */, + 925350030BC12A3200115FD5 /* imageset.cpp in Sources */, + 924A39F20C0784280066885E /* animationparticle.cpp in Sources */, + 924A39F30C0784280066885E /* imageparticle.cpp in Sources */, + 924A39F40C0784280066885E /* particle.cpp in Sources */, + 924A39F50C0784280066885E /* particleemitter.cpp in Sources */, + 924A39F60C0784280066885E /* textparticle.cpp in Sources */, + 924A3A120C07A60B0066885E /* resizegrip.cpp in Sources */, + 9294DA9B0C17E70400FCEDE9 /* physfs.c in Sources */, + 9294DA9C0C17E70600FCEDE9 /* physfs_byteorder.c in Sources */, + 92024D2F0CF1BD9E006B55CB /* keyboardconfig.cpp in Sources */, + 92024D3D0CF1BDF7006B55CB /* setup_keyboard.cpp in Sources */, + 92024E760CF1DCF6006B55CB /* imageloader.cpp in Sources */, + 92A4CC9E0D1C622E00CA28FB /* dye.cpp in Sources */, + 92A4CCE80D1DA58D00CA28FB /* dir.c in Sources */, + 92A4CCE90D1DA58D00CA28FB /* grp.c in Sources */, + 92A4CCEA0D1DA58D00CA28FB /* hog.c in Sources */, + 92A4CCEB0D1DA58D00CA28FB /* lzma.c in Sources */, + 92A4CCEC0D1DA58D00CA28FB /* mvl.c in Sources */, + 92A4CCED0D1DA58D00CA28FB /* qpak.c in Sources */, + 92A4CCEE0D1DA58D00CA28FB /* wad.c in Sources */, + 92A4CCEF0D1DA58D00CA28FB /* zip.c in Sources */, + 92A4CCF30D1DA5C600CA28FB /* macosx.c in Sources */, + 92A4CCF90D1DA81A00CA28FB /* posix.c in Sources */, + 92A4CCFC0D1DA89800CA28FB /* physfs_unicode.c in Sources */, + 926F9CF80DB005FA00AACD26 /* itemshortcut.cpp in Sources */, + 926F9D450DB00AFC00AACD26 /* itemshortcutcontainer.cpp in Sources */, + 926F9D460DB00AFC00AACD26 /* itemshortcutwindow.cpp in Sources */, + 92FD19B00DDCE51000D14E5D /* player_relations.cpp in Sources */, + 92FD19BA0DDCE53400D14E5D /* setup_players.cpp in Sources */, + 92FD19BB0DDCE53400D14E5D /* table.cpp in Sources */, + 92FD19BC0DDCE53400D14E5D /* table_model.cpp in Sources */, + 92FD19C10DDCE6F700D14E5D /* strprintf.cpp in Sources */, + 922CD9580E3D00900074C50E /* npcdb.cpp in Sources */, + 922CD95F0E3D01080074C50E /* shopitem.cpp in Sources */, + 92037A1F0ED2037300D3712D /* text.cpp in Sources */, + 92037A200ED2037300D3712D /* textmanager.cpp in Sources */, + 9273BE080EF33FB3008E56E1 /* particlecontainer.cpp in Sources */, + 9273BE090EF33FB3008E56E1 /* statuseffect.cpp in Sources */, + 926A294A0F23BD88005D6466 /* layout.cpp in Sources */, + 926A294B0F23BD88005D6466 /* tab.cpp in Sources */, + 926A294C0F23BD88005D6466 /* tabbedarea.cpp in Sources */, + 926A29560F23BD9E005D6466 /* npcintegerdialog.cpp in Sources */, + 926A29570F23BD9E005D6466 /* npcstringdialog.cpp in Sources */, + 926A29580F23BD9E005D6466 /* sdlinput.cpp in Sources */, + 926A29590F23BD9E005D6466 /* truetypefont.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + C0E91AC608A95435008D54AB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = ( + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"/System/Library/Frameworks\""; + GCC_DEBUGGING_SYMBOLS = full; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + PHYSFS_SUPPORTS_ZIP, + USE_OPENGL, + __PHYSFS_CARBONIZED__, + ); + HEADER_SEARCH_PATHS = ( + /Library/Frameworks/SDL_ttf.framework/Headers, + /Library/Frameworks/SDL_net.framework/Headers, + /Library/Frameworks/SDL_image.framework/Headers, + /Library/Frameworks/SDL_mixer.framework/Headers, + guichan.framework/Headers, + /Library/Frameworks/libpng.framework/Headers, + /usr/include/libxml2, + /Library/Frameworks/SDL.framework/Headers, + ); + INFOPLIST_FILE = Info.plist; + LIBRARY_SEARCH_PATHS = /usr/lib; + MACOSX_DEPLOYMENT_TARGET = 10.5; + OTHER_LDFLAGS = ( + "-lz", + "-lxml2", + "-lcurl", + ); + PREBINDING = NO; + PRODUCT_NAME = "The Mana World"; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + USER_HEADER_SEARCH_PATHS = src; + }; + name = Debug; + }; + C0E91AC708A95435008D54AB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"/System/Library/Frameworks\""; + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_OPTIMIZATION_LEVEL = 2; + GCC_PREPROCESSOR_DEFINITIONS = ( + PHYSFS_SUPPORTS_ZIP, + USE_OPENGL, + __PHYSFS_CARBONIZED__, + ); + GCC_VERSION_i386 = 4.0; + GCC_VERSION_ppc = 3.3; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO; + HEADER_SEARCH_PATHS = ( + /Library/Frameworks/SDL_ttf.framework/Headers, + /Library/Frameworks/SDL_net.framework/Headers, + /Library/Frameworks/SDL_image.framework/Headers, + /Library/Frameworks/SDL_mixer.framework/Headers, + guichan.framework/Headers, + /Library/Frameworks/libpng.framework/Headers, + /usr/include/libxml2, + /Library/Frameworks/SDL.framework/Headers, + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = /usr/lib; + MACOSX_DEPLOYMENT_TARGET = 10.3; + MACOSX_DEPLOYMENT_TARGET_i386 = 10.4; + MACOSX_DEPLOYMENT_TARGET_ppc = 10.3; + OTHER_LDFLAGS = ( + "-lxml2", + "-lcurl", + "-lz", + ); + PREBINDING = NO; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; + PRODUCT_NAME = "The Mana World"; + SDKROOT = /Developer/SDKs/MacOSX10.3.9.sdk; + SDKROOT_i386 = /Developer/SDKs/MacOSX10.4u.sdk; + SDKROOT_ppc = /Developer/SDKs/MacOSX10.3.9.sdk; + USER_HEADER_SEARCH_PATHS = src; + }; + name = Release; + }; + C0E91ACA08A95435008D54AB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_OPTIMIZATION_LEVEL = 0; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + ZERO_LINK = YES; + }; + name = Debug; + }; + C0E91ACB08A95435008D54AB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_PREPROCESSOR_DEFINITIONS = ""; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + SEPARATE_STRIP = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "themanaworld" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C0E91AC608A95435008D54AB /* Debug */, + C0E91AC708A95435008D54AB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "themanaworld" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C0E91ACA08A95435008D54AB /* Debug */, + C0E91ACB08A95435008D54AB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 20286C28FDCF999611CA2CEA /* Project object */; +} @@ -2,19 +2,22 @@ <CodeBlocks_project_file> <FileVersion major="1" minor="6" /> <Project> - <Option title="Aethyra" /> + <Option title="The Mana World" /> <Option pch_mode="0" /> <Option compiler="gcc" /> <Build> <Target title="default"> - <Option output="aethyra.exe" prefix_auto="0" extension_auto="0" /> + <Option output="tmw.exe" prefix_auto="0" extension_auto="0" /> <Option type="0" /> <Option compiler="gcc" /> + <Option parameters='-u -d "D:/tmw/data"' /> <Option projectResourceIncludeDirsRelation="0" /> <Compiler> + <Add option="-O3" /> <Add option="-Wall" /> <Add option="-DUSE_OPENGL" /> <Add option="-DNOGDI" /> + <Add option="-DENABLE_NLS" /> </Compiler> <Linker> <Add library="guichan" /> @@ -34,11 +37,12 @@ <Add library="z.dll" /> <Add library="physfs" /> <Add library="curl.dll" /> + <Add library="intl" /> </Linker> </Target> <Target title="unix"> <Option platforms="Unix;" /> - <Option output="aethyra" prefix_auto="1" extension_auto="1" /> + <Option output="tmw" prefix_auto="1" extension_auto="1" /> <Option type="0" /> <Option compiler="gcc" /> <Compiler> @@ -68,25 +72,15 @@ <Add alias="All" targets="default;" /> </VirtualTargets> <Compiler> - <Add option="-fexpensive-optimizations" /> - <Add option="-O3" /> - <Add option="-O2" /> - <Add option="-O1" /> - <Add option="-O" /> - <Add option="-W" /> - <Add option="-Wall" /> - <Add directory="..\aethyra\builds\windows\LinuxXcompileBuildSupport\include\SDL" /> - <Add directory="..\aethyra\builds\windows\LinuxXcompileBuildSupport\include" /> + <Add directory="src\" /> + <Add directory="include" /> + <Add directory="include\libxml2" /> + <Add directory="include\SDL" /> </Compiler> <Linker> - <Add option="-s" /> - <Add directory="..\aethyra\builds\windows\LinuxXcompileBuildSupport\dll" /> + <Add directory="lib" /> </Linker> <Unit filename="src\SDLMain.h" /> - <Unit filename="src\aethyra.rc"> - <Option compilerVar="WINDRES" /> - <Option target="default" /> - </Unit> <Unit filename="src\animatedsprite.cpp" /> <Unit filename="src\animatedsprite.h" /> <Unit filename="src\animationparticle.cpp" /> @@ -205,10 +199,10 @@ <Unit filename="src\gui\progressbar.h" /> <Unit filename="src\gui\radiobutton.cpp" /> <Unit filename="src\gui\radiobutton.h" /> - <Unit filename="src\gui\register.cpp" /> - <Unit filename="src\gui\register.h" /> <Unit filename="src\gui\recorder.cpp" /> <Unit filename="src\gui\recorder.h" /> + <Unit filename="src\gui\register.cpp" /> + <Unit filename="src\gui\register.h" /> <Unit filename="src\gui\scrollarea.cpp" /> <Unit filename="src\gui\scrollarea.h" /> <Unit filename="src\gui\sdlinput.cpp" /> @@ -338,6 +332,7 @@ <Unit filename="src\net\network.h" /> <Unit filename="src\net\npchandler.cpp" /> <Unit filename="src\net\npchandler.h" /> + <Unit filename="src\net\packet.h" /> <Unit filename="src\net\partyhandler.cpp" /> <Unit filename="src\net\partyhandler.h" /> <Unit filename="src\net\playerhandler.cpp" /> @@ -418,6 +413,8 @@ <Unit filename="src\sound.cpp" /> <Unit filename="src\sound.h" /> <Unit filename="src\sprite.h" /> + <Unit filename="src\statuseffect.cpp" /> + <Unit filename="src\statuseffect.h" /> <Unit filename="src\text.cpp" /> <Unit filename="src\text.h" /> <Unit filename="src\textmanager.cpp" /> @@ -425,6 +422,11 @@ <Unit filename="src\textparticle.cpp" /> <Unit filename="src\textparticle.h" /> <Unit filename="src\tileset.h" /> + <Unit filename="src\tmw.rc"> + <Option compilerVar="CPP" /> + </Unit> + <Unit filename="src\units.cpp" /> + <Unit filename="src\units.h" /> <Unit filename="src\utils\base64.cpp" /> <Unit filename="src\utils\base64.h" /> <Unit filename="src\utils\dtor.h" /> @@ -444,7 +446,6 @@ <code_completion /> <envvars /> <debugger /> - <lib_finder disable_auto="1" /> </Extensions> </Project> </CodeBlocks_project_file> diff --git a/aethyra.desktop b/tmw.desktop index eb75b5cf..398fb439 100644 --- a/aethyra.desktop +++ b/tmw.desktop @@ -1,16 +1,16 @@ [Desktop Entry] Version=1.0 Encoding=UTF-8 -Name=Aethyra -Name[fr]=Aethyra +Name=The Mana World +Name[fr]=Le Monde de Mana Comment=An on-line fantasy role playing game Comment[fr]=Un jeu en ligne dans un univers fantastique Comment[de]=ein Online Fantasy Spiel Comment[it]=Un gioco fantasy online Comment[nl]=Een online role playing game -Exec=aethyra +Exec=tmw StartupNotify=false Terminal=false Type=Application -Icon=aethyra.png +Icon=tmw.png Categories=Application;Game diff --git a/tools/adler32.c b/tools/adler32.c index cd85d58e..5dd7e4c1 100644 --- a/tools/adler32.c +++ b/tools/adler32.c @@ -10,6 +10,7 @@ #include <stdlib.h> #include <stdio.h> #include <zlib.h> + /** * Calculates the Adler-32 checksum for the given file. */ diff --git a/tools/dyecmd/README b/tools/dyecmd/README new file mode 100644 index 00000000..c2981bb0 --- /dev/null +++ b/tools/dyecmd/README @@ -0,0 +1,12 @@ +DYECMD +======= + +This tool is used to dye item graphics used by the tmw client according to the +specification described here: http://wiki.themanaworld.org/index.php/Image_dyeing + +The tool expects 3 parameters: + +dyecmd <source_image> <target_image> <dye_string> +e.g.: +dyecmd "armor-legs-shorts.png" "armor-legs-shorts2.png" "W:#222255,6666ff" + diff --git a/tools/dyecmd/dyecmd.cbp b/tools/dyecmd/dyecmd.cbp new file mode 100644 index 00000000..b3d1bb55 --- /dev/null +++ b/tools/dyecmd/dyecmd.cbp @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_project_file> + <FileVersion major="1" minor="6" /> + <Project> + <Option title="dyecmd" /> + <Option pch_mode="2" /> + <Option compiler="gcc" /> + <Build> + <Target title="Debug"> + <Option output="bin\Debug\dyecmd" prefix_auto="1" extension_auto="1" /> + <Option object_output="obj\Debug\" /> + <Option type="1" /> + <Option compiler="gcc" /> + <Compiler> + <Add option="-g" /> + </Compiler> + </Target> + <Target title="Release"> + <Option output="bin\Release\dyecmd" prefix_auto="1" extension_auto="1" /> + <Option object_output="obj\Release\" /> + <Option type="1" /> + <Option compiler="gcc" /> + <Compiler> + <Add option="-O2" /> + </Compiler> + <Linker> + <Add option="-s" /> + </Linker> + </Target> + </Build> + <Compiler> + <Add option="-Wall" /> + <Add option="-fexceptions" /> + <Add directory="include" /> + </Compiler> + <Linker> + <Add library="mingw32" /> + <Add library="SDLmain" /> + <Add library="SDL" /> + <Add library="SDL_image" /> + <Add library="png12.dll" /> + <Add directory="lib" /> + </Linker> + <Unit filename="src\dye.cpp" /> + <Unit filename="src\dye.h" /> + <Unit filename="src\dyecmd.cpp" /> + <Unit filename="src\imagewriter.cpp" /> + <Unit filename="src\imagewriter.h" /> + <Extensions> + <code_completion /> + <envvars /> + <debugger /> + <lib_finder disable_auto="1" /> + </Extensions> + </Project> +</CodeBlocks_project_file> diff --git a/tools/dyecmd/run.cmd b/tools/dyecmd/run.cmd new file mode 100644 index 00000000..86726215 --- /dev/null +++ b/tools/dyecmd/run.cmd @@ -0,0 +1 @@ +bin\debug\dyecmd "armor-legs-shorts.png" "armor-legs-shorts2.png" "W:#222255,6666ff"
\ No newline at end of file diff --git a/tools/dyecmd/src/dye.cpp b/tools/dyecmd/src/dye.cpp new file mode 100644 index 00000000..251703b8 --- /dev/null +++ b/tools/dyecmd/src/dye.cpp @@ -0,0 +1,214 @@ +/* + * The Mana World + * Copyright (C) 2007 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <algorithm> +#include <sstream> + +#include "dye.h" + +Palette::Palette(const std::string &description) +{ + int size = description.length(); + if (size == 0) return; + if (description[0] != '#') + { + throw; + } + + int pos = 1; + for (;;) + { + if (pos + 6 > size) break; + int v = 0; + for (int i = 0; i < 6; ++i) + { + char c = description[pos + i]; + int n; + if ('0' <= c && c <= '9') n = c - '0'; + else if ('A' <= c && c <= 'F') n = c - 'A' + 10; + else if ('a' <= c && c <= 'f') n = c - 'a' + 10; + else + throw; + + v = (v << 4) | n; + } + Color c = { { v >> 16, v >> 8, v } }; + mColors.push_back(c); + pos += 6; + if (pos == size) return; + if (description[pos] != ',') break; + ++pos; + } +} + +void Palette::getColor(int intensity, int color[3]) const +{ + if (intensity == 0) + { + color[0] = 0; + color[1] = 0; + color[2] = 0; + return; + } + + int last = mColors.size(); + if (last == 0) return; + + int i = intensity * last / 255; + int t = intensity * last % 255; + + int j = t != 0 ? i : i - 1; + // Get the exact color if any, the next color otherwise. + int r2 = mColors[j].value[0], + g2 = mColors[j].value[1], + b2 = mColors[j].value[2]; + + if (t == 0) + { + // Exact color. + color[0] = r2; + color[1] = g2; + color[2] = b2; + return; + } + + // Get the previous color. First color is implicitly black. + int r1 = 0, g1 = 0, b1 = 0; + if (i > 0) + { + r1 = mColors[i - 1].value[0]; + g1 = mColors[i - 1].value[1]; + b1 = mColors[i - 1].value[2]; + } + + // Perform a linear interpolation. + color[0] = ((255 - t) * r1 + t * r2) / 255; + color[1] = ((255 - t) * g1 + t * g2) / 255; + color[2] = ((255 - t) * b1 + t * b2) / 255; +} + +Dye::Dye(const std::string &description) +{ + for (int i = 0; i < 7; ++i) + mPalettes[i] = 0; + + if (description.empty()) return; + + std::string::size_type next_pos = 0, length = description.length(); + do + { + std::string::size_type pos = next_pos; + next_pos = description.find(';', pos); + if (next_pos == std::string::npos) + next_pos = length; + if (next_pos <= pos + 3 || description[pos + 1] != ':') + { + throw; + } + int i = 0; + switch (description[pos]) + { + case 'R': i = 0; break; + case 'G': i = 1; break; + case 'Y': i = 2; break; + case 'B': i = 3; break; + case 'M': i = 4; break; + case 'C': i = 5; break; + case 'W': i = 6; break; + default: + throw; + } + mPalettes[i] = new Palette(description.substr(pos + 2, next_pos - pos - 2)); + ++next_pos; + } + while (next_pos < length); +} + +Dye::~Dye() +{ + for (int i = 0; i < 7; ++i) + delete mPalettes[i]; +} + +void Dye::update(int color[3]) const +{ + int cmax = std::max(color[0], std::max(color[1], color[2])); + if (cmax == 0) return; + + int cmin = std::min(color[0], std::min(color[1], color[2])); + int intensity = color[0] + color[1] + color[2]; + + if (cmin != cmax && + (cmin != 0 || (intensity != cmax && intensity != 2 * cmax))) + { + // not pure + return; + } + + int i = (color[0] != 0) | ((color[1] != 0) << 1) | ((color[2] != 0) << 2); + + if (mPalettes[i - 1]) + mPalettes[i - 1]->getColor(cmax, color); +} + +void Dye::instantiate(std::string &target, const std::string &palettes) +{ + std::string::size_type next_pos = target.find('|'); + if (next_pos == std::string::npos || palettes.empty()) return; + ++next_pos; + + std::ostringstream s; + s << target.substr(0, next_pos); + std::string::size_type last_pos = target.length(), pal_pos = 0; + do + { + std::string::size_type pos = next_pos; + next_pos = target.find(';', pos); + if (next_pos == std::string::npos) next_pos = last_pos; + if (next_pos == pos + 1 && pal_pos != std::string::npos) + { + std::string::size_type pal_next_pos = palettes.find(';', pal_pos); + s << target[pos] << ':'; + if (pal_next_pos == std::string::npos) + { + s << palettes.substr(pal_pos); + s << target.substr(next_pos); + pal_pos = std::string::npos; + break; + } + s << palettes.substr(pal_pos, pal_next_pos - pal_pos); + pal_pos = pal_next_pos + 1; + } + else if (next_pos > pos + 2) + { + s << target.substr(pos, next_pos - pos); + } + else + { + throw; + } + s << target[next_pos]; + ++next_pos; + } + while (next_pos < last_pos); + + target = s.str(); +} diff --git a/tools/dyecmd/src/dye.h b/tools/dyecmd/src/dye.h new file mode 100644 index 00000000..d32c3f22 --- /dev/null +++ b/tools/dyecmd/src/dye.h @@ -0,0 +1,94 @@ +/* + * The Mana World + * Copyright (C) 2007 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef DYE_H +#define DYE_H + +#include <vector> + +/** + * Class for performing a linear interpolation between colors. + */ +class Palette +{ + public: + + /** + * Creates a palette based on the given string. + * The string is either a file name or a sequence of hexadecimal RGB + * values separated by ',' and starting with '#'. + */ + Palette(const std::string &); + + /** + * Gets a pixel color depending on its intensity. + */ + void getColor(int intensity, int color[3]) const; + + private: + + struct Color { unsigned char value[3]; }; + + std::vector< Color > mColors; +}; + +/** + * Class for dispatching pixel-recoloring amongst several palettes. + */ +class Dye +{ + public: + + /** + * Creates a set of palettes based on the given string. + * + * The parts of string are separated by semi-colons. Each part starts + * by an uppercase letter, followed by a colon and then a palette name. + */ + Dye(const std::string &); + + /** + * Destroys the associated palettes. + */ + ~Dye(); + + /** + * Modifies a pixel color. + */ + void update(int color[3]) const; + + /** + * Fills the blank in a dye placeholder with some palette names. + */ + static void instantiate(std::string &target, + const std::string &palettes); + + private: + + /** + * The order of the palettes, as well as their uppercase letter, is: + * + * Red, Green, Yellow, Blue, Magenta, White (or rather gray). + */ + Palette *mPalettes[7]; +}; + +#endif diff --git a/tools/dyecmd/src/dyecmd.cpp b/tools/dyecmd/src/dyecmd.cpp new file mode 100644 index 00000000..ebec1f44 --- /dev/null +++ b/tools/dyecmd/src/dyecmd.cpp @@ -0,0 +1,121 @@ +/* + * The Mana World + * Copyright (C) 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <iostream> +#include <SDL/SDL.h> +#include <SDL/SDL_image.h> + + + +#include "dye.h" +#include "imagewriter.h" + +using namespace std; + +// return values +#define RETURN_OK 1 +#define INVALID_PARAMETER_LIST 100 +#define INVALID_INPUT_IMAGE 101 +#define INVALID_OUTPUT_IMAGE 102 +#define INVALID_DYE_PARAMETER 105 + +SDL_Surface* recolor(SDL_Surface* tmpImage, Dye* dye) +{ + SDL_PixelFormat rgba; + rgba.palette = NULL; + rgba.BitsPerPixel = 32; + rgba.BytesPerPixel = 4; + rgba.Rmask = 0xFF000000; rgba.Rloss = 0; rgba.Rshift = 24; + rgba.Gmask = 0x00FF0000; rgba.Gloss = 0; rgba.Gshift = 16; + rgba.Bmask = 0x0000FF00; rgba.Bloss = 0; rgba.Bshift = 8; + rgba.Amask = 0x000000FF; rgba.Aloss = 0; rgba.Ashift = 0; + rgba.colorkey = 0; + rgba.alpha = 255; + + SDL_Surface *surf = SDL_ConvertSurface(tmpImage, &rgba, SDL_SWSURFACE); + //SDL_FreeSurface(tmpImage); + + Uint32 *pixels = static_cast< Uint32 * >(surf->pixels); + for (Uint32 *p_end = pixels + surf->w * surf->h; pixels != p_end; ++pixels) + { + int alpha = *pixels & 255; + if (!alpha) continue; + int v[3]; + v[0] = (*pixels >> 24) & 255; + v[1] = (*pixels >> 16) & 255; + v[2] = (*pixels >> 8 ) & 255; + dye->update(v); + *pixels = (v[0] << 24) | (v[1] << 16) | (v[2] << 8) | alpha; + } + + return surf; +} + +int main(int argc, char* argv[]) +{ + Dye* dye = NULL; + SDL_Surface* source = NULL; + + // not enough or to many parameters + if (argc != 4) + { + cout << INVALID_PARAMETER_LIST << " - INVALID_PARAMETER_LIST"; + exit(INVALID_PARAMETER_LIST); + } + + try + { + dye = new Dye(argv[3]); + } + catch (exception &e) + { + cout << INVALID_DYE_PARAMETER << " - INVALID_DYE_PARAMETER"; + exit(INVALID_DYE_PARAMETER); + } + + try + { + source = IMG_Load(argv[1]); + if (!source) + { + throw; + } + } + catch (exception &e) + { + cout << INVALID_INPUT_IMAGE << " - INVALID_INPUT_IMAGE"; + exit(INVALID_INPUT_IMAGE); + } + + SDL_Surface* target = recolor(source, dye); + + if (!ImageWriter::writePNG(target, argv[2])) + { + cout << INVALID_OUTPUT_IMAGE << " - INVALID_OUTPUT_IMAGE"; + exit(INVALID_OUTPUT_IMAGE); + } + + SDL_FreeSurface(source); + SDL_FreeSurface(target); + delete dye; + + return 0; +} diff --git a/tools/dyecmd/src/imagewriter.cpp b/tools/dyecmd/src/imagewriter.cpp new file mode 100644 index 00000000..3b4f0577 --- /dev/null +++ b/tools/dyecmd/src/imagewriter.cpp @@ -0,0 +1,113 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "imagewriter.h" + +#include <png.h> +#include <string> +#include <SDL/SDL.h> + +bool ImageWriter::writePNG(SDL_Surface *surface, + const std::string &filename) +{ + // TODO Maybe someone can make this look nice? + FILE *fp = fopen(filename.c_str(), "wb"); + if (!fp) + { + // todo + // logger->log("could not open file %s for writing", filename.c_str()); + return false; + } + + png_structp png_ptr; + png_infop info_ptr; + png_bytep *row_pointers; + int colortype; + + if (SDL_MUSTLOCK(surface)) { + SDL_LockSurface(surface); + } + + png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0); + if (!png_ptr) + { + // todo + // logger->log("Had trouble creating png_structp"); + return false; + } + + info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) + { + png_destroy_write_struct(&png_ptr, (png_infopp)NULL); + // todo + // logger->log("Could not create png_info"); + return false; + } + + if (setjmp(png_jmpbuf(png_ptr))) + { + png_destroy_write_struct(&png_ptr, (png_infopp)NULL); + // todo + // logger->log("problem writing to %s", filename.c_str()); + return false; + } + + png_init_io(png_ptr, fp); + + colortype = (surface->format->BitsPerPixel == 24) ? + PNG_COLOR_TYPE_RGB : PNG_COLOR_TYPE_RGB_ALPHA; + + png_set_IHDR(png_ptr, info_ptr, surface->w, surface->h, 8, colortype, + PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); + + png_write_info(png_ptr, info_ptr); + + png_set_packing(png_ptr); + + row_pointers = new png_bytep[surface->h]; + if (!row_pointers) + { + // todo + // logger->log("Had trouble converting surface to row pointers"); + return false; + } + + for (int i = 0; i < surface->h; i++) + { + row_pointers[i] = (png_bytep)(Uint8 *)surface->pixels + i * surface->pitch; + } + + png_write_image(png_ptr, row_pointers); + png_write_end(png_ptr, info_ptr); + + fclose(fp); + + delete [] row_pointers; + + png_destroy_write_struct(&png_ptr, (png_infopp)NULL); + + if (SDL_MUSTLOCK(surface)) { + SDL_UnlockSurface(surface); + } + + return true; +} diff --git a/tools/dyecmd/src/imagewriter.h b/tools/dyecmd/src/imagewriter.h new file mode 100644 index 00000000..8eb6cead --- /dev/null +++ b/tools/dyecmd/src/imagewriter.h @@ -0,0 +1,31 @@ +/* + * The Mana World + * Copyright (C) 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <iosfwd> + +struct SDL_Surface; + +class ImageWriter +{ + public: + static bool writePNG(SDL_Surface *surface, + const std::string &filename); +}; diff --git a/tools/upalyzer/analyze.php b/tools/upalyzer/analyze.php index 106fcbb5..43057af1 100644 --- a/tools/upalyzer/analyze.php +++ b/tools/upalyzer/analyze.php @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ header("Content-type: text/html"); -header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); @@ -31,6 +31,8 @@ header("Pragma: no-cache"); List of current updates: <?php +$download_url_base = 'http://updates.themanaworld.org/tmwdata/'; +$checkout_path = '/home/eathena/public_html/updates/tmwdata/'; $update_file = array_filter(array_reverse(file('resources2.txt'))); $updates = array(); $update_file_maxlen = 0; @@ -62,16 +64,20 @@ foreach ($update_file as $update_line) $update['uncompressed_size'] += zip_entry_filesize($zip_entry); $entry_name = zip_entry_name($zip_entry); $entry_size = zip_entry_compressedsize($zip_entry); + $entry_exists = file_exists($checkout_path . $entry_name); $entry_used = !array_key_exists($entry_name, $update_entries); $entries[$entry_name] = array( 'name' => $entry_name, 'size' => $entry_size, - 'used' => $entry_used); + 'used' => $entry_used, + 'obsolete' => !$entry_exists); $update['size'] += $entry_size; if ($entry_used) { - $update['used_entry_count']++; - $update['used_size'] += $entry_size; + if ($entry_exists) { + $update['used_entry_count']++; + $update['used_size'] += $entry_size; + } $update_entries[$entry_name] = $update; } @@ -107,7 +113,7 @@ function print_update_name($update, $pad = true) foreach (array_reverse($updates) as $update) { print_update_name($update); - echo ' '. $update['adler32']; + printf(" %8s", $update['adler32']); printf(" %4d kb", $update['filesize'] / 1024); if (!$update['zip_error']) { printf(" %4d kb", $update['uncompressed_size'] / 1024); @@ -140,8 +146,14 @@ ksort($update_entries); foreach ($update_entries as $entry => $update) { - printf("%-{$update_entry_maxlen}s ", $entry); - print_update_name($update, false); + $exists = file_exists($checkout_path . $entry); + printf("<span style=\"color: %s;\">%-{$update_entry_maxlen}s</span> ", + $exists ? "black" : "rgb(100,100,100)", + $entry); + print_update_name($update, true); + + if ($exists && substr($entry, strlen($entry) - 1) != '/') + printf(' <a href="%s%s">download</a>', $download_url_base, $entry); echo "\n"; } @@ -153,10 +165,13 @@ foreach (array_reverse($updates) as $update) print "\n<a name=\"".$update['file']."\"/><b>".$update['file']."</b>\n"; foreach ($update['entries'] as $entry_name => $entry) { - printf("%-{$update_entry_maxlen}s", $entry_name); - if ($entry['used']) { + printf("%s%-{$update_entry_maxlen}s%s", + $entry['obsolete'] ? "<span style=\"color: rgb(100,100,100);\">" : "", + $entry_name, + $entry['obsolete'] ? "</span>" : ""); + if ($entry['used'] && !$entry['obsolete']) { echo ' *'; - } else { + } elseif (!$entry['obsolete']) { echo ' '; print_update_name($update_entries[$entry_name], false); } diff --git a/update.sh b/update.sh deleted file mode 100755 index b72539c4..00000000 --- a/update.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -#automated script to update aethyra from git -#author=Blame <blame@aethyra.com> -#last modified 2008-12-03 Tametomo -file=~/src/aethyra -file1=~/src -# test for the aethyra client folder -if [ -e $file ]; then - #change to the aethyra directory - cd $file; - #issue the git update command - git pull; - #issue the autobuild command - ./autobuild.sh; - echo "Aethyra has been updated" - exit 1; -else - #make directory /home/user-name/src - mkdir $file1 - #change to directory /home/user-name/src - cd $file1 - #execute the git command to download the client files - git clone git://gitorious.org/tmw/aethyra.git - #change to the aethyra directory - cd $file; - #issue the auto build script to compile the client - ./autobuild.sh - echo "congratulations on installing aethyra enjoy" - exit 1; -fi |