Ver código fonte

- Fire Pillar will now do 200%MATK damage per hit when level is >10.
- Blood Drain always hits now.
- Fixed Mob Area Skills not updating their use-time (rendering their skill delay useless)
- Search free cell will now skip picking the center-tile as target location. Will prevent slaves from walking on top of their master, or mobs placing stuff right under themselves with the "around" target conditions.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6621 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 19 anos atrás
pai
commit
1bac98be0c
5 arquivos alterados com 28 adições e 3 exclusões
  1. 10 0
      Changelog-Trunk.txt
  2. 1 1
      db/skill_unit_db.txt
  3. 4 1
      src/map/battle.c
  4. 3 0
      src/map/map.c
  5. 10 1
      src/map/skill.c

+ 10 - 0
Changelog-Trunk.txt

@@ -3,6 +3,16 @@ 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/05/16
+	* Fire Pillar will now do 200%MATK damage per hit when level is >10.
+	  [Skotlex]
+	* Blood Drain always hits now. [Skotlex]
+	* Fixed Mob Area Skills not updating their use-time (rendering their skill
+	  delay useless) [Skotlex]
+	* Search free cell will now skip picking the center-tile as target
+	  location. Will prevent slaves from walking on top of their master, or mobs
+	  placing stuff right under themselves with the "around" target conditions
+	  among other things. [Skotlex]
 2006/05/15
 	* Small changes to the skill.conf
 	- Monsters now can place ground skills on top of each other by default

+ 1 - 1
db/skill_unit_db.txt

@@ -30,7 +30,7 @@
  70,0x83,    , -1, 1,1000,all,   0x008	//PR_SANCTUARY#サンクチュアリ
  79,0x84,    , -1, 1,3000,enemy, 0x008	//PR_MAGNUS#マグヌスエクソシズム
  80,0x87,0x88,  0, 1,2000,enemy, 0x002	//WZ_FIREPILLAR#ファイアーピラー
- 83,0x86,    ,  0,3:3:3:3:3:3:3:3:3:3:3,1000,enemy, 0x000	//WZ_METEOR#メテオストーム
+ 83,0x86,    ,  0, 3,1000,enemy, 0x000	//WZ_METEOR#メテオストーム
  85,0x86,    ,  0,6:6:6:6:6:6:6:6:6:6:25,1250,enemy, 0x008	//WZ_VERMILION#ロードオブヴァーミリオン
  87,0x8d,    , -1, 0,  -1,all,   0x000	//WZ_ICEWALL#アイスウォール
  88,0x86,    ,  0, 2,1000,enemy, 0x000	//WZ_FROSTNOVA#フロストノヴァ

+ 4 - 1
src/map/battle.c

@@ -1267,6 +1267,7 @@ static struct Damage battle_calc_weapon_attack(
 				case SG_SUN_WARM:
 				case SG_MOON_WARM:
 				case SG_STAR_WARM:
+				case NPC_BLOODDRAIN:
 					flag.hit = 1;
 					break;
 				case CR_SHIELDBOOMERANG:
@@ -2530,7 +2531,9 @@ struct Damage battle_calc_magic_attack(
 						skillratio += (100+skill_lv*10)*2/3-100;
 						break;
 					case WZ_FIREPILLAR:
-						if (skill_lv <= 10)
+						if (skill_lv > 10)
+							skillratio += 100;
+						else
 							skillratio -= 80;
 						break;
 					case WZ_SIGHTRASHER:

+ 3 - 0
src/map/map.c

@@ -1484,6 +1484,9 @@ int map_search_freecell(struct block_list *src, int m, short *x,short *y, int rx
 		*x = (rx >= 0)?(rand()%rx2-rx+bx):(rand()%(map[m].xs-2)+1);
 		*y = (ry >= 0)?(rand()%ry2-ry+by):(rand()%(map[m].ys-2)+1);
 		
+		if (*x == bx && *y == by)
+			continue; //Avoid picking the same target tile.
+		
 		if (map_getcell(m,*x,*y,CELL_CHKREACH))
 		{
 			if(flag&2 && !unit_can_reach_pos(src, *x, *y, 1))

+ 10 - 1
src/map/skill.c

@@ -825,7 +825,7 @@ int skillnotok(int skillid, struct map_session_data *sd)
 		if(!battle_config.pk_mode && skill_get_nocast (skillid) & 2)
 			return 1;
 		if(battle_config.pk_mode && skill_get_nocast (skillid) & 16)
-		return 1;
+			return 1;
 	}
 	if(map_flag_gvg(sd->bl.m) && skill_get_nocast (skillid) & 4)
 		return 1;
@@ -5793,6 +5793,15 @@ int skill_castend_pos( int tid, unsigned int tick, int id,int data )
 		if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv, 1))	/* Žg—p�ðŒ�ƒ`ƒFƒbƒN */
 			break;
 
+		if(md) {
+			md->last_thinktime=tick + (tid==-1?status_get_adelay(src):status_get_amotion(src));
+			if(md->skillidx >= 0) {
+				md->skilldelay[md->skillidx]=tick;
+				if (md->db->skill[md->skillidx].emotion >= 0)
+					clif_emotion(src, md->db->skill[md->skillidx].emotion);
+			}
+		}
+
 		if(battle_config.skill_log && battle_config.skill_log&src->type)
 			ShowInfo("Type %d, ID %d skill castend pos [id =%d, lv=%d, (%d,%d)]\n",
 				src->type, src->id, ud->skillid, ud->skilllv, ud->skillx, ud->skilly);