From ed800c53cea74042b2666c9588f8e92787013d14 Mon Sep 17 00:00:00 2001 From: skotlex Date: Tue, 16 May 2006 14:42:54 +0000 Subject: - 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6621 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/battle.c | 5 ++++- src/map/map.c | 3 +++ src/map/skill.c | 11 ++++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index 5df3bdc0b..39ded0982 100644 --- a/src/map/battle.c +++ b/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: diff --git a/src/map/map.c b/src/map/map.c index 41aa35d7e..9e962a5d5 100644 --- a/src/map/map.c +++ b/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)) diff --git a/src/map/skill.c b/src/map/skill.c index 02194d081..6b36c631d 100644 --- a/src/map/skill.c +++ b/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)) /* 使用条件チェック */ 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); -- cgit v1.2.3-70-g09d2