From 32ebbcf88520ef77425c0b2408ba36c40c3c9aaa Mon Sep 17 00:00:00 2001 From: skotlex Date: Mon, 27 Nov 2006 14:58:50 +0000 Subject: - Corrected KiriKage's range so it works correctly when used by non-players or when use weapon's range is used. - Changed service for you's flags so it affects all players on range. - Corrected the skill animation for Absorb Spirits - Cleaned up a bit the implementation of how Gravity Field blocks the caster from moving. - Mob class-changing will fail if the new class is the same as the previous one. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9325 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 8 +++++++- db/Changelog.txt | 5 +++++ db/skill_db.txt | 2 +- db/skill_unit_db.txt | 2 +- src/map/clif.c | 2 +- src/map/mob.c | 3 +++ src/map/skill.c | 9 ++++----- src/map/status.c | 14 -------------- src/map/unit.c | 1 + 9 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 70691b73b..2dde16c3f 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,9 +3,15 @@ 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/11/27 + * Corrected the skill animation for Absorb Spirits [Skotlex] + * Cleaned up a bit the implementation of how Gravity Field blocks the + caster from moving. [Skotlex] + * Mob class-changing will fail if the new class is the same as the previous + one. [Skotlex] 2006/11/24 * Homunc's min matk is now always equal to max matk [Skotlex] - * Fixed EDP's damage being 100% more than it should (should be 5x, not 6x + * Fixed EDP's damage being 100% more than it should (should be 4x, not 5x on normal attacks) [Skotlex] * Self Destruction will only hit everyone and not just enemies when used by mobs (non marine spheres) unless the map is a versus map. [Skotlex] diff --git a/db/Changelog.txt b/db/Changelog.txt index 812f353f4..785008fe2 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -19,6 +19,11 @@ ----- ======================== +11/27 + * Corrected KiriKage's range so it works correctly when used by non-players + or when use weapon's range is used. [Skotlex] + * Changed service for you's flags so it affects all players on range. + [Skotlex] 11/26 * Updated Rachel Field mob stats and drops [Playtester] * Updated selling price for some common drops [Playtester] diff --git a/db/skill_db.txt b/db/skill_db.txt index ac0654f0f..8df120d21 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -554,7 +554,7 @@ 527,0,6,4,-1,0,0,5,1,no,0,0,0,weapon,3 //NJ_TATAMIGAESHI#NJ_TATAMIGAESHI# 528,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0 //NJ_KASUMIKIRI#NJ_KASUMIKIRI# 529,7:9:11:13:15,6,2,0,1,0,5,1,no,0,0,0,none,0 //NJ_SHADOWJUMP#NJ_SHADOWJUMP# -530,-1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0 //NJ_KIRIKAGE#NJ_KIRIKAGE# +530,7:9:11:13:15,6,1,-1,0,0,5,1,no,0,0,0,weapon,0 //NJ_KIRIKAGE#NJ_KIRIKAGE# 531,0,6,4,0,1,0,5,1,no,0,0,0,none,7 //NJ_UTSUSEMI#NJ_UTSUSEMI# 532,0,6,4,0,1,0,10,1,yes,0,0,0,magic,0 //NJ_BUNSINJYUTSU#NJ_BUNSINJYUTSU# 533,0,0,0,0,0,0,10,0,no,0,0,0,none,0 //NJ_NINPOU#NJ_NINPOU# diff --git a/db/skill_unit_db.txt b/db/skill_unit_db.txt index b88ac9460..d0d733900 100644 --- a/db/skill_unit_db.txt +++ b/db/skill_unit_db.txt @@ -73,7 +73,7 @@ 327,0xac, , 3, 0, -1,all, 0x120 //DC_HUMMING 328,0xad, , 3, 0, -1,enemy, 0x100 //DC_DONTFORGETME 329,0xae, , 3, 0, -1,all, 0x120 //DC_FORTUNEKISS -330,0xaf, , 3, 0, -1,party, 0x100 //DC_SERVICEFORYOU +330,0xaf, , 3, 0, -1,all, 0x120 //DC_SERVICEFORYOU 336,0xb2, , 0,-1, -1,noone, 0x000 //WE_CALLPARTNER 339,0x86, , -1, 0, 400,enemy, 0x000 //NPC_DARKGRANDCROSS 362,0xb4, , 0, 3, -1,all, 0x000 //HP_BASILICA diff --git a/src/map/clif.c b/src/map/clif.c index 561c51912..5083e4a91 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -7107,7 +7107,7 @@ int clif_guild_skillinfo(struct map_session_data *sd) WFIFOW(fd,c*37+12) = g->skill[i].lv; WFIFOW(fd,c*37+14) = skill_get_sp(id,g->skill[i].lv); WFIFOW(fd,c*37+16) = skill_get_range(id,g->skill[i].lv); - malloc_tsetdword(WFIFOP(fd,c*37+18),0,24); + strncpy(WFIFOP(fd,c*37+18), skill_get_name(id), NAME_LENGTH); if(g->skill[i].lv < guild_skill_get_max(id) && (sd == g->member[0].sd)) up = 1; else diff --git a/src/map/mob.c b/src/map/mob.c index 97564cfd1..4772d5b60 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2315,6 +2315,9 @@ int mob_class_change (struct mob_data *md, int class_) if (mob_is_clone(md->class_)) return 0; //Clones + if (md->class_ == class_) + return 0; //Nothing to change. + hp_rate = md->status.hp*100/md->status.max_hp; md->class_ = class_; md->db = mob_db(class_); diff --git a/src/map/skill.c b/src/map/skill.c index 26f9a8f41..0f78fe32a 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3174,7 +3174,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int if (unit_movepos(src, x, y, 0, 0)) clif_slide(src,src->x,src->y); } - status_change_end(src, SC_HIDING, -1); + if (sc && sc->data[SC_HIDING].timer != -1) + status_change_end(src, SC_HIDING, -1); skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); break; case 0: @@ -3945,10 +3946,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in i = 2 * dstmd->level; mob_target(dstmd,src,0); } - if (i) { - clif_skill_nodamage(src,bl,skillid,skilllv,0); - status_heal(src, 0, i, 3); - } + if (i) status_heal(src, 0, i, 3); + clif_skill_nodamage(src,bl,skillid,skilllv,i?1:0); break; case AC_MAKINGARROW: diff --git a/src/map/status.c b/src/map/status.c index 0228ec367..adb35c32d 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -5358,13 +5358,6 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val case SC_GRAVITATION: val2 = 50*val1; //aspd reduction - if (val3 == BCT_SELF) { - struct unit_data *ud = unit_bl2ud(bl); - if (ud) { - ud->canmove_tick += tick; - ud->canact_tick += tick; - } - } break; case SC_HERMODE: @@ -6171,13 +6164,6 @@ int status_change_end( struct block_list* bl , int type,int tid ) sc_start4(bl, SC_REGENERATION, 100, 10,0,0,(RGN_HP|RGN_SP), skill_get_time(LK_BERSERK, sc->data[type].val1)); break; - case SC_GRAVITATION: - if (sc->data[type].val3 == BCT_SELF) { - struct unit_data *ud = unit_bl2ud(bl); - if (ud) - ud->canmove_tick = ud->canact_tick = gettick(); - } - break; case SC_GOSPEL: //Clear the buffs from other chars. if (sc->data[type].val3) { //Clear the group. struct skill_unit_group *group = (struct skill_unit_group *)sc->data[type].val3; diff --git a/src/map/unit.c b/src/map/unit.c index 6e3c66288..0d5fb5b71 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -699,6 +699,7 @@ int unit_can_move(struct block_list *bl) || (sc->data[SC_CLOAKING].timer != -1 && //Need wall at level 1-2 sc->data[SC_CLOAKING].val1 < 3 && !(sc->data[SC_CLOAKING].val4&1)) || sc->data[SC_MADNESSCANCEL].timer != -1 + || (sc->data[SC_GRAVITATION].timer != -1 && sc->data[SC_GRAVITATION].val3 == BCT_SELF) )) return 0; } -- cgit v1.2.3-60-g2f50