summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorInkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-05-04 13:34:31 +0000
committerInkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-05-04 13:34:31 +0000
commit13371ff777f3509d8e5e02f2080f4692abacd57e (patch)
tree6be2277762d2d0728ee47bffa58e18d103a30562
parent37c603ec06e864e0daff41ac5fe67fc005561d70 (diff)
downloadhercules-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.txt5
-rw-r--r--db/Changelog.txt2
-rw-r--r--db/skill_cast_db.txt2
-rw-r--r--db/skill_require_db.txt16
-rw-r--r--src/map/pc.c6
-rw-r--r--src/map/skill.c68
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))