|
@@ -4303,6 +4303,7 @@ static int clif_calc_walkdelay(struct block_list *bl,int delay, char type, int64
|
|
/// Sends a 'damage' packet (src performs action on dst)
|
|
/// Sends a 'damage' packet (src performs action on dst)
|
|
/// 008a <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.W <div>.W <type>.B <damage2>.W (ZC_NOTIFY_ACT)
|
|
/// 008a <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.W <div>.W <type>.B <damage2>.W (ZC_NOTIFY_ACT)
|
|
/// 02e1 <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.L <div>.W <type>.B <damage2>.L (ZC_NOTIFY_ACT2)
|
|
/// 02e1 <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.L <div>.W <type>.B <damage2>.L (ZC_NOTIFY_ACT2)
|
|
|
|
+/// 08c8 <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.L <IsSPDamage>.B <div>.W <type>.B <damage2>.L (ZC_NOTIFY_ACT3) //! TODO
|
|
/// type:
|
|
/// type:
|
|
/// 0 = damage [ damage: total damage, div: amount of hits, damage2: assassin dual-wield damage ]
|
|
/// 0 = damage [ damage: total damage, div: amount of hits, damage2: assassin dual-wield damage ]
|
|
/// 1 = pick up item
|
|
/// 1 = pick up item
|
|
@@ -4507,72 +4508,108 @@ void clif_getareachar_item(struct map_session_data* sd,struct flooritem_data* fi
|
|
WFIFOSET(fd,packet_len(0x9d));
|
|
WFIFOSET(fd,packet_len(0x9d));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/// Notifes client about Graffiti
|
|
|
|
+/// 01c9 <id>.L <creator id>.L <x>.W <y>.W <unit id>.B <visible>.B <has msg>.B <msg>.80B (ZC_SKILL_ENTRY2)
|
|
|
|
+static void clif_graffiti(struct block_list *bl, struct skill_unit *unit, enum send_target target) {
|
|
|
|
+ unsigned char buf[128];
|
|
|
|
+
|
|
|
|
+ nullpo_retv(bl);
|
|
|
|
+ nullpo_retv(unit);
|
|
|
|
|
|
|
|
+ WBUFW(buf, 0) = 0x1c9;
|
|
|
|
+ WBUFL(buf, 2) = unit->bl.id;
|
|
|
|
+ WBUFL(buf, 6) = unit->group->src_id;
|
|
|
|
+ WBUFW(buf,10) = unit->bl.x;
|
|
|
|
+ WBUFW(buf,12) = unit->bl.y;
|
|
|
|
+ WBUFB(buf,14) = unit->group->unit_id;
|
|
|
|
+ WBUFB(buf,15) = 1;
|
|
|
|
+ WBUFB(buf,16) = 1;
|
|
|
|
+ safestrncpy((char*)WBUFP(buf,17),unit->group->valstr,MESSAGE_SIZE);
|
|
|
|
+ clif_send(buf,packet_len(0x1c9),bl,target);
|
|
|
|
+}
|
|
|
|
|
|
/// Notifies the client of a skill unit.
|
|
/// Notifies the client of a skill unit.
|
|
/// 011f <id>.L <creator id>.L <x>.W <y>.W <unit id>.B <visible>.B (ZC_SKILL_ENTRY)
|
|
/// 011f <id>.L <creator id>.L <x>.W <y>.W <unit id>.B <visible>.B (ZC_SKILL_ENTRY)
|
|
-/// 01c9 <id>.L <creator id>.L <x>.W <y>.W <unit id>.B <visible>.B <has msg>.B <msg>.80B (ZC_SKILL_ENTRY2)
|
|
|
|
/// 08c7 <lenght>.W <id> L <creator id>.L <x>.W <y>.W <unit id>.B <range>.W <visible>.B (ZC_SKILL_ENTRY3)
|
|
/// 08c7 <lenght>.W <id> L <creator id>.L <x>.W <y>.W <unit id>.B <range>.W <visible>.B (ZC_SKILL_ENTRY3)
|
|
/// 099f <lenght>.W <id> L <creator id>.L <x>.W <y>.W <unit id>.L <range>.W <visible>.B (ZC_SKILL_ENTRY4)
|
|
/// 099f <lenght>.W <id> L <creator id>.L <x>.W <y>.W <unit id>.L <range>.W <visible>.B (ZC_SKILL_ENTRY4)
|
|
-static void clif_getareachar_skillunit(int type,struct map_session_data *sd, struct skill_unit *unit)
|
|
|
|
-{
|
|
|
|
- int fd = sd->fd;
|
|
|
|
- int header=0, unit_id=0, pos=0;
|
|
|
|
|
|
+/// 09ca <lenght>.W <id> L <creator id>.L <x>.W <y>.W <unit id>.L <range>.B <visible>.B <skill level>.B (ZC_SKILL_ENTRY5)
|
|
|
|
+void clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *unit, enum send_target target) {
|
|
|
|
+ int header = 0, unit_id = 0, pos = 0, fd = 0, len = -1;
|
|
|
|
+ unsigned char buf[128];
|
|
|
|
+
|
|
|
|
+ nullpo_retv(bl);
|
|
|
|
+ nullpo_retv(unit);
|
|
|
|
+
|
|
|
|
+ if (bl->type == BL_PC)
|
|
|
|
+ fd = ((TBL_PC*)bl)->fd;
|
|
|
|
|
|
- if( unit->group->state.guildaura )
|
|
|
|
|
|
+ if (unit->group->state.guildaura)
|
|
return;
|
|
return;
|
|
|
|
+
|
|
if (battle_config.traps_setting&1 && skill_get_inf2(unit->group->skill_id)&INF2_TRAP)
|
|
if (battle_config.traps_setting&1 && skill_get_inf2(unit->group->skill_id)&INF2_TRAP)
|
|
- unit_id=UNT_DUMMYSKILL; //Use invisible unit id for traps.
|
|
|
|
|
|
+ unit_id = UNT_DUMMYSKILL; //Use invisible unit id for traps.
|
|
|
|
+ else if (unit->group->state.song_dance&0x1 && unit->val2&UF_ENSEMBLE)
|
|
|
|
+ unit_id = unit->val2&UF_SONG ? UNT_DISSONANCE : UNT_UGLYDANCE;
|
|
else if (skill_get_unit_flag(unit->group->skill_id) & UF_RANGEDSINGLEUNIT && !(unit->val2 & UF_RANGEDSINGLEUNIT))
|
|
else if (skill_get_unit_flag(unit->group->skill_id) & UF_RANGEDSINGLEUNIT && !(unit->val2 & UF_RANGEDSINGLEUNIT))
|
|
- unit_id=UNT_DUMMYSKILL; //Use invisible unit id for other case of rangedsingle unit
|
|
|
|
|
|
+ unit_id = UNT_DUMMYSKILL; //Use invisible unit id for other case of rangedsingle unit
|
|
else
|
|
else
|
|
- unit_id=unit->group->unit_id;
|
|
|
|
|
|
+ unit_id = unit->group->unit_id;
|
|
|
|
|
|
#if PACKETVER >= 3
|
|
#if PACKETVER >= 3
|
|
- if(unit->group->unit_id==UNT_GRAFFITI) // Graffiti [Valaris]
|
|
|
|
- type = 2;
|
|
|
|
|
|
+ if (unit_id == UNT_GRAFFITI) { // Graffiti [Valaris]
|
|
|
|
+ clif_graffiti(bl, unit, target);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
#endif
|
|
#endif
|
|
|
|
|
|
- switch(type){
|
|
|
|
- case 2: header=0x1c9; break;
|
|
|
|
- case 3: header=0x8c7; break;
|
|
|
|
- case 4: header=0x99f; break;
|
|
|
|
- default:
|
|
|
|
- case 1: header=0x11f; break;
|
|
|
|
- }
|
|
|
|
|
|
+#if PACKETVER <= 20120702
|
|
|
|
+ header = 0x011f;
|
|
|
|
+//#if PACKETVER < 20110718
|
|
|
|
+// header = 0x011f;
|
|
|
|
+//#elif PACKETVER < 20121212
|
|
|
|
+// header = 0x08c7;
|
|
|
|
+#elif PACKETVER < 20130731
|
|
|
|
+ header = 0x099f;
|
|
|
|
+#else
|
|
|
|
+ header = 0x09ca;
|
|
|
|
+#endif
|
|
|
|
|
|
- WFIFOHEAD(fd,packet_len(header));
|
|
|
|
- WFIFOW(fd,pos)=header;
|
|
|
|
- if(type==3 || type==4){
|
|
|
|
- WFIFOW(fd, pos+2)=packet_len(header);
|
|
|
|
- pos +=2;
|
|
|
|
- }
|
|
|
|
- WFIFOL(fd,pos+2)=unit->bl.id;
|
|
|
|
- WFIFOL(fd,pos+6)=unit->group->src_id;
|
|
|
|
- WFIFOW(fd,pos+10)=unit->bl.x;
|
|
|
|
- WFIFOW(fd,pos+12)=unit->bl.y;
|
|
|
|
- switch(type){
|
|
|
|
- case 1: WFIFOB(fd,pos+14)=unit_id;
|
|
|
|
- WFIFOB(fd,pos+15)=1;
|
|
|
|
|
|
+ len = packet_len(header);
|
|
|
|
+ WBUFW(buf,pos) = header;
|
|
|
|
+ if (header != 0x011f) {
|
|
|
|
+ WBUFW(buf, pos+2) = len;
|
|
|
|
+ pos += 2;
|
|
|
|
+ }
|
|
|
|
+ WBUFL(buf,pos+2) = unit->bl.id;
|
|
|
|
+ WBUFL(buf,pos+6) = unit->group->src_id;
|
|
|
|
+ WBUFW(buf,pos+10) = unit->bl.x;
|
|
|
|
+ WBUFW(buf,pos+12) = unit->bl.y;
|
|
|
|
+ switch (header) {
|
|
|
|
+ case 0x011f:
|
|
|
|
+ WBUFB(buf,pos+14) = unit_id;
|
|
|
|
+ WBUFB(buf,pos+15) = 1;
|
|
break;
|
|
break;
|
|
- case 2: WFIFOB(fd,pos+14)=unit_id;
|
|
|
|
- WFIFOB(fd,pos+15)=1;
|
|
|
|
- WFIFOB(fd,pos+16)=1;
|
|
|
|
- safestrncpy((char*)WFIFOP(fd,pos+17),unit->group->valstr,MESSAGE_SIZE);
|
|
|
|
|
|
+ case 0x08c7:
|
|
|
|
+ WBUFB(buf,pos+14) = unit_id;
|
|
|
|
+ WBUFW(buf,pos+15) = unit->range;
|
|
|
|
+ WBUFB(buf,pos+17) = 1;
|
|
break;
|
|
break;
|
|
- case 3: WFIFOB(fd,pos+14)=unit_id;
|
|
|
|
- WFIFOW(fd,pos+15)=unit->range;
|
|
|
|
- WFIFOB(fd,pos+17)=1; //visible
|
|
|
|
|
|
+ case 0x099f:
|
|
|
|
+ WBUFL(buf,pos+14) = unit_id;
|
|
|
|
+ WBUFW(buf,pos+18) = unit->range;
|
|
|
|
+ WBUFB(buf,pos+20) = 1;
|
|
break;
|
|
break;
|
|
- case 4: WFIFOL(fd,pos+14)=unit_id; pos += 3;
|
|
|
|
- WFIFOW(fd,pos+15)=unit->range;
|
|
|
|
- WFIFOB(fd,pos+17)=1;
|
|
|
|
|
|
+ case 0x09ca:
|
|
|
|
+ WBUFL(buf,pos+14) = unit_id;
|
|
|
|
+ WBUFB(buf,pos+18) = (unsigned char)unit->range;
|
|
|
|
+ WBUFB(buf,pos+19) = 1;
|
|
|
|
+ WBUFB(buf,pos+20) = (unsigned char)unit->group->skill_lv;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- WFIFOSET(fd,packet_len(header));
|
|
|
|
|
|
+ clif_send(buf, len, bl, target);
|
|
|
|
|
|
- if(unit->group->skill_id == WZ_ICEWALL)
|
|
|
|
- clif_changemapcell(fd,unit->bl.m,unit->bl.x,unit->bl.y,5,SELF);
|
|
|
|
|
|
+ if (unit->group->skill_id == WZ_ICEWALL)
|
|
|
|
+ clif_changemapcell(fd, unit->bl.m, unit->bl.x, unit->bl.y, 5, SELF);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -4641,7 +4678,7 @@ static int clif_getareachar(struct block_list* bl,va_list ap)
|
|
clif_getareachar_item(sd,(struct flooritem_data*) bl);
|
|
clif_getareachar_item(sd,(struct flooritem_data*) bl);
|
|
break;
|
|
break;
|
|
case BL_SKILL:
|
|
case BL_SKILL:
|
|
- clif_getareachar_skillunit(1,sd,(TBL_SKILL*)bl);
|
|
|
|
|
|
+ clif_getareachar_skillunit(&sd->bl, (TBL_SKILL*)bl, SELF);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
if(&sd->bl == bl)
|
|
if(&sd->bl == bl)
|
|
@@ -4725,7 +4762,7 @@ int clif_insight(struct block_list *bl,va_list ap)
|
|
clif_getareachar_item(tsd,(struct flooritem_data*)bl);
|
|
clif_getareachar_item(tsd,(struct flooritem_data*)bl);
|
|
break;
|
|
break;
|
|
case BL_SKILL:
|
|
case BL_SKILL:
|
|
- clif_getareachar_skillunit(1,tsd,(TBL_SKILL*)bl);
|
|
|
|
|
|
+ clif_getareachar_skillunit(&tsd->bl, (TBL_SKILL*)bl, SELF);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
clif_getareachar_unit(tsd,bl);
|
|
clif_getareachar_unit(tsd,bl);
|
|
@@ -5218,51 +5255,6 @@ void clif_skill_poseffect(struct block_list *src,uint16 skill_id,int val,int x,i
|
|
clif_send(buf,packet_len(0x117),src,AREA);
|
|
clif_send(buf,packet_len(0x117),src,AREA);
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
-/*==========================================
|
|
|
|
- * Tells all client's nearby 'unit' sight range that it spawned
|
|
|
|
- *------------------------------------------*/
|
|
|
|
-//FIXME: this is just an AREA version of clif_getareachar_skillunit()
|
|
|
|
-void clif_skill_setunit(struct skill_unit *unit)
|
|
|
|
-{
|
|
|
|
- unsigned char buf[128];
|
|
|
|
-
|
|
|
|
- nullpo_retv(unit);
|
|
|
|
-
|
|
|
|
- if( unit->group->state.guildaura )
|
|
|
|
- return;
|
|
|
|
-
|
|
|
|
-#if PACKETVER >= 3
|
|
|
|
- if(unit->group->unit_id==UNT_GRAFFITI) { // Graffiti [Valaris]
|
|
|
|
- WBUFW(buf, 0)=0x1c9;
|
|
|
|
- WBUFL(buf, 2)=unit->bl.id;
|
|
|
|
- WBUFL(buf, 6)=unit->group->src_id;
|
|
|
|
- WBUFW(buf,10)=unit->bl.x;
|
|
|
|
- WBUFW(buf,12)=unit->bl.y;
|
|
|
|
- WBUFB(buf,14)=unit->group->unit_id;
|
|
|
|
- WBUFB(buf,15)=1;
|
|
|
|
- WBUFB(buf,16)=1;
|
|
|
|
- safestrncpy((char*)WBUFP(buf,17),unit->group->valstr,MESSAGE_SIZE);
|
|
|
|
- clif_send(buf,packet_len(0x1c9),&unit->bl,AREA);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-#endif
|
|
|
|
- WBUFW(buf, 0)=0x11f;
|
|
|
|
- WBUFL(buf, 2)=unit->bl.id;
|
|
|
|
- WBUFL(buf, 6)=unit->group->src_id;
|
|
|
|
- WBUFW(buf,10)=unit->bl.x;
|
|
|
|
- WBUFW(buf,12)=unit->bl.y;
|
|
|
|
- if (unit->group->state.song_dance&0x1 && unit->val2&UF_ENSEMBLE)
|
|
|
|
- WBUFB(buf,14)=unit->val2&UF_SONG?UNT_DISSONANCE:UNT_UGLYDANCE;
|
|
|
|
- else if (skill_get_unit_flag(unit->group->skill_id) & UF_RANGEDSINGLEUNIT && !(unit->val2 & UF_RANGEDSINGLEUNIT))
|
|
|
|
- WBUFB(buf, 14) = UNT_DUMMYSKILL; // Only display the unit at center.
|
|
|
|
- else
|
|
|
|
- WBUFB(buf,14)=unit->group->unit_id;
|
|
|
|
- WBUFB(buf,15)=1; // ignored by client (always gets set to 1)
|
|
|
|
- clif_send(buf,packet_len(0x11f),&unit->bl,AREA);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
/// Presents a list of available warp destinations (ZC_WARPLIST).
|
|
/// Presents a list of available warp destinations (ZC_WARPLIST).
|
|
/// 011c <skill id>.W { <map name>.16B }*4
|
|
/// 011c <skill id>.W { <map name>.16B }*4
|
|
void clif_skill_warppoint(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv, unsigned short map1, unsigned short map2, unsigned short map3, unsigned short map4)
|
|
void clif_skill_warppoint(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv, unsigned short map1, unsigned short map2, unsigned short map3, unsigned short map4)
|
|
@@ -5473,9 +5465,7 @@ void clif_cooking_list(struct map_session_data *sd, int trigger, uint16 skill_id
|
|
/// Notifies clients of a status change.
|
|
/// Notifies clients of a status change.
|
|
/// 0196 <index>.W <id>.L <state>.B (ZC_MSG_STATE_CHANGE) [used for ending status changes and starting them on non-pc units (when needed)]
|
|
/// 0196 <index>.W <id>.L <state>.B (ZC_MSG_STATE_CHANGE) [used for ending status changes and starting them on non-pc units (when needed)]
|
|
/// 043f <index>.W <id>.L <state>.B <remain msec>.L { <val>.L }*3 (ZC_MSG_STATE_CHANGE2) [used exclusively for starting statuses on pcs]
|
|
/// 043f <index>.W <id>.L <state>.B <remain msec>.L { <val>.L }*3 (ZC_MSG_STATE_CHANGE2) [used exclusively for starting statuses on pcs]
|
|
-/// 08ff <id>.L <index>.W <remain msec>.L { <val>.L }*3 (PACKETVER >= 20111108)
|
|
|
|
-/// 0983 <index>.W <id>.L <state>.B <total msec>.L <remain msec>.L { <val>.L }*3 (PACKETVER >= 20120618)
|
|
|
|
-/// 0984 <id>.L <index>.W <total msec>.L <remain msec>.L { <val>.L }*3 (PACKETVER >= 20120618)
|
|
|
|
|
|
+/// 0983 <index>.W <id>.L <state>.B <total msec>.L <remain msec>.L { <val>.L }*3 (ZC_MSG_STATE_CHANGE3) (PACKETVER >= 20120618)
|
|
void clif_status_change(struct block_list *bl,int type,int flag,int tick,int val1, int val2, int val3)
|
|
void clif_status_change(struct block_list *bl,int type,int flag,int tick,int val1, int val2, int val3)
|
|
{
|
|
{
|
|
unsigned char buf[32];
|
|
unsigned char buf[32];
|
|
@@ -5549,6 +5539,12 @@ void clif_status_change2(struct block_list *bl, int tid, enum send_target target
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+/// 08ff <id>.L <index>.W <remain msec>.L { <val>.L }*3 (ZC_EFST_SET_ENTER) (PACKETVER >= 20111108)
|
|
|
|
+/// 0984 <id>.L <index>.W <total msec>.L <remain msec>.L { <val>.L }*3 (ZC_EFST_SET_ENTER2) (PACKETVER >= 20120618)
|
|
|
|
+//! TODO
|
|
|
|
+//void clif_efst_enter();
|
|
|
|
+
|
|
|
|
+
|
|
/// Send message (modified by [Yor]) (ZC_NOTIFY_PLAYERCHAT).
|
|
/// Send message (modified by [Yor]) (ZC_NOTIFY_PLAYERCHAT).
|
|
/// 008e <packet len>.W <message>.?B
|
|
/// 008e <packet len>.W <message>.?B
|
|
void clif_displaymessage(const int fd, const char* mes)
|
|
void clif_displaymessage(const int fd, const char* mes)
|
|
@@ -17742,7 +17738,7 @@ void packetdb_readdb(void)
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
//#0x08C0
|
|
//#0x08C0
|
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
|
|
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 10,
|
|
9, 7, 10, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
9, 7, 10, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
@@ -17758,11 +17754,11 @@ void packetdb_readdb(void)
|
|
0, 0, 0, 0, 0, 0, 0, 14, 6, 50, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 14, 6, 50, 0, 0, 0, 0, 0, 0,
|
|
//#0x0980
|
|
//#0x0980
|
|
0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
- 31, 0, 0, 0, 0, 0, 0, -1, 8, 11, 9, 8, 0, 0, 0, 0,
|
|
|
|
|
|
+ 31, 0, 0, 0, 0, 0, 0, -1, 8, 11, 9, 8, 0, 0, 0, 22,
|
|
0, 0, 0, 0, 0, 0, 12, 10, 14, 10, 14, 6, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 12, 10, 14, 10, 14, 6, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 6, 4, 6, 4, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 6, 4, 6, 4, 0, 0, 0, 0, 0, 0,
|
|
//#0x09C0
|
|
//#0x09C0
|
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102, 0,
|
|
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0,102, 0,
|
|
0, 0, 0, 0, 2, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0, 7,
|
|
0, 0, 0, 0, 2, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0, 7,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|