Open ../src/common/mmo.h and change:
#define MAX_MEMOPOINTS 3
to:
#define MAX_MEMOPOINTS 9
Open ../src/map/clif.h and change:
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);
to:
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, unsigned short map5, unsigned short map6, unsigned short map7, unsigned short map8, unsigned short map9, unsigned short map10);
Open ../src/map/clif.c and in the function "clif_skill_warppoint" change:
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)
to:
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, unsigned short map5, unsigned short map6, unsigned short map7, unsigned short map8, unsigned short map9, unsigned short map10)
after:
if (map4 > 0) mapindex_getmapname_ext(mapindex_id2name(map4), (char*)WFIFOP(fd,52));
add:
if (map5 > 0) mapindex_getmapname_ext(mapindex_id2name(map5), (char*)WFIFOP(fd,68));
if (map6 > 0) mapindex_getmapname_ext(mapindex_id2name(map6), (char*)WFIFOP(fd,84));
if (map7 > 0) mapindex_getmapname_ext(mapindex_id2name(map7), (char*)WFIFOP(fd,100));
if (map8 > 0) mapindex_getmapname_ext(mapindex_id2name(map8), (char*)WFIFOP(fd,116));
if (map9 > 0) mapindex_getmapname_ext(mapindex_id2name(map9), (char*)WFIFOP(fd,132));
if (map10 > 0) mapindex_getmapname_ext(mapindex_id2name(map10), (char*)WFIFOP(fd,148));
change:
10, 39, 4, 10, 31, 35, 10, 18, 2, 13, 15, 20, 68, 2, 3, 16,
to:
10, 39, 4, 10, 31, 35, 10, 18, 2, 13, 15, 20, 164, 2, 3, 16,
Open ../src/map/skills.c and in the function "skill_castend_nodamage_id" change:
clif_skill_warppoint(sd,skill_id,skill_lv, (unsigned short)-1,0,0,0);
else
clif_skill_warppoint(sd,skill_id,skill_lv, (unsigned short)-1,sd->status.save_point.map,0,0);
to:
clif_skill_warppoint(sd,skill_id,skill_lv, (unsigned short)-1,0,0,0,0,0,0,0,0,0);
else
clif_skill_warppoint(sd,skill_id,skill_lv, (unsigned short)-1,sd->status.save_point.map,0,0,0,0,0,0,0,0);
In the function "skill_castend_pos" change:
clif_skill_warppoint(sd, skill_id, skill_lv, sd->status.save_point.map,
(skill_lv >= 2) ? sd->status.memo_point[0].map : 0,
(skill_lv >= 3) ? sd->status.memo_point[1].map : 0,
(skill_lv >= 4) ? sd->status.memo_point[2].map : 0
);
to:
clif_skill_warppoint(sd, skill_id, skill_lv, sd->status.save_point.map,
(skill_lv >= 2) ? sd->status.memo_point[0].map : 0,
(skill_lv >= 3) ? sd->status.memo_point[1].map : 0,
(skill_lv >= 4) ? sd->status.memo_point[2].map : 0,
(skill_lv >= 4) ? sd->status.memo_point[3].map : 0,
(skill_lv >= 4) ? sd->status.memo_point[4].map : 0,
(skill_lv >= 4) ? sd->status.memo_point[5].map : 0,
(skill_lv >= 4) ? sd->status.memo_point[6].map : 0,
(skill_lv >= 4) ? sd->status.memo_point[7].map : 0,
(skill_lv >= 4) ? sd->status.memo_point[8].map : 0
);
In the function "skill_castend_map" change:
const struct point *p[4];
to:
const struct point *p[10];
after:
p[3] = &sd->status.memo_point[2];
add:
p[4] = &sd->status.memo_point[3];
p[5] = &sd->status.memo_point[4];
p[6] = &sd->status.memo_point[5];
p[7] = &sd->status.memo_point[6];
p[8] = &sd->status.memo_point[7];
p[9] = &sd->status.memo_point[8];
change:
if( lv > 4 ) lv = 4; // crash prevention
to:
if (lv >= 4)
lv = 10;
Save changes, compile the server and use this EXE:
https://mega.nz/#!pFdSELpL!Tb4dxxOUyiUqJFTPjSbfgYF4CIuKB0m_TQJ0LBVzu6Y