Changeset 19 for src/map/skill.c

Show
Ignore:
Timestamp:
07/02/08 12:20:18 (17 years ago)
Author:
jinshiro
Message:

Now Compiles with Cygwin GCC

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/map/skill.c

    r13 r19  
    4242#define GD_SKILLRANGEMIN 900 
    4343#define GD_SKILLRANGEMAX GD_SKILLRANGEMIN+MAX_GUILDSKILL 
    44 #define HM_SKILLRANGEMIN 1100 //Custom Jobs (blackmagic)//Custom Job End 
     44#define HM_SKILLRANGEMIN 1100 
    4545#define HM_SKILLRANGEMAX HM_SKILLRANGEMIN+MAX_HOMUNSKILL 
    4646 
     
    283283        struct status_change* sc; 
    284284        sc = status_get_sc(bl); 
    285          
     285 
    286286        // Never copy NPC/Wedding Skills 
    287287        if (skill_get_inf2(skillid)&(INF2_NPC_SKILL|INF2_WEDDING_SKILL)) 
     
    300300        if ((skillid == AL_INCAGI || skillid == AL_BLESSING)) 
    301301                return 0; 
    302                  
     302 
    303303        return 1; 
    304304} 
     
    306306// [MouseJstr] - skill ok to cast? and when? 
    307307int skillnotok (int skillid, struct map_session_data *sd) 
    308 {        
     308{ 
    309309        int i,m; 
    310310        nullpo_retr (1, sd); 
    311311        m = sd->bl.m; 
    312312        i = skill_get_index(skillid); 
    313          
     313 
    314314        if (i == 0) 
    315315                return 1; // invalid skill id 
    316          
     316 
    317317        if (battle_config.gm_skilluncond && pc_isGM(sd) >= battle_config.gm_skilluncond) 
    318318                return 0;  // GMs can do any damn thing they want 
     
    354354                                return 1; 
    355355                        } 
    356                         break;   
     356                        break; 
    357357                case MC_VENDING: 
    358358                case MC_IDENTIFY: 
     
    387387        if (i == 0) 
    388388                return 1; // invalid skill id 
    389          
     389 
    390390        if (hd->blockskill[i] > 0) 
    391391                return 1; 
     
    396396 
    397397struct s_skill_unit_layout* skill_get_unit_layout (int skillid, int skilllv, struct block_list* src, int x, int y) 
    398 {        
     398{ 
    399399        int pos = skill_get_unit_layout_type(skillid,skilllv); 
    400400        int dir; 
     
    420420 
    421421/*========================================== 
    422  *  
     422 * 
    423423 *------------------------------------------*/ 
    424424int skill_additional_effect (struct block_list* src, struct block_list *bl, int skillid, int skilllv, int attack_type, unsigned int tick) 
     
    450450        if (!tsc) //skill additional effect is about adding effects to the target... 
    451451                //So if the target can't be inflicted with statuses, this is pointless. 
    452                 return 0;        
     452                return 0; 
    453453 
    454454        switch(skillid) 
     
    482482                                                (2000 - 4*sstatus->agi - 2*sstatus->dex))) 
    483483                                        ; //Stance triggered 
    484                                 else if(sc->data[SC_READYTURN] &&  
     484                                else if(sc->data[SC_READYTURN] && 
    485485                                        sc_start(src,SC_COMBO, 15, TK_TURNKICK, 
    486486                                                (2000 - 4*sstatus->agi - 2*sstatus->dex))) 
     
    492492                                                rate += rate*sc->data[SC_SKILLRATE_UP]->val2/100; 
    493493                                                status_change_end(src,SC_SKILLRATE_UP,-1); 
    494                                         }  
     494                                        } 
    495495                                        sc_start4(src,SC_COMBO, rate, TK_COUNTER, bl->id,0,0, 
    496496                                                (2000 - 4*sstatus->agi - 2*sstatus->dex)); 
     
    662662        case NPC_PETRIFYATTACK: 
    663663                sc_start4(bl,status_skill2sc(skillid),50+10*skilllv, 
    664                         skilllv,0,0,skill_get_time(skillid,skilllv),  
     664                        skilllv,0,0,skill_get_time(skillid,skilllv), 
    665665                        skill_get_time2(skillid,skilllv)); 
    666666                break; 
     
    680680                sc_start(bl,SC_BLEEDING,(20*skilllv),skilllv,skill_get_time2(skillid,skilllv)); 
    681681                break; 
    682         case NPC_MENTALBREAKER:  
     682        case NPC_MENTALBREAKER: 
    683683        {       //Based on observations by Tharis, Mental Breaker should do SP damage 
    684684                //equal to Matk*skLevel. 
     
    785785                        if (tsc->data[SC_ADRENALINE2]) 
    786786                                status_change_end(bl, SC_ADRENALINE2, -1); 
    787                 }                
     787                } 
    788788                break; 
    789789        case TK_TURNKICK: 
     
    821821                sc_start(bl,SC_CRITICALWOUND,100,skilllv,skill_get_time2(skillid,skilllv)); 
    822822                break; 
     823<<<<<<< .mine 
     824        case NC_GHOULTOUCH:     //Necro Ghoul Touch [Brain] 
     825        if (battle_check_living(tstatus->race, tstatus->def_ele)) //Check if target is a living creature before proceed 
     826                sc_start(bl,SC_POISON,10000,skilllv,skill_get_time2(skillid,skilllv)); 
     827        break; 
     828        case NC_PWSUFFER:       //Necro Power Word: Suffer [Brain] 
     829        case WL_PWAGONY:        //Warlock Power Word: Agony [Brain] 
     830        if (battle_check_living(tstatus->race, tstatus->def_ele)) //Check if target is a living creature before proceed 
     831                sc_start(bl,skillid==NC_PWSUFFER?SC_SUFFER:SC_AGONY,1000,skilllv,skill_get_time2(skillid,skilllv)); 
     832        break; 
     833        case WL_SEARING:        //Warlock Searing Pain [Brain] 
     834        //The DoT is only initiated if target isnt burning already. 
     835        if(!tsc->data[SC_SEARING] && !tsc->data[SC_IMMOLATE]) 
     836                sc_start(bl,SC_SEARING,10000,skilllv,skill_get_time2(skillid,skilllv)); 
     837        break; 
     838        case WL_IMMOLATE:       //Warlock Immolate [Brain] 
     839        //The DoT is only initiated if target isnt in immolate, but must be in searing pain status 
     840        if(tsc->data[SC_SEARING] && !tsc->data[SC_IMMOLATE]) 
     841                sc_start(bl,SC_IMMOLATE,10000,skilllv,skill_get_time2(skillid,skilllv)); 
     842        break; 
     843        case WL_SHADOWBURN:     //Warlock Shadow Burn [Brain] 
     844        sc_start(bl,SC_STUN,10000,skilllv,skill_get_time(skillid,skilllv)); 
     845        break; 
     846        //Mercenary Skills [Brainstorm] 
     847/*      case MS_BASH: 
     848        sc_start(bl,SC_STUN,5*(skilllv-5),skilllv,skill_get_time(skillid,skilllv)); 
     849        break; 
     850        case MER_CRASH: 
     851        sc_start(bl,SC_STUN,6*skilllv,skilllv,skill_get_time(skillid,skilllv)); 
     852        break;*/ 
     853======= 
    823854                //Custom Jobs (blackmagic) 
    824855        case NC_GHOULTOUCH:     //Necro Ghoul Touch [Brain] 
     
    845876                break; 
    846877//Custom Job End 
     878>>>>>>> .r18 
    847879        } 
    848880 
     
    956988        if(sd && sd->classchange && attack_type&BF_WEAPON && 
    957989                dstmd && !(tstatus->mode&MD_BOSS) && 
    958                 (rand()%10000 < sd->classchange))  
     990                (rand()%10000 < sd->classchange)) 
    959991        { 
    960992                struct mob_db *mob; 
     
    965997                                class_ = rand() % MAX_MOB_DB; 
    966998                        } while (!mobdb_checkid(class_)); 
    967                          
     999 
    9681000                        rate = rand() % 1000000; 
    9691001                        mob = mob_db(class_); 
     
    9791011 
    9801012/* Splitted off from skill_additional_effect, which is never called when the 
    981  * attack skill kills the enemy. Place in this function counter status effects  
    982  * when using skills (eg: Asura's sp regen penalty, or counter-status effects  
     1013 * attack skill kills the enemy. Place in this function counter status effects 
     1014 * when using skills (eg: Asura's sp regen penalty, or counter-status effects 
    9831015 * from cards) that will take effect on the source, not the target. [Skotlex] 
    984  * Note: Currently this function only applies to Extremity Fist and BF_WEAPON  
     1016 * Note: Currently this function only applies to Extremity Fist and BF_WEAPON 
    9851017 * type of skills, so not every instance of skill_additional_effect needs a call 
    9861018 * to this one. 
     
    9921024        struct map_session_data *dstsd=NULL; 
    9931025        struct status_change *tsc; 
    994          
     1026 
    9951027        nullpo_retr(0, src); 
    9961028        nullpo_retr(0, bl); 
     
    10101042                if(tsc && tsc->data[SC_KAAHI] && tsc->data[SC_KAAHI]->val4 == -1) 
    10111043                        tsc->data[SC_KAAHI]->val4 = add_timer( 
    1012                                 tick+skill_get_time2(SL_KAAHI,tsc->data[SC_KAAHI]->val1),  
     1044                                tick+skill_get_time2(SL_KAAHI,tsc->data[SC_KAAHI]->val1), 
    10131045                                kaahi_heal_timer, bl->id, SC_KAAHI); //Activate heal. 
    10141046                break; 
     
    10421074                status_heal(src, 0, status_get_lv(bl)*(95+15*rate)/100, 2); 
    10431075        } 
     1076<<<<<<< .mine 
     1077 
     1078        // Warlock Soul Steal [Brain] 
     1079        if(sd && skillid && attack_type&BF_MAGIC && status_isdead(bl) 
     1080        && !(skill_get_inf(skillid)&(INF_GROUND_SKILL|INF_SELF_SKILL)) 
     1081        && (rate=pc_checkskill(sd,WL_SOULSTEAL))>0){// Wont work with area/ground spells (hellfire) 
     1082        if (pc_issit(sd)) pc_setstand(sd); 
     1083        clif_skill_nodamage(src,bl,WL_SOULSTEAL,rate,1); 
     1084        clif_specialeffect(src, 253, AREA); // Absorb Mana effect on caster 
     1085        status_heal(src, 0, status_get_lv(bl)*(90+10*rate)/100, 2); 
     1086        if(rand()%100 < rate) skill_additem(src,src,15020,1); //Chance to "steal" the target soul 
     1087======= 
    10441088//Custom Jobs (blackmagic)       
    10451089        // Warlock Soul Steal [Brain] 
     
    10521096                status_heal(src, 0, status_get_lv(bl)*(90+10*rate)/100, 2); 
    10531097                if(rand()%100 < rate) skill_additem(src,src,15020,1); //Chance to "steal" the target soul 
    1054         } 
    1055 //Custom Job End 
     1098>>>>>>> .r18 
     1099        } 
     1100 
    10561101        if(dstsd && attack_type&BF_WEAPON) 
    10571102        {       //Counter effects. 
     
    10641109                                rate+=dstsd->addeff2[i].arrow_rate; 
    10651110                        if (!rate) continue; 
    1066                          
     1111 
    10671112                        if ((dstsd->addeff2[i].flag&(ATF_LONG|ATF_SHORT)) != (ATF_LONG|ATF_SHORT)) 
    10681113                        {       //Trigger has range consideration. 
     
    10731118                        type = dstsd->addeff2[i].id; 
    10741119                        time = skill_get_time2(status_sc2skill(type),7); 
    1075                          
     1120 
    10761121                        if (dstsd->addeff2[i].flag&ATF_TARGET) 
    10771122                                status_change_start(src,type,rate,7,0,0,0,time,0); 
    1078                          
     1123 
    10791124                        if (dstsd->addeff2[i].flag&ATF_SELF && !status_isdead(bl)) 
    10801125                                status_change_start(bl,type,rate,7,0,0,0,time,0); 
     
    10841129        // Trigger counter-spells to retaliate against damage causing skills. 
    10851130        if(dstsd && !status_isdead(bl) && src != bl && dstsd->autospell2[0].id && 
    1086                 !(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE))  
     1131                !(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE)) 
    10871132        { 
    10881133                struct block_list *tbl; 
     
    11041149                        if (attack_type&BF_LONG) 
    11051150                                 rate>>=1; 
    1106                          
     1151 
    11071152                        if (skillnotok(skillid, dstsd)) 
    11081153                                continue; 
     
    11131158                        else 
    11141159                                tbl = src; 
    1115                          
     1160 
    11161161                        switch (skill_get_casttype(skillid)) { 
    11171162                                case CAST_GROUND: 
     
    11371182        //Auto-script when attacked 
    11381183        if(dstsd && !status_isdead(bl) && src != bl && dstsd->autoscript2[0].script && 
    1139                 !(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE))  
     1184                !(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE)) 
    11401185        { 
    11411186                int i; 
     
    11611206   (BCT_ENEMY/BCT_PARTY/BCT_SELF) are the valid values. 
    11621207--------------------------------------------------------------------------*/ 
    1163 int skill_break_equip (struct block_list *bl, unsigned short where, int rate, int flag)  
     1208int skill_break_equip (struct block_list *bl, unsigned short where, int rate, int flag) 
    11641209{ 
    11651210        const int where_list[4]     = {EQP_WEAPON, EQP_ARMOR, EQP_SHIELD, EQP_HELM}; 
     
    12631308        for (i = 0; i < ARRAYLENGTH(pos); i++) { 
    12641309                if (where&pos[i] && sc->data[sc_def[i]]) 
    1265                         where&=~pos[i];  
     1310                        where&=~pos[i]; 
    12661311        } 
    12671312        if (!where) return 0; 
     
    12931338        if (count == 0) 
    12941339                return 0; //Actual knockback distance is 0. 
    1295          
     1340 
    12961341        switch (target->type) 
    12971342        { 
     
    13281373 
    13291374        if (!su) 
    1330                 unit_stop_walking(target,0);  
     1375                unit_stop_walking(target,0); 
    13311376 
    13321377        dx = nx - target->x; 
     
    13451390        map_foreachinmovearea(clif_insight, target, AREA_SIZE, -dx, -dy, target->type == BL_PC ? BL_ALL : BL_PC, target); 
    13461391 
    1347         if(!(flag&0x1))  
     1392        if(!(flag&0x1)) 
    13481393                clif_blown(target); 
    13491394 
     
    13931438 * flag&0xFFF is passed to the underlying battle_calc_attack for processing 
    13941439 *      (usually holds number of targets, or just 1 for simple splash attacks) 
    1395  * flag&0x1000 is used to tag that this is a splash-attack (so the damage  
     1440 * flag&0x1000 is used to tag that this is a splash-attack (so the damage 
    13961441 *      packet shouldn't display a skill animation) 
    13971442 * flag&0x2000 is used to signal that the skilllv should be passed as -1 to the 
     
    14941539                        } 
    14951540                } 
    1496          
     1541 
    14971542                if(sc && sc->data[SC_MAGICROD] && src == dsrc) { 
    14981543                        int sp = skill_get_sp(skillid,skilllv); 
     
    15081553 
    15091554        damage = dmg.damage + dmg.damage2; 
    1510          
    1511         if (skillid == AL_INCAGI || skillid == AL_BLESSING) 
    1512                 if (tsd->sc.data[SC_CHANGEUNDEAD]) 
    1513                         damage = 1; 
     1555 
     1556        if( (skillid == AL_INCAGI || skillid == AL_BLESSING) && tsd->sc.data[SC_CHANGEUNDEAD] ) 
     1557                damage = 1; 
    15141558 
    15151559        if (damage > 0 && dmg.flag&BF_WEAPON && src != bl && src == dsrc && 
     
    15201564        type=(skillid==0)?5:skill_get_hit(skillid); 
    15211565 
    1522         if(damage < dmg.div_  
     1566        if(damage < dmg.div_ 
    15231567                //Only skills that knockback even when they miss. [Skotlex] 
    15241568                && skillid != CH_PALMSTRIKE) 
     
    16491693                break; 
    16501694        } 
    1651          
     1695 
    16521696        map_freeblock_lock(); 
    16531697 
     
    16821726                } 
    16831727        } 
    1684         if (skillid != WZ_SIGHTRASHER &&  
    1685                 skillid != WZ_SIGHTBLASTER &&  
     1728        if (skillid != WZ_SIGHTRASHER && 
     1729                skillid != WZ_SIGHTBLASTER && 
    16861730                skillid != AC_SHOWER && 
    16871731                skillid != SM_MAGNUM && 
     
    17051749                        if (!status_isdead(bl)) 
    17061750                                skill_additional_effect(src,bl,skillid,skilllv,attack_type,tick); 
    1707                         //Counter status effects [Skotlex]  
     1751                        //Counter status effects [Skotlex] 
    17081752                        skill_counter_additional_effect(dsrc,bl,skillid,skilllv,attack_type,tick); 
    17091753                } 
     
    17231767                skill_blown(dsrc,bl,dmg.blewcount,direction,0); 
    17241768        } 
    1725          
     1769 
    17261770        //Delayed damage must be dealt after the knockback (it needs to know actual position of target) 
    17271771        if (dmg.amotion) 
     
    17551799 
    17561800        if (!(flag&2) && 
    1757                 (        
     1801                ( 
    17581802                        skillid == MG_COLDBOLT || skillid == MG_FIREBOLT || skillid == MG_LIGHTNINGBOLT 
    17591803                ) && 
     
    18001844        if(battle_check_target(src,bl,flag) > 0) 
    18011845        { 
    1802                 if (flag&(SD_SPLASH|SD_PREAMBLE)) { 
    1803                         if (flag&SD_PREAMBLE && !skill_area_temp[2]) 
    1804                                 clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); 
     1846                // several splash skills need this initial dummy packet to display correctly 
     1847                if (flag&SD_PREAMBLE && skill_area_temp[2] == 0) 
     1848                        clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); 
     1849 
     1850                if (flag&(SD_SPLASH|SD_PREAMBLE)) 
    18051851                        skill_area_temp[2]++; 
    1806                 } 
     1852 
    18071853                return func(src,bl,skill_id,skill_lv,tick,flag); 
    18081854        } 
     
    19271973        struct map_session_data *sd; 
    19281974        int gid, id, strvit, agidex; 
    1929          
     1975 
    19301976        sd = (struct map_session_data *)bl; 
    19311977 
     
    19672013        int i,j,hp,sp,hp_rate,sp_rate,state,mhp ; 
    19682014        int itemid[10],amount[ARRAYLENGTH(itemid)],index[ARRAYLENGTH(itemid)]; 
    1969          
     2015 
    19702016        nullpo_retr(0, hd); 
    19712017        sd = hd->master; 
     
    21022148                                target = src; //Required since it has to warp. 
    21032149                        if(target == NULL) 
    2104                                 break;   
     2150                                break; 
    21052151                        if(target->prev == NULL) 
    21062152                                break; 
     
    21452191                                        } 
    21462192                                        break; 
     2193<<<<<<< .mine 
     2194 
     2195                case NC_PWSUFFER: //Necro Power Word: Suffer [Brain] 
     2196                        if (!status_isdead(target) && status_get_sc(target)->data[SC_SUFFER]){ 
     2197                        skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL); 
     2198                        clif_specialeffect(target, 180, AREA); //Shadow Hit Effect on target 
     2199                        if (skl->type>1 && !status_isdead(target)) 
     2200                                skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION); 
     2201                        } 
     2202                        break; 
     2203                case WL_SEARING: //Warlock Searing Pain [Brain] 
     2204                        if (!status_isdead(target) && status_get_sc(target)->data[SC_SEARING]){ 
     2205                        skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL); 
     2206                        clif_specialeffect(target, 49, AREA); //Fire Hit Effect on target 
     2207                        if (skl->type>1 && !status_isdead(target)) 
     2208                                skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION); 
     2209                        } 
     2210                        break; 
     2211                case WL_IMMOLATE: //Warlock Immolate [Brain] 
     2212                        if (!status_isdead(target) && status_get_sc(target)->data[SC_IMMOLATE]){ 
     2213                        skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL); 
     2214                        clif_specialeffect(target, 97, AREA); //Firepillar Hit Effect on target 
     2215                        if (skl->type>1 && !status_isdead(target)) 
     2216                                skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION); 
     2217                        } 
     2218                        break; 
     2219                case WL_PWAGONY: //Warlock Power Word: Agony [Brain] 
     2220                        if (!status_isdead(target) && status_get_sc(target)->data[SC_AGONY]){ 
     2221                        skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL); 
     2222                        clif_specialeffect(target, 587, AREA); //Big Purple Flame Effect on target 
     2223                        if (skl->type>1 && !status_isdead(target)) 
     2224                                skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION); 
     2225                        } 
     2226                        break; 
     2227 
     2228======= 
    21472229                                        //Custom Jobs (blackmagic) 
    21482230                                 
     
    21812263                                 
    21822264                                        //Custom Job End 
     2265>>>>>>> .r18 
    21832266                                default: 
    21842267                                        skill_attack(skl->type,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag); 
     
    22162299        ud = unit_bl2ud(src); 
    22172300        nullpo_retr(1, ud); 
    2218          
     2301 
    22192302        ARR_FIND( 0, MAX_SKILLTIMERSKILL, i, ud->skilltimerskill[i] == 0 ); 
    22202303        if( i == MAX_SKILLTIMERSKILL ) return 1; 
    2221          
     2304 
    22222305        ud->skilltimerskill[i] = ers_alloc(skill_timer_ers, struct skill_timerskill); 
    22232306        ud->skilltimerskill[i]->timer = add_timer(tick, skill_timerskill, src->id, i); 
     
    22442327        ud = unit_bl2ud(src); 
    22452328        nullpo_retr(0, ud); 
    2246                  
     2329 
    22472330        for(i=0;i<MAX_SKILLTIMERSKILL;i++) { 
    22482331                if(ud->skilltimerskill[i]) { 
     
    22812364 
    22822365        nullpo_retr(1, src); 
    2283         nullpo_retr(1, bl);      
     2366        nullpo_retr(1, bl); 
    22842367 
    22852368        if (src->m != bl->m) 
     
    22882371        if (bl->prev == NULL) 
    22892372                return 1; 
    2290          
     2373 
    22912374        sd = BL_CAST(BL_PC, src); 
    22922375        tsd = BL_CAST(BL_PC, bl); 
     
    23042387        } 
    23052388 
    2306         sc = status_get_sc(src);         
     2389        sc = status_get_sc(src); 
    23072390        if (sc && !sc->count) 
    23082391                sc = NULL; //Unneeded 
     
    23932476        case NPC_BLEEDING: 
    23942477        case NPC_CRITICALWOUND: 
     2478        /*Mercenary Skills [Brainstorm] 
     2479        case MS_BASH: 
     2480        case MA_DOUBLE: 
     2481        case MA_CHARGEARROW: 
     2482        case ML_PIERCE: 
     2483        case ML_SPIRALPIERCE: 
     2484        case MER_CRASH: 
    23952485                skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); 
     2486<<<<<<< .mine 
     2487                break;*/ 
     2488        case NC_GHOULTOUCH:     //Necro Ghoul Touch [Brain] 
     2489        skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); 
     2490        clif_specialeffect(bl, 124, AREA); //Venom Dust Effect on target 
     2491        break; 
     2492        case NC_DEATHHAND:       //Necro Death Hand [Brain] 
     2493        skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag|SD_LEVEL);//Hide skill yell 
     2494        clif_specialeffect(bl, 65, AREA); //Power absorb Effect on target 
     2495        if (battle_check_living(tstatus->race, tstatus->def_ele)){ //Check if target is a living creature before proceed 
     2496                int chance = (10+(skilllv*2)+(status_get_luk(src)-status_get_luk(bl))/5); 
     2497                //10% chance + 2% per skilllv + (caster luk - target luk)/5 % 
     2498                if (rand()%100 < chance) { 
     2499                        clif_skill_nodamage(src,bl,skillid,-1,flag|SD_LEVEL);//Hide skill yell 
     2500                        status_percent_damage(src, bl, 100, 0, true); //Instant kill our target 
     2501                } else clif_skill_fail(sd,skillid,0,0); 
     2502        } 
     2503        break; 
     2504======= 
    23962505                break; 
    23972506                //Custom Jobs (blackmagic) 
     
    24142523                break; 
    24152524                //Custom Job End 
     2525>>>>>>> .r18 
     2526 
    24162527 
    24172528        case LK_JOINTBEAT: // decide the ailment first (affects attack damage and effect) 
     
    24462557                map_foreachinrange(skill_attack_area, src, 
    24472558                        skill_get_splash(skillid, skilllv), splash_target(src), 
    2448                         BF_WEAPON, src, src, skillid, skilllv, tick, flag, BCT_ENEMY);   
     2559                        BF_WEAPON, src, src, skillid, skilllv, tick, flag, BCT_ENEMY); 
    24492560                break; 
    24502561 
     
    25882699        //Splash attack skills. 
    25892700        case AS_GRIMTOOTH: 
    2590         case MC_CARTREVOLUTION:  
     2701        case MC_CARTREVOLUTION: 
    25912702        case NPC_SPLASHATTACK: 
    25922703                flag |= SD_PREAMBLE; // a fake packet will be sent for the first target to be hit 
     
    25942705        case SM_MAGNUM: 
    25952706        case HT_BLITZBEAT: 
    2596         case AC_SHOWER:  
     2707        case AC_SHOWER: 
    25972708        case MG_NAPALMBEAT: 
    25982709        case MG_FIREBALL: 
     
    26512762                if (skill_area_temp[1] != bl->id) 
    26522763                        skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag|SD_ANIMATION); 
    2653                 else  
     2764                else 
    26542765                        skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag); 
    26552766                break; 
     
    27162827                                skill_castend_nodamage_id); 
    27172828        } 
    2718                 break;   
     2829                break; 
    27192830        case CH_PALMSTRIKE: //  Palm Strike takes effect 1sec after casting. [Skotlex] 
    27202831        //      clif_skill_nodamage(src,bl,skillid,skilllv,0); //Can't make this one display the correct attack animation delay :/ 
    27212832                clif_damage(src,bl,tick,status_get_amotion(src),0,-1,1,4,0); //Display an absorbed damage attack. 
    27222833                skill_addtimerskill(src, tick + 1000, bl->id, 0, 0, skillid, skilllv, BF_WEAPON, flag); 
    2723                 break;   
     2834                break; 
    27242835 
    27252836        case PR_TURNUNDEAD: 
     
    27492860                skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
    27502861                break; 
     2862<<<<<<< .mine 
     2863        case AD_DARKHEAL: // Adept Dark Heal [Brain] 
     2864        clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite Effect on target 
     2865        skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); //Exception because we must add the effect manually =/ 
     2866        break; 
     2867        case NC_PWSUFFER: //Necro Power Word: Suffer [Brain] 
     2868        if(battle_check_living(tstatus->race,tstatus->def_ele)){ 
     2869                skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2870                clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 
     2871                clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     2872                //If target is on suffering status already, just cause damage, no extra DoT 
     2873                if(!status_get_sc(bl)->data[SC_SUFFER]) 
     2874                skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,skilllv,flag); 
     2875        } 
     2876        else clif_skill_fail(sd,skillid,0,0); 
     2877        break; 
     2878        case NC_DRAINLIFE: // Necromancer Drain Life [Brain] 
     2879        { 
     2880                int heal = skill_attack(BF_MAGIC, src, src, bl, skillid, skilllv, tick, flag)/2; 
     2881                if (heal > 0 && (battle_check_living(tstatus->race,tstatus->def_ele))){ 
     2882                clif_skill_nodamage(NULL, src, AL_HEAL, heal, 1); 
     2883                status_heal(src, heal, 0, 0); 
     2884                } 
     2885        } 
     2886        clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 
     2887        clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     2888        break; 
     2889        case WL_SHADOWBOLT: // Warlock Shadowbolt [Brain] 
     2890        clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 
     2891        clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     2892        skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); //Again, the effect...cursed effects... 
     2893        break; 
     2894        case WL_SHADOWBURN: // Warlock Shadow Burn [Brain] 
     2895        clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 
     2896        clif_specialeffect(bl, 32, AREA); //Flame Engulf Effect on target 
     2897        clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     2898        skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2899        break; 
     2900        case WL_SEARING: // Warlock Searing Pain [Brain] 
     2901        clif_specialeffect(bl, 406, AREA); //Fire on Head Effect on target 
     2902        clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster 
     2903        skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2904        //if target is on searing status already, just cause damage, no extra DoT 
     2905        if(!status_get_sc(bl)->data[SC_SEARING]) 
     2906                skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,4,flag); 
     2907        break; 
     2908        case WL_CONFLAGRATE: // Warlock Conflagrate [Brain] 
     2909        if(status_get_sc(bl)->data[SC_IMMOLATE]) { // Can only be casted if target is immolating status 
     2910                clif_specialeffect(bl, 183, AREA); //Explosion Effect on target 
     2911                clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster 
     2912                skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2913                status_change_end(bl,SC_IMMOLATE,-1); //End Immolating status 
     2914        } else clif_skill_fail(sd,skillid,0,0); 
     2915        break; 
     2916        case WL_IMMOLATE: // Warlock Immolate [Brain] 
     2917        clif_specialeffect(bl, 635, AREA); //Dragon Fire Effect on target 
     2918        clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster 
     2919        skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2920        //If Target is on searing pain status, will change immolating status instead 
     2921        if(!status_get_sc(bl)->data[SC_IMMOLATE]) 
     2922                skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,5,flag); 
     2923        break; 
     2924        case WL_CURSEDOOM: // Warlock Curse of Doom [Brain] 
     2925        clif_specialeffect(bl, 183, AREA); //Explosion Effect on target 
     2926        skill_attack(BF_MAGIC,src,bl,bl,skillid,skilllv,tick,flag|SD_ANIMATION); 
     2927        break; 
     2928        case WL_PWAGONY: // Warlock Power Word: Agony [Brain] 
     2929        if(battle_check_living(tstatus->race,tstatus->def_ele)){ 
     2930                skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2931                clif_specialeffect(bl, 587, AREA); //Big Purple Flame Effect on target 
     2932                clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     2933                //If target is on Agonizing status already, just cause damage, no extra DoT 
     2934                if(!status_get_sc(bl)->data[SC_AGONY]) 
     2935                skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,skilllv,flag); 
     2936        } 
     2937        else clif_skill_fail(sd,skillid,0,0); 
     2938        break; 
     2939======= 
    27512940                //Custom Jobs (blackmagic) 
    2752  
     2941>>>>>>> .r18 
     2942 
     2943<<<<<<< .mine 
     2944======= 
    27532945         
    27542946        case AD_DARKHEAL: // Adept Dark Heal [Brain] 
     
    28303022 
    28313023                //Custom Job End 
     3024>>>>>>> .r18 
    28323025 
    28333026        case NPC_MAGICALATTACK: 
     
    28673060                                        count++; // natural water cell 
    28683061                                else 
    2869                                 if( (unit = map_find_skill_unit_oncell(src,x,y,SA_DELUGE,NULL)) != NULL  
     3062                                if( (unit = map_find_skill_unit_oncell(src,x,y,SA_DELUGE,NULL)) != NULL 
    28703063                                ||  (unit = map_find_skill_unit_oncell(src,x,y,NJ_SUITON,NULL)) != NULL ) 
    28713064                                { 
     
    29323125                                skill_attack(BF_MAGIC,src,src,src,skillid,skilllv,tick,flag); 
    29333126                        status_percent_damage(src, src, 0, 100, false); 
    2934                 }                
     3127                } 
    29353128                if (sd) skill_blockpc_start (sd, skillid, (skilllv < 5 ? 10000: 15000)); 
    29363129                break; 
     
    29933186        } 
    29943187 
    2995         map_freeblock_unlock();  
     3188        map_freeblock_unlock(); 
    29963189 
    29973190        if (sd && !(flag&1) && sd->state.arrow_atk) //Consume arrow on last invocation to this skill. 
     
    30013194 
    30023195/*========================================== 
    3003  *  
     3196 * 
    30043197 *------------------------------------------*/ 
    30053198int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, int skillid, int skilllv, unsigned int tick, int flag) 
     
    30153208        int i; 
    30163209        enum sc_type type; 
    3017          
     3210 
    30183211        if(skillid > 0 && skilllv <= 0) return 0;       // celest 
    30193212 
     
    30353228        if(status_isdead(src)) 
    30363229                return 1; 
     3230<<<<<<< .mine 
     3231 
     3232======= 
    30373233//Custom Jobs (blackmagic) 
    30383234        /*if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO)*/ 
    30393235        // Added DEATHPACT [Brain] 
    30403236        //if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO) 
     3237>>>>>>> .r18 
    30413238        if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO && skillid != NC_DEATHPACT) 
    30423239                return 1; 
    3043 //Custom Job End 
     3240 
    30443241        tstatus = status_get_status_data(bl); 
    30453242        sstatus = status_get_status_data(src); 
    3046          
     3243 
    30473244        //Check for undead skills that convert a no-damage skill into a damage one. [Skotlex] 
    30483245        switch (skillid) { 
     
    30653262                        } 
    30663263                        break; 
     3264<<<<<<< .mine 
     3265        case AD_DARKHEAL:       // Adept Dark Heal [Brain] 
     3266                // Only player casted spells can be offensive (copyed from AL_HEAL code above) 
     3267                if (sd && (battle_check_living(tstatus->race,tstatus->def_ele)) //Check if target is a living creature 
     3268                && !pc_checkskill(dstsd,NC_PHYLACTERY) //Or he doesnt have Phylactery (non-perma undead) 
     3269                && !status_get_sc(bl)->data[SC_OVERWHELMING]) { //Or Overwhelming Evil is off (most cases) 
     3270                if (battle_check_target(src, bl, BCT_ENEMY) < 1) { 
     3271                          //Offensive heal does not works on non-enemies. 
     3272                        clif_skill_fail(sd,skillid,0,0); 
     3273                        return 0; 
     3274                } 
     3275                return skill_castend_damage_id(src, bl, skillid, skilllv, tick, flag); 
     3276                } 
     3277                break; 
     3278 
     3279======= 
    30673280                        //Custom Jobs (blackmagic) 
    30683281                 
     
    30823295                 
    30833296                        //Custom Job End 
     3297>>>>>>> .r18 
    30843298                case NPC_SMOKING: //Since it is a self skill, this one ends here rather than in damage_id. [Skotlex] 
    30853299                        return skill_castend_damage_id (src, bl, skillid, skilllv, tick, flag); 
     
    31083322                        int heal = skill_calc_heal(src, bl, skilllv); 
    31093323                        int heal_get_jobexp; 
    3110          
     3324 
    31113325                        if (status_isimmune(bl) || (dstmd && dstmd->class_ == MOBID_EMPERIUM)) 
    31123326                                heal=0; 
     3327<<<<<<< .mine 
     3328                // Profane Soul reduces the healed recieved by 3% per skilllv [Brain] 
     3329                if(dstsd) { 
     3330                heal = heal * (100 - pc_checkskill(dstsd,AD_PROFANE)*3)/100; 
     3331                //Wont heal even if he got elemental armors [Brain] 
     3332                if(pc_checkskill(dstsd,NC_PHYLACTERY)) heal = skilllv; 
     3333                } 
     3334======= 
    31133335                        //Custom Jobs (blackmagic) 
    31143336                        // Profane Soul reduces the healed recieved by 3% per skilllv [Brain] 
     
    31193341                        } 
    31203342                        //Custom Job End 
     3343>>>>>>> .r18 
    31213344                        if (sd) { 
    31223345                                if ((i = pc_skillheal_bonus(sd, skillid))) 
     
    31543377                } 
    31553378                break; 
     3379<<<<<<< .mine 
     3380 
     3381        case AD_DARKHEAL: // Adept Dark Heal [Brain] 
     3382        { 
     3383                int heal = skill_calc_heal(src, bl, skilllv); 
     3384                if (status_isimmune(bl) || (dstmd && dstmd->class_ == MOBID_EMPERIUM)) 
     3385                heal=0; 
     3386                if(battle_check_undead(tstatus->race,tstatus->def_ele) || tstatus->race==RC_UNDEAD // Check if our target is undead or demon 
     3387                || tstatus->race==RC_DEMON || pc_checkskill(dstsd,NC_PHYLACTERY)//Or has a phylactery 
     3388                || status_get_sc(bl)->data[SC_OVERWHELMING]) { //Or is on OverWhelm status, checking again... 
     3389                clif_skill_nodamage(src, bl, skillid, heal, 1); 
     3390                clif_skill_nodamage(NULL, bl, AL_HEAL, heal, 1); //Subtle way to show heal numbers AND effect =D 
     3391                status_heal(bl, heal, 0, 0); 
     3392                } else { 
     3393                clif_skill_nodamage(src, bl, skillid, 0, 1); 
     3394                clif_skill_nodamage(NULL, bl, AL_HEAL, 0, 1); 
     3395                } 
     3396        clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite Effect on target 
     3397        } 
     3398        break; 
     3399 
     3400 
     3401======= 
    31563402        //Custom Jobs (blackmagic) 
    31573403         
     
    31753421                break; 
    31763422        //Custom Job End 
     3423>>>>>>> .r18 
    31773424        case PR_REDEMPTIO: 
    31783425                if (sd && !(flag&1)) { 
     
    32053452                } else //Invalid target, skip resurrection. 
    32063453                        break; 
    3207                  
     3454 
    32083455        case ALL_RESURRECTION: 
    3209         //Custom Jobs (blackmagic) 
    32103456        case NC_DEATHPACT: // Necro Death Pact [Brain] 
    3211         //Custom Job End 
    32123457                if(sd && map_flag_gvg(bl->m)) 
    32133458                {       //No reviving in WoE grounds! 
     
    32173462                if (!status_isdead(bl)) 
    32183463                        break; 
    3219                 {        
     3464                { 
    32203465                        int per = 0, sper = 0; 
    32213466                        if (map[bl->m].flag.pvp && dstsd && dstsd->pvp_point < 0) 
     
    32273472                        case 3: per=50; break; 
    32283473                        case 4: per=80; break; 
    3229                         //Custom Jobs (blackmagic) 
    32303474                        case 5: per=100; break; //Added a 5th level because NC_DEATHPACT got 5 lvs [Brain] 
    3231                         //Custom Job End 
    3232                         } 
    3233                         if(dstsd && dstsd->special_state.restart_full_recover)  
     3475                        } 
     3476                        if(dstsd && dstsd->special_state.restart_full_recover) 
    32343477                                per = sper = 100; 
    32353478                        if (status_revive(bl, per, sper)) 
    32363479                        { 
    32373480                                clif_skill_nodamage(src,bl,ALL_RESURRECTION,skilllv,1); //Both Redemptio and Res show this skill-animation. 
     3481<<<<<<< .mine 
     3482                                                if(skillid==NC_DEATHPACT) { // Necro Death Pact [Brain] 
     3483                        clif_skill_nodamage(src, bl, skillid, skilllv, 
     3484                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3485                        break; 
     3486                } 
     3487 
     3488                                if(sd && dstsd && battle_config.resurrection_exp > 0) 
     3489======= 
    32383490                                //Custom Jobs (blackmagic) 
    32393491                                if(skillid==NC_DEATHPACT) { // Necro Death Pact [Brain] 
     
    32443496                                //Custom Job End 
    32453497                                if(sd && dstsd && battle_config.resurrection_exp > 0)  
     3498>>>>>>> .r18 
    32463499                                { 
    32473500                                        int exp = 0,jexp = 0; 
     
    32613514                } 
    32623515                break; 
     3516<<<<<<< .mine 
     3517======= 
    32633518                //Custom Jobs (blackmagic) 
    32643519         
     
    33523607                clif_specialeffect(src, 668, AREA); // Monster skill SCREAM effect on caster (with sound) 
    33533608                break; 
    3354  
    3355                 //Custom Job End 
     3609>>>>>>> .r18 
     3610 
     3611        case AD_PWBLIND: // Adept Power Word: Blind [Brain] 
     3612        if(!tsc->data[type]) { 
     3613                clif_skill_nodamage(src, bl, skillid, skilllv,1); 
     3614                if(sc_start(bl, type,(30 + skilllv * 10 + (status_get_lv(src) - sstatus->int_)/5), 
     3615                skilllv, skill_get_time(skillid,skilllv))) 
     3616                { 
     3617                if(dstmd) mob_unlocktarget(dstmd,tick);  //Removes current target 
     3618                clif_specialeffect(bl, 379, AREA); //379.Soul Drain (2nd Part) 
     3619                break; 
     3620                } 
     3621        } else clif_skill_fail(sd,skillid,0,0); 
     3622        break; 
     3623 
     3624        case AD_PWFEAR: // Adept Power Word: Fear [Brain] 
     3625        if(!tsc->data[type]) { 
     3626                clif_skill_nodamage(src, bl, skillid, skilllv,1); 
     3627                if(dstsd) 
     3628                type = SC_CONFUSION; //Players cant be affected by SC_FEAR 
     3629                if(sc_start(bl, type, (30 + skilllv * 10), skilllv, skill_get_time(skillid,skilllv))) 
     3630                { 
     3631                clif_specialeffect(bl, 372, AREA); //372.Death 
     3632                unit_escape(bl, bl, 30); 
     3633                } 
     3634        } else clif_skill_fail(sd,skillid,0,0); 
     3635        break; 
     3636        case WL_HOWLOFPAIN: // Warlock Howl of Pain [Brain] 
     3637        //These must be here first or else the code wont execute them. 
     3638        clif_specialeffect(src, 670, AREA); // Monster skill SCREAM effect on caster (no sound) 
     3639        clif_soundeffectall(bl, "wraith_die.wav", 0, AREA); //Wraith Laugh Sound 
     3640        if (flag & 1) { 
     3641                //Check if target is a living creature AND a valid enemy 
     3642                if (battle_check_target(src, bl, BCT_ENEMY) && battle_check_living(tstatus->race,tstatus->def_ele)) 
     3643                { 
     3644                if(sc_start(bl,type,10+skilllv*10,skilllv,skill_get_time(skillid,skilllv))) 
     3645                { 
     3646                        if(dstmd) //PROVOKE Effect on mobs 
     3647                        mob_target(dstmd,src,skill_get_range2(src,skillid,skilllv)); 
     3648                        // Breaks Frozen and Sleep status 
     3649                        if(tsc && tsc->count){ 
     3650                        if(tsc->data[SC_FREEZE]) 
     3651                                status_change_end(bl,SC_FREEZE,-1); 
     3652                        if(tsc->data[SC_SLEEP]) 
     3653                                status_change_end(bl,SC_SLEEP,-1); 
     3654                        } 
     3655                        clif_emotion(bl,6); //anger emote on target 
     3656                        break; 
     3657                } else { //What will happen if the status fail: 
     3658                        { 
     3659                        if (sd) //If is a player 
     3660                                clif_skill_fail(sd,skillid,0,0); 
     3661                        map_freeblock_unlock(); //Else is a mob 
     3662                        return 0; 
     3663                        } 
     3664                        unit_skillcastcancel(bl, 2); //In any case, will cancel casting 
     3665                } 
     3666                } 
     3667        } else { 
     3668                map_foreachinrange(skill_area_sub, src, 
     3669                skill_get_splash(skillid, skilllv), BL_CHAR, 
     3670                src, skillid, skilllv, tick, flag|BCT_ENEMY|1, 
     3671                skill_castend_nodamage_id); 
     3672                clif_skill_nodamage(src, bl, skillid, skilllv, 1); 
     3673                map_freeblock_unlock(); 
     3674                return 1; 
     3675        } 
     3676        break; 
     3677        case WL_HOWLOFTERROR: // Warlock Howl of Terror [Brain] 
     3678        if (flag & 1) { 
     3679                int rate; 
     3680                //Check if target is a living creature AND a valid enemy 
     3681                if (battle_check_target(src, bl, BCT_ENEMY) 
     3682                && battle_check_living(tstatus->race,tstatus->def_ele)) { 
     3683                rate = 10 + skilllv*5 + pc_checkskill(sd,AD_PWFEAR)*3; 
     3684                if(dstsd) { 
     3685                        rate -= 10; // 10% less chance on players 
     3686                        type = SC_CONFUSION; //Players cant be affected by SC_FEAR 
     3687                } 
     3688                if(sc_start(bl,type,rate,skilllv,skill_get_time(skillid,skilllv))) 
     3689                        clif_specialeffect(bl, 372, AREA); //Same as PW: Fear 
     3690                } 
     3691        } else { 
     3692                map_foreachinrange(skill_area_sub, src, 
     3693                skill_get_splash(skillid, skilllv), BL_CHAR, 
     3694                src, skillid, skilllv, tick, flag|BCT_ENEMY|1, 
     3695                skill_castend_nodamage_id); 
     3696                clif_skill_nodamage(src, bl, skillid, skilllv, 1); 
     3697        } 
     3698        clif_specialeffect(src, 668, AREA); // Monster skill SCREAM effect on caster (with sound) 
     3699        break; 
     3700 
    33563701 
    33573702        case AL_DECAGI: 
     
    33713716                } 
    33723717                break; 
     3718<<<<<<< .mine 
     3719 
     3720======= 
    33733721        //Custom Jobs (blackmagic) 
    33743722        case NC_DARKMOON: //Necro Dark Moon [Brain] 
     
    34363784                } 
    34373785                break; 
    3438                 //Custom Job End 
     3786>>>>>>> .r18 
     3787        case NC_DARKMOON: //Necro Dark Moon [Brain] 
     3788        if (flag&1) { 
     3789                //Check my enemies 
     3790                if (battle_check_target(src, bl, BCT_ENEMY) && 
     3791                battle_check_living(tstatus->race,tstatus->def_ele)) 
     3792                { 
     3793                if(sc_start(bl,SC_BLIND,50,skilllv,skill_get_time(skillid,skilllv))) 
     3794                        clif_specialeffect(bl, 580, AREA); //Box of Rain effect on target 
     3795                } 
     3796                else { //Now my Party members 
     3797                if (sd == NULL || sd->status.party_id == 0 || (flag & 1)) { 
     3798                        clif_skill_nodamage(bl,bl,skillid,skilllv, 
     3799                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3800                        clif_specialeffect(bl, 521, AREA); //Red Flashing Aura Sprite effect on target 
     3801                } else if (sd) { 
     3802                        party_foreachsamemap(skill_area_sub, sd,skill_get_splash(skillid, skilllv), 
     3803                        src,skillid,skilllv,tick, flag|BCT_ALL|1,skill_castend_nodamage_id); 
     3804                } 
     3805                } 
     3806        } else { 
     3807                map_foreachinrange(skill_area_sub, src, skill_get_splash(skillid, skilllv), BL_CHAR, 
     3808                src, skillid, skilllv, tick, flag|BCT_ALL|1, skill_castend_nodamage_id); 
     3809                clif_skill_nodamage(src, bl, skillid, skilllv, 1); 
     3810        } 
     3811        clif_specialeffect(src, 407, AREA); //Soul Change Effect on caster 
     3812        clif_soundeffectall(bl, "se_wolf1.wav", 0, AREA); //Wolf Howl Sound 
     3813        break; 
     3814        case NC_REQUIEM: //Necro Requiem [Brain] 
     3815        if (flag&1) { 
     3816                //Check my enemies 
     3817                if (battle_check_target(src, bl, BCT_ENEMY) && 
     3818                        battle_check_living(tstatus->race,tstatus->def_ele)) 
     3819                { 
     3820                if(sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))) 
     3821                        clif_specialeffect(bl, 578, AREA); //Box of Curse effect on target 
     3822                } 
     3823                else { //Now my Party members 
     3824                if (sd == NULL || sd->status.party_id == 0 || (flag & 1)) { 
     3825                        clif_skill_nodamage(bl,bl,skillid,skilllv, 
     3826                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3827                        clif_specialeffect(bl, 572, AREA); //Warmth Soul effect on target 
     3828                } else if (sd) { 
     3829                        party_foreachsamemap(skill_area_sub, sd,skill_get_splash(skillid, skilllv), 
     3830                        src,skillid,skilllv,tick, flag|BCT_ALL|1,skill_castend_nodamage_id); 
     3831                } 
     3832                } 
     3833        } else { 
     3834                map_foreachinrange(skill_area_sub, src, skill_get_splash(skillid, skilllv), BL_CHAR, 
     3835                src, skillid, skilllv, tick, flag|BCT_ALL|1, skill_castend_nodamage_id); 
     3836                clif_skill_nodamage(src, bl, skillid, skilllv, 1); 
     3837        } 
     3838        int rnds = rand()%3; 
     3839        switch(rnds) { 
     3840                case 1: 
     3841                clif_soundeffectall(bl, "chant1.wav", 0, AREA); //Chanting Sound 
     3842                break; 
     3843                case 2: 
     3844                clif_soundeffectall(bl, "chant2.wav", 0, AREA); //Chanting Sound 
     3845                break; 
     3846                case 3: 
     3847                clif_soundeffectall(bl, "chant3.wav", 0, AREA); //Chanting Sound 
     3848                break; 
     3849        } 
     3850        break; 
     3851 
    34393852 
    34403853        case PR_LEXDIVINA: 
     
    34423855                        status_change_end(bl,type, -1); 
    34433856                        clif_skill_nodamage (src, bl, skillid, skilllv, 1); 
    3444                 } else  
    3445                         clif_skill_nodamage (src, bl, skillid, skilllv,  
     3857                } else 
     3858                        clif_skill_nodamage (src, bl, skillid, skilllv, 
    34463859                                sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
    34473860                break; 
     
    34593872                        abra_skilllv = min(skilllv, skill_get_max(abra_skillid)); 
    34603873                        clif_skill_nodamage (src, bl, skillid, skilllv, 1); 
    3461                          
     3874 
    34623875                        if( sd ) 
    34633876                        {// player-casted 
     
    34733886                                int target_id = 0; 
    34743887                                if (!ud) break; 
    3475                                 if (inf&INF_SELF_SKILL || inf&INF_SUPPORT_SKILL) {  
     3888                                if (inf&INF_SELF_SKILL || inf&INF_SUPPORT_SKILL) { 
    34763889                                        if (src->type == BL_PET) 
    34773890                                                bl = (struct block_list*)((TBL_PET*)src)->msd; 
    34783891                                        if (!bl) bl = src; 
    3479                                         unit_skilluse_id(src, bl->id, abra_skillid, abra_skilllv);  
     3892                                        unit_skilluse_id(src, bl->id, abra_skillid, abra_skilllv); 
    34803893                                } else {        //Assume offensive skills 
    34813894                                        if (ud->target) 
     
    34903903                                                bl = map_id2bl(target_id); 
    34913904                                                if (!bl) bl = src; 
    3492                                                 unit_skilluse_pos(src, bl->x, bl->y, abra_skillid, abra_skilllv);  
     3905                                                unit_skilluse_pos(src, bl->x, bl->y, abra_skillid, abra_skilllv); 
    34933906                                        } else 
    34943907                                                unit_skilluse_id(src, target_id, abra_skillid, abra_skilllv); 
     
    35643977        case CR_PROVIDENCE: 
    35653978                if(sd && dstsd){ //Check they are not another crusader [Skotlex] 
    3566                         if ((dstsd->class_&MAPID_UPPERMASK) == MAPID_CRUSADER) {         
     3979                        if ((dstsd->class_&MAPID_UPPERMASK) == MAPID_CRUSADER) { 
    35673980                                clif_skill_fail(sd,skillid,0,0); 
    35683981                                map_freeblock_unlock(); 
     
    35733986                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
    35743987                break; 
    3575                  
     3988 
    35763989        case CG_MARIONETTE: 
    35773990                { 
     
    36714084 
    36724085                sc_start(bl,SC_SEVENWIND,100,skilllv,skill_get_time(skillid,skilllv)); 
    3673                          
     4086 
    36744087                break; 
    36754088 
     
    37024115        case LK_BERSERK: 
    37034116        case KN_AUTOCOUNTER: 
    3704         case KN_TWOHANDQUICKEN:  
     4117        case KN_TWOHANDQUICKEN: 
    37054118        case KN_ONEHAND: 
    37064119        case CR_SPEARQUICKEN: 
     
    37134126        case MO_BLADESTOP: 
    37144127        case LK_AURABLADE: 
    3715         case LK_PARRYING:        
     4128        case LK_PARRYING: 
    37164129        case LK_CONCENTRATION: 
    37174130        case WS_CARTBOOST: 
     
    37394152        case NPC_DEFENDER: 
    37404153        case NPC_MAGICMIRROR: 
    3741                 //Custom Jobs (blackmagic) 
    3742         case ALL_ATFIELD:       //AT Field [Brain] 
    3743                 //Custom Job End 
     4154        case ALL_ATFIELD: 
    37444155                clif_skill_nodamage(src,bl,skillid,skilllv, 
    37454156                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
    37464157                break; 
     4158<<<<<<< .mine 
     4159        case AD_LUST:   // Adept Blood Lust [Brain] 
     4160        clif_specialeffect(src, 220, AREA); //Berserk Pot effect 
     4161        clif_specialeffect(src, 455, AREA); //Red Lightnings 
     4162        clif_skill_nodamage(src,bl,skillid,skilllv, 
     4163                sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     4164        break; 
     4165        case NC_DECREPIFY: //Necro Decrepify [Brain] 
     4166        if(battle_check_living(tstatus->race,tstatus->def_ele)){ 
     4167                clif_specialeffect(bl, 403, AREA); //Mind Breaker Effect on target 
     4168                clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     4169                clif_skill_nodamage(src,bl,skillid,skilllv, 
     4170                sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     4171        } 
     4172        else clif_skill_fail(sd,skillid,0,0); 
     4173        break; 
     4174        case WL_CURSEWEAKNESS: // Warlock Curse of Weakness [Brain] 
     4175        clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite effect on target 
     4176        clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster 
     4177        clif_skill_nodamage(src,bl,skillid,skilllv, 
     4178                sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     4179        break; 
     4180        case WL_CURSEEXHAUST: // Warlock Curse of Exhaustion [Brain] 
     4181        clif_specialeffect(bl, 135, AREA); //Ice Breaking effect on target 
     4182        clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster 
     4183        clif_skill_nodamage(src,bl,skillid,skilllv, 
     4184                sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     4185        break; 
     4186        case WL_CURSETONGUES: // Warlock Curse of Tongues [Brain] 
     4187        clif_specialeffect(bl, 72, AREA); //Spinning Lights effect on target 
     4188        clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster 
     4189        clif_skill_nodamage(src,bl,skillid,skilllv, 
     4190                sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     4191        break; 
     4192        case WL_CURSEDOOM: // Warlock Curse of Doom (temp) [Brain] 
     4193        if(!tsc->data[type]) { 
     4194                clif_specialeffect(bl, 196, AREA); //Small Curse Reaper effect on target 
     4195                clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster 
     4196                clif_skill_nodamage(src,bl,skillid,skilllv, 
     4197                sc_start4(bl,type,100, 
     4198                        skilllv,skillid,src->id,skill_get_time(skillid,skilllv),1000)); 
     4199        } else clif_skill_fail(sd,skillid,0,0); 
     4200        break; 
     4201        case WL_OVERWHELMING: // Warlock Overwhelming Evil [Brain] 
     4202        clif_specialeffect(src, 348, AREA); //1000 Blades Trespassing effect on caster 
     4203        clif_skill_nodamage(src,bl,skillid,skilllv, 
     4204                sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     4205        break; 
     4206======= 
    37474207        //Custom Jobs (blackmagic) 
    37484208         
     
    37964256         
    37974257        //Custom Job End 
     4258>>>>>>> .r18 
    37984259        case MG_SIGHT: 
    37994260        case AL_RUWACH: 
     
    39104371                if (!i) 
    39114372                { 
    3912                         if (sd)  
     4373                        if (sd) 
    39134374                                clif_skill_fail(sd,skillid,0,0); 
    39144375                        map_freeblock_unlock(); 
     
    39964457                        skill_additional_effect(src,bl,skillid,skilllv,BF_MISC,tick); //Use Misc rather than weapon to signal passive pushback 
    39974458                } 
    3998                 break;   
     4459                break; 
    39994460 
    40004461        case MO_ABSORBSPIRITS: 
     
    40124473                clif_skill_nodamage(src,bl,skillid,skilllv,i?1:0); 
    40134474                break; 
     4475<<<<<<< .mine 
     4476======= 
    40144477                //Custom Jobs (blackmagic) 
    40154478         
     
    40384501                break; 
    40394502                //Custom Job End 
     4503>>>>>>> .r18 
     4504 
     4505        case WL_DRAINSOUL: // Warlock Drain Soul [Brain] 
     4506        i = 0; 
     4507        if (dstsd && (sd == dstsd || map_flag_vs(src->m))) 
     4508        {       //check if target is a player and we are in versus map 
     4509                i = tstatus->max_sp * skilllv/100;//i = SkillLv% of player Max SP 
     4510                if(dstsd->spiritball && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER) { 
     4511                i += dstsd->spiritball * 5;//will drain Monk Spirits and regain 5 SP per Spirit 
     4512                pc_delspiritball(dstsd,dstsd->spiritball,0); 
     4513                } 
     4514        } else if (dstmd && !(tstatus->mode&MD_BOSS) && battle_check_living(tstatus->race,tstatus->def_ele)) 
     4515        {       // check if target is a monster and not a Boss 
     4516                i = dstmd->level/5 * skilllv;//i = mob level/5 * Skill Lvl 
     4517                mob_target(dstmd,src,0);//This will turn the mob agressive against the caster 
     4518        } 
     4519        if(i < skilllv) i = skilllv; //Minimum 1 sp per skill lvl 
     4520        if (i) { 
     4521                clif_specialeffect(src, 253, AREA); //Absorb Mana effect on caster 
     4522                clif_specialeffect(bl, 52, AREA); //Lightning Hit effect on target 
     4523                status_heal(src, 0, i, 3); //caster drains sp 
     4524                status_zap(bl, 0, i*skilllv); //target lost sp equal to 1*SkillLv the amount drained 
     4525        } 
     4526        clif_skill_nodamage(src,bl,skillid,skilllv,i?1:0); 
     4527        break; 
     4528 
    40404529 
    40414530        case AC_MAKINGARROW: 
     
    41304619                } 
    41314620                break; 
    4132          
     4621 
    41334622        case WZ_SIGHTRASHER: 
    41344623                //Passive side of the attack. 
     
    42384727        case SM_AUTOBERSERK:    // Celest 
    42394728                if (tsce) 
    4240                         i = status_change_end(bl, type, -1);                             
     4729                        i = status_change_end(bl, type, -1); 
    42414730                else 
    42424731                        i = sc_start(bl,type,100,skilllv,60000); 
     
    42524741                break; 
    42534742        case TK_RUN: 
    4254                         if (tsce)  
     4743                        if (tsce) 
    42554744                                clif_skill_nodamage(src,bl,skillid,skilllv, 
    42564745                                        status_change_end(bl, type, -1)); 
     
    43484837                        if (dstmd) 
    43494838                                mob_target(dstmd,src,skill_get_range2(src,skillid,skilllv)); 
    4350                          
     4839 
    43514840                        if (tsc->data[SC_STONE]) { 
    43524841                                status_change_end(bl,SC_STONE,-1); 
     
    44994988                } 
    45004989                break; 
    4501                  
     4990 
    45024991        case TF_PICKSTONE: 
    45034992                if(sd) { 
     
    45565045                //Note that Full Strip autospell doesn't use a duration 
    45575046                if (!clif_skill_nodamage(src,bl,skillid,skilllv, 
    4558                                 skill_strip_equip(bl, location, i, skilllv,  
     5047                                skill_strip_equip(bl, location, i, skilllv, 
    45595048                                sd&&skillid==ST_FULLSTRIP&&!pc_checkskill(sd, skillid)?0:skill_get_time(skillid,skilllv))) 
    45605049                        && sd) 
     
    47125201                                        continue; 
    47135202                                switch (i) { 
    4714                                 case SC_WEIGHT50:    case SC_WEIGHT90:    case SC_HALLUCINATION:  
     5203                                case SC_WEIGHT50:    case SC_WEIGHT90:    case SC_HALLUCINATION: 
    47155204                                case SC_STRIPWEAPON: case SC_STRIPSHIELD: case SC_STRIPARMOR: 
    47165205                                case SC_STRIPHELM:   case SC_CP_WEAPON:   case SC_CP_SHIELD: 
     
    47625251                                y = src->y + diry[dir]*skilllv*2; 
    47635252                        } 
    4764                          
     5253 
    47655254                        clif_skill_nodamage(src,bl,TK_HIGHJUMP,skilllv,1); 
    47665255                        if(!map_count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB) && map_getcell(src->m,x,y,CELL_CHKREACH)) { 
     
    48065295                                } else if (!dstsd || map_flag_vs(bl->m)) //HP damage only on pvp-maps when against players. 
    48075296                                        hp = tstatus->max_hp/50; //Recover 2% HP [Skotlex] 
    4808                                  
     5297 
    48095298                                clif_skill_nodamage(src,bl,skillid,skilllv,1); 
    48105299                                unit_skillcastcancel(bl,0); 
     
    48165305                                else 
    48175306                                        hp = 0; 
    4818                                  
     5307 
    48195308                                if (sp) //Recover some of the SP used 
    48205309                                        sp = sp*(25*(skilllv-1))/100; 
     
    48925381        case NPC_CHANGETELEKINESIS: 
    48935382                clif_skill_nodamage(src,bl,skillid,skilllv, 
    4894                         sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv),  
     5383                        sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv), 
    48955384                                skill_get_time(skillid, skilllv))); 
    48965385                break; 
     
    49005389                if(tstatus->def_ele==ELE_UNDEAD || tstatus->def_ele==ELE_DARK) break; 
    49015390                clif_skill_nodamage(src,bl,skillid,skilllv, 
    4902                         sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv),  
     5391                        sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv), 
    49035392                                skill_get_time(skillid, skilllv))); 
    49045393                break; 
     
    49175406                                        sc_start(bl,type,100,skilllv,skill_time)) 
    49185407                        && ud) {        //Disable attacking/acting/moving for skill's duration. 
    4919                                 ud->attackabletime =  
     5408                                ud->attackabletime = 
    49205409                                ud->canact_tick = 
    49215410                                ud->canmove_tick = tick + skill_time; 
     
    49615450                } 
    49625451                break; 
    4963          
     5452 
    49645453        case NPC_SPEEDUP: 
    49655454                { 
     
    50345523                        sc_start(bl,type,100,100,skill_get_time(skillid, skilllv))); 
    50355524                break; 
    5036                  
     5525 
    50375526        case NPC_AGIUP: 
    50385527                sc_start(bl,SC_SPEEDUP1,100,skilllv,skill_get_time(skillid, skilllv)); 
     
    50465535                        sc_start4(bl,type,100,skilllv,0,0,6,skill_get_time(skillid,skilllv))); 
    50475536                break; 
    5048                  
     5537 
    50495538        case NPC_SIEGEMODE: 
    50505539                // not sure what it does 
     
    51965685                                return 1; 
    51975686                        } 
    5198          
     5687 
    51995688                        if (tsce) 
    52005689                        {       //HelloKitty2 (?) explained that this silently fails when target is 
     
    52075696                        if (!clif_skill_nodamage(src,bl,skillid,skilllv, 
    52085697                                sc_start(bl,type,55+5*skilllv,skilllv,skill_get_time(skillid,skilllv)))) 
    5209                         {        
     5698                        { 
    52105699                                if (sd) clif_skill_fail(sd,skillid,0,0); 
    52115700                                map_freeblock_unlock(); 
     
    53885877                                        break; 
    53895878                                default: 
    5390                                         break;                   
    5391                                 }                        
     5879                                        break; 
     5880                                } 
    53925881                        } while ((--count) > 0); 
    53935882                        clif_skill_nodamage(src,bl,skillid,skilllv,1); 
     
    54495938                        clif_skill_nodamage(src,bl,skillid,skilllv, 
    54505939                                sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
    5451                  
     5940 
    54525941                if (skillid == SL_SKE) 
    54535942                        sc_start(src,SC_SMA,100,skilllv,skill_get_time(SL_SMA,skilllv)); 
    54545943 
    54555944                break; 
    5456                  
     5945 
    54575946        // New guild skills [Celest] 
    54585947        case GD_BATTLEORDER: 
     
    55326021                                clif_feel_info(sd, skilllv-1, 1); 
    55336022                } 
    5534                 break;   
     6023                break; 
    55356024 
    55366025        case SG_HATE: 
     
    56126101                        static const int per[5][2]={{20,50},{50,60},{25,75},{60,64},{34,67}}; 
    56136102                        int rnd = rand()%100; 
    5614                         i = (skilllv-1)%5;  
     6103                        i = (skilllv-1)%5; 
    56156104                        if(rnd<per[i][0]) //Self 
    56166105                                bl = src; 
     
    56796168                mobskill_event(dstmd, src, tick, MSC_SKILLUSED|(skillid<<16)); 
    56806169        } 
    5681          
     6170 
    56826171        if (sd && !(flag&1) && sd->state.arrow_atk) //Consume arrow on last invocation to this skill. 
    56836172                battle_consume_ammo(sd, skillid, skilllv); 
     
    57826271                        if(inf2 & (INF2_PARTY_ONLY|INF2_GUILD_ONLY) && src != target) 
    57836272                        { 
    5784                                 inf |=   
     6273                                inf |= 
    57856274                                        (inf2&INF2_PARTY_ONLY?BCT_PARTY:0)| 
    57866275                                        (inf2&INF2_GUILD_ONLY?BCT_GUILD:0); 
     
    58246313                if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv,1)) 
    58256314                        break; 
    5826                          
     6315 
    58276316                if(hd && !skill_check_condition_hom(hd,ud->skillid, ud->skilllv,1))     //[orn] 
    58286317                        break; 
     
    58336322                if (ud->walktimer != -1 && ud->skillid != TK_RUN) 
    58346323                        unit_stop_walking(src,1); 
    5835                  
     6324 
    58366325                ud->canact_tick = tick + skill_delayfix(src, ud->skillid, ud->skilllv); 
    5837          
     6326 
    58386327                if (skill_get_state(ud->skillid) != ST_MOVE_ENABLE) 
    58396328                        unit_set_walkdelay(src, tick, battle_config.default_walk_delay+skill_get_walkdelay(ud->skillid, ud->skilllv), 1); 
    5840                  
     6329 
    58416330                if(battle_config.skill_log && battle_config.skill_log&src->type) 
    58426331                        ShowInfo("Type %d, ID %d skill castend id [id =%d, lv=%d, target ID %d]\n", 
     
    58936382                        if (dy > 0) dy++; 
    58946383                        else if(dy < 0) dy--; 
    5895                          
     6384 
    58966385                        if (unit_movepos(src, src->x+dx, src->y+dy, 1, 1)) 
    58976386                        {       //Display movement + animation. 
     
    59146403 
    59156404/*========================================== 
    5916  *  
     6405 * 
    59176406 *------------------------------------------*/ 
    59186407int skill_castend_pos(int tid, unsigned int tick, int id, intptr data) 
     
    59356424                return 0; 
    59366425        } 
    5937          
     6426 
    59386427        if( ud->skilltimer != tid ) 
    59396428        { 
     
    59546443                        skill_get_unit_flag(ud->skillid)&UF_NOREITERATION && 
    59556444                        skill_check_unit_range(src,ud->skillx,ud->skilly,ud->skillid,ud->skilllv) 
    5956                   )  
     6445                  ) 
    59576446                { 
    59586447                        if (sd) clif_skill_fail(sd,ud->skillid,0,0); 
     
    59936482                        } 
    59946483                } 
    5995                          
     6484 
    59966485                if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv, 1)) 
    59976486                        break; 
     
    60796568                skill_area_temp[1] = src->id; 
    60806569                i = skill_get_splash(skillid, skilllv); 
    6081                 map_foreachinarea(skill_area_sub,  
     6570                map_foreachinarea(skill_area_sub, 
    60826571                        src->m, x-i, y-i, x+i, y+i, BL_PC, 
    60836572                        src, skillid, skilllv, tick, flag|BCT_ALL|1, 
     
    61066595                        src->m, x-i, y-i, x+i,y+i,BL_SKILL); 
    61076596                break; 
     6597<<<<<<< .mine 
     6598======= 
    61086599                //Custom Jobs (blackmagic) 
    61096600        case WL_HELLFIRE: // Warlock Hellfire [Brain] 
     
    61146605                // Continue reading because skill_unitsetting is bellow 
    61156606                //Custom Job End 
     6607>>>>>>> .r18 
     6608 
     6609        case WL_HELLFIRE: // Warlock Hellfire [Brain] 
     6610        //clif_specialeffect(sd, 92, AREA); //Meteor Effect on caster, cant set on ground 
     6611        clif_skill_poseffect(src,WZ_METEOR,skilllv,x,y,tick); //Meteor Effect 
     6612        clif_skill_nodamage(src, src, skillid, 0, 1); //Lalala, just to show the skill yell correctly 
     6613        clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster 
     6614        // Continue reading because skill_unitsetting is bellow 
     6615 
    61166616 
    61176617        case MG_SAFETYWALL: 
    6118         case MG_FIREWALL:        
     6618        case MG_FIREWALL: 
    61196619        case MG_THUNDERSTORM: 
    61206620        case AL_PNEUMA: 
     
    62736773                                md->deletetimer = add_timer (gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, md->bl.id, 0); 
    62746774                                mob_spawn (md); //Now it is ready for spawning. 
     6775<<<<<<< .mine 
     6776                // @showsummon command implementation [Brainstorm] 
     6777                if(sd->state.showsummon){ 
     6778                        char output[256]; 
     6779                        sprintf(output, 
     6780                        "[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d", 
     6781                        md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk); 
     6782                        clif_disp_onlyself(sd,output,strlen(output)); 
     6783                        sprintf(output, 
     6784                        "[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d", 
     6785                        md->name,md->status.rhw.atk,md->status.rhw.atk2,md->status.def,md->status.def2,md->status.mdef,md->status.mdef2,md->status.hit,md->status.flee); 
     6786                        clif_disp_onlyself(sd,output,strlen(output)); 
     6787                } 
     6788 
     6789======= 
    62756790                                //Custom Jobs (blackmagic) 
    62766791                                // @showsummon command implementation [Brainstorm] 
     
    62876802                                } 
    62886803                                //Custom Job End 
    6289                         } 
    6290                 } 
    6291                 break; 
    6292  
     6804>>>>>>> .r18 
     6805                        } 
     6806                } 
     6807                break; 
     6808 
     6809<<<<<<< .mine 
     6810        case AD_FAMILIAR: // Adept Summon Familiar [Brain] 
     6811        if( sd ) 
     6812        { 
     6813                int id; 
     6814                int mob_class; 
     6815                struct mob_data* md; 
     6816                mob_class = pc_readglobalreg(sd, "ADEPT_FAMILIAR"); 
     6817                if( mob_class == 0 ) 
     6818                { 
     6819                mob_class = mob_get_random_id(4, 0x1, 0); 
     6820                pc_setglobalreg(sd, "ADEPT_FAMILIAR", mob_class); 
     6821                } 
     6822                id = mob_once_spawn(sd,src->m,src->x,src->y,"--en--",mob_class,1,""); 
     6823                md = (struct mob_data *)map_id2bl(id); 
     6824                if( md != NULL ) 
     6825                { 
     6826                md->master_id = sd->bl.id; 
     6827                md->special_state.ai = 1; 
     6828                md->status.mode = md->status.mode|MD_AGGRESSIVE; 
     6829                status_calc_mob(md,0); //Recalc their stats based on passive bonus 
     6830                md->status.hp = md->status.max_hp; //Must be here or the code wont update it 
     6831                // @showsummon command implementation [Brainstorm] 
     6832                if(sd->state.showsummon){ 
     6833                        char output[256]; 
     6834                        sprintf(output, 
     6835                        "[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d", 
     6836                        md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk); 
     6837                        clif_disp_onlyself(sd,output,strlen(output)); 
     6838                        sprintf(output, 
     6839                        "[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d", 
     6840                        md->name,md->status.rhw.atk,md->status.rhw.atk2,md->status.def,md->status.def2,md->status.mdef,md->status.mdef2,md->status.hit,md->status.flee); 
     6841                        clif_disp_onlyself(sd,output,strlen(output)); 
     6842                } 
     6843                md->deletetimer = add_timer(gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, id, 0); 
     6844                } 
     6845        } 
     6846        break; 
     6847        case NC_SKELETON: // Raise Skeleton [Brain] 
     6848        case NC_ARCHER: // Raise Archer Skeleton 
     6849        case NC_ZOMBIE: // Raise Zombie 
     6850        case NC_MUMMY: // Raise Mummy 
     6851        case NC_GHOST: // Raise Ghost 
     6852        case NC_SHADOW: // Raise Shadow 
     6853        case NC_WRAITH: // Raise Wraith 
     6854        if( sd ) 
     6855        { 
     6856                static const int mob_skeleton[5]={ 3201, 3202, 3203, 3204, 3205 }; // Skeleton, Orc Skeleton, Soldier Skeleton, Pirate Skeleton, Skeleton General 
     6857                static const int mob_archer[5]={ 3206, 3207, 3208, 3209, 3210 }; // Archer Skeleton, Firelock Soldier 
     6858                static const int mob_zombie[5]={ 3211, 3212, 3213, 3214, 3215 }; // Zombie, Ghoul, Zombie Master 
     6859                static const int mob_mummy[5]={ 3216, 3217, 3218, 3219, 3220 }; // Mummy, Ancient Mummy 
     6860                static const int mob_ghost[5]={ 3221, 3222, 3223, 3224, 3225 }; // Whisper, Nightmare, Nightmare Terror 
     6861                static const int mob_shadow[5]={ 3226, 3227, 3228, 3229, 3230 }; // Injustice, Raydric, Dullahan 
     6862                static const int mob_wraith[5]={ 3231, 3232, 3233, 3234, 3235 }; // Wraith, Wraith Dead 
     6863                int id; 
     6864                int mob_class; 
     6865                struct mob_data *md; 
     6866======= 
    62936867                //Custom Jobs (blackmagic)       
    62946868        case AD_FAMILIAR: // Adept Summon Familiar [Brain] 
     
    63496923                        int mob_class; 
    63506924                        struct mob_data *md; 
    6351  
     6925>>>>>>> .r18 
     6926 
     6927<<<<<<< .mine 
     6928                switch( skillid ) 
     6929                { 
     6930                case NC_SKELETON: mob_class = mob_skeleton[skilllv-1]; break; 
     6931                case NC_ARCHER:   mob_class = mob_archer[skilllv-1]; break; 
     6932                case NC_ZOMBIE:   mob_class = mob_zombie[skilllv-1]; break; 
     6933                case NC_MUMMY:  mob_class = mob_mummy[skilllv-1]; break; 
     6934                case NC_GHOST:  mob_class = mob_ghost[skilllv-1]; break; 
     6935                case NC_SHADOW:   mob_class = mob_shadow[skilllv-1]; break; 
     6936                case NC_WRAITH:   mob_class = mob_wraith[skilllv-1]; break; 
     6937                default: 
     6938                        mob_class = 1002; // poring 
     6939                        ShowDebug("skill_castend_pos2: undefined skill #%d used to raise mobs, defaulting to poring\n"); 
     6940                        break; 
     6941                } 
     6942                id = mob_once_spawn(sd,src->m,src->x,src->y,"--ja--",mob_class,1,""); 
     6943                if((md=(struct mob_data *)map_id2bl(id))) 
     6944                { 
     6945                md->master_id=sd->bl.id; 
     6946                md->special_state.ai=1; 
     6947                md->status.mode=md->db->status.mode|MD_AGGRESSIVE; 
     6948                status_calc_mob(md,0); //Recalc their stats based on passive bonus 
     6949                md->status.hp = md->status.max_hp; //Must be here or the code wont update it 
     6950                // @showsummon command implementation [Brainstorm] 
     6951                if(sd->state.showsummon){ 
     6952                        char output[256]; 
     6953                        sprintf(output, 
     6954                        "[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d", 
     6955                        md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk); 
     6956                        clif_disp_onlyself(sd,output,strlen(output)); 
     6957                        sprintf(output, 
     6958                        "[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d", 
     6959                        md->name,md->status.rhw.atk,md->status.rhw.atk2,md->status.def,md->status.def2,md->status.mdef,md->status.mdef2,md->status.hit,md->status.flee); 
     6960                        clif_disp_onlyself(sd,output,strlen(output)); 
     6961                } 
     6962                md->deletetimer = add_timer(gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, id, 0); 
     6963                } 
     6964        } 
     6965        break; 
     6966======= 
    63526967                        switch( skillid ) 
    63536968                        { 
     
    63917006 
    63927007                //Custom Job End 
     7008>>>>>>> .r18 
     7009 
     7010 
    63937011 
    63947012        // Slim Pitcher [Celest] 
     
    64167034                        potion_hp = potion_hp * (100+i)/100; 
    64177035                        potion_sp = potion_sp * (100+i)/100; 
    6418                          
     7036 
    64197037                        if(potion_hp > 0 || potion_sp > 0) { 
    64207038                                i = skill_get_splash(skillid, skilllv); 
     
    64387056                        potion_hp = potion_hp * (100+i)/100; 
    64397057                        potion_sp = potion_sp * (100+i)/100; 
    6440                          
     7058 
    64417059                        if(potion_hp > 0 || potion_sp > 0) { 
    64427060                                i = skill_get_splash(skillid, skilllv); 
     
    64607078                } 
    64617079                break; 
    6462          
     7080 
    64637081        case HW_GRAVITATION: 
    64647082                if ((sg = skill_unitsetting(src,skillid,skilllv,x,y,0))) 
     
    65427160        if (sd && !(flag&1) && sd->state.arrow_atk) //Consume arrow if a ground skill was not invoked. [Skotlex] 
    65437161                battle_consume_ammo(sd, skillid, skilllv); 
    6544                  
     7162 
    65457163        return 0; 
    65467164} 
    65477165 
    65487166/*========================================== 
    6549  *  
     7167 * 
    65507168 *------------------------------------------*/ 
    65517169int skill_castend_map (struct map_session_data *sd, short skill_num, const char *map) 
     
    65557173//Simplify skill_failed code. 
    65567174#define skill_failed(sd) { sd->menuskill_id = sd->menuskill_val = 0; } 
    6557         if(skill_num != sd->menuskill_id)  
     7175        if(skill_num != sd->menuskill_id) 
    65587176                return 0; 
    65597177 
     
    65907208                return 0; 
    65917209        } 
    6592          
     7210 
    65937211        switch(skill_num) 
    65947212        { 
     
    66317249                                } 
    66327250                        } 
    6633                  
     7251 
    66347252                        //When it's an item-used warp-portal, the skill-lv used is lost.. assume max level. 
    66357253                        lv = sd->skillitem==skill_num?skill_get_max(skill_num):pc_checkskill(sd,skill_num); 
    66367254                        wx = sd->menuskill_val>>16; 
    66377255                        wy = sd->menuskill_val&0xffff; 
    6638                          
     7256 
    66397257                        if( lv <= 0 ) return 0; 
    66407258                        if( lv > 4 ) lv = 4; // crash prevention 
     
    66557273                                return 0; 
    66567274                        } 
    6657                          
     7275 
    66587276                        // This makes Warp Portal fail if the cell is not empty 
    66597277                        //if(skill_check_unit_range2(&sd->bl,wx,wy,skill_num,lv) > 0) { 
     
    67147332                return 0; //Nothing to remove, this unit is not overlapped. 
    67157333 
    6716         if (unit->val1 != unit->group->skill_id)  
     7334        if (unit->val1 != unit->group->skill_id) 
    67177335        {       //Reset state 
    67187336                unit->val1 = unit->group->skill_id; 
    67197337                unit->val2 &= ~UF_ENSEMBLE; 
    67207338        } 
    6721          
     7339 
    67227340        return map_foreachincell(skill_dance_overlap_sub, unit->bl.m,unit->bl.x,unit->bl.y,BL_SKILL, unit,flag); 
    67237341} 
     
    68037421        switch(skillid) 
    68047422        { 
     7423<<<<<<< .mine 
     7424        case WL_HELLFIRE: // Warlock Hellfire [Brain] 
     7425        if(map_flag_vs(src->m)) target = BCT_ALL; 
     7426        break; 
     7427======= 
    68057428//Custom Jobs (blackmagic) 
    68067429        case WL_HELLFIRE: // Warlock Hellfire [Brain] 
     
    68087431                break; 
    68097432//Custom Job End 
     7433>>>>>>> .r18 
    68107434        case MG_SAFETYWALL: 
    68117435                val2=skilllv+1; 
     
    68837507                        {       //Use the previous limit (minus the elapsed time) [Skotlex] 
    68847508                                limit = old_sg->limit - DIFF_TICK(gettick(), old_sg->tick); 
    6885                                 if (limit < 0)  //This can happen...  
     7509                                if (limit < 0)  //This can happen... 
    68867510                                        limit = skill_get_time(skillid,skilllv); 
    68877511                        } 
     
    71307754                return NULL; 
    71317755        } 
    7132          
     7756 
    71337757 
    71347758        if (skillid == NJ_TATAMIGAESHI) //Store number of tiles. 
     
    71397763 
    71407764/*========================================== 
    7141  *  
     7765 * 
    71427766 *------------------------------------------*/ 
    71437767static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned int tick) 
     
    71527776        nullpo_retr(0, src); 
    71537777        nullpo_retr(0, bl); 
    7154          
     7778 
    71557779        if(bl->prev==NULL || !src->alive || status_isdead(bl)) 
    71567780                return 0; 
     
    71627786                        && !skill_get_inf2(sg->skill_id) == INF2_TRAP) //Traps work on top of land protector, magical or not [Brain] 
    71637787                return 0; //AoE skills are ineffective. [Skotlex] 
    7164          
     7788 
    71657789        sc = status_get_sc(bl); 
    7166          
     7790 
    71677791        if (sc && sc->option&OPTION_HIDE && sg->skill_id != WZ_HEAVENDRIVE) 
    71687792                return 0; //Hidden characters are immune to AoE skills except Heaven's Drive. [Skotlex] 
    7169          
     7793 
    71707794        type = status_skill2sc(sg->skill_id); 
    71717795        sce = (sc && type != -1)?sc->data[type]:NULL; 
     
    72637887                } 
    72647888                break; 
    7265          
     7889 
    72667890        case UNT_FOGWALL: 
    72677891                if (!sce) 
     
    72847908//                      src->limit = DIFF_TICK(tick+700,sg->tick); 
    72857909//              break; 
    7286          
     7910 
    72877911        case UNT_MOONLIT: 
    72887912                //Knockback out of area if affected char isn't in Moonlit effect 
     
    72987922 
    72997923/*========================================== 
    7300  *  
     7924 * 
    73017925 *------------------------------------------*/ 
    73027926int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, unsigned int tick) 
     
    73257949        tsc = status_get_sc(bl); 
    73267950        tstatus = status_get_status_data(bl); 
    7327         if (sg->state.magic_power)  //For magic power.  
     7951        if (sg->state.magic_power)  //For magic power. 
    73287952        { 
    73297953                sc = status_get_sc(ss); 
     
    73547978                        return 0; 
    73557979                ts->tick = tick+sg->interval; 
    7356                  
     7980 
    73577981                if ((skillid==CR_GRANDCROSS || skillid==NPC_GRANDDARKNESS) && !battle_config.gx_allhit) 
    73587982                        ts->tick += sg->interval*(map_count_oncell(bl->m,bl->x,bl->y,BL_CHAR)-1); 
     
    74048028                                } 
    74058029                                if (status_isimmune(bl)) 
     8030<<<<<<< .mine 
     8031                                        heal = 0;       /* 黄金蟲カヌドヒヌル量 */ 
     8032                // Profane Soul reduces the healed recieved by 3% per skilllv [Brain] 
     8033                if(tsd) { 
     8034                        heal = heal * (100 - pc_checkskill(tsd,AD_PROFANE)*3)/100; 
     8035                        //Wont heal even if he got elemental armors [Brain] 
     8036                        if(pc_checkskill(tsd,NC_PHYLACTERY)) heal = sg->skill_lv; 
     8037                } 
     8038 
     8039======= 
    74068040                                        heal = 0;       /* 黁Eß蟲カヌドヒヌル量E*/ 
    74078041                                //Custom Jobs (blackmagic) 
     
    74138047                                } 
    74148048                                //Custom Job End 
     8049>>>>>>> .r18 
    74158050                                clif_skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1); 
    74168051                                status_heal(bl, heal, 0, 0); 
     
    74478082 
    74488083                case UNT_ATTACK_SKILLS: 
    7449                         switch (sg->skill_id)  
     8084                        switch (sg->skill_id) 
    74508085                        { 
    74518086                                case SG_SUN_WARM: //SG skills [Komurka] 
     
    74858120                                break; 
    74868121                                default: 
    7487                                         skill_attack(skill_get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);                      
     8122                                        skill_attack(skill_get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); 
    74888123                        } 
    74898124                        break; 
     
    75098144                                if (status_change_start(bl,type,10000,sg->skill_lv,sg->group_id,0,0,sec, 8)) 
    75108145                                { 
    7511                                         struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL;  
     8146                                        struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL; 
    75128147                                        if (td) sec = DIFF_TICK(td->tick, tick); 
    75138148                                        map_moveblock(bl, src->bl.x, src->bl.y, tick); 
     
    75808215                        clif_skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1); 
    75818216                        status_heal(bl, heal, 0, 0); 
    7582                         break;   
     8217                        break; 
    75838218                } 
    75848219 
     
    77558390                        status_change_end(bl,type,-1); 
    77568391                break; 
    7757                  
     8392 
    77588393        case UNT_SPIDERWEB: 
    77598394                { 
     
    77838418        if (sc && !sc->count) 
    77848419                sc = NULL; 
    7785          
     8420 
    77868421        type = status_skill2sc(skill_id); 
    77878422        sce = (sc && type != -1)?sc->data[type]:NULL; 
     
    78008435                case BD_ETERNALCHAOS: 
    78018436                case BD_DRUMBATTLEFIELD: 
    7802                 case BD_RINGNIBELUNGEN:  
     8437                case BD_RINGNIBELUNGEN: 
    78038438                case BD_ROKISWEIL: 
    78048439                case BD_INTOABYSS: 
     
    78098444                                //FIXME: This code is not perfect, it doesn't checks for the real ensemble's owner, 
    78108445                                //it only checks if you are doing the same ensemble. So if there's two chars doing an ensemble 
    7811                                 //which overlaps, by stepping outside of the other parther's ensemble will cause you to cancel  
     8446                                //which overlaps, by stepping outside of the other parther's ensemble will cause you to cancel 
    78128447                                //your own. Let's pray that scenario is pretty unlikely and noone will complain too much about it. 
    78138448                                skill_stop_dancing(bl); 
     
    78248459                                status_change_end(bl, type, -1); 
    78258460                        break; 
    7826                          
     8461 
    78278462                case BA_POEMBRAGI: 
    78288463                case BA_WHISTLE: 
     
    78318466                case DC_HUMMING: 
    78328467                case DC_DONTFORGETME: 
    7833                 case DC_FORTUNEKISS:     
     8468                case DC_FORTUNEKISS: 
    78348469                case DC_SERVICEFORYOU: 
    78358470                        if (sce) 
     
    78818516 
    78828517        nullpo_retr(0, group); 
    7883          
     8518 
    78848519        dissonance = skill_dance_switch(unit, 0); 
    78858520 
     
    79668601        if ((skillid != PR_BENEDICTIO && *c >=1) || *c >=2) 
    79678602                return 0; //Partner found for ensembles, or the two companions for Benedictio. [Skotlex] 
    7968          
     8603 
    79698604        if (bl == src) 
    79708605                return 0; 
     
    79758610        if (tsd->sc.data[SC_SILENCE] || tsd->sc.opt1) 
    79768611                return 0; 
    7977          
     8612 
    79788613        switch(skillid) 
    79798614        { 
     
    80608695 
    80618696/*========================================== 
    8062  *  
     8697 * 
    80638698 *------------------------------------------*/ 
    80648699static int skill_check_condition_mob_master_sub (struct block_list *bl, va_list ap) 
     
    80838718 
    80848719/*========================================== 
    8085  * Determines if a given skill should be made to consume ammo  
     8720 * Determines if a given skill should be made to consume ammo 
    80868721 * when used by the player. [Skotlex] 
    80878722 *------------------------------------------*/ 
     
    81228757                sd->skillitem = sd->skillitemlv = 0; 
    81238758                //Need to do arrow state check. 
    8124                 sd->state.arrow_atk = skill_get_ammotype(skill)?1:0;  
     8759                sd->state.arrow_atk = skill_get_ammotype(skill)?1:0; 
    81258760                //Need to do Spiritball check. 
    81268761                sd->spiritball_old = sd->spiritball; 
     
    81328767        if (!sc->count) 
    81338768                sc = NULL; 
    8134          
     8769 
    81358770        if(pc_is90overweight(sd)) { 
    81368771                clif_skill_fail(sd,skill,9,0); 
     
    81568791        if (sd->menuskill_id == AM_PHARMACY && 
    81578792                (skill == AM_PHARMACY || skill == AC_MAKINGARROW || skill == BS_REPAIRWEAPON || 
    8158                 skill == AM_TWILIGHT1 || skill == AM_TWILIGHT2  || skill == AM_TWILIGHT3  
     8793                skill == AM_TWILIGHT1 || skill == AM_TWILIGHT2  || skill == AM_TWILIGHT3 
    81598794        )) { 
    81608795                sd->skillitem = sd->skillitemlv = 0; 
     
    83148949                } 
    83158950                break; 
    8316         case MO_FINGEROFFENSIVE:                                //持EŒŸ 
     8951        case MO_FINGEROFFENSIVE:                                //指匟 
    83178952        case GS_FLING: 
    83188953                if (sd->spiritball > 0 && sd->spiritball < spiritball) { 
     
    83809015                } 
    83819016                break; 
    8382                  
     9017 
    83839018        case TK_READYCOUNTER: 
    83849019        case TK_READYDOWN: 
     
    84089043                                status_change_end(&sd->bl, SC_COMBO, -1); 
    84099044                                sd->skillid_old = sd->skilllv_old = 0; 
    8410                                 return 0; //Can't repeat previous combo skill.                           
     9045                                return 0; //Can't repeat previous combo skill. 
    84119046                        } 
    84129047                        break; 
    8413                 } else  
     9048                } else 
    84149049                if(sc->data[SC_COMBO]->val1 == skill) 
    84159050                        break; //Combo ready. 
     
    84709105                } 
    84719106                break; 
     9107<<<<<<< .mine 
     9108        case AD_FAMILIAR: //Adept Familiar [Flavio] 
     9109        { 
     9110                short familiar[1] ={ pc_readglobalreg(sd, "ADEPT_FAMILIAR") }; 
     9111                int maxcount = skill_get_maxcount(skill,lv); 
     9112                int count = 0; 
     9113                count = mob_countslave_class(&sd->bl, 1, familiar ); 
     9114                if( count >= maxcount ) 
     9115                { 
     9116                clif_skill_fail(sd,skill,0,0); 
     9117                return 0; 
     9118                } 
     9119        } 
     9120        break; 
     9121        case NC_SKELETON: // Raise Skeleton [Brain] 
     9122        case NC_ARCHER: // Raise Archer Skeleton 
     9123        case NC_ZOMBIE: // Raise Zombie 
     9124        case NC_MUMMY: // Raise Mummy 
     9125        case NC_GHOST: // Raise Ghost 
     9126        case NC_SHADOW: // Raise Shadow 
     9127        case NC_WRAITH: // Raise Wraith 
     9128        {// corrigido o limite de spawns [Flavio] 
     9129                short summon1[5]={ 3201, 3202, 3203, 3204, 3205 }; // Skeleton, Orc Skeleton, Soldier Skeleton, Pirate Skeleton, Skeleton General 
     9130                short summon2[5]={ 3206, 3207, 3208, 3209, 3210 }; // Archer Skeleton, Firelock Soldier 
     9131                short summon3[5]={ 3211, 3212, 3213, 3214, 3215 }; // Zombie, Ghoul, Zombie Master 
     9132                short summon4[5]={ 3216, 3217, 3218, 3219, 3220 }; // Mummy, Ancient Mummy 
     9133                short summon5[5]={ 3221, 3222, 3223, 3224, 3225 }; // Whisper, Nightmare, Nightmare Terror 
     9134                short summon6[5]={ 3226, 3227, 3228, 3229, 3230 }; // Injustice, Raydric, Dullahan 
     9135                short summon7[5]={ 3231, 3232, 3233, 3234, 3235 }; // Wraith, Wraith Dead 
     9136                int maxcount = skill_get_maxcount(skill,lv); 
     9137                int count = 0; 
     9138                switch( skill ) 
     9139                { 
     9140                case NC_SKELETON: count = mob_countslave_class(&sd->bl, 5, summon1); break; 
     9141                case NC_ARCHER: count = mob_countslave_class(&sd->bl, 5, summon2); break; 
     9142                case NC_ZOMBIE: count = mob_countslave_class(&sd->bl, 5, summon3); break; 
     9143                case NC_MUMMY: count = mob_countslave_class(&sd->bl, 5, summon4); break; 
     9144                case NC_GHOST: count = mob_countslave_class(&sd->bl, 5, summon5); break; 
     9145                case NC_SHADOW: count = mob_countslave_class(&sd->bl, 5, summon6); break; 
     9146                case NC_WRAITH: count = mob_countslave_class(&sd->bl, 5, summon7); break; 
     9147                } 
     9148                if( count >= maxcount ) 
     9149                { 
     9150                clif_skill_fail(sd,skill,0,0); 
     9151                return 0; 
     9152                } 
     9153        } 
     9154        break; 
     9155 
     9156======= 
    84729157                //Custom Jobs (blackmagic)       
    84739158        case AD_FAMILIAR: //Adept Familiar [Flavio] 
     
    85199204                break; 
    85209205                //Custom Job End 
     9206>>>>>>> .r18 
    85219207        case WZ_FIREPILLAR: // celest 
    85229208                if (lv <= 5)    // no gems required at level 1-5 
     
    85279213                if(!(sc && sc->data[SC_SMA])) 
    85289214                        return 0; 
    8529                 break;   
     9215                break; 
    85309216 
    85319217        case HT_POWER: 
     
    85799265                                        clif_skill_fail(sd,skill,0,0); 
    85809266                                        return 0; 
    8581                                 }        
     9267                                } 
    85829268                        } 
    85839269                } 
     
    86319317                //Only invoke on skill begin cast (instant cast skill). [Kevin] 
    86329318                if(sp>0 && !type) 
    8633                 {  
     9319                { 
    86349320                        if (status->sp < (unsigned int)sp) 
    86359321                                clif_skill_fail(sd,skill,1,0); 
     
    86579343                } 
    86589344                break; 
    8659          
     9345 
    86609346        case NJ_ISSEN: 
    86619347                if (status->hp < 2) { 
     
    86699355                } 
    86709356                break; 
    8671          
     9357 
    86729358        case NJ_ZENYNAGE: 
    86739359                if(sd->status.zeny < zeny) { 
     
    86999385 
    87009386        if(!(type&2)){ 
    8701                 if( hp>0 && status->hp <= (unsigned int)hp) {                           /* HPチェチE‚¯ */ 
    8702                         clif_skill_fail(sd,skill,2,0);          /* HP䞍足Ešå€±æ•—通知 */ 
     9387                if( hp>0 && status->hp <= (unsigned int)hp) {                           /* HPチェック */ 
     9388                        clif_skill_fail(sd,skill,2,0);          /* HP䞍足倱敗通知 */ 
    87039389                        return 0; 
    87049390                } 
    8705                 if( sp>0 && status->sp < (unsigned int)sp) {                            /* SPチェチE‚¯ */ 
    8706                         clif_skill_fail(sd,skill,1,0);          /* SP䞍足Ešå€±æ•—通知 */ 
     9391                if( sp>0 && status->sp < (unsigned int)sp) {                            /* SPチェック */ 
     9392                        clif_skill_fail(sd,skill,1,0);          /* SP䞍足倱敗通知 */ 
    87079393                        return 0; 
    87089394                } 
     
    87119397                        return 0; 
    87129398                } 
    8713          
     9399 
    87149400                if(weapon && !pc_check_weapontype(sd,weapon)) { 
    87159401                        clif_skill_fail(sd,skill,6,0); 
     
    88079493                if (sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == skill) 
    88089494                        sd->ud.canmove_tick = gettick(); //When using a combo, cancel the can't move delay to enable the skill. [Skotlex] 
    8809                          
     9495 
    88109496                if (!unit_can_move(&sd->bl)) { 
    88119497                        clif_skill_fail(sd,skill,0,0); 
     
    88989584int skill_castfix (struct block_list *bl, int skill_id, int skill_lv) 
    88999585{ 
    8900         int time = skill_get_cast(skill_id, skill_lv);   
     9586        int time = skill_get_cast(skill_id, skill_lv); 
    89019587        struct map_session_data *sd; 
    89029588 
    89039589        nullpo_retr(0, bl); 
    89049590        sd = BL_CAST(BL_PC, bl); 
    8905          
     9591 
    89069592        // calculate base cast time (reduced by dex) 
    89079593        if (!(skill_get_castnodex(skill_id, skill_lv)&1)) { 
     
    89519637                        status_change_end(bl, SC_SUFFRAGIUM, -1); 
    89529638                } 
     9639<<<<<<< .mine 
     9640        if (sc->data[SC_DECREPIFY]) // Necro Decrepify [Brain] 
     9641                if(sc->data[SC_DECREPIFY]->val2>=3) 
     9642                time += time * 25/100; //+25% cast time 
     9643        if (sc->data[SC_CURSETONGUES]) { //Warlock Curse of Tongues [Brain] 
     9644                time += time * sc->data[SC_CURSETONGUES]->val2 / 100; 
     9645                status_change_end(bl, SC_CURSETONGUES, -1); 
     9646        } 
     9647 
     9648======= 
    89539649                //Custom Jobs (blackmagic) 
    89549650                 
     
    89629658                 
    89639659                //Custom Job End 
     9660>>>>>>> .r18 
    89649661                if (sc->data[SC_MEMORIZE]) { 
    89659662                        time>>=1; 
     
    89809677        int delaynodex = skill_get_delaynodex(skill_id, skill_lv); 
    89819678        int time = skill_get_delay(skill_id, skill_lv); 
    8982          
     9679 
    89839680        nullpo_retr(0, bl); 
    89849681 
     
    89879684 
    89889685        if (bl->type&battle_config.no_skill_delay) 
    8989                 return battle_config.min_skill_delay_limit;  
     9686                return battle_config.min_skill_delay_limit; 
    89909687 
    89919688        if (time < 0) 
     
    90049701        default: 
    90059702                if (battle_config.delay_dependon_dex && !(delaynodex&1)) 
    9006                 {       // if skill delay is allowed to be reduced by dex  
     9703                {       // if skill delay is allowed to be reduced by dex 
    90079704                        int scale = battle_config.castrate_dex_scale - status_get_dex(bl); 
    90089705                        if (scale > 0) 
     
    90129709                } 
    90139710                if (battle_config.delay_dependon_agi && !(delaynodex&1)) 
    9014                 {       // if skill delay is allowed to be reduced by agi  
     9711                {       // if skill delay is allowed to be reduced by agi 
    90159712                        int scale = battle_config.castrate_dex_scale - status_get_agi(bl); 
    90169713                        if (scale > 0) 
     
    90569753 
    90579754/*========================================= 
    9058  *  
     9755 * 
    90599756 *-----------------------------------------*/ 
    90609757void skill_brandishspear_first (struct square *tc, int dir, int x, int y) 
     
    958010277        return count; 
    958110278} 
    9582          
     10279 
    958310280/*========================================== 
    958410281 * Returns the first element field found [Skotlex] 
     
    973410431 
    973510432/*========================================== 
    9736  *  
     10433 * 
    973710434 *------------------------------------------*/ 
    973810435int skill_chastle_mob_changetarget(struct block_list *bl,va_list ap) 
     
    976710464        unit = (struct skill_unit *)src; 
    976810465        tick = va_arg(ap,int); 
    9769          
     10466 
    977010467        nullpo_retr(0, sg = unit->group); 
    977110468        nullpo_retr(0, ss = map_id2bl(sg->src_id)); 
     
    977710474                case UNT_SHOCKWAVE: 
    977810475                case UNT_SANDMAN: 
    9779                 case UNT_FLASHER:         
     10476                case UNT_FLASHER: 
    978010477                        skill_additional_effect(ss,bl,sg->skill_id,sg->skill_lv,BF_MISC,tick); 
    978110478                        break; 
     
    982310520                if (type != scs[i] && sc->data[scs[i]]) 
    982410521                        status_change_end(bl, scs[i], -1); 
    9825                  
     10522 
    982610523        return 0; 
    982710524} 
     
    984110538                        wall = false; 
    984210539        } 
    9843                  
     10540 
    984410541        if( sce ) 
    984510542        { 
     
    988410581        if(!sc->count || !(sce=sc->data[SC_DANCING])) 
    988510582                return; 
    9886          
     10583 
    988710584        group = (struct skill_unit_group *)sce->val2; 
    988810585        sce->val2 = 0; 
    9889          
     10586 
    989010587        if (sce->val4) 
    989110588        { 
     
    1002110718        nullpo_retr(NULL, src); 
    1002210719        nullpo_retr(NULL, ud); 
    10023          
     10720 
    1002410721        // find a free spot to store the new unit group 
    1002510722        ARR_FIND( 0, MAX_SKILLUNITGROUP, i, ud->skillunit[i] == NULL ); 
     
    1008110778 
    1008210779        if (!src) src=map_id2bl(group->src_id); 
    10083         ud = unit_bl2ud(src);    
     10780        ud = unit_bl2ud(src); 
    1008410781        if(!src || !ud) { 
    1008510782                ShowError("skill_delunitgroup: Group's source not found! (src_id: %d skill_id: %d)\n", group->src_id, group->skill_id); 
    10086                 return 0;        
     10783                return 0; 
    1008710784        } 
    1008810785        if (skill_get_unit_flag(group->skill_id)&(UF_DANCE|UF_SONG|UF_ENSEMBLE)) 
     
    1018010877        if (group->interval==-1) 
    1018110878                return NULL; 
    10182          
     10879 
    1018310880        ud = unit_bl2ud(bl); 
    1018410881        if (!ud) return NULL; 
     
    1042211119        int skill_id; 
    1042311120        int i; 
    10424          
     11121 
    1042511122        nullpo_retr(0, group); 
    10426          
     11123 
    1042711124        if( !unit->alive || target->prev == NULL ) 
    1042811125                return 0; 
     
    1050311200                //cells do not get deleted within them. [Skotlex] 
    1050411201                if( dissonance ) skill_dance_switch(unit, 1); 
    10505                          
     11202 
    1050611203                if( flag&4 ) 
    1050711204                        skill_unit_onleft(skill_id,target,tick); 
     
    1053011227                memset(skill_unit_temp, 0, sizeof(skill_unit_temp)); 
    1053111228        } 
    10532                  
     11229 
    1053311230        map_foreachincell(skill_unit_move_sub,bl->m,bl->x,bl->y,BL_SKILL,bl,tick,flag); 
    1053411231 
     
    1070811405        if (qty < 1) 
    1070911406                qty = 1; 
    10710          
     11407 
    1071111408        if (!skill_id) //A skill can be specified for some override cases. 
    1071211409                skill_id = skill_produce_db[idx].req_skill; 
    10713          
     11410 
    1071411411        slot[0]=slot1; 
    1071511412        slot[1]=slot2; 
     
    1085911556        if(make_per < 1) make_per = 1; 
    1086011557 
    10861          
     11558 
    1086211559        if(rand()%10000 < make_per || qty > 1){ //Success, or crafting multiple items. 
    1086311560                struct item tmp_item; 
     
    1093011627                                                skill_id != AM_TWILIGHT2 && 
    1093111628                                                skill_id != AM_TWILIGHT3) 
    10932                                                 continue;                                                
     11629                                                continue; 
    1093311630                                        //Add fame as needed. 
    1093411631                                        switch(++sd->potion_success_counter) { 
     
    1098311680                } 
    1098411681        } 
    10985         //Failure        
     11682        //Failure 
    1098611683//      if(log_config.produce) 
    1098711684//              log_produce(sd,nameid,slot1,slot2,slot3,0); 
     
    1106911766                return 0; 
    1107011767        if (sd) sd->blockskill[data] = 0; 
    11071          
     11768 
    1107211769        return 1; 
    1107311770} 
     
    1109611793                return 0; 
    1109711794        if (hd) hd->blockskill[data] = 0; 
    11098          
     11795 
    1109911796        return 1; 
    1110011797} 
     
    1110311800{ 
    1110411801        nullpo_retr (-1, hd); 
    11105          
     11802 
    1110611803        skillid = skill_get_index(skillid); 
    1110711804        if (skillid == 0) 
     
    1116311860                        if ((val[j]-val[j-step]) != diff) 
    1116411861                                break; 
    11165          
     11862 
    1116611863                if (j>=step) //No match, try next step. 
    1116711864                        continue; 
    11168                  
     11865 
    1116911866                for(; i < MAX_SKILL_LEVEL; i++) 
    1117011867                {       //Apply linear increase 
     
    1136312060                                memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy)); 
    1136412061                        } else { 
    11365                                 int dx[] = { 1, 1 ,0, 0,-1};  
    11366                                 int dy[] = { 1, 0, 0,-1,-1};  
     12062                                int dx[] = { 1, 1 ,0, 0,-1}; 
     12063                                int dy[] = { 1, 0, 0,-1,-1}; 
    1136712064                                memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx)); 
    1136812065                                memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy)); 
     
    1139412091                                memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy)); 
    1139512092                        } else { 
    11396                                 int dx[] = { 2, 1 ,0,-1,-2};  
    11397                                 int dy[] = { 2, 1, 0,-1,-2};  
     12093                                int dx[] = { 2, 1 ,0,-1,-2}; 
     12094                                int dy[] = { 2, 1, 0,-1,-2}; 
    1139812095                                memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx)); 
    1139912096                                memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy)); 
     
    1142412121 * skill_nocast_db.txt 
    1142512122 * skill_unit_db.txt 
    11426  * produce_db.txt  
     12123 * produce_db.txt 
    1142712124 * create_arrow_db.txt 
    1142812125 * abra_db.txt 
     
    1149312190        skill_split_atoi(split[5],skill_db[i].sp_rate); 
    1149412191        skill_split_atoi(split[6],skill_db[i].zeny); 
    11495          
     12192 
    1149612193        //FIXME: document this 
    1149712194        p = split[7]; 
     
    1151112208                p++; 
    1151212209        } 
    11513          
     12210 
    1151412211        //FIXME: document this 
    1151512212        p = split[8]; 
     
    1154512242        else if( strcmpi(split[10],"water")==0 ) skill_db[i].state = ST_WATER; 
    1154612243        else skill_db[i].state = ST_NONE; 
    11547          
     12244 
    1154812245        skill_split_atoi(split[11],skill_db[i].spiritball); 
    1154912246        for( j = 0; j < 10; j++ ) { 
     
    1156112258        if( !i ) // invalid skill id 
    1156212259                return false; 
    11563          
     12260 
    1156412261        skill_split_atoi(split[1],skill_db[i].cast); 
    1156512262        skill_split_atoi(split[2],skill_db[i].delay); 
     
    1157712274        if( !i ) // invalid skill id 
    1157812275                return false; 
    11579          
     12276 
    1158012277        skill_split_atoi(split[1],skill_db[i].castnodex); 
    1158112278        if( split[2] ) // optional column 
     
    1160312300        if( !i ) // invalid skill id 
    1160412301                return false; 
    11605          
     12302 
    1160612303        skill_db[i].unit_id[0] = strtol(split[1],NULL,16); 
    1160712304        skill_db[i].unit_id[1] = strtol(split[2],NULL,16); 
     
    1164912346        skill_produce_db[current].req_skill = atoi(split[2]); 
    1165012347        skill_produce_db[current].req_skill_lv = atoi(split[3]); 
    11651          
     12348 
    1165212349        for( x = 4, y = 0; x+1 < columns && split[x] && split[x+1] && y < MAX_PRODUCE_RESOURCE; x += 2, y++ ) 
    1165312350        { 
     
    1166812365 
    1166912366        skill_arrow_db[current].nameid = i; 
    11670          
     12367 
    1167112368        for( x = 1, y = 0; x+1 < columns && split[x] && split[x+1] && y < MAX_ARROW_RESOURCE; x += 2, y++ ) 
    1167212369        { 
     
    1170712404        memset(skill_arrow_db,0,sizeof(skill_arrow_db)); 
    1170812405        memset(skill_abra_db,0,sizeof(skill_abra_db)); 
    11709          
     12406 
    1171012407        // load skill databases 
    1171112408        safestrncpy(skill_db[0].name, "UNKNOWN_SKILL", sizeof(skill_db[0].name)); 
     
    1173512432        skilldb_name2id = strdb_alloc(DB_OPT_DUP_KEY, 0); 
    1173612433        skill_readdb(); 
    11737          
     12434 
    1173812435        skill_unit_ers = ers_new(sizeof(struct skill_unit_group)); 
    1173912436        skill_timer_ers  = ers_new(sizeof(struct skill_timerskill)); 
    11740          
     12437 
    1174112438        add_timer_func_list(skill_unit_timer,"skill_unit_timer"); 
    1174212439        add_timer_func_list(skill_castend_id,"skill_castend_id"); 
     
    1174412441        add_timer_func_list(skill_timerskill,"skill_timerskill"); 
    1174512442        add_timer_func_list(skill_blockpc_end, "skill_blockpc_end"); 
    11746          
     12443 
    1174712444        add_timer_interval(gettick()+SKILLUNITTIMER_INTERVAL,skill_unit_timer,0,0,SKILLUNITTIMER_INTERVAL); 
    1174812445 
     
    1175712454        return 0; 
    1175812455} 
     12456<<<<<<< .mine 
     12457 
     12458int skill_additem(struct block_list* src, struct block_list *bl, int itemid, int amount)// ITEM GIVER [Brain] 
     12459{ 
     12460        struct map_session_data *sd = NULL, *tsd = NULL; 
     12461 
     12462        nullpo_retr(1, src); 
     12463        nullpo_retr(1, bl); 
     12464 
     12465        if (src->m != bl->m) 
     12466        return 1; 
     12467        if (bl->prev == NULL) 
     12468        return 1; 
     12469        if (src->type == BL_PC) 
     12470        sd = (struct map_session_data *)src; 
     12471        if (bl->type == BL_PC) 
     12472        tsd = (struct map_session_data *)bl; 
     12473        if (status_isdead(bl)) 
     12474        return 1; 
     12475 
     12476        int eflag; 
     12477        struct item item_tmp; 
     12478        struct block_list tbl; 
     12479 
     12480        memset(&item_tmp,0,sizeof(item_tmp)); 
     12481        memset(&tbl,0,sizeof(tbl)); 
     12482 
     12483        item_tmp.nameid = itemid; 
     12484        item_tmp.identify = 1; 
     12485        tbl.id = 0; 
     12486 
     12487        clif_takeitem(&sd->bl,&tbl); 
     12488        eflag = pc_additem(sd,&item_tmp,amount); 
     12489        if(eflag) { 
     12490        clif_additem(sd,0,0,eflag); 
     12491        map_addflooritem(&item_tmp,amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); 
     12492        } 
     12493        return 0; 
     12494} 
     12495======= 
    1175912496//Custom Jobs (blackmagic) 
    1176012497int skill_additem(struct block_list* src, struct block_list *bl, int itemid, int amount)// ITEM GIVER [Brain] 
     
    1179512532        return 0; 
    1179612533} 
    11797 //Custom Job End 
     12534//Custom Job End>>>>>>> .r18