Code:
Index: conf/zoneopcodes.xml
===================================================================
--- conf/zoneopcodes.xml (revision 784)
+++ conf/zoneopcodes.xml (working copy)
@@ -3,33 +3,33 @@
<seqopcodes>
<!-- Critical opcodes used directly by ShowEQ -->
- <opcode id="48b7" name="OP_PlayerProfile" updated="03/13/13">
+ <opcode id="6b5b" name="OP_PlayerProfile" updated="04/17/13">
<comment>CharProfileCode</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="9e82" name="OP_ZoneEntry" updated="03/13/13">
+ <opcode id="31d8" name="OP_ZoneEntry" updated="04/17/13">
<comment>ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="6665" name="OP_TimeOfDay" updated="03/13/13">
+ <opcode id="3377" name="OP_TimeOfDay" updated="04/17/13">
<comment>TimeOfDayCode</comment>
<payload dir="server" typename="timeOfDayStruct" sizechecktype="match"/>
</opcode>
- <opcode id="23ef" name="OP_NewZone" updated="03/13/13">
+ <opcode id="0bf6" name="OP_NewZone" updated="04/17/13">
<comment>NewZoneCode</comment>
<payload dir="server" typename="newZoneStruct" sizechecktype="match"/>
</opcode>
- <opcode id="5ab7" name="OP_SpawnDoor" updated="03/13/13">
+ <opcode id="375d" name="OP_SpawnDoor" updated="04/17/13">
<comment>DoorSpawnsCode</comment>
<payload dir="server" typename="doorStruct" sizechecktype="modulus"/>
</opcode>
- <opcode id="6410" name="OP_GroundSpawn" updated="03/13/13">
+ <opcode id="3a2b" name="OP_GroundSpawn" updated="04/17/13">
<comment>MakeDropCode</comment>
<payload dir="server" typename="makeDropStruct" sizechecktype="none"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="2694" name="OP_SendZonePoints" updated="03/13/13">
+ <opcode id="41b8" name="OP_SendZonePoints" updated="04/17/13">
<comment>Coords in a zone that will port you to another zone</comment>
<payload dir="server" typename="zonePointsStruct" sizechecktype="none"/>
</opcode>
@@ -41,40 +41,40 @@
<comment>ExpUpdateCode</comment>
<payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="5906" name="OP_GuildMOTD" updated="03/13/13">
+ <opcode id="4e44" name="OP_GuildMOTD" updated="04/17/13">
<comment>GuildMOTD</comment>
<payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/>
</opcode>
- <opcode id="1ad3" name="OP_ClientUpdate" updated="03/13/13">
+ <opcode id="6962" name="OP_ClientUpdate" updated="04/17/13">
<comment>Position updates</comment>
<payload dir="server" typename="playerSpawnPosStruct" sizechecktype="match"/>
<payload dir="both" typename="playerSelfPosStruct" sizechecktype="match"/>
</opcode>
- <opcode id="1df9" name="OP_NpcMoveUpdate" updated="03/13/13">
+ <opcode id="5a39" name="OP_NpcMoveUpdate" updated="04/17/13">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="3c0e" name="OP_MobUpdate" updated="03/13/13">
+ <opcode id="6d4b" name="OP_MobUpdate" updated="04/17/13">
<comment>MobUpdateCode</comment>
<payload dir="both" typename="spawnPositionUpdate" sizechecktype="match"/>
</opcode>
- <opcode id="17f1" name="OP_DeleteSpawn" updated="03/13/13">
+ <opcode id="0b78" name="OP_DeleteSpawn" updated="04/17/13">
<comment>DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
- <opcode id="49e0" name="OP_RemoveSpawn" updated="03/13/13">
+ <opcode id="5279" name="OP_RemoveSpawn" updated="04/17/13">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
- <opcode id="43a6" name="OP_Death" updated="03/13/13">
+ <opcode id="1aa0" name="OP_Death" updated="04/17/13">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>
- <opcode id="18ea" name="OP_WearChange" updated="03/13/13">
+ <opcode id="1ff6" name="OP_WearChange" updated="04/17/13">
<comment>SpawnUpdateCode</comment>
<payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="3fe5" name="OP_SpawnAppearance" updated="03/13/13">
+ <opcode id="130f" name="OP_SpawnAppearance" updated="04/17/13">
<comment>SpawnAppearanceCode</comment>
<payload dir="both" typename="spawnAppearanceStruct" sizechecktype="match"/>
</opcode>
@@ -82,40 +82,40 @@
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
- <opcode id="462c" name="OP_HPUpdate" updated="03/13/13">
+ <opcode id="4c12" name="OP_HPUpdate" updated="04/17/13">
<comment>NpcHpUpdateCode Update HP % of a PC or NPC</comment>
<payload dir="both" typename="hpNpcUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="6719" name="OP_GuildMemberUpdate" updated="02/13/13">
+ <opcode id="665a" name="OP_GuildMemberUpdate" updated="04/17/13">
<comment>Info regarding guild members</comment>
<payload dir="server" typename="GuildMemberUpdate" sizechecktype="match"/>
</opcode>
- <opcode id="00c6" name="OP_ClickObject" updated="03/13/13">
+ <opcode id="6cb6" name="OP_ClickObject" updated="04/17/13">
<comment>Items dropped on the ground</comment>
<payload dir="both" typename="remDropStruct" sizechecktype="match"/>
</opcode>
- <opcode id="4965" name="OP_Action" updated="03/13/13">
+ <opcode id="7329" name="OP_Action" updated="04/17/13">
<comment>Spells cast etc</comment>
<payload dir="both" typename="actionStruct" sizechecktype="match"/>
<payload dir="both" typename="actionAltStruct" sizechecktype="match"/>
</opcode>
- <opcode id="002e" name="OP_Action2" updated="03/13/13">
+ <opcode id="4725" name="OP_Action2" updated="04/17/13">
<comment>Combat actions i.e. bash, kick etc</comment>
<payload dir="both" typename="action2Struct" sizechecktype="match"/>
</opcode>
- <opcode id="476f" name="OP_Consider" updated="03/13/13">
+ <opcode id="3815" name="OP_Consider" updated="04/17/13">
<comment>ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
- <opcode id="698f" name="OP_TargetMouse" updated="03/13/13">
+ <opcode id="3f43" name="OP_TargetMouse" updated="04/17/13">
<comment>Targeting a person - old ClientTargetCode</comment>
<payload dir="both" typename="clientTargetStruct" sizechecktype="match"/>
</opcode>
- <opcode id="362a" name="OP_SpawnRename" updated="03/13/13">
+ <opcode id="1063" name="OP_SpawnRename" updated="04/17/13">
<comment>Spawns getting renamed after initial NewSpawn</comment>
<payload dir="server" typename="spawnRenameStruct" sizechecktype="match"/>
</opcode>
- <opcode id="739c" name="OP_Illusion" updated="03/13/13">
+ <opcode id="1182" name="OP_Illusion" updated="04/17/13">
<comment>Spawn being illusioned (changing forms)</comment>
<payload dir="both" typename="spawnIllusionStruct" sizechecktype="match"/>
</opcode>
@@ -123,7 +123,7 @@
<comment>Server putting players into shroud form</comment>
<payload dir="server" typename="spawnShroudSelf" sizechecktype="none"/>
</opcode>
- <opcode id="6976" name="OP_ZoneChange" updated="03/13/13">
+ <opcode id="5538" name="OP_ZoneChange" updated="04/17/13">
<comment>old ZoneChangeCode</comment>
<payload dir="both" typename="zoneChangeStruct" sizechecktype="match"/>
</opcode>
@@ -167,31 +167,31 @@
<comment>old BuffDropCode</comment>
<payload dir="both" typename="buffStruct" sizechecktype="match"/>
</opcode>
- <opcode id="46b9" name="OP_BuffFadeMsg" updated="03/13/13">
+ <opcode id="6226" name="OP_BuffFadeMsg" updated="04/17/13">
<comment>SpellFadeCode</comment>
<payload dir="both" typename="spellFadedStruct" sizechecktype="none"/>
</opcode>
- <opcode id="436d" name="OP_BeginCast" updated="03/13/13">
+ <opcode id="557a" name="OP_BeginCast" updated="04/17/13">
<comment>BeginCastCode</comment>
<payload dir="both" typename="beginCastStruct" sizechecktype="match"/>
</opcode>
- <opcode id="56ab" name="OP_CastSpell" updated="03/13/13">
+ <opcode id="3f6d" name="OP_CastSpell" updated="04/17/13">
<comment>StartCastCode</comment>
<payload dir="both" typename="startCastStruct" sizechecktype="match"/>
</opcode>
- <opcode id="21d2" name="OP_SwapSpell" updated="03/13/13">
+ <opcode id="3217" name="OP_SwapSpell" updated="04/17/13">
<comment>TradeSpellBookSlotsCode</comment>
<payload dir="both" typename="tradeSpellBookSlotsStruct" sizechecktype="match"/>
</opcode>
- <opcode id="4d4b" name="OP_MemorizeSpell" updated="03/13/13">
+ <opcode id="7bc9" name="OP_MemorizeSpell" updated="04/17/13">
<comment>MemSpellCode</comment>
<payload dir="both" typename="memSpellStruct" sizechecktype="match"/>
</opcode>
- <opcode id="5168" name="OP_InspectAnswer" updated="03/13/13">
+ <opcode id="5569" name="OP_InspectAnswer" updated="04/17/13">
<comment>InspectDataCode</comment>
<payload dir="both" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>
- <opcode id="4773" name="OP_Emote" updated="03/13/13">
+ <opcode id="0dc9" name="OP_Emote" updated="04/17/13">
<comment>EmoteTextCode</comment>
<payload dir="both" typename="emoteTextStruct" sizechecktype="none"/>
</opcode>
@@ -317,7 +317,7 @@
<comment>List of guild members - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="48e4" name="OP_ManaUpdate" updated="03/13/13">
+ <opcode id="250e" name="OP_ManaUpdate" updated="04/17/13">
<comment>Mana Update opcode - 10 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
Index: src/spawnshell.cpp
===================================================================
--- src/spawnshell.cpp (revision 784)
+++ src/spawnshell.cpp (working copy)
@@ -601,7 +601,7 @@
}
*/
- if(spawn->otherData & 4) // aura stuff
+ if(spawn->aura) // aura stuff
{
netStream.readText(); // skip 2 variable len strings
netStream.readText();
@@ -708,15 +708,14 @@
spawn->posData[2] = netStream.readUInt32NC();
spawn->posData[3] = netStream.readUInt32NC();
spawn->posData[4] = netStream.readUInt32NC();
- spawn->posData[5] = netStream.readUInt32NC();
- if(spawn->otherData & 16)
+ if(spawn->hasTitle)
{
name = netStream.readText();
strcpy(spawn->title, name.latin1());
}
- if(spawn->otherData & 32)
+ if(spawn->hasSuffix)
{
name = netStream.readText();
strcpy(spawn->suffix, name.latin1());
@@ -910,22 +909,20 @@
{
/*0000*/ uint16_t spawnId;
/*0002*/ uint16_t spawnId2;
- /*0004*/ unsigned pitch:12; //
- signed deltaHeading:10;// change in heading
- unsigned padding05:10;
- /*0008*/ signed deltaZ:13; // change in z
- unsigned heading:12; // heading
- unsigned padding01:7;
- /*0012*/ signed z:19; // z coord
- unsigned padding02:13;
- /*0016*/ signed x:19; // x coord
+ /*0004*/ unsigned pitch:12;
+ signed y:19; // y coord
+ unsigned padding03:01;
+ /*0008*/ signed z:19; // z coord
signed deltaX:13; // change in x
- /*0020*/ signed y:19; // y coord
- signed animation:10; // velocity
- unsigned padding04:3;
- /*0024*/ signed deltaY:13; // change in y
- unsigned padding03:19; //Unknown
- /*0028*/
+ /*0012*/ signed deltaZ:13; // change in z
+ unsigned heading:12; // heading
+ unsigned padding01:07;
+ /*0016*/ signed deltaY:13; // change in y
+ signed x:19; // x coord
+ /*0020*/ signed animation:10; // velocity
+ signed deltaHeading:10; // change in heading
+ unsigned padding02:12;
+ /*0024*/
};
#pragma pack(0)
struct pos *p = (struct pos *)data;
Index: src/player.cpp
===================================================================
--- src/player.cpp (revision 784)
+++ src/player.cpp (working copy)
@@ -853,20 +853,20 @@
/*0004*/ uint16_t unknown0004; // ***Placeholder
/*0006*/ unsigned pitch:12; // pitch (up/down heading)
unsigned padding1:20; // ***Placeholder
- /*0010*/ float y; // y coord (2nd loc value)
- /*0014*/ unsigned heading:12; // Directional heading
- unsigned padding2:10; // ***Placeholder
+ /*0010*/ float deltaX; // Change in x
+ /*0014*/ signed animation:10; // velocity
+ unsigned padding2:12; // ***Placeholder
unsigned padding3:10; // ***Placeholder
- /*0018*/ float z; // z coord (3rd loc value)
- /*0022*/ signed animation:10; // velocity
- unsigned padding6:22; // **Placeholder
- /*0026*/ float deltaZ; // Change in z
- /*0030*/ float x; // x coord (1st loc value)
- /*0034*/ float deltaX; // Change in x
- /*0038*/ float deltaY; // Change in y
- /*0042*/ signed deltaHeading:10; // change in heading
+ /*0018*/ float x; // x coord (1st loc value)
+ /*0022*/ unsigned heading:12; // Directional heading
+ unsigned padding6:20; // **Placeholder
+ /*0026*/ float z; // z coord (3rd loc value)
+ /*0030*/ signed deltaHeading:10; // change in heading
unsigned padding4:10; // ***Placeholder
unsigned padding5:12; // ***Placeholder
+ /*0034*/ float deltaZ; // Change in z
+ /*0038*/ float deltaY; // Change in y
+ /*0042*/ float y; // y coord (2nd loc value)
/*0046*/
};
#pragma pack(0)
Index: src/spawn.cpp
===================================================================
--- src/spawn.cpp (revision 784)
+++ src/spawn.cpp (working copy)
@@ -435,6 +435,9 @@
setTypeflag(s->bodytype);
setGM(s->gm);
+ setIsMount(calcIsMount(s->race, s->level));
+ setIsMercenary(s->isMercenary);
+ setIsAura(s->aura);
// If it is a corpse with Unknown (NPC) religion.
if ((s->NPC == SPAWN_PC_CORPSE) && (s->deity == DEITY_UNKNOWN))
@@ -979,6 +982,53 @@
d << m_lastName;
}
+bool Spawn::calcIsMount(uint32_t race, uint8_t level)
+{
+ bool isMountRace;
+ switch (race)
+ {
+ case 216: //Horse
+ case 348: //Drogmore
+ case 517: //Nightmare/Unicorn
+ case 518: //Horse
+ case 519: //Nightmare/Unicorn
+ case 594: //Worg
+ case 623: //Wrulon Mount
+ case 625: //Sokokar Mount
+ case 631: //Hydra Mount
+ case 652: //Cliknar Mount
+ case 654: //Spider Mount
+ case 655: //Bear Mount
+ case 656: //Rat Mount
+ case 657: //Sessiloid Mount
+ case 671: //Topiary Lion Mount
+ case 672: //Rot Dog Mount
+ case 673: //Goral Mount
+ case 674: //Selyran Mount
+ case 675: //Sclera Mount
+ case 676: //Braxy Mount
+ case 677: //Kangon Mount
+ case 679: //Wurm Mount
+ case 682: //Helicopter backpack
+ case 684: //Steam Escalator
+ case 709: //Skystrider
+ case 721: //Severed Hand
+ isMountRace = true;
+ break;
+ default:
+ isMountRace = false;
+ break;
+ }
+ if (level == 30 && isMountRace)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
//----------------------------------------------------------------------
// Door
Door::Door(const doorStruct* d)
Index: src/spawnmonitor.cpp
===================================================================
--- src/spawnmonitor.cpp (revision 784)
+++ src/spawnmonitor.cpp (working copy)
@@ -229,7 +229,7 @@
void SpawnMonitor::checkSpawnPoint(const Spawn* spawn )
{
// ignore everything but mobs
- if ( ( spawn->NPC() != SPAWN_NPC ) || ( spawn->petOwnerID() != 0 ) || (spawn->level() == 30 && spawn->race() == 216) )
+ if ( ( spawn->NPC() != SPAWN_NPC ) || ( spawn->petOwnerID() != 0 ) || spawn->isMount() || spawn->isAura() || spawn->isMercenary() )
return;
QString key = SpawnPoint::key( *spawn );
Index: src/spawn.h
===================================================================
--- src/spawn.h (revision 784)
+++ src/spawn.h (working copy)
@@ -284,6 +284,12 @@
{ return (raceTeam() == spawn->raceTeam()); }
bool isSameDeityTeam(const Spawn* spawn) const
{ return (deityTeam() == spawn->deityTeam()); }
+ bool isMount() const
+ { return m_isMount; }
+ bool isAura() const
+ { return m_isAura; }
+ bool isMercenary() const
+ { return m_isMercenary; }
// virtual set method overload
void setPos(int16_t x, int16_t Pos, int16_t z,
@@ -323,6 +329,9 @@
void setNPC(uint8_t NPC) { m_NPC = NPC; }
void setTypeflag(uint8_t typeflag) { m_typeflag = typeflag; }
void setGM(uint8_t gm) { m_gm = gm; }
+ void setIsMount(bool isMount) { m_isMount = isMount; }
+ void setIsMercenary(uint8_t isMercenary) {m_isMercenary = (isMercenary != 0); }
+ void setIsAura(unsigned aura) {m_isAura = (aura != 0); }
void setID(uint16_t id) { m_ID = id; }
void setLastName(const char * lastName)
{ m_lastName = QString::fromUtf8(lastName); }
@@ -334,6 +343,7 @@
protected:
void calcRaceTeam();
void calcDeityTeam();
+ bool calcIsMount(uint32_t, uint8_t);
// spawn specific data
QString m_lastName;
@@ -364,6 +374,9 @@
uint8_t m_typeflag;
uint8_t m_animation;
uint8_t m_gm;
+ bool m_isMount;
+ bool m_isMercenary;
+ bool m_isAura;
bool m_considered;
bool m_notUpdated;
};
Index: src/everquest.h
===================================================================
--- src/everquest.h (revision 784)
+++ src/everquest.h (working copy)
@@ -1053,11 +1053,25 @@
unsigned targetcyclable:1;
unsigned padding1:2;
unsigned trader:1;
- unsigned buyer:1;
+ unsigned padding8:1;
};
int32_t miscData;
};
-/*0000*/ uint8_t otherData; // & 4 - has title, & 8 - has suffix, & 1 - it's a chest or untargetable
+/*0000*/ union
+ {
+ struct
+ {
+ unsigned buyer:1;
+ unsigned offline:1;
+ unsigned aura:1;
+ unsigned padding9:1;
+ unsigned hasTitle:1;
+ unsigned hasSuffix:1;
+ unsigned padding10:1;
+ unsigned padding11:1;
+ };
+ uint8_t otherData;
+ };
/*0000*/ uint32_t race;
/*0000*/ uint8_t charProperties;
/*0000*/ uint32_t bodytype;
@@ -1077,20 +1091,18 @@
struct
{
unsigned pitch:12;
- signed deltaHeading:10;// change in heading
- unsigned padding05:10;
+ signed y:19; // y coord
+ unsigned padding03:01;
+ signed z:19; // z coord
+ signed deltaX:13; // change in x
signed deltaZ:13; // change in z
unsigned heading:12; // heading
- unsigned padding01:7;
- signed z:19; // z coord
- unsigned padding02:13;
+ unsigned padding01:07;
+ signed deltaY:13; // change in y
signed x:19; // x coord
- signed deltaX:13; // change in x
- signed y:19; // y coord
signed animation:10; // velocity
- unsigned padding04:3;
- signed deltaY:13; // change in y
- unsigned padding03:19; //Unknown
+ signed deltaHeading:10; // change in heading
+ unsigned padding02:12;
};
int32_t posData[5];
};
@@ -2330,7 +2342,7 @@
/*
** Player Position Update
-** Length: 28 Octets
+** Length: 24 Octets
** OpCode: PlayerPosCode
*/
@@ -2339,21 +2351,19 @@
/*0000*/ uint16_t spawnId;
/*0002*/ uint16_t spawnId2;
/*0004*/ unsigned pitch:12;
- signed deltaHeading:10;// change in heading
- unsigned padding05:10;
-/*0008*/ signed deltaZ:13; // change in z
- unsigned heading:12; // heading
- unsigned padding01:7;
-/*0012*/ signed z:19; // z coord
- unsigned padding02:13;
-/*0016*/ signed x:19; // x coord
+ signed y:19; // y coord
+ unsigned padding03:01;
+/*0008*/ signed z:19; // z coord
signed deltaX:13; // change in x
-/*0020*/ signed y:19; // y coord
- signed animation:10; // velocity
- unsigned padding04:3;
-/*0024*/ signed deltaY:13; // change in y
- unsigned padding03:19; //Unknown
-/*0028*/
+/*0012*/ signed deltaZ:13; // change in z
+ unsigned heading:12; // heading
+ unsigned padding01:07;
+/*0016*/ signed deltaY:13; // change in y
+ signed x:19; // x coord
+/*0020*/ signed animation:10; // velocity
+ signed deltaHeading:10; // change in heading
+ unsigned padding02:12;
+/*0024*/
};
/*
@@ -2369,20 +2379,20 @@
/*0004*/ uint16_t unknown0004; // ***Placeholder
/*0006*/ unsigned pitch:12; // pitch (up/down heading)
unsigned padding1:20; // ***Placeholder
-/*0010*/ float y; // y coord (2nd loc value)
-/*0014*/ unsigned heading:12; // Directional heading
- unsigned padding2:10; // ***Placeholder
+/*0010*/ float deltaX; // Change in x
+/*0014*/ signed animation:10; // velocity
+ unsigned padding2:12; // ***Placeholder
unsigned padding3:10; // ***Placeholder
-/*0018*/ float z; // z coord (3rd loc value)
-/*0022*/ signed animation:10; // velocity
- unsigned padding6:22; // **Placeholder
-/*0026*/ float deltaZ; // Change in z
-/*0030*/ float x; // x coord (1st loc value)
-/*0034*/ float deltaX; // Change in x
-/*0038*/ float deltaY; // Change in y
-/*0042*/ signed deltaHeading:10; // change in heading
- unsigned padding4:10; // ***Placeholder
+/*0018*/ float x; // x coord (1st loc value)
+/*0022*/ unsigned heading:12; // Directional heading
+ unsigned padding6:20; // **Placeholder
+/*0026*/ float z; // z coord (3rd loc value)
+/*0030*/ signed deltaHeading:10; // change in heading
+ unsigned padding4:10; // ***Placeholder
unsigned padding5:12; // ***Placeholder
+/*0034*/ float deltaZ; // Change in z
+/*0038*/ float deltaY; // Change in y
+/*0042*/ float y; // y coord (2nd loc value)
/*0046*/
};