1 /***************************************************************************
2 * Copyright (C) 2009 by Andrey Afletdinov <fheroes2@gmail.com> *
3 * *
4 * Part of the Free Heroes2 Engine: *
5 * http://sourceforge.net/projects/fheroes2 *
6 * *
7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with this program; if not, write to the *
19 * Free Software Foundation, Inc., *
20 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
21 ***************************************************************************/
22
23 #include "heroes.h"
24 #include "icn.h"
25 #include "race.h"
26 #include "settings.h"
27
28 namespace ICN
29 {
30 struct icnmap_t
31 {
32 int type;
33 const char * string;
34 };
35
36 // Make sure that each item ID has exactly the same location ID!
37 const icnmap_t icnmap[LAST_VALID_FILE_ICN]
38 = { { UNKNOWN, "UNKNOWN" }, { ADVBORDE, "ADVBORDE.ICN" }, { ADVBORD, "ADVBORD.ICN" }, { ADVBTNS, "ADVBTNS.ICN" }, { ADVEBTNS, "ADVEBTNS.ICN" },
39 { ADVMCO, "ADVMCO.ICN" }, { AELEM, "AELEM.ICN" }, { APANBKGE, "APANBKGE.ICN" }, { APANBKG, "APANBKG.ICN" }, { APANELE, "APANELE.ICN" },
40 { APANEL, "APANEL.ICN" }, { ARCHER2, "ARCHER2.ICN" }, { ARCHER, "ARCHER.ICN" }, { ARCH_MSL, "ARCH_MSL.ICN" }, { ART32, "ART32.ICN" },
41 { ARTFX, "ARTFX.ICN" }, { ARTIFACT, "ARTIFACT.ICN" }, { BARB32, "BARB32.ICN" }, { B_BFLG32, "B-BFLG32.ICN" }, { BERZERK, "BERZERK.ICN" },
42 { B_FLAG32, "B-FLAG32.ICN" }, { BIGBAR, "BIGBAR.ICN" }, { BLDGXTRA, "BLDGXTRA.ICN" }, { BLESS, "BLESS.ICN" }, { BLIND, "BLIND.ICN" },
43 { BLUEFIRE, "BLUEFIRE.ICN" }, { BOAR, "BOAR.ICN" }, { BOAT32, "BOAT32.ICN" }, { BOATSHAD, "BOATSHAD.ICN" }, { BOATWIND, "BOATWIND.ICN" },
44 { BOOK, "BOOK.ICN" }, { BORDEDIT, "BORDEDIT.ICN" }, { BOULDER, "BOULDER.ICN" }, { BRCREST, "BRCREST.ICN" }, { BROTHERS, "BROTHERS.ICN" },
45 { BTNBAUD, "BTNBAUD.ICN" }, { BTNCMPGN, "BTNCMPGN.ICN" }, { BTNCOM, "BTNCOM.ICN" }, { BTNDCCFG, "BTNDCCFG.ICN" }, { BTNDC, "BTNDC.ICN" },
46 { BTNEMAIN, "BTNEMAIN.ICN" }, { BTNENEW, "BTNENEW.ICN" }, { BTNESIZE, "BTNESIZE.ICN" }, { BTNHOTST, "BTNHOTST.ICN" }, { BTNMCFG, "BTNMCFG.ICN" },
47 { BTNMODEM, "BTNMODEM.ICN" }, { BTNMP, "BTNMP.ICN" }, { BTNNET2, "BTNNET2.ICN" }, { BTNNET, "BTNNET.ICN" }, { BTNNEWGM, "BTNNEWGM.ICN" },
48 { BTNSHNGL, "BTNSHNGL.ICN" }, { BUILDING, "BUILDING.ICN" }, { BUYBUILD, "BUYBUILD.ICN" }, { BUYBUILE, "BUYBUILE.ICN" }, { CAMPBKGE, "CAMPBKGE.ICN" },
49 { CAMPBKGG, "CAMPBKGG.ICN" }, { CAMPXTRE, "CAMPXTRE.ICN" }, { CAMPXTRG, "CAMPXTRG.ICN" }, { CAPTCOVR, "CAPTCOVR.ICN" }, { CASLBAR, "CASLBAR.ICN" },
50 { CASLWIND, "CASLWIND.ICN" }, { CASLXTRA, "CASLXTRA.ICN" }, { CASTBKGB, "CASTBKGB.ICN" }, { CASTBKGK, "CASTBKGK.ICN" }, { CASTBKGN, "CASTBKGN.ICN" },
51 { CASTBKGS, "CASTBKGS.ICN" }, { CASTBKGW, "CASTBKGW.ICN" }, { CASTBKGZ, "CASTBKGZ.ICN" }, { CASTLEB, "CASTLEB.ICN" }, { CASTLEK, "CASTLEK.ICN" },
52 { CASTLEN, "CASTLEN.ICN" }, { CASTLES, "CASTLES.ICN" }, { CASTLEW, "CASTLEW.ICN" }, { CASTLEZ, "CASTLEZ.ICN" }, { CATAPULT, "CATAPULT.ICN" },
53 { CAVALRYB, "CAVALRYB.ICN" }, { CAVALRYR, "CAVALRYR.ICN" }, { CBKGBEAC, "CBKGBEAC.ICN" }, { CBKGCRCK, "CBKGCRCK.ICN" }, { CBKGDIMT, "CBKGDIMT.ICN" },
54 { CBKGDITR, "CBKGDITR.ICN" }, { CBKGDSRT, "CBKGDSRT.ICN" }, { CBKGGRAV, "CBKGGRAV.ICN" }, { CBKGGRMT, "CBKGGRMT.ICN" }, { CBKGGRTR, "CBKGGRTR.ICN" },
55 { CBKGLAVA, "CBKGLAVA.ICN" }, { CBKGSNMT, "CBKGSNMT.ICN" }, { CBKGSNTR, "CBKGSNTR.ICN" }, { CBKGSWMP, "CBKGSWMP.ICN" }, { CBKGWATR, "CBKGWATR.ICN" },
56 { CELLWIN, "CELLWIN.ICN" }, { CENTAUR, "CENTAUR.ICN" }, { CFLGSMAL, "CFLGSMAL.ICN" }, { CLOP32, "CLOP32.ICN" }, { CLOUDLUK, "CLOUDLUK.ICN" },
57 { CMBTCAPB, "CMBTCAPB.ICN" }, { CMBTCAPK, "CMBTCAPK.ICN" }, { CMBTCAPN, "CMBTCAPN.ICN" }, { CMBTCAPS, "CMBTCAPS.ICN" }, { CMBTCAPW, "CMBTCAPW.ICN" },
58 { CMBTCAPZ, "CMBTCAPZ.ICN" }, { CMBTFLE1, "CMBTFLE1.ICN" }, { CMBTFLE2, "CMBTFLE2.ICN" }, { CMBTFLE3, "CMBTFLE3.ICN" }, { CMBTHROB, "CMBTHROB.ICN" },
59 { CMBTHROK, "CMBTHROK.ICN" }, { CMBTHRON, "CMBTHRON.ICN" }, { CMBTHROS, "CMBTHROS.ICN" }, { CMBTHROW, "CMBTHROW.ICN" }, { CMBTHROZ, "CMBTHROZ.ICN" },
60 { CMBTLOS1, "CMBTLOS1.ICN" }, { CMBTLOS2, "CMBTLOS2.ICN" }, { CMBTLOS3, "CMBTLOS3.ICN" }, { CMBTMISC, "CMBTMISC.ICN" }, { CMBTSURR, "CMBTSURR.ICN" },
61 { CMSECO, "CMSECO.ICN" }, { COBJ0000, "COBJ0000.ICN" }, { COBJ0001, "COBJ0001.ICN" }, { COBJ0002, "COBJ0002.ICN" }, { COBJ0003, "COBJ0003.ICN" },
62 { COBJ0004, "COBJ0004.ICN" }, { COBJ0005, "COBJ0005.ICN" }, { COBJ0006, "COBJ0006.ICN" }, { COBJ0007, "COBJ0007.ICN" }, { COBJ0008, "COBJ0008.ICN" },
63 { COBJ0009, "COBJ0009.ICN" }, { COBJ0010, "COBJ0010.ICN" }, { COBJ0011, "COBJ0011.ICN" }, { COBJ0012, "COBJ0012.ICN" }, { COBJ0013, "COBJ0013.ICN" },
64 { COBJ0014, "COBJ0014.ICN" }, { COBJ0015, "COBJ0015.ICN" }, { COBJ0016, "COBJ0016.ICN" }, { COBJ0017, "COBJ0017.ICN" }, { COBJ0018, "COBJ0018.ICN" },
65 { COBJ0019, "COBJ0019.ICN" }, { COBJ0020, "COBJ0020.ICN" }, { COBJ0021, "COBJ0021.ICN" }, { COBJ0022, "COBJ0022.ICN" }, { COBJ0023, "COBJ0023.ICN" },
66 { COBJ0024, "COBJ0024.ICN" }, { COBJ0025, "COBJ0025.ICN" }, { COBJ0026, "COBJ0026.ICN" }, { COBJ0027, "COBJ0027.ICN" }, { COBJ0028, "COBJ0028.ICN" },
67 { COBJ0029, "COBJ0029.ICN" }, { COBJ0030, "COBJ0030.ICN" }, { COBJ0031, "COBJ0031.ICN" }, { COLDRAY, "COLDRAY.ICN" }, { COLDRING, "COLDRING.ICN" },
68 { CONGRATS, "CONGRATS.ICN" }, { COVR0001, "COVR0001.ICN" }, { COVR0002, "COVR0002.ICN" }, { COVR0003, "COVR0003.ICN" }, { COVR0004, "COVR0004.ICN" },
69 { COVR0005, "COVR0005.ICN" }, { COVR0006, "COVR0006.ICN" }, { COVR0007, "COVR0007.ICN" }, { COVR0008, "COVR0008.ICN" }, { COVR0009, "COVR0009.ICN" },
70 { COVR0010, "COVR0010.ICN" }, { COVR0011, "COVR0011.ICN" }, { COVR0012, "COVR0012.ICN" }, { COVR0013, "COVR0013.ICN" }, { COVR0014, "COVR0014.ICN" },
71 { COVR0015, "COVR0015.ICN" }, { COVR0016, "COVR0016.ICN" }, { COVR0017, "COVR0017.ICN" }, { COVR0018, "COVR0018.ICN" }, { COVR0019, "COVR0019.ICN" },
72 { COVR0020, "COVR0020.ICN" }, { COVR0021, "COVR0021.ICN" }, { COVR0022, "COVR0022.ICN" }, { COVR0023, "COVR0023.ICN" }, { COVR0024, "COVR0024.ICN" },
73 { CPANBKGE, "CPANBKGE.ICN" }, { CPANBKG, "CPANBKG.ICN" }, { CPANELE, "CPANELE.ICN" }, { CPANEL, "CPANEL.ICN" }, { CREST, "CREST.ICN" },
74 { CSPANBKE, "CSPANBKE.ICN" }, { CSPANBKG, "CSPANBKG.ICN" }, { CSPANBTE, "CSPANBTE.ICN" }, { CSPANBTN, "CSPANBTN.ICN" }, { CSPANEL, "CSPANEL.ICN" },
75 { CSTLBARB, "CSTLBARB.ICN" }, { CSTLCAPB, "CSTLCAPB.ICN" }, { CSTLCAPK, "CSTLCAPK.ICN" }, { CSTLCAPN, "CSTLCAPN.ICN" }, { CSTLCAPS, "CSTLCAPS.ICN" },
76 { CSTLCAPW, "CSTLCAPW.ICN" }, { CSTLCAPZ, "CSTLCAPZ.ICN" }, { CSTLKNGT, "CSTLKNGT.ICN" }, { CSTLNECR, "CSTLNECR.ICN" }, { CSTLSORC, "CSTLSORC.ICN" },
77 { CSTLWRLK, "CSTLWRLK.ICN" }, { CSTLWZRD, "CSTLWZRD.ICN" }, { CTRACK00, "CTRACK00.ICN" }, { CTRACK01, "CTRACK01.ICN" }, { CTRACK02, "CTRACK02.ICN" },
78 { CTRACK03, "CTRACK03.ICN" }, { CTRACK04, "CTRACK04.ICN" }, { CTRACK05, "CTRACK05.ICN" }, { CTRACK06, "CTRACK06.ICN" }, { CURSE, "CURSE.ICN" },
79 { CYCLOPS, "CYCLOPS.ICN" }, { DISRRAY, "DISRRAY.ICN" }, { DRAGBLAK, "DRAGBLAK.ICN" }, { DRAGBONE, "DRAGBONE.ICN" }, { DRAGGREE, "DRAGGREE.ICN" },
80 { DRAGRED, "DRAGRED.ICN" }, { DRAGSLAY, "DRAGSLAY.ICN" }, { DROPLISL, "DROPLISL.ICN" }, { DROPLIST, "DROPLIST.ICN" }, { DRUID2, "DRUID2.ICN" },
81 { DRUID, "DRUID.ICN" }, { DRUIDMSL, "DRUIDMSL.ICN" }, { DUMMY, "DUMMY.ICN" }, { DWARF2, "DWARF2.ICN" }, { DWARF, "DWARF.ICN" },
82 { ECPANEL, "ECPANEL.ICN" }, { EDITBTNS, "EDITBTNS.ICN" }, { EDITOR, "EDITOR.ICN" }, { EDITPANL, "EDITPANL.ICN" }, { EELEM, "EELEM.ICN" },
83 { ELECTRIC, "ELECTRIC.ICN" }, { ELF2, "ELF2.ICN" }, { ELF, "ELF.ICN" }, { ELF__MSL, "ELF__MSL.ICN" }, { ESCROLL, "ESCROLL.ICN" },
84 { ESPANBKG, "ESPANBKG.ICN" }, { ESPANBTN, "ESPANBTN.ICN" }, { ESPANEL, "ESPANEL.ICN" }, { EVIW_ALL, "EVIW_ALL.ICN" }, { EVIWDDOR, "EVIWDDOR.ICN" },
85 { EVIWHROS, "EVIWHROS.ICN" }, { EVIWMINE, "EVIWMINE.ICN" }, { EVIWPUZL, "EVIWPUZL.ICN" }, { EVIWRSRC, "EVIWRSRC.ICN" }, { EVIWRTFX, "EVIWRTFX.ICN" },
86 { EVIWTWNS, "EVIWTWNS.ICN" }, { EVIWWRLD, "EVIWWRLD.ICN" }, { EXPMRL, "EXPMRL.ICN" }, { EXTRAOVR, "EXTRAOVR.ICN" }, { FELEM, "FELEM.ICN" },
87 { FIREBAL2, "FIREBAL2.ICN" }, { FIREBALL, "FIREBALL.ICN" }, { FLAG32, "FLAG32.ICN" }, { FONT, "FONT.ICN" }, { FRNG0001, "FRNG0001.ICN" },
88 { FRNG0002, "FRNG0002.ICN" }, { FRNG0003, "FRNG0003.ICN" }, { FRNG0004, "FRNG0004.ICN" }, { FRNG0005, "FRNG0005.ICN" }, { FRNG0006, "FRNG0006.ICN" },
89 { FRNG0007, "FRNG0007.ICN" }, { FRNG0008, "FRNG0008.ICN" }, { FRNG0009, "FRNG0009.ICN" }, { FRNG0010, "FRNG0010.ICN" }, { FRNG0011, "FRNG0011.ICN" },
90 { FRNG0012, "FRNG0012.ICN" }, { FRNG0013, "FRNG0013.ICN" }, { FROTH, "FROTH.ICN" }, { GARGOYLE, "GARGOYLE.ICN" }, { G_BFLG32, "G-BFLG32.ICN" },
91 { GENIE, "GENIE.ICN" }, { G_FLAG32, "G-FLAG32.ICN" }, { GHOST, "GHOST.ICN" }, { GOBLIN, "GOBLIN.ICN" }, { GOLEM2, "GOLEM2.ICN" },
92 { GOLEM, "GOLEM.ICN" }, { GRIFFIN, "GRIFFIN.ICN" }, { GROUND12, "GROUND12.ICN" }, { GROUND4, "GROUND4.ICN" }, { GROUND6, "GROUND6.ICN" },
93 { HALFLING, "HALFLING.ICN" }, { HALFLMSL, "HALFLMSL.ICN" }, { HASTE, "HASTE.ICN" }, { HEROBKG, "HEROBKG.ICN" }, { HEROES, "HEROES.ICN" },
94 { HEROEXTE, "HEROEXTE.ICN" }, { HEROEXTG, "HEROEXTG.ICN" }, { HEROFL00, "HEROFL00.ICN" }, { HEROFL01, "HEROFL01.ICN" }, { HEROFL02, "HEROFL02.ICN" },
95 { HEROFL03, "HEROFL03.ICN" }, { HEROFL04, "HEROFL04.ICN" }, { HEROFL05, "HEROFL05.ICN" }, { HEROFL06, "HEROFL06.ICN" }, { HEROLOGE, "HEROLOGE.ICN" },
96 { HEROLOGO, "HEROLOGO.ICN" }, { HISCORE, "HISCORE.ICN" }, { HOURGLAS, "HOURGLAS.ICN" }, { HSBKG, "HSBKG.ICN" }, { HSBTNS, "HSBTNS.ICN" },
97 { HSICONS, "HSICONS.ICN" }, { HYDRA, "HYDRA.ICN" }, { HYPNOTIZ, "HYPNOTIZ.ICN" }, { ICECLOUD, "ICECLOUD.ICN" }, { KEEP, "KEEP.ICN" },
98 { KNGT32, "KNGT32.ICN" }, { LETTER12, "LETTER12.ICN" }, { LETTER4, "LETTER4.ICN" }, { LETTER6, "LETTER6.ICN" }, { LGNDXTRA, "LGNDXTRA.ICN" },
99 { LGNDXTRE, "LGNDXTRE.ICN" }, { LICH2, "LICH2.ICN" }, { LICHCLOD, "LICHCLOD.ICN" }, { LICH, "LICH.ICN" }, { LICH_MSL, "LICH_MSL.ICN" },
100 { LISTBOX, "LISTBOX.ICN" }, { LISTBOXS, "LISTBOXS.ICN" }, { LOCATORE, "LOCATORE.ICN" }, { LOCATORS, "LOCATORS.ICN" }, { MAGE1, "MAGE1.ICN" },
101 { MAGE2, "MAGE2.ICN" }, { MAGEGLDB, "MAGEGLDB.ICN" }, { MAGEGLDK, "MAGEGLDK.ICN" }, { MAGEGLDN, "MAGEGLDN.ICN" }, { MAGEGLDS, "MAGEGLDS.ICN" },
102 { MAGEGLDW, "MAGEGLDW.ICN" }, { MAGEGLDZ, "MAGEGLDZ.ICN" }, { MAGIC01, "MAGIC01.ICN" }, { MAGIC02, "MAGIC02.ICN" }, { MAGIC03, "MAGIC03.ICN" },
103 { MAGIC04, "MAGIC04.ICN" }, { MAGIC06, "MAGIC06.ICN" }, { MAGIC07, "MAGIC07.ICN" }, { MAGIC08, "MAGIC08.ICN" }, { MANA, "MANA.ICN" },
104 { MEDUSA, "MEDUSA.ICN" }, { METEOR, "METEOR.ICN" }, { MINICAPT, "MINICAPT.ICN" }, { MINIHERO, "MINIHERO.ICN" }, { MINILKMR, "MINILKMR.ICN" },
105 { MINIMON, "MINIMON.ICN" }, { MINIPORT, "MINIPORT.ICN" }, { MINISS, "MINISS.ICN" }, { MINITOWN, "MINITOWN.ICN" }, { MINOTAU2, "MINOTAU2.ICN" },
106 { MINOTAUR, "MINOTAUR.ICN" }, { MISC12, "MISC12.ICN" }, { MISC4, "MISC4.ICN" }, { MISC6, "MISC6.ICN" }, { MOATPART, "MOATPART.ICN" },
107 { MOATWHOL, "MOATWHOL.ICN" }, { MOBILITY, "MOBILITY.ICN" }, { MONH0000, "MONH0000.ICN" }, { MONH0001, "MONH0001.ICN" }, { MONH0002, "MONH0002.ICN" },
108 { MONH0003, "MONH0003.ICN" }, { MONH0004, "MONH0004.ICN" }, { MONH0005, "MONH0005.ICN" }, { MONH0006, "MONH0006.ICN" }, { MONH0007, "MONH0007.ICN" },
109 { MONH0008, "MONH0008.ICN" }, { MONH0009, "MONH0009.ICN" }, { MONH0010, "MONH0010.ICN" }, { MONH0011, "MONH0011.ICN" }, { MONH0012, "MONH0012.ICN" },
110 { MONH0013, "MONH0013.ICN" }, { MONH0014, "MONH0014.ICN" }, { MONH0015, "MONH0015.ICN" }, { MONH0016, "MONH0016.ICN" }, { MONH0017, "MONH0017.ICN" },
111 { MONH0018, "MONH0018.ICN" }, { MONH0019, "MONH0019.ICN" }, { MONH0020, "MONH0020.ICN" }, { MONH0021, "MONH0021.ICN" }, { MONH0022, "MONH0022.ICN" },
112 { MONH0023, "MONH0023.ICN" }, { MONH0024, "MONH0024.ICN" }, { MONH0025, "MONH0025.ICN" }, { MONH0026, "MONH0026.ICN" }, { MONH0027, "MONH0027.ICN" },
113 { MONH0028, "MONH0028.ICN" }, { MONH0029, "MONH0029.ICN" }, { MONH0030, "MONH0030.ICN" }, { MONH0031, "MONH0031.ICN" }, { MONH0032, "MONH0032.ICN" },
114 { MONH0033, "MONH0033.ICN" }, { MONH0034, "MONH0034.ICN" }, { MONH0035, "MONH0035.ICN" }, { MONH0036, "MONH0036.ICN" }, { MONH0037, "MONH0037.ICN" },
115 { MONH0038, "MONH0038.ICN" }, { MONH0039, "MONH0039.ICN" }, { MONH0040, "MONH0040.ICN" }, { MONH0041, "MONH0041.ICN" }, { MONH0042, "MONH0042.ICN" },
116 { MONH0043, "MONH0043.ICN" }, { MONH0044, "MONH0044.ICN" }, { MONH0045, "MONH0045.ICN" }, { MONH0046, "MONH0046.ICN" }, { MONH0047, "MONH0047.ICN" },
117 { MONH0048, "MONH0048.ICN" }, { MONH0049, "MONH0049.ICN" }, { MONH0050, "MONH0050.ICN" }, { MONH0051, "MONH0051.ICN" }, { MONH0052, "MONH0052.ICN" },
118 { MONH0053, "MONH0053.ICN" }, { MONH0054, "MONH0054.ICN" }, { MONH0055, "MONH0055.ICN" }, { MONH0056, "MONH0056.ICN" }, { MONH0057, "MONH0057.ICN" },
119 { MONH0058, "MONH0058.ICN" }, { MONH0059, "MONH0059.ICN" }, { MONH0060, "MONH0060.ICN" }, { MONH0061, "MONH0061.ICN" }, { MONH0062, "MONH0062.ICN" },
120 { MONH0063, "MONH0063.ICN" }, { MONH0064, "MONH0064.ICN" }, { MONH0065, "MONH0065.ICN" }, { MONS32, "MONS32.ICN" }, { MORALEB, "MORALEB.ICN" },
121 { MORALEG, "MORALEG.ICN" }, { MTNCRCK, "MTNCRCK.ICN" }, { MTNDIRT, "MTNDIRT.ICN" }, { MTNDSRT, "MTNDSRT.ICN" }, { MTNGRAS, "MTNGRAS.ICN" },
122 { MTNLAVA, "MTNLAVA.ICN" }, { MTNMULT, "MTNMULT.ICN" }, { MTNSNOW, "MTNSNOW.ICN" }, { MTNSWMP, "MTNSWMP.ICN" }, { MUMMY2, "MUMMY2.ICN" },
123 { MUMMYW, "MUMMYW.ICN" }, { NECR32, "NECR32.ICN" }, { NETBOX, "NETBOX.ICN" }, { NGEXTRA, "NGEXTRA.ICN" }, { NGHSBKG, "NGHSBKG.ICN" },
124 { NGMPBKG, "NGMPBKG.ICN" }, { NGSPBKG, "NGSPBKG.ICN" }, { NOMAD, "NOMAD.ICN" }, { O_BFLG32, "O-BFLG32.ICN" }, { OBJNARTI, "OBJNARTI.ICN" },
125 { OBJNCRCK, "OBJNCRCK.ICN" }, { OBJNDIRT, "OBJNDIRT.ICN" }, { OBJNDSRT, "OBJNDSRT.ICN" }, { OBJNGRA2, "OBJNGRA2.ICN" }, { OBJNGRAS, "OBJNGRAS.ICN" },
126 { OBJNHAUN, "OBJNHAUN.ICN" }, { OBJNLAV2, "OBJNLAV2.ICN" }, { OBJNLAV3, "OBJNLAV3.ICN" }, { OBJNLAVA, "OBJNLAVA.ICN" }, { OBJNMUL2, "OBJNMUL2.ICN" },
127 { OBJNMULT, "OBJNMULT.ICN" }, { OBJNRSRC, "OBJNRSRC.ICN" }, { OBJNSNOW, "OBJNSNOW.ICN" }, { OBJNSWMP, "OBJNSWMP.ICN" }, { OBJNTOWN, "OBJNTOWN.ICN" },
128 { OBJNTWBA, "OBJNTWBA.ICN" }, { OBJNTWRD, "OBJNTWRD.ICN" }, { OBJNTWSH, "OBJNTWSH.ICN" }, { OBJNWAT2, "OBJNWAT2.ICN" }, { OBJNWATR, "OBJNWATR.ICN" },
129 { OBJNXTRA, "OBJNXTRA.ICN" }, { OBJPALET, "OBJPALET.ICN" }, { O_FLAG32, "O-FLAG32.ICN" }, { OGRE2, "OGRE2.ICN" }, { OGRE, "OGRE.ICN" },
130 { ORC2, "ORC2.ICN" }, { ORC, "ORC.ICN" }, { ORC__MSL, "ORC__MSL.ICN" }, { OVERBACK, "OVERBACK.ICN" }, { OVERLAY, "OVERLAY.ICN" },
131 { OVERVIEW, "OVERVIEW.ICN" }, { PALADIN2, "PALADIN2.ICN" }, { PALADIN, "PALADIN.ICN" }, { PARALYZE, "PARALYZE.ICN" }, { P_BFLG32, "P-BFLG32.ICN" },
132 { PEASANT, "PEASANT.ICN" }, { P_FLAG32, "P-FLAG32.ICN" }, { PHOENIX, "PHOENIX.ICN" }, { PHYSICAL, "PHYSICAL.ICN" }, { PIKEMAN2, "PIKEMAN2.ICN" },
133 { PIKEMAN, "PIKEMAN.ICN" }, { PORT0000, "PORT0000.ICN" }, { PORT0001, "PORT0001.ICN" }, { PORT0002, "PORT0002.ICN" }, { PORT0003, "PORT0003.ICN" },
134 { PORT0004, "PORT0004.ICN" }, { PORT0005, "PORT0005.ICN" }, { PORT0006, "PORT0006.ICN" }, { PORT0007, "PORT0007.ICN" }, { PORT0008, "PORT0008.ICN" },
135 { PORT0009, "PORT0009.ICN" }, { PORT0010, "PORT0010.ICN" }, { PORT0011, "PORT0011.ICN" }, { PORT0012, "PORT0012.ICN" }, { PORT0013, "PORT0013.ICN" },
136 { PORT0014, "PORT0014.ICN" }, { PORT0015, "PORT0015.ICN" }, { PORT0016, "PORT0016.ICN" }, { PORT0017, "PORT0017.ICN" }, { PORT0018, "PORT0018.ICN" },
137 { PORT0019, "PORT0019.ICN" }, { PORT0020, "PORT0020.ICN" }, { PORT0021, "PORT0021.ICN" }, { PORT0022, "PORT0022.ICN" }, { PORT0023, "PORT0023.ICN" },
138 { PORT0024, "PORT0024.ICN" }, { PORT0025, "PORT0025.ICN" }, { PORT0026, "PORT0026.ICN" }, { PORT0027, "PORT0027.ICN" }, { PORT0028, "PORT0028.ICN" },
139 { PORT0029, "PORT0029.ICN" }, { PORT0030, "PORT0030.ICN" }, { PORT0031, "PORT0031.ICN" }, { PORT0032, "PORT0032.ICN" }, { PORT0033, "PORT0033.ICN" },
140 { PORT0034, "PORT0034.ICN" }, { PORT0035, "PORT0035.ICN" }, { PORT0036, "PORT0036.ICN" }, { PORT0037, "PORT0037.ICN" }, { PORT0038, "PORT0038.ICN" },
141 { PORT0039, "PORT0039.ICN" }, { PORT0040, "PORT0040.ICN" }, { PORT0041, "PORT0041.ICN" }, { PORT0042, "PORT0042.ICN" }, { PORT0043, "PORT0043.ICN" },
142 { PORT0044, "PORT0044.ICN" }, { PORT0045, "PORT0045.ICN" }, { PORT0046, "PORT0046.ICN" }, { PORT0047, "PORT0047.ICN" }, { PORT0048, "PORT0048.ICN" },
143 { PORT0049, "PORT0049.ICN" }, { PORT0050, "PORT0050.ICN" }, { PORT0051, "PORT0051.ICN" }, { PORT0052, "PORT0052.ICN" }, { PORT0053, "PORT0053.ICN" },
144 { PORT0054, "PORT0054.ICN" }, { PORT0055, "PORT0055.ICN" }, { PORT0056, "PORT0056.ICN" }, { PORT0057, "PORT0057.ICN" }, { PORT0058, "PORT0058.ICN" },
145 { PORT0059, "PORT0059.ICN" }, { PORT0060, "PORT0060.ICN" }, { PORT0061, "PORT0061.ICN" }, { PORT0062, "PORT0062.ICN" }, { PORT0063, "PORT0063.ICN" },
146 { PORT0064, "PORT0064.ICN" }, { PORT0065, "PORT0065.ICN" }, { PORT0066, "PORT0066.ICN" }, { PORT0067, "PORT0067.ICN" }, { PORT0068, "PORT0068.ICN" },
147 { PORT0069, "PORT0069.ICN" }, { PORT0070, "PORT0070.ICN" }, { PORT0090, "PORT0090.ICN" }, { PORT0091, "PORT0091.ICN" }, { PORT0092, "PORT0092.ICN" },
148 { PORT0093, "PORT0093.ICN" }, { PORT0094, "PORT0094.ICN" }, { PORT0095, "PORT0095.ICN" }, { PORTCFLG, "PORTCFLG.ICN" }, { PORTMEDI, "PORTMEDI.ICN" },
149 { PORTXTRA, "PORTXTRA.ICN" }, { PRIMSKIL, "PRIMSKIL.ICN" }, { PUZZLE, "PUZZLE.ICN" }, { QWIKHERO, "QWIKHERO.ICN" }, { QWIKINFO, "QWIKINFO.ICN" },
150 { QWIKTOWN, "QWIKTOWN.ICN" }, { RADAR, "RADAR.ICN" }, { R_BFLG32, "R-BFLG32.ICN" }, { RECR2BKG, "RECR2BKG.ICN" }, { RECRBKG, "RECRBKG.ICN" },
151 { RECRUIT, "RECRUIT.ICN" }, { REDBACK, "REDBACK.ICN" }, { REDDEATH, "REDDEATH.ICN" }, { REDFIRE, "REDFIRE.ICN" }, { REQBKG, "REQBKG.ICN" },
152 { REQSBKG, "REQSBKG.ICN" }, { REQUEST, "REQUEST.ICN" }, { REQUESTS, "REQUESTS.ICN" }, { RESOURCE, "RESOURCE.ICN" }, { RESSMALL, "RESSMALL.ICN" },
153 { R_FLAG32, "R-FLAG32.ICN" }, { ROAD, "ROAD.ICN" }, { ROC, "ROC.ICN" }, { ROGUE, "ROGUE.ICN" }, { ROUTE, "ROUTE.ICN" },
154 { SCENIBKG, "SCENIBKG.ICN" }, { SCROLL2, "SCROLL2.ICN" }, { SCROLLCN, "SCROLLCN.ICN" }, { SCROLLE, "SCROLLE.ICN" }, { SCROLL, "SCROLL.ICN" },
155 { SECSKILL, "SECSKILL.ICN" }, { SHADOW32, "SHADOW32.ICN" }, { SHIELD, "SHIELD.ICN" }, { SHNGANIM, "SHNGANIM.ICN" }, { SKELETON, "SKELETON.ICN" },
156 { SMALCLOD, "SMALCLOD.ICN" }, { SMALFONT, "SMALFONT.ICN" }, { SMALLBAR, "SMALLBAR.ICN" }, { SORC32, "SORC32.ICN" }, { SPANBKGE, "SPANBKGE.ICN" },
157 { SPANBKG, "SPANBKG.ICN" }, { SPANBTNE, "SPANBTNE.ICN" }, { SPANBTN, "SPANBTN.ICN" }, { SPANEL, "SPANEL.ICN" }, { SPARKS, "SPARKS.ICN" },
158 { SPELCO, "SPELCO.ICN" }, { SPELLINF, "SPELLINF.ICN" }, { SPELLINL, "SPELLINL.ICN" }, { SPELLS, "SPELLS.ICN" }, { SPRITE, "SPRITE.ICN" },
159 { STELSKIN, "STELSKIN.ICN" }, { STONBACK, "STONBACK.ICN" }, { STONBAKE, "STONBAKE.ICN" }, { STONEBAK, "STONEBAK.ICN" }, { STONEBK2, "STONEBK2.ICN" },
160 { STONSKIN, "STONSKIN.ICN" }, { STORM, "STORM.ICN" }, { STREAM, "STREAM.ICN" }, { STRIP, "STRIP.ICN" }, { SUNMOONE, "SUNMOONE.ICN" },
161 { SUNMOON, "SUNMOON.ICN" }, { SURDRBKE, "SURDRBKE.ICN" }, { SURDRBKG, "SURDRBKG.ICN" }, { SURRENDE, "SURRENDE.ICN" }, { SURRENDR, "SURRENDR.ICN" },
162 { SWAPBTN, "SWAPBTN.ICN" }, { SWAPWIN, "SWAPWIN.ICN" }, { SWORDSM2, "SWORDSM2.ICN" }, { SWORDSMN, "SWORDSMN.ICN" }, { SYSTEME, "SYSTEME.ICN" },
163 { SYSTEM, "SYSTEM.ICN" }, { TAVWIN, "TAVWIN.ICN" }, { TENT, "TENT.ICN" }, { TERRAINS, "TERRAINS.ICN" }, { TEXTBACK, "TEXTBACK.ICN" },
164 { TEXTBAK2, "TEXTBAK2.ICN" }, { TEXTBAR, "TEXTBAR.ICN" }, { TITANBLA, "TITANBLA.ICN" }, { TITANBLU, "TITANBLU.ICN" }, { TITANMSL, "TITANMSL.ICN" },
165 { TOWNBKG0, "TOWNBKG0.ICN" }, { TOWNBKG1, "TOWNBKG1.ICN" }, { TOWNBKG2, "TOWNBKG2.ICN" }, { TOWNBKG3, "TOWNBKG3.ICN" }, { TOWNBKG4, "TOWNBKG4.ICN" },
166 { TOWNBKG5, "TOWNBKG5.ICN" }, { TOWNFIX, "TOWNFIX.ICN" }, { TOWNNAME, "TOWNNAME.ICN" }, { TOWNWIND, "TOWNWIND.ICN" }, { TRADPOSE, "TRADPOSE.ICN" },
167 { TRADPOST, "TRADPOST.ICN" }, { TREASURY, "TREASURY.ICN" }, { TREDECI, "TREDECI.ICN" }, { TREEVIL, "TREEVIL.ICN" }, { TREFALL, "TREFALL.ICN" },
168 { TREFIR, "TREFIR.ICN" }, { TREJNGL, "TREJNGL.ICN" }, { TRESNOW, "TRESNOW.ICN" }, { TROLL2, "TROLL2.ICN" }, { TROLL, "TROLL.ICN" },
169 { TROLLMSL, "TROLLMSL.ICN" }, { TWNBBOAT, "TWNBBOAT.ICN" }, { TWNBCAPT, "TWNBCAPT.ICN" }, { TWNBCSTL, "TWNBCSTL.ICN" }, { TWNBDOCK, "TWNBDOCK.ICN" },
170 { TWNBDW_0, "TWNBDW_0.ICN" }, { TWNBDW_1, "TWNBDW_1.ICN" }, { TWNBDW_2, "TWNBDW_2.ICN" }, { TWNBDW_3, "TWNBDW_3.ICN" }, { TWNBDW_4, "TWNBDW_4.ICN" },
171 { TWNBDW_5, "TWNBDW_5.ICN" }, { TWNBEXT0, "TWNBEXT0.ICN" }, { TWNBEXT1, "TWNBEXT1.ICN" }, { TWNBEXT2, "TWNBEXT2.ICN" }, { TWNBEXT3, "TWNBEXT3.ICN" },
172 { TWNBLTUR, "TWNBLTUR.ICN" }, { TWNBMAGE, "TWNBMAGE.ICN" }, { TWNBMARK, "TWNBMARK.ICN" }, { TWNBMOAT, "TWNBMOAT.ICN" }, { TWNBRTUR, "TWNBRTUR.ICN" },
173 { TWNBSPEC, "TWNBSPEC.ICN" }, { TWNBSTAT, "TWNBSTAT.ICN" }, { TWNBTENT, "TWNBTENT.ICN" }, { TWNBTHIE, "TWNBTHIE.ICN" }, { TWNBTVRN, "TWNBTVRN.ICN" },
174 { TWNBUP_1, "TWNBUP_1.ICN" }, { TWNBUP_3, "TWNBUP_3.ICN" }, { TWNBUP_4, "TWNBUP_4.ICN" }, { TWNBWEL2, "TWNBWEL2.ICN" }, { TWNBWELL, "TWNBWELL.ICN" },
175 { TWNKBOAT, "TWNKBOAT.ICN" }, { TWNKCAPT, "TWNKCAPT.ICN" }, { TWNKCSTL, "TWNKCSTL.ICN" }, { TWNKDOCK, "TWNKDOCK.ICN" }, { TWNKDW_0, "TWNKDW_0.ICN" },
176 { TWNKDW_1, "TWNKDW_1.ICN" }, { TWNKDW_2, "TWNKDW_2.ICN" }, { TWNKDW_3, "TWNKDW_3.ICN" }, { TWNKDW_4, "TWNKDW_4.ICN" }, { TWNKDW_5, "TWNKDW_5.ICN" },
177 { TWNKEXT0, "TWNKEXT0.ICN" }, { TWNKEXT1, "TWNKEXT1.ICN" }, { TWNKEXT2, "TWNKEXT2.ICN" }, { TWNKLTUR, "TWNKLTUR.ICN" }, { TWNKMAGE, "TWNKMAGE.ICN" },
178 { TWNKMARK, "TWNKMARK.ICN" }, { TWNKMOAT, "TWNKMOAT.ICN" }, { TWNKRTUR, "TWNKRTUR.ICN" }, { TWNKSPEC, "TWNKSPEC.ICN" }, { TWNKSTAT, "TWNKSTAT.ICN" },
179 { TWNKTENT, "TWNKTENT.ICN" }, { TWNKTHIE, "TWNKTHIE.ICN" }, { TWNKTVRN, "TWNKTVRN.ICN" }, { TWNKUP_1, "TWNKUP_1.ICN" }, { TWNKUP_2, "TWNKUP_2.ICN" },
180 { TWNKUP_3, "TWNKUP_3.ICN" }, { TWNKUP_4, "TWNKUP_4.ICN" }, { TWNKUP_5, "TWNKUP_5.ICN" }, { TWNKWEL2, "TWNKWEL2.ICN" }, { TWNKWELL, "TWNKWELL.ICN" },
181 { TWNNBOAT, "TWNNBOAT.ICN" }, { TWNNCAPT, "TWNNCAPT.ICN" }, { TWNNCSTL, "TWNNCSTL.ICN" }, { TWNNDOCK, "TWNNDOCK.ICN" }, { TWNNDW_0, "TWNNDW_0.ICN" },
182 { TWNNDW_1, "TWNNDW_1.ICN" }, { TWNNDW_2, "TWNNDW_2.ICN" }, { TWNNDW_3, "TWNNDW_3.ICN" }, { TWNNDW_4, "TWNNDW_4.ICN" }, { TWNNDW_5, "TWNNDW_5.ICN" },
183 { TWNNEXT0, "TWNNEXT0.ICN" }, { TWNNLTUR, "TWNNLTUR.ICN" }, { TWNNMAGE, "TWNNMAGE.ICN" }, { TWNNMARK, "TWNNMARK.ICN" }, { TWNNMOAT, "TWNNMOAT.ICN" },
184 { TWNNRTUR, "TWNNRTUR.ICN" }, { TWNNSPEC, "TWNNSPEC.ICN" }, { TWNNSTAT, "TWNNSTAT.ICN" }, { TWNNTENT, "TWNNTENT.ICN" }, { TWNNTHIE, "TWNNTHIE.ICN" },
185 { TWNNTVRN, "TWNNTVRN.ICN" }, { TWNNUP_1, "TWNNUP_1.ICN" }, { TWNNUP_2, "TWNNUP_2.ICN" }, { TWNNUP_3, "TWNNUP_3.ICN" }, { TWNNUP_4, "TWNNUP_4.ICN" },
186 { TWNNWEL2, "TWNNWEL2.ICN" }, { TWNNWELL, "TWNNWELL.ICN" }, { TWNSBOAT, "TWNSBOAT.ICN" }, { TWNSCAPT, "TWNSCAPT.ICN" }, { TWNSCSTL, "TWNSCSTL.ICN" },
187 { TWNSDOCK, "TWNSDOCK.ICN" }, { TWNSDW_0, "TWNSDW_0.ICN" }, { TWNSDW_1, "TWNSDW_1.ICN" }, { TWNSDW_2, "TWNSDW_2.ICN" }, { TWNSDW_3, "TWNSDW_3.ICN" },
188 { TWNSDW_4, "TWNSDW_4.ICN" }, { TWNSDW_5, "TWNSDW_5.ICN" }, { TWNSEXT0, "TWNSEXT0.ICN" }, { TWNSEXT1, "TWNSEXT1.ICN" }, { TWNSLTUR, "TWNSLTUR.ICN" },
189 { TWNSMAGE, "TWNSMAGE.ICN" }, { TWNSMARK, "TWNSMARK.ICN" }, { TWNSMOAT, "TWNSMOAT.ICN" }, { TWNSRTUR, "TWNSRTUR.ICN" }, { TWNSSPEC, "TWNSSPEC.ICN" },
190 { TWNSSTAT, "TWNSSTAT.ICN" }, { TWNSTENT, "TWNSTENT.ICN" }, { TWNSTHIE, "TWNSTHIE.ICN" }, { TWNSTVRN, "TWNSTVRN.ICN" }, { TWNSUP_1, "TWNSUP_1.ICN" },
191 { TWNSUP_2, "TWNSUP_2.ICN" }, { TWNSUP_3, "TWNSUP_3.ICN" }, { TWNSWEL2, "TWNSWEL2.ICN" }, { TWNSWELL, "TWNSWELL.ICN" }, { TWNWBOAT, "TWNWBOAT.ICN" },
192 { TWNWCAPT, "TWNWCAPT.ICN" }, { TWNWCSTL, "TWNWCSTL.ICN" }, { TWNWDOCK, "TWNWDOCK.ICN" }, { TWNWDW_0, "TWNWDW_0.ICN" }, { TWNWDW_1, "TWNWDW_1.ICN" },
193 { TWNWDW_2, "TWNWDW_2.ICN" }, { TWNWDW_3, "TWNWDW_3.ICN" }, { TWNWDW_4, "TWNWDW_4.ICN" }, { TWNWDW_5, "TWNWDW_5.ICN" }, { TWNWEXT0, "TWNWEXT0.ICN" },
194 { TWNWLTUR, "TWNWLTUR.ICN" }, { TWNWMAGE, "TWNWMAGE.ICN" }, { TWNWMARK, "TWNWMARK.ICN" }, { TWNWMOAT, "TWNWMOAT.ICN" }, { TWNWRTUR, "TWNWRTUR.ICN" },
195 { TWNWSPEC, "TWNWSPEC.ICN" }, { TWNWSTAT, "TWNWSTAT.ICN" }, { TWNWTENT, "TWNWTENT.ICN" }, { TWNWTHIE, "TWNWTHIE.ICN" }, { TWNWTVRN, "TWNWTVRN.ICN" },
196 { TWNWUP_3, "TWNWUP_3.ICN" }, { TWNWUP5B, "TWNWUP5B.ICN" }, { TWNWUP_5, "TWNWUP_5.ICN" }, { TWNWWEL2, "TWNWWEL2.ICN" }, { TWNWWELL, "TWNWWELL.ICN" },
197 { TWNZBOAT, "TWNZBOAT.ICN" }, { TWNZCAPT, "TWNZCAPT.ICN" }, { TWNZCSTL, "TWNZCSTL.ICN" }, { TWNZDOCK, "TWNZDOCK.ICN" }, { TWNZDW_0, "TWNZDW_0.ICN" },
198 { TWNZDW_1, "TWNZDW_1.ICN" }, { TWNZDW_2, "TWNZDW_2.ICN" }, { TWNZDW_3, "TWNZDW_3.ICN" }, { TWNZDW_4, "TWNZDW_4.ICN" }, { TWNZDW_5, "TWNZDW_5.ICN" },
199 { TWNZEXT0, "TWNZEXT0.ICN" }, { TWNZLTUR, "TWNZLTUR.ICN" }, { TWNZMAGE, "TWNZMAGE.ICN" }, { TWNZMARK, "TWNZMARK.ICN" }, { TWNZMOAT, "TWNZMOAT.ICN" },
200 { TWNZRTUR, "TWNZRTUR.ICN" }, { TWNZSPEC, "TWNZSPEC.ICN" }, { TWNZSTAT, "TWNZSTAT.ICN" }, { TWNZTENT, "TWNZTENT.ICN" }, { TWNZTHIE, "TWNZTHIE.ICN" },
201 { TWNZTVRN, "TWNZTVRN.ICN" }, { TWNZUP_2, "TWNZUP_2.ICN" }, { TWNZUP_4, "TWNZUP_4.ICN" }, { TWNZUP_5, "TWNZUP_5.ICN" }, { TWNZWEL2, "TWNZWEL2.ICN" },
202 { TWNZWELL, "TWNZWELL.ICN" }, { UNICORN, "UNICORN.ICN" }, { VAMPIRE2, "VAMPIRE2.ICN" }, { VAMPIRE, "VAMPIRE.ICN" }, { VGENBKGE, "VGENBKGE.ICN" },
203 { VGENBKG, "VGENBKG.ICN" }, { VIEW_ALL, "VIEW_ALL.ICN" }, { VIEWARME, "VIEWARME.ICN" }, { VIEWARMY, "VIEWARMY.ICN" }, { VIEWARSM, "VIEWARSM.ICN" },
204 { VIEWDDOR, "VIEWDDOR.ICN" }, { VIEWGEN, "VIEWGEN.ICN" }, { VIEWHROS, "VIEWHROS.ICN" }, { VIEWMINE, "VIEWMINE.ICN" }, { VIEWPUZL, "VIEWPUZL.ICN" },
205 { VIEWRSRC, "VIEWRSRC.ICN" }, { VIEWRTFX, "VIEWRTFX.ICN" }, { VIEWTWNS, "VIEWTWNS.ICN" }, { VIEWWRLD, "VIEWWRLD.ICN" }, { VWFLAG12, "VWFLAG12.ICN" },
206 { VWFLAG4, "VWFLAG4.ICN" }, { VWFLAG6, "VWFLAG6.ICN" }, { WELEM, "WELEM.ICN" }, { WELLBKG, "WELLBKG.ICN" }, { WELLXTRA, "WELLXTRA.ICN" },
207 { WINCMBBE, "WINCMBBE.ICN" }, { WINCMBTB, "WINCMBTB.ICN" }, { WINCMBT, "WINCMBT.ICN" }, { WINLOSEB, "WINLOSEB.ICN" }, { WINLOSEE, "WINLOSEE.ICN" },
208 { WINLOSE, "WINLOSE.ICN" }, { WOLF, "WOLF.ICN" }, { WRLK32, "WRLK32.ICN" }, { WZRD32, "WZRD32.ICN" }, { X_IVY, "X_IVY.ICN" },
209 { X_LOADCM, "X_LOADCM.ICN" }, { X_CMPBKG, "X_CMPBKG.ICN" }, { X_CMPBTN, "X_CMPBTN.ICN" }, { X_CMPEXT, "X_CMPEXT.ICN" }, { X_TRACK1, "X_TRACK1.ICN" },
210 { X_TRACK2, "X_TRACK2.ICN" }, { X_TRACK3, "X_TRACK3.ICN" }, { X_TRACK4, "X_TRACK4.ICN" }, { X_LOC1, "X_LOC1.ICN" }, { X_LOC2, "X_LOC2.ICN" },
211 { X_LOC3, "X_LOC3.ICN" }, { XPRIMARY, "XPRIMARY.ICN" }, { Y_BFLG32, "Y-BFLG32.ICN" }, { Y_FLAG32, "Y-FLAG32.ICN" }, { YINYANG, "YINYANG.ICN" },
212 { ZOMBIE2, "ZOMBIE2.ICN" }, { ZOMBIE, "ZOMBIE.ICN" } };
213 }
214
GetString(int icn)215 const char * ICN::GetString( int icn )
216 {
217 return UNKNOWN <= icn && icn < LAST_VALID_FILE_ICN ? icnmap[icn].string : "CUSTOM";
218 }
219
AnimationFrame(int icn,u32 start,u32 ticket,bool quantity)220 u32 ICN::AnimationFrame( int icn, u32 start, u32 ticket, bool quantity )
221 {
222 switch ( icn ) {
223 case TWNBBOAT:
224 case TWNKBOAT:
225 case TWNNBOAT:
226 case TWNSBOAT:
227 case TWNWBOAT:
228 case TWNZBOAT:
229 return 1 + ticket % 9;
230 case CMBTCAPB:
231 case CMBTCAPK:
232 case CMBTCAPN:
233 case CMBTCAPS:
234 case CMBTCAPW:
235 case CMBTCAPZ:
236 return 1 + ticket % 10;
237 case CMBTHROB:
238 return 1 + ticket % 18;
239 case CMBTHROK:
240 return 1 + ticket % 19;
241 case CMBTHRON:
242 return 1 + ticket % 19;
243 case CMBTHROS:
244 return 1 + ticket % 16;
245 case CMBTHROW:
246 return 1 + ticket % 16;
247 case CMBTHROZ:
248 return 1 + ticket % 18;
249 case HEROFL00:
250 case HEROFL01:
251 case HEROFL02:
252 case HEROFL03:
253 case HEROFL04:
254 case HEROFL05:
255 case HEROFL06:
256 return ticket % 5;
257 case TWNBDOCK:
258 case TWNKDOCK:
259 case TWNNDOCK:
260 case TWNSDOCK:
261 case TWNWDOCK:
262 case TWNZDOCK:
263 case TWNBEXT0:
264 case TWNKEXT0:
265 case TWNNEXT0:
266 case TWNSEXT0:
267 case TWNWEXT0:
268 case TWNZEXT0:
269 case TWNBCAPT:
270 case TWNBDW_3:
271 case TWNBDW_4:
272 case TWNBDW_5:
273 case TWNBEXT1:
274 case TWNBMOAT:
275 case TWNBUP_3:
276 case TWNBUP_4:
277 case TWNKCSTL:
278 case TWNKDW_0:
279 case TWNKLTUR:
280 case TWNKRTUR:
281 case TWNKTHIE:
282 case TWNKTVRN:
283 case TWNNCSTL:
284 case TWNNDW_2:
285 case TWNNUP_2:
286 case TWNSCAPT:
287 case TWNSCSTL:
288 case TWNSDW_0:
289 case TWNSDW_1:
290 case TWNSEXT1:
291 case TWNSTHIE:
292 case TWNSTVRN:
293 case TWNSUP_1:
294 case TWNSWEL2:
295 case TWNWCAPT:
296 case TWNWCSTL:
297 case TWNWMOAT:
298 case TWNZCSTL:
299 case TWNZDW_0:
300 case TWNZDW_2:
301 case TWNZTHIE:
302 case TWNZUP_2:
303 return 1 + ticket % 5;
304 case TWNBCSTL:
305 case TWNKDW_2:
306 case TWNKUP_2:
307 case TWNNDW_5:
308 case TWNNWEL2:
309 case TWNWDW_0:
310 case TWNWWEL2:
311 case TWNZTVRN:
312 return 1 + ticket % 6;
313 case TWNKDW_4:
314 case TWNKUP_4:
315 return 1 + ticket % 7;
316 case TAVWIN:
317 return 2 + ticket % 20;
318 case CMBTLOS1:
319 return 1 + ticket % 30;
320 case CMBTLOS2:
321 return 1 + ticket % 29;
322 case CMBTLOS3:
323 return 1 + ticket % 22;
324 case CMBTFLE1:
325 return 1 + ticket % 43;
326 case CMBTFLE2:
327 return 1 + ticket % 26;
328 case CMBTFLE3:
329 return 1 + ticket % 25;
330 case CMBTSURR:
331 return 1 + ticket % 20;
332 case WINCMBT:
333 return 1 + ticket % 20;
334 case MINIMON:
335 return start + 1 + ticket % 6;
336 case TWNNMAGE:
337 return start + 1 + ticket % 5;
338 case TWNBMAGE:
339 return 4 == start ? start + 1 + ticket % 8 : 0;
340 case SHNGANIM:
341 return 1 + ticket % 39;
342 case BTNSHNGL:
343 return start + ticket % 4;
344 case OBJNHAUN:
345 return ticket % 15;
346 case OBJNWATR:
347 switch ( start ) {
348 // buttle
349 case 0x00:
350 return start + ( ticket % 11 ) + 1;
351 // shadow
352 case 0x0C:
353 // chest
354 case 0x13:
355 // shadow
356 case 0x26:
357 // flotsam
358 case 0x2D:
359 // unkn
360 case 0x37:
361 // boat
362 case 0x3E:
363 // waves
364 case 0x45:
365 // seaweed
366 case 0x4C:
367 case 0x53:
368 case 0x5A:
369 case 0x61:
370 case 0x68:
371 // sailor-man
372 case 0x6F:
373 // shadow
374 case 0xBC:
375 // buoy
376 case 0xC3:
377 // broken ship (right)
378 case 0xE2:
379 case 0xE9:
380 case 0xF1:
381 case 0xF8:
382 return start + ( ticket % 6 ) + 1;
383 // seagull on stones
384 case 0x76:
385 case 0x86:
386 case 0x96:
387 case 0xA6:
388 return start + ( ticket % 15 ) + 1;
389 // whirlpool
390 case 0xCA:
391 case 0xCE:
392 case 0xD2:
393 case 0xD6:
394 case 0xDA:
395 case 0xDE:
396 return start + ( ticket % 3 ) + 1;
397 default:
398 return 0;
399 }
400 case OBJNWAT2:
401 switch ( start ) {
402 // sail broken ship (left)
403 case 0x03:
404 case 0x0C:
405 return start + ( ticket % 6 ) + 1;
406 default:
407 return 0;
408 }
409 case OBJNCRCK:
410 switch ( start ) {
411 // pool of oil
412 case 0x50:
413 case 0x5B:
414 case 0x66:
415 case 0x71:
416 case 0x7C:
417 case 0x89:
418 case 0x94:
419 case 0x9F:
420 case 0xAA:
421 // smoke from chimney
422 case 0xBE:
423 // shadow smoke
424 case 0xCA:
425 return start + ( ticket % 10 ) + 1;
426 default:
427 return 0;
428 }
429 case OBJNDIRT:
430 switch ( start ) {
431 // mill
432 case 0x99:
433 case 0x9D:
434 case 0xA1:
435 case 0xA5:
436 case 0xA9:
437 case 0xAD:
438 case 0xB1:
439 case 0xB5:
440 case 0xB9:
441 case 0xBD:
442 return start + ( ticket % 3 ) + 1;
443 default:
444 return 0;
445 }
446 case OBJNDSRT:
447 switch ( start ) {
448 // campfire
449 case 0x36:
450 case 0x3D:
451 return start + ( ticket % 6 ) + 1;
452 default:
453 return 0;
454 }
455 case OBJNGRA2:
456 switch ( start ) {
457 // mill
458 case 0x17:
459 case 0x1B:
460 case 0x1F:
461 case 0x23:
462 case 0x27:
463 case 0x2B:
464 case 0x2F:
465 case 0x33:
466 case 0x37:
467 case 0x3B:
468 return start + ( ticket % 3 ) + 1;
469 // smoke from chimney
470 case 0x3F:
471 case 0x46:
472 case 0x4D:
473 // archerhouse
474 case 0x54:
475 // smoke from chimney
476 case 0x5D:
477 case 0x64:
478 // shadow smoke
479 case 0x6B:
480 // peasanthunt
481 case 0x72:
482 return start + ( ticket % 6 ) + 1;
483 default:
484 return 0;
485 }
486 case OBJNLAV2:
487 switch ( start ) {
488 // middle volcano
489 case 0x00:
490 // shadow
491 case 0x07:
492 case 0x0E:
493 // lava
494 case 0x15:
495 return start + ( ticket % 6 ) + 1;
496 // small volcano
497 // shadow
498 case 0x21:
499 case 0x2C:
500 // lava
501 case 0x37:
502 case 0x43:
503 return start + ( ticket % 10 ) + 1;
504 default:
505 return 0;
506 }
507 case OBJNLAV3:
508 // big volcano
509 switch ( start ) {
510 // smoke
511 case 0x00:
512 case 0x0F:
513 case 0x1E:
514 case 0x2D:
515 case 0x3C:
516 case 0x4B:
517 case 0x5A:
518 case 0x69:
519 case 0x87:
520 case 0x96:
521 case 0xA5:
522 // shadow
523 case 0x78:
524 case 0xB4:
525 case 0xC3:
526 case 0xD2:
527 case 0xE1:
528 return start + ( ticket % 14 ) + 1;
529 default:
530 return 0;
531 }
532 case OBJNLAVA:
533 switch ( start ) {
534 // shadow of lava
535 case 0x4E:
536 case 0x58:
537 case 0x62:
538 return start + ( ticket % 9 ) + 1;
539 default:
540 return 0;
541 }
542 case OBJNMUL2:
543 switch ( start ) {
544 // lighthouse
545 case 0x3D:
546 return start + ( ticket % 9 ) + 1;
547 // alchemytower
548 case 0x1B:
549 // watermill
550 case 0x53:
551 case 0x5A:
552 case 0x62:
553 case 0x69:
554 // fire in wagoncamp
555 case 0x81:
556 // smoke smithy (2 chimney)
557 case 0xA6:
558 // smoke smithy (1 chimney)
559 case 0xAD:
560 // shadow smoke
561 case 0xB4:
562 return start + ( ticket % 6 ) + 1;
563 // magic garden
564 case 0xBE:
565 return quantity ? start + ( ticket % 6 ) + 1 : start + 7;
566 default:
567 return 0;
568 }
569 case OBJNMULT:
570 switch ( start ) {
571 // smoke
572 case 0x05:
573 // shadow
574 case 0x0F:
575 case 0x19:
576 return start + ( ticket % 9 ) + 1;
577 // smoke
578 case 0x24:
579 // shadow
580 case 0x2D:
581 return start + ( ticket % 8 ) + 1;
582 // smoke
583 case 0x5A:
584 // shadow
585 case 0x61:
586 case 0x68:
587 case 0x7C:
588 // campfire
589 case 0x83:
590 return start + ( ticket % 6 ) + 1;
591 default:
592 return 0;
593 }
594 case OBJNSNOW:
595 switch ( start ) {
596 // firecamp
597 case 0x04:
598 // alchemytower
599 case 0x97:
600 // watermill
601 case 0xA2:
602 case 0xA9:
603 case 0xB1:
604 case 0xB8:
605 return start + ( ticket % 6 ) + 1;
606 // mill
607 case 0x60:
608 case 0x64:
609 case 0x68:
610 case 0x6C:
611 case 0x70:
612 case 0x74:
613 case 0x78:
614 case 0x7C:
615 case 0x80:
616 case 0x84:
617 return start + ( ticket % 3 ) + 1;
618 default:
619 return 0;
620 }
621 case OBJNSWMP:
622 switch ( start ) {
623 // shadow
624 case 0x00:
625 case 0x0E:
626 case 0x2B:
627 // smoke
628 case 0x07:
629 case 0x22:
630 case 0x33:
631 // light in window
632 case 0x16:
633 case 0x3A:
634 case 0x43:
635 case 0x4A:
636 return start + ( ticket % 6 ) + 1;
637 default:
638 return 0;
639 }
640 // extra objects for loyalty version
641 case X_LOC1:
642 if ( Settings::Get().isPriceOfLoyaltySupported() )
643 switch ( start ) {
644 // alchemist tower
645 case 0x04:
646 case 0x0D:
647 case 0x16:
648 // arena
649 case 0x1F:
650 case 0x28:
651 case 0x32:
652 case 0x3B:
653 // earth altar
654 case 0x55:
655 case 0x5E:
656 case 0x67:
657 return start + ( ticket % 8 ) + 1;
658 default:
659 return 0;
660 }
661 break;
662 // extra objects for loyalty version
663 case X_LOC2:
664 if ( Settings::Get().isPriceOfLoyaltySupported() )
665 switch ( start ) {
666 // mermaid
667 case 0x0A:
668 case 0x13:
669 case 0x1C:
670 case 0x25:
671 // sirens
672 case 0x2F:
673 case 0x38:
674 case 0x41:
675 case 0x4A:
676 case 0x53:
677 case 0x5C:
678 case 0x66:
679 return start + ( ticket % 8 ) + 1;
680 default:
681 return 0;
682 }
683 break;
684
685 // extra objects for loyalty version
686 case X_LOC3:
687 if ( Settings::Get().isPriceOfLoyaltySupported() )
688 switch ( start ) {
689 // hut magi
690 case 0x00:
691 case 0x0A:
692 case 0x14:
693 // eye magi
694 case 0x20:
695 case 0x29:
696 case 0x32:
697 return start + ( ticket % 8 ) + 1;
698 // barrier
699 case 0x3C:
700 case 0x42:
701 case 0x48:
702 case 0x4E:
703 case 0x54:
704 case 0x5A:
705 case 0x60:
706 case 0x66:
707 return start + ( ticket % 4 ) + 1;
708 default:
709 return 0;
710 }
711 break;
712
713 default:
714 break;
715 }
716 return 0;
717 }
718
PORTxxxx(int heroId)719 int ICN::PORTxxxx( int heroId )
720 {
721 switch ( heroId ) {
722 case Heroes::LORDKILBURN:
723 return ICN::PORT0000;
724 case Heroes::SIRGALLANTH:
725 return ICN::PORT0001;
726 case Heroes::ECTOR:
727 return ICN::PORT0002;
728 case Heroes::GVENNETH:
729 return ICN::PORT0003;
730 case Heroes::TYRO:
731 return ICN::PORT0004;
732 case Heroes::AMBROSE:
733 return ICN::PORT0005;
734 case Heroes::RUBY:
735 return ICN::PORT0006;
736 case Heroes::MAXIMUS:
737 return ICN::PORT0007;
738 case Heroes::DIMITRY:
739 return ICN::PORT0008;
740 case Heroes::THUNDAX:
741 return ICN::PORT0009;
742 case Heroes::FINEOUS:
743 return ICN::PORT0010;
744 case Heroes::JOJOSH:
745 return ICN::PORT0011;
746 case Heroes::CRAGHACK:
747 return ICN::PORT0012;
748 case Heroes::JEZEBEL:
749 return ICN::PORT0013;
750 case Heroes::JACLYN:
751 return ICN::PORT0014;
752 case Heroes::ERGON:
753 return ICN::PORT0015;
754 case Heroes::TSABU:
755 return ICN::PORT0016;
756 case Heroes::ATLAS:
757 return ICN::PORT0017;
758 case Heroes::ASTRA:
759 return ICN::PORT0018;
760 case Heroes::NATASHA:
761 return ICN::PORT0019;
762 case Heroes::TROYAN:
763 return ICN::PORT0020;
764 case Heroes::VATAWNA:
765 return ICN::PORT0021;
766 case Heroes::REBECCA:
767 return ICN::PORT0022;
768 case Heroes::GEM:
769 return ICN::PORT0023;
770 case Heroes::ARIEL:
771 return ICN::PORT0024;
772 case Heroes::CARLAWN:
773 return ICN::PORT0025;
774 case Heroes::LUNA:
775 return ICN::PORT0026;
776 case Heroes::ARIE:
777 return ICN::PORT0027;
778 case Heroes::ALAMAR:
779 return ICN::PORT0028;
780 case Heroes::VESPER:
781 return ICN::PORT0029;
782 case Heroes::CRODO:
783 return ICN::PORT0030;
784 case Heroes::BAROK:
785 return ICN::PORT0031;
786 case Heroes::KASTORE:
787 return ICN::PORT0032;
788 case Heroes::AGAR:
789 return ICN::PORT0033;
790 case Heroes::FALAGAR:
791 return ICN::PORT0034;
792 case Heroes::WRATHMONT:
793 return ICN::PORT0035;
794 case Heroes::MYRA:
795 return ICN::PORT0036;
796 case Heroes::FLINT:
797 return ICN::PORT0037;
798 case Heroes::DAWN:
799 return ICN::PORT0038;
800 case Heroes::HALON:
801 return ICN::PORT0039;
802 case Heroes::MYRINI:
803 return ICN::PORT0040;
804 case Heroes::WILFREY:
805 return ICN::PORT0041;
806 case Heroes::SARAKIN:
807 return ICN::PORT0042;
808 case Heroes::KALINDRA:
809 return ICN::PORT0043;
810 case Heroes::MANDIGAL:
811 return ICN::PORT0044;
812 case Heroes::ZOM:
813 return ICN::PORT0045;
814 case Heroes::DARLANA:
815 return ICN::PORT0046;
816 case Heroes::ZAM:
817 return ICN::PORT0047;
818 case Heroes::RANLOO:
819 return ICN::PORT0048;
820 case Heroes::CHARITY:
821 return ICN::PORT0049;
822 case Heroes::RIALDO:
823 return ICN::PORT0050;
824 case Heroes::ROXANA:
825 return ICN::PORT0051;
826 case Heroes::SANDRO:
827 return ICN::PORT0052;
828 case Heroes::CELIA:
829 return ICN::PORT0053;
830 case Heroes::ROLAND:
831 return ICN::PORT0054;
832 case Heroes::CORLAGON:
833 return ICN::PORT0055;
834 case Heroes::ELIZA:
835 return ICN::PORT0056;
836 case Heroes::ARCHIBALD:
837 return ICN::PORT0057;
838 case Heroes::HALTON:
839 return ICN::PORT0058;
840 case Heroes::BAX:
841 return ICN::PORT0059;
842
843 case Heroes::SOLMYR:
844 return ICN::PORT0060;
845 case Heroes::DAINWIN:
846 return ICN::PORT0061;
847 case Heroes::MOG:
848 return ICN::PORT0062;
849 case Heroes::UNCLEIVAN:
850 return ICN::PORT0063;
851 case Heroes::JOSEPH:
852 return ICN::PORT0064;
853 case Heroes::GALLAVANT:
854 return ICN::PORT0065;
855 case Heroes::ELDERIAN:
856 return ICN::PORT0066;
857 case Heroes::CEALLACH:
858 return ICN::PORT0067;
859 case Heroes::DRAKONIA:
860 return ICN::PORT0068;
861 case Heroes::MARTINE:
862 return ICN::PORT0069;
863 case Heroes::JARKONAS:
864 return ICN::PORT0070;
865
866 case Heroes::DEBUG_HERO:
867 return ICN::PORT0059;
868
869 default:
870 break;
871 }
872
873 return ICN::UNKNOWN;
874 }
875
HighlyObjectSprite(int icn,u32 index)876 bool ICN::HighlyObjectSprite( int icn, u32 index )
877 {
878 switch ( icn ) {
879 case OBJNDIRT:
880 // wind mill
881 if ( 154 <= index && index <= 160 )
882 return true;
883 break;
884
885 case OBJNGRA2:
886 // wind mill
887 if ( 24 <= index && index <= 30 )
888 return true;
889 break;
890
891 case OBJNLAV2:
892 case OBJNLAV3:
893 // fog lava
894 return true;
895
896 case OBJNMUL2:
897 // dragon city
898 if ( 35 == index || 37 == index || 38 == index || 40 == index || 41 == index )
899 return true;
900 // ligth
901 if ( 59 == index )
902 return true;
903 // water mill
904 if ( 82 == index )
905 return true;
906 break;
907
908 case OBJNMULT:
909 // fort
910 if ( 36 <= index && index <= 44 )
911 return true;
912 // tree
913 if ( 117 == index || 118 == index )
914 return true;
915 break;
916
917 case OBJNSNOW:
918 // wind mill
919 if ( 97 <= index && index <= 103 )
920 return true;
921 // water mill
922 if ( 161 == index )
923 return true;
924 break;
925
926 case OBJNSWMP:
927 //
928 if ( 35 <= index && index <= 42 )
929 return true;
930 break;
931
932 case OBJNTOWN:
933 if ( 1 <= index && index <= 5 )
934 return true;
935 if ( 32 <= index && index <= 37 )
936 return true;
937 if ( 64 <= index && index <= 69 )
938 return true;
939 if ( 96 <= index && index <= 101 )
940 return true;
941 if ( 128 <= index && index <= 133 )
942 return true;
943 if ( 160 <= index && index <= 165 )
944 return true;
945 break;
946
947 default:
948 break;
949 }
950 return false;
951 }
952
Get4Captain(int race)953 int ICN::Get4Captain( int race )
954 {
955 switch ( race ) {
956 case Race::BARB:
957 return CSTLCAPB;
958 case Race::KNGT:
959 return CSTLCAPK;
960 case Race::NECR:
961 return CSTLCAPN;
962 case Race::SORC:
963 return CSTLCAPS;
964 case Race::WRLK:
965 return CSTLCAPW;
966 case Race::WZRD:
967 return CSTLCAPZ;
968 default:
969 break;
970 }
971
972 return UNKNOWN;
973 }
974
Get4Building(int race)975 int ICN::Get4Building( int race )
976 {
977 switch ( race ) {
978 case Race::BARB:
979 return CSTLBARB;
980 case Race::KNGT:
981 return CSTLKNGT;
982 case Race::NECR:
983 return CSTLNECR;
984 case Race::SORC:
985 return CSTLSORC;
986 case Race::WRLK:
987 return CSTLWRLK;
988 case Race::WZRD:
989 return CSTLWZRD;
990 default:
991 break;
992 }
993
994 return UNKNOWN;
995 }
996
Get4Castle(int race)997 int ICN::Get4Castle( int race )
998 {
999 switch ( race ) {
1000 case Race::BARB:
1001 return CASTLEB;
1002 case Race::KNGT:
1003 return CASTLEK;
1004 case Race::NECR:
1005 return CASTLEN;
1006 case Race::SORC:
1007 return CASTLES;
1008 case Race::WRLK:
1009 return CASTLEW;
1010 case Race::WZRD:
1011 return CASTLEZ;
1012 default:
1013 break;
1014 }
1015
1016 return UNKNOWN;
1017 }
1018
GetFlagIcnId(int color)1019 int ICN::GetFlagIcnId( int color )
1020 {
1021 switch ( color ) {
1022 case Color::BLUE:
1023 return ICN::HEROFL00;
1024 case Color::GREEN:
1025 return ICN::HEROFL01;
1026 case Color::RED:
1027 return ICN::HEROFL02;
1028 case Color::YELLOW:
1029 return ICN::HEROFL03;
1030 case Color::ORANGE:
1031 return ICN::HEROFL04;
1032 case Color::PURPLE:
1033 return ICN::HEROFL05;
1034 default:
1035 return ICN::HEROFL06;
1036 }
1037 }
1038