Changeset 19 for src/map

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

Now Compiles with Cygwin GCC

Location:
src/map
Files:
14 modified

Legend:

Unmodified
Added
Removed
  • src/map/atcommand.c

    r5 r19  
    12131213                if (sd->disguise) 
    12141214                        status_set_viewdata(&sd->bl, sd->disguise); 
    1215   else 
    1216             clif_specialeffect(&sd->bl, 587, 1); // [Temperis] 
    1217             clif_specialeffect(&sd->bl, 589, 1); // [Temperis] 
    1218             status_set_viewdata(&sd->bl, sd->status.class_); 
    1219         clif_displaymessage(fd, msg_txt(10)); // Invisible: Off 
     1215                else 
     1216                        status_set_viewdata(&sd->bl, sd->status.class_); 
     1217                clif_displaymessage(fd, msg_txt(10)); // Invisible: Off 
    12201218        } else { 
    1221         clif_specialeffect(&sd->bl, 587, 1); // [Temperis] 
    1222         clif_specialeffect(&sd->bl, 589, 1); // [Temperis] 
    1223         sd->sc.option |= OPTION_INVISIBLE; 
    1224         sd->vd.class_ = INVISIBLE_CLASS; 
    1225         clif_displaymessage(fd, msg_txt(11)); // Invisible: On 
     1219                sd->sc.option |= OPTION_INVISIBLE; 
     1220                sd->vd.class_ = INVISIBLE_CLASS; 
     1221                clif_displaymessage(fd, msg_txt(11)); // Invisible: On 
    12261222        } 
    12271223        clif_changeoption(&sd->bl); 
     
    12671263                        { "supernovice",        23 }, 
    12681264                        { "gunslinger", 24 }, 
    1269                         { "gunner",     24 }, 
    1270                         { "ninja",      25 }, 
    1271                         //Begin custom Job (blackmagic) 
    12721265                        { "adept",      30 },//New job classes [Brainstorm] 
    12731266                        { "necromancer",        31 }, 
    12741267                        { "necro",      31 }, 
    12751268                        { "warlock",    32 }, 
    1276                         //End Custom Job 
     1269                        { "gunner",     24 }, 
     1270                        { "ninja",      25 }, 
    12771271                        { "high novice",        4001 }, 
    12781272                        { "swordsman high",     4002 }, 
     
    43784372        if (map[m_id].flag.guildlock) 
    43794373                strcat(atcmd_output, "GuildLock | "); 
    4380         if (map[m_id].flag.hostile) 
    4381         strcat(atcmd_output, "Hostile | "); 
    43824374        clif_displaymessage(fd, atcmd_output); 
    43834375 
     
    78227814        return 0; 
    78237815} 
    7824 //Begin Custom Jobs (black magic) 
    78257816//@showsummon [Brainstorm] 
    78267817int atcommand_showsummon(const int fd, struct map_session_data* sd, const char* command, const char* message) 
     
    78337824 
    78347825        sd->state.showsummon = 1; 
    7835         clif_displaymessage(fd, "Summon Stats is now shown."); 
    7836         return 0; 
    7837 } 
    7838 //End Custom Jobs 
     7826        clif_displaymessage(fd, "Summon Stats are now shown."); 
     7827        return 0; 
     7828} 
     7829 
     7830 
    78397831/*========================================== 
    78407832 * Barricade Build 
     
    83048296} 
    83058297 
    8306 /*========================================== 
    8307 * @alliance by SketchyPhoenix 
    8308 *------------------------------------------*/ 
    8309 int atcommand_god(const int fd, struct map_session_data* sd, const char* command, const char* message) 
    8310 { 
    8311 nullpo_retr(-1, sd); 
    8312  
    8313 if(sd->state.demon) { 
    8314 clif_displaymessage(fd, "You're tainted, you cannot change your ways."); 
    8315 return 0; 
    8316 } 
    8317  
    8318 sd->state.god = !sd->state.god; 
    8319  
    8320 if(sd->state.god) 
    8321 clif_displaymessage(fd, "You have joined the holy union."); 
    8322 else { 
    8323 clif_displaymessage(fd, "You have become tainted."); 
    8324 map_foreachinrange(atcommand_stopattack,&sd->bl, AREA_SIZE, BL_CHAR, sd->bl.id); 
    8325 } 
    8326 return 0; 
    8327 } 
    8328  
    8329 /*========================================== 
    8330 * @horde by SketchyPhoenix 
    8331 *------------------------------------------*/ 
    8332 int atcommand_demon(const int fd, struct map_session_data* sd, const char* command, const char* message) 
    8333 { 
    8334 nullpo_retr(-1, sd); 
    8335  
    8336 if(sd->state.god) { 
    8337 clif_displaymessage(fd, "You are of the light, darkness cannot consume you."); 
    8338 return 0; 
    8339 } 
    8340 sd->state.demon = !sd->state.demon; 
    8341  
    8342 if(sd->state.demon) 
    8343 clif_displaymessage(fd, "Your sould is consumed by the darkness, you've gained demonic power."); 
    8344 else { 
    8345 clif_displaymessage(fd, "You have repented, the darkness has left your soul."); 
    8346 map_foreachinrange(atcommand_stopattack,&sd->bl, AREA_SIZE, BL_CHAR, sd->bl.id); 
    8347 } 
    8348 return 0; 
    8349 } 
    83508298/*========================================== 
    83518299 * atcommand_info[] structure definition 
     
    86438591        { "barricade",         60,     atcommand_barricade }, 
    86448592        { "killbarricade",     60,     atcommand_barricade_destroy }, 
    8645         //Bwgin Custom Jobs (blackmagic) 
    86468593        //Vanaheim Commands 
    86478594        { "showsummon",  0, atcommand_showsummon}, //Brainstorm 
    8648         //End Custom Jobs 
    8649         { "god",                                60,             atcommand_god }, 
    8650         { "demon",                              60,             atcommand_demon }, 
    86518595}; 
    86528596 
  • src/map/battle.c

    r5 r19  
    7373                return 1; 
    7474        } 
    75         return 0;        
     75        return 0; 
    7676} 
    7777 
     
    123123                return 1; 
    124124        } 
    125         return 0;        
     125        return 0; 
    126126} 
    127127 
     
    138138} 
    139139 
    140 // ƒ_E?[ƒW‚Ì’x‰„ 
     140// ƒ_ƒ??[ƒW‚Ì’x‰„ 
    141141struct delay_damage { 
    142142        struct block_list *src; 
     
    205205                amotion = 1000; //Aegis places a damage-delay cap of 1 sec to non player attacks. [Skotlex] 
    206206        add_timer(tick+amotion, battle_delay_damage_sub, src->id, (int)dat); 
    207          
     207 
    208208        return 0; 
    209209} 
     
    211211int battle_attr_ratio(int atk_elem,int def_type, int def_lv) 
    212212{ 
    213          
     213 
    214214        if (atk_elem < 0 || atk_elem >= ELE_MAX) 
    215215                return 100; 
     
    222222 
    223223/*========================================== 
    224  * Does attribute fix modifiers.  
     224 * Does attribute fix modifiers. 
    225225 * Added passing of the chars so that the status changes can affect it. [Skotlex] 
    226226 * Note: Passing src/target == NULL is perfectly valid, it skips SC_ checks. 
     
    230230        struct status_change *sc=NULL, *tsc=NULL; 
    231231        int ratio; 
    232          
     232 
    233233        if (src) sc = status_get_sc(src); 
    234234        if (target) tsc = status_get_sc(target); 
    235          
     235 
    236236        if (atk_elem < 0 || atk_elem >= ELE_MAX) 
    237237                atk_elem = rand()%ELE_MAX; 
     
    265265 
    266266/*========================================== 
    267  * ƒ_E?[ƒW?Å?IŒvŽZ 
     267 * ƒ_ƒ??[ƒW?Å?IŒvŽZ 
    268268 *------------------------------------------*/ 
    269269int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,int div_,int skill_num,int skill_lv,int flag) 
     
    277277        if (!damage) 
    278278                return 0; 
    279          
     279 
    280280        if( mob_ksprotected(src, bl) ) 
    281281                return 0; 
     
    295295                if(!damage) return 0; 
    296296        } 
    297          
     297 
    298298        if (skill_num == PA_PRESSURE) 
    299299                return damage; //This skill bypass everything else. 
     
    344344                        return 0; 
    345345                } 
    346                  
     346 
    347347                if(sc->data[SC_DODGE] && !sc->opt1 && 
    348348                        (flag&BF_LONG || sc->data[SC_SPURT]) 
     
    373373                } 
    374374 
    375                 //Begin Custom Jobs (blackmagic) 
    376                          
    377375        //Display red flashing aura effect of Adept Blood Lust [Brain] 
    378376        if(sc->data[SC_LUST] && damage > 0){ 
     
    398396                return 0; 
    399397        } 
    400 //End Custom Jobs 
     398 
    401399 
    402400                if (((sce=sc->data[SC_UTSUSEMI]) || sc->data[SC_BUNSINJYUTSU]) 
    403                 &&  
     401                && 
    404402                        flag&BF_WEAPON && !(skill_get_nk(skill_num)&NK_NO_CARDFIX_ATK)) 
    405403                { 
     
    503501        } 
    504502        //SC effects from caster side. Currently none. 
    505 /*       
     503/* 
    506504        sc = status_get_sc(src); 
    507505        if (sc && sc->count) { 
    508506        } 
    509 */       
     507*/ 
    510508        if (battle_config.pk_mode && sd && bl->type == BL_PC && damage) 
    511509        { 
     
    555553        if (!damage) //No reductions to make. 
    556554                return 0; 
    557          
     555 
    558556        class_ = status_get_class(bl); 
    559557 
    560558        if (bl->type == BL_MOB) 
    561559                md=(struct mob_data *)bl; 
    562          
     560 
    563561        if(md && md->guardian_data) { 
    564562                if(class_ == MOBID_EMPERIUM && flag&BF_SKILL) 
     
    630628 
    631629/*========================================== 
    632  * ?C—ûƒ_E?[ƒW 
     630 * ?C—ûƒ_ƒ??[ƒW 
    633631 *------------------------------------------*/ 
    634632int battle_addmastery(struct map_session_data *sd,struct block_list *target,int dmg,int type) 
     
    651649                        damage += sd->status.str; 
    652650        } 
    653         //Begin Custom Jobs (blackmagic)         
     651 
    654652        //Warlock Touch of Corruption (Mage-Monster Killer passive skill) [Brainstorm] 
    655653        if((skill = pc_checkskill(sd,WL_CORRUPTION)) > 0 && target->type==BL_MOB ) 
    656654        damage += (skill * (status->int_/10)); 
    657         //end custom job 
    658655 
    659656        if(type == 0) 
     
    740737        {       //Mobs/Pets 
    741738                if(flag&4) 
    742                 {                  
     739                { 
    743740                        atkmin = status->matk_min; 
    744741                        atkmax = status->matk_max; 
     
    756753                {       //Normal attacks 
    757754                        atkmin = status->dex; 
    758                          
     755 
    759756                        if (sd->equip_index[type] >= 0 && sd->inventory_data[sd->equip_index[type]]) 
    760757                                atkmin = atkmin*(80 + sd->inventory_data[sd->equip_index[type]]->wlv*20)/100; 
     
    762759                        if (atkmin > atkmax) 
    763760                                atkmin = atkmax; 
    764                          
     761 
    765762                        if(flag&2 && !(flag&16)) 
    766763                        {       //Bows 
     
    771768                } 
    772769        } 
    773          
     770 
    774771        if (sc && sc->data[SC_MAXIMIZEPOWER]) 
    775772                atkmin = atkmax; 
    776          
     773 
    777774        //Weapon Damage calculation 
    778775        if (!(flag&1)) 
    779776                damage = (atkmax>atkmin? rand()%(atkmax-atkmin):0)+atkmin; 
    780         else  
     777        else 
    781778                damage = atkmax; 
    782          
     779 
    783780        if (sd) 
    784781        { 
     
    793790                                sd->right_weapon.atkmods[t_size])/100; 
    794791        } 
    795          
     792 
    796793        //Finally, add baseatk 
    797794        if(flag&4) 
     
    799796        else 
    800797                damage += status->batk; 
    801          
     798 
    802799        //rodatazone says that Overrefine bonuses are part of baseatk 
    803800        //Here we also apply the weapon_atk_rate bonus so it is correctly applied on left/right hands. 
     
    826823        if (!battle_config.arrow_decrement) 
    827824                return; 
    828          
     825 
    829826        if (skill) 
    830827        { 
     
    894891                unsigned idef2 : 1;     //Ignore defense (left weapon) 
    895892                unsigned pdef : 2;      //Pierces defense (Investigate/Ice Pick) 
    896                 unsigned pdef2 : 2;     //1: Use def+def2/100, 2: Use def+def2/50        
     893                unsigned pdef2 : 2;     //1: Use def+def2/100, 2: Use def+def2/50 
    897894                unsigned infdef : 1;    //Infinite defense (plants) 
    898895                unsigned arrow : 1;     //Attack is arrow-based 
     
    900897                unsigned lh : 1;                //Attack considers left hand (wd.damage2) 
    901898                unsigned weapon : 1; //It's a weapon attack (consider VVS, and all that) 
    902         }       flag;    
     899        }       flag; 
    903900 
    904901        memset(&wd,0,sizeof(wd)); 
     
    947944        ) 
    948945                flag.arrow = 1; 
    949          
     946 
    950947        if(skill_num){ 
    951948                wd.flag |= battle_range_type(src, target, skill_num, skill_lv); 
     
    978975                                wd.type = 0x08; 
    979976                                break; 
    980                                  
     977 
    981978                        case GS_GROUNDDRIFT: 
    982979                        case KN_SPEARSTAB: 
     
    997994        } else //Range for normal attacks. 
    998995                wd.flag |= flag.arrow?BF_LONG:BF_SHORT; 
    999          
     996 
    1000997        if (!skill_num && tstatus->flee2 && rand()%1000 < tstatus->flee2) 
    1001998        {       //Check for Lucky Dodge 
     
    10491046                //Therefore, we use the old value 3 on cases when an sd gets attacked by a mob 
    10501047                cri -= tstatus->luk*(!sd&&tsd?3:2); 
    1051                  
     1048 
    10521049                if(tsc) 
    10531050                { 
     
    11171114                if(battle_config.agi_penalty_type && 
    11181115                        battle_config.agi_penalty_target&target->type) 
    1119                 {        
     1116                { 
    11201117                        unsigned char attacker_count; //256 max targets should be a sane max 
    11211118                        attacker_count = unit_counttargeted(target,battle_config.agi_penalty_count_lv); 
     
    11751172                        hitrate += hitrate * ( 2 * skill ) / 100; 
    11761173 
    1177                 hitrate = cap_value(hitrate, battle_config.min_hitrate, battle_config.max_hitrate);  
     1174                hitrate = cap_value(hitrate, battle_config.min_hitrate, battle_config.max_hitrate); 
    11781175 
    11791176                if(rand()%100 >= hitrate) 
     
    13261323                                ) 
    13271324                                skillratio += sd->random_attack_increase_add; 
    1328                  
     1325 
    13291326                        ATK_RATE(skillratio); 
    13301327                } else {        //Skills 
    13311328                        switch( skill_num ) 
    13321329                        { 
    1333                         //Begin Custom Job (blackmagic) 
    13341330                                case NC_DEATHHAND: // Necro Death Hand [Brain] 
    1335                                 skillratio += -25+25*skill_lv; 
    1336                                 break; 
    1337                         //End Black Magic Custom Jobs 
     1331                                        skillratio += -25+25*skill_lv; 
     1332                                        break; 
    13381333                                case SM_BASH: 
    13391334                                        skillratio += 30*skill_lv; 
    13401335                                        break; 
    13411336                                case SM_MAGNUM: 
    1342                                         skillratio += 20*skill_lv;  
     1337                                        skillratio += 20*skill_lv; 
    13431338                                        break; 
    13441339                                case MC_MAMMONITE: 
     
    15971592                                        int k = (wflag-1)/3; //+100% every 3 cells of distance 
    15981593                                        if( k > 2 ) k = 2; // ...but hard-limited to 300%. 
    1599                                         skillratio += 100 * k;  
     1594                                        skillratio += 100 * k; 
    16001595                                        } 
    16011596                                        break; 
     
    16121607                                        skillratio += 100 *(skill_lv-1); 
    16131608                                        break; 
    1614                                         //Begin Custom Jobs (blackmagic) 
    1615                                         //Mercenary Skills [Brainstorm] 
    1616                                 case MS_BASH: 
    1617                                         skillratio += 30*skill_lv; 
    1618                                         break; 
    1619                                 case MER_CRASH: 
    1620                                         skillratio += 10*skill_lv; 
    1621                                         break; 
    1622                                         //end custom jobs 
     1609                /*Mercenary Skills [Brainstorm] 
     1610                case MS_BASH: 
     1611                        skillratio += 30*skill_lv; 
     1612                        break; 
     1613                case MER_CRASH: 
     1614                        skillratio += 10*skill_lv; 
     1615                        break;*/ 
    16231616                        } 
    16241617 
     
    16821675                                break; 
    16831676                } 
    1684                  
     1677 
    16851678                if(sd) 
    16861679                { 
     
    17541747                                if(def2 < 1) def2 = 1; 
    17551748                        } 
    1756                         //Vitality reduction from rodatazone: http://rodatazone.simgaming.net/mechanics/substats.php#def         
     1749                        //Vitality reduction from rodatazone: http://rodatazone.simgaming.net/mechanics/substats.php#def 
    17571750                        if (tsd)        //Sd vit-eq 
    17581751                        {       //[VIT*0.5] + rnd([VIT*0.3], max([VIT*0.3],[VIT^2/150]-1)) 
    17591752                                vit_def = def2*(def2-15)/150; 
    17601753                                vit_def = def2/2 + (vit_def>0?rand()%vit_def:0); 
    1761                                  
     1754 
    17621755                                if((sstatus->race==RC_UNDEAD || sstatus->race==RC_DEMON) && 
    17631756                                        src->type == BL_MOB && (skill=pc_checkskill(tsd,AL_DP)) > 0) 
     
    17681761                                vit_def = def2 + (vit_def>0?rand()%vit_def:0); 
    17691762                        } 
    1770                          
     1763 
    17711764                        if (battle_config.weapon_defense_type) { 
    17721765                                vit_def += def1*battle_config.weapon_defense_type; 
     
    17911784                if (sc && skill_num != LK_SPIRALPIERCE) 
    17921785                {       //SC skill damages 
    1793                         if(sc->data[SC_AURABLADE])  
     1786                        if(sc->data[SC_AURABLADE]) 
    17941787                                ATK_ADD(20*sc->data[SC_AURABLADE]->val1); 
    17951788                } 
     
    18281821                        else 
    18291822                        ARR_FIND(0, 3, i, t_class == sd->hate_mob[i]); 
    1830                         if (i < 3 && (skill=pc_checkskill(sd,sg_info[i].anger_id)))  
     1823                        if (i < 3 && (skill=pc_checkskill(sd,sg_info[i].anger_id))) 
    18311824                        { 
    18321825                                skillratio = sd->status.base_level + sstatus->dex + sstatus->luk; 
     
    18431836        } //Here ends flag.hit section, the rest of the function applies to both hitting and missing attacks 
    18441837        else if(wd.div_ < 0) //Since the attack missed... 
    1845                 wd.div_ *= -1;  
     1838                wd.div_ *= -1; 
    18461839 
    18471840        if(skill_num == CR_GRANDCROSS || skill_num == NPC_GRANDDARKNESS) 
    18481841                return wd; //Enough, rest is not needed. 
    18491842 
    1850         if(sd && (skill=pc_checkskill(sd,BS_WEAPONRESEARCH)) > 0)  
     1843        if(sd && (skill=pc_checkskill(sd,BS_WEAPONRESEARCH)) > 0) 
    18511844                ATK_ADD(skill*2); 
    18521845 
     
    18901883                { 
    18911884                        int cardfix = 1000, cardfix_ = 1000; 
    1892                         int t_race2 = status_get_race2(target);  
     1885                        int t_race2 = status_get_race2(target); 
    18931886                        if(sd->state.arrow_atk) 
    18941887                        { 
     
    19501943                                ATK_RATE2(cardfix/10, cardfix_/10);     //What happens if you use right-to-left and there's no right weapon, only left? 
    19511944                } 
    1952                  
     1945 
    19531946                if (skill_num == CR_SHIELDBOOMERANG || skill_num == PA_SHIELDCHAIN) { //Refine bonus applies after cards and elements. 
    19541947                        short index= sd->equip_index[EQI_HAND_L]; 
     
    20041997                if (flag.lh && (flag.hit || wd.damage2>0)) 
    20051998                        wd.damage2 = 1; 
    2006                 if (!(battle_config.skill_min_damage&1))  
     1999                if (!(battle_config.skill_min_damage&1)) 
    20072000                        //Do not return if you are supposed to deal greater damage to plants than 1. [Skotlex] 
    20082001                        return wd; 
     
    20342027        if (sd) 
    20352028        { 
    2036                 if (!flag.rh && flag.lh)  
     2029                if (!flag.rh && flag.lh) 
    20372030                {       //Move lh damage to the rh 
    20382031                        wd.damage = wd.damage2; 
     
    21252118                                        breakrate[1] += sc->data[SC_MELTDOWN]->val3; 
    21262119                                } 
    2127                         }        
     2120                        } 
    21282121                        if (breakrate[0]) 
    21292122                                skill_break_equip(target, EQP_WEAPON, breakrate[0], BCT_ENEMY); 
     
    21962189        else if (s_ele == -2) //Use status element 
    21972190                s_ele = status_get_attack_sc_element(src,status_get_sc(src)); 
    2198          
     2191 
    21992192        //Set miscellaneous data that needs be filled 
    22002193        if(sd) { 
     
    22062199        ad.flag |= battle_range_type(src, target, skill_num, skill_lv); 
    22072200        flag.infdef=(tstatus->mode&MD_PLANT?1:0); 
    2208                  
     2201 
    22092202        switch(skill_num) 
    22102203        { 
     
    22342227                        case AL_HEAL: 
    22352228                        case PR_BENEDICTIO: 
    2236                                 //Begin Custom Job (blackmagic) 
    22372229                        case AD_DARKHEAL: // Adept Dark Heal 
    2238                                 //end custom job 
    22392230                                ad.damage = skill_calc_heal(src, target, skill_lv)/2; 
    22402231                                break; 
     
    23552346                                                skillratio += 100 +100*skill_lv +100*(skill_lv/2); 
    23562347                                                break; 
    2357                                 //Begin Custom Job (blackmagic) 
    2358                                         case NC_DRAINLIFE: // Necro Drain Life [Brain] 
    2359                                                 skillratio += 25*skill_lv; 
    2360                                                 break; 
    2361                                         case WL_HELLFIRE: // Warlock Hellfire [Brain] 
    2362                                                 skillratio += 25*skill_lv; 
    2363                                                 break; 
    2364                                         case WL_SHADOWBURN: // Warlock Shadow Burn [Brain] 
    2365                                                 skillratio += 20*skill_lv; 
    2366                                                 break; 
    2367                                         case WL_CURSEDOOM: // Warlock Curse of Doom [Brain] 
    2368                                                 skillratio += 400 + 300*skill_lv; //max 20*matk dmg after 60 seconds 
    2369                                                 break; 
    2370                                         case WL_SEARING: // Warlock Searing Pain [Brain] 
    2371                                                 if(status_get_sc(target)->data[SC_SEARING]) 
    2372                                                         skillratio = 10*pc_checkskill(sd,WL_SEARING);//10% * skilllv 
    2373                                                 break; //Else 100% Matk 
    2374                                         case WL_IMMOLATE: // Warlock Immolate [Brain] 
    2375                                                 if(status_get_sc(target)->data[SC_IMMOLATE]) 
    2376                                                         skillratio += 10*pc_checkskill(sd,WL_SEARING);//100% +10 * searing lv 
    2377                                                 else skillratio += -20 + 20*skill_lv;// Else 80% + 20% * skill lv 
    2378                                                 break; 
    2379                                         case WL_CONFLAGRATE: // Warlock Conflagrate [Brain] 
    2380                                                 skillratio += 100 + 60*skill_lv + //damage bonus from other fire skills 
    2381                                                         10*pc_checkskill(sd,WL_SEARING) + 10*pc_checkskill(sd,WL_IMMOLATE); 
    2382                                                 break; 
    2383         //End Custom Job 
    2384                         } 
     2348                        case NC_DRAINLIFE: // Necro Drain Life [Brain] 
     2349                        skillratio += 25*skill_lv; 
     2350                        break; 
     2351                        case WL_HELLFIRE: // Warlock Hellfire [Brain] 
     2352                        skillratio += 25*skill_lv; 
     2353                        break; 
     2354                        case WL_SHADOWBURN: // Warlock Shadow Burn [Brain] 
     2355                        skillratio += 20*skill_lv; 
     2356                        break; 
     2357                        case WL_CURSEDOOM: // Warlock Curse of Doom [Brain] 
     2358                        skillratio += 400 + 300*skill_lv; //max 20*matk dmg after 60 seconds 
     2359                        break; 
     2360                        case WL_SEARING: // Warlock Searing Pain [Brain] 
     2361                        if(status_get_sc(target)->data[SC_SEARING]) 
     2362                                skillratio = 10*pc_checkskill(sd,WL_SEARING);//10% * skilllv 
     2363                        break; //Else 100% Matk 
     2364                        case WL_IMMOLATE: // Warlock Immolate [Brain] 
     2365                        if(status_get_sc(target)->data[SC_IMMOLATE]) 
     2366                                skillratio += 10*pc_checkskill(sd,WL_SEARING);//100% +10 * searing lv 
     2367                        else skillratio += -20 + 20*skill_lv;// Else 80% + 20% * skill lv 
     2368                        break; 
     2369                        case WL_CONFLAGRATE: // Warlock Conflagrate [Brain] 
     2370                        skillratio += 100 + 60*skill_lv + //damage bonus from other fire skills 
     2371                                10*pc_checkskill(sd,WL_SEARING) + 10*pc_checkskill(sd,WL_IMMOLATE); 
     2372                        break; 
     2373                                } 
    23852374 
    23862375                                MATK_RATE(skillratio); 
    2387                          
     2376 
    23882377                                //Constant/misc additions from skills 
    23892378                                if (skill_num == WZ_FIREPILLAR) 
     
    24372426                        } 
    24382427                } 
    2439                  
     2428 
    24402429                if (skill_num == NPC_EARTHQUAKE) 
    24412430                {       //Adds atk2 to the damage, should be influenced by number of hits and skill-ratio, but not mdef reductions. [Skotlex] 
     
    24522441                if (!(nk&NK_NO_ELEFIX)) 
    24532442                        ad.damage=battle_attr_fix(src, target, ad.damage, s_ele, tstatus->def_ele, tstatus->ele_lv); 
    2454         //Begin Custom Job (blackmagic)          
     2443 
     2444 
    24552445        if(skill_num == WL_SHADOWBURN) { // Warlock Shadow Burn [Brain] 
    24562446                // This is where we calculate the secondary damage 
    24572447                if(ad.damage<1) ad.damage=1; 
    24582448                struct Damage md = battle_calc_misc_attack(src,target,skill_num,skill_lv, mflag); 
    2459                 if(md.damage<1) md.damage=1; 
    2460                 ad.damage += md.damage; 
    2461         } 
    2462         //End Custom Job 
     2449                if(md.damage<1) md.damage=1; //Changed MD = WD 
     2450                ad.damage += md.damage; // Same as above 
     2451        } 
     2452 
    24632453                if (sd && !(nk&NK_NO_CARDFIX_ATK)) { 
    24642454                        short t_class = status_get_class(target); 
     
    25152505 
    25162506        damage_div_fix(ad.damage, ad.div_); 
    2517          
     2507 
    25182508        if (flag.infdef && ad.damage) 
    25192509                ad.damage = ad.damage>0?1:-1; 
    2520                  
     2510 
    25212511        ad.damage=battle_calc_damage(src,target,ad.damage,ad.div_,skill_num,skill_lv,ad.flag); 
    25222512        if (map_flag_gvg2(target->m)) 
     
    25262516 
    25272517/*========================================== 
    2528  * ‚»‚Ì‘Œƒ_E?[ƒWŒvŽZ 
     2518 * ‚»‚Ì‘Œƒ_ƒ??[ƒWŒvŽZ 
    25292519 *------------------------------------------*/ 
    25302520struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *target,int skill_num,int skill_lv,int mflag) 
     
    25552545 
    25562546        nk = skill_get_nk(skill_num); 
    2557          
     2547 
    25582548        sd = BL_CAST(BL_PC, src); 
    25592549        tsd = BL_CAST(BL_PC, target); 
    2560          
     2550 
    25612551        if(sd) { 
    25622552                sd->state.arrow_atk = 0; 
     
    25892579                if(mflag > 1) //Autocasted Blitz. 
    25902580                        nk|=NK_SPLASHSPLIT; 
    2591                  
     2581 
    25922582                if (skill_num == SN_FALCONASSAULT) 
    25932583                { 
    25942584                        //Div fix of Blitzbeat 
    25952585                        skill = skill_get_num(HT_BLITZBEAT, 5); 
    2596                         damage_div_fix(md.damage, skill);  
     2586                        damage_div_fix(md.damage, skill); 
    25972587 
    25982588                        //Falcon Assault Modifier 
     
    26602650        case NPC_EVILLAND: 
    26612651                md.damage = (skill_lv>6)?666:skill_lv*100; 
    2662         //Begin Custom Job (blackmagic) 
     2652                //break; 
    26632653        case WL_SHADOWBURN: // Warlock ShadowBurn dark element damage [Brain] 
    2664         s_ele = ELE_DARK; 
    2665         md.damage = ((300 + 20*skill_lv)/100)*((sstatus->int_*(rand()%300+500))/100); //Fixed between min and max matk for now 
    2666         //End Custom Job 
     2654                s_ele = ELE_DARK; 
     2655                md.damage = ((300 + 20*skill_lv)/100)*((sstatus->int_*(rand()%300+500))/100); //Fixed between min and max matk for now 
    26672656                break; 
    26682657        } 
     
    26762665 
    26772666        damage_div_fix(md.damage, md.div_); 
    2678          
     2667 
    26792668        if (!(nk&NK_IGNORE_FLEE)) 
    26802669        { 
     
    26882677                                hitrate=80; //Default hitrate 
    26892678 
    2690                         if(battle_config.agi_penalty_type &&  
     2679                        if(battle_config.agi_penalty_type && 
    26912680                                battle_config.agi_penalty_target&target->type) 
    2692                         {        
     2681                        { 
    26932682                                unsigned char attacker_count; //256 max targets should be a sane max 
    26942683                                attacker_count = unit_counttargeted(target,battle_config.agi_penalty_count_lv); 
     
    27592748} 
    27602749/*========================================== 
    2761  * ƒ_E?[ƒWŒvŽZˆêЇ?E?—p 
     2750 * ƒ_ƒ??[ƒWŒvŽZˆêЇ?ˆ—?—p 
    27622751 *------------------------------------------*/ 
    27632752struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct block_list *target,int skill_num,int skill_lv,int count) 
     
    28252814                if (*damage <= 0) continue; 
    28262815                //First and Third iterations: race, other two boss/nonboss state 
    2827                 if (i == 0 || i == 2)  
     2816                if (i == 0 || i == 2) 
    28282817                        type = race; 
    28292818                else 
    28302819                        type = boss?RC_BOSS:RC_NONBOSS; 
    2831                  
     2820 
    28322821                hp = wd->hp_drain[type].value; 
    28332822                if (wd->hp_drain[type].rate) 
     
    28522841        if (sd->sp_vanish_rate && rand()%1000 < sd->sp_vanish_rate) 
    28532842                status_percent_damage(&sd->bl, tbl, 0, (unsigned char)sd->sp_vanish_per, false); 
    2854         //begin custom job (blackmagic   
    2855         // Adept Blood Pact drains 5% damage per hit [FlavioJS/Brain] 
     2843// Adept Blood Pact drains 5% damage per hit [FlavioJS/Brain] 
    28562844        if( pc_checkskill(sd, AD_BLOODPACT) > 0 ) 
    28572845        thp += battle_calc_drain(rdamage,1000,5); 
     
    28672855                rhp += corrupt_sp;//If SP damage was caused, increase HP damage too 
    28682856        } 
    2869         //end custom job 
    28702857        if (!thp && !tsp) return; 
    28712858 
    28722859        status_heal(&sd->bl, thp, tsp, battle_config.show_hp_sp_drain?3:1); 
    2873          
     2860 
    28742861        if (rhp || rsp) 
    28752862                status_zap(tbl, rhp, rsp); 
     
    28772864 
    28782865/*========================================== 
    2879  * ’Ê?EUŒ‚?E?‚܂Ƃߠ
     2866 * ’Ê?í?UŒ‚?ˆ—?‚܂Ƃߠ
    28802867 *------------------------------------------*/ 
    28812868enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* target, unsigned int tick, int flag) 
     
    29072894        if (tsc && !tsc->count) 
    29082895                tsc = NULL; 
    2909          
     2896 
    29102897        if (sd) 
    29112898        { 
     
    30703057 
    30713058        if (tsc) { 
    3072                 if (tsc->data[SC_POISONREACT] &&  
     3059                if (tsc->data[SC_POISONREACT] && 
    30733060                        (rand()%100 < tsc->data[SC_POISONREACT]->val3 
    30743061                        || sstatus->def_ele == ELE_POISON) && 
     
    30923079} 
    30933080 
    3094 //Begin custom Job (blackmagic) 
    30953081int battle_check_living(int race,int element)// Living creature check [Brain] 
    30963082{ 
     
    31053091        } 
    31063092} 
    3107 //end custom job 
    31083093 
    31093094int battle_check_undead(int race,int element) 
     
    32343219                        break; 
    32353220                //All else not specified is an invalid target. 
    3236                 default:         
     3221                default: 
    32373222                        return 0; 
    32383223        } 
     
    32533238                                strip_enemy = 0; 
    32543239                        } 
    3255                         // Sketchy - begin 
    3256                 if (sd->state.god && t_bl != s_bl && s_bl->type == BL_PC && ((TBL_PC*)s_bl)->state.demon && map[m].flag.hostile) { 
    3257                 state |= BCT_ENEMY; 
    3258                 strip_enemy = 0; 
    3259                 } 
    3260  
    3261                 if (sd->state.demon && t_bl != s_bl && s_bl->type == BL_PC && ((TBL_PC*)s_bl)->state.god && map[m].flag.hostile) { 
    3262                 state |= BCT_ENEMY; 
    3263                 strip_enemy = 0; 
    3264                 } 
    3265                 // Sketchy -end 
    32663240                        break; 
    32673241                } 
     
    33623336                        break; 
    33633337        } 
    3364          
    3365         if ((flag&BCT_ALL) == BCT_ALL) { //All actually stands for all attackable chars  
     3338 
     3339        if ((flag&BCT_ALL) == BCT_ALL) { //All actually stands for all attackable chars 
    33663340                if (target->type&BL_CHAR) 
    33673341                        return 1; 
     
    33713345        if (flag == BCT_NOONE) //Why would someone use this? no clue. 
    33723346                return -1; 
    3373          
     3347 
    33743348        if (t_bl == s_bl) 
    33753349        {       //No need for further testing. 
     
    33793353                return (flag&state)?1:-1; 
    33803354        } 
    3381          
     3355 
    33823356        if (map_flag_vs(m)) { //Check rivalry settings. 
    33833357                if (flag&(BCT_PARTY|BCT_ENEMY)) { 
     
    34293403                } 
    34303404        } 
    3431          
     3405 
    34323406        if (!state) //If not an enemy, nor a guild, nor party, nor yourself, it's neutral. 
    34333407                state = BCT_NEUTRAL; 
     
    37593733        { "require_glory_guild",                &battle_config.require_glory_guild,             0,      0,      1,              }, 
    37603734        { "idle_no_share",                      &battle_config.idle_no_share,                   0,      0,      INT_MAX,        }, 
    3761         { "party_even_share_bonus",             &battle_config.party_even_share_bonus,          0,      0,      INT_MAX,        },  
     3735        { "party_even_share_bonus",             &battle_config.party_even_share_bonus,          0,      0,      INT_MAX,        }, 
    37623736        { "delay_battle_damage",                &battle_config.delay_battle_damage,             1,      0,      1,              }, 
    37633737        { "hide_woe_damage",                    &battle_config.hide_woe_damage,                 0,      0,      1,              }, 
     
    38323806        { "auction_feeperhour",                 &battle_config.auction_feeperhour,              12000,  0,      INT_MAX,        }, 
    38333807        { "auction_maximumprice",               &battle_config.auction_maximumprice,            500000000, 0,   MAX_ZENY,       }, 
    3834         //Begin Custom Job (blackmagic)  
    38353808        //Vanaheim battle settings [Brainstorm] 
    38363809        { "necro_retaliation",            &battle_config.necro_retaliation,                1,     0,      1,              }, 
    3837         { "disp_summon_stats",            &battle_config.disp_summon_stats, 
    3838         //End Custom Job 
     3810        { "disp_summon_stats",            &battle_config.disp_summon_stats,                0,     0,      1,              }, 
     3811 
    38393812        { "gm_viewequip_min_lv",                &battle_config.gm_viewequip_min_lv,             0,      0,      99,             }, 
    38403813}; 
     
    38813854        battle_config.monster_max_aspd = 2000 - battle_config.monster_max_aspd*10; 
    38823855        battle_config.max_aspd = 2000 - battle_config.max_aspd*10; 
    3883         battle_config.max_walk_speed = 100*DEFAULT_WALK_SPEED/battle_config.max_walk_speed;      
     3856        battle_config.max_walk_speed = 100*DEFAULT_WALK_SPEED/battle_config.max_walk_speed; 
    38843857        battle_config.max_cart_weight *= 10; 
    3885          
     3858 
    38863859        if(battle_config.max_def > 100 && !battle_config.weapon_defense_type)    // added by [Skotlex] 
    38873860                battle_config.max_def = 100; 
     
    38893862        if(battle_config.min_hitrate > battle_config.max_hitrate) 
    38903863                battle_config.min_hitrate = battle_config.max_hitrate; 
    3891                  
     3864 
    38923865        if(battle_config.pet_max_atk1 > battle_config.pet_max_atk2)     //Skotlex 
    38933866                battle_config.pet_max_atk1 = battle_config.pet_max_atk2; 
    3894          
     3867 
    38953868        if (battle_config.day_duration && battle_config.day_duration < 60000) // added by [Yor] 
    38963869                battle_config.day_duration = 60000; 
    38973870        if (battle_config.night_duration && battle_config.night_duration < 60000) // added by [Yor] 
    38983871                battle_config.night_duration = 60000; 
    3899          
     3872 
    39003873#ifndef CELL_NOSTACK 
    39013874        if (battle_config.cell_stack_limit != 1) 
  • src/map/battle.h

    r5 r19  
    8888 
    8989int battle_check_undead(int race,int element); 
    90 //Begin Custom Job (blackmagic) 
    9190int battle_check_living(int race,int element);  //Living Creature Check [Brain] 
    92 //End Custom Job (blackmagic) 
    9391int battle_check_target(struct block_list *src, struct block_list *target,int flag); 
    9492bool battle_check_range(struct block_list *src,struct block_list *bl,int range); 
     
    455453        int auction_feeperhour; 
    456454        int auction_maximumprice; 
    457         //Begin custom Job (blackmagic)  
    458455        //Vanaheim battle settings [Brainstorm] 
    459456        int necro_retaliation; //Battle flag to force monsters to attack adept/necro/warlock summons [Brain] 
    460457        int disp_summon_stats; //Battle Flag to show summoned monster stats [Brain] 
    461         //end custom job 
    462458        int gm_viewequip_min_lv; 
    463459} battle_config; 
  • src/map/itemdb.c

    r5 r19  
    242242        if (jobmask & 1<<JOB_NINJA) 
    243243                bclass[0] |= 1<<MAPID_NINJA; 
    244         //Begin custom job (blackmagic) 
     244        //Custom Classes 
    245245        if (jobmask & 1<<26) // Adept [Brain] 
    246246        bclass[0] |= 1<<MAPID_ADEPT; 
     
    249249        if (jobmask & 1<<28) // Warlock [Brain] 
    250250        bclass[2] |= 1<<MAPID_ADEPT; 
    251         //end custom job 
    252251} 
    253252 
  • src/map/map.h

    r5 r19  
    7777        MAPID_XMAS, 
    7878        MAPID_SUMMER, 
    79         //Begin custom Jobs (blackmagic) 
    8079        MAPID_ADEPT = 0x0E,     // Adept [Brain] 
    81         //end 
    8280//2_1 classes 
    8381        MAPID_SUPER_NOVICE = JOBL_2_1|0x0, 
     
    8987        MAPID_ASSASSIN, 
    9088        MAPID_STAR_GLADIATOR, 
    91         //Begin Custom Jobs (blackmagic) 
    9289        MAPID_NECROMANCER = JOBL_2_1|0x0E,      // Necromancer [Brain] 
    93         //end 
    9490//2_2 classes 
    9591        MAPID_CRUSADER = JOBL_2_2|0x1, 
     
    10096        MAPID_ROGUE, 
    10197        MAPID_SOUL_LINKER, 
    102         //begin custom job (blackmagic) 
    10398        MAPID_WARLOCK = JOBL_2_2|0x0E, // Warlock [Flavio] 
    104         //end 
    10599//1-1, advanced 
    106100        MAPID_NOVICE_HIGH = JOBL_UPPER|0x0, 
     
    463457                unsigned partylock :1; 
    464458                unsigned guildlock :1; 
    465                 unsigned hostile : 1; //Sketchy 
    466459        } flag; 
    467460        struct point save; 
  • src/map/mob.c

    r5 r19  
    548548        barricade->amount = 0; 
    549549        barricade->killable = killable; 
    550         barricade->shootable = shootable; 
    551         barricade->walkable = walkable; 
     550         
     551        // A protection just in case setting a walkable - non shootable 
     552        if( (barricade->walkable = walkable) == true ) 
     553                barricade->shootable = true; 
     554        else 
     555                barricade->shootable = shootable; 
    552556         
    553557        for( i = 0; i < count; i++ ) 
     
    570574                } 
    571575 
    572                 if( !barricade->walkable ) map_setcell(m, x1, y1, CELL_WALKABLE, false); 
    573                 map_setcell(m, x1, y1, CELL_SHOOTABLE, barricade->shootable); 
     576                if( !barricade->walkable ) 
     577                { 
     578                        map_setcell(m, x1, y1, CELL_WALKABLE, false); 
     579                        map_setcell(m, x1, y1, CELL_SHOOTABLE, barricade->shootable); 
     580                } 
    574581 
    575582                clif_changemapcell(0, m, x1, y1, map_getcell(barricade->m, x1, y1, CELL_GETTYPE), ALL_SAMEMAP); 
     
    626633                mob_barricade_nextxy(barricade->x, barricade->y, barricade->dir, i, &x1, &y1); 
    627634 
    628                 if( !barricade->walkable ) map_setcell(barricade->m, x1, y1, CELL_WALKABLE, true); 
    629                 map_setcell(barricade->m, x1, y1, CELL_SHOOTABLE, !barricade->shootable); 
     635                if( !barricade->shootable ) 
     636                        map_setcell(barricade->m, x1, y1, CELL_SHOOTABLE, true); 
     637                if( !barricade->walkable ) 
     638                        map_setcell(barricade->m, x1, y1, CELL_WALKABLE, true); 
     639 
    630640                clif_changemapcell(0, barricade->m, x1, y1, map_getcell(barricade->m, x1, y1, CELL_GETTYPE), ALL_SAMEMAP); 
    631641        } 
     
    688698                        mob_barricade_nextxy(barricade->x, barricade->y, barricade->dir, i, &x1, &y1); 
    689699 
    690                         if( !barricade->walkable ) map_setcell(barricade->m, x1, y1, CELL_WALKABLE, true); 
    691                         map_setcell(barricade->m, x1, y1, CELL_SHOOTABLE, !barricade->shootable); 
     700                        if( !barricade->shootable ) 
     701                                map_setcell(barricade->m, x1, y1, CELL_SHOOTABLE, true); 
     702                        if( !barricade->walkable ) 
     703                                map_setcell(barricade->m, x1, y1, CELL_WALKABLE, true); 
     704 
    692705                        clif_changemapcell(0, barricade->m, x1, y1, map_getcell(barricade->m, x1, y1, CELL_GETTYPE), ALL_SAMEMAP); 
    693706                } 
     
    20152028                /*if (md2->master_id && battle_config.retaliate_to_master) 
    20162029                        md->attacked_id = md2->master_id;*/ 
    2017 //UNCOMMENT IF ERROR OCCURS WITH CUSTOM JOBS V 
    2018 //if (md2->master_id && battle_config.retaliate_to_master) 
    2019                 //BEGIN Custom Jobs (blackmagic) 
    2020                         { 
     2030                        if (md2->master_id && battle_config.retaliate_to_master) 
     2031        { 
    20212032                //necro_retaliation config (same as above, but only works for adept/necro/warlock summons) [Brainstorm] 
    20222033                if(!battle_config.necro_retaliation && (md2->class_ >= 3100 && md2->class_ <= 3235)) 
     
    20242035                else md->attacked_id = md2->master_id; //All normal summons 
    20252036        } 
    2026                         //end 
     2037 
    20272038                else 
    20282039                        md->attacked_id = src->id; 
     
    28252836} 
    28262837 
    2827 //Begin Custom Jobs (blackmagic) 
    28282838/// Count slaves with a certain master and class. by FlavioJS [Brain] 
    28292839static int mob_countslave_class_sub(struct block_list* bl, va_list ap) 
     
    28602870} 
    28612871 
    2862 //End 
    28632872 
    28642873/*========================================== 
     
    40234032                "mob_poring.txt", 
    40244033                "mob_boss.txt", 
    4025                 "mob_pouch.txt" 
    4026                 //Begin custom Jobs (blackmagic 
    4027                 "mob_familiar.txt" // familiar By FlavioJS [Brain] 
     4034                "mob_pouch.txt", 
     4035                "mob_familiar.txt" 
    40284036        }; 
    4029         //end 
    40304037 
    40314038        memset(&summon, 0, sizeof(summon)); 
  • src/map/mob.h

    r5 r19  
    270270int mob_countslave(struct block_list *bl); 
    271271int mob_convertslave(struct mob_data *md); 
    272  
    273 //Begin custom Job (blackmagic) 
    274272int mob_countslave_class(struct block_list* bl, int count, short* classes); // By FlavioJS [Brain] 
    275 //end 
     273 
     274 
    276275int mob_is_clone(int class_); 
    277276 
  • src/map/pc.c

    r13 r19  
    1 // Copyright (c) Athena Dev Teams - Licensed under GNU GPL 
     1// Copyright (c) Athena Dev Teams - Licensed under GNU GPL =D 
    22// For more information, see LICENCE in the main folder 
    33 
     
    133133} 
    134134 
    135 void pc_setinvincibletimer(struct map_session_data* sd, int val)  
     135void pc_setinvincibletimer(struct map_session_data* sd, int val) 
    136136{ 
    137137        nullpo_retv(sd); 
     
    258258                case MAPID_TAEKWON: // Taekwon 
    259259                        clif_fame_taekwon(sd,count); 
    260                         break;   
     260                        break; 
    261261        } 
    262262        chrif_updatefamelist(sd); 
     
    267267{ 
    268268        int i; 
    269          
     269 
    270270        switch(job){ 
    271271                case MAPID_BLACKSMITH: // Blacksmith 
     
    330330                sd->status.clothes_color=0; 
    331331 
    332         //Only copy the Cart/Peco/Falcon options, the rest are handled via  
     332        //Only copy the Cart/Peco/Falcon options, the rest are handled via 
    333333        //status change load/saving. [Skotlex] 
    334334        sd->status.option = sd->sc.option&(OPTION_CART|OPTION_FALCON|OPTION_RIDING); 
    335                  
     335 
    336336        if (sd->sc.data[SC_JAILED]) 
    337337        {       //When Jailed, do not move last point. 
     
    403403        if (!itemdb_isequip2(sd->inventory_data[n])) 
    404404                return 0; //Not equippable by players. 
    405          
     405 
    406406        ep = sd->inventory_data[n]->equip; 
    407407        if(sd->inventory_data[n]->look == W_DAGGER      || 
     
    518518        if (itemdb_isspecial(item->card[0])) 
    519519                return 1; 
    520          
     520 
    521521        ARR_FIND( 0, s, i, item->card[i] && (data = itemdb_exists(item->card[i])) != NULL && data->flag.no_equip&flag ); 
    522522        return( i < s ) ? 0 : 1; 
     
    535535                if( i == EQI_HEAD_MID && sd->equip_index[EQI_HEAD_LOW] == index ) continue; 
    536536                if( i == EQI_HEAD_TOP && (sd->equip_index[EQI_HEAD_MID] == index || sd->equip_index[EQI_HEAD_LOW] == index) ) continue; 
    537          
     537 
    538538                if( !sd->inventory_data[index] ) continue; 
    539539 
     
    568568        // Parents need to have their ring equipped 
    569569        if( !pc_isequipped(p1_sd, WEDDING_RING_M) && !pc_isequipped(p1_sd, WEDDING_RING_F) ) 
    570                 return false;  
     570                return false; 
    571571 
    572572        if( !pc_isequipped(p2_sd, WEDDING_RING_M) && !pc_isequipped(p2_sd, WEDDING_RING_F) ) 
     
    603603        int job, joblevel; 
    604604        unsigned int jobexp; 
    605          
     605 
    606606        if( !pc_can_Adopt(p1_sd, p2_sd, b_sd) ) 
    607607                return false; 
     
    632632                pc_skill(p1_sd, WE_CALLBABY, 1, 0); 
    633633                pc_skill(p2_sd, WE_CALLBABY, 1, 0); 
    634                  
     634 
    635635                return true; 
    636636        } 
     
    660660                return 0; 
    661661        if(map_flag_gvg(sd->bl.m) && ((item->flag.no_equip&2) || !pc_isAllowedCardOn(sd,item->slot,n,2))) 
    662                 return 0;  
     662                return 0; 
    663663        if(map[sd->bl.m].flag.restricted) 
    664664        { 
     
    669669 
    670670        if (sd->sc.count) { 
    671                          
     671 
    672672                if(item->equip & EQP_ARMS && item->type == IT_WEAPON && sd->sc.data[SC_STRIPWEAPON]) // Also works with left-hand weapons [DracoRPG] 
    673673                        return 0; 
     
    698698        if (!(1<<(sd->class_&MAPID_BASEMASK)&item->class_base[(sd->class_&JOBL_2_1)?1:((sd->class_&JOBL_2_2)?2:0)])) 
    699699                return 0; 
    700          
     700 
    701701        //Not equipable by upper class. [Skotlex] 
    702702        if(!(1<<((sd->class_&JOBL_UPPER)?1:((sd->class_&JOBL_BABY)?2:0))&item->class_upper)) 
     
    730730                sd->class_ = MAPID_NOVICE; 
    731731        } else 
    732                 sd->class_ = i;  
     732                sd->class_ = i; 
    733733        //Initializations to null/0 unneeded since map_session_data was filled with 0 upon allocation. 
    734734        if(!sd->status.hp) pc_setdead(sd); 
     
    739739        sd->npc_timer_id = -1; 
    740740        sd->pvp_timer = -1; 
    741          
     741 
    742742        sd->canuseitem_tick = tick; 
    743743        sd->cantalk_tick = tick; 
     
    754754        if (battle_config.disp_zeny) 
    755755                sd->state.showzeny = 1; 
     756<<<<<<< .mine 
     757        //Vanaheim settings [Brainstorm] 
     758        if (battle_config.disp_summon_stats) // Battle Flag to Show Summoned Monster Stats [Brain] 
     759        sd->state.showsummon = 1; 
     760 
     761======= 
    756762        //Custom Job (blackmagick)       
    757763        //Vanaheim settings [Brainstorm] 
     
    759765                sd->state.showsummon = 1; 
    760766         
     767>>>>>>> .r18 
    761768        if (!(battle_config.display_skill_fail&2)) 
    762769                sd->state.showdelay = 1; 
    763                  
     770 
    764771        // ƒAƒCƒeƒ€ƒ`ƒFƒbƒN 
    765772        pc_setinventorydata(sd); 
    766773        pc_checkitem(sd); 
    767          
     774 
    768775        status_change_init(&sd->bl); 
    769776        if ((battle_config.atc_gmonly == 0 || pc_isGM(sd)) && (pc_isGM(sd) >= get_atcommand_level(atcommand_hide))) 
     
    820827                                sd->packet_ver, CONVIP(ip)); 
    821828        } 
    822          
     829 
    823830        // Send friends list 
    824831        clif_friendslist_send(sd); 
     
    867874} 
    868875 
    869 //Attempts to set a mob.  
     876//Attempts to set a mob. 
    870877int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl) 
    871878{ 
     
    899906{ 
    900907        int i,j; 
    901          
     908 
    902909        sd->change_level = pc_readglobalreg(sd,"jobchange_level"); 
    903910        sd->die_counter = pc_readglobalreg(sd,"PC_DIE_COUNTER"); 
     
    933940                        if (i < sd->status.skill[sd->cloneskill_id].lv) 
    934941                                sd->status.skill[sd->cloneskill_id].lv = i; 
    935                         sd->status.skill[sd->cloneskill_id].flag = 13;  //cloneskill flag                        
     942                        sd->status.skill[sd->cloneskill_id].flag = 13;  //cloneskill flag 
    936943                } 
    937944        } 
     
    946953        if (sd->status.guild_id) 
    947954                guild_member_joined(sd); 
    948          
     955 
    949956        // pet 
    950957        if (sd->status.pet_id > 0) 
     
    10171024        } 
    10181025        c = pc_class2idx(c); 
    1019         for(i=0;i<MAX_SKILL;i++){  
     1026        for(i=0;i<MAX_SKILL;i++){ 
    10201027                if (sd->status.skill[i].flag != 13) //Don't touch plagiarized skills 
    10211028                        sd->status.skill[i].id=0; //First clear skills. 
    10221029        } 
    10231030 
    1024         for(i=0;i<MAX_SKILL;i++){  
    1025                 if (sd->status.skill[i].flag && sd->status.skill[i].flag != 13){ //Restore original level of skills after deleting earned skills.        
     1031        for(i=0;i<MAX_SKILL;i++){ 
     1032                if (sd->status.skill[i].flag && sd->status.skill[i].flag != 13){ //Restore original level of skills after deleting earned skills. 
    10261033                        sd->status.skill[i].lv=(sd->status.skill[i].flag==1)?0:sd->status.skill[i].flag-2; 
    10271034                        sd->status.skill[i].flag=0; 
     
    11121119                                sd->status.skill[id].flag=1; //So it is not saved, and tagged as a "bonus" skill. 
    11131120                        } else 
    1114                                 sd->status.skill[id].flag=sd->status.skill[id].lv+2;  
     1121                                sd->status.skill[id].flag=sd->status.skill[id].lv+2; 
    11151122                        sd->status.skill[id].lv= skill_tree_get_max(id, sd->status.class_); 
    11161123                } 
     
    11281135        if(battle_config.skillfree) 
    11291136                return; //Function serves no purpose if this is set 
    1130          
     1137 
    11311138        i = pc_calc_skilltree_normalize_job(sd); 
    11321139        c = pc_mapid2jobid(i, sd->status.sex); 
     
    11431150                        if(sd->status.skill[id].id) //Already learned 
    11441151                                continue; 
    1145                          
     1152 
    11461153                        for(j=0;j<5;j++) { 
    11471154                                if((k=skill_tree[c][i].need[j].id)) 
     
    11641171                        if (sd->status.job_level < skill_tree[c][i].joblv) 
    11651172                                continue; 
    1166                          
     1173 
    11671174                        j = skill_get_inf2(id); 
    11681175                        if(!sd->status.skill[id].lv && ( 
     
    12031210        int skill_point; 
    12041211        int c = sd->class_; 
    1205          
     1212 
    12061213        if (!battle_config.skillup_limit) 
    12071214                return c; 
    1208          
     1215 
    12091216        skill_point = pc_calc_skillpoint(sd); 
    12101217        if(pc_checkskill(sd, NV_BASIC) < 9) //Consider Novice Tree when you don't have NV_BASIC maxed. 
     
    16121619                        break; 
    16131620                val += (int)status->max_hp; 
    1614                 //Negative bonuses will underflow, this will be handled in status_calc_pc through casting  
     1621                //Negative bonuses will underflow, this will be handled in status_calc_pc through casting 
    16151622                //If this is called outside of status_calc_pc, you'd better pray they do not underflow and end with UINT_MAX max_hp. 
    16161623                status->max_hp = (unsigned int)val; 
    16171624                break; 
    16181625        case SP_MAXSP: 
    1619                 if(sd->state.lr_flag == 2)  
     1626                if(sd->state.lr_flag == 2) 
    16201627                        break; 
    16211628                val += (int)status->max_sp; 
     
    26752682        if(idx_card < 0 || idx_card >= MAX_INVENTORY || !sd->inventory_data[idx_card]) 
    26762683                return 0; //Invalid card index. 
    2677                          
     2684 
    26782685        if(idx_equip < 0 || idx_equip >= MAX_INVENTORY || !sd->inventory_data[idx_equip]) 
    26792686                return 0; //Invalid item index. 
    2680          
     2687 
    26812688        nameid=sd->status.inventory[idx_equip].nameid; 
    26822689        cardid=sd->status.inventory[idx_card].nameid; 
     
    29032910        if(amount > MAX_AMOUNT) 
    29042911                return 5; 
    2905          
     2912 
    29062913        data = itemdb_search(item_data->nameid); 
    29072914        w = data->weight*amount; 
     
    29983005                return 0; //Can't drop items in nodrop mapflag maps. 
    29993006        } 
    3000          
     3007 
    30013008        if (!pc_candrop(sd,&sd->status.inventory[n])) { 
    30023009                clif_displaymessage (sd->fd, msg_txt(263)); 
    30033010                return 0; 
    30043011        } 
    3005          
     3012 
    30063013        //Logs items, dropped by (P)layers [Lupus] 
    30073014        if(log_config.enable_logs&0x8) 
     
    30113018        if (!map_addflooritem(&sd->status.inventory[n], amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 2)) 
    30123019                return 0; 
    3013          
     3020 
    30143021        pc_delitem(sd, n, amount, 0); 
    30153022        return 1; 
     
    30343041        if (sd->status.party_id) 
    30353042                p = party_search(sd->status.party_id); 
    3036          
     3043 
    30373044        if(fitem->first_get_charid > 0 && fitem->first_get_charid != sd->status.char_id) 
    30383045        { 
     
    31243131        if ((nameid == 605 || nameid == 606) && pc_issit(sd)) 
    31253132                return 0; 
    3126            
     3133 
    31273134        //added item_noequip.txt items check by Maya&[Lupus] 
    31283135        if ( 
     
    31463153        )) 
    31473154                return 0; 
    3148          
     3155 
    31493156        //Not usable by upper class. [Skotlex] 
    31503157        if(!( 
     
    33303337        if (idx < 0 || idx >= MAX_INVENTORY) //Invalid index check [Skotlex] 
    33313338                return 1; 
    3332          
     3339 
    33333340        item_data = &sd->status.inventory[idx]; 
    33343341 
     
    33703377        if (idx < 0 || idx >= MAX_CART) //Invalid index check [Skotlex] 
    33713378                return 1; 
    3372          
     3379 
    33733380        item_data=&sd->status.cart[idx]; 
    33743381 
     
    34223429        if(md->state.steal_flag == UCHAR_MAX || md->sc.opt1) //already stolen from / status change check 
    34233430                return 0; 
    3424          
     3431 
    34253432        sd_status= status_get_status_data(&sd->bl); 
    34263433        md_status= status_get_status_data(bl); 
     
    34393446        rate = (sd_status->dex - md_status->dex)/2 + lv*6 + 4; 
    34403447        rate += sd->add_steal_rate; 
    3441                  
     3448 
    34423449        if( rate < 1 ) 
    34433450                return 0; 
     
    34653472                return 0; 
    34663473        } 
    3467          
     3474 
    34683475        if(battle_config.show_steal_in_same_party) 
    34693476                party_foreachsamemap(pc_show_steal,sd,AREA_SIZE,sd,tmp_item.nameid); 
     
    34743481                log_pick_pc(sd, "P", itemid, 1, NULL); 
    34753482        } 
    3476                  
     3483 
    34773484        //A Rare Steal Global Announce by Lupus 
    34783485        if(md->db->dropitem[i].p<=battle_config.rare_drop_announce) { 
     
    36053612                //Tag player for rewarping after map-loading is done. [Skotlex] 
    36063613                sd->state.rewarp = 1; 
    3607          
     3614 
    36083615        sd->mapindex =  mapindex; 
    36093616        sd->bl.m = m; 
     
    37633770        if(!sd->sc.count) 
    37643771                return 0; 
    3765          
     3772 
    37663773        for (i = 0; i < ARRAYLENGTH(scw_list); i++) 
    37673774        {       // Skills requiring specific weapon types 
     
    37703777                        status_change_end(&sd->bl,scw_list[i],-1); 
    37713778        } 
    3772          
     3779 
    37733780        if(sd->sc.data[SC_SPURT] && sd->status.weapon) 
    37743781                // Spurt requires bare hands (feet, in fact xD) 
    37753782                status_change_end(&sd->bl,SC_SPURT,-1); 
    3776          
     3783 
    37773784        if(sd->status.shield <= 0) { // Skills requiring a shield 
    37783785                for (i = 0; i < ARRAYLENGTH(scs_list); i++) 
     
    38623869                        class_ |= MAPID_THIEF; 
    38633870                        break; 
    3864                          
     3871 
    38653872                case JOB_STAR_GLADIATOR: 
    38663873                case JOB_STAR_GLADIATOR2: 
    38673874                        class_ |= JOBL_2_1; 
    38683875                        class_ |= MAPID_TAEKWON; 
    3869                         break;   
     3876                        break; 
    38703877                case JOB_SOUL_LINKER: 
    38713878                        class_ |= JOBL_2_2; 
     
    38913898                        class_ = MAPID_SUMMER; 
    38923899                        break; 
     3900<<<<<<< .mine 
     3901                        //Possible to be in the wrong spot? 
     3902                case JOB_NECROMANCER: // Necromancer [Brain] 
     3903                        class_ |= JOBL_2_1; 
     3904                        class_ |= MAPID_ADEPT; 
     3905======= 
    38933906                        //Custom Jobs (blackmagic) 
    38943907                        +               case JOB_NECROMANCER: // Necromancer [Brain] 
     
    39003913                case JOB_ADEPT: // Adept [Brain] 
    39013914                        class_ |= MAPID_ADEPT; 
    3902                         break; 
    3903 //Custom Job End 
     3915>>>>>>> .r18 
     3916                        break; 
     3917                case JOB_WARLOCK: // Warlock [Brain] 
     3918                        class_ |= JOBL_2_2; 
     3919                case JOB_ADEPT: // Adept [Brain] 
     3920                        class_ |= MAPID_ADEPT; 
     3921                        break; 
    39043922                default: 
    39053923                        return -1; 
     
    39253943                case MAPID_XMAS:            return JOB_XMAS; 
    39263944                case MAPID_SUMMER:          return JOB_SUMMER; 
    3927                 //Custom Jobs (blackmagic) 
    39283945                case MAPID_ADEPT:                       return JOB_ADEPT; // Adept [Brain] 
    3929                 //Custom Job End 
    3930  
    39313946        //2_1 classes 
    39323947                case MAPID_SUPER_NOVICE:    return JOB_SUPER_NOVICE; 
     
    39383953                case MAPID_ASSASSIN:        return JOB_ASSASSIN; 
    39393954                case MAPID_STAR_GLADIATOR:  return JOB_STAR_GLADIATOR; 
    3940                 //Custom Jobs (blackmagic) 
    39413955                case MAPID_NECROMANCER:         return JOB_NECROMANCER; // Necromancer [Brain] 
    3942                 //Custom Job End 
    3943  
    39443956        //2_2 classes 
    39453957                case MAPID_CRUSADER:        return JOB_CRUSADER; 
     
    39503962                case MAPID_ROGUE:           return JOB_ROGUE; 
    39513963                case MAPID_SOUL_LINKER:     return JOB_SOUL_LINKER; 
    3952                 //Custom Jobs (blackmagic) 
    39533964                case MAPID_WARLOCK:                     return JOB_WARLOCK; // Warlock [Brain] 
    3954                 //Custom Job End 
    3955  
    39563965        //1-1: advanced 
    39573966                case MAPID_NOVICE_HIGH:     return JOB_NOVICE_HIGH; 
     
    40184027        case JOB_THIEF: 
    40194028                return msg_txt(550 - JOB_NOVICE+class_); 
    4020                  
     4029 
    40214030        case JOB_KNIGHT: 
    40224031        case JOB_PRIEST: 
     
    40264035        case JOB_ASSASSIN: 
    40274036                return msg_txt(557 - JOB_KNIGHT+class_); 
    4028                  
     4037 
    40294038        case JOB_KNIGHT2: 
    40304039                return msg_txt(557); 
    4031                  
     4040 
    40324041        case JOB_CRUSADER: 
    40334042        case JOB_MONK: 
     
    40384047        case JOB_DANCER: 
    40394048                return msg_txt(563 - JOB_CRUSADER+class_); 
    4040                          
     4049 
    40414050        case JOB_CRUSADER2: 
    40424051                return msg_txt(563); 
    4043                  
     4052 
    40444053        case JOB_WEDDING: 
    40454054        case JOB_SUPER_NOVICE: 
     
    40674076        case JOB_ASSASSIN_CROSS: 
    40684077                return msg_txt(582 - JOB_LORD_KNIGHT+class_); 
    4069                  
     4078 
    40704079        case JOB_LORD_KNIGHT2: 
    40714080                return msg_txt(582); 
    4072                  
     4081 
    40734082        case JOB_PALADIN: 
    40744083        case JOB_CHAMPION: 
     
    40794088        case JOB_GYPSY: 
    40804089                return msg_txt(588 - JOB_PALADIN + class_); 
    4081                  
     4090 
    40824091        case JOB_PALADIN2: 
    40834092                return msg_txt(588); 
     
    40914100        case JOB_BABY_THIEF: 
    40924101                return msg_txt(595 - JOB_BABY + class_); 
    4093                  
     4102 
    40944103        case JOB_BABY_KNIGHT: 
    40954104        case JOB_BABY_PRIEST: 
     
    40994108        case JOB_BABY_ASSASSIN: 
    41004109                return msg_txt(602 - JOB_BABY_KNIGHT + class_); 
    4101                  
     4110 
    41024111        case JOB_BABY_KNIGHT2: 
    41034112                return msg_txt(602); 
    4104                  
     4113 
    41054114        case JOB_BABY_CRUSADER: 
    41064115        case JOB_BABY_MONK: 
     
    41114120        case JOB_BABY_DANCER: 
    41124121                return msg_txt(608 - JOB_BABY_CRUSADER +class_); 
    4113                  
     4122 
    41144123        case JOB_BABY_CRUSADER2: 
    41154124                return msg_txt(608); 
    4116                  
     4125 
    41174126        case JOB_SUPER_BABY: 
    41184127                return msg_txt(615); 
    4119                  
     4128 
    41204129        case JOB_TAEKWON: 
    41214130                return msg_txt(616); 
     
    41254134        case JOB_SOUL_LINKER: 
    41264135                return msg_txt(618); 
    4127                  
     4136 
    41284137        case JOB_GUNSLINGER: 
    41294138                return msg_txt(619); 
    41304139        case JOB_NINJA: 
    41314140                return msg_txt(620); 
     4141<<<<<<< .mine 
     4142        case JOB_ADEPT: // Adept [Brain] 
     4143                return msg_txt(1000); 
     4144        case JOB_NECROMANCER: // Necromancer [Brain] 
     4145                return msg_txt(1001); 
     4146        case JOB_WARLOCK: // Warlock [Flavio] 
     4147======= 
    41324148        //Custom Jobs (blackmagic) 
    41334149        case JOB_ADEPT: // Adept [Brain] 
     
    41364152                return msg_txt(1001); 
    41374153        case JOB_WARLOCK: // Warlock [Flavio] 
     4154>>>>>>> .r18 
    41384155                return msg_txt(1002); 
    4139         //Custom Job End 
    4140          
     4156 
    41414157        default: 
    41424158                return msg_txt(650); 
     
    42324248                if (sd->status.status_point > USHRT_MAX - next) 
    42334249                        sd->status.status_point = USHRT_MAX; 
    4234                 else     
     4250                else 
    42354251                        sd->status.status_point += next; 
    42364252 
     
    42394255        if (battle_config.pet_lv_rate && sd->pd)        //<Skotlex> update pet's level 
    42404256                status_calc_pet(sd->pd,0); 
    4241          
     4257 
    42424258        clif_updatestatus(sd,SP_STATUSPOINT); 
    42434259        clif_updatestatus(sd,SP_BASELEVEL); 
     
    43094325 
    43104326        if (sd->expaddrace[status->race]) 
    4311                 bonus += sd->expaddrace[status->race];   
     4327                bonus += sd->expaddrace[status->race]; 
    43124328        bonus += sd->expaddrace[status->mode&MD_BOSS?RC_BOSS:RC_NONBOSS]; 
    4313          
    4314         if (battle_config.pk_mode &&  
     4329 
     4330        if (battle_config.pk_mode && 
    43154331                (int)(status_get_lv(src) - sd->status.base_level) >= 20) 
    4316                 bonus += 15; // pk_mode additional exp if monster >20 levels [Valaris]   
     4332                bonus += 15; // pk_mode additional exp if monster >20 levels [Valaris] 
    43174333 
    43184334        if (sd->sc.data[SC_EXPBOOST]) 
     
    43214337        if (!bonus) 
    43224338                return; 
    4323          
     4339 
    43244340        *base_exp += (unsigned int) cap_value((double)*base_exp * bonus/100., 1, UINT_MAX); 
    43254341        *job_exp += (unsigned int) cap_value((double)*job_exp * bonus/100., 1, UINT_MAX); 
     
    43504366        nextb = pc_nextbaseexp(sd); 
    43514367        nextj = pc_nextjobexp(sd); 
    4352                  
     4368 
    43534369        if(sd->state.showexp || battle_config.max_exp_gain_rate){ 
    43544370                if (nextb > 0) 
     
    43724388                } 
    43734389        } 
    4374          
     4390 
    43754391        //Cap exp to the level up requirement of the previous level when you are at max level, otherwise cap at UINT_MAX (this is required for some S. Novice bonuses). [Skotlex] 
    43764392        if (base_exp) { 
     
    45384554 
    45394555        max = pc_maxparameter(sd); 
    4540          
     4556 
    45414557        switch(type){ 
    45424558        case SP_STR: sd->status.str = cap_value(sd->status.str + val, 1, max); break; 
     
    46384654        } 
    46394655        status_calc_pc(sd,0); 
    4640         //Required because if you could level up all skills previously,  
     4656        //Required because if you could level up all skills previously, 
    46414657        //the update will not be sent as only the lv variable changes. 
    46424658        clif_skillinfoblock(sd); 
     
    47354751{ 
    47364752        nullpo_retr(0, sd); 
    4737          
     4753 
    47384754        if (battle_config.use_statpoint_table) 
    47394755        {       // New statpoint table used here - Dexity 
     
    47484764                if (sd->class_&JOBL_UPPER) 
    47494765                        stat+=52;       // extra 52+48=100 stat points 
    4750                  
     4766 
    47514767                if (stat > USHRT_MAX) 
    47524768                        sd->status.status_point = USHRT_MAX; 
     
    47884804        clif_updatestatus(sd,SP_UDEX); 
    47894805        clif_updatestatus(sd,SP_ULUK);  // End Addition 
    4790          
     4806 
    47914807        clif_updatestatus(sd,SP_STATUSPOINT); 
    47924808        status_calc_pc(sd,0); 
     
    48234839                        merc_hom_vaporize(sd, 0); 
    48244840        } 
    4825          
     4841 
    48264842        for (i = 1; i < MAX_SKILL; i++) { 
    48274843                lv= sd->status.skill[i].lv; 
     
    48524868                } 
    48534869        } 
    4854          
     4870 
    48554871        if (flag&2 || !skill_point) return skill_point; 
    48564872 
     
    49584974        if(!src || src == &sd->bl) 
    49594975                return; 
    4960          
     4976 
    49614977        if(sd->status.pet_id > 0 && sd->pd && battle_config.pet_damage_support) 
    49624978                pet_target_check(sd,src,1); 
     
    49704986        int i=0,j=0,k=0; 
    49714987        unsigned int tick = gettick(); 
    4972                  
     4988 
    49734989        if(sd->vender_id) 
    49744990                vending_closevending(sd); 
     
    50655081                        // karma going down = more 'good' / more honourable. 
    50665082                        // The Karma System way... 
    5067                  
     5083 
    50685084                        if (sd->status.karma > ssd->status.karma) {     // If player killed was more evil 
    50695085                                sd->status.karma--; 
     
    50725088                        else if (sd->status.karma < ssd->status.karma)  // If player killed was more good 
    50735089                                ssd->status.karma++; 
    5074          
     5090 
    50755091 
    50765092                        // or the PK System way... 
    5077          
     5093 
    50785094                        if (sd->status.karma > 0)       // player killed is dishonourable? 
    50795095                                ssd->status.karma--; // honour points earned 
    50805096                        sd->status.karma++;     // honour points lost 
    5081                  
     5097 
    50825098                        // To-do: Receive exp on certain occasions 
    50835099#endif 
     
    53265342                                stat += (sd->status.base_level + i + 14) / 5 ; 
    53275343                        if (sd->status.status_point > USHRT_MAX - stat) 
    5328                                  
     5344 
    53295345                                sd->status.status_point = USHRT_MAX; 
    53305346                        else 
     
    55285544                        status_percent_damage(NULL, &sd->bl, hp, 0, hp==-100); 
    55295545        } 
    5530          
     5546 
    55315547        if(sp) { 
    55325548                if(sp > 0) 
     
    55605576        switch (upper) { 
    55615577                case 1: 
    5562                         b_class|= JOBL_UPPER;  
     5578                        b_class|= JOBL_UPPER; 
    55635579                        break; 
    55645580                case 2: 
     
    55675583        } 
    55685584        //This will automatically adjust bard/dancer classes to the correct gender 
    5569         //That is, if you try to jobchange into dancer, it will turn you to bard.        
     5585        //That is, if you try to jobchange into dancer, it will turn you to bard. 
    55705586        job = pc_mapid2jobid(b_class, sd->status.sex); 
    55715587        if (job == -1) 
    55725588                return 1; 
    5573          
     5589 
    55745590        if ((unsigned short)b_class == sd->class_) 
    55755591                return 1; //Nothing to change. 
     
    55995615                } 
    56005616        } 
    5601          
     5617 
    56025618        sd->status.class_ = job; 
    56035619        fame_flag = pc_famerank(sd->status.char_id,sd->class_&MAPID_UPPERMASK); 
     
    56155631        } 
    56165632 
    5617         //Change look, if disguised, you need to undisguise  
     5633        //Change look, if disguised, you need to undisguise 
    56185634        //to correctly calculate new job sprite without 
    56195635        if (sd->disguise) 
     
    56435659        if(merc_is_hom_active(sd->hd) && !pc_checkskill(sd, AM_CALLHOMUN)) 
    56445660                merc_hom_vaporize(sd, 0); 
    5645          
     5661 
    56465662        if(sd->status.manner < 0) 
    56475663                clif_changestatus(&sd->bl,SP_MANNER,sd->status.manner); 
     
    58025818        else if (!(type&OPTION_FLYING) && p_type&OPTION_FLYING) 
    58035819                new_look = -1; 
    5804          
     5820 
    58055821        if (type&OPTION_WEDDING && !(p_type&OPTION_WEDDING)) 
    58065822                new_look = JOB_WEDDING; 
     
    60366052        struct global_reg *sd_reg; 
    60376053        int i,max; 
    6038          
     6054 
    60396055        nullpo_retr(0, sd); 
    60406056        switch (type) { 
     
    61136129                return 1; 
    61146130        } 
    6115          
     6131 
    61166132        // delete reg 
    61176133        if (val == 0) { 
     
    61856201                return 0; 
    61866202        } 
    6187          
     6203 
    61886204        // delete reg 
    61896205        if (!val || strcmp(val,"")==0) 
     
    63796395        if(pos == EQP_ACC) { //Accesories should only go in one of the two, 
    63806396                pos = req_pos&EQP_ACC; 
    6381                 if (pos == EQP_ACC) //User specified both slots..  
     6397                if (pos == EQP_ACC) //User specified both slots.. 
    63826398                        pos = sd->equip_index[EQI_ACC_R] >= 0 ? EQP_ACC_L : EQP_ACC_R; 
    63836399        } 
     
    65646580        clif_unequipitemack(sd,n,sd->status.inventory[n].equip,1); 
    65656581 
    6566         if((sd->status.inventory[n].equip & EQP_ARMS) &&  
     6582        if((sd->status.inventory[n].equip & EQP_ARMS) && 
    65676583                sd->weapontype1 == 0 && sd->weapontype2 == 0 && (!sd->sc.data[SC_SEVENWIND] || sd->sc.data[SC_ASPERSIO])) //Check for seven wind (but not level seven!) 
    65686584                skill_enchant_elemental_end(&sd->bl,-1); 
     
    66206636        if (sd->vender_id) //Avoid reorganizing items when we are vending, as that leads to exploits (pointed out by End of Exam) 
    66216637                return 0; 
    6622          
     6638 
    66236639        // ŠŽ•i‹ó‚«‹l‚ß 
    66246640        for(i=j=0;i<MAX_INVENTORY;i++){ 
     
    68656881                        hp = sd->battle_status.hp-1; //Script drains cannot kill you. 
    68666882        } 
    6867          
     6883 
    68686884        if (sd->sp_loss.value) { 
    68696885                sd->sp_loss.tick += diff_tick; 
     
    68946910                } 
    68956911        } 
    6896          
     6912 
    68976913        if (sd->sp_regen.value) { 
    68986914                sd->sp_regen.tick += diff_tick; 
     
    70007016        if (data == 0 && battle_config.day_duration <= 0)       // if we want a day 
    70017017                return 0; 
    7002          
     7018 
    70037019        if (!night_flag) 
    70047020                return 0; //Already day. 
    7005          
     7021 
    70067022        night_flag = 0; // 0=day, 1=night [Yor] 
    70077023        map_foreachpc(pc_daynight_timer_sub); 
     
    70217037        if (data == 0 && battle_config.night_duration <= 0)     // if we want a night 
    70227038                return 0; 
    7023          
     7039 
    70247040        if (night_flag) 
    70257041                return 0; //Already nigth. 
     
    70507066        time_t timer; 
    70517067        struct tm *t; 
    7052          
     7068 
    70537069        time(&timer); 
    70547070        t = localtime(&timer); 
    7055          
    7056         pc_setglobalreg(sd, "PC_LAST_DUEL_TIME", t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min);  
     7071 
     7072        pc_setglobalreg(sd, "PC_LAST_DUEL_TIME", t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min); 
    70577073        return; 
    70587074} 
     
    70637079        time_t timer; 
    70647080        struct tm *t; 
    7065          
     7081 
    70667082        time(&timer); 
    70677083    t = localtime(&timer); 
    7068          
     7084 
    70697085        diff = t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min - pc_readglobalreg(sd, "PC_LAST_DUEL_TIME"); 
    7070          
     7086 
    70717087        return !(diff >= 0 && diff < battle_config.duel_time_interval); 
    70727088} 
     
    70787094 
    70797095        if (sd->duel_group != ssd->duel_group) return 0; 
    7080          
     7096 
    70817097        sprintf(output, "      %d. %s", ++(*p), sd->status.name); 
    70827098        clif_disp_onlyself(ssd, output, strlen(output)); 
     
    71107126        int i=1; 
    71117127        char output[256]; 
    7112          
     7128 
    71137129        while(duel_list[i].members_count > 0 && i < MAX_DUEL) i++; 
    71147130        if(i == MAX_DUEL) return 0; 
    7115          
     7131 
    71167132        duel_count++; 
    71177133        sd->duel_group = i; 
     
    71197135        duel_list[i].invites_count = 0; 
    71207136        duel_list[i].max_players_limit = maxpl; 
    7121          
     7137 
    71227138        strcpy(output, msg_txt(372)); // " -- Duel has been created (@invite/@leave) --" 
    71237139        clif_disp_onlyself(sd, output, strlen(output)); 
    7124          
     7140 
    71257141        clif_set0199(sd, 1); 
    71267142        //clif_misceffect2(&sd->bl, 159); 
     
    71387154        target_sd->duel_invite = did; 
    71397155        duel_list[did].invites_count++; 
    7140          
     7156 
    71417157        // "Blue -- Player %s invites you to PVP duel (@accept/@reject) --" 
    71427158        sprintf(output, msg_txt(374), sd->status.name); 
     
    71567172{ 
    71577173        char output[256]; 
    7158          
     7174 
    71597175        // " <- Player %s has left duel --" 
    71607176        sprintf(output, msg_txt(375), sd->status.name); 
    71617177        clif_disp_message(&sd->bl, output, strlen(output), DUEL_WOS); 
    7162          
     7178 
    71637179        duel_list[did].members_count--; 
    7164          
     7180 
    71657181        if(duel_list[did].members_count == 0) { 
    7166                 map_foreachpc(duel_leave_sub, did);  
     7182                map_foreachpc(duel_leave_sub, did); 
    71677183                duel_count--; 
    71687184        } 
    7169          
     7185 
    71707186        sd->duel_group = 0; 
    71717187        duel_savetime(sd); 
     
    71777193{ 
    71787194        char output[256]; 
    7179          
     7195 
    71807196        duel_list[did].members_count++; 
    71817197        sd->duel_group = sd->duel_invite; 
    71827198        duel_list[did].invites_count--; 
    71837199        sd->duel_invite = 0; 
    7184          
     7200 
    71857201        // " -> Player %s has accepted duel --" 
    71867202        sprintf(output, msg_txt(376), sd->status.name); 
     
    71957211{ 
    71967212        char output[256]; 
    7197          
     7213 
    71987214        // " -- Player %s has rejected duel --" 
    71997215        sprintf(output, msg_txt(377), sd->status.name); 
    72007216        clif_disp_message(&sd->bl, output, strlen(output), DUEL_WOS); 
    7201          
     7217 
    72027218        duel_list[did].invites_count--; 
    72037219        sd->duel_invite = 0; 
     
    72977313                if (pc_split_str(line,split,4) < 4) 
    72987314                        continue; 
    7299                  
     7315 
    73007316                job_count = pc_split_atoi(split[1],jobs,':',CLASS_COUNT); 
    73017317                if (job_count < 1) 
     
    73167332                        maxlv = MAX_LEVEL; 
    73177333                } 
    7318                  
     7334 
    73197335                job = jobs[0] = pc_class2idx(job_id); 
    73207336                //We send one less and then one more because the last entry in the exp array should hold 0. 
     
    74777493                        if (i > MAX_LEVEL) 
    74787494                                break; 
    7479                         statp[i]=j;                      
     7495                        statp[i]=j; 
    74807496                        i++; 
    74817497                } 
     
    74867502        for (; i <= MAX_LEVEL; i++) { 
    74877503                j += (i+15)/5; 
    7488                 statp[i] = j;            
     7504                statp[i] = j; 
    74897505        } 
    74907506 
     
    75187534        else 
    75197535                ShowWarning("In function pc_read_motd() -> File '"CL_WHITE"%s"CL_RESET"' not found.\n", motd_txt); 
    7520          
     7536 
    75217537        return 0; 
    75227538} 
  • src/map/pc.h

    r13 r19  
    1 // Copyright (c) Athena Dev Teams - Licensed under GNU GPL 
     1// Copyright (c) Athena Dev Teams - Licensed under GNU GPL =D 
    22// For more information, see LICENCE in the main folder 
    33 
     
    114114                unsigned short autolootid; // [Zephyrus] 
    115115                unsigned noks : 3; // [Zeph Kill Steal Protection] 
     116<<<<<<< .mine 
     117                unsigned showsummon : 1; //Show summoned monster stats [Brainstorm] 
     118======= 
    116119                //Custom Jobs (blackmagic) 
    117120                 
     
    122125                unsigned god :1; //[Sketchy] 
    123126                unsigned demon :1; //[Sketchy] 
     127>>>>>>> .r17 
    124128                bool changemap; 
    125129                struct guild *gmaster_flag; 
  • 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 
  • src/map/skill.h

    r13 r19  
    321321int skill_arrow_create( struct map_session_data *sd,int nameid); 
    322322 
    323 //Custom Jobs (blackmagic) 
    324323int skill_additem(struct block_list* src, struct block_list *bl, int itemid, int amount); // Item giver func [Brain] 
    325 //Custom Job End 
     324 
    326325 
    327326// mobƒXƒLƒ‹‚Ì‚œ‚ß 
     
    960959 
    961960        ALL_INCCARRY = 681, 
    962  
     961        AD_PWBLIND = 700,       // Custom Skills [Brainstorm] 
     962        AD_PWFEAR, 
     963        AD_DARKHEAL, 
     964        AD_BLOODPACT, 
     965        AD_LUST, 
     966        AD_FERVOR, 
     967        AD_PROFANE, 
     968        AD_DARKFAITH, 
     969        AD_FAMILIAR, 
     970        AD_SUMMONS, 
     971 
     972<<<<<<< .mine 
     973        NC_PHYLACTERY, //710 
     974        NC_UNDEAD, 
     975        NC_DEATHHAND, 
     976        NC_GHOULTOUCH, 
     977        NC_SKELETON, 
     978        NC_ZOMBIE, 
     979        NC_ARCHER, 
     980        NC_MUMMY, 
     981        NC_GHOST, 
     982        NC_SHADOW, 
     983        NC_WRAITH, 
     984        NC_REQUIEM, 
     985        NC_DARKMOON, 
     986        NC_PWSUFFER, 
     987        NC_DECREPIFY, 
     988        NC_DRAINLIFE, 
     989        NC_DEATHPACT, 
     990======= 
    963991        //Custom Jobs (blackmagic) 
    964992        AD_PWBLIND = 700,       // Custom Skills [Brainstorm] 
     
    10141042         
    10151043        //Custom Job End 
     1044>>>>>>> .r18 
     1045 
     1046        ALL_ATFIELD, //GM SKILL 
     1047 
     1048        WL_CURSETONGUES, //732 
     1049        WL_CURSEDOOM, 
     1050        WL_CURSEEXHAUST, 
     1051        WL_CURSEWEAKNESS, 
     1052        WL_SEARING, 
     1053        WL_HELLFIRE, 
     1054        WL_CONFLAGRATE, 
     1055        WL_IMMOLATE, 
     1056        WL_SHADOWBOLT, 
     1057        WL_SHADOWBURN, 
     1058        WL_HOWLOFPAIN, 
     1059        WL_DEMONOLOGY, 
     1060        WL_HOWLOFTERROR, 
     1061        WL_PWAGONY, 
     1062        WL_OVERWHELMING, 
     1063        WL_SOULSTEAL, 
     1064        WL_DRAINSOUL, 
     1065        WL_CORRUPTION, //749 
    10161066 
    10171067 
  • src/map/status.c

    r13 r19  
    130130        set_sc( NPC_SILENCEATTACK , SC_SILENCE   , SI_BLANK    , SCB_NONE ); 
    131131        set_sc( DC_WINKCHARM      , SC_CONFUSION , SI_BLANK    , SCB_NONE ); 
    132         //Custom Jobs (blackmagic) 
    133         set_sc( AD_PWFEAR         , SC_FEAR      , SI_HALLUCINATION , SCB_SPEED ); //Fear Status by [Brainstorm] 
    134         //Custom Job End 
     132        set_sc( AD_PWFEAR        , SC_FEAR        , SI_HALLUCINATION , SCB_SPEED ); //Fear Status by [Brainstorm] 
    135133        set_sc( NPC_BLINDATTACK   , SC_BLIND     , SI_BLANK    , SCB_HIT|SCB_FLEE ); 
    136134        set_sc( LK_HEADCRUSH      , SC_BLEEDING  , SI_BLEEDING , SCB_REGEN ); 
     
    410408        set_sc( GD_BATTLEORDER       , SC_BATTLEORDERS    , SI_BLANK           , SCB_STR|SCB_INT|SCB_DEX ); 
    411409        set_sc( GD_REGENERATION      , SC_REGENERATION    , SI_BLANK           , SCB_REGEN ); 
     410<<<<<<< .mine 
     411======= 
    412412        //Custom Jobs (blackmagic)       
    413413        // Custom Jobs Skills [Brain] 
     
    438438        set_sc( ALL_ATFIELD          , SC_ATFIELD         , SI_UTSUSEMI        ,SCB_NONE); 
    439439        //Custom Job End 
     440>>>>>>> .r18 
     441 
     442        // Custom Jobs Skills [Brain] 
     443        add_sc( AD_PWBLIND         , SC_BLIND); 
     444        add_sc( AD_PWFEAR               , SC_FEAR); 
     445        set_sc( AD_LUST           , SC_LUST             , SI_JOINTBEAT     , SCB_ASPD|SCB_BATK|SCB_WATK|SCB_REGEN); 
     446 
     447        set_sc( NC_DECREPIFY     , SC_DECREPIFY    , SI_BLEEDING        , SCB_SPEED|SCB_BATK|SCB_WATK|SCB_DEF2|SCB_MDEF2); 
     448        set_sc( NC_DARKMOON       , SC_DARKMOON , SI_MOON_COMFORT       , SCB_FLEE|SCB_HIT); 
     449        add_sc( NC_DARKMOON       , SC_BLIND); 
     450        set_sc( NC_REQUIEM         , SC_REQUIEM  , SI_KAIZEL      , SCB_BATK|SCB_WATK); 
     451        add_sc( NC_GHOULTOUCH   , SC_POISON); 
     452        set_sc( NC_PWSUFFER       , SC_SUFFER     , SI_BLANK       , SCB_DEF|SCB_DEF2); 
     453        set_sc( NC_DEATHPACT     , SC_DEATHPACT    , SI_BIOMOBTRICKDEAD , SCB_DEF_ELE|SCB_REGEN); 
     454         
     455        set_sc( WL_SEARING         , SC_SEARING  , SI_BLANK        , SCB_NONE); 
     456        set_sc( WL_IMMOLATE       , SC_IMMOLATE , SI_BLANK         , SCB_NONE); 
     457        add_sc( WL_SHADOWBURN   , SC_STUN); 
     458        set_sc( WL_PWAGONY         , SC_AGONY      , SI_BLANK      , SCB_MDEF|SCB_MDEF2); 
     459        set_sc( WL_CURSETONGUES   , SC_CURSETONGUES     , SI_SLOWCAST   , SCB_NONE); 
     460        set_sc( WL_CURSEDOOM     , SC_DOOM              , SI_BLANK         , SCB_NONE); 
     461        set_sc( WL_CURSEWEAKNESS         , SC_CURSEWEAKNESS   , SI_STRIPWEAPON   , SCB_BATK|SCB_WATK); 
     462        set_sc( WL_CURSEEXHAUST   , SC_CURSEEXHAUST     , SI_CRITICALWOUND   , SCB_DEF|SCB_MDEF); 
     463        add_sc( WL_HOWLOFTERROR   , SC_FEAR); 
     464        set_sc( WL_HOWLOFPAIN   , SC_PROVOKE     , SI_PROVOKE    , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK); 
     465        set_sc( WL_OVERWHELMING   , SC_OVERWHELMING     , SI_ENERGYCOAT   , SCB_DEF|SCB_MDEF|SCB_MATK|SCB_REGEN|SCB_DEF_ELE); 
     466         
     467        set_sc( ALL_ATFIELD       , SC_ATFIELD   , SI_UTSUSEMI  ,SCB_NONE); 
     468 
    440469 
    441470        // Storing the target job rather than simply SC_SPIRIT simplifies code later on. 
     
    677706                        status_change_end(target,SC_WINKCHARM,-1); 
    678707                        status_change_end(target,SC_CONFUSION,-1); 
     708                        //error... definately... 
     709                        if (sc->data[SC_FEAR]) //Fear Status by [Brainstorm] 
     710                        status_change_end(target, SC_FEAR, -1); 
    679711                        status_change_end(target,SC_TRICKDEAD,-1); 
    680712                        status_change_end(target,SC_HIDING,-1); 
    681713                        status_change_end(target,SC_CLOAKING,-1); 
    682714                        status_change_end(target,SC_CHASEWALK,-1); 
    683                         status_change_end(target,SC_FEAR, -1);//Custom Jobs (blackmagic) 
    684715                        if ((sce=sc->data[SC_ENDURE]) && !sce->val4) { 
    685716                                //Endure count is only reduced by non-players on non-gvg maps. 
     
    13731404                flag|=16; 
    13741405 
     1406<<<<<<< .mine 
     1407        if (md->master_id && md->special_state.ai) 
     1408        flag|=32; //Adept/Necro/Warlock Summon Stats Bonus [Brainstorm] 
     1409======= 
    13751410        //Custom Jobs (blackmagic)               
    13761411        if (md->master_id && md->special_state.ai) 
    13771412                flag|=32; //Adept/Necro/Warlock Summon Stats Bonus [Brainstorm] 
    13781413        //Custom Job End 
     1414>>>>>>> .r18 
     1415 
    13791416 
    13801417        if (!flag) 
     
    14941531                status->aspd_rate -= 100*md->guardian_data->guardup_lv; 
    14951532        } 
     1533<<<<<<< .mine 
     1534        //Summon Bonus from Skills [Brainstorm] 
     1535        if(flag&32) 
     1536        { 
     1537        mbl = map_id2bl(md->master_id); 
     1538        if(mbl) 
     1539        { 
     1540                struct unit_data *ud = unit_bl2ud(mbl); 
     1541                //Remove special AI when this is used by regular mobs. 
     1542                if (mbl->type == BL_MOB && !((TBL_MOB*)mbl)->special_state.ai) 
     1543                md->special_state.ai = 0; 
     1544                 
     1545                int master_lv = status_get_lv(mbl); 
     1546                int skill_mastery = pc_checkskill((TBL_PC*)mbl,AD_SUMMONS); 
     1547                int undead_mastery = pc_checkskill((TBL_PC*)mbl,NC_UNDEAD); 
     1548         
     1549                if (ud->skillid == AD_FAMILIAR) 
     1550                { 
     1551                status->max_hp += (skill_mastery*10) + (master_lv*10); 
     1552                status->str += (master_lv) + (skill_mastery); 
     1553                status->dex += (master_lv) + (skill_mastery); 
     1554                status->agi += (master_lv) + (skill_mastery); 
     1555                status->int_ += (master_lv) + (skill_mastery); 
     1556                status->vit += (master_lv) + (skill_mastery); 
     1557                status->luk += (master_lv) + (skill_mastery); 
     1558                status->rhw.atk += (skill_mastery*3) 
     1559                        + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10)); 
     1560                status->rhw.atk2 += (skill_mastery*3) 
     1561                        + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10)); 
     1562                status->speed -= skill_mastery; 
     1563                status->def += (master_lv)/10 + (skill_mastery); 
     1564                status->mdef += (master_lv)/10 + (skill_mastery); 
     1565                //These are not automatically recalculated 
     1566                status->hit += (master_lv*2) + (skill_mastery); 
     1567                status->flee += (master_lv*2) + (skill_mastery); 
     1568                status->def2 += (master_lv) + (skill_mastery); 
     1569                status->mdef2 += (master_lv) + (skill_mastery); 
     1570                }        
     1571                else if(status->race==RC_UNDEAD) 
     1572                { 
     1573                status->max_hp += (undead_mastery*10) + (master_lv*2); 
     1574                status->str += (undead_mastery*3) + (skill_mastery); 
     1575                status->dex += (undead_mastery*3) + (skill_mastery); 
     1576                status->agi += (undead_mastery*3) + (skill_mastery); 
     1577                status->int_ += (undead_mastery*3) + (skill_mastery); 
     1578                status->vit += (undead_mastery*3) + (skill_mastery); 
     1579                status->luk += (undead_mastery*3) + (skill_mastery); 
     1580                status->rhw.atk += (undead_mastery*3) + (skill_mastery*3) 
     1581                        + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10)); 
     1582                status->rhw.atk2 += (undead_mastery*3) + (skill_mastery*3) 
     1583                        + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10)); 
     1584                status->speed -= undead_mastery; 
     1585                status->def += undead_mastery; 
     1586                status->mdef += undead_mastery; 
     1587                //These are not automatically recalculated 
     1588                status->hit += (undead_mastery*3) + (skill_mastery); 
     1589                status->flee += (undead_mastery*3) + (skill_mastery); 
     1590                status->def2 += (undead_mastery*3) + (skill_mastery); 
     1591                status->mdef2 += (undead_mastery*3) + (skill_mastery); 
     1592                } 
     1593======= 
    14961594 
    14971595        //Custom Jobs (blackmagic) 
     
    15571655                } 
    15581656                else ShowError("status_calc_mob: Monster summoned without a master at %s\n", map[md->bl.m].name); 
    1559         } 
    1560         //Custom Job End 
     1657>>>>>>> .r18 
     1658        } 
     1659        else ShowError("status_calc_mob: Monster summoned without a master at %s\n", map[md->bl.m].name); 
     1660        } 
     1661 
    15611662 
    15621663        //Initial battle status 
     
    18071908        status->aspd_rate = 1000; 
    18081909        status->ele_lv = 1; 
     1910<<<<<<< .mine 
     1911        status->race = RC_DEMIHUMAN;// This define players default race to DEMIHUMAN [Brain] 
     1912        if(pc_checkskill(sd,NC_PHYLACTERY)>0) status->def_ele = ELE_UNDEAD; //Phylactery turns you UNDEAD 1 instead of NEUTRAL 
     1913======= 
    18091914        //Custom Jobs (blackmagic) 
    18101915        status->race = RC_DEMIHUMAN;// This define players default race to DEMIHUMAN [Brain] 
    18111916        if(pc_checkskill(sd,NC_PHYLACTERY)>0) status->def_ele = ELE_UNDEAD; //Phylactery turns you UNDEAD 1 instead of NEUTRAL 
    18121917        //Custom Job End 
    1813  
     1918>>>>>>> .r18 
    18141919 
    18151920        //zero up structures... 
     
    21012206        if((skill=pc_checkskill(sd,AC_OWL))>0) 
    21022207                status->dex += skill; 
    2103  
     2208        if((skill=pc_checkskill(sd,WL_DEMONOLOGY))>0) //Warlock Demonology [Brain] 
     2209        status->str += skill/2; //+1 str per 2 skill points 
     2210 
     2211<<<<<<< .mine 
     2212======= 
    21042213        //Custom Jobs (blackmagic) 
    21052214         
     
    21072216                status->str += skill/2; //+1 str per 2 skill points 
    21082217        //Custom Job End 
     2218>>>>>>> .r18 
    21092219 
    21102220        // Bonuses from cards and equipment as well as base stat, remember to avoid overflows. 
     
    21442254        if((skill=pc_checkskill(sd,CR_TRUST))>0) 
    21452255                status->max_hp += skill*200; 
    2146  
     2256        if((skill=pc_checkskill(sd,AD_PROFANE))>0) // Adept Profane Soul [Brain] 
     2257        status->max_hp += status->max_hp * (skill*3)/100; 
     2258 
     2259<<<<<<< .mine 
     2260======= 
    21472261        //Custom Jobs (blackmagic) 
    21482262        if((skill=pc_checkskill(sd,AD_PROFANE))>0) // Adept Profane Soul [Brain] 
    21492263                status->max_hp += status->max_hp * (skill*3)/100; 
    21502264        //Custom Job End 
     2265>>>>>>> .r18 
    21512266 
    21522267        // Apply relative modifiers from equipment 
     
    21782293        if((skill=pc_checkskill(sd,HW_SOULDRAIN))>0) 
    21792294                status->max_sp += status->max_sp * 2*skill/100; 
    2180  
     2295        if((skill=pc_checkskill(sd,AD_PROFANE))>0) // Adept Profane Soul [Brain] 
     2296        status->max_sp += sd->status.max_sp * (skill*3)/100; 
     2297 
     2298<<<<<<< .mine 
     2299======= 
    21812300        //Custom Jobs (blackmagic) 
    21822301        if((skill=pc_checkskill(sd,AD_PROFANE))>0) // Adept Profane Soul [Brain] 
    21832302                status->max_sp += sd->status.max_sp * (skill*3)/100; 
    21842303        //Custom Job End 
     2304>>>>>>> .r18 
    21852305 
    21862306        // Apply relative modifiers from equipment 
     
    22762396                } 
    22772397        } 
    2278  
     2398        if((skill=pc_checkskill(sd,AD_FERVOR))>0) // Adept Unholy Fevor [Brain] 
     2399        status->hit += skill*2; 
     2400 
     2401<<<<<<< .mine 
     2402======= 
    22792403        //Custom Jobs (blackmagic) 
    22802404        if((skill=pc_checkskill(sd,AD_FERVOR))>0) // Adept Unholy Fevor [Brain] 
     
    22822406        //Custom Job End 
    22832407 
     2408>>>>>>> .r18 
    22842409// ----- FLEE CALCULATION ----- 
    22852410 
     
    22892414        if((skill=pc_checkskill(sd,MO_DODGE))>0) 
    22902415                status->flee += (skill*3)>>1; 
    2291  
     2416        if((skill=pc_checkskill(sd,AD_FERVOR))>0) // Adept Unholy Fevor [Brain] 
     2417        status->flee += skill*2; 
     2418 
     2419<<<<<<< .mine 
     2420======= 
    22922421        //Custom Jobs (blackmagic) 
    22932422        if((skill=pc_checkskill(sd,AD_FERVOR))>0) // Adept Unholy Fevor [Brain] 
     
    22952424        //Custom Job End 
    22962425 
     2426>>>>>>> .r18 
    22972427// ----- EQUIPMENT-DEF CALCULATION ----- 
    22982428 
     
    23042434                status->def = cap_value(i, CHAR_MIN, CHAR_MAX); 
    23052435        } 
     2436<<<<<<< .mine 
     2437 
     2438======= 
    23062439        //Custom Jobs (blackmagic) 
    23072440        // Absolute modifiers from passive skills 
     
    23092442                status->mdef += 1*skill; 
    23102443        //Custom Job End 
     2444>>>>>>> .r18 
    23112445        if (!battle_config.weapon_defense_type && status->def > battle_config.max_def) 
    23122446        { 
     
    23242458                status->mdef = cap_value(i, CHAR_MIN, CHAR_MAX); 
    23252459        } 
     2460        // Absolute modifiers from passive skills 
     2461        if((skill=pc_checkskill(sd,AD_DARKFAITH))>0) // Adept Dark Faith [Brain] 
     2462        status->mdef += 1*skill; 
     2463 
    23262464 
    23272465        if (!battle_config.magic_defense_type && status->mdef > battle_config.max_def) 
     
    24312569        } 
    24322570 
     2571<<<<<<< .mine 
     2572        if((skill=pc_checkskill(sd,AD_DARKFAITH))>0) // Adept Dark Faith [Brain] 
     2573        sd->subele[ELE_DARK] += skill*5; 
     2574        if((skill=pc_checkskill(sd,WL_DEMONOLOGY))>0 ){ //Warlock Demonology [Brain] 
     2575        skill = skill*5; 
     2576        sd->right_weapon.addrace[RC_DEMON]+=skill; 
     2577        sd->magic_addrace[RC_DEMON]+=skill; 
     2578        sd->subrace[RC_DEMON]+=skill; 
     2579======= 
    24332580 
    24342581        //Custom Jobs (blackmagic) 
     
    24402587                sd->magic_addrace[RC_DEMON]+=skill; 
    24412588                sd->subrace[RC_DEMON]+=skill; 
    2442         } 
     2589>>>>>>> .r18 
     2590        } 
     2591<<<<<<< .mine 
     2592        if((pc_checkskill(sd,NC_PHYLACTERY))>0){ // Necro Phylactery [Brain] 
     2593        sd->subele[ELE_NEUTRAL] += 10;  //And increases neutral resistance by 10% 
     2594        } 
     2595======= 
    24432596        if((pc_checkskill(sd,NC_PHYLACTERY))>0){ // Necro Phylactery [Brain] 
    24442597                sd->subele[ELE_NEUTRAL] += 10;  //And increases neutral resistance by 10% 
    24452598        } 
    24462599        //Custom Job End 
     2600>>>>>>> .r18 
     2601 
    24472602 
    24482603        if(sc->count){ 
     
    24682623                        sd->subrace[RC_DEMON] += sc->data[SC_PROVIDENCE]->val2; 
    24692624                } 
    2470  
     2625                if(sd->sc.data[SC_DEATHPACT]) //Necro Death Pact [Brain] 
     2626                sd->subele[ELE_NEUTRAL] += sd->sc.data[SC_DEATHPACT]->val2; 
     2627 
     2628<<<<<<< .mine 
     2629======= 
    24712630                //Custom Jobs (blackmagic) 
    24722631                if(sd->sc.data[SC_DEATHPACT]) //Necro Death Pact [Brain] 
     
    24742633                //Custom Job End 
    24752634 
     2635>>>>>>> .r18 
    24762636                if(sc->data[SC_ARMOR_ELEMENT]) 
    24772637                {       //This status change should grant card-type elemental resist. 
     
    26292789        status->rhw.atk2 = status->str + hom->level; 
    26302790 
     2791        /*Passive bonus from Wolf Mastery (will only take effect when first created or level up) [Brainstorm] 
     2792        if((skill=pc_checkskill(hd->master,QHT_WOLFMASTERY)) > 0) 
     2793        { 
     2794        status->rhw.atk +=      skill * 3; 
     2795        status->rhw.atk2 +=     skill * 3; 
     2796        status->str +=  skill; 
     2797        status->agi +=  skill; 
     2798        status->vit +=  skill; 
     2799        status->dex +=  skill; 
     2800        status->int_ += skill; 
     2801        status->luk +=  skill; 
     2802        }*/ 
     2803 
     2804 
    26312805        status->aspd_rate = 1000; 
    26322806 
     
    27952969                || sc->data[SC_TRICKDEAD] 
    27962970                || sc->data[SC_BLEEDING] 
     2971<<<<<<< .mine 
     2972                || sc->data[SC_LUST]    // Adept Blood Lust, stops hp regen [Brain] 
     2973======= 
    27972974                //Custom Jobs (blackmagic) 
    27982975                || sc->data[SC_LUST]            // Adept Blood Lust, stops hp regen [Brain] 
     2976>>>>>>> .r18 
    27992977                || sc->data[SC_DEATHPACT]       // Necro Death Pact 
    2800                 //Custom Job End 
     2978 
    28012979        )       //No regen 
    28022980                regen->flag = 0; 
     
    28072985                || (sc->data[SC_EXPLOSIONSPIRITS] 
    28082986                        && (!sc->data[SC_SPIRIT] || sc->data[SC_SPIRIT]->val2 != SL_MONK)) 
    2809 //Custom Jobs (blackmagic) 
    28102987                || sc->data[SC_OVERWHELMING]    // Warlock Overwhelming Evil, stops sp regen [Brain] 
    2811 //Custom Job End 
     2988 
    28122989        )       //No natural SP regen 
    28132990                regen->flag &=~RGN_SP; 
     
    35783755        if(sc->data[SC_MADNESSCANCEL]) 
    35793756                batk += 100; 
     3757<<<<<<< .mine 
     3758        if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 
     3759        batk += batk * sc->data[SC_LUST]->val2/100; 
     3760        if(sc->data[SC_CURSEWEAKNESS]) // Warlock Curse of Weakness [Brain] 
     3761        batk -= batk * sc->data[SC_CURSEWEAKNESS]->val2/100; 
     3762        if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 
     3763        if(sc->data[SC_DECREPIFY]->val2>=2) 
     3764                batk -= batk * 25/100; 
     3765 
     3766======= 
    35803767        //Custom Jobs (blackmagic) 
    35813768        if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 
     
    35883775         
    35893776        //Custom Job End 
     3777>>>>>>> .r18 
    35903778        return (unsigned short)cap_value(batk,0,USHRT_MAX); 
    35913779} 
     
    36303818        if(sc->data[SC_STRIPWEAPON]) 
    36313819                watk -= watk * sc->data[SC_STRIPWEAPON]->val2/100; 
     3820<<<<<<< .mine 
     3821        if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 
     3822        watk += watk * sc->data[SC_LUST]->val2/100; 
     3823        if(sc->data[SC_REQUIEM]){       //Necro Requiem [Brain] 
     3824        if(sc->data[SC_REQUIEM]->val2) 
     3825                watk += sc->data[SC_REQUIEM]->val2*10; 
     3826        if(sc->data[SC_REQUIEM]->val3) 
     3827                watk -= sc->data[SC_REQUIEM]->val3*10; 
     3828        } 
     3829        if(sc->data[SC_CURSEWEAKNESS]) // Warlock Curse of Weakness [Brain] 
     3830        watk -= watk * sc->data[SC_CURSEWEAKNESS]->val2/100; 
     3831        if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 
     3832        if(sc->data[SC_DECREPIFY]->val2>=2) 
     3833                watk -= watk * 25/100; 
     3834======= 
    36323835        //Custom Jobs (blackmagic) 
    36333836        if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 
     
    36453848                        watk -= watk * 25/100; 
    36463849        //Custom Job End 
     3850>>>>>>> .r18 
     3851 
    36473852 
    36483853        return (unsigned short)cap_value(watk,0,USHRT_MAX); 
     
    36643869        if(sc->data[SC_INCMATKRATE]) 
    36653870                matk += matk * sc->data[SC_INCMATKRATE]->val1/100; 
     3871<<<<<<< .mine 
     3872        if(sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 
     3873        matk += matk * sc->data[SC_OVERWHELMING]->val2/100; 
     3874======= 
    36663875        //Custom Jobs (blackmagic) 
    36673876        if(sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 
    36683877                matk += matk * sc->data[SC_OVERWHELMING]->val2/100; 
    36693878        //Custom Job End 
     3879>>>>>>> .r18 
     3880 
    36703881 
    36713882        return (unsigned short)cap_value(matk,0,USHRT_MAX); 
     
    37153926        if(sc->data[SC_INCREASING]) 
    37163927                hit += 20; // RockmanEXE; changed based on updated [Reddozen] 
     3928<<<<<<< .mine 
     3929        if(sc->data[SC_DARKMOON]){      //Necro Dark Moon [Brain] 
     3930        if(sc->data[SC_DARKMOON]->val2) 
     3931                hit += sc->data[SC_DARKMOON]->val2; 
     3932        if(sc->data[SC_DARKMOON]->val3) 
     3933                hit -= sc->data[SC_DARKMOON]->val3; 
     3934======= 
    37173935        //Custom Jobs (blackmagic) 
    37183936        if(sc->data[SC_DARKMOON]){      //Necro Dark Moon [Brain] 
     
    37213939                if(sc->data[SC_DARKMOON]->val3) 
    37223940                        hit -= sc->data[SC_DARKMOON]->val3; 
    3723         } 
    3724         //Custom Job End 
     3941>>>>>>> .r18 
     3942        } 
     3943 
    37253944         
    37263945        return (short)cap_value(hit,1,SHRT_MAX); 
     
    37633982        if(sc->data[SC_SPEED]) 
    37643983                flee += 10 + sc->data[SC_SPEED]->val1 * 10 ; 
     3984<<<<<<< .mine 
     3985        if(sc->data[SC_DARKMOON]){      //Necro Dark Moon [Brain] 
     3986        if(sc->data[SC_DARKMOON]->val2) 
     3987                flee += sc->data[SC_DARKMOON]->val2; 
     3988        if(sc->data[SC_DARKMOON]->val3) 
     3989                flee -= sc->data[SC_DARKMOON]->val3; 
     3990======= 
    37653991        //Custom Jobs (blackmagic) 
    37663992        if(sc->data[SC_DARKMOON]){      //Necro Dark Moon [Brain] 
     
    37693995                if(sc->data[SC_DARKMOON]->val3) 
    37703996                        flee -= sc->data[SC_DARKMOON]->val3; 
    3771         } 
    3772         //Custom Job End 
     3997>>>>>>> .r18 
     3998        } 
     3999 
    37734000 
    37744001        return (short)cap_value(flee,1,SHRT_MAX); 
     
    38294056        if (sc->data[SC_FLING]) 
    38304057                def -= def * (sc->data[SC_FLING]->val2)/100; 
     4058<<<<<<< .mine 
     4059        if(sc->data[SC_SUFFER]) // Necro Power Word: Suffer [Brain] 
     4060        def <<=1; // -25% def 
     4061        if (sc->data[SC_CURSEEXHAUST]) // Warlock Curse of Exhaustion [Brain] 
     4062        def -= sc->data[SC_CURSEEXHAUST]->val2; 
     4063        if (sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 
     4064         def += sc->data[SC_OVERWHELMING]->val1; 
     4065======= 
    38314066        //Custom Jobs (blackmagic) 
    38324067        if(sc->data[SC_SUFFER]) // Necro Power Word: Suffer [Brain] 
     
    38374072                def += sc->data[SC_OVERWHELMING]->val1; 
    38384073        //Custom Job End 
     4074>>>>>>> .r18 
     4075 
    38394076 
    38404077        return (signed char)cap_value(def,CHAR_MIN,CHAR_MAX); 
     
    38714108        if(sc->data[SC_FLING]) 
    38724109                def2 -= def2 * (sc->data[SC_FLING]->val3)/100; 
    3873  
     4110        if(sc->data[SC_SUFFER]) // Necro Power Word: Suffer [Brain] 
     4111        def2 -= def2 * 25/100; // -25% def 
     4112        if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 
     4113        if(sc->data[SC_DECREPIFY]->val2>=4) 
     4114                def2 -= def2 * 25/100; 
     4115 
     4116<<<<<<< .mine 
     4117======= 
    38744118        //Custom Jobs (blackmagic) 
    38754119        if(sc->data[SC_SUFFER]) // Necro Power Word: Suffer [Brain] 
     
    38794123                        def2 -= def2 * 25/100; 
    38804124        //Custom Job End 
     4125>>>>>>> .r18 
    38814126 
    38824127        return (short)cap_value(def2,1,SHRT_MAX); 
     
    39064151        if(sc->data[SC_CONCENTRATION]) 
    39074152                mdef += 1; //Skill info says it adds a fixed 1 Mdef point. 
     4153<<<<<<< .mine 
     4154        if(sc->data[SC_AGONY])   // Warlock Power Word: Agony [Brain] 
     4155        mdef -= 25*mdef/100; // -25% mdef 
     4156        if (sc->data[SC_CURSEEXHAUST]) // Warlock Curse of Exhaustion [Brain] 
     4157        mdef -= sc->data[SC_CURSEEXHAUST]->val2; 
     4158        if (sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 
     4159         mdef += sc->data[SC_OVERWHELMING]->val1; 
     4160======= 
    39084161        //Custom Jobs (blackmagic) 
    39094162        if(sc->data[SC_AGONY])   // Warlock Power Word: Agony [Brain] 
     
    39144167                mdef += sc->data[SC_OVERWHELMING]->val1; 
    39154168        //Custom Job End 
     4169>>>>>>> .r18 
     4170 
    39164171 
    39174172        return (signed char)cap_value(mdef,CHAR_MIN,CHAR_MAX); 
     
    39274182        if(sc->data[SC_MINDBREAKER]) 
    39284183                mdef2 -= mdef2 * sc->data[SC_MINDBREAKER]->val3/100; 
     4184<<<<<<< .mine 
     4185        if(sc->data[SC_AGONY])   // Warlock Power Word: Agony [Brain] 
     4186        mdef2 -= mdef2 * 25/100; // -25% mdef 
     4187        if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 
     4188        if(sc->data[SC_DECREPIFY]->val2>=5) 
     4189                mdef2 -= mdef2 * 25/100; 
     4190======= 
    39294191        //Custom Jobs (blackmagic) 
    39304192        if(sc->data[SC_AGONY])   // Warlock Power Word: Agony [Brain] 
     
    39344196                        mdef2 -= mdef2 * 25/100; 
    39354197        //Custom Job End 
     4198>>>>>>> .r18 
     4199 
    39364200 
    39374201        return (short)cap_value(mdef2,1,SHRT_MAX); 
     
    39874251                        else if(sc->data[SC_WINDWALK]) 
    39884252                                new_speed -= new_speed * sc->data[SC_WINDWALK]->val3/100; 
     4253<<<<<<< .mine 
     4254                else if(sc->data[SC_FEAR]) //Fear Status by [Brainstorm] 
     4255                new_speed -= new_speed * 25/100; 
     4256 
     4257======= 
    39894258                        //Custom Jobs (blackmagic) 
    39904259                        else if(sc->data[SC_FEAR]) //Fear Status by [Brainstorm] 
    39914260                                new_speed -= new_speed * 25/100; 
    39924261                        //Custom Job End 
     4262>>>>>>> .r18 
    39934263                } 
    39944264 
     
    40344304        if(sc->data[SC_SLOWDOWN]) 
    40354305                speed = speed * 100/75; 
     4306<<<<<<< .mine 
     4307        if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 
     4308        speed = speed * 100/75; //-25% walkspeed 
     4309 
     4310======= 
    40364311        //Custom Jobs (blackmagic) 
    40374312        if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 
    40384313                speed = speed * 100/75; //-25% walkspeed 
    40394314        //Custom Job End 
     4315>>>>>>> .r18 
    40404316         
    40414317        return (short)cap_value(speed,10,USHRT_MAX); 
     
    41084384                else if(sc->data[SC_MADNESSCANCEL]) 
    41094385                        aspd_rate -= 200; 
     4386<<<<<<< .mine 
     4387        else if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 
     4388                aspd_rate -= sc->data[SC_LUST]->val2*10; 
     4389 
     4390======= 
    41104391                //Custom Jobs (blackmagic) 
    41114392                else if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 
    41124393                        aspd_rate -= sc->data[SC_LUST]->val2*10; 
    41134394                //Custom Job End 
     4395>>>>>>> .r18 
    41144396        } 
    41154397 
     
    42054487        if(sc->data[SC_ELEMENTALCHANGE]) 
    42064488                return sc->data[SC_ELEMENTALCHANGE]->val2; 
     4489<<<<<<< .mine 
     4490        if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain] 
     4491        return ELE_UNDEAD; 
     4492        if( sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 
     4493        return ELE_DARK; 
     4494 
     4495======= 
    42074496        //Custom Jobs (blackmagic) 
    42084497        if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain] 
     
    42114500                return ELE_DARK; 
    42124501        //Custom Job End 
     4502>>>>>>> .r18 
    42134503        return (unsigned char)cap_value(element,0,UCHAR_MAX); 
    42144504} 
     
    42294519        if(sc->data[SC_ELEMENTALCHANGE]) 
    42304520                return sc->data[SC_ELEMENTALCHANGE]->val1; 
     4521<<<<<<< .mine 
     4522        if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain] 
     4523        return 1; 
     4524        if( sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 
     4525        return 1; 
     4526======= 
    42314527        //Custom Jobs (blackmagic) 
    42324528        if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain] 
     
    42354531                return 1; 
    42364532        //Custom Job End 
     4533>>>>>>> .r18 
     4534 
    42374535 
    42384536        return (unsigned char)cap_value(lv,1,4); 
     
    49725270        case SC_CARTBOOST: 
    49735271        case SC_ASSNCROS: 
    4974         //Custom Jobs (blackmagic) 
    49755272        case SC_LUST: // Adept Blood Lust [Brain] 
    4976         //Custom Job End 
     5273 
    49775274                if (sc->data[SC_QUAGMIRE]) 
    49785275                        return 0; 
     
    50925389                        case SC_RICHMANKIM: 
    50935390                        case SC_ROKISWEIL: 
     5391                //New status [Brainstorm] 
     5392                case SC_FEAR: 
     5393                case SC_DECREPIFY: 
     5394                case SC_DARKMOON: 
     5395                case SC_REQUIEM: 
     5396                case SC_CURSETONGUES: 
     5397                case SC_CURSEWEAKNESS: 
     5398                case SC_CURSEEXHAUST: 
     5399 
    50945400                        case SC_FOGWALL: 
     5401<<<<<<< .mine 
     5402======= 
    50955403                        //Custom Jobs (blackmagic) 
    50965404                        //New status [Brainstorm] 
     
    51035411                        case SC_CURSEEXHAUST: 
    51045412                        //Custom Job End 
     5413>>>>>>> .r18 
    51055414                                return 0; 
    51065415                } 
     
    51185427                        if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE) 
    51195428                                status_change_end(bl,SC_STONE,-1); 
     5429<<<<<<< .mine 
     5430                // Warlock Curses are canceled by blessing [Brain] 
     5431                if (sc->data[SC_CURSEWEAKNESS]) 
     5432                status_change_end(bl,SC_CURSEWEAKNESS,-1); 
     5433                if (sc->data[SC_CURSETONGUES]) 
     5434                status_change_end(bl,SC_CURSETONGUES,-1); 
     5435                if (sc->data[SC_CURSEEXHAUST]) 
     5436                status_change_end(bl,SC_CURSEEXHAUST,-1); 
     5437                if (sc->data[SC_DOOM]) // This skill would be way funnier if we could igore this concept, no? 
     5438                status_change_end(bl,SC_DOOM,-1);//But then people would abuse on WoEs 
     5439 
     5440======= 
    51205441                        //Custom Jobs (blackmagic) 
    51215442                        // Warlock Curses are canceled by blessing [Brain] 
     
    51295450                                status_change_end(bl,SC_DOOM,-1);//But then people would abuse on WoEs 
    51305451                        //Custom Job End 
    5131                 } 
    5132                 break; 
     5452>>>>>>> .r18 
     5453                } 
     5454                break; 
     5455<<<<<<< .mine 
     5456        case SC_CURSEWEAKNESS: // Warlock Curse of Weakness removes Impositio Manus [Brain] 
     5457        if (sc->data[SC_IMPOSITIO]) 
     5458                status_change_end(bl,SC_IMPOSITIO,-1); 
     5459        if (sc->data[SC_BLESSING]) //The opposite is also valid, curses cancel blessing [Brain] 
     5460                status_change_end(bl,SC_BLESSING,-1); 
     5461        break; 
     5462        case SC_CURSETONGUES: // Warlock Curse of Tongues removes Suffragium [Brain] 
     5463        if (sc->data[SC_SUFFRAGIUM]) 
     5464                status_change_end(bl,SC_SUFFRAGIUM,-1); 
     5465        if (sc->data[SC_BLESSING]) 
     5466                status_change_end(bl,SC_BLESSING,-1); 
     5467        break; 
     5468        case SC_CURSEEXHAUST: // Warlock Curse of Exhaustion removes angelus [Brain] 
     5469        if (sc->data[SC_ANGELUS]) 
     5470                status_change_end(bl,SC_ANGELUS,-1); 
     5471        case SC_DOOM: 
     5472        if (sc->data[SC_BLESSING]) 
     5473                status_change_end(bl,SC_BLESSING,-1); 
     5474        break; 
     5475        case SC_IMPOSITIO: // Impositio Manus removes Curse of Weakness [Brain] 
     5476        if (sc->data[SC_CURSEWEAKNESS]) 
     5477                status_change_end(bl,SC_CURSEWEAKNESS,-1); 
     5478        break; 
     5479        case SC_SUFFRAGIUM: // Suffragium removes Curse of Tongues [Brain] 
     5480        if (sc->data[SC_CURSETONGUES]) 
     5481                status_change_end(bl,SC_CURSETONGUES,-1); 
     5482        break; 
     5483        case SC_ANGELUS: // Angelus removes Curse of Exhaustion [Brain] 
     5484        if (sc->data[SC_CURSEEXHAUST]) 
     5485                status_change_end(bl,SC_CURSEEXHAUST,-1); 
     5486        break; 
     5487 
     5488======= 
    51335489                //Custom Jobs (blackmagic) 
    51345490        case SC_CURSEWEAKNESS: // Warlock Curse of Weakness removes Impositio Manus [Brain] 
     
    51645520                break; 
    51655521                //Custom Job End 
     5522>>>>>>> .r18 
    51665523        case SC_INCREASEAGI: 
    51675524                status_change_end(bl,SC_DECREASEAGI,-1); 
     
    51825539                status_change_end(bl,SC_TWOHANDQUICKEN,-1); 
    51835540                status_change_end(bl,SC_ONEHAND,-1); 
     5541<<<<<<< .mine 
     5542                if(sc->data[SC_LUST])   // Adept Blood Lust [Brain] 
     5543======= 
    51845544                //Custom Jobs (blackmagic) 
    51855545                if(sc->data[SC_LUST])   // Adept Blood Lust [Brain] 
     5546>>>>>>> .r18 
    51865547                status_change_end(bl,SC_LUST,-1); 
    5187                 //Custom Job End 
     5548 
    51885549                break; 
    51895550        case SC_ONEHAND: 
     
    52445605                status_change_end(bl,SC_MADNESSCANCEL,-1); 
    52455606                break; 
     5607<<<<<<< .mine 
     5608        case SC_FREEZE: //Frozen status ends immolating AND searing status [Brain] 
     5609        if(sc->data[SC_IMMOLATE]) 
     5610                status_change_end(bl,SC_IMMOLATE,-1); 
     5611        case SC_IMMOLATE: // Warlock Immolate [Brain] 
     5612        if(sc->data[SC_SEARING]) //Immolating status ends searing status 
     5613                status_change_end(bl,SC_SEARING,-1); 
     5614        break; 
     5615 
     5616======= 
    52465617                //Custom Jobs (blackmagic) 
    52475618        case SC_FREEZE: //Frozen status ends immolating AND searing status [Brain] 
     
    52535624                break; 
    52545625                //Custom Job End 
     5626>>>>>>> .r18 
    52555627        case SC_MADNESSCANCEL: 
    52565628                status_change_end(bl,SC_ADJUSTMENT,-1); 
     
    52845656                        case SC_SILENCE: 
    52855657                        case SC_CONFUSION: 
    5286                                 //Custom Jobs (blackmagic) 
    52875658                        case SC_FEAR: //Fear Status by [Brainstorm] 
    5288                                 //Custom Job End 
    52895659                        case SC_BLIND: 
    52905660                        case SC_BLEEDING: 
     
    55965966                        clif_emotion(bl,1); 
    55975967                        break; 
     5968<<<<<<< .mine 
     5969        case SC_FEAR: //Fear Status by [Brainstorm] 
     5970                clif_emotion(bl,16); // e_wah 
     5971                if(sd) tick /= 2; 
     5972                break; 
     5973 
     5974======= 
    55985975                        //Custom Jobs (blackmagic) 
    55995976                case SC_FEAR: //Fear Status by [Brainstorm] 
     
    56025979                        break; 
    56035980                        //Custom Job End 
     5981>>>>>>> .r18 
    56045982                case SC_BLEEDING: 
    56055983                        val4 = tick/10000; 
     
    59796357                        break; 
    59806358 
     6359<<<<<<< .mine 
     6360        case SC_ATFIELD: // AT-Field [Brainstorm] 
     6361                val2 = 100; // 100% Block chance 
     6362                val3 = 100; // Dodge 100 attacks total. 
     6363                val4 = tick/1000; 
     6364                tick = 1000; 
     6365                break; 
     6366======= 
    59816367                        //Custom Jobs (blackmagic) 
    59826368                case SC_ATFIELD: // AT-Field [Brainstorm] 
     
    59876373                        break; 
    59886374                        //Custom Job End 
     6375>>>>>>> .r18 
     6376 
    59896377 
    59906378                case SC_COMBO: 
     
    60356423                                val2 = 0; //0 -> Half stat. 
    60366424                        break; 
     6425<<<<<<< .mine 
     6426        case SC_REQUIEM: //Necro Requiem and Dark Moon [Brain] 
     6427        case SC_DARKMOON: 
     6428                if (undead_flag || status->race==RC_UNDEAD || status->race==RC_DEMON) 
     6429                val2 = val1; //Demon and Undead get buffed 
     6430                else if(status->race==RC_FORMLESS || status->def_ele==ELE_GHOST || bl->type == BL_PC) 
     6431                { 
     6432                val1 = 0; //No status change for Formless and Ghosts, and non-undead players 
     6433                tick = 0; //Cancel status to not show requiem icon without a reason 
     6434                } 
     6435                else 
     6436                val3 = val1; //Everything else (living) get negative status (requiem only) 
     6437======= 
    60376438                        //Custom Jobs (blackmagic) 
    60386439                case SC_REQUIEM: //Necro Requiem and Dark Moon [Brain] 
     
    60506451                case SC_DECREPIFY: //Necro Decrepify [Brain] 
    60516452                        val2 = val1; 
    6052                 break; 
    6053                         //Custom Job End 
     6453>>>>>>> .r18 
     6454                break; 
     6455        case SC_DECREPIFY: //Necro Decrepify [Brain] 
     6456                val2 = val1; 
     6457        break; 
     6458 
    60546459                case SC_TRICKDEAD: 
    60556460                        if (vd) vd->dead_sit = 1; 
     
    60926497                        val2 = 5*val1; //watk increase 
    60936498                        break; 
     6499<<<<<<< .mine 
     6500        case SC_CURSEWEAKNESS: // Warlock Curse of Weakness [Brain] 
     6501                val2 = 5*val1; //batk/watk decrease 
     6502                break; 
     6503        case SC_CURSEEXHAUST: // Warlock Curse of Exhaustion [Brain] 
     6504                val2 = 2*val1; //def/mdef decrease 
     6505                break; 
     6506        case SC_CURSETONGUES: // Warlock Curse of Tongues [Brain] 
     6507                val2 = 10*val1; //casttime increase 
     6508                break; 
     6509 
     6510======= 
    60946511                        //Custom Jobs (blackmagic) 
    60956512                case SC_CURSEWEAKNESS: // Warlock Curse of Weakness [Brain] 
     
    61036520                        break; 
    61046521                        //Custom Job End 
     6522>>>>>>> .r18 
    61056523                case SC_MELTDOWN: 
    61066524                        val2 = 100*val1; //Chance to break weapon 
     
    61586576                        val3 = 5+5*val1; //bAtk/wAtk rate change 
    61596577                        break; 
     6578<<<<<<< .mine 
     6579                case SC_LUST: // Adept Blood Lust [Brain] 
     6580                val2 = 5+3*val1; //Aspd/bAtk/wAtk change 
     6581                val3 = tick>0?tick:1000; //Interval at which HP is drained. 
     6582                break; 
     6583        case SC_DEATHPACT: // Necro Death Pact [Brain] 
     6584                val2 = 5*val1; //Neutral property resistance 
     6585                val3 = tick>0?tick:10000; //Interval at which HP is drained. 
     6586                break; 
     6587        case SC_OVERWHELMING: // Warlock Overwhelming Evil [Brain] 
     6588                val2 = 2*val1; //matk bonus 
     6589                val3 = tick>0?tick:1000; //Interval at which SP is drained. 
     6590                break; 
     6591 
     6592======= 
    61606593                        //Custom Jobs (blackmagic) 
    61616594                case SC_LUST: // Adept Blood Lust [Brain] 
     
    61726605                        break; 
    61736606                        //Custom Job End 
     6607>>>>>>> .r18 
    61746608                case SC_MINDBREAKER: 
    61756609                        val2 = 20*val1; //matk increase. 
     
    63556789                                unit_skillcastcancel(bl, 0); 
    63566790                break; 
     6791<<<<<<< .mine 
     6792 
     6793        case SC_FEAR: //Fear Status by [Brainstorm] 
     6794                unit_stop_attack(bl); 
     6795        break; 
     6796 
     6797 
     6798======= 
    63576799                //Custom Jobs (blackmagic) 
    63586800                case SC_FEAR: //Fear Status by [Brainstorm] 
     
    63606802                break; 
    63616803                //Custom Job End 
     6804>>>>>>> .r18 
    63626805        } 
    63636806 
     
    67947237                                clif_status_change(bl,SI_MOONLIT,0); 
    67957238 
    6796                         status_change_end(bl,SC_LONGING,-1);                             
     7239                        status_change_end(bl,SC_LONGING,-1); 
    67977240                        break; 
    67987241                case SC_NOCHAT: 
     
    68057248                        } 
    68067249                        break; 
     7250<<<<<<< .mine 
     7251        case SC_SPLASHER: 
     7252        case SC_DOOM: // Warlock Curse of Doom [Brain] 
     7253         
     7254======= 
    68077255//Custom Jobs (blackmagic) 
    68087256                case SC_SPLASHER: 
    68097257                case SC_DOOM: // Warlock Curse of Doom [Brain] 
    68107258//Custom Job End 
     7259>>>>>>> .r18 
    68117260                        { 
    68127261                                struct block_list *src=map_id2bl(sce->val3); 
     
    71767625                sc_timer_next(sce->val2+tick, status_change_timer, bl->id, data); 
    71777626                return 0; 
     7627<<<<<<< .mine 
     7628======= 
    71787629                //Custom Jobs (blackmagic) 
    71797630        case SC_LUST:   // Adept Blood Lust [Brain] 
     
    71937644                return 0; 
    71947645                //Custom Job End 
     7646>>>>>>> .r18 
     7647 
     7648        case SC_LUST:   // Adept Blood Lust [Brain] 
     7649        if(!status_charge(bl, status->max_hp/100, 0)) 
     7650                break; //Not enough HP to continue. 
     7651        sc_timer_next(sce->val3+tick, status_change_timer, bl->id, data); 
     7652        return 0; 
     7653        case SC_DEATHPACT:      // Necro Death Pact [Brain] 
     7654         // Drains 1 HP every second (status wont kill, but dying will cancel it) 
     7655        status_charge(bl, 1, 0); 
     7656        sc_timer_next(sce->val3+tick, status_change_timer, bl->id, data); 
     7657        return 0; 
     7658        case SC_OVERWHELMING:   // Warlock Overwhelming Evil [Brain] 
     7659        if(!status_charge(bl, 0, status->max_sp/100)) 
     7660                break; //Not enough SP to continue. 
     7661        sc_timer_next(sce->val3+tick, status_change_timer, bl->id, data); 
     7662        return 0; 
     7663 
    71957664 
    71967665        case SC_CHASEWALK: 
     
    74277896                } 
    74287897                break; 
     7898<<<<<<< .mine 
     7899        case SC_DOOM: // Warlock Curse of Doom [Brain] 
     7900        if((sce->val4 -= 500) > 0) { 
     7901                sc_timer_next(500 + tick, status_change_timer, bl->id, data); 
     7902                return 0; 
     7903        } 
     7904        break; 
     7905======= 
    74297906                //Custom Jobs (blackmagic) 
    74307907        case SC_DOOM: // Warlock Curse of Doom [Brain] 
     
    74357912                break; 
    74367913                //Custom Job End 
     7914>>>>>>> .r18 
    74377915 
    74387916        case SC_MARIONETTE: 
     
    76028080                        case SC_WATKFOOD: 
    76038081                        case SC_MATKFOOD: 
    7604                                 //Custom Jobs (blackmagic) 
    76058082                        case SC_DOOM: // Warlock Curse of Doom [Brain] 
    7606                                 //Custom Job End 
     8083 
    76078084                                continue; 
    76088085                                 
  • src/map/status.h

    r13 r19  
    294294        SC_SEVENWIND, 
    295295        SC_DEF_RATE, 
     296        SC_DECREPIFY, // New status [brain] 
     297        SC_LUST, 
     298        SC_DARKMOON, 
     299        SC_REQUIEM, 
     300        SC_DEATHPACT, 
     301        SC_ATFIELD, 
     302        SC_SUFFER, 
     303        SC_SEARING, 
     304        SC_IMMOLATE, 
     305        SC_AGONY, 
     306        SC_CURSETONGUES, 
     307        SC_DOOM, 
     308        SC_CURSEWEAKNESS, 
     309        SC_CURSEEXHAUST, 
     310        SC_OVERWHELMING, 
     311        SC_FEAR, 
    296312        SC_SPREGEN, 
    297313        SC_WALKSPEED, 
     314<<<<<<< .mine 
     315======= 
    298316        //Custom Jobs (blackmagic) 
    299317        SC_DECREPIFY, // New status [brain] 
     
    314332        SC_FEAR, 
    315333//Custom Job End 
     334>>>>>>> .r18 
    316335        SC_MAX, //Automatically updated max, used in for's to check we are within bounds. 
    317336} sc_type; 
  • src/map/unit.c

    r13 r19  
    379379                unit_escape(bl, tbl, 15); 
    380380        //Custom Job End 
     381 
     382        if (sc && sc->data[SC_FEAR]) //Flee from my target [Brainstorm] 
     383        unit_escape(bl, tbl, 15); 
     384 
    381385 
    382386        if(ud->walktimer != -1) {