Commit aabd2f7bb1481c30c85c4b5d4296e4124b10ef24

Authored by Imanol-Mikel Barba Sabariego
1 parent 27780d01

WIP. Missing Quest data, Waypoint data, NPC Introductions, Character stats, Character skills, items

d2char.c
1 1 #include "d2char.h"
2   -#include <stdlib.h>
  2 +#include "d2skills.h"
  3 +#include "d2mercs.h"
  4 +#include <stdio.h>
3 5  
4 6 uint32_t calcChecksum(D2CharHeader* c, void* charData) {
5 7 uint32_t origChecksum = c->checksum;
... ... @@ -51,7 +53,6 @@ int isFemale(D2CharHeader* c) {
51 53 c->charClass == D2S_CHARCLASS_SORCERESS);
52 54 }
53 55  
54   -// Returns static string from library memory, no need to free
55 56 const char* getCharacterTitle(D2CharHeader* c) {
56 57 int tier;
57 58 if(isExpansion(c)) {
... ... @@ -126,4 +127,34 @@ const char* getCharacterTitle(D2CharHeader* c) {
126 127 }
127 128 }
128 129 }
  130 +}
  131 +
  132 +size_t getLastPlayed(D2CharHeader* c, char* buf, size_t bufLen) {
  133 + struct tm* time = localtime(&(c->lastPlayed));
  134 + size_t ret = strftime(buf, bufLen, "%c", time);
  135 + if(!ret) {
  136 + fprintf(stderr,"libd2char error: Provided buffer for time string was too small\n");
  137 + }
  138 + return ret;
  139 +}
  140 +
  141 +const char* getSkillName(int skillID) {
  142 + return skills[skillID];
  143 +}
  144 +
  145 +int getCurrentDifficulty(D2CharHeader* c) {
  146 + for(int i = D2S_DIFFICULTY_NORMAL; i <= D2S_DIFFICULTY_HELL; ++i) {
  147 + if(c->difficulty[i] & D2S_DIFFICULTY_ACTIVE) {
  148 + return i;
  149 + }
  150 + }
  151 + return D2S_DIFFICULTY_UNKNOWN;
  152 +}
  153 +
  154 +const char* getMercName(D2CharHeader* c) {
  155 + return getMercNameTableEntry(c->mercenaryType, c->mercenaryNameID);
  156 +}
  157 +
  158 +const char* getMercType(D2CharHeader* c) {
  159 + return mercTypes[c->mercenaryType];
129 160 }
130 161 \ No newline at end of file
... ...
d2char.h
... ... @@ -2,6 +2,7 @@
2 2 #define D2CHAR_H
3 3  
4 4 #include <stdint.h>
  5 +#include <stdlib.h>
5 6 #include "d2strings.h"
6 7  
7 8 #define D2S_HEADER_LENGTH 765
... ... @@ -21,7 +22,13 @@
21 22 #define D2S_CHARSTATUS_EXPANSION 0x20
22 23 #define D2S_CHARSTATUS_LADDER 0x40
23 24  
24   -enum D2Version {
  25 +#define D2S_DIFFICULTY_ACTIVE 0x80
  26 +#define D2S_DIFFICULTY_NORMAL 0
  27 +#define D2S_DIFFICULTY_NIGHTMARE 1
  28 +#define D2S_DIFFICULTY_HELL 2
  29 +#define D2S_DIFFICULTY_UNKNOWN -1
  30 +
  31 +enum D2S_VERSION {
25 32 VER_106 = 71,
26 33 VER_107 = 87,
27 34 VER_108XP = 87,
... ... @@ -30,17 +37,17 @@ enum D2Version {
30 37 VER_110 = 96
31 38 };
32 39  
33   -enum D2CharClass {
34   - D2S_CHARCLASS_AMAZON = 0x00,
35   - D2S_CHARCLASS_SORCERESS = 0x01,
36   - D2S_CHARCLASS_NECROMANCER = 0x02,
37   - D2S_CHARCLASS_PALADIN = 0x03,
38   - D2S_CHARCLASS_BARBARIAN = 0x04,
39   - D2S_CHARCLASS_DRUID = 0x05,
40   - D2S_CHARCLASS_ASSASSIN = 0x06
  40 +enum D2S_CHARCLASS {
  41 + D2S_CHARCLASS_AMAZON = 0,
  42 + D2S_CHARCLASS_SORCERESS = 1,
  43 + D2S_CHARCLASS_NECROMANCER = 2,
  44 + D2S_CHARCLASS_PALADIN = 3,
  45 + D2S_CHARCLASS_BARBARIAN = 4,
  46 + D2S_CHARCLASS_DRUID = 5,
  47 + D2S_CHARCLASS_ASSASSIN = 6
41 48 };
42 49  
43   -enum D2Acts {
  50 +enum D2S_ACT {
44 51 D2S_ACT1 = 0,
45 52 D2S_ACT2 = 1,
46 53 D2S_ACT3 = 2,
... ... @@ -53,7 +60,7 @@ typedef struct __attribute__((packed)){
53 60 uint32_t versionID;
54 61 uint32_t fileSize;
55 62 uint32_t checksum;
56   - uint32_t activeWeapon; // TODO
  63 + uint32_t activeWeapon; // Determines which weapon set (I or II in inventory) is currently in use
57 64 char name[D2S_CHARNAME_LENGTH];
58 65 uint8_t charStatus;
59 66 uint8_t charProgress;
... ... @@ -64,24 +71,24 @@ typedef struct __attribute__((packed)){
64 71 uint32_t unknown3; // TODO
65 72 uint32_t lastPlayed;
66 73 uint32_t unknown4; // TODO
67   - uint8_t hotkeys[D2S_HOTKEYS_LENGTH];
  74 + uint8_t hotkeys[D2S_HOTKEYS_LENGTH]; // Not implemented. Too bad!
68 75 uint32_t leftAbility;
69 76 uint32_t rightAbility;
70   - uint32_t leftAbilityAlt;
71   - uint32_t rightAbilityAlt;
72   - uint8_t charAppearance[D2S_CHAR_APPEARANCE_LENGTH];
  77 + uint32_t leftAbilityAlt; // Left ability when alternative weapon set (II) is selected
  78 + uint32_t rightAbilityAlt; // Right ability when alternative weapon set (II) is selected
  79 + uint8_t charAppearance[D2S_CHAR_APPEARANCE_LENGTH]; // Not implemented. Too bad!
73 80 uint8_t difficulty[D2S_DIFFICULTY_LENGTH];
74   - uint32_t mapID;
75   - uint16_t unknown5;
76   - uint16_t mercenaryStatus;
  81 + uint32_t mapID; // Not implemented. Too bad!
  82 + uint16_t unknown5; // TODO
  83 + uint16_t mercenaryDead;
77 84 uint32_t mercenarySeed;
78 85 uint16_t mercenaryNameID;
79 86 uint16_t mercenaryType;
80 87 uint32_t mercenaryExp;
81   - uint8_t unknown6[144];
  88 + uint8_t unknown6[144]; // TODO
82 89 uint8_t questData[D2S_QUESTS_LENGTH];
83 90 uint8_t waypointData[D2S_WAYPOINTS_LENGTH];
84   - uint8_t NPCIntroductions[D2S_NPCDATA_LENGTH]; // TODO
  91 + uint8_t NPCIntroductions[D2S_NPCDATA_LENGTH]; // Not implemented. (Yet)
85 92 } D2CharHeader;
86 93  
87 94 uint32_t calcChecksum(D2CharHeader* c, void* charData);
... ... @@ -91,4 +98,27 @@ int hasDied(D2CharHeader* c);
91 98 int isExpansion(D2CharHeader* c);
92 99 int isLadder(D2CharHeader* c);
93 100  
  101 +// 0 = Act I, 4 = Act V (Expansion)
  102 +int getCurrentAct(D2CharHeader* c);
  103 +
  104 +int isFemale(D2CharHeader* c);
  105 +
  106 +// Returns static string from library memory, no need to free
  107 +const char* getCharacterTitle(D2CharHeader* c);
  108 +
  109 +// Writes to user-allocated string. Format is default locale's time representation
  110 +size_t getLastPlayed(D2CharHeader* c, char* buf, size_t bufLen);
  111 +
  112 +// Returns static string from library memory, no need to free
  113 +const char* getSkillName(int skillID);
  114 +
  115 +// 0 = Normal, 2 = Hell
  116 +int getCurrentDifficulty(D2CharHeader* c);
  117 +
  118 +// Returns static string from library memory, no need to free
  119 +const char* getMercName(D2CharHeader* c);
  120 +
  121 +// Returns static string from library memory, no need to free
  122 +const char* getMercType(D2CharHeader* c);
  123 +
94 124 #endif
95 125 \ No newline at end of file
... ...
d2mercs.c 0 โ†’ 100644
  1 +#include "d2mercs.h"
  2 +
  3 +int _getMercType(int mercID) {
  4 + if(mercID >= 0 && mercID <= 5) {
  5 + return D2S_MERCTYPE_ROGUE;
  6 + } else if(mercID >= 6 && mercID <= 14) {
  7 + return D2S_MERCTYPE_DESERT;
  8 + } else if(mercID >= 15 && mercID <= 23) {
  9 + return D2S_MERCTYPE_SORCEROR;
  10 + } else if(mercID >= 24 && mercID <= 29) {
  11 + return D2S_MERCTYPE_BARBARIAN;
  12 + } else {
  13 + return D2S_MERCTYPE_UNKNOWN;
  14 + }
  15 +}
  16 +
  17 +const char* _getMercName(int mercID, int mercNameID) {
  18 + int offset = getMercType(mercID);
  19 + return mercNames[mercNameID + offset];
  20 +}
0 21 \ No newline at end of file
... ...
d2mercs.h 0 โ†’ 100644
  1 +#ifndef D2MERCS_H
  2 +#define D2MERCS_H
  3 +
  4 +#include "d2strings.h"
  5 +
  6 +// The values here are the offsets of each merc's names in the table.
  7 +// i.e: Merc names from pos 41 to 61 are Desert mercs
  8 +//
  9 +// We use these values as offsets later to get the correct name using the relative ID the game provides
  10 +enum D2S_MERCTYPES {
  11 + D2S_MERCTYPE_UNKNOWN = -1,
  12 + D2S_MERCTYPE_ROGUE = 0,
  13 + D2S_MERCTYPE_DESERT = 41,
  14 + D2S_MERCTYPE_SORCEROR = 62,
  15 + D2S_MERCTYPE_BARBARIAN = 82
  16 +};
  17 +
  18 +const char* const mercTypes[] = {
  19 + D2S_MERC_ID_0,
  20 + D2S_MERC_ID_1,
  21 + D2S_MERC_ID_2,
  22 + D2S_MERC_ID_3,
  23 + D2S_MERC_ID_4,
  24 + D2S_MERC_ID_5,
  25 + D2S_MERC_ID_6,
  26 + D2S_MERC_ID_7,
  27 + D2S_MERC_ID_8,
  28 + D2S_MERC_ID_9,
  29 + D2S_MERC_ID_10,
  30 + D2S_MERC_ID_11,
  31 + D2S_MERC_ID_12,
  32 + D2S_MERC_ID_13,
  33 + D2S_MERC_ID_14,
  34 + D2S_MERC_ID_15,
  35 + D2S_MERC_ID_16,
  36 + D2S_MERC_ID_17,
  37 + D2S_MERC_ID_18,
  38 + D2S_MERC_ID_19,
  39 + D2S_MERC_ID_20,
  40 + D2S_MERC_ID_21,
  41 + D2S_MERC_ID_22,
  42 + D2S_MERC_ID_23,
  43 + D2S_MERC_ID_24,
  44 + D2S_MERC_ID_25,
  45 + D2S_MERC_ID_26,
  46 + D2S_MERC_ID_27,
  47 + D2S_MERC_ID_28,
  48 + D2S_MERC_ID_29
  49 +};
  50 +
  51 +const char* const mercNames[] = {
  52 + D2S_MERC_NAME_0,
  53 + D2S_MERC_NAME_1,
  54 + D2S_MERC_NAME_2,
  55 + D2S_MERC_NAME_3,
  56 + D2S_MERC_NAME_4,
  57 + D2S_MERC_NAME_5,
  58 + D2S_MERC_NAME_6,
  59 + D2S_MERC_NAME_7,
  60 + D2S_MERC_NAME_8,
  61 + D2S_MERC_NAME_9,
  62 + D2S_MERC_NAME_10,
  63 + D2S_MERC_NAME_11,
  64 + D2S_MERC_NAME_12,
  65 + D2S_MERC_NAME_13,
  66 + D2S_MERC_NAME_14,
  67 + D2S_MERC_NAME_15,
  68 + D2S_MERC_NAME_16,
  69 + D2S_MERC_NAME_17,
  70 + D2S_MERC_NAME_18,
  71 + D2S_MERC_NAME_19,
  72 + D2S_MERC_NAME_20,
  73 + D2S_MERC_NAME_21,
  74 + D2S_MERC_NAME_22,
  75 + D2S_MERC_NAME_23,
  76 + D2S_MERC_NAME_24,
  77 + D2S_MERC_NAME_25,
  78 + D2S_MERC_NAME_26,
  79 + D2S_MERC_NAME_27,
  80 + D2S_MERC_NAME_28,
  81 + D2S_MERC_NAME_29,
  82 + D2S_MERC_NAME_30,
  83 + D2S_MERC_NAME_31,
  84 + D2S_MERC_NAME_32,
  85 + D2S_MERC_NAME_33,
  86 + D2S_MERC_NAME_34,
  87 + D2S_MERC_NAME_35,
  88 + D2S_MERC_NAME_36,
  89 + D2S_MERC_NAME_37,
  90 + D2S_MERC_NAME_38,
  91 + D2S_MERC_NAME_39,
  92 + D2S_MERC_NAME_40,
  93 + D2S_MERC_NAME_41,
  94 + D2S_MERC_NAME_42,
  95 + D2S_MERC_NAME_43,
  96 + D2S_MERC_NAME_44,
  97 + D2S_MERC_NAME_45,
  98 + D2S_MERC_NAME_46,
  99 + D2S_MERC_NAME_47,
  100 + D2S_MERC_NAME_48,
  101 + D2S_MERC_NAME_49,
  102 + D2S_MERC_NAME_50,
  103 + D2S_MERC_NAME_51,
  104 + D2S_MERC_NAME_52,
  105 + D2S_MERC_NAME_53,
  106 + D2S_MERC_NAME_54,
  107 + D2S_MERC_NAME_55,
  108 + D2S_MERC_NAME_56,
  109 + D2S_MERC_NAME_57,
  110 + D2S_MERC_NAME_58,
  111 + D2S_MERC_NAME_59,
  112 + D2S_MERC_NAME_60,
  113 + D2S_MERC_NAME_61,
  114 + D2S_MERC_NAME_62,
  115 + D2S_MERC_NAME_63,
  116 + D2S_MERC_NAME_64,
  117 + D2S_MERC_NAME_65,
  118 + D2S_MERC_NAME_66,
  119 + D2S_MERC_NAME_67,
  120 + D2S_MERC_NAME_68,
  121 + D2S_MERC_NAME_69,
  122 + D2S_MERC_NAME_70,
  123 + D2S_MERC_NAME_71,
  124 + D2S_MERC_NAME_72,
  125 + D2S_MERC_NAME_73,
  126 + D2S_MERC_NAME_74,
  127 + D2S_MERC_NAME_75,
  128 + D2S_MERC_NAME_76,
  129 + D2S_MERC_NAME_77,
  130 + D2S_MERC_NAME_78,
  131 + D2S_MERC_NAME_79,
  132 + D2S_MERC_NAME_80,
  133 + D2S_MERC_NAME_81,
  134 + D2S_MERC_NAME_82,
  135 + D2S_MERC_NAME_83,
  136 + D2S_MERC_NAME_84,
  137 + D2S_MERC_NAME_85,
  138 + D2S_MERC_NAME_86,
  139 + D2S_MERC_NAME_87,
  140 + D2S_MERC_NAME_88,
  141 + D2S_MERC_NAME_89,
  142 + D2S_MERC_NAME_90,
  143 + D2S_MERC_NAME_91,
  144 + D2S_MERC_NAME_92,
  145 + D2S_MERC_NAME_93,
  146 + D2S_MERC_NAME_94,
  147 + D2S_MERC_NAME_95,
  148 + D2S_MERC_NAME_96,
  149 + D2S_MERC_NAME_97,
  150 + D2S_MERC_NAME_98,
  151 + D2S_MERC_NAME_99,
  152 + D2S_MERC_NAME_100,
  153 + D2S_MERC_NAME_101,
  154 + D2S_MERC_NAME_102,
  155 + D2S_MERC_NAME_103,
  156 + D2S_MERC_NAME_104,
  157 + D2S_MERC_NAME_105,
  158 + D2S_MERC_NAME_106,
  159 + D2S_MERC_NAME_107,
  160 + D2S_MERC_NAME_108,
  161 + D2S_MERC_NAME_109,
  162 + D2S_MERC_NAME_110,
  163 + D2S_MERC_NAME_111,
  164 + D2S_MERC_NAME_112,
  165 + D2S_MERC_NAME_113,
  166 + D2S_MERC_NAME_114,
  167 + D2S_MERC_NAME_115,
  168 + D2S_MERC_NAME_116,
  169 + D2S_MERC_NAME_117,
  170 + D2S_MERC_NAME_118,
  171 + D2S_MERC_NAME_119,
  172 + D2S_MERC_NAME_120,
  173 + D2S_MERC_NAME_121,
  174 + D2S_MERC_NAME_122,
  175 + D2S_MERC_NAME_123,
  176 + D2S_MERC_NAME_124,
  177 + D2S_MERC_NAME_125,
  178 + D2S_MERC_NAME_126,
  179 + D2S_MERC_NAME_127,
  180 + D2S_MERC_NAME_128,
  181 + D2S_MERC_NAME_129,
  182 + D2S_MERC_NAME_130,
  183 + D2S_MERC_NAME_131,
  184 + D2S_MERC_NAME_132,
  185 + D2S_MERC_NAME_133,
  186 + D2S_MERC_NAME_134,
  187 + D2S_MERC_NAME_135,
  188 + D2S_MERC_NAME_136,
  189 + D2S_MERC_NAME_137,
  190 + D2S_MERC_NAME_138,
  191 + D2S_MERC_NAME_139,
  192 + D2S_MERC_NAME_140,
  193 + D2S_MERC_NAME_141,
  194 + D2S_MERC_NAME_142,
  195 + D2S_MERC_NAME_143,
  196 + D2S_MERC_NAME_144,
  197 + D2S_MERC_NAME_145,
  198 + D2S_MERC_NAME_146,
  199 + D2S_MERC_NAME_147,
  200 + D2S_MERC_NAME_148
  201 +};
  202 +
  203 +int _getMercType(int mercID);
  204 +const char* _getMercName(int mercID, int mercNameID);
  205 +
  206 +#endif
0 207 \ No newline at end of file
... ...
d2skills.h 0 โ†’ 100644
  1 +#ifndef D2SKILLS_H
  2 +#define D2SKILLS_H
  3 +
  4 +#include <stdint.h>
  5 +#include "d2strings.h"
  6 +
  7 +const char* const skills[] = {
  8 + D2S_SKILL_0,
  9 + D2S_SKILL_1,
  10 + D2S_SKILL_2,
  11 + D2S_SKILL_3,
  12 + D2S_SKILL_4,
  13 + D2S_SKILL_5,
  14 + D2S_SKILL_6,
  15 + D2S_SKILL_7,
  16 + D2S_SKILL_8,
  17 + D2S_SKILL_9,
  18 + D2S_SKILL_10,
  19 + D2S_SKILL_11,
  20 + D2S_SKILL_12,
  21 + D2S_SKILL_13,
  22 + D2S_SKILL_14,
  23 + D2S_SKILL_15,
  24 + D2S_SKILL_16,
  25 + D2S_SKILL_17,
  26 + D2S_SKILL_18,
  27 + D2S_SKILL_19,
  28 + D2S_SKILL_20,
  29 + D2S_SKILL_21,
  30 + D2S_SKILL_22,
  31 + D2S_SKILL_23,
  32 + D2S_SKILL_24,
  33 + D2S_SKILL_25,
  34 + D2S_SKILL_26,
  35 + D2S_SKILL_27,
  36 + D2S_SKILL_28,
  37 + D2S_SKILL_29,
  38 + D2S_SKILL_30,
  39 + D2S_SKILL_31,
  40 + D2S_SKILL_32,
  41 + D2S_SKILL_33,
  42 + D2S_SKILL_34,
  43 + D2S_SKILL_35,
  44 + D2S_SKILL_36,
  45 + D2S_SKILL_37,
  46 + D2S_SKILL_38,
  47 + D2S_SKILL_39,
  48 + D2S_SKILL_40,
  49 + D2S_SKILL_41,
  50 + D2S_SKILL_42,
  51 + D2S_SKILL_43,
  52 + D2S_SKILL_44,
  53 + D2S_SKILL_45,
  54 + D2S_SKILL_46,
  55 + D2S_SKILL_47,
  56 + D2S_SKILL_48,
  57 + D2S_SKILL_49,
  58 + D2S_SKILL_50,
  59 + D2S_SKILL_51,
  60 + D2S_SKILL_52,
  61 + D2S_SKILL_53,
  62 + D2S_SKILL_54,
  63 + D2S_SKILL_55,
  64 + D2S_SKILL_56,
  65 + D2S_SKILL_57,
  66 + D2S_SKILL_58,
  67 + D2S_SKILL_59,
  68 + D2S_SKILL_60,
  69 + D2S_SKILL_61,
  70 + D2S_SKILL_62,
  71 + D2S_SKILL_63,
  72 + D2S_SKILL_64,
  73 + D2S_SKILL_65,
  74 + D2S_SKILL_66,
  75 + D2S_SKILL_67,
  76 + D2S_SKILL_68,
  77 + D2S_SKILL_69,
  78 + D2S_SKILL_70,
  79 + D2S_SKILL_71,
  80 + D2S_SKILL_72,
  81 + D2S_SKILL_73,
  82 + D2S_SKILL_74,
  83 + D2S_SKILL_75,
  84 + D2S_SKILL_76,
  85 + D2S_SKILL_77,
  86 + D2S_SKILL_78,
  87 + D2S_SKILL_79,
  88 + D2S_SKILL_80,
  89 + D2S_SKILL_81,
  90 + D2S_SKILL_82,
  91 + D2S_SKILL_83,
  92 + D2S_SKILL_84,
  93 + D2S_SKILL_85,
  94 + D2S_SKILL_86,
  95 + D2S_SKILL_87,
  96 + D2S_SKILL_88,
  97 + D2S_SKILL_89,
  98 + D2S_SKILL_90,
  99 + D2S_SKILL_91,
  100 + D2S_SKILL_92,
  101 + D2S_SKILL_93,
  102 + D2S_SKILL_94,
  103 + D2S_SKILL_95,
  104 + D2S_SKILL_96,
  105 + D2S_SKILL_97,
  106 + D2S_SKILL_98,
  107 + D2S_SKILL_99,
  108 + D2S_SKILL_100,
  109 + D2S_SKILL_101,
  110 + D2S_SKILL_102,
  111 + D2S_SKILL_103,
  112 + D2S_SKILL_104,
  113 + D2S_SKILL_105,
  114 + D2S_SKILL_106,
  115 + D2S_SKILL_107,
  116 + D2S_SKILL_108,
  117 + D2S_SKILL_109,
  118 + D2S_SKILL_110,
  119 + D2S_SKILL_111,
  120 + D2S_SKILL_112,
  121 + D2S_SKILL_113,
  122 + D2S_SKILL_114,
  123 + D2S_SKILL_115,
  124 + D2S_SKILL_116,
  125 + D2S_SKILL_117,
  126 + D2S_SKILL_118,
  127 + D2S_SKILL_119,
  128 + D2S_SKILL_120,
  129 + D2S_SKILL_121,
  130 + D2S_SKILL_122,
  131 + D2S_SKILL_123,
  132 + D2S_SKILL_124,
  133 + D2S_SKILL_125,
  134 + D2S_SKILL_126,
  135 + D2S_SKILL_127,
  136 + D2S_SKILL_128,
  137 + D2S_SKILL_129,
  138 + D2S_SKILL_130,
  139 + D2S_SKILL_131,
  140 + D2S_SKILL_132,
  141 + D2S_SKILL_133,
  142 + D2S_SKILL_134,
  143 + D2S_SKILL_135,
  144 + D2S_SKILL_136,
  145 + D2S_SKILL_137,
  146 + D2S_SKILL_138,
  147 + D2S_SKILL_139,
  148 + D2S_SKILL_140,
  149 + D2S_SKILL_141,
  150 + D2S_SKILL_142,
  151 + D2S_SKILL_143,
  152 + D2S_SKILL_144,
  153 + D2S_SKILL_145,
  154 + D2S_SKILL_146,
  155 + D2S_SKILL_147,
  156 + D2S_SKILL_148,
  157 + D2S_SKILL_149,
  158 + D2S_SKILL_150,
  159 + D2S_SKILL_151,
  160 + D2S_SKILL_152,
  161 + D2S_SKILL_153,
  162 + D2S_SKILL_154,
  163 + D2S_SKILL_155,
  164 + D2S_SKILL_156,
  165 + D2S_SKILL_157,
  166 + D2S_SKILL_158,
  167 + D2S_SKILL_159,
  168 + D2S_SKILL_160,
  169 + D2S_SKILL_161,
  170 + D2S_SKILL_162,
  171 + D2S_SKILL_163,
  172 + D2S_SKILL_164,
  173 + D2S_SKILL_165,
  174 + D2S_SKILL_166,
  175 + D2S_SKILL_167,
  176 + D2S_SKILL_168,
  177 + D2S_SKILL_169,
  178 + D2S_SKILL_170,
  179 + D2S_SKILL_171,
  180 + D2S_SKILL_172,
  181 + D2S_SKILL_173,
  182 + D2S_SKILL_174,
  183 + D2S_SKILL_175,
  184 + D2S_SKILL_176,
  185 + D2S_SKILL_177,
  186 + D2S_SKILL_178,
  187 + D2S_SKILL_179,
  188 + D2S_SKILL_180,
  189 + D2S_SKILL_181,
  190 + D2S_SKILL_182,
  191 + D2S_SKILL_183,
  192 + D2S_SKILL_184,
  193 + D2S_SKILL_185,
  194 + D2S_SKILL_186,
  195 + D2S_SKILL_187,
  196 + D2S_SKILL_188,
  197 + D2S_SKILL_189,
  198 + D2S_SKILL_190,
  199 + D2S_SKILL_191,
  200 + D2S_SKILL_192,
  201 + D2S_SKILL_193,
  202 + D2S_SKILL_194,
  203 + D2S_SKILL_195,
  204 + D2S_SKILL_196,
  205 + D2S_SKILL_197,
  206 + D2S_SKILL_198,
  207 + D2S_SKILL_199,
  208 + D2S_SKILL_200,
  209 + D2S_SKILL_201,
  210 + D2S_SKILL_202,
  211 + D2S_SKILL_203,
  212 + D2S_SKILL_204,
  213 + D2S_SKILL_205,
  214 + D2S_SKILL_206,
  215 + D2S_SKILL_207,
  216 + D2S_SKILL_208,
  217 + D2S_SKILL_209,
  218 + D2S_SKILL_210,
  219 + D2S_SKILL_211,
  220 + D2S_SKILL_212,
  221 + D2S_SKILL_213,
  222 + D2S_SKILL_214,
  223 + D2S_SKILL_215,
  224 + D2S_SKILL_216,
  225 + D2S_SKILL_217,
  226 + D2S_SKILL_218,
  227 + D2S_SKILL_219,
  228 + D2S_SKILL_220,
  229 + D2S_SKILL_221,
  230 + D2S_SKILL_222,
  231 + D2S_SKILL_223,
  232 + D2S_SKILL_224,
  233 + D2S_SKILL_225,
  234 + D2S_SKILL_226,
  235 + D2S_SKILL_227,
  236 + D2S_SKILL_228,
  237 + D2S_SKILL_229,
  238 + D2S_SKILL_230,
  239 + D2S_SKILL_231,
  240 + D2S_SKILL_232,
  241 + D2S_SKILL_233,
  242 + D2S_SKILL_234,
  243 + D2S_SKILL_235,
  244 + D2S_SKILL_236,
  245 + D2S_SKILL_237,
  246 + D2S_SKILL_238,
  247 + D2S_SKILL_239,
  248 + D2S_SKILL_240,
  249 + D2S_SKILL_241,
  250 + D2S_SKILL_242,
  251 + D2S_SKILL_243,
  252 + D2S_SKILL_244,
  253 + D2S_SKILL_245,
  254 + D2S_SKILL_246,
  255 + D2S_SKILL_247,
  256 + D2S_SKILL_248,
  257 + D2S_SKILL_249,
  258 + D2S_SKILL_250,
  259 + D2S_SKILL_251,
  260 + D2S_SKILL_252,
  261 + D2S_SKILL_253,
  262 + D2S_SKILL_254,
  263 + D2S_SKILL_255,
  264 + D2S_SKILL_256,
  265 + D2S_SKILL_257,
  266 + D2S_SKILL_258,
  267 + D2S_SKILL_259,
  268 + D2S_SKILL_260,
  269 + D2S_SKILL_261,
  270 + D2S_SKILL_262,
  271 + D2S_SKILL_263,
  272 + D2S_SKILL_264,
  273 + D2S_SKILL_265,
  274 + D2S_SKILL_266,
  275 + D2S_SKILL_267,
  276 + D2S_SKILL_268,
  277 + D2S_SKILL_269,
  278 + D2S_SKILL_270,
  279 + D2S_SKILL_271,
  280 + D2S_SKILL_272,
  281 + D2S_SKILL_273,
  282 + D2S_SKILL_274,
  283 + D2S_SKILL_275,
  284 + D2S_SKILL_276,
  285 + D2S_SKILL_277,
  286 + D2S_SKILL_278,
  287 + D2S_SKILL_279,
  288 + D2S_SKILL_280,
  289 + D2S_SKILL_281,
  290 + D2S_SKILL_282,
  291 + D2S_SKILL_283,
  292 + D2S_SKILL_284,
  293 + D2S_SKILL_285,
  294 + D2S_SKILL_286,
  295 + D2S_SKILL_287,
  296 + D2S_SKILL_288,
  297 + D2S_SKILL_289,
  298 + D2S_SKILL_290,
  299 + D2S_SKILL_291,
  300 + D2S_SKILL_292,
  301 + D2S_SKILL_293,
  302 + D2S_SKILL_294,
  303 + D2S_SKILL_295,
  304 + D2S_SKILL_296,
  305 + D2S_SKILL_297,
  306 + D2S_SKILL_298,
  307 + D2S_SKILL_299,
  308 + D2S_SKILL_300,
  309 + D2S_SKILL_301,
  310 + D2S_SKILL_302,
  311 + D2S_SKILL_303,
  312 + D2S_SKILL_304,
  313 + D2S_SKILL_305,
  314 + D2S_SKILL_306,
  315 + D2S_SKILL_307,
  316 + D2S_SKILL_308,
  317 + D2S_SKILL_309,
  318 + D2S_SKILL_310,
  319 + D2S_SKILL_311,
  320 + D2S_SKILL_312,
  321 + D2S_SKILL_313,
  322 + D2S_SKILL_314,
  323 + D2S_SKILL_315,
  324 + D2S_SKILL_316,
  325 + D2S_SKILL_317,
  326 + D2S_SKILL_318,
  327 + D2S_SKILL_319,
  328 + D2S_SKILL_320,
  329 + D2S_SKILL_321,
  330 + D2S_SKILL_322,
  331 + D2S_SKILL_323,
  332 + D2S_SKILL_324,
  333 + D2S_SKILL_325,
  334 + D2S_SKILL_326,
  335 + D2S_SKILL_327,
  336 + D2S_SKILL_328,
  337 + D2S_SKILL_329,
  338 + D2S_SKILL_330,
  339 + D2S_SKILL_331,
  340 + D2S_SKILL_332,
  341 + D2S_SKILL_333,
  342 + D2S_SKILL_334,
  343 + D2S_SKILL_335,
  344 + D2S_SKILL_336,
  345 + D2S_SKILL_337,
  346 + D2S_SKILL_338,
  347 + D2S_SKILL_339,
  348 + D2S_SKILL_340,
  349 + D2S_SKILL_341,
  350 + D2S_SKILL_342,
  351 + D2S_SKILL_343,
  352 + D2S_SKILL_344,
  353 + D2S_SKILL_345,
  354 + D2S_SKILL_346,
  355 + D2S_SKILL_347,
  356 + D2S_SKILL_348,
  357 + D2S_SKILL_349,
  358 + D2S_SKILL_350,
  359 + D2S_SKILL_351,
  360 + D2S_SKILL_352,
  361 + D2S_SKILL_353,
  362 + D2S_SKILL_354,
  363 + D2S_SKILL_355,
  364 + D2S_SKILL_356
  365 +};
  366 +
  367 +#endif
0 368 \ No newline at end of file
... ...
d2strings.h
1 1 #ifndef D2STRINGS_H
2 2 #define D2STRINGS_H
3 3  
  4 +// Character titles
4 5 const char* D2S_CHARPROGRESS_TIER0_NAME = "";
5 6 const char* D2S_CHARPROGRESS_CLASSIC_TIER1_NAME_M = "Sir";
6 7 const char* D2S_CHARPROGRESS_CLASSIC_TIER2_NAME_M = "Lord";
... ... @@ -23,4 +24,545 @@ const char* D2S_CHARPROGRESS_EXPANSION_TIER1_NAME_HARDCORE = &quot;Destroyer&quot;;
23 24 const char* D2S_CHARPROGRESS_EXPANSION_TIER2_NAME_HARDCORE = "Conqueror";
24 25 const char* D2S_CHARPROGRESS_EXPANSION_TIER3_NAME_HARDCORE = "Guardian";
25 26  
  27 +// Skills
  28 +#define D2S_SKILL_0 "Attack"
  29 +#define D2S_SKILL_1 "Kick"
  30 +#define D2S_SKILL_2 "Throw Item"
  31 +#define D2S_SKILL_3 "Unsummon"
  32 +#define D2S_SKILL_4 "Left Hand Throw"
  33 +#define D2S_SKILL_5 "Left Hand Swing"
  34 +#define D2S_SKILL_6 "Magic Arrow"
  35 +#define D2S_SKILL_7 "Fire Arrow"
  36 +#define D2S_SKILL_8 "Inner Sight"
  37 +#define D2S_SKILL_9 "Critical Strike"
  38 +#define D2S_SKILL_10 "Jab"
  39 +#define D2S_SKILL_11 "Cold Arrow"
  40 +#define D2S_SKILL_12 "Multiple Shot"
  41 +#define D2S_SKILL_13 "Dodge"
  42 +#define D2S_SKILL_14 "Power Strike"
  43 +#define D2S_SKILL_15 "Poison Javelin"
  44 +#define D2S_SKILL_16 "Exploding Arrow"
  45 +#define D2S_SKILL_17 "Slow Missiles"
  46 +#define D2S_SKILL_18 "Avoid"
  47 +#define D2S_SKILL_19 "Impale"
  48 +#define D2S_SKILL_20 "Lightning Bolt"
  49 +#define D2S_SKILL_21 "Ice Arrow"
  50 +#define D2S_SKILL_22 "Guided Arrow"
  51 +#define D2S_SKILL_23 "Penetrate"
  52 +#define D2S_SKILL_24 "Charged Strike"
  53 +#define D2S_SKILL_25 "Plague Javelin"
  54 +#define D2S_SKILL_26 "Strafe"
  55 +#define D2S_SKILL_27 "Immolation Arrow"
  56 +#define D2S_SKILL_28 "Dopplezon"
  57 +#define D2S_SKILL_29 "Evade"
  58 +#define D2S_SKILL_30 "Fend"
  59 +#define D2S_SKILL_31 "Freezing Arrow"
  60 +#define D2S_SKILL_32 "Valkyrie"
  61 +#define D2S_SKILL_33 "Pierce"
  62 +#define D2S_SKILL_34 "Lightning Strike"
  63 +#define D2S_SKILL_35 "Lightning Fury"
  64 +#define D2S_SKILL_36 "Fire Bolt"
  65 +#define D2S_SKILL_37 "Warmth"
  66 +#define D2S_SKILL_38 "Charged Bolt"
  67 +#define D2S_SKILL_39 "Ice Bolt"
  68 +#define D2S_SKILL_40 "Frozen Armor"
  69 +#define D2S_SKILL_41 "Inferno"
  70 +#define D2S_SKILL_42 "Static Field"
  71 +#define D2S_SKILL_43 "Telekinesis"
  72 +#define D2S_SKILL_44 "Frost Nova"
  73 +#define D2S_SKILL_45 "Ice Blast"
  74 +#define D2S_SKILL_46 "Blaze"
  75 +#define D2S_SKILL_47 "Fire Ball"
  76 +#define D2S_SKILL_48 "Nova"
  77 +#define D2S_SKILL_49 "Lightning"
  78 +#define D2S_SKILL_50 "Shiver Armor"
  79 +#define D2S_SKILL_51 "Fire Wall"
  80 +#define D2S_SKILL_52 "Enchant"
  81 +#define D2S_SKILL_53 "Chain Lightning"
  82 +#define D2S_SKILL_54 "Teleport"
  83 +#define D2S_SKILL_55 "Glacial Spike"
  84 +#define D2S_SKILL_56 "Meteor"
  85 +#define D2S_SKILL_57 "Thunder Storm"
  86 +#define D2S_SKILL_58 "Energy Shield"
  87 +#define D2S_SKILL_59 "Blizzard"
  88 +#define D2S_SKILL_60 "Chilling Armor"
  89 +#define D2S_SKILL_61 "Fire Mastery"
  90 +#define D2S_SKILL_62 "Hydra"
  91 +#define D2S_SKILL_63 "Lightning Mastery"
  92 +#define D2S_SKILL_64 "Frozen Orb"
  93 +#define D2S_SKILL_65 "Cold Mastery"
  94 +#define D2S_SKILL_66 "Amplify Damage"
  95 +#define D2S_SKILL_67 "Teeth"
  96 +#define D2S_SKILL_68 "Bone Armor"
  97 +#define D2S_SKILL_69 "Skeleton Mastery"
  98 +#define D2S_SKILL_70 "Raise Skeleton"
  99 +#define D2S_SKILL_71 "Dim Vision"
  100 +#define D2S_SKILL_72 "Weaken"
  101 +#define D2S_SKILL_73 "Poison Dagger"
  102 +#define D2S_SKILL_74 "Corpse Explosion"
  103 +#define D2S_SKILL_75 "Clay Golem"
  104 +#define D2S_SKILL_76 "Iron Maiden"
  105 +#define D2S_SKILL_77 "Terror"
  106 +#define D2S_SKILL_78 "Bone Wall"
  107 +#define D2S_SKILL_79 "Golem Mastery"
  108 +#define D2S_SKILL_80 "Raise Skeletal Mage"
  109 +#define D2S_SKILL_81 "Confuse"
  110 +#define D2S_SKILL_82 "Life Tap"
  111 +#define D2S_SKILL_83 "Poison Explosion"
  112 +#define D2S_SKILL_84 "Bone Spear"
  113 +#define D2S_SKILL_85 "Blood Golem"
  114 +#define D2S_SKILL_86 "Attract"
  115 +#define D2S_SKILL_87 "Decrepify"
  116 +#define D2S_SKILL_88 "Bone Prison"
  117 +#define D2S_SKILL_89 "Summon Resist"
  118 +#define D2S_SKILL_90 "Iron Golem"
  119 +#define D2S_SKILL_91 "Lower Resist"
  120 +#define D2S_SKILL_92 "Poison Nova"
  121 +#define D2S_SKILL_93 "Bone Spirit"
  122 +#define D2S_SKILL_94 "Fire Golem"
  123 +#define D2S_SKILL_95 "Revive"
  124 +#define D2S_SKILL_96 "Sacrifice"
  125 +#define D2S_SKILL_97 "Smite"
  126 +#define D2S_SKILL_98 "Might"
  127 +#define D2S_SKILL_99 "Prayer"
  128 +#define D2S_SKILL_100 "Resist Fire"
  129 +#define D2S_SKILL_101 "Holy Bolt"
  130 +#define D2S_SKILL_102 "Holy Fire"
  131 +#define D2S_SKILL_103 "Thorns"
  132 +#define D2S_SKILL_104 "Defiance"
  133 +#define D2S_SKILL_105 "Resist Cold"
  134 +#define D2S_SKILL_106 "Zeal"
  135 +#define D2S_SKILL_107 "Charge"
  136 +#define D2S_SKILL_108 "Blessed Aim"
  137 +#define D2S_SKILL_109 "Cleansing"
  138 +#define D2S_SKILL_110 "Resist Lightning"
  139 +#define D2S_SKILL_111 "Vengeance"
  140 +#define D2S_SKILL_112 "Blessed Hammer"
  141 +#define D2S_SKILL_113 "Concentration"
  142 +#define D2S_SKILL_114 "Holy Freeze"
  143 +#define D2S_SKILL_115 "Vigor"
  144 +#define D2S_SKILL_116 "Conversion"
  145 +#define D2S_SKILL_117 "Holy Shield"
  146 +#define D2S_SKILL_118 "Holy Shock"
  147 +#define D2S_SKILL_119 "Sanctuary"
  148 +#define D2S_SKILL_120 "Meditation"
  149 +#define D2S_SKILL_121 "Fist Of The Heavens"
  150 +#define D2S_SKILL_122 "Fanaticism"
  151 +#define D2S_SKILL_123 "Conviction"
  152 +#define D2S_SKILL_124 "Redemption"
  153 +#define D2S_SKILL_125 "Salvation"
  154 +#define D2S_SKILL_126 "Bash"
  155 +#define D2S_SKILL_127 "Sword mastery"
  156 +#define D2S_SKILL_128 "Axe mastery"
  157 +#define D2S_SKILL_129 "Mace mastery"
  158 +#define D2S_SKILL_130 "Howl"
  159 +#define D2S_SKILL_131 "Find Potion"
  160 +#define D2S_SKILL_132 "Leap"
  161 +#define D2S_SKILL_133 "Double Swing"
  162 +#define D2S_SKILL_134 "Pole Arm Mastery"
  163 +#define D2S_SKILL_135 "Throwing Mastery"
  164 +#define D2S_SKILL_136 "Spear Mastery"
  165 +#define D2S_SKILL_137 "Taunt"
  166 +#define D2S_SKILL_138 "Shout"
  167 +#define D2S_SKILL_139 "Stun"
  168 +#define D2S_SKILL_140 "Double Throw"
  169 +#define D2S_SKILL_141 "Increased Stamina"
  170 +#define D2S_SKILL_142 "Find Item"
  171 +#define D2S_SKILL_143 "Leap Attack"
  172 +#define D2S_SKILL_144 "Concentrate"
  173 +#define D2S_SKILL_145 "Iron Skin"
  174 +#define D2S_SKILL_146 "Battle Cry"
  175 +#define D2S_SKILL_147 "Frenzy"
  176 +#define D2S_SKILL_148 "Increased Speed"
  177 +#define D2S_SKILL_149 "Battle Orders"
  178 +#define D2S_SKILL_150 "Grim Ward"
  179 +#define D2S_SKILL_151 "Whirlwind"
  180 +#define D2S_SKILL_152 "Berserk"
  181 +#define D2S_SKILL_153 "Natural Resistance"
  182 +#define D2S_SKILL_154 "War Cry"
  183 +#define D2S_SKILL_155 "Battle Command"
  184 +#define D2S_SKILL_156 "Fire Hit"
  185 +#define D2S_SKILL_157 "Unholy Bolt"
  186 +#define D2S_SKILL_158 "Skeleton Raise"
  187 +#define D2S_SKILL_159 "Maggot Egg"
  188 +#define D2S_SKILL_160 "Shaman Fire"
  189 +#define D2S_SKILL_161 "Magottup"
  190 +#define D2S_SKILL_162 "Magottdown"
  191 +#define D2S_SKILL_163 "Magottlay"
  192 +#define D2S_SKILL_164 "Andrial Spray"
  193 +#define D2S_SKILL_165 "Jump"
  194 +#define D2S_SKILL_166 "Swarm_move"
  195 +#define D2S_SKILL_167 "Nest"
  196 +#define D2S_SKILL_168 "Quick Strike"
  197 +#define D2S_SKILL_169 "Vampire Fireball"
  198 +#define D2S_SKILL_170 "Vampire Firewall"
  199 +#define D2S_SKILL_171 "Vampire Meteor"
  200 +#define D2S_SKILL_172 "Gargoyle Trap"
  201 +#define D2S_SKILL_173 "Spider Lay"
  202 +#define D2S_SKILL_174 "Vampire Heal"
  203 +#define D2S_SKILL_175 "Vampire Raise"
  204 +#define D2S_SKILL_176 "Submerge"
  205 +#define D2S_SKILL_177 "Fetish Aura"
  206 +#define D2S_SKILL_178 "Fetish Inferno"
  207 +#define D2S_SKILL_179 "Zakarum Heal"
  208 +#define D2S_SKILL_180 "Emerge"
  209 +#define D2S_SKILL_181 "Resurrect"
  210 +#define D2S_SKILL_182 "Bestow"
  211 +#define D2S_SKILL_183 "Missile Skill1"
  212 +#define D2S_SKILL_184 "Mon Teleport"
  213 +#define D2S_SKILL_185 "Prime Lightning"
  214 +#define D2S_SKILL_186 "Prime Bolt"
  215 +#define D2S_SKILL_187 "Prime Blaze"
  216 +#define D2S_SKILL_188 "Prime Firewall"
  217 +#define D2S_SKILL_189 "Prime Spike"
  218 +#define D2S_SKILL_190 "Prime Ice Nova"
  219 +#define D2S_SKILL_191 "Prime Poison Ball"
  220 +#define D2S_SKILL_192 "Prime Poison Nova"
  221 +#define D2S_SKILL_193 "Diablight"
  222 +#define D2S_SKILL_194 "Diabcold"
  223 +#define D2S_SKILL_195 "Diabfire"
  224 +#define D2S_SKILL_196 "Fingermagespider"
  225 +#define D2S_SKILL_197 "Diabwall"
  226 +#define D2S_SKILL_198 "Diabrun"
  227 +#define D2S_SKILL_199 "Diabprison"
  228 +#define D2S_SKILL_200 "Poison Ball Trap"
  229 +#define D2S_SKILL_201 "Andy Poison Bolt"
  230 +#define D2S_SKILL_202 "Hireable Missile"
  231 +#define D2S_SKILL_203 "Desert Turret"
  232 +#define D2S_SKILL_204 "Arcane Tower"
  233 +#define D2S_SKILL_205 "Monblizzard"
  234 +#define D2S_SKILL_206 "Mosquito"
  235 +#define D2S_SKILL_207 "Cursed Ball Trap Right"
  236 +#define D2S_SKILL_208 "Cursed Ball Trap Left"
  237 +#define D2S_SKILL_209 "Monfrozenarmor"
  238 +#define D2S_SKILL_210 "Monbonearmor"
  239 +#define D2S_SKILL_211 "Monbonespirit"
  240 +#define D2S_SKILL_212 "Moncursecast"
  241 +#define D2S_SKILL_213 "Hellmeteor"
  242 +#define D2S_SKILL_214 "Regurgitatoreat"
  243 +#define D2S_SKILL_215 "Monfrenzy"
  244 +#define D2S_SKILL_216 "Queendeath"
  245 +#define D2S_SKILL_217 "Scroll Of Identify"
  246 +#define D2S_SKILL_218 "Book Of Identify"
  247 +#define D2S_SKILL_219 "Scroll Of Townportal"
  248 +#define D2S_SKILL_220 "Book Of Townportal"
  249 +#define D2S_SKILL_221 "Raven"
  250 +#define D2S_SKILL_222 "Poison Creeper"
  251 +#define D2S_SKILL_223 "Wearwolf"
  252 +#define D2S_SKILL_224 "Shape Shifting"
  253 +#define D2S_SKILL_225 "Firestorm"
  254 +#define D2S_SKILL_226 "Oak Sage"
  255 +#define D2S_SKILL_227 "Summon Spirit Wolf"
  256 +#define D2S_SKILL_228 "Wearbear"
  257 +#define D2S_SKILL_229 "Molten Boulder"
  258 +#define D2S_SKILL_230 "Arctic Blast"
  259 +#define D2S_SKILL_231 "Cycle Of Life"
  260 +#define D2S_SKILL_232 "Feral Rage"
  261 +#define D2S_SKILL_233 "Maul"
  262 +#define D2S_SKILL_234 "Eruption"
  263 +#define D2S_SKILL_235 "Cyclone Armor"
  264 +#define D2S_SKILL_236 "Heart Of Wolverine"
  265 +#define D2S_SKILL_237 "Summon Fenris"
  266 +#define D2S_SKILL_238 "Rabies"
  267 +#define D2S_SKILL_239 "Fire Claws"
  268 +#define D2S_SKILL_240 "Twister"
  269 +#define D2S_SKILL_241 "Vines"
  270 +#define D2S_SKILL_242 "Hunger"
  271 +#define D2S_SKILL_243 "Shock Wave"
  272 +#define D2S_SKILL_244 "Volcano"
  273 +#define D2S_SKILL_245 "Tornado"
  274 +#define D2S_SKILL_246 "Spirit Of Barbs"
  275 +#define D2S_SKILL_247 "Summon Grizzly"
  276 +#define D2S_SKILL_248 "Fury"
  277 +#define D2S_SKILL_249 "Armageddon"
  278 +#define D2S_SKILL_250 "Hurricane"
  279 +#define D2S_SKILL_251 "Fire Blast"
  280 +#define D2S_SKILL_252 "Claw Mastery"
  281 +#define D2S_SKILL_253 "Psychic Hammer"
  282 +#define D2S_SKILL_254 "Tiger Strike"
  283 +#define D2S_SKILL_255 "Dragon Talon"
  284 +#define D2S_SKILL_256 "Shock Field"
  285 +#define D2S_SKILL_257 "Blade Sentinel"
  286 +#define D2S_SKILL_258 "Quickness"
  287 +#define D2S_SKILL_259 "Fists Of Fire"
  288 +#define D2S_SKILL_260 "Dragon Claw"
  289 +#define D2S_SKILL_261 "Charged Bolt Sentry"
  290 +#define D2S_SKILL_262 "Wake Of Fire Sentry"
  291 +#define D2S_SKILL_263 "Weapon Block"
  292 +#define D2S_SKILL_264 "Cloak Of Shadows"
  293 +#define D2S_SKILL_265 "Cobra Strike"
  294 +#define D2S_SKILL_266 "Blade Fury"
  295 +#define D2S_SKILL_267 "Fade"
  296 +#define D2S_SKILL_268 "Shadow Warrior"
  297 +#define D2S_SKILL_269 "Claws Of Thunder"
  298 +#define D2S_SKILL_270 "Dragon Tail"
  299 +#define D2S_SKILL_271 "Lightning Sentry"
  300 +#define D2S_SKILL_272 "Inferno Sentry"
  301 +#define D2S_SKILL_273 "Mind Blast"
  302 +#define D2S_SKILL_274 "Blades Of Ice"
  303 +#define D2S_SKILL_275 "Dragon Flight"
  304 +#define D2S_SKILL_276 "Death Sentry"
  305 +#define D2S_SKILL_277 "Blade Shield"
  306 +#define D2S_SKILL_278 "Venom"
  307 +#define D2S_SKILL_279 "Shadow Master"
  308 +#define D2S_SKILL_280 "Royal Strike"
  309 +#define D2S_SKILL_281 "Wake Of Destruction Sentry"
  310 +#define D2S_SKILL_282 "Imp Inferno"
  311 +#define D2S_SKILL_283 "Imp Fireball"
  312 +#define D2S_SKILL_284 "Baal Taunt"
  313 +#define D2S_SKILL_285 "Baal Corpse Explode"
  314 +#define D2S_SKILL_286 "Baal Monster Spawn"
  315 +#define D2S_SKILL_287 "Catapult Charged Ball"
  316 +#define D2S_SKILL_288 "Catapult Spike Ball"
  317 +#define D2S_SKILL_289 "Suck Blood"
  318 +#define D2S_SKILL_290 "Cry Help"
  319 +#define D2S_SKILL_291 "Healing Vortex"
  320 +#define D2S_SKILL_292 "Teleport 2"
  321 +#define D2S_SKILL_293 "Self Resurrect"
  322 +#define D2S_SKILL_294 "Vine Attack"
  323 +#define D2S_SKILL_295 "Overseer Whip"
  324 +#define D2S_SKILL_296 "Barbs Aura"
  325 +#define D2S_SKILL_297 "Wolverine Aura"
  326 +#define D2S_SKILL_298 "Oak Sage Aura"
  327 +#define D2S_SKILL_299 "Imp Fire Missile"
  328 +#define D2S_SKILL_300 "Impregnate"
  329 +#define D2S_SKILL_301 "Siege Beast Stomp"
  330 +#define D2S_SKILL_302 "Minionspawner"
  331 +#define D2S_SKILL_303 "Catapultblizzard"
  332 +#define D2S_SKILL_304 "Catapultplague"
  333 +#define D2S_SKILL_305 "Catapultmeteor"
  334 +#define D2S_SKILL_306 "Boltsentry"
  335 +#define D2S_SKILL_307 "Corpsecycler"
  336 +#define D2S_SKILL_308 "Deathmaul"
  337 +#define D2S_SKILL_309 "Defense Curse"
  338 +#define D2S_SKILL_310 "Blood Mana"
  339 +#define D2S_SKILL_311 "Mon Inferno Sentry"
  340 +#define D2S_SKILL_312 "Mon Death Sentry"
  341 +#define D2S_SKILL_313 "Sentry Lightning"
  342 +#define D2S_SKILL_314 "Fenris Rage"
  343 +#define D2S_SKILL_315 "Baal Tentacle"
  344 +#define D2S_SKILL_316 "Baal Nova"
  345 +#define D2S_SKILL_317 "Baal Inferno"
  346 +#define D2S_SKILL_318 "Baal Cold Missiles"
  347 +#define D2S_SKILL_319 "Mega Demon Inferno"
  348 +#define D2S_SKILL_320 "Evil Hut Spawner"
  349 +#define D2S_SKILL_321 "Countess Firewall"
  350 +#define D2S_SKILL_322 "Impbolt"
  351 +#define D2S_SKILL_323 "Horror Arctic Blast"
  352 +#define D2S_SKILL_324 "Death Sentry Ltng"
  353 +#define D2S_SKILL_325 "Vinecycler"
  354 +#define D2S_SKILL_326 "Bearsmite"
  355 +#define D2S_SKILL_327 "Resurrect2"
  356 +#define D2S_SKILL_328 "Bloodlord Frenzy"
  357 +#define D2S_SKILL_329 "Baal Teleport"
  358 +#define D2S_SKILL_330 "Imp Teleport"
  359 +#define D2S_SKILL_331 "Baal Clone Teleport"
  360 +#define D2S_SKILL_332 "Zakarum Lightning"
  361 +#define D2S_SKILL_333 "Vampire Missile"
  362 +#define D2S_SKILL_334 "Mephisto Missile"
  363 +#define D2S_SKILL_335 "Doom Knight Missile"
  364 +#define D2S_SKILL_336 "Rogue Missile"
  365 +#define D2S_SKILL_337 "Hydra Missile"
  366 +#define D2S_SKILL_338 "Necro Mage Missile"
  367 +#define D2S_SKILL_339 "Monbow"
  368 +#define D2S_SKILL_340 "Monfirearrow"
  369 +#define D2S_SKILL_341 "Moncoldarrow"
  370 +#define D2S_SKILL_342 "Monexplodingarrow"
  371 +#define D2S_SKILL_343 "Monfreezingarrow"
  372 +#define D2S_SKILL_344 "Monpowerstrike"
  373 +#define D2S_SKILL_345 "Succubusbolt"
  374 +#define D2S_SKILL_346 "Mephfrostnova"
  375 +#define D2S_SKILL_347 "Monicespear"
  376 +#define D2S_SKILL_348 "Shaman Ice"
  377 +#define D2S_SKILL_349 "Diablogeddon"
  378 +#define D2S_SKILL_350 "Delerium Change"
  379 +#define D2S_SKILL_351 "Nihlathak Corpse Explosion"
  380 +#define D2S_SKILL_352 "Serpent Charge"
  381 +#define D2S_SKILL_353 "Trap Nova"
  382 +#define D2S_SKILL_354 "Unholy Boltex"
  383 +#define D2S_SKILL_355 "Shaman Fireex"
  384 +#define D2S_SKILL_356 "Imp Fire Missile Ex"
  385 +
  386 +// Mercenary data
  387 +#define D2S_MERC_NAME_0 "Aliza"
  388 +#define D2S_MERC_NAME_1 "Amplisa"
  389 +#define D2S_MERC_NAME_2 "Annor"
  390 +#define D2S_MERC_NAME_3 "Abhaya"
  391 +#define D2S_MERC_NAME_4 "Elly"
  392 +#define D2S_MERC_NAME_5 "Paige"
  393 +#define D2S_MERC_NAME_6 "Basanti"
  394 +#define D2S_MERC_NAME_7 "Blaise"
  395 +#define D2S_MERC_NAME_8 "Kyoko"
  396 +#define D2S_MERC_NAME_9 "Klaudia"
  397 +#define D2S_MERC_NAME_10 "Kundri"
  398 +#define D2S_MERC_NAME_11 "Kyle"
  399 +#define D2S_MERC_NAME_12 "Visala"
  400 +#define D2S_MERC_NAME_13 "Elexa"
  401 +#define D2S_MERC_NAME_14 "Floria"
  402 +#define D2S_MERC_NAME_15 "Fiona"
  403 +#define D2S_MERC_NAME_16 "Gwinni"
  404 +#define D2S_MERC_NAME_17 "Gaile"
  405 +#define D2S_MERC_NAME_18 "Hannah"
  406 +#define D2S_MERC_NAME_19 "Heather"
  407 +#define D2S_MERC_NAME_20 "Iantha"
  408 +#define D2S_MERC_NAME_21 "Diane"
  409 +#define D2S_MERC_NAME_22 "Isolde"
  410 +#define D2S_MERC_NAME_23 "Divo"
  411 +#define D2S_MERC_NAME_24 "Ithera"
  412 +#define D2S_MERC_NAME_25 "Itonya"
  413 +#define D2S_MERC_NAME_26 "Liene"
  414 +#define D2S_MERC_NAME_27 "Maeko"
  415 +#define D2S_MERC_NAME_28 "Mahala"
  416 +#define D2S_MERC_NAME_29 "Liaza"
  417 +#define D2S_MERC_NAME_30 "Meghan"
  418 +#define D2S_MERC_NAME_31 "Olena"
  419 +#define D2S_MERC_NAME_32 "Oriana"
  420 +#define D2S_MERC_NAME_33 "Ryann"
  421 +#define D2S_MERC_NAME_34 "Rozene"
  422 +#define D2S_MERC_NAME_35 "Raissa"
  423 +#define D2S_MERC_NAME_36 "Sharyn"
  424 +#define D2S_MERC_NAME_37 "Shikha"
  425 +#define D2S_MERC_NAME_38 "Debi"
  426 +#define D2S_MERC_NAME_39 "Tylena"
  427 +#define D2S_MERC_NAME_40 "Wendy"
  428 +#define D2S_MERC_NAME_41 "Hazade"
  429 +#define D2S_MERC_NAME_42 "Alhizeer"
  430 +#define D2S_MERC_NAME_43 "Azrael"
  431 +#define D2S_MERC_NAME_44 "Ahsab"
  432 +#define D2S_MERC_NAME_45 "Chalan"
  433 +#define D2S_MERC_NAME_46 "Haseen"
  434 +#define D2S_MERC_NAME_47 "Razan"
  435 +#define D2S_MERC_NAME_48 "Emilio"
  436 +#define D2S_MERC_NAME_49 "Pratham"
  437 +#define D2S_MERC_NAME_50 "Fazel"
  438 +#define D2S_MERC_NAME_51 "Jemali"
  439 +#define D2S_MERC_NAME_52 "Kasim"
  440 +#define D2S_MERC_NAME_53 "Gulzar"
  441 +#define D2S_MERC_NAME_54 "Mizan"
  442 +#define D2S_MERC_NAME_55 "Leharas"
  443 +#define D2S_MERC_NAME_56 "Durga"
  444 +#define D2S_MERC_NAME_57 "Neeraj"
  445 +#define D2S_MERC_NAME_58 "Ilzan"
  446 +#define D2S_MERC_NAME_59 "Zanarhi"
  447 +#define D2S_MERC_NAME_60 "Waheed"
  448 +#define D2S_MERC_NAME_61 "Vikhyat"
  449 +#define D2S_MERC_NAME_62 "Jelani"
  450 +#define D2S_MERC_NAME_63 "Barani"
  451 +#define D2S_MERC_NAME_64 "Jabari"
  452 +#define D2S_MERC_NAME_65 "Devak"
  453 +#define D2S_MERC_NAME_66 "Raldin"
  454 +#define D2S_MERC_NAME_67 "Telash"
  455 +#define D2S_MERC_NAME_68 "Ajheed"
  456 +#define D2S_MERC_NAME_69 "Narphet"
  457 +#define D2S_MERC_NAME_70 "Khaleel"
  458 +#define D2S_MERC_NAME_71 "Phaet"
  459 +#define D2S_MERC_NAME_72 "Geshef"
  460 +#define D2S_MERC_NAME_73 "Vanji"
  461 +#define D2S_MERC_NAME_74 "Haphet"
  462 +#define D2S_MERC_NAME_75 "Thadar"
  463 +#define D2S_MERC_NAME_76 "Yatiraj"
  464 +#define D2S_MERC_NAME_77 "Rhadge"
  465 +#define D2S_MERC_NAME_78 "Yashied"
  466 +#define D2S_MERC_NAME_79 "Jarulf"
  467 +#define D2S_MERC_NAME_80 "Flux"
  468 +#define D2S_MERC_NAME_81 "Scorch"
  469 +#define D2S_MERC_NAME_82 "Varaya"
  470 +#define D2S_MERC_NAME_83 "Khan"
  471 +#define D2S_MERC_NAME_84 "Klisk"
  472 +#define D2S_MERC_NAME_85 "Bors"
  473 +#define D2S_MERC_NAME_86 "Brom"
  474 +#define D2S_MERC_NAME_87 "Wiglaf"
  475 +#define D2S_MERC_NAME_88 "Hrothgar"
  476 +#define D2S_MERC_NAME_89 "Scyld"
  477 +#define D2S_MERC_NAME_90 "Healfdane"
  478 +#define D2S_MERC_NAME_91 "Heorogar"
  479 +#define D2S_MERC_NAME_92 "Halgaunt"
  480 +#define D2S_MERC_NAME_93 "Hygelac"
  481 +#define D2S_MERC_NAME_94 "Egtheow"
  482 +#define D2S_MERC_NAME_95 "Bohdan"
  483 +#define D2S_MERC_NAME_96 "Wulfgar"
  484 +#define D2S_MERC_NAME_97 "Hild"
  485 +#define D2S_MERC_NAME_98 "Heatholaf"
  486 +#define D2S_MERC_NAME_99 "Weder"
  487 +#define D2S_MERC_NAME_100 "Vikhyat"
  488 +#define D2S_MERC_NAME_101 "Unferth"
  489 +#define D2S_MERC_NAME_102 "Sigemund"
  490 +#define D2S_MERC_NAME_103 "Heremod"
  491 +#define D2S_MERC_NAME_104 "Hengest"
  492 +#define D2S_MERC_NAME_105 "Folcwald"
  493 +#define D2S_MERC_NAME_106 "Frisian"
  494 +#define D2S_MERC_NAME_107 "Hnaef"
  495 +#define D2S_MERC_NAME_108 "Guthlaf"
  496 +#define D2S_MERC_NAME_109 "Oslaf"
  497 +#define D2S_MERC_NAME_110 "Yrmenlaf"
  498 +#define D2S_MERC_NAME_111 "Garmund"
  499 +#define D2S_MERC_NAME_112 "Freawaru"
  500 +#define D2S_MERC_NAME_113 "Eadgils"
  501 +#define D2S_MERC_NAME_114 "Onela"
  502 +#define D2S_MERC_NAME_115 "Damien"
  503 +#define D2S_MERC_NAME_116 "Erfor"
  504 +#define D2S_MERC_NAME_117 "Weohstan"
  505 +#define D2S_MERC_NAME_118 "Wulf"
  506 +#define D2S_MERC_NAME_119 "Bulwye"
  507 +#define D2S_MERC_NAME_120 "Lief"
  508 +#define D2S_MERC_NAME_121 "Magnus"
  509 +#define D2S_MERC_NAME_122 "Klatu"
  510 +#define D2S_MERC_NAME_123 "Drus"
  511 +#define D2S_MERC_NAME_124 "Hoku"
  512 +#define D2S_MERC_NAME_125 "Kord"
  513 +#define D2S_MERC_NAME_126 "Uther"
  514 +#define D2S_MERC_NAME_127 "Ip"
  515 +#define D2S_MERC_NAME_128 "Ulf"
  516 +#define D2S_MERC_NAME_129 "Tharr"
  517 +#define D2S_MERC_NAME_130 "Kaelim"
  518 +#define D2S_MERC_NAME_131 "Ulric"
  519 +#define D2S_MERC_NAME_132 "Alaric"
  520 +#define D2S_MERC_NAME_133 "Ethelred"
  521 +#define D2S_MERC_NAME_134 "Caden"
  522 +#define D2S_MERC_NAME_135 "Elgifu"
  523 +#define D2S_MERC_NAME_136 "Tostig"
  524 +#define D2S_MERC_NAME_137 "Alcuin"
  525 +#define D2S_MERC_NAME_138 "Emund"
  526 +#define D2S_MERC_NAME_139 "Sigurd"
  527 +#define D2S_MERC_NAME_140 "Gorm"
  528 +#define D2S_MERC_NAME_141 "Hollis"
  529 +#define D2S_MERC_NAME_142 "Ragnar"
  530 +#define D2S_MERC_NAME_143 "Torkel"
  531 +#define D2S_MERC_NAME_144 "Wulfstan"
  532 +#define D2S_MERC_NAME_145 "Alban"
  533 +#define D2S_MERC_NAME_146 "Barloc"
  534 +#define D2S_MERC_NAME_147 "Bill"
  535 +#define D2S_MERC_NAME_148 "Theodoric"
  536 +
  537 +#define D2S_MERC_ID_0 "Rogue Scout Fire Arrow [Normal"
  538 +#define D2S_MERC_ID_1 "Rogue Scout Cold Arrow [Normal"
  539 +#define D2S_MERC_ID_2 "Rogue Scout Fire Arrow [Nightmare]"
  540 +#define D2S_MERC_ID_3 "Rogue Scout Cold Arrow [Nightmare]"
  541 +#define D2S_MERC_ID_4 "Rogue Scout Fire Arrow [Hell]"
  542 +#define D2S_MERC_ID_5 "Rogue Scout Cold Arrow [Hell]"
  543 +#define D2S_MERC_ID_6 "Desert Mercenary Combat [Normal]"
  544 +#define D2S_MERC_ID_7 "Desert Mercenary Defensive [Normal]"
  545 +#define D2S_MERC_ID_8 "Desert Mercenary Offensive [Normal]"
  546 +#define D2S_MERC_ID_9 "Desert Mercenary Combat [Nightmare]"
  547 +#define D2S_MERC_ID_10 "Desert Mercenary Defensive [Nightmare]"
  548 +#define D2S_MERC_ID_11 "Desert Mercenary Offensive [Nightmare]"
  549 +#define D2S_MERC_ID_12 "Desert Mercenary Combat [Hell]"
  550 +#define D2S_MERC_ID_13 "Desert Mercenary Defensive [Hell]"
  551 +#define D2S_MERC_ID_14 "Desert Mercenary Offensive [Hell]"
  552 +#define D2S_MERC_ID_15 "Eastern Sorceror Fire Spells [Normal]"
  553 +#define D2S_MERC_ID_16 "Eastern Sorceror Cold Spells [Normal]"
  554 +#define D2S_MERC_ID_17 "Eastern Sorceror Lightning Spells [Normal]"
  555 +#define D2S_MERC_ID_18 "Eastern Sorceror Fire Spells [Nightmare]"
  556 +#define D2S_MERC_ID_19 "Eastern Sorceror Cold Spells [Nightmare]"
  557 +#define D2S_MERC_ID_20 "Eastern Sorceror Lightning Spells [Nightmare]"
  558 +#define D2S_MERC_ID_21 "Eastern Sorceror Fire Spells [Hell]"
  559 +#define D2S_MERC_ID_22 "Eastern Sorceror Cold Spells [Hell]"
  560 +#define D2S_MERC_ID_23 "Eastern Sorceror Lightning Spells [Hell]"
  561 +#define D2S_MERC_ID_24 "Barbarian [Normal]"
  562 +#define D2S_MERC_ID_25 "Barbarian [Normal]"
  563 +#define D2S_MERC_ID_26 "Barbarian [Nightmare]"
  564 +#define D2S_MERC_ID_27 "Barbarian [Nightmare]"
  565 +#define D2S_MERC_ID_28 "Barbarian [Hell]"
  566 +#define D2S_MERC_ID_29 "Barbarian [Hell]"
  567 +
26 568 #endif
27 569 \ No newline at end of file
... ...