From d0f2d77ed059c68c4b6e6ad599c7e6960fdd269e Mon Sep 17 00:00:00 2001 From: skotlex Date: Sun, 20 Aug 2006 20:01:07 +0000 Subject: - @useskill will now cause your homun to use the skill instead of you if the skill is a Homun skill and you have an active homunculus. - Some cleanups... git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8383 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 2 ++ src/map/atcommand.c | 11 +++++++++-- src/map/skill.c | 4 +--- src/map/status.c | 11 +++++------ 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 5b999490a..f9fe1cd77 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,8 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/08/20 + * @useskill will now cause your homun to use the skill instead of you if + the skill is a Homun skill and you have an active homunculus. [Skotlex] * Reduced the Success Chance of GS_FLING to 10+10*lv% (Playtester told me that Vicious told him the chance was much lower like that) [Skotlex] * Fixed some Homunc issues with HR servers (capping some values) [Toms] diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 00d051284..31e68c224 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -7547,6 +7547,7 @@ atcommand_useskill(const int fd, struct map_session_data* sd, const char* command, const char* message) { struct map_session_data *pl_sd = NULL; + struct block_list *bl; int skillnum; int skilllv; char target[255]; @@ -7562,10 +7563,16 @@ atcommand_useskill(const int fd, struct map_session_data* sd, return -1; } + if (skillnum >= HM_SKILLBASE && skillnum < HM_SKILLBASE+MAX_HOMUNSKILL + && sd->hd && merc_is_hom_active(sd->hd)) // (If used with @useskill, put the homunc as dest) + bl = &sd->hd->bl; + else + bl = &sd->bl; + if (skill_get_inf(skillnum)&INF_GROUND_SKILL) - unit_skilluse_pos(&sd->bl, pl_sd->bl.x, pl_sd->bl.y, skillnum, skilllv); + unit_skilluse_pos(bl, pl_sd->bl.x, pl_sd->bl.y, skillnum, skilllv); else - unit_skilluse_id(&sd->bl, pl_sd->bl.id, skillnum, skilllv); + unit_skilluse_id(bl, pl_sd->bl.id, skillnum, skilllv); return 0; } diff --git a/src/map/skill.c b/src/map/skill.c index a94264530..f69a0dcce 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -5523,8 +5523,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in break; case HAMI_CASTLE: //[orn] - if (src == bl && sd && sd->hd && merc_is_hom_active(sd->hd)) // (If used with @useskill, put the homunc as dest) - bl = &sd->hd->bl; if(rand()%100 < 20*skilllv && src != bl) { int x,y; @@ -5549,7 +5547,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in // Failed if (hd) clif_skill_fail(hd->master, skillid, 0, 0); - else + else if (sd) clif_skill_fail(sd, skillid, 0, 0); } break; diff --git a/src/map/status.c b/src/map/status.c index 446ed2213..aea2a91dd 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -2220,8 +2220,10 @@ int status_calc_homunculus(struct homun_data *hd, int first) status->rhw.range = 1 + status->size; //[orn] status->mode = MD_CANMOVE|MD_CANATTACK|MD_ASSIST|MD_AGGRESSIVE|MD_CASTSENSOR; //[orn] status->speed = DEFAULT_WALK_SPEED; - status->def = cap_value(hom->level/10 + status->vit/5, 0, SCHAR_MAX); - status->mdef = cap_value(hom->level/10 + status->int_/5, 0, SCHAR_MAX); + skill = hom->level/10 + status->vit/5; + status->def = cap_value(skill, 0, 99); + skill = hom->level/10 + status->int_/5; + status->mdef = cap_value(skill, 0, 99); status->hp = 1; status->sp = 1; @@ -2243,10 +2245,7 @@ int status_calc_homunculus(struct homun_data *hd, int first) status->max_hp += skill * 2 * status->max_hp / 100; if((skill = merc_hom_checkskill(hd->master,HLIF_BRAIN)) > 0) - { - int p = 1 +skill/2 -skill/4 +skill/5; - status->max_sp += p * status->max_sp / 100 ; - } + status->max_sp += (1 +skill/2 -skill/4 +skill/5) * status->max_sp / 100 ; if (first) { hd->battle_status.hp = hom->hp ; -- cgit v1.2.3-70-g09d2