diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/map.c | 3 | ||||
-rw-r--r-- | src/map/pc.c | 16 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/map/map.c b/src/map/map.c index 584415ef5..cd70167bd 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -296,7 +296,8 @@ int map_freeblock_unlock_sub(char *file, int lineno) for (i = 0; i < block_free_count; i++) { //Directly calling aFree shouldn't be a leak, as Free remembers the size the original pointed to memory was allocated with? [Skotlex] // aFree(block_free[i]); - _mfree(block_free[i], file, lineno, __func__); +// _mfree(block_free[i], file, lineno, __func__); + _mfree(block_free[i], file, block_free[i]->type*100000+lineno, __func__); block_free[i] = NULL; } block_free_count = 0; diff --git a/src/map/pc.c b/src/map/pc.c index 5516b51ab..af8aab4a2 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -6677,7 +6677,8 @@ int pc_divorce(struct map_session_data *sd) */ int pc_adoption(struct map_session_data *sd,struct map_session_data *dstsd, struct map_session_data *jasd) { - int j; + int j,level, job; + unsigned int exp; if (sd == NULL || dstsd == NULL || jasd == NULL || sd->status.partner_id <= 0 || dstsd->status.partner_id <= 0 || sd->status.partner_id != dstsd->status.char_id || dstsd->status.partner_id != sd->status.char_id || @@ -6692,8 +6693,19 @@ int pc_adoption(struct map_session_data *sd,struct map_session_data *dstsd, stru if(jasd->status.inventory[j].nameid>0 && jasd->status.inventory[j].equip!=0) pc_unequipitem(jasd, j, 3); } - if (pc_jobchange(jasd, 4023, 0) == 0) + + //Preserve level and exp. + level = jasd->status.job_level; + exp = jasd->status.job_exp; + job = jasd->class_|JOBL_BABY; //Preserve current Job by babyfying it. [Skotlex] + job = pc_mapid2jobid(job, jasd->status.sex); + if (job != -1 && pc_jobchange(jasd, job, 0) == 0) { //Success, and give Junior the Baby skills. [Skotlex] + //Restore job level and experience. + jasd->status.job_level = level; + jasd->status.job_exp = exp; + clif_updatestatus(jasd,SP_JOBLEVEL); + clif_updatestatus(jasd,SP_JOBEXP); pc_skill(jasd,WE_BABY,1,0); pc_skill(jasd,WE_CALLPARENT,1,0); clif_displaymessage(jasd->fd, msg_txt(12)); // Your job has been changed. |