diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-08-31 16:09:50 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-08-31 16:09:50 +0000 |
commit | 693613de2eda402fe459809cbe7ea22cbd052218 (patch) | |
tree | 8f4da46add7a622825742986fcb055ff0a0374a3 /src | |
parent | 0415b6b6e9ca2a6d08d38fd811e21ffb641a9265 (diff) | |
download | hercules-693613de2eda402fe459809cbe7ea22cbd052218.tar.gz hercules-693613de2eda402fe459809cbe7ea22cbd052218.tar.bz2 hercules-693613de2eda402fe459809cbe7ea22cbd052218.tar.xz hercules-693613de2eda402fe459809cbe7ea22cbd052218.zip |
- Modified the error reporting in map_freeblock_unlock so that when there's an error, the reported line number is the file's linenumber plus the object's type *10000. This is for debug information to help track down the already-freed error.
- pc_adopt will now preserve the kid's job/job-level/experience. This means that if you adopt a Swordman level 45, it will become a baby-swordman level 45, with the exact same exp as before.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8563 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-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. |