Code:
diff -cr showeq-5.13.10.4.virgin/conf/zoneopcodes.xml showeq-5.13.10.4/conf/zoneopcodes.xml
*** showeq-5.13.10.4.virgin/conf/zoneopcodes.xml Thu May 19 07:59:44 2011
--- showeq-5.13.10.4/conf/zoneopcodes.xml Tue Nov 22 18:46:54 2011
***************
*** 5,11 ****
<!--
Critical opcodes used directly by ShowEQ
-->
! <opcode id="38E0" name="OP_NpcMoveUpdate" updated="04/15/11">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
--- 5,11 ----
<!--
Critical opcodes used directly by ShowEQ
-->
! <opcode id="2339" name="OP_NpcMoveUpdate" updated="11/16/11">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
***************
*** 13,23 ****
<comment></comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
! <opcode id="0BD0" name="OP_DeleteSpawn" updated="04/15/11">
<comment>old DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
! <opcode id="02D6" name="OP_ZoneEntry" updated="04/14/11">
<comment>old ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
--- 13,23 ----
<comment></comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
! <opcode id="0CAE" name="OP_DeleteSpawn" updated="11/16/11">
<comment>old DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
! <opcode id="5821" name="OP_ZoneEntry" updated="11/16/11">
<comment>old ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
***************
*** 86,92 ****
<comment>Receiving AA experience. Also when percent to AA changes.</comment>
<payload dir="server" typename="altExpUpdateStruct" sizechecktype="match"/>
</opcode>
! <opcode id="6967" name="OP_HPUpdate" updated="04/18/11">
<comment>old NpcHpUpdateCode Update HP % of a PC or NPC</comment>
<payload dir="both" typename="hpNpcUpdateStruct" sizechecktype="match"/>
</opcode>
--- 86,92 ----
<comment>Receiving AA experience. Also when percent to AA changes.</comment>
<payload dir="server" typename="altExpUpdateStruct" sizechecktype="match"/>
</opcode>
! <opcode id="2370" name="OP_HPUpdate" updated="11/16/11">
<comment>old NpcHpUpdateCode Update HP % of a PC or NPC</comment>
<payload dir="both" typename="hpNpcUpdateStruct" sizechecktype="match"/>
</opcode>
***************
*** 154,160 ****
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
! <opcode id="3C2D" name="OP_Consider" updated="10/21/09">
<comment>old ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
--- 154,160 ----
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
! <opcode id="70C6" name="OP_Consider" updated="11/16/11">
<comment>old ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
***************
*** 179,185 ****
<payload dir="both" typename="groupDeclineStruct" sizechecktype="match"/>
<comment>Declining to join a group</comment>
</opcode> -->
! <opcode id="43AC" name="OP_NewZone" updated="06/12/09">
<comment>old NewZoneCode</comment>
<payload dir="server" typename="newZoneStruct" sizechecktype="match"/>
</opcode>
--- 179,185 ----
<payload dir="both" typename="groupDeclineStruct" sizechecktype="match"/>
<comment>Declining to join a group</comment>
</opcode> -->
! <opcode id="4118" name="OP_NewZone" updated="11/16/11">
<comment>old NewZoneCode</comment>
<payload dir="server" typename="newZoneStruct" sizechecktype="match"/>
</opcode>
***************
*** 192,202 ****
<comment>old ExpUpdateCode</comment>
<payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
</opcode>
! <opcode id="725A" name="OP_RemoveSpawn" updated="04/18/11">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
! <opcode id="49B6" name="OP_Death" updated="04/15/11">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>
--- 192,202 ----
<comment>old ExpUpdateCode</comment>
<payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
</opcode>
! <opcode id="58c5" name="OP_RemoveSpawn" updated="11/16/11">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
! <opcode id="799C" name="OP_Death" updated="11/16/11">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>
***************
*** 250,256 ****
<comment>old CorpseLocCode:</comment>
<payload dir="server" typename="corpseLocStruct" sizechecktype="match"/>
</opcode>
! <opcode id="6022" name="OP_PlayerProfile" updated="01/17/08">
<comment>old CharProfileCode</comment>
<payload dir="server" typename="charProfileStruct" sizechecktype="match"/>
</opcode>
--- 250,256 ----
<comment>old CorpseLocCode:</comment>
<payload dir="server" typename="corpseLocStruct" sizechecktype="match"/>
</opcode>
! <opcode id="6AFD" name="OP_PlayerProfile" updated="11/16/11">
<comment>old CharProfileCode</comment>
<payload dir="server" typename="charProfileStruct" sizechecktype="match"/>
</opcode>
diff -cr showeq-5.13.10.4.virgin/src/everquest.h showeq-5.13.10.4/src/everquest.h
*** showeq-5.13.10.4.virgin/src/everquest.h Wed May 25 13:14:28 2011
--- showeq-5.13.10.4/src/everquest.h Fri Nov 18 09:33:41 2011
***************
*** 103,112 ****
//Maximum limits of certain types of data
#define MAX_KNOWN_SKILLS 100
#define MAX_SPELL_SLOTS 12
! #define MAX_KNOWN_LANGS 25
#define MAX_SPELLBOOK_SLOTS 400
#define MAX_GROUP_MEMBERS 6
! #define MAX_BUFFS 30
#define MAX_GUILDS 8192
#define MAX_AA 300
#define MAX_BANDOLIERS 20
--- 103,112 ----
//Maximum limits of certain types of data
#define MAX_KNOWN_SKILLS 100
#define MAX_SPELL_SLOTS 12
! #define MAX_KNOWN_LANGS 26
#define MAX_SPELLBOOK_SLOTS 400
#define MAX_GROUP_MEMBERS 6
! #define MAX_BUFFS 42
#define MAX_GUILDS 8192
#define MAX_AA 300
#define MAX_BANDOLIERS 20
***************
*** 425,431 ****
/*
** Buffs
! ** Length: 76 Octets
** Used in:
** charProfileStruct
*/
--- 425,431 ----
/*
** Buffs
! ** Length: 88 Octets
** Used in:
** charProfileStruct
*/
***************
*** 441,448 ****
/*0016*/ int32_t effect; // holds the dmg absorb amount on runes
/*0020*/ uint8_t unknown0020[4]; // *** this might need to be swapped with playerId
/*0024*/ uint32_t playerId; // Global id of caster (for wear off)
! /*0028*/ uint8_t unknown0028[48];
! /*0076*/
};
--- 441,448 ----
/*0016*/ int32_t effect; // holds the dmg absorb amount on runes
/*0020*/ uint8_t unknown0020[4]; // *** this might need to be swapped with playerId
/*0024*/ uint32_t playerId; // Global id of caster (for wear off)
! /*0028*/ uint8_t unknown0028[60];
! /*0088*/
};
***************
*** 713,731 ****
/*07868*/ uint32_t hunger; // Food (ticks till next eat)
/*07872*/ uint8_t unknown07872[20];
/*07892*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
! /*10172*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
! /*10572*/ uint8_t unknown10572[1600]; // BSH
! /*11132*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
! /*11212*/ uint32_t endurance; // Current endurance
! /*11216*/ uint32_t aa_spent; // Number of spent AA points (including glyphs)
! /*11220*/ uint32_t aa_assigned; // Number of points currently assigned to AAs
! /*11224*/ uint32_t unknown11224[4];
! /*11240*/ uint32_t aa_unspent; // Unspent AA points
! /*11244*/ uint8_t unknown11244[4];
! /*11248*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents
! /*17648*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt
! /*18008*/ uint8_t unknown18008[92];
! /*18100*/
};
/*
--- 713,732 ----
/*07868*/ uint32_t hunger; // Food (ticks till next eat)
/*07872*/ uint8_t unknown07872[20];
/*07892*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
! /*11588*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
! /*11988*/ uint8_t unknown10932[400];
! /*12188*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
! /*12468*/ uint8_t unknown11412[480];
! /*12948*/ uint32_t endurance; // Current endurance
! /*12952*/ uint32_t aa_spent; // Number of spent AA points (including glyphs)
! /*12956*/ uint32_t aa_assigned; // Number of points currently assigned to AAs
! /*12960*/ uint32_t unknown11904[4];
! /*12976*/ uint32_t aa_unspent; // Unspent AA points
! /*12980*/ uint8_t unknown11924[4];
! /*12984*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents
! /*19384*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt
! /*19744*/ uint8_t unknown18008[92];
! /*19836*/
};
/*
***************
*** 737,817 ****
{
/*00000*/ uint32_t checksum; //
/*00004*/ playerProfileStruct profile; // Profile
! /*18100*/ char name[64]; // Name of player
! /*18164*/ char lastName[32]; // Last name of player
! /*18196*/ uint8_t unknown18196[8]; //***Placeholder (1/18/2006)
! /*18204*/ int32_t guildID; // guildID
! /*18208*/ uint32_t birthdayTime; // character birthday
! /*18212*/ uint32_t lastSaveTime; // character last save time
! /*18216*/ uint32_t timePlayedMin; // time character played
! /*18220*/ uint8_t unknown18220[4];
! /*18224*/ uint8_t pvp; // 1=pvp, 0=not pvp
! /*18225*/ uint8_t anon; // 2=roleplay, 1=anon, 0=not anon
! /*18226*/ uint8_t gm; // 0=no, 1=yes (guessing!)
! /*18227*/ int8_t guildstatus; // 0=member, 1=officer, 2=guildleader
! /*18228*/ uint8_t unknown18228[8];
! /*18236*/ uint32_t exp; // Current Experience
! /*18240*/ uint8_t unknown18240[12];
! /*18252*/ uint8_t languages[MAX_KNOWN_LANGS]; // List of languages
! /*18277*/ uint8_t unknown18277[7]; // All 0x00 (language buffer?)
! /*18284*/ float y; // Players y position
! /*18288*/ float x; // Players x position
! /*18292*/ float z; // Players z position
! /*18296*/ float heading; // Players heading
! /*18300*/ uint32_t standState; // 0x64 = stand
! /*18304*/ uint32_t platinum_bank; // Platinum Pieces in Bank
! /*18308*/ uint32_t gold_bank; // Gold Pieces in Bank
! /*18312*/ uint32_t silver_bank; // Silver Pieces in Bank
! /*18316*/ uint32_t copper_bank; // Copper Pieces in Bank
! /*18320*/ uint32_t platinum_shared; // Shared platinum pieces
! /*18324*/ uint8_t unknown18324[2124]; // Added 1088 for HoT
! /*20488*/ uint32_t expansions; // Bitmask for expansions
! /*20452*/ uint8_t unknown20452[12];
! /*20464*/ uint32_t autosplit; // 0 = off, 1 = on
! /*20468*/ uint8_t unknown20468[16];
! /*20484*/ uint16_t zoneId; // see zones.h
! /*20486*/ uint16_t zoneInstance; // Instance id
! /*20486*/ uint8_t unknown20486[992];
! /*21480*/ uint32_t leadAAActive; // 0 = leader AA off, 1 = leader AA on
! /*21484*/ uint8_t unknown21484[4];
! /*21488*/ uint32_t ldon_guk_points; // Earned GUK points
! /*21492*/ uint32_t ldon_mir_points; // Earned MIR points
! /*21496*/ uint32_t ldon_mmc_points; // Earned MMC points
! /*21500*/ uint32_t ldon_ruj_points; // Earned RUJ points
! /*21504*/ uint32_t ldon_tak_points; // Earned TAK points
! /*21508*/ uint32_t ldon_avail_points; // Available LDON points
! /*21512*/ uint8_t unknown21512[136];
! /*21648*/ uint32_t tributeTime; // Time remaining on tribute (millisecs)
! /*21652*/ uint32_t careerTribute; // Total favor points for this char
! /*21656*/ uint32_t unknown21656; // *** Placeholder
! /*21660*/ uint32_t currentTribute; // Current tribute points
! /*21664*/ uint32_t unknown21664; // *** Placeholder
! /*21668*/ uint32_t tributeActive; // 0 = off, 1=on
! /*21672*/ TributeStruct tributes[MAX_TRIBUTES]; // Current tribute loadout
! /*21712*/ uint8_t unknown21712[92]; // Added 208 bytes for HoT BETA
! /*21804*/ float expGroupLeadAA; // Current group lead exp points
! /*21808*/ uint32_t unknown21808;
! /*21812*/ float expRaidLeadAA; // Current raid lead AA exp points
! /*21816*/ uint32_t unknown21816;
! /*21820*/ uint32_t groupLeadAAUnspent; // Unspent group lead AA points
! /*21824*/ uint32_t raidLeadAAUnspent; // Unspent raid lead AA points
! /*21828*/ uint32_t leadershipAAs[MAX_LEAD_AA]; // Leader AA ranks
! /*21956*/ uint8_t unknown21956[128];
! /*22084*/ uint32_t airRemaining; // Air supply (seconds)
! /*22088*/ uint8_t unknown22088[4608];
! /*26696*/ uint32_t expAA; // Exp earned in current AA point
! /*26700*/ uint8_t unknown26700[40];
! /*26740*/ uint32_t currentRadCrystals; // Current count of radiant crystals
! /*26744*/ uint32_t careerRadCrystals; // Total count of radiant crystals ever
! /*26748*/ uint32_t currentEbonCrystals;// Current count of ebon crystals
! /*26752*/ uint32_t careerEbonCrystals; // Total count of ebon crystals ever
! /*26756*/ uint8_t groupAutoconsent; // 0=off, 1=on
! /*26757*/ uint8_t raidAutoconsent; // 0=off, 1=on
! /*26758*/ uint8_t guildAutoconsent; // 0=off, 1=on
! /*26759*/ uint8_t unknown26759[5]; // ***Placeholder (6/29/2005)
! /*26764*/ uint32_t showhelm; // 0=no, 1=yes
! /*26768*/ uint8_t unknown26768[1048]; // ***Placeholder (2/13/2007)
! /*27816*/
};
#if 0
--- 738,818 ----
{
/*00000*/ uint32_t checksum; //
/*00004*/ playerProfileStruct profile; // Profile
! /*19836*/ char name[64]; // Name of player
! /*19900*/ char lastName[32]; // Last name of player
! /*19932*/ uint8_t unknown18196[8]; //***Placeholder (1/18/2006)
! /*19940*/ int32_t guildID; // guildID
! /*19944*/ uint32_t birthdayTime; // character birthday
! /*19948*/ uint32_t lastSaveTime; // character last save time
! /*19952*/ uint32_t timePlayedMin; // time character played
! /*19956*/ uint8_t unknown18220[4];
! /*19960*/ uint8_t pvp; // 1=pvp, 0=not pvp
! /*19961*/ uint8_t anon; // 2=roleplay, 1=anon, 0=not anon
! /*19962*/ uint8_t gm; // 0=no, 1=yes (guessing!)
! /*19963*/ int8_t guildstatus; // 0=member, 1=officer, 2=guildleader
! /*19964*/ uint8_t unknown18228[16];
! /*19980*/ uint32_t exp; // Current Experience
! /*19984*/ uint8_t unknown18240[12];
! /*19996*/ uint8_t languages[MAX_KNOWN_LANGS]; // List of languages ccc
! /*20022*/ uint8_t unknown18277[6]; // All 0x00 (language buffer?)
! /*20028*/ float y; // Players y position
! /*20032*/ float x; // Players x position
! /*20036*/ float z; // Players z position
! /*20040*/ float heading; // Players heading
! /*20044*/ uint32_t standState; // 0x64 = stand
! /*20048*/ uint32_t platinum_bank; // Platinum Pieces in Bank
! /*20052*/ uint32_t gold_bank; // Gold Pieces in Bank
! /*20056*/ uint32_t silver_bank; // Silver Pieces in Bank
! /*20060*/ uint32_t copper_bank; // Copper Pieces in Bank
! /*20064*/ uint32_t platinum_shared; // Shared platinum pieces ccc
! /*20068*/ uint8_t unknown18324[2124]; // Added 1088 for HoT
! /*22192*/ uint32_t expansions; // Bitmask for expansions ccc
! /*22196*/ uint8_t unknown20452[12];
! /*22208*/ uint32_t autosplit; // 0 = off, 1 = on ccc
! /*22212*/ uint8_t unknown20468[16];
! /*22228*/ uint16_t zoneId; // see zones.h ccc
! /*22230*/ uint16_t zoneInstance; // Instance id ccc
! /*22232*/ uint8_t unknown20486[992];
! /*23224*/ uint32_t leadAAActive; // 0 = leader AA off, 1 = leader AA on ccc
! /*23228*/ uint8_t unknown21484[4];
! /*23232*/ uint32_t ldon_guk_points; // Earned GUK points ccc
! /*23236*/ uint32_t ldon_mir_points; // Earned MIR points ccc
! /*23240*/ uint32_t ldon_mmc_points; // Earned MMC points ccc
! /*23244*/ uint32_t ldon_ruj_points; // Earned RUJ points ccc
! /*23248*/ uint32_t ldon_tak_points; // Earned TAK points ccc
! /*23252*/ uint32_t ldon_avail_points; // Available LDON points ccc
! /*23256*/ uint8_t unknown21512[144];
! /*23400*/ uint32_t tributeTime; // Time remaining on tribute (millisecs) ccc
! /*23404*/ uint32_t careerTribute; // Total favor points for this char ccc
! /*23408*/ uint32_t unknown21656; // *** Placeholder ccc
! /*23412*/ uint32_t currentTribute; // Current tribute points ccc
! /*23416*/ uint32_t unknown21664; // *** Placeholder
! /*23420*/ uint32_t tributeActive; // 0 = off, 1=on
! /*23424*/ TributeStruct tributes[MAX_TRIBUTES]; // Current tribute loadout ccc
! /*23464*/ uint8_t unknown21712[84]; // Added 208 bytes for HoT BETA ccc
! /*23548*/ float expGroupLeadAA; // Current group lead exp points ccc
! /*23552*/ uint32_t unknown21808;
! /*23556*/ float expRaidLeadAA; // Current raid lead AA exp points ccc
! /*23560*/ uint32_t unknown21816;
! /*23564*/ uint32_t groupLeadAAUnspent; // Unspent group lead AA points ccc
! /*23568*/ uint32_t raidLeadAAUnspent; // Unspent raid lead AA points ccc
! /*23572*/ uint32_t leadershipAAs[MAX_LEAD_AA]; // Leader AA ranks ccc
! /*23700*/ uint8_t unknown21956[128];
! /*23828*/ uint32_t airRemaining; // Air supply (seconds) ccc
! /*23832*/ uint8_t unknown22088[4608];
! /*28440*/ uint32_t expAA; // Exp earned in current AA point ccc
! /*28444*/ uint8_t unknown26700[40];
! /*28484*/ uint32_t currentRadCrystals; // Current count of radiant crystals ccc
! /*28488*/ uint32_t careerRadCrystals; // Total count of radiant crystals ever ccc
! /*28492*/ uint32_t currentEbonCrystals;// Current count of ebon crystals ccc
! /*28496*/ uint32_t careerEbonCrystals; // Total count of ebon crystals ever ccc
! /*28500*/ uint8_t groupAutoconsent; // 0=off, 1=on
! /*28501*/ uint8_t raidAutoconsent; // 0=off, 1=on
! /*28502*/ uint8_t guildAutoconsent; // 0=off, 1=on
! /*28503*/ uint8_t unknown26759[5]; // ***Placeholder (6/29/2005)
! /*28508*/ uint32_t showhelm; // 0=no, 1=yes
! /*28512*/ uint8_t unknown26768[1048]; // ***Placeholder (2/13/2007)
! /*29560*/
};
#if 0
diff -cr showeq-5.13.10.4.virgin/src/main.cpp showeq-5.13.10.4/src/main.cpp
*** showeq-5.13.10.4.virgin/src/main.cpp Thu Dec 30 12:38:59 2010
--- showeq-5.13.10.4/src/main.cpp Fri Nov 18 09:44:13 2011
***************
*** 175,180 ****
--- 175,194 ----
bool bOptionHelp = false;
+ #undef OFFTEST
+ #ifdef OFFTEST
+ {
+ struct charProfileStruct cps;
+ char *v0, *v1;
+
+ printf ("sizeof (charProfileStruct) = %d\n", sizeof (cps));
+ v0 = (char *) &cps;
+ v1 = (char *) &cps.leadershipAAs;
+ printf ("leadershipAAs=%d\n", v1 - v0);
+ exit (0);
+ }
+ #endif
+
/* Create application instance */
// QApplication::setStyle( new QWindowsStyle );
QApplication qapp (argc, argv);
diff -cr showeq-5.13.10.4.virgin/src/spawnshell.cpp showeq-5.13.10.4/src/spawnshell.cpp
*** showeq-5.13.10.4.virgin/src/spawnshell.cpp Fri Apr 15 04:07:22 2011
--- showeq-5.13.10.4/src/spawnshell.cpp Wed Nov 23 17:52:08 2011
***************
*** 592,597 ****
--- 592,604 ----
netStream.skipBytes(4);
}
+ if(spawn->otherData & 2) { // aura stuff
+ netStream.readText(); // skip 2 variable len strings
+ netStream.readText();
+ netStream.skipBytes(54); // and 54 static bytes
+ }
+
+
// skip facestyle, walk/run speeds, unknown5
netStream.skipBytes(13);
***************
*** 635,641 ****
strcpy(spawn->lastName, name.latin1());
}
! netStream.skipBytes(5);
spawn->petOwnerId = netStream.readUInt32NC();
--- 642,648 ----
strcpy(spawn->lastName, name.latin1());
}
! netStream.skipBytes(6);
spawn->petOwnerId = netStream.readUInt32NC();
diff -cr showeq-5.13.10.4.virgin/src/zones.h showeq-5.13.10.4/src/zones.h
*** showeq-5.13.10.4.virgin/src/zones.h Fri Dec 31 00:22:37 2010
--- showeq-5.13.10.4/src/zones.h Fri Nov 18 00:29:38 2011
***************
*** 707,716 ****
{ NULL, NULL }, // 697
{ NULL, NULL }, // 698
{ NULL, NULL }, // 699
{ "thulehouse1", "House of Thule" }, // 701
{ "thulehouse2", "House of Thule, Upper Floors" }, // 702
{ "housegarden", "The Grounds" }, // 703
! { "houselibrary", "The Library" }, // 704
{ "well", "The Well" }, // 705
{ "fallen", "Erudin Burning" }, // 706
{ "morellcastle", "Morell's Castle" }, // 707
--- 707,717 ----
{ NULL, NULL }, // 697
{ NULL, NULL }, // 698
{ NULL, NULL }, // 699
+ { "feerrott2", "The Feerrott" }, // 700
{ "thulehouse1", "House of Thule" }, // 701
{ "thulehouse2", "House of Thule, Upper Floors" }, // 702
{ "housegarden", "The Grounds" }, // 703
! { "thulelibrary", "The Library" }, // 704
{ "well", "The Well" }, // 705
{ "fallen", "Erudin Burning" }, // 706
{ "morellcastle", "Morell's Castle" }, // 707
***************
*** 730,747 ****
{ NULL, NULL }, // 721
{ NULL, NULL }, // 722
{ "phinterior1d1", "Dragon House Interior" }, // 723
! { NULL, NULL }, // 724
! { NULL, NULL }, // 725
! { NULL, NULL }, // 726
! { NULL, NULL }, // 727
! { NULL, NULL }, // 728
! { NULL, NULL }, // 729
! { NULL, NULL }, // 730
! { NULL, NULL }, // 731
! { NULL, NULL }, // 732
! { NULL, NULL }, // 733
! { NULL, NULL }, // 734
! { NULL, NULL }, // 735
{ NULL, NULL }, // 736
{ NULL, NULL }, // 737
{ NULL, NULL }, // 738
--- 731,748 ----
{ NULL, NULL }, // 721
{ NULL, NULL }, // 722
{ "phinterior1d1", "Dragon House Interior" }, // 723
! { "argath", "Argatch, Bastion of Illdaera" }, // 724
! { "arelis", "Valley of Lunanyn" }, // 725
! { "sarithcity", "Sarith, City of Tides" }, // 726
! { "rubak", "Rubak Oseka, Temple of the Sea" }, // 727
! { "beastdomain", "Beasts' Domain" }, // 728
! { "resplendent", "The Resplendent Temple" }, // 729
! { "pillarsalra", "Pillars of Alra" }, // 730
! { "windsong", "Windsong Sanctuary" }, // 731
! { "cityofbronze", "Erillion, City of Bronze" }, // 732
! { "sepulcher", "Sepulcher of Order" }, // 733
! { "eastsepulcher", "Sepulcher East" }, // 734
! { "westsepulcher", "Sepulcher West" }, // 735
{ NULL, NULL }, // 736
{ NULL, NULL }, // 737
{ NULL, NULL }, // 738