Bladeren bron

* 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://svn.code.sf.net/p/rathena/svn/trunk@13730 54d463be-8e91-2dee-dedb-b68131a5f0ec

Inkfish 16 jaren geleden
bovenliggende
commit
afaf28a4fa
6 gewijzigde bestanden met toevoegingen van 60 en 39 verwijderingen
  1. 5 0
      Changelog-Trunk.txt
  2. 2 0
      db/Changelog.txt
  3. 1 1
      db/skill_cast_db.txt
  4. 8 8
      db/skill_require_db.txt
  5. 6 0
      src/map/pc.c
  6. 38 30
      src/map/skill.c

+ 5 - 0
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]

+ 2 - 0
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

+ 1 - 1
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

+ 8 - 8
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

+ 6 - 0
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

+ 38 - 30
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))