summaryrefslogtreecommitdiff
path: root/src/map/skill.c
diff options
context:
space:
mode:
authorzephyrus <zephyrus@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-03-27 15:43:51 +0000
committerzephyrus <zephyrus@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-03-27 15:43:51 +0000
commit74f44d476d46ecab74974e0c2cec504c1127a96f (patch)
treec705a2c64a03fae3046ae6bc4228ee2d656b3718 /src/map/skill.c
parentc1c6856cb258de8c3f1246a585d4f72310a24b24 (diff)
downloadhercules-74f44d476d46ecab74974e0c2cec504c1127a96f.tar.gz
hercules-74f44d476d46ecab74974e0c2cec504c1127a96f.tar.bz2
hercules-74f44d476d46ecab74974e0c2cec504c1127a96f.tar.xz
hercules-74f44d476d46ecab74974e0c2cec504c1127a96f.zip
- Added Flavius Battleground scripts.
- Fixed the last commit about Assumptio, it's only player to monsters, but it can be used on mercenaries. - Added new JapanRO pets. - Fixed Valorous Assaulter's Katzbalger missing str bonus. - Medal of Mage (battleground reward) can also be used by Soul linkers. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13631 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/skill.c')
-rw-r--r--src/map/skill.c441
1 files changed, 220 insertions, 221 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index 250d5780b..453d92a30 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -303,7 +303,7 @@ int can_copy (struct map_session_data *sd, int skillid, struct block_list* bl)
{
struct status_change* sc;
sc = status_get_sc(bl);
-
+
// Never copy NPC/Wedding Skills
if (skill_get_inf2(skillid)&(INF2_NPC_SKILL|INF2_WEDDING_SKILL))
return 0;
@@ -320,21 +320,21 @@ int can_copy (struct map_session_data *sd, int skillid, struct block_list* bl)
//Added so plagarize can't copy agi/bless if you're undead since it damages you
if ((skillid == AL_INCAGI || skillid == AL_BLESSING))
return 0;
-
+
return 1;
}
// [MouseJstr] - skill ok to cast? and when?
int skillnotok (int skillid, struct map_session_data *sd)
-{
+{
int i,m;
nullpo_retr (1, sd);
m = sd->bl.m;
i = skill_get_index(skillid);
-
+
if (i == 0)
return 1; // invalid skill id
-
+
if (battle_config.gm_skilluncond && pc_isGM(sd) >= battle_config.gm_skilluncond)
return 0; // GMs can do any damn thing they want
@@ -374,7 +374,7 @@ int skillnotok (int skillid, struct map_session_data *sd)
clif_skill_teleportmessage(sd,1);
return 1;
}
- break;
+ break;
case MC_VENDING:
case MC_IDENTIFY:
return 0; // always allowed
@@ -406,7 +406,7 @@ int skillnotok_hom(int skillid, struct homun_data *hd)
if (i == 0)
return 1; // invalid skill id
-
+
if (hd->blockskill[i] > 0)
return 1;
@@ -428,7 +428,7 @@ int skillnotok_mercenary(int skillid, struct mercenary_data *md)
}
struct s_skill_unit_layout* skill_get_unit_layout (int skillid, int skilllv, struct block_list* src, int x, int y)
-{
+{
int pos = skill_get_unit_layout_type(skillid,skilllv);
int dir;
@@ -452,7 +452,7 @@ struct s_skill_unit_layout* skill_get_unit_layout (int skillid, int skilllv, str
}
/*==========================================
- *
+ *
*------------------------------------------*/
int skill_additional_effect (struct block_list* src, struct block_list *bl, int skillid, int skilllv, int attack_type, unsigned int tick)
{
@@ -482,7 +482,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
tstatus = status_get_status_data(bl);
if (!tsc) //skill additional effect is about adding effects to the target...
//So if the target can't be inflicted with statuses, this is pointless.
- return 0;
+ return 0;
switch(skillid)
{
@@ -514,7 +514,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
sc_start(src,SC_COMBO, 15, TK_DOWNKICK,
(2000 - 4*sstatus->agi - 2*sstatus->dex)))
; //Stance triggered
- else if(sc->data[SC_READYTURN] &&
+ else if(sc->data[SC_READYTURN] &&
sc_start(src,SC_COMBO, 15, TK_TURNKICK,
(2000 - 4*sstatus->agi - 2*sstatus->dex)))
; //Stance triggered
@@ -524,7 +524,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
if (sc->data[SC_SKILLRATE_UP] && sc->data[SC_SKILLRATE_UP]->val1 == TK_COUNTER) {
rate += rate*sc->data[SC_SKILLRATE_UP]->val2/100;
status_change_end(src,SC_SKILLRATE_UP,-1);
- }
+ }
sc_start4(src,SC_COMBO, rate, TK_COUNTER, bl->id,0,0,
(2000 - 4*sstatus->agi - 2*sstatus->dex));
}
@@ -696,7 +696,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
case NPC_PETRIFYATTACK:
sc_start4(bl,status_skill2sc(skillid),50+10*skilllv,
- skilllv,0,0,skill_get_time(skillid,skilllv),
+ skilllv,0,0,skill_get_time(skillid,skilllv),
skill_get_time2(skillid,skilllv));
break;
case NPC_CURSEATTACK:
@@ -714,7 +714,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
case NPC_BLEEDING:
sc_start(bl,SC_BLEEDING,(20*skilllv),skilllv,skill_get_time2(skillid,skilllv));
break;
- case NPC_MENTALBREAKER:
+ case NPC_MENTALBREAKER:
{ //Based on observations by Tharis, Mental Breaker should do SP damage
//equal to Matk*skLevel.
rate = sstatus->matk_min;
@@ -807,7 +807,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
status_change_end(bl, SC_KAAHI, -1);
status_change_end(bl, SC_ONEHAND, -1);
status_change_end(bl, SC_ASPDPOTION2, -1);
- }
+ }
break;
case TK_TURNKICK:
case MO_BALKYOUNG: //Note: attack_type is passed as BF_WEAPON for the actual target, BF_MISC for the splash-affected mobs.
@@ -980,7 +980,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
//Polymorph
if(sd && sd->classchange && attack_type&BF_WEAPON &&
dstmd && !(tstatus->mode&MD_BOSS) &&
- (rand()%10000 < sd->classchange))
+ (rand()%10000 < sd->classchange))
{
struct mob_db *mob;
int class_;
@@ -989,7 +989,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
do {
class_ = rand() % MAX_MOB_DB;
} while (!mobdb_checkid(class_));
-
+
rate = rand() % 1000000;
mob = mob_db(class_);
} while (
@@ -1061,10 +1061,10 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, int s
}
/* Splitted off from skill_additional_effect, which is never called when the
- * attack skill kills the enemy. Place in this function counter status effects
- * when using skills (eg: Asura's sp regen penalty, or counter-status effects
+ * attack skill kills the enemy. Place in this function counter status effects
+ * when using skills (eg: Asura's sp regen penalty, or counter-status effects
* from cards) that will take effect on the source, not the target. [Skotlex]
- * Note: Currently this function only applies to Extremity Fist and BF_WEAPON
+ * Note: Currently this function only applies to Extremity Fist and BF_WEAPON
* type of skills, so not every instance of skill_additional_effect needs a call
* to this one.
*/
@@ -1074,7 +1074,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
struct map_session_data *sd=NULL;
struct map_session_data *dstsd=NULL;
struct status_change *tsc;
-
+
nullpo_retr(0, src);
nullpo_retr(0, bl);
@@ -1092,7 +1092,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
case 0: //Normal Attack
if(tsc && tsc->data[SC_KAAHI] && tsc->data[SC_KAAHI]->val4 == -1)
tsc->data[SC_KAAHI]->val4 = add_timer(
- tick+skill_get_time2(SL_KAAHI,tsc->data[SC_KAAHI]->val1),
+ tick+skill_get_time2(SL_KAAHI,tsc->data[SC_KAAHI]->val1),
kaahi_heal_timer, bl->id, SC_KAAHI); //Activate heal.
break;
case MO_EXTREMITYFIST:
@@ -1135,7 +1135,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
if (attack_type&BF_LONG)
rate+=dstsd->addeff2[i].arrow_rate;
if (!rate) continue;
-
+
if ((dstsd->addeff2[i].flag&(ATF_LONG|ATF_SHORT)) != (ATF_LONG|ATF_SHORT))
{ //Trigger has range consideration.
if((dstsd->addeff2[i].flag&ATF_LONG && !(attack_type&BF_LONG)) ||
@@ -1144,10 +1144,10 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
}
type = dstsd->addeff2[i].id;
time = skill_get_time2(status_sc2skill(type),7);
-
+
if (dstsd->addeff2[i].flag&ATF_TARGET)
status_change_start(src,type,rate,7,0,0,0,time,0);
-
+
if (dstsd->addeff2[i].flag&ATF_SELF && !status_isdead(bl))
status_change_start(bl,type,rate,7,0,0,0,time,0);
}
@@ -1155,7 +1155,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
// Trigger counter-spells to retaliate against damage causing skills.
if(dstsd && !status_isdead(bl) && src != bl && dstsd->autospell2[0].id &&
- !(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE))
+ !(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE))
{
struct block_list *tbl;
struct unit_data *ud;
@@ -1175,7 +1175,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
rate = dstsd->autospell2[i].rate;
if (attack_type&BF_LONG)
rate>>=1;
-
+
if (skillnotok(skillid, dstsd))
continue;
if (rand()%1000 > rate)
@@ -1184,7 +1184,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
tbl = bl;
else
tbl = src;
-
+
switch (skill_get_casttype(skillid)) {
case CAST_GROUND:
skill_castend_pos2(bl, tbl->x, tbl->y, skillid, skilllv, tick, 0);
@@ -1210,7 +1210,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
}
}
//Auto-script when attacked
- if( dstsd && !status_isdead(bl) && src != bl && dstsd->autoscript2[0].script && !(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE) )
+ if( dstsd && !status_isdead(bl) && src != bl && dstsd->autoscript2[0].script && !(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE) )
{
int i;
for( i = 0; i < ARRAYLENGTH(dstsd->autoscript2) && dstsd->autoscript2[i].script; i++ )
@@ -1234,7 +1234,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
- flag is a BCT_ flag to indicate which type of adjustment should be used
(BCT_ENEMY/BCT_PARTY/BCT_SELF) are the valid values.
--------------------------------------------------------------------------*/
-int skill_break_equip (struct block_list *bl, unsigned short where, int rate, int flag)
+int skill_break_equip (struct block_list *bl, unsigned short where, int rate, int flag)
{
const int where_list[4] = {EQP_WEAPON, EQP_ARMOR, EQP_SHIELD, EQP_HELM};
const enum sc_type scatk[4] = {SC_STRIPWEAPON, SC_STRIPARMOR, SC_STRIPSHIELD, SC_STRIPHELM};
@@ -1336,7 +1336,7 @@ int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int
for (i = 0; i < ARRAYLENGTH(pos); i++) {
if (where&pos[i] && sc->data[sc_def[i]])
- where&=~pos[i];
+ where&=~pos[i];
}
if (!where) return 0;
@@ -1366,7 +1366,7 @@ int skill_blown(struct block_list* src, struct block_list* target, int count, in
return 0; //No knocking back in WoE
if (count == 0)
return 0; //Actual knockback distance is 0.
-
+
switch (target->type)
{
case BL_MOB:
@@ -1408,7 +1408,7 @@ int skill_blown(struct block_list* src, struct block_list* target, int count, in
ny = ret&0xffff;
if (!su)
- unit_stop_walking(target,0);
+ unit_stop_walking(target,0);
dx = nx - target->x;
dy = ny - target->y;
@@ -1425,7 +1425,7 @@ int skill_blown(struct block_list* src, struct block_list* target, int count, in
map_foreachinmovearea(clif_insight, target, AREA_SIZE, -dx, -dy, target->type == BL_PC ? BL_ALL : BL_PC, target);
- if(!(flag&0x1))
+ if(!(flag&0x1))
clif_blown(target);
if(target->type == BL_PC && map_getcell(target->m, target->x, target->y, CELL_CHKNPC))
@@ -1473,7 +1473,7 @@ static int skill_magic_reflect(struct block_list* src, struct block_list* bl, in
* flag can hold a bunch of information:
* flag&0xFFF is passed to the underlying battle_calc_attack for processing
* (usually holds number of targets, or just 1 for simple splash attacks)
- * flag&0x1000 is used to tag that this is a splash-attack (so the damage
+ * flag&0x1000 is used to tag that this is a splash-attack (so the damage
* packet shouldn't display a skill animation)
* flag&0x2000 is used to signal that the skilllv should be passed as -1 to the
* client (causes player characters to not scream skill name)
@@ -1574,7 +1574,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
}
}
}
-
+
if(sc && sc->data[SC_MAGICROD] && src == dsrc) {
int sp = skill_get_sp(skillid,skilllv);
dmg.damage = dmg.damage2 = 0;
@@ -1588,7 +1588,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
}
damage = dmg.damage + dmg.damage2;
-
+
if( (skillid == AL_INCAGI || skillid == AL_BLESSING) && tsd->sc.data[SC_CHANGEUNDEAD] )
damage = 1;
@@ -1599,7 +1599,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
//Skill hit type
type=(skillid==0)?5:skill_get_hit(skillid);
- if(damage < dmg.div_
+ if(damage < dmg.div_
//Only skills that knockback even when they miss. [Skotlex]
&& skillid != CH_PALMSTRIKE)
dmg.blewcount = 0;
@@ -1727,7 +1727,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
dmg.dmotion = clif_skill_damage(dsrc,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skillid, flag&SD_LEVEL?-1:skilllv, type);
break;
}
-
+
map_freeblock_lock();
if(damage > 0 && dmg.flag&BF_SKILL && tsd
@@ -1760,8 +1760,8 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
clif_skillinfoblock(tsd);
}
}
- if( skillid != WZ_SIGHTRASHER &&
- skillid != WZ_SIGHTBLASTER &&
+ if( skillid != WZ_SIGHTRASHER &&
+ skillid != WZ_SIGHTBLASTER &&
skillid != AC_SHOWER && skillid != MA_SHOWER &&
skillid != SM_MAGNUM && skillid != MS_MAGNUM &&
bl->type == BL_SKILL && damage > 0 )
@@ -1784,7 +1784,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
if (damage > 0) {
if (!status_isdead(bl))
skill_additional_effect(src,bl,skillid,skilllv,attack_type,tick);
- //Counter status effects [Skotlex]
+ //Counter status effects [Skotlex]
skill_counter_additional_effect(dsrc,bl,skillid,skilllv,attack_type,tick);
}
}
@@ -1802,7 +1802,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
}
skill_blown(dsrc,bl,dmg.blewcount,direction,0);
}
-
+
//Delayed damage must be dealt after the knockback (it needs to know actual position of target)
if (dmg.amotion)
battle_delay_damage(tick, dmg.amotion,src,bl,attack_type,skillid,skilllv,damage,dmg.dmg_lv,dmg.dmotion);
@@ -1835,7 +1835,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
}
if (!(flag&2) &&
- (
+ (
skillid == MG_COLDBOLT || skillid == MG_FIREBOLT || skillid == MG_LIGHTNINGBOLT
) &&
(sc = status_get_sc(src)) &&
@@ -2013,7 +2013,7 @@ int skill_guildaura_sub (struct block_list *bl, va_list ap)
{
struct map_session_data *sd;
int gid, id, strvit, agidex;
-
+
sd = (struct map_session_data *)bl;
id = va_arg(ap,int);
@@ -2193,7 +2193,7 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr data)
if(!target && skl->skill_id == RG_INTIMIDATE)
target = src; //Required since it has to warp.
if(target == NULL)
- break;
+ break;
if(target->prev == NULL)
break;
if(src->m != target->m)
@@ -2276,10 +2276,10 @@ int skill_addtimerskill (struct block_list *src, unsigned int tick, int target,
nullpo_retr(1, src);
ud = unit_bl2ud(src);
nullpo_retr(1, ud);
-
+
ARR_FIND( 0, MAX_SKILLTIMERSKILL, i, ud->skilltimerskill[i] == 0 );
if( i == MAX_SKILLTIMERSKILL ) return 1;
-
+
ud->skilltimerskill[i] = ers_alloc(skill_timer_ers, struct skill_timerskill);
ud->skilltimerskill[i]->timer = add_timer(tick, skill_timerskill, src->id, i);
ud->skilltimerskill[i]->src_id = src->id;
@@ -2304,7 +2304,7 @@ int skill_cleartimerskill (struct block_list *src)
nullpo_retr(0, src);
ud = unit_bl2ud(src);
nullpo_retr(0, ud);
-
+
for(i=0;i<MAX_SKILLTIMERSKILL;i++) {
if(ud->skilltimerskill[i]) {
delete_timer(ud->skilltimerskill[i]->timer, skill_timerskill);
@@ -2341,14 +2341,14 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
if (skillid > 0 && skilllv <= 0) return 0;
nullpo_retr(1, src);
- nullpo_retr(1, bl);
+ nullpo_retr(1, bl);
if (src->m != bl->m)
return 1;
if (bl->prev == NULL)
return 1;
-
+
sd = BL_CAST(BL_PC, src);
tsd = BL_CAST(BL_PC, bl);
@@ -2364,7 +2364,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
return 1;
}
- sc = status_get_sc(src);
+ sc = status_get_sc(src);
if (sc && !sc->count)
sc = NULL; //Unneeded
@@ -2493,7 +2493,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
skill_area_temp[1] = 0;
map_foreachinrange(skill_attack_area, src,
skill_get_splash(skillid, skilllv), splash_target(src),
- BF_WEAPON, src, src, skillid, skilllv, tick, flag, BCT_ENEMY);
+ BF_WEAPON, src, src, skillid, skilllv, tick, flag, BCT_ENEMY);
break;
case KN_CHARGEATK:
@@ -2638,14 +2638,14 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
//Splash attack skills.
case AS_GRIMTOOTH:
- case MC_CARTREVOLUTION:
+ case MC_CARTREVOLUTION:
case NPC_SPLASHATTACK:
flag |= SD_PREAMBLE; // a fake packet will be sent for the first target to be hit
case AS_SPLASHER:
case SM_MAGNUM:
case MS_MAGNUM:
case HT_BLITZBEAT:
- case AC_SHOWER:
+ case AC_SHOWER:
case MA_SHOWER:
case MG_NAPALMBEAT:
case MG_FIREBALL:
@@ -2707,7 +2707,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
//Coded apart for it needs the flag passed to the damage calculation.
if (skill_area_temp[1] != bl->id)
skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag|SD_ANIMATION);
- else
+ else
skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag);
break;
@@ -2773,12 +2773,12 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
src,skillid,skilllv,tick,flag|BCT_ENEMY|1,
skill_castend_nodamage_id);
}
- break;
+ break;
case CH_PALMSTRIKE: // Palm Strike takes effect 1sec after casting. [Skotlex]
// clif_skill_nodamage(src,bl,skillid,skilllv,0); //Can't make this one display the correct attack animation delay :/
clif_damage(src,bl,tick,status_get_amotion(src),0,-1,1,4,0); //Display an absorbed damage attack.
skill_addtimerskill(src, tick + 1000, bl->id, 0, 0, skillid, skilllv, BF_WEAPON, flag);
- break;
+ break;
case PR_TURNUNDEAD:
case ALL_RESURRECTION:
@@ -2843,7 +2843,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
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
+ 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
@@ -2908,7 +2908,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
if (skilllv == 5)
skill_attack(BF_MAGIC,src,src,src,skillid,skilllv,tick,flag);
status_percent_damage(src, src, 0, 100, false);
- }
+ }
if (sd) skill_blockpc_start (sd, skillid, (skilllv < 5 ? 10000: 15000));
break;
@@ -2969,7 +2969,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
return 1;
}
- map_freeblock_unlock();
+ map_freeblock_unlock();
if( sd && !(flag&1) )
{
@@ -2983,7 +2983,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
}
/*==========================================
- *
+ *
*------------------------------------------*/
int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, int skillid, int skilllv, unsigned int tick, int flag)
{
@@ -2994,10 +2994,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
struct status_data *sstatus, *tstatus;
struct status_change *tsc;
struct status_change_entry *tsce;
-
+
int i;
enum sc_type type;
-
+
if(skillid > 0 && skilllv <= 0) return 0; // celest
nullpo_retr(1, src);
@@ -3024,7 +3024,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
tstatus = status_get_status_data(bl);
sstatus = status_get_status_data(src);
-
+
//Check for undead skills that convert a no-damage skill into a damage one. [Skotlex]
switch (skillid) {
case HLIF_HEAL: //[orn]
@@ -3071,7 +3071,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
{
int heal = skill_calc_heal(src, bl, skilllv);
int heal_get_jobexp;
-
+
if( status_isimmune(bl) || (dstmd && (dstmd->class_ == MOBID_EMPERIUM || mob_is_battleground(dstmd))) )
heal=0;
@@ -3144,7 +3144,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
skilllv = 3; //Resurrection level 3 is used
} else //Invalid target, skip resurrection.
break;
-
+
case ALL_RESURRECTION:
if(sd && (map_flag_gvg(bl->m) || map[bl->m].flag.battleground))
{ //No reviving in WoE grounds!
@@ -3153,7 +3153,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
}
if (!status_isdead(bl))
break;
- {
+ {
int per = 0, sper = 0;
if (map[bl->m].flag.pvp && dstsd && dstsd->pvp_point < 0)
break;
@@ -3164,12 +3164,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case 3: per=50; break;
case 4: per=80; break;
}
- if(dstsd && dstsd->special_state.restart_full_recover)
+ if(dstsd && dstsd->special_state.restart_full_recover)
per = sper = 100;
if (status_revive(bl, per, sper))
{
clif_skill_nodamage(src,bl,ALL_RESURRECTION,skilllv,1); //Both Redemptio and Res show this skill-animation.
- if(sd && dstsd && battle_config.resurrection_exp > 0)
+ if(sd && dstsd && battle_config.resurrection_exp > 0)
{
int exp = 0,jexp = 0;
int lv = dstsd->status.base_level - sd->status.base_level, jlv = dstsd->status.job_level - sd->status.job_level;
@@ -3190,7 +3190,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case AL_DECAGI:
case MER_DECAGI:
- clif_skill_nodamage (src, bl, skillid, skilllv,
+ clif_skill_nodamage (src, bl, skillid, skilllv,
sc_start(bl, type, (40 + skilllv * 2 + (status_get_lv(src) + sstatus->int_)/5), skilllv, skill_get_time(skillid,skilllv)));
break;
@@ -3225,7 +3225,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
);
abra_skilllv = min(skilllv, skill_get_max(abra_skillid));
clif_skill_nodamage (src, bl, skillid, skilllv, 1);
-
+
if( sd )
{// player-casted
sd->state.abra_flag = 1;
@@ -3239,11 +3239,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
int inf = skill_get_inf(abra_skillid);
int target_id = 0;
if (!ud) break;
- if (inf&INF_SELF_SKILL || inf&INF_SUPPORT_SKILL) {
+ if (inf&INF_SELF_SKILL || inf&INF_SUPPORT_SKILL) {
if (src->type == BL_PET)
bl = (struct block_list*)((TBL_PET*)src)->msd;
if (!bl) bl = src;
- unit_skilluse_id(src, bl->id, abra_skillid, abra_skilllv);
+ unit_skilluse_id(src, bl->id, abra_skillid, abra_skilllv);
} else { //Assume offensive skills
if (ud->target)
target_id = ud->target;
@@ -3256,7 +3256,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
if (skill_get_casttype(abra_skillid) == CAST_GROUND) {
bl = map_id2bl(target_id);
if (!bl) bl = src;
- unit_skilluse_pos(src, bl->x, bl->y, abra_skillid, abra_skilllv);
+ unit_skilluse_pos(src, bl->x, bl->y, abra_skillid, abra_skilllv);
} else
unit_skilluse_id(src, target_id, abra_skillid, abra_skilllv);
}
@@ -3344,7 +3344,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case CR_PROVIDENCE:
if(sd && dstsd){ //Check they are not another crusader [Skotlex]
- if ((dstsd->class_&MAPID_UPPERMASK) == MAPID_CRUSADER) {
+ if ((dstsd->class_&MAPID_UPPERMASK) == MAPID_CRUSADER) {
clif_skill_fail(sd,skillid,0,0);
map_freeblock_unlock();
return 1;
@@ -3353,7 +3353,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
clif_skill_nodamage(src,bl,skillid,skilllv,
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
break;
-
+
case CG_MARIONETTE:
{
struct status_change* sc = status_get_sc(src);
@@ -3464,7 +3464,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
sc_start(bl,SC_SEVENWIND,100,skilllv,skill_get_time(skillid,skilllv));
-
+
break;
case PR_KYRIE:
@@ -3497,7 +3497,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case LK_BERSERK:
case MS_BERSERK:
case KN_AUTOCOUNTER:
- case KN_TWOHANDQUICKEN:
+ case KN_TWOHANDQUICKEN:
case KN_ONEHAND:
case MER_QUICKEN:
case CR_SPEARQUICKEN:
@@ -3540,12 +3540,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
break;
case HP_ASSUMPTIO:
- if (sd && !dstsd) {
+ if( sd && dstmd )
clif_skill_fail(sd,skillid,0,0);
- } else {
+ else
clif_skill_nodamage(src,bl,skillid,skilllv,
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
- }
break;
case MG_SIGHT:
case MER_SIGHT:
@@ -3728,7 +3727,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
sd->devotion[i] = bl->id;
}
- else
+ else
mer->devotion_flag = 1; // Mercenary Devoting Owner
clif_skill_nodamage(src, bl, skillid, skilllv,
@@ -3764,7 +3763,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
skill_blown(src,bl,skill_get_blewcount(skillid,skilllv),-1,0);
skill_additional_effect(src,bl,skillid,skilllv,BF_MISC,tick); //Use Misc rather than weapon to signal passive pushback
}
- break;
+ break;
case MO_ABSORBSPIRITS:
i = 0;
@@ -3873,7 +3872,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
}
}
break;
-
+
case WZ_SIGHTRASHER:
//Passive side of the attack.
status_change_end(src,SC_SIGHT,-1);
@@ -4003,7 +4002,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
clif_skill_nodamage(src,bl,skillid,-1,i); //Hide skill-scream animation.
break;
case TK_RUN:
- if (tsce)
+ if (tsce)
clif_skill_nodamage(src,bl,skillid,skilllv,
status_change_end(bl, type, -1));
else {
@@ -4099,7 +4098,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
break;
if (dstmd)
mob_target(dstmd,src,skill_get_range2(src,skillid,skilllv));
-
+
if (tsc->data[SC_STONE]) {
status_change_end(bl,SC_STONE,-1);
if (sd) clif_skill_fail(sd,skillid,0,0);
@@ -4224,7 +4223,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
clif_skill_nodamage(src, bl, skillid, skilllv, 1);
clif_skill_estimation(sd, bl);
- if( skillid == MER_ESTIMATION )
+ if( skillid == MER_ESTIMATION )
sd = NULL;
break;
@@ -4295,7 +4294,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
clif_skill_fail(sd,skillid,0,0);
}
break;
-
+
case TF_PICKSTONE:
if(sd) {
int eflag;
@@ -4352,7 +4351,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
}
//Note that Full Strip autospell doesn't use a duration
if (!clif_skill_nodamage(src,bl,skillid,skilllv,
- skill_strip_equip(bl, location, i, skilllv,
+ skill_strip_equip(bl, location, i, skilllv,
sd&&skillid==ST_FULLSTRIP&&!pc_checkskill(sd, skillid)?0:skill_get_time(skillid,skilllv)))
&& sd)
clif_skill_fail(sd,skillid,0,0); //Nothing stripped.
@@ -4524,7 +4523,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
if (!tsc->data[i])
continue;
switch (i) {
- case SC_WEIGHT50: case SC_WEIGHT90: case SC_HALLUCINATION:
+ case SC_WEIGHT50: case SC_WEIGHT90: case SC_HALLUCINATION:
case SC_STRIPWEAPON: case SC_STRIPSHIELD: case SC_STRIPARMOR:
case SC_STRIPHELM: case SC_CP_WEAPON: case SC_CP_SHIELD:
case SC_CP_ARMOR: case SC_CP_HELM: case SC_COMBO:
@@ -4578,7 +4577,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
x = src->x + dirx[dir]*skilllv*2;
y = src->y + diry[dir]*skilllv*2;
}
-
+
clif_skill_nodamage(src,bl,TK_HIGHJUMP,skilllv,1);
if(!map_count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB) && map_getcell(src->m,x,y,CELL_CHKREACH)) {
clif_slide(src,x,y);
@@ -4622,7 +4621,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
}
} else if (!dstsd || map_flag_vs(bl->m)) //HP damage only on pvp-maps when against players.
hp = tstatus->max_hp/50; //Recover 2% HP [Skotlex]
-
+
clif_skill_nodamage(src,bl,skillid,skilllv,1);
unit_skillcastcancel(bl,0);
sp = skill_get_sp(bl_skillid,bl_skilllv);
@@ -4632,7 +4631,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
hp>>=1; //Recover half damaged HP at level 5 [Skotlex]
else
hp = 0;
-
+
if (sp) //Recover some of the SP used
sp = sp*(25*(skilllv-1))/100;
@@ -4708,7 +4707,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case NPC_CHANGEDARKNESS:
case NPC_CHANGETELEKINESIS:
clif_skill_nodamage(src,bl,skillid,skilllv,
- sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv),
+ sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv),
skill_get_time(skillid, skilllv)));
break;
case NPC_CHANGEUNDEAD:
@@ -4716,7 +4715,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
//TO-DO This is ugly, fix it
if(tstatus->def_ele==ELE_UNDEAD || tstatus->def_ele==ELE_DARK) break;
clif_skill_nodamage(src,bl,skillid,skilllv,
- sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv),
+ sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv),
skill_get_time(skillid, skilllv)));
break;
@@ -4733,7 +4732,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
if (clif_skill_nodamage(src,bl,skillid,skilllv,
sc_start(bl,type,100,skilllv,skill_time))
&& ud) { //Disable attacking/acting/moving for skill's duration.
- ud->attackabletime =
+ ud->attackabletime =
ud->canact_tick =
ud->canmove_tick = tick + skill_time;
}
@@ -4778,7 +4777,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
mob_randomwalk(md,tick);
}
break;
-
+
case NPC_SPEEDUP:
{
// or does it increase casting rate? just a guess xD
@@ -4851,7 +4850,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
clif_skill_nodamage(src,bl,skillid,skilllv,
sc_start(bl,type,100,100,skill_get_time(skillid, skilllv)));
break;
-
+
case NPC_AGIUP:
sc_start(bl,SC_SPEEDUP1,100,skilllv,skill_get_time(skillid, skilllv));
clif_skill_nodamage(src,bl,skillid,skilllv,
@@ -4863,7 +4862,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
clif_skill_nodamage(src,bl,skillid,skilllv,
sc_start4(bl,type,100,skilllv,0,0,6,skill_get_time(skillid,skilllv)));
break;
-
+
case NPC_SIEGEMODE:
// not sure what it does
clif_skill_nodamage(src,bl,skillid,skilllv,1);
@@ -5019,7 +5018,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
map_freeblock_unlock();
return 1;
}
-
+
if (tsce)
{ //HelloKitty2 (?) explained that this silently fails when target is
//already inflicted. [Skotlex]
@@ -5030,7 +5029,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
//Has a 55% + skilllv*5% success chance.
if (!clif_skill_nodamage(src,bl,skillid,skilllv,
sc_start(bl,type,55+5*skilllv,skilllv,skill_get_time(skillid,skilllv))))
- {
+ {
if (sd) clif_skill_fail(sd,skillid,0,0);
map_freeblock_unlock();
return 0;
@@ -5214,8 +5213,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
sc_start(bl,SC_INCDEFRATE,100,-20,skill_get_time2(skillid,skilllv));
break;
default:
- break;
- }
+ break;
+ }
} while ((--count) > 0);
clif_skill_nodamage(src,bl,skillid,skilllv,1);
}
@@ -5275,12 +5274,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
} else
clif_skill_nodamage(src,bl,skillid,skilllv,
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
-
+
if (skillid == SL_SKE)
sc_start(src,SC_SMA,100,skilllv,skill_get_time(SL_SMA,skilllv));
break;
-
+
// New guild skills [Celest]
case GD_BATTLEORDER:
if(flag&1) {
@@ -5358,7 +5357,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
else
clif_feel_info(sd, skilllv-1, 1);
}
- break;
+ break;
case SG_HATE:
if (sd) {
@@ -5438,7 +5437,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
{
static const int per[5][2]={{20,50},{50,60},{25,75},{60,64},{34,67}};
int rnd = rand()%100;
- i = (skilllv-1)%5;
+ i = (skilllv-1)%5;
if(rnd<per[i][0]) //Self
bl = src;
else if(rnd<per[i][1]) //Master
@@ -5507,7 +5506,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
mob_log_damage(dstmd, src, 0); //Log interaction (counts as 'attacker' for the exp bonus)
mobskill_event(dstmd, src, tick, MSC_SKILLUSED|(skillid<<16));
}
-
+
if( sd && !(flag&1) )
{
if( sd->state.arrow_atk ) //Consume arrow on last invocation to this skill.
@@ -5631,7 +5630,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr data)
if(inf2 & (INF2_PARTY_ONLY|INF2_GUILD_ONLY) && src != target)
{
- inf |=
+ inf |=
(inf2&INF2_PARTY_ONLY?BCT_PARTY:0)|
(inf2&INF2_GUILD_ONLY?BCT_GUILD:0);
//Remove neutral targets (but allow enemy if skill is designed to be so)
@@ -5676,20 +5675,20 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr data)
if( (src->type == BL_MER || src->type == BL_HOM) && !skill_check_condition_mercenary(src, ud->skillid, ud->skilllv, 1) )
break;
-
+
if (ud->state.running && ud->skillid == TK_JUMPKICK)
flag = 1;
if (ud->walktimer != -1 && ud->skillid != TK_RUN)
unit_stop_walking(src,1);
-
+
ud->canact_tick = tick + skill_delayfix(src, ud->skillid, ud->skilllv);
if ( battle_config.display_status_timers && sd )
clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, ud->skillid, ud->skilllv));
-
+
if (skill_get_state(ud->skillid) != ST_MOVE_ENABLE)
unit_set_walkdelay(src, tick, battle_config.default_walk_delay+skill_get_walkdelay(ud->skillid, ud->skilllv), 1);
-
+
if(battle_config.skill_log && battle_config.skill_log&src->type)
ShowInfo("Type %d, ID %d skill castend id [id =%d, lv=%d, target ID %d]\n",
src->type, src->id, ud->skillid, ud->skilllv, target->id);
@@ -5744,7 +5743,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr data)
else if(dx < 0) dx--;
if (dy > 0) dy++;
else if(dy < 0) dy--;
-
+
if (unit_movepos(src, src->x+dx, src->y+dy, 1, 1))
{ //Display movement + animation.
clif_slide(src,src->x,src->y);
@@ -5765,7 +5764,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr data)
}
/*==========================================
- *
+ *
*------------------------------------------*/
int skill_castend_pos(int tid, unsigned int tick, int id, intptr data)
{
@@ -5784,7 +5783,7 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr data)
ud->skilltimer = INVALID_TIMER;
return 0;
}
-
+
if( ud->skilltimer != tid )
{
ShowError("skill_castend_pos: Timer mismatch %d!=%d\n", ud->skilltimer, tid);
@@ -5806,7 +5805,7 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr data)
if( !(src->type&battle_config.skill_reiteration) &&
skill_get_unit_flag(ud->skillid)&UF_NOREITERATION &&
skill_check_unit_range(src,ud->skillx,ud->skilly,ud->skillid,ud->skilllv)
- )
+ )
{
if (sd) clif_skill_fail(sd,ud->skillid,0,0);
break;
@@ -5845,7 +5844,7 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr data)
break;
}
}
-
+
if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv, 1))
break;
@@ -5933,7 +5932,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
case PR_BENEDICTIO:
skill_area_temp[1] = src->id;
i = skill_get_splash(skillid, skilllv);
- map_foreachinarea(skill_area_sub,
+ map_foreachinarea(skill_area_sub,
src->m, x-i, y-i, x+i, y+i, BL_PC,
src, skillid, skilllv, tick, flag|BCT_ALL|1,
skill_castend_nodamage_id);
@@ -5962,7 +5961,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
break;
case MG_SAFETYWALL:
- case MG_FIREWALL:
+ case MG_FIREWALL:
case MG_THUNDERSTORM:
case AL_PNEUMA:
case WZ_ICEWALL:
@@ -6163,7 +6162,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
potion_hp = potion_hp * (100+i)/100;
potion_sp = potion_sp * (100+i)/100;
-
+
if(potion_hp > 0 || potion_sp > 0) {
i = skill_get_splash(skillid, skilllv);
map_foreachinarea(skill_area_sub,
@@ -6185,7 +6184,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
potion_hp = potion_hp * (100+i)/100;
potion_sp = potion_sp * (100+i)/100;
-
+
if(potion_hp > 0 || potion_sp > 0) {
i = skill_get_splash(skillid, skilllv);
map_foreachinarea(skill_area_sub,
@@ -6207,7 +6206,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
return 1;
}
break;
-
+
case HW_GRAVITATION:
if ((sg = skill_unitsetting(src,skillid,skilllv,x,y,0)))
sc_start4(src,type,100,skilllv,0,BCT_SELF,sg->group_id,skill_get_time(skillid,skilllv));
@@ -6304,7 +6303,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
}
/*==========================================
- *
+ *
*------------------------------------------*/
int skill_castend_map (struct map_session_data *sd, short skill_num, const char *map)
{
@@ -6312,7 +6311,7 @@ int skill_castend_map (struct map_session_data *sd, short skill_num, const char
//Simplify skill_failed code.
#define skill_failed(sd) { sd->menuskill_id = sd->menuskill_val = 0; }
- if(skill_num != sd->menuskill_id)
+ if(skill_num != sd->menuskill_id)
return 0;
if( sd->bl.prev == NULL || pc_isdead(sd) ) {
@@ -6348,7 +6347,7 @@ int skill_castend_map (struct map_session_data *sd, short skill_num, const char
skill_failed(sd);
return 0;
}
-
+
switch(skill_num)
{
case AL_TELEPORT:
@@ -6389,12 +6388,12 @@ int skill_castend_map (struct map_session_data *sd, short skill_num, const char
return 0;
}
}
-
+
//When it's an item-used warp-portal, the skill-lv used is lost.. assume max level.
lv = sd->skillitem==skill_num?skill_get_max(skill_num):pc_checkskill(sd,skill_num);
wx = sd->menuskill_val>>16;
wy = sd->menuskill_val&0xffff;
-
+
if( lv <= 0 ) return 0;
if( lv > 4 ) lv = 4; // crash prevention
@@ -6413,7 +6412,7 @@ int skill_castend_map (struct map_session_data *sd, short skill_num, const char
skill_failed(sd);
return 0;
}
-
+
if((group=skill_unitsetting(&sd->bl,skill_num,lv,wx,wy,0))==NULL) {
skill_failed(sd);
return 0;
@@ -6465,12 +6464,12 @@ int skill_dance_overlap(struct skill_unit* unit, int flag)
if (!flag && !(unit->val2&UF_ENSEMBLE))
return 0; //Nothing to remove, this unit is not overlapped.
- if (unit->val1 != unit->group->skill_id)
+ if (unit->val1 != unit->group->skill_id)
{ //Reset state
unit->val1 = unit->group->skill_id;
unit->val2 &= ~UF_ENSEMBLE;
}
-
+
return map_foreachincell(skill_dance_overlap_sub, unit->bl.m,unit->bl.x,unit->bl.y,BL_SKILL, unit,flag);
}
@@ -6636,7 +6635,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli
) && old_sg->limit > 0)
{ //Use the previous limit (minus the elapsed time) [Skotlex]
limit = old_sg->limit - DIFF_TICK(gettick(), old_sg->tick);
- if (limit < 0) //This can happen...
+ if (limit < 0) //This can happen...
limit = skill_get_time(skillid,skilllv);
}
skill_clear_group(src,1);
@@ -6887,7 +6886,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli
skill_delunitgroup(src, group);
return NULL;
}
-
+
if (skillid == NJ_TATAMIGAESHI) //Store number of tiles.
group->val1 = group->alive_count;
@@ -6896,7 +6895,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli
}
/*==========================================
- *
+ *
*------------------------------------------*/
static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned int tick)
{
@@ -6909,7 +6908,7 @@ static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, un
nullpo_retr(0, src);
nullpo_retr(0, bl);
-
+
if(bl->prev==NULL || !src->alive || status_isdead(bl))
return 0;
@@ -6918,12 +6917,12 @@ static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, un
if( skill_get_type(sg->skill_id) == BF_MAGIC && map_getcell(bl->m, bl->x, bl->y, CELL_CHKLANDPROTECTOR) && sg->skill_id != SA_LANDPROTECTOR )
return 0; //AoE skills are ineffective. [Skotlex]
-
+
sc = status_get_sc(bl);
-
+
if (sc && sc->option&OPTION_HIDE && sg->skill_id != WZ_HEAVENDRIVE)
return 0; //Hidden characters are immune to AoE skills except Heaven's Drive. [Skotlex]
-
+
type = status_skill2sc(sg->skill_id);
sce = (sc && type != -1)?sc->data[type]:NULL;
skillid = sg->skill_id; //In case the group is deleted, we need to return the correct skill id, still.
@@ -7019,7 +7018,7 @@ static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, un
sce->timer = add_timer(tick+sg->limit, status_change_timer, bl->id, type);
}
break;
-
+
case UNT_FOGWALL:
if (!sce)
{
@@ -7040,7 +7039,7 @@ static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, un
// if(src->limit + sg->tick > tick + 700)
// src->limit = DIFF_TICK(tick+700,sg->tick);
// break;
-
+
case UNT_MOONLIT:
//Knockback out of area if affected char isn't in Moonlit effect
if (sc && sc->data[SC_DANCING] && (sc->data[SC_DANCING]->val1&0xFFFF) == CG_MOONLIT)
@@ -7054,7 +7053,7 @@ static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, un
}
/*==========================================
- *
+ *
*------------------------------------------*/
int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, unsigned int tick)
{
@@ -7081,7 +7080,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
tsd = BL_CAST(BL_PC, bl);
tsc = status_get_sc(bl);
tstatus = status_get_status_data(bl);
- if (sg->state.magic_power) //For magic power.
+ if (sg->state.magic_power) //For magic power.
{
sc = status_get_sc(ss);
sstatus = status_get_status_data(ss);
@@ -7110,7 +7109,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
if (diff < 0)
return 0;
ts->tick = tick+sg->interval;
-
+
if ((skillid==CR_GRANDCROSS || skillid==NPC_GRANDDARKNESS) && !battle_config.gx_allhit)
ts->tick += sg->interval*(map_count_oncell(bl->m,bl->x,bl->y,BL_CHAR)-1);
}
@@ -7205,7 +7204,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
break;
case UNT_ATTACK_SKILLS:
- switch (sg->skill_id)
+ switch (sg->skill_id)
{
case SG_SUN_WARM: //SG skills [Komurka]
case SG_MOON_WARM:
@@ -7243,7 +7242,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
tsc->sg_counter=0; //Attack absorbed.
break;
default:
- skill_attack(skill_get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
+ skill_attack(skill_get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
}
break;
@@ -7267,7 +7266,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
int sec = skill_get_time2(sg->skill_id,sg->skill_lv);
if (status_change_start(bl,type,10000,sg->skill_lv,sg->group_id,0,0,sec, 8))
{
- const struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL;
+ const struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL;
if (td) sec = DIFF_TICK(td->tick, tick);
map_moveblock(bl, src->bl.x, src->bl.y, tick);
clif_fixpos(bl);
@@ -7338,7 +7337,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
heal -= heal * tsc->data[SC_CRITICALWOUND]->val2 / 100;
clif_skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1);
status_heal(bl, heal, 0, 0);
- break;
+ break;
}
case UNT_TATAMIGAESHI:
@@ -7446,7 +7445,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
}
}
break;
-
+
case UNT_BASILICA:
{
int i = battle_check_target(&src->bl, bl, BCT_ENEMY);
@@ -7532,7 +7531,7 @@ int skill_unit_onout (struct skill_unit *src, struct block_list *bl, unsigned in
if (sce && sce->val3 == BCT_SELF && sce->val4 == sg->group_id)
status_change_end(bl,type,-1);
break;
-
+
case UNT_SPIDERWEB:
{
struct block_list *target = map_id2bl(sg->val2);
@@ -7560,7 +7559,7 @@ static int skill_unit_onleft (int skill_id, struct block_list *bl, unsigned int
sc = status_get_sc(bl);
if (sc && !sc->count)
sc = NULL;
-
+
type = status_skill2sc(skill_id);
sce = (sc && type != -1)?sc->data[type]:NULL;
@@ -7577,7 +7576,7 @@ static int skill_unit_onleft (int skill_id, struct block_list *bl, unsigned int
case BD_RICHMANKIM:
case BD_ETERNALCHAOS:
case BD_DRUMBATTLEFIELD:
- case BD_RINGNIBELUNGEN:
+ case BD_RINGNIBELUNGEN:
case BD_ROKISWEIL:
case BD_INTOABYSS:
case BD_SIEGFRIED:
@@ -7586,7 +7585,7 @@ static int skill_unit_onleft (int skill_id, struct block_list *bl, unsigned int
//We don't check for SC_LONGING because someone could always have knocked you back and out of the song/dance.
//FIXME: This code is not perfect, it doesn't checks for the real ensemble's owner,
//it only checks if you are doing the same ensemble. So if there's two chars doing an ensemble
- //which overlaps, by stepping outside of the other parther's ensemble will cause you to cancel
+ //which overlaps, by stepping outside of the other parther's ensemble will cause you to cancel
//your own. Let's pray that scenario is pretty unlikely and noone will complain too much about it.
skill_stop_dancing(bl);
}
@@ -7601,14 +7600,14 @@ static int skill_unit_onleft (int skill_id, struct block_list *bl, unsigned int
if (sce)
status_change_end(bl, type, -1);
break;
-
+
case BA_POEMBRAGI:
case BA_WHISTLE:
case BA_ASSASSINCROSS:
case BA_APPLEIDUN:
case DC_HUMMING:
case DC_DONTFORGETME:
- case DC_FORTUNEKISS:
+ case DC_FORTUNEKISS:
case DC_SERVICEFORYOU:
if (sce)
{
@@ -7658,7 +7657,7 @@ static int skill_unit_effect (struct block_list* bl, va_list ap)
return 0;
nullpo_retr(0, group);
-
+
dissonance = skill_dance_switch(unit, 0);
//Necessary in case the group is deleted after calling on_place/on_out [Skotlex]
@@ -7742,7 +7741,7 @@ static int skill_check_condition_char_sub (struct block_list *bl, va_list ap)
if ((skillid != PR_BENEDICTIO && *c >=1) || *c >=2)
return 0; //Partner found for ensembles, or the two companions for Benedictio. [Skotlex]
-
+
if (bl == src)
return 0;
@@ -7751,7 +7750,7 @@ static int skill_check_condition_char_sub (struct block_list *bl, va_list ap)
if (tsd->sc.data[SC_SILENCE] || tsd->sc.opt1)
return 0;
-
+
switch(skillid)
{
case PR_BENEDICTIO:
@@ -7836,7 +7835,7 @@ int skill_check_pc_partner (struct map_session_data *sd, short skill_id, short*
}
/*==========================================
- *
+ *
*------------------------------------------*/
static int skill_check_condition_mob_master_sub (struct block_list *bl, va_list ap)
{
@@ -7859,7 +7858,7 @@ static int skill_check_condition_mob_master_sub (struct block_list *bl, va_list
}
/*==========================================
- * Determines if a given skill should be made to consume ammo
+ * Determines if a given skill should be made to consume ammo
* when used by the player. [Skotlex]
*------------------------------------------*/
int skill_isammotype (struct map_session_data *sd, int skill)
@@ -7898,7 +7897,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
{ //GMs don't override the skillItem check, otherwise they can use items without them being consumed! [Skotlex]
sd->skillitem = sd->skillitemlv = 0;
//Need to do arrow state check.
- sd->state.arrow_atk = skill_get_ammotype(skill)?1:0;
+ sd->state.arrow_atk = skill_get_ammotype(skill)?1:0;
//Need to do Spiritball check.
sd->spiritball_old = sd->spiritball;
return 1;
@@ -7908,7 +7907,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
sc = &sd->sc;
if (!sc->count)
sc = NULL;
-
+
if(pc_is90overweight(sd)) {
clif_skill_fail(sd,skill,9,0);
sd->skillitem = sd->skillitemlv = 0;
@@ -7932,7 +7931,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
if (sd->menuskill_id == AM_PHARMACY &&
(skill == AM_PHARMACY || skill == AC_MAKINGARROW || skill == BS_REPAIRWEAPON ||
- skill == AM_TWILIGHT1 || skill == AM_TWILIGHT2 || skill == AM_TWILIGHT3
+ skill == AM_TWILIGHT1 || skill == AM_TWILIGHT2 || skill == AM_TWILIGHT3
)) {
sd->skillitem = sd->skillitemlv = 0;
return 0;
@@ -8159,7 +8158,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
return 0;
}
break;
-
+
case TK_READYCOUNTER:
case TK_READYDOWN:
case TK_READYSTORM:
@@ -8187,7 +8186,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
if (skill == sd->skillid_old) {
status_change_end(&sd->bl, SC_COMBO, -1);
sd->skillid_old = sd->skilllv_old = 0;
- return 0; //Can't repeat previous combo skill.
+ return 0; //Can't repeat previous combo skill.
}
break;
}
@@ -8258,7 +8257,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
if(type) break; //Only do the combo check when the target is selected (type == 0)
if(!(sc && sc->data[SC_SMA]))
return 0;
- break;
+ break;
case HT_POWER:
if(!(sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == skill))
@@ -8310,7 +8309,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
if (map_getcell(sd->bl.m,x,y,CELL_CHKWALL)) {
clif_skill_fail(sd,skill,0,0);
return 0;
- }
+ }
}
}
break;
@@ -8362,7 +8361,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
//Auron insists we should implement SP consumption when you are not Soul Linked. [Skotlex]
//Only invoke on skill begin cast (instant cast skill). [Kevin]
if(sp>0 && !type)
- {
+ {
if (status->sp < (unsigned int)sp)
clif_skill_fail(sd,skill,1,0);
else
@@ -8388,7 +8387,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
return 0;
}
break;
-
+
case NJ_ISSEN:
if (status->hp < 2) {
clif_skill_fail(sd,skill,0,0);
@@ -8400,7 +8399,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
return 0;
}
break;
-
+
case NJ_ZENYNAGE:
if(sd->status.zeny < zeny) {
clif_skill_fail(sd,skill,5,0);
@@ -8442,7 +8441,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
clif_skill_fail(sd,skill,5,0);
return 0;
}
-
+
if(weapon && !pc_check_weapontype(sd,weapon)) {
clif_skill_fail(sd,skill,6,0);
return 0;
@@ -8538,7 +8537,7 @@ int skill_check_condition(struct map_session_data* sd, short skill, short lv, in
case ST_MOVE_ENABLE:
if (sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == skill)
sd->ud.canmove_tick = gettick(); //When using a combo, cancel the can't move delay to enable the skill. [Skotlex]
-
+
if (!unit_can_move(&sd->bl)) {
clif_skill_fail(sd,skill,0,0);
return 0;
@@ -8636,7 +8635,7 @@ int skill_castfix (struct block_list *bl, int skill_id, int skill_lv)
nullpo_retr(0, bl);
sd = BL_CAST(BL_PC, bl);
sc = status_get_sc(bl);
-
+
// calculate base cast time (reduced by dex)
if( !(skill_get_castnodex(skill_id, skill_lv)&1) )
{
@@ -8717,7 +8716,7 @@ int skill_delayfix (struct block_list *bl, int skill_id, int skill_lv)
return 0; //Will use picked skill's delay.
if (bl->type&battle_config.no_skill_delay)
- return battle_config.min_skill_delay_limit;
+ return battle_config.min_skill_delay_limit;
if (time < 0)
time = -time + status_get_amotion(bl); // If set to <0, add to attack motion.
@@ -8738,7 +8737,7 @@ int skill_delayfix (struct block_list *bl, int skill_id, int skill_lv)
break;
default:
if (battle_config.delay_dependon_dex && !(delaynodex&1))
- { // if skill delay is allowed to be reduced by dex
+ { // if skill delay is allowed to be reduced by dex
int scale = battle_config.castrate_dex_scale - status_get_dex(bl);
if (scale > 0)
time = time * scale / battle_config.castrate_dex_scale;
@@ -8746,7 +8745,7 @@ int skill_delayfix (struct block_list *bl, int skill_id, int skill_lv)
time = 0;
}
if (battle_config.delay_dependon_agi && !(delaynodex&1))
- { // if skill delay is allowed to be reduced by agi
+ { // if skill delay is allowed to be reduced by agi
int scale = battle_config.castrate_dex_scale - status_get_agi(bl);
if (scale > 0)
time = time * scale / battle_config.castrate_dex_scale;
@@ -8790,7 +8789,7 @@ int skill_delayfix (struct block_list *bl, int skill_id, int skill_lv)
}
/*=========================================
- *
+ *
*-----------------------------------------*/
void skill_brandishspear_first (struct square *tc, int dir, int x, int y)
{
@@ -9313,7 +9312,7 @@ int skill_clear_group (struct block_list *bl, int flag)
skill_delunitgroup(bl, group[i]);
return count;
}
-
+
/*==========================================
* Returns the first element field found [Skotlex]
*------------------------------------------*/
@@ -9466,7 +9465,7 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
}
/*==========================================
- *
+ *
*------------------------------------------*/
int skill_chastle_mob_changetarget(struct block_list *bl,va_list ap)
{
@@ -9499,7 +9498,7 @@ static int skill_trap_splash (struct block_list *bl, va_list ap)
src = va_arg(ap,struct block_list *);
unit = (struct skill_unit *)src;
tick = va_arg(ap,int);
-
+
nullpo_retr(0, sg = unit->group);
nullpo_retr(0, ss = map_id2bl(sg->src_id));
@@ -9509,7 +9508,7 @@ static int skill_trap_splash (struct block_list *bl, va_list ap)
switch(sg->unit_id){
case UNT_SHOCKWAVE:
case UNT_SANDMAN:
- case UNT_FLASHER:
+ case UNT_FLASHER:
skill_additional_effect(ss,bl,sg->skill_id,sg->skill_lv,BF_MISC,tick);
break;
case UNT_GROUNDDRIFT_WIND:
@@ -9555,7 +9554,7 @@ int skill_enchant_elemental_end (struct block_list *bl, int type)
for (i = 0; i < ARRAYLENGTH(scs); i++)
if (type != scs[i] && sc->data[scs[i]])
status_change_end(bl, scs[i], -1);
-
+
return 0;
}
@@ -9573,7 +9572,7 @@ bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce
if( i == 8 )
wall = false;
}
-
+
if( sce )
{
if( !wall )
@@ -9616,10 +9615,10 @@ void skill_stop_dancing (struct block_list *src)
if(!sc->count || !(sce=sc->data[SC_DANCING]))
return;
-
+
group = skill_id2group(sce->val2);
sce->val2 = 0;
-
+
if (sce->val4)
{
if (sce->val4 != BCT_SELF)
@@ -9787,7 +9786,7 @@ struct skill_unit_group* skill_initunitgroup (struct block_list* src, int count,
nullpo_retr(NULL, src);
nullpo_retr(NULL, ud);
-
+
// find a free spot to store the new unit group
ARR_FIND( 0, MAX_SKILLUNITGROUP, i, ud->skillunit[i] == NULL );
if(i == MAX_SKILLUNITGROUP)
@@ -9846,10 +9845,10 @@ int skill_delunitgroup (struct block_list *src, struct skill_unit_group *group)
nullpo_retr(0, group);
if (!src) src=map_id2bl(group->src_id);
- ud = unit_bl2ud(src);
+ ud = unit_bl2ud(src);
if(!src || !ud) {
ShowError("skill_delunitgroup: Group's source not found! (src_id: %d skill_id: %d)\n", group->src_id, group->skill_id);
- return 0;
+ return 0;
}
if (skill_get_unit_flag(group->skill_id)&(UF_DANCE|UF_SONG|UF_ENSEMBLE))
{
@@ -9946,7 +9945,7 @@ struct skill_unit_group_tickset *skill_unitgrouptickset_search (struct block_lis
nullpo_retr(0, bl);
if (group->interval==-1)
return NULL;
-
+
ud = unit_bl2ud(bl);
if (!ud) return NULL;
@@ -10189,9 +10188,9 @@ int skill_unit_move_sub (struct block_list* bl, va_list ap)
bool dissonance;
int skill_id;
int i;
-
+
nullpo_retr(0, group);
-
+
if( !unit->alive || target->prev == NULL )
return 0;
@@ -10270,7 +10269,7 @@ int skill_unit_move_sub (struct block_list* bl, va_list ap)
//inside the onout/onplace functions. Currently it is safe because we know song/dance
//cells do not get deleted within them. [Skotlex]
if( dissonance ) skill_dance_switch(unit, 1);
-
+
if( flag&4 )
skill_unit_onleft(skill_id,target,tick);
@@ -10297,7 +10296,7 @@ int skill_unit_move (struct block_list *bl, unsigned int tick, int flag)
{ //Onout, clear data
memset(skill_unit_temp, 0, sizeof(skill_unit_temp));
}
-
+
map_foreachincell(skill_unit_move_sub,bl->m,bl->x,bl->y,BL_SKILL,bl,tick,flag);
if( flag&2 && flag&1 )
@@ -10475,10 +10474,10 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in
if (qty < 1)
qty = 1;
-
+
if (!skill_id) //A skill can be specified for some override cases.
skill_id = skill_produce_db[idx].req_skill;
-
+
slot[0]=slot1;
slot[1]=slot2;
slot[2]=slot3;
@@ -10632,7 +10631,7 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in
if(make_per < 1) make_per = 1;
-
+
if(rand()%10000 < make_per || qty > 1){ //Success, or crafting multiple items.
struct item tmp_item;
memset(&tmp_item,0,sizeof(tmp_item));
@@ -10703,7 +10702,7 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in
skill_id != AM_TWILIGHT1 &&
skill_id != AM_TWILIGHT2 &&
skill_id != AM_TWILIGHT3)
- continue;
+ continue;
//Add fame as needed.
switch(++sd->potion_success_counter) {
case 3:
@@ -10756,7 +10755,7 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in
return 1;
}
}
- //Failure
+ //Failure
// if(log_config.produce)
// log_produce(sd,nameid,slot1,slot2,slot3,0);
//TODO update PICKLOG
@@ -10842,7 +10841,7 @@ int skill_blockpc_end(int tid, unsigned int tick, int id, intptr data)
if (data <= 0 || data >= MAX_SKILL)
return 0;
if (sd) sd->blockskill[data] = 0;
-
+
return 1;
}
@@ -10869,14 +10868,14 @@ int skill_blockhomun_end(int tid, unsigned int tick, int id, intptr data) //[orn
if (data <= 0 || data >= MAX_SKILL)
return 0;
if (hd) hd->blockskill[data] = 0;
-
+
return 1;
}
int skill_blockhomun_start(struct homun_data *hd, int skillid, int tick) //[orn]
{
nullpo_retr (-1, hd);
-
+
skillid = skill_get_index(skillid);
if (skillid == 0)
return -1;
@@ -10902,7 +10901,7 @@ int skill_blockmerc_end(int tid, unsigned int tick, int id, intptr data) //[orn]
int skill_blockmerc_start(struct mercenary_data *md, int skillid, int tick)
{
nullpo_retr (-1, md);
-
+
if( (skillid = skill_get_index(skillid)) == 0 )
return -1;
if( tick < 1 )
@@ -10960,10 +10959,10 @@ int skill_split_atoi (char *str, int *val)
for(j = i-1; j >= step; j--)
if ((val[j]-val[j-step]) != diff)
break;
-
+
if (j>=step) //No match, try next step.
continue;
-
+
for(; i < MAX_SKILL_LEVEL; i++)
{ //Apply linear increase
val[i] = val[i-step]+diff;
@@ -11160,8 +11159,8 @@ void skill_init_unit_layout (void)
memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx));
memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy));
} else {
- int dx[] = { 1, 1 ,0, 0,-1};
- int dy[] = { 1, 0, 0,-1,-1};
+ int dx[] = { 1, 1 ,0, 0,-1};
+ int dy[] = { 1, 0, 0,-1,-1};
memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx));
memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy));
}
@@ -11191,8 +11190,8 @@ void skill_init_unit_layout (void)
memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx));
memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy));
} else {
- int dx[] = { 2, 1 ,0,-1,-2};
- int dy[] = { 2, 1, 0,-1,-2};
+ int dx[] = { 2, 1 ,0,-1,-2};
+ int dy[] = { 2, 1, 0,-1,-2};
memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx));
memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy));
}
@@ -11221,7 +11220,7 @@ void skill_init_unit_layout (void)
* skill_castnodex_db.txt
* skill_nocast_db.txt
* skill_unit_db.txt
- * produce_db.txt
+ * produce_db.txt
* create_arrow_db.txt
* abra_db.txt
*------------------------------------------*/
@@ -11290,7 +11289,7 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current)
skill_split_atoi(split[4],skill_db[i].hp_rate);
skill_split_atoi(split[5],skill_db[i].sp_rate);
skill_split_atoi(split[6],skill_db[i].zeny);
-
+
//FIXME: document this
p = split[7];
for( j = 0; j < 32; j++ )
@@ -11308,7 +11307,7 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current)
break;
p++;
}
-
+
//FIXME: document this
p = split[8];
for( j = 0; j < 32; j++ )
@@ -11342,7 +11341,7 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current)
else if( strcmpi(split[10],"move_enable")==0 ) skill_db[i].state = ST_MOVE_ENABLE;
else if( strcmpi(split[10],"water")==0 ) skill_db[i].state = ST_WATER;
else skill_db[i].state = ST_NONE;
-
+
skill_split_atoi(split[11],skill_db[i].spiritball);
for( j = 0; j < 10; j++ ) {
skill_db[i].itemid[j] = atoi(split[12+ 2*j]);
@@ -11358,7 +11357,7 @@ static bool skill_parse_row_castdb(char* split[], int columns, int current)
i = skill_get_index(i);
if( !i ) // invalid skill id
return false;
-
+
skill_split_atoi(split[1],skill_db[i].cast);
skill_split_atoi(split[2],skill_db[i].delay);
skill_split_atoi(split[3],skill_db[i].walkdelay);
@@ -11374,7 +11373,7 @@ static bool skill_parse_row_castnodexdb(char* split[], int columns, int current)
i = skill_get_index(i);
if( !i ) // invalid skill id
return false;
-
+
skill_split_atoi(split[1],skill_db[i].castnodex);
if( split[2] ) // optional column
skill_split_atoi(split[2],skill_db[i].delaynodex);
@@ -11400,7 +11399,7 @@ static bool skill_parse_row_unitdb(char* split[], int columns, int current)
i = skill_get_index(i);
if( !i ) // invalid skill id
return false;
-
+
skill_db[i].unit_id[0] = strtol(split[1],NULL,16);
skill_db[i].unit_id[1] = strtol(split[2],NULL,16);
skill_split_atoi(split[3],skill_db[i].unit_layout_type);
@@ -11446,7 +11445,7 @@ static bool skill_parse_row_producedb(char* split[], int columns, int current)
skill_produce_db[current].itemlv = atoi(split[1]);
skill_produce_db[current].req_skill = atoi(split[2]);
skill_produce_db[current].req_skill_lv = atoi(split[3]);
-
+
for( x = 4, y = 0; x+1 < columns && split[x] && split[x+1] && y < MAX_PRODUCE_RESOURCE; x += 2, y++ )
{
skill_produce_db[current].mat_id[y] = atoi(split[x]);
@@ -11465,7 +11464,7 @@ static bool skill_parse_row_createarrowdb(char* split[], int columns, int curren
return false;
skill_arrow_db[current].nameid = i;
-
+
for( x = 1, y = 0; x+1 < columns && split[x] && split[x+1] && y < MAX_ARROW_RESOURCE; x += 2, y++ )
{
skill_arrow_db[current].cre_id[y] = atoi(split[x]);
@@ -11504,7 +11503,7 @@ static void skill_readdb(void)
memset(skill_produce_db,0,sizeof(skill_produce_db));
memset(skill_arrow_db,0,sizeof(skill_arrow_db));
memset(skill_abra_db,0,sizeof(skill_abra_db));
-
+
// load skill databases
safestrncpy(skill_db[0].name, "UNKNOWN_SKILL", sizeof(skill_db[0].name));
safestrncpy(skill_db[0].desc, "Unknown Skill", sizeof(skill_db[0].desc));
@@ -11532,18 +11531,18 @@ int do_init_skill (void)
{
skilldb_name2id = strdb_alloc(DB_OPT_DUP_KEY, 0);
skill_readdb();
-
+
group_db = idb_alloc(DB_OPT_BASE);
skillunit_db = idb_alloc(DB_OPT_BASE);
skill_unit_ers = ers_new(sizeof(struct skill_unit_group));
skill_timer_ers = ers_new(sizeof(struct skill_timerskill));
-
+
add_timer_func_list(skill_unit_timer,"skill_unit_timer");
add_timer_func_list(skill_castend_id,"skill_castend_id");
add_timer_func_list(skill_castend_pos,"skill_castend_pos");
add_timer_func_list(skill_timerskill,"skill_timerskill");
add_timer_func_list(skill_blockpc_end, "skill_blockpc_end");
-
+
add_timer_interval(gettick()+SKILLUNITTIMER_INTERVAL,skill_unit_timer,0,0,SKILLUNITTIMER_INTERVAL);
return 0;