diff options
author | Inkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2009-05-04 13:34:31 +0000 |
---|---|---|
committer | Inkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2009-05-04 13:34:31 +0000 |
commit | 13371ff777f3509d8e5e02f2080f4692abacd57e (patch) | |
tree | 6be2277762d2d0728ee47bffa58e18d103a30562 | |
parent | 37c603ec06e864e0daff41ac5fe67fc005561d70 (diff) | |
download | hercules-13371ff777f3509d8e5e02f2080f4692abacd57e.tar.gz hercules-13371ff777f3509d8e5e02f2080f4692abacd57e.tar.bz2 hercules-13371ff777f3509d8e5e02f2080f4692abacd57e.tar.xz hercules-13371ff777f3509d8e5e02f2080f4692abacd57e.zip |
* Players now are allowed to copy the skills the level which is beyond the skill_db max. [Inkfish]
* Fixed some behaviors for Waterball (bugreport:3024) [Inkfish]
- High level Waterball used by players doesn't increase the number of balls.
- Monsters can't pull water from cells with Magnetic Earth.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13730 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r-- | Changelog-Trunk.txt | 5 | ||||
-rw-r--r-- | db/Changelog.txt | 2 | ||||
-rw-r--r-- | db/skill_cast_db.txt | 2 | ||||
-rw-r--r-- | db/skill_require_db.txt | 16 | ||||
-rw-r--r-- | src/map/pc.c | 6 | ||||
-rw-r--r-- | src/map/skill.c | 68 |
6 files changed, 60 insertions, 39 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index cf99d95bf..c77fdceba 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -5,6 +5,11 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2009/05/04 * Added the md5() script command. [brianluau] + * Now if a dead player is moved for whatever reason, he'll be alive with 1 HP. (bugreport:70) [Inkfish] + * Players now are allowed to copy the skills the level which is beyond the skill_db max. [Inkfish] + * Fixed some behaviors for Waterball (bugreport:3024) [Inkfish] + - High level Waterball used by players doesn't increase the number of balls. + - Monsters can't pull water from cells with Magnetic Earth. 2009/05/03 * Updated item_db.sql and mob_db.sql from recent changes to both. Thanks to Peter once again! [Jguy] * Do not log damage if it's done by mob itself (bugreport:2933) [Inkfish] diff --git a/db/Changelog.txt b/db/Changelog.txt index 63063d3cf..c1f321712 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -37,6 +37,8 @@ 2385 Recuvative_Armor Should trigger HP/SP return with magical kills as well. ======================= +2009/05/04 + * Added cast time and sp cost for Waterball Lvl 5 - 10 [Inkfish] 2009/05/03 * Snatch now works with all weapons (including bow!) [Playtester] - range doesn't depend on weapon range anymore and is always 1 even with bows diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index d220761aa..021aab280 100644 --- a/db/skill_cast_db.txt +++ b/db/skill_cast_db.txt @@ -182,7 +182,7 @@ //-- WZ_VERMILION 85,15000:14500:14000:13500:13000:12500:12000:11500:11000:10500,5000,0,4000,5500:6000:6500:7000:7500:8000:8500:9000:9500:10000 //-- WZ_WATERBALL -86,1000:2000:3000:4000:5000,0,0,0,0 +86,1000:2000:3000:4000:5000:6000:7000:8000:9000:10000,0,0,0,0 //-- WZ_ICEWALL 87,0,0,0,5000:10000:15000:20000:25000:30000:35000:40000:45000:50000,0 //-- WZ_FROSTNOVA diff --git a/db/skill_require_db.txt b/db/skill_require_db.txt index c608ad8a0..4d6c37dbe 100644 --- a/db/skill_require_db.txt +++ b/db/skill_require_db.txt @@ -93,7 +93,7 @@ 83,0,0,20:24:30:34:40:44:50:54:60:64,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_METEOR#メテオスト?ム# 84,0,0,20:23:26:29:32:35:38:41:44:47,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_JUPITEL#ユピテルサンダ?# 85,0,0,60:64:68:72:76:80:84:88:92:96,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_VERMILION#ロ?ドオブヴァ?ミリオン# -86,0,0,15:20:20:25:25,0,0,0,99,0,0,water,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_WATERBALL#ウォ?タ?ボ?ル# +86,0,0,15:20:20:25:25:25:25:25:25:25,0,0,0,99,0,0,water,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_WATERBALL#ウォ?タ?ボ?ル# 87,0,0,20,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_ICEWALL#アイスウォ?ル# 88,0,0,45:43:41:39:37:35:33:31:29:27,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_FROSTNOVA#フロストノヴァ# 89,0,0,78,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_STORMGUST#スト?ムガスト# @@ -259,8 +259,8 @@ 330,0,0,40:45:50:55:60:65:70:75:80:85,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //DC_SERVICEFORYOU#サ?ビスフォ?ユ?# 334,0,0,1,-10,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WE_MALE#君だけは護るよ# -335,0,0,1,0,-10,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WE_FEMALE# なたに?くします# -336,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARTNER# なたに逢いたい# +335,0,0,1,0,-10,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WE_FEMALE#?なたに?くします# +336,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARTNER#?なたに逢いたい# 337,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //ITM_TOMAHAWK## 355,0,0,18:26:34:42:50,0,0,0,1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //LK_AURABLADE#オ?ラブレ?ド# @@ -437,16 +437,16 @@ 1001,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //KN_CHARGEATK#チャ?[ジアタック# 1002,0,0,15,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //CR_SHRINK#シュリンク# 1004,0,0,15,0,0,0,99,2,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AS_VENOMKNIFE#ベナムナイフ# -1005,0,0,25,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RG_CLOSECONFINE#ク??[ズコンファイン# +1005,0,0,25,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RG_CLOSECONFINE#ク??[ズコンファイン# 1006,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_SIGHTBLASTER#サイトブラスタ?[# -1007,0,0,30,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SA_CREATECON#エルレ?ンタルコンバ?[タ?サ造# -1008,0,0,30,0,0,0,99,0,0,none,0,12115,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SA_ELEMENTWATER#エルレ?ンタルチェンジ# -1009,0,0,10,0,0,0,11,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //HT_PHANTASMIC#ファンタスミックア??[# +1007,0,0,30,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SA_CREATECON#エルレ?ンタルコンバ?[タ?サ? +1008,0,0,30,0,0,0,99,0,0,none,0,12115,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SA_ELEMENTWATER#エルレ?ンタルチェンジ# +1009,0,0,10,0,0,0,11,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //HT_PHANTASMIC#ファンタスミックア??[# 1010,0,0,20,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //BA_PANGVOICE#パンボイス# 1011,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //DC_WINKCHARM#魅惑のウィンク# 1013,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //BS_GREED#貪欲# 1014,0,0,400,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //PR_REDEMPTIO#レデムプティオ# -1015,0,0,40,0,0,0,99,0,0,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MO_KITRANSLATION#珍奇?入(?U気?入)# +1015,0,0,40,0,0,0,99,0,0,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MO_KITRANSLATION#珍奇?入(?U気?入)# 1016,10,0,20,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MO_BALKYOUNG#足? (発勁)# 1017,0,0,30,0,0,0,99,0,0,none,0,12116,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SA_ELEMENTGROUND 1018,0,0,30,0,0,0,99,0,0,none,0,12114,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SA_ELEMENTFIRE diff --git a/src/map/pc.c b/src/map/pc.c index 22d2ace6d..abb322af6 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -3805,6 +3805,12 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y return 1; } + if( pc_isdead(sd) ) + { //Revive dead people before warping them + pc_setstand(sd); + pc_setrestartvalue(sd,1); + } + sd->state.changemap = (sd->mapindex != mapindex); if( sd->state.changemap ) { //Misc map-changing settings diff --git a/src/map/skill.c b/src/map/skill.c index 8549759c0..098f6c327 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1747,9 +1747,6 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds if ((type = pc_checkskill(tsd,RG_PLAGIARISM)) < lv) lv = type; - //kRO Update makes it impossible to copy skills beyond the skill_db max. - if ((type = skill_get_max(skillid)) < lv) - lv = type; tsd->cloneskill_id = skillid; tsd->status.skill[skillid].id = skillid; @@ -2828,35 +2825,46 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int break; case WZ_WATERBALL: skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); - { - int range = skilllv/2; - int size = 2*range + 1; - int count = 0; - - if( src->type == BL_PC ) - {// count the number of water cells in range - struct skill_unit* unit; + { + int range = skilllv/2; + int size = 2*range + 1; + int count = 0; int x, y; - for( y = src->y - range; y <= src->y + range; ++y ) - for( x = src->x - range; x <= src->x + range; ++x ) - { - if( map_getcell(src->m,x,y,CELL_CHKWATER) ) - count++; // natural water cell - else - if( (unit = map_find_skill_unit_oncell(src,x,y,SA_DELUGE,NULL)) != NULL - || (unit = map_find_skill_unit_oncell(src,x,y,NJ_SUITON,NULL)) != NULL ) - { - count++; // skill-induced water cell - skill_delunit(unit); // consume cell - } + + if( src->type == BL_PC ) + {// count the number of water cells in range + struct skill_unit* unit; + int maxlv = skill_get_max(skillid); + + if( skilllv > maxlv ) + range = maxlv / 2; + + for( y = src->y - range; y <= src->y + range; ++y ) + for( x = src->x - range; x <= src->x + range; ++x ) + { + if( map_getcell(src->m,x,y,CELL_CHKWATER) ) + count++; // natural water cell + else + if( (unit = map_find_skill_unit_oncell(src,x,y,SA_DELUGE,NULL)) != NULL + || (unit = map_find_skill_unit_oncell(src,x,y,NJ_SUITON,NULL)) != NULL ) + { + count++; // skill-induced water cell + skill_delunit(unit); // consume cell + } + } + } + else + { // non-players bypass the water requirement + count = size*size; + for( y = src->y - range; y <= src->y + range; ++y ) + for( x = src->x - range; x <= src->x + range; ++x ) + if( map_find_skill_unit_oncell(src,x,y,SA_LANDPROTECTOR,NULL) != NULL ) + count--; } - } - else // non-players bypass the water requirement - count = size*size; - if( count > 1 ) // queue the remaining count - 1 timerskill Waterballs - skill_addtimerskill(src,tick+150,bl->id,0,0,skillid,skilllv,count-1,flag); - } + if( count > 1 ) // queue the remaining count - 1 timerskill Waterballs + skill_addtimerskill(src,tick+150,bl->id,0,0,skillid,skilllv,count-1,flag); + } break; case PR_BENEDICTIO: @@ -5339,7 +5347,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in clif_skill_nodamage(src,bl,skillid,skilllv,1); for(i = 0; i < g->max_member; i++, j++) { if (j>8) j=0; - if ((dstsd = g->member[i].sd) != NULL && sd != dstsd && !pc_isdead(dstsd) && !dstsd->state.autotrade) { + if ((dstsd = g->member[i].sd) != NULL && sd != dstsd && !dstsd->state.autotrade) { if (map[dstsd->bl.m].flag.nowarp && !map_flag_gvg2(dstsd->bl.m)) continue; if(map_getcell(src->m,src->x+dx[j],src->y+dy[j],CELL_CHKNOREACH)) |