From 2780b8440b598c0ceb8a391cfb4c2b9724511651 Mon Sep 17 00:00:00 2001 From: skotlex Date: Sat, 22 Jul 2006 16:47:03 +0000 Subject: - Applied Toms's suggested corrections to homun code. - Corrected Cannibalize/Marine Sphere ignoring the selected summon spot. - Fixed looting pets ignoring the item pick-up priority of other players. - Should have fixed a signess warning in login txt. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7828 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/login/login.c | 2 +- src/map/atcommand.c | 14 +++++--------- src/map/pc.c | 1 + src/map/pet.c | 5 +++-- src/map/skill.c | 2 +- 5 files changed, 11 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/login/login.c b/src/login/login.c index 70ac933b4..09d4a77ca 100644 --- a/src/login/login.c +++ b/src/login/login.c @@ -1407,7 +1407,7 @@ static int online_db_setoffline(DBKey key, void* data, va_list ap) { // Packet parsing for char-servers //-------------------------------- int parse_fromchar(int fd) { - unsigned int i; + int i; int j, id; unsigned char *p = (unsigned char *) &session[fd]->client_addr.sin_addr; char ip[16]; diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 715fa84ab..347f92d3e 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -9523,16 +9523,12 @@ int atcommand_homlevel( return 1 ; level = atoi(message); - if ( ( level + sd->homunculus.level ) > MAX_LEVEL ) - level = MAX_LEVEL - sd->homunculus.level ; - if (level >= 1) { - for (i = 1; i <= level ; i++){ - sd->homunculus.exp += sd->hd->exp_next; - merc_hom_levelup(sd->hd) ; - } - clif_misceffect2(&sd->hd->bl,568) ; - } + for (i = 1; i <= level && sd->hd->exp_next; i++){ + sd->homunculus.exp += sd->hd->exp_next; + merc_hom_levelup(sd->hd); + } + clif_misceffect2(&sd->hd->bl,568); return 0; } diff --git a/src/map/pc.c b/src/map/pc.c index e56e84ce3..d2556b0dc 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4758,6 +4758,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) if(sd->status.hom_id > 0 && sd->hd) //orn { sd->homunculus.vaporize = 1; + clif_hominfo(sd,0); merc_stop_walking(sd->hd, 1) ; merc_stop_attack(sd->hd) ; merc_hom_delete(sd->hd,0); diff --git a/src/map/pet.c b/src/map/pet.c index 2f5e210ad..317145cb7 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -1034,8 +1034,9 @@ static int pet_ai_sub_hard_lootsearch(struct block_list *bl,va_list ap) sd_id = fitem->first_get_id; - if(bl->m == pd->bl.m && unit_can_reach_bl(&pd->bl,bl, pd->db->range2, 1, NULL, NULL) - && rand()%1000<1000/(++(*itc))) + if(bl->m == pd->bl.m && (!sd_id || sd_id == pd->msd->bl.id) && + unit_can_reach_bl(&pd->bl,bl, pd->db->range2, 1, NULL, NULL) && + rand()%1000<1000/(++(*itc))) pd->target_id=bl->id; return 0; } diff --git a/src/map/skill.c b/src/map/skill.c index e06b5f2ef..92af54cb9 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -6212,7 +6212,7 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s struct mob_data *md; // Correct info, don't change any of this! [celest] - md = mob_once_spawn_sub(src, src->m, -1, -1, sd->status.name,class_,""); + md = mob_once_spawn_sub(src, src->m, x, y, sd->status.name,class_,""); if (md) { md->master_id = src->id; md->special_state.ai = skillid==AM_SPHEREMINE?2:3; -- cgit v1.2.3-60-g2f50