Changeset 10 for src/map/status.c

Show
Ignore:
Timestamp:
07/01/08 02:49:27 (17 years ago)
Author:
jinshiro
Message:

Finished Draft for Adept, Necro and Warlock.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/map/status.c

    r1 r10  
    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 
    132135        set_sc( NPC_BLINDATTACK   , SC_BLIND     , SI_BLANK    , SCB_HIT|SCB_FLEE ); 
    133136        set_sc( LK_HEADCRUSH      , SC_BLEEDING  , SI_BLEEDING , SCB_REGEN ); 
     
    407410        set_sc( GD_BATTLEORDER       , SC_BATTLEORDERS    , SI_BLANK           , SCB_STR|SCB_INT|SCB_DEX ); 
    408411        set_sc( GD_REGENERATION      , SC_REGENERATION    , SI_BLANK           , SCB_REGEN ); 
     412        //Custom Jobs (blackmagic)       
     413        // Custom Jobs Skills [Brain] 
     414        add_sc( AD_PWBLIND           , SC_BLIND); 
     415        add_sc( AD_PWFEAR            , SC_FEAR); 
     416        set_sc( AD_LUST              , SC_LUST            , SI_JOINTBEAT       , SCB_ASPD|SCB_BATK|SCB_WATK|SCB_REGEN); 
     417  
     418        set_sc( NC_DECREPIFY         , SC_DECREPIFY       , SI_BLEEDING        , SCB_SPEED|SCB_BATK|SCB_WATK|SCB_DEF2|SCB_MDEF2); 
     419        set_sc( NC_DARKMOON          , SC_DARKMOON        , SI_MOON_COMFORT    , SCB_FLEE|SCB_HIT); 
     420        add_sc( NC_DARKMOON          , SC_BLIND); 
     421        set_sc( NC_REQUIEM           , SC_REQUIEM         , SI_KAIZEL          , SCB_BATK|SCB_WATK); 
     422        add_sc( NC_GHOULTOUCH        , SC_POISON); 
     423        set_sc( NC_PWSUFFER          , SC_SUFFER          , SI_BLANK           , SCB_DEF|SCB_DEF2); 
     424        set_sc( NC_DEATHPACT         , SC_DEATHPACT       , SI_BIOMOBTRICKDEAD , SCB_DEF_ELE|SCB_REGEN); 
     425         
     426        set_sc( WL_SEARING           , SC_SEARING         , SI_BLANK           , SCB_NONE); 
     427        set_sc( WL_IMMOLATE          , SC_IMMOLATE        , SI_BLANK           , SCB_NONE); 
     428        add_sc( WL_SHADOWBURN        , SC_STUN); 
     429        set_sc( WL_PWAGONY           , SC_AGONY           , SI_BLANK           , SCB_MDEF|SCB_MDEF2); 
     430        set_sc( WL_CURSETONGUES      , SC_CURSETONGUES    , SI_SLOWCAST        , SCB_NONE); 
     431        set_sc( WL_CURSEDOOM         , SC_DOOM            , SI_BLANK           , SCB_NONE); 
     432        set_sc( WL_CURSEWEAKNESS     , SC_CURSEWEAKNESS   , SI_STRIPWEAPON     , SCB_BATK|SCB_WATK); 
     433        set_sc( WL_CURSEEXHAUST      , SC_CURSEEXHAUST    , SI_CRITICALWOUND   , SCB_DEF|SCB_MDEF); 
     434        add_sc( WL_HOWLOFTERROR      , SC_FEAR); 
     435        set_sc( WL_HOWLOFPAIN        , SC_PROVOKE         , SI_PROVOKE         , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK); 
     436        set_sc( WL_OVERWHELMING      , SC_OVERWHELMING    , SI_ENERGYCOAT      , SCB_DEF|SCB_MDEF|SCB_MATK|SCB_REGEN|SCB_DEF_ELE); 
     437         
     438        set_sc( ALL_ATFIELD          , SC_ATFIELD         , SI_UTSUSEMI        ,SCB_NONE); 
     439        //Custom Job End 
    409440 
    410441        // Storing the target job rather than simply SC_SPIRIT simplifies code later on. 
     
    650681                        status_change_end(target,SC_CLOAKING,-1); 
    651682                        status_change_end(target,SC_CHASEWALK,-1); 
     683                        status_change_end(target,SC_FEAR, -1);//Custom Jobs (blackmagic) 
    652684                        if ((sce=sc->data[SC_ENDURE]) && !sce->val4) { 
    653685                                //Endure count is only reduced by non-players on non-gvg maps. 
     
    13401372        if (md->master_id && md->special_state.ai>1) 
    13411373                flag|=16; 
     1374 
     1375        //Custom Jobs (blackmagic)               
     1376        if (md->master_id && md->special_state.ai) 
     1377                flag|=32; //Adept/Necro/Warlock Summon Stats Bonus [Brainstorm] 
     1378        //Custom Job End 
    13421379 
    13431380        if (!flag) 
     
    14581495        } 
    14591496 
     1497        //Custom Jobs (blackmagic) 
     1498        //Summon Bonus from Skills [Brainstorm] 
     1499        if(flag&32) 
     1500        { 
     1501                mbl = map_id2bl(md->master_id); 
     1502                if(mbl) 
     1503                { 
     1504                        struct unit_data *ud = unit_bl2ud(mbl); 
     1505                        //Remove special AI when this is used by regular mobs. 
     1506                        if (mbl->type == BL_MOB && !((TBL_MOB*)mbl)->special_state.ai) 
     1507                                md->special_state.ai = 0; 
     1508                         
     1509                        int master_lv = status_get_lv(mbl); 
     1510                        int skill_mastery = pc_checkskill((TBL_PC*)mbl,AD_SUMMONS); 
     1511                        int undead_mastery = pc_checkskill((TBL_PC*)mbl,NC_UNDEAD); 
     1512         
     1513                        if (ud->skillid == AD_FAMILIAR) 
     1514                        { 
     1515                                status->max_hp += (skill_mastery*10) + (master_lv*10); 
     1516                                status->str += (master_lv) + (skill_mastery); 
     1517                                status->dex += (master_lv) + (skill_mastery); 
     1518                                status->agi += (master_lv) + (skill_mastery); 
     1519                                status->int_ += (master_lv) + (skill_mastery); 
     1520                                status->vit += (master_lv) + (skill_mastery); 
     1521                                status->luk += (master_lv) + (skill_mastery); 
     1522                                status->rhw.atk += (skill_mastery*3) 
     1523                                        + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10)); 
     1524                                status->rhw.atk2 += (skill_mastery*3) 
     1525                                        + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10)); 
     1526                                status->speed -= skill_mastery; 
     1527                                status->def += (master_lv)/10 + (skill_mastery); 
     1528                                status->mdef += (master_lv)/10 + (skill_mastery); 
     1529                                //These are not automatically recalculated 
     1530                                status->hit += (master_lv*2) + (skill_mastery); 
     1531                                status->flee += (master_lv*2) + (skill_mastery); 
     1532                                status->def2 += (master_lv) + (skill_mastery); 
     1533                                status->mdef2 += (master_lv) + (skill_mastery); 
     1534                        }        
     1535                        else if(status->race==RC_UNDEAD) 
     1536                        { 
     1537                                status->max_hp += (undead_mastery*10) + (master_lv*2); 
     1538                                status->str += (undead_mastery*3) + (skill_mastery); 
     1539                                status->dex += (undead_mastery*3) + (skill_mastery); 
     1540                                status->agi += (undead_mastery*3) + (skill_mastery); 
     1541                                status->int_ += (undead_mastery*3) + (skill_mastery); 
     1542                                status->vit += (undead_mastery*3) + (skill_mastery); 
     1543                                status->luk += (undead_mastery*3) + (skill_mastery); 
     1544                                status->rhw.atk += (undead_mastery*3) + (skill_mastery*3) 
     1545                                        + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10)); 
     1546                                status->rhw.atk2 += (undead_mastery*3) + (skill_mastery*3) 
     1547                                        + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10)); 
     1548                                status->speed -= undead_mastery; 
     1549                                status->def += undead_mastery; 
     1550                                status->mdef += undead_mastery; 
     1551                                //These are not automatically recalculated 
     1552                                status->hit += (undead_mastery*3) + (skill_mastery); 
     1553                                status->flee += (undead_mastery*3) + (skill_mastery); 
     1554                                status->def2 += (undead_mastery*3) + (skill_mastery); 
     1555                                status->mdef2 += (undead_mastery*3) + (skill_mastery); 
     1556                        } 
     1557                } 
     1558                else ShowError("status_calc_mob: Monster summoned without a master at %s\n", map[md->bl.m].name); 
     1559        } 
     1560        //Custom Job End 
     1561 
    14601562        //Initial battle status 
    14611563        if (!first) 
     
    17051807        status->aspd_rate = 1000; 
    17061808        status->ele_lv = 1; 
    1707         status->race = RC_DEMIHUMAN; 
     1809        //Custom Jobs (blackmagic) 
     1810        status->race = RC_DEMIHUMAN;// This define players default race to DEMIHUMAN [Brain] 
     1811        if(pc_checkskill(sd,NC_PHYLACTERY)>0) status->def_ele = ELE_UNDEAD; //Phylactery turns you UNDEAD 1 instead of NEUTRAL 
     1812        //Custom Job End 
     1813 
    17081814 
    17091815        //zero up structures... 
     
    19962102                status->dex += skill; 
    19972103 
     2104        //Custom Jobs (blackmagic) 
     2105         
     2106        if((skill=pc_checkskill(sd,WL_DEMONOLOGY))>0) //Warlock Demonology [Brain] 
     2107                status->str += skill/2; //+1 str per 2 skill points 
     2108        //Custom Job End 
     2109 
    19982110        // Bonuses from cards and equipment as well as base stat, remember to avoid overflows. 
    19992111        i = status->str + sd->status.str + sd->param_bonus[0] + sd->param_equip[0]; 
     
    20332145                status->max_hp += skill*200; 
    20342146 
     2147        //Custom Jobs (blackmagic) 
     2148        if((skill=pc_checkskill(sd,AD_PROFANE))>0) // Adept Profane Soul [Brain] 
     2149                status->max_hp += status->max_hp * (skill*3)/100; 
     2150        //Custom Job End 
     2151 
    20352152        // Apply relative modifiers from equipment 
    20362153        if(sd->hprate < 0) 
     
    20612178        if((skill=pc_checkskill(sd,HW_SOULDRAIN))>0) 
    20622179                status->max_sp += status->max_sp * 2*skill/100; 
     2180 
     2181        //Custom Jobs (blackmagic) 
     2182        if((skill=pc_checkskill(sd,AD_PROFANE))>0) // Adept Profane Soul [Brain] 
     2183                status->max_sp += sd->status.max_sp * (skill*3)/100; 
     2184        //Custom Job End 
    20632185 
    20642186        // Apply relative modifiers from equipment 
     
    21552277        } 
    21562278 
     2279        //Custom Jobs (blackmagic) 
     2280        if((skill=pc_checkskill(sd,AD_FERVOR))>0) // Adept Unholy Fevor [Brain] 
     2281                status->hit += skill*2; 
     2282        //Custom Job End 
     2283 
    21572284// ----- FLEE CALCULATION ----- 
    21582285 
     
    21622289        if((skill=pc_checkskill(sd,MO_DODGE))>0) 
    21632290                status->flee += (skill*3)>>1; 
     2291 
     2292        //Custom Jobs (blackmagic) 
     2293        if((skill=pc_checkskill(sd,AD_FERVOR))>0) // Adept Unholy Fevor [Brain] 
     2294                status->flee += skill*2; 
     2295        //Custom Job End 
    21642296 
    21652297// ----- EQUIPMENT-DEF CALCULATION ----- 
     
    21722304                status->def = cap_value(i, CHAR_MIN, CHAR_MAX); 
    21732305        } 
    2174  
     2306        //Custom Jobs (blackmagic) 
     2307        // Absolute modifiers from passive skills 
     2308        if((skill=pc_checkskill(sd,AD_DARKFAITH))>0) // Adept Dark Faith [Brain] 
     2309                status->mdef += 1*skill; 
     2310        //Custom Job End 
    21752311        if (!battle_config.weapon_defense_type && status->def > battle_config.max_def) 
    21762312        { 
     
    22952431        } 
    22962432 
     2433 
     2434        //Custom Jobs (blackmagic) 
     2435        if((skill=pc_checkskill(sd,AD_DARKFAITH))>0) // Adept Dark Faith [Brain] 
     2436                sd->subele[ELE_DARK] += skill*5; 
     2437        if((skill=pc_checkskill(sd,WL_DEMONOLOGY))>0 ){ //Warlock Demonology [Brain] 
     2438                skill = skill*5; 
     2439                sd->right_weapon.addrace[RC_DEMON]+=skill; 
     2440                sd->magic_addrace[RC_DEMON]+=skill; 
     2441                sd->subrace[RC_DEMON]+=skill; 
     2442        } 
     2443        if((pc_checkskill(sd,NC_PHYLACTERY))>0){ // Necro Phylactery [Brain] 
     2444                sd->subele[ELE_NEUTRAL] += 10;  //And increases neutral resistance by 10% 
     2445        } 
     2446        //Custom Job End 
     2447 
    22972448        if(sc->count){ 
    22982449        if(sc->data[SC_CONCENTRATE]) 
     
    23172468                        sd->subrace[RC_DEMON] += sc->data[SC_PROVIDENCE]->val2; 
    23182469                } 
     2470 
     2471                //Custom Jobs (blackmagic) 
     2472                if(sd->sc.data[SC_DEATHPACT]) //Necro Death Pact [Brain] 
     2473                        sd->subele[ELE_NEUTRAL] += sd->sc.data[SC_DEATHPACT]->val2; 
     2474                //Custom Job End 
     2475 
    23192476                if(sc->data[SC_ARMOR_ELEMENT]) 
    23202477                {       //This status change should grant card-type elemental resist. 
     
    26382795                || sc->data[SC_TRICKDEAD] 
    26392796                || sc->data[SC_BLEEDING] 
     2797                //Custom Jobs (blackmagic) 
     2798                || sc->data[SC_LUST]            // Adept Blood Lust, stops hp regen [Brain] 
     2799                || sc->data[SC_DEATHPACT]       // Necro Death Pact 
     2800                //Custom Job End 
    26402801        )       //No regen 
    26412802                regen->flag = 0; 
     
    26462807                || (sc->data[SC_EXPLOSIONSPIRITS] 
    26472808                        && (!sc->data[SC_SPIRIT] || sc->data[SC_SPIRIT]->val2 != SL_MONK)) 
     2809//Custom Jobs (blackmagic) 
     2810                || sc->data[SC_OVERWHELMING]    // Warlock Overwhelming Evil, stops sp regen [Brain] 
     2811//Custom Job End 
    26482812        )       //No natural SP regen 
    26492813                regen->flag &=~RGN_SP; 
     
    34143578        if(sc->data[SC_MADNESSCANCEL]) 
    34153579                batk += 100; 
     3580        //Custom Jobs (blackmagic) 
     3581        if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 
     3582                batk += batk * sc->data[SC_LUST]->val2/100; 
     3583        if(sc->data[SC_CURSEWEAKNESS]) // Warlock Curse of Weakness [Brain] 
     3584                batk -= batk * sc->data[SC_CURSEWEAKNESS]->val2/100; 
     3585        if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 
     3586                if(sc->data[SC_DECREPIFY]->val2>=2) 
     3587                        batk -= batk * 25/100; 
     3588         
     3589        //Custom Job End 
    34163590        return (unsigned short)cap_value(batk,0,USHRT_MAX); 
    34173591} 
     
    34563630        if(sc->data[SC_STRIPWEAPON]) 
    34573631                watk -= watk * sc->data[SC_STRIPWEAPON]->val2/100; 
     3632        //Custom Jobs (blackmagic) 
     3633        if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 
     3634                watk += watk * sc->data[SC_LUST]->val2/100; 
     3635        if(sc->data[SC_REQUIEM]){       //Necro Requiem [Brain] 
     3636                if(sc->data[SC_REQUIEM]->val2) 
     3637                        watk += sc->data[SC_REQUIEM]->val2*10; 
     3638                if(sc->data[SC_REQUIEM]->val3) 
     3639                        watk -= sc->data[SC_REQUIEM]->val3*10; 
     3640        } 
     3641        if(sc->data[SC_CURSEWEAKNESS]) // Warlock Curse of Weakness [Brain] 
     3642                watk -= watk * sc->data[SC_CURSEWEAKNESS]->val2/100; 
     3643        if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 
     3644                if(sc->data[SC_DECREPIFY]->val2>=2) 
     3645                        watk -= watk * 25/100; 
     3646        //Custom Job End 
    34583647 
    34593648        return (unsigned short)cap_value(watk,0,USHRT_MAX); 
     
    34753664        if(sc->data[SC_INCMATKRATE]) 
    34763665                matk += matk * sc->data[SC_INCMATKRATE]->val1/100; 
     3666        //Custom Jobs (blackmagic) 
     3667        if(sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 
     3668                matk += matk * sc->data[SC_OVERWHELMING]->val2/100; 
     3669        //Custom Job End 
    34773670 
    34783671        return (unsigned short)cap_value(matk,0,USHRT_MAX); 
     
    35223715        if(sc->data[SC_INCREASING]) 
    35233716                hit += 20; // RockmanEXE; changed based on updated [Reddozen] 
     3717        //Custom Jobs (blackmagic) 
     3718        if(sc->data[SC_DARKMOON]){      //Necro Dark Moon [Brain] 
     3719                if(sc->data[SC_DARKMOON]->val2) 
     3720                        hit += sc->data[SC_DARKMOON]->val2; 
     3721                if(sc->data[SC_DARKMOON]->val3) 
     3722                        hit -= sc->data[SC_DARKMOON]->val3; 
     3723        } 
     3724        //Custom Job End 
    35243725         
    35253726        return (short)cap_value(hit,1,SHRT_MAX); 
     
    35623763        if(sc->data[SC_SPEED]) 
    35633764                flee += 10 + sc->data[SC_SPEED]->val1 * 10 ; 
     3765        //Custom Jobs (blackmagic) 
     3766        if(sc->data[SC_DARKMOON]){      //Necro Dark Moon [Brain] 
     3767                if(sc->data[SC_DARKMOON]->val2) 
     3768                        flee += sc->data[SC_DARKMOON]->val2; 
     3769                if(sc->data[SC_DARKMOON]->val3) 
     3770                        flee -= sc->data[SC_DARKMOON]->val3; 
     3771        } 
     3772        //Custom Job End 
    35643773 
    35653774        return (short)cap_value(flee,1,SHRT_MAX); 
     
    36203829        if (sc->data[SC_FLING]) 
    36213830                def -= def * (sc->data[SC_FLING]->val2)/100; 
     3831        //Custom Jobs (blackmagic) 
     3832        if(sc->data[SC_SUFFER]) // Necro Power Word: Suffer [Brain] 
     3833                def <<=1; // -25% def 
     3834        if (sc->data[SC_CURSEEXHAUST]) // Warlock Curse of Exhaustion [Brain] 
     3835                def -= sc->data[SC_CURSEEXHAUST]->val2; 
     3836        if (sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 
     3837                def += sc->data[SC_OVERWHELMING]->val1; 
     3838        //Custom Job End 
    36223839 
    36233840        return (signed char)cap_value(def,CHAR_MIN,CHAR_MAX); 
     
    36553872                def2 -= def2 * (sc->data[SC_FLING]->val3)/100; 
    36563873 
     3874        //Custom Jobs (blackmagic) 
     3875        if(sc->data[SC_SUFFER]) // Necro Power Word: Suffer [Brain] 
     3876                def2 -= def2 * 25/100; // -25% def 
     3877        if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 
     3878                if(sc->data[SC_DECREPIFY]->val2>=4) 
     3879                        def2 -= def2 * 25/100; 
     3880        //Custom Job End 
     3881 
    36573882        return (short)cap_value(def2,1,SHRT_MAX); 
    36583883} 
     
    36813906        if(sc->data[SC_CONCENTRATION]) 
    36823907                mdef += 1; //Skill info says it adds a fixed 1 Mdef point. 
     3908        //Custom Jobs (blackmagic) 
     3909        if(sc->data[SC_AGONY])   // Warlock Power Word: Agony [Brain] 
     3910                mdef -= 25*mdef/100; // -25% mdef 
     3911        if (sc->data[SC_CURSEEXHAUST]) // Warlock Curse of Exhaustion [Brain] 
     3912                mdef -= sc->data[SC_CURSEEXHAUST]->val2; 
     3913        if (sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 
     3914                mdef += sc->data[SC_OVERWHELMING]->val1; 
     3915        //Custom Job End 
    36833916 
    36843917        return (signed char)cap_value(mdef,CHAR_MIN,CHAR_MAX); 
     
    36943927        if(sc->data[SC_MINDBREAKER]) 
    36953928                mdef2 -= mdef2 * sc->data[SC_MINDBREAKER]->val3/100; 
     3929        //Custom Jobs (blackmagic) 
     3930        if(sc->data[SC_AGONY])   // Warlock Power Word: Agony [Brain] 
     3931                mdef2 -= mdef2 * 25/100; // -25% mdef 
     3932        if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 
     3933                if(sc->data[SC_DECREPIFY]->val2>=5) 
     3934                        mdef2 -= mdef2 * 25/100; 
     3935        //Custom Job End 
    36963936 
    36973937        return (short)cap_value(mdef2,1,SHRT_MAX); 
     
    37473987                        else if(sc->data[SC_WINDWALK]) 
    37483988                                new_speed -= new_speed * sc->data[SC_WINDWALK]->val3/100; 
     3989                        //Custom Jobs (blackmagic) 
     3990                        else if(sc->data[SC_FEAR]) //Fear Status by [Brainstorm] 
     3991                                new_speed -= new_speed * 25/100; 
     3992                        //Custom Job End 
    37493993                } 
    37503994 
     
    37904034        if(sc->data[SC_SLOWDOWN]) 
    37914035                speed = speed * 100/75; 
     4036        //Custom Jobs (blackmagic) 
     4037        if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 
     4038                speed = speed * 100/75; //-25% walkspeed 
     4039        //Custom Job End 
    37924040         
    37934041        return (short)cap_value(speed,10,USHRT_MAX); 
     
    38604108                else if(sc->data[SC_MADNESSCANCEL]) 
    38614109                        aspd_rate -= 200; 
     4110                //Custom Jobs (blackmagic) 
     4111                else if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 
     4112                        aspd_rate -= sc->data[SC_LUST]->val2*10; 
     4113                //Custom Job End 
    38624114        } 
    38634115 
     
    39534205        if(sc->data[SC_ELEMENTALCHANGE]) 
    39544206                return sc->data[SC_ELEMENTALCHANGE]->val2; 
     4207        //Custom Jobs (blackmagic) 
     4208        if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain] 
     4209                return ELE_UNDEAD; 
     4210        if( sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 
     4211                return ELE_DARK; 
     4212        //Custom Job End 
    39554213        return (unsigned char)cap_value(element,0,UCHAR_MAX); 
    39564214} 
     
    39714229        if(sc->data[SC_ELEMENTALCHANGE]) 
    39724230                return sc->data[SC_ELEMENTALCHANGE]->val1; 
     4231        //Custom Jobs (blackmagic) 
     4232        if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain] 
     4233                return 1; 
     4234        if( sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 
     4235                return 1; 
     4236        //Custom Job End 
    39734237 
    39744238        return (unsigned char)cap_value(lv,1,4); 
     
    47084972        case SC_CARTBOOST: 
    47094973        case SC_ASSNCROS: 
     4974        //Custom Jobs (blackmagic) 
     4975        case SC_LUST: // Adept Blood Lust [Brain] 
     4976        //Custom Job End 
    47104977                if (sc->data[SC_QUAGMIRE]) 
    47114978                        return 0; 
     
    48265093                        case SC_ROKISWEIL: 
    48275094                        case SC_FOGWALL: 
     5095                        //Custom Jobs (blackmagic) 
     5096                        //New status [Brainstorm] 
     5097                        case SC_FEAR: 
     5098                        case SC_DECREPIFY: 
     5099                        case SC_DARKMOON: 
     5100                        case SC_REQUIEM: 
     5101                        case SC_CURSETONGUES: 
     5102                        case SC_CURSEWEAKNESS: 
     5103                        case SC_CURSEEXHAUST: 
     5104                        //Custom Job End 
    48285105                                return 0; 
    48295106                } 
     
    48415118                        if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE) 
    48425119                                status_change_end(bl,SC_STONE,-1); 
    4843                 } 
    4844                 break; 
     5120                        //Custom Jobs (blackmagic) 
     5121                        // Warlock Curses are canceled by blessing [Brain] 
     5122                        if (sc->data[SC_CURSEWEAKNESS]) 
     5123                                status_change_end(bl,SC_CURSEWEAKNESS,-1); 
     5124                        if (sc->data[SC_CURSETONGUES]) 
     5125                                status_change_end(bl,SC_CURSETONGUES,-1); 
     5126                        if (sc->data[SC_CURSEEXHAUST]) 
     5127                                status_change_end(bl,SC_CURSEEXHAUST,-1); 
     5128                        if (sc->data[SC_DOOM]) // This skill would be way funnier if we could igore this concept, no? 
     5129                                status_change_end(bl,SC_DOOM,-1);//But then people would abuse on WoEs 
     5130                        //Custom Job End 
     5131                } 
     5132                break; 
     5133                //Custom Jobs (blackmagic) 
     5134        case SC_CURSEWEAKNESS: // Warlock Curse of Weakness removes Impositio Manus [Brain] 
     5135                if (sc->data[SC_IMPOSITIO]) 
     5136                        status_change_end(bl,SC_IMPOSITIO,-1); 
     5137                if (sc->data[SC_BLESSING]) //The opposite is also valid, curses cancel blessing [Brain] 
     5138                        status_change_end(bl,SC_BLESSING,-1); 
     5139                break; 
     5140        case SC_CURSETONGUES: // Warlock Curse of Tongues removes Suffragium [Brain] 
     5141                if (sc->data[SC_SUFFRAGIUM]) 
     5142                        status_change_end(bl,SC_SUFFRAGIUM,-1); 
     5143                if (sc->data[SC_BLESSING]) 
     5144                        status_change_end(bl,SC_BLESSING,-1); 
     5145                break; 
     5146        case SC_CURSEEXHAUST: // Warlock Curse of Exhaustion removes angelus [Brain] 
     5147                if (sc->data[SC_ANGELUS]) 
     5148                        status_change_end(bl,SC_ANGELUS,-1); 
     5149        case SC_DOOM: 
     5150                if (sc->data[SC_BLESSING]) 
     5151                        status_change_end(bl,SC_BLESSING,-1); 
     5152                break; 
     5153        case SC_IMPOSITIO: // Impositio Manus removes Curse of Weakness [Brain] 
     5154                if (sc->data[SC_CURSEWEAKNESS]) 
     5155                        status_change_end(bl,SC_CURSEWEAKNESS,-1); 
     5156                break; 
     5157        case SC_SUFFRAGIUM: // Suffragium removes Curse of Tongues [Brain] 
     5158                if (sc->data[SC_CURSETONGUES]) 
     5159                        status_change_end(bl,SC_CURSETONGUES,-1); 
     5160                break; 
     5161        case SC_ANGELUS: // Angelus removes Curse of Exhaustion [Brain] 
     5162                if (sc->data[SC_CURSEEXHAUST]) 
     5163                        status_change_end(bl,SC_CURSEEXHAUST,-1); 
     5164                break; 
     5165                //Custom Job End 
    48455166        case SC_INCREASEAGI: 
    48465167                status_change_end(bl,SC_DECREASEAGI,-1); 
     
    48615182                status_change_end(bl,SC_TWOHANDQUICKEN,-1); 
    48625183                status_change_end(bl,SC_ONEHAND,-1); 
     5184                //Custom Jobs (blackmagic) 
     5185                if(sc->data[SC_LUST])   // Adept Blood Lust [Brain] 
     5186                status_change_end(bl,SC_LUST,-1); 
     5187                //Custom Job End 
    48635188                break; 
    48645189        case SC_ONEHAND: 
     
    49195244                status_change_end(bl,SC_MADNESSCANCEL,-1); 
    49205245                break; 
     5246                //Custom Jobs (blackmagic) 
     5247        case SC_FREEZE: //Frozen status ends immolating AND searing status [Brain] 
     5248                if(sc->data[SC_IMMOLATE]) 
     5249                        status_change_end(bl,SC_IMMOLATE,-1); 
     5250        case SC_IMMOLATE: // Warlock Immolate [Brain] 
     5251                if(sc->data[SC_SEARING]) //Immolating status ends searing status 
     5252                        status_change_end(bl,SC_SEARING,-1); 
     5253                break; 
     5254                //Custom Job End 
    49215255        case SC_MADNESSCANCEL: 
    49225256                status_change_end(bl,SC_ADJUSTMENT,-1); 
     
    49505284                        case SC_SILENCE: 
    49515285                        case SC_CONFUSION: 
     5286                                //Custom Jobs (blackmagic) 
     5287                        case SC_FEAR: //Fear Status by [Brainstorm] 
     5288                                //Custom Job End 
    49525289                        case SC_BLIND: 
    49535290                        case SC_BLEEDING: 
     
    52595596                        clif_emotion(bl,1); 
    52605597                        break; 
     5598                        //Custom Jobs (blackmagic) 
     5599                case SC_FEAR: //Fear Status by [Brainstorm] 
     5600                        clif_emotion(bl,16); // e_wah 
     5601                        if(sd) tick /= 2; 
     5602                        break; 
     5603                        //Custom Job End 
    52615604                case SC_BLEEDING: 
    52625605                        val4 = tick/10000; 
     
    56365979                        break; 
    56375980 
     5981                        //Custom Jobs (blackmagic) 
     5982                case SC_ATFIELD: // AT-Field [Brainstorm] 
     5983                        val2 = 100; // 100% Block chance 
     5984                        val3 = 100; // Dodge 100 attacks total. 
     5985                        val4 = tick/1000; 
     5986                        tick = 1000; 
     5987                        break; 
     5988                        //Custom Job End 
     5989 
    56385990                case SC_COMBO: 
    56395991                { 
     
    56836035                                val2 = 0; //0 -> Half stat. 
    56846036                        break; 
     6037                        //Custom Jobs (blackmagic) 
     6038                case SC_REQUIEM: //Necro Requiem and Dark Moon [Brain] 
     6039                case SC_DARKMOON: 
     6040                        if (undead_flag || status->race==RC_UNDEAD || status->race==RC_DEMON) 
     6041                                val2 = val1; //Demon and Undead get buffed 
     6042                        else if(status->race==RC_FORMLESS || status->def_ele==ELE_GHOST || bl->type == BL_PC) 
     6043                        { 
     6044                                val1 = 0; //No status change for Formless and Ghosts, and non-undead players 
     6045                                tick = 0; //Cancel status to not show requiem icon without a reason 
     6046                        } 
     6047                        else 
     6048                                val3 = val1; //Everything else (living) get negative status (requiem only) 
     6049                        break; 
     6050                case SC_DECREPIFY: //Necro Decrepify [Brain] 
     6051                        val2 = val1; 
     6052                break; 
     6053                        //Custom Job End 
    56856054                case SC_TRICKDEAD: 
    56866055                        if (vd) vd->dead_sit = 1; 
     
    57236092                        val2 = 5*val1; //watk increase 
    57246093                        break; 
     6094                        //Custom Jobs (blackmagic) 
     6095                case SC_CURSEWEAKNESS: // Warlock Curse of Weakness [Brain] 
     6096                        val2 = 5*val1; //batk/watk decrease 
     6097                        break; 
     6098                case SC_CURSEEXHAUST: // Warlock Curse of Exhaustion [Brain] 
     6099                        val2 = 2*val1; //def/mdef decrease 
     6100                        break; 
     6101                case SC_CURSETONGUES: // Warlock Curse of Tongues [Brain] 
     6102                        val2 = 10*val1; //casttime increase 
     6103                        break; 
     6104                        //Custom Job End 
    57256105                case SC_MELTDOWN: 
    57266106                        val2 = 100*val1; //Chance to break weapon 
     
    57786158                        val3 = 5+5*val1; //bAtk/wAtk rate change 
    57796159                        break; 
     6160                        //Custom Jobs (blackmagic) 
     6161                case SC_LUST: // Adept Blood Lust [Brain] 
     6162                        val2 = 5+3*val1; //Aspd/bAtk/wAtk change 
     6163                        val3 = tick>0?tick:1000; //Interval at which HP is drained. 
     6164                        break; 
     6165                case SC_DEATHPACT: // Necro Death Pact [Brain] 
     6166                        val2 = 5*val1; //Neutral property resistance 
     6167                        val3 = tick>0?tick:10000; //Interval at which HP is drained. 
     6168                        break; 
     6169                case SC_OVERWHELMING: // Warlock Overwhelming Evil [Brain] 
     6170                        val2 = 2*val1; //matk bonus 
     6171                        val3 = tick>0?tick:1000; //Interval at which SP is drained. 
     6172                        break; 
     6173                        //Custom Job End 
    57806174                case SC_MINDBREAKER: 
    57816175                        val2 = 20*val1; //matk increase. 
     
    59616355                                unit_skillcastcancel(bl, 0); 
    59626356                break; 
     6357                //Custom Jobs (blackmagic) 
     6358                case SC_FEAR: //Fear Status by [Brainstorm] 
     6359                        unit_stop_attack(bl); 
     6360                break; 
     6361                //Custom Job End 
    59636362        } 
    59646363 
     
    64066805                        } 
    64076806                        break; 
    6408                 case SC_SPLASHER:        
     6807//Custom Jobs (blackmagic) 
     6808                case SC_SPLASHER: 
     6809                case SC_DOOM: // Warlock Curse of Doom [Brain] 
     6810//Custom Job End 
    64096811                        { 
    64106812                                struct block_list *src=map_id2bl(sce->val3); 
     
    67747176                sc_timer_next(sce->val2+tick, status_change_timer, bl->id, data); 
    67757177                return 0; 
     7178                //Custom Jobs (blackmagic) 
     7179        case SC_LUST:   // Adept Blood Lust [Brain] 
     7180                if(!status_charge(bl, status->max_hp/100, 0)) 
     7181                        break; //Not enough HP to continue. 
     7182                sc_timer_next(sce->val3+tick, status_change_timer, bl->id, data); 
     7183                return 0; 
     7184        case SC_DEATHPACT:      // Necro Death Pact [Brain] 
     7185                 // Drains 1 HP every second (status wont kill, but dying will cancel it) 
     7186                status_charge(bl, 1, 0); 
     7187                sc_timer_next(sce->val3+tick, status_change_timer, bl->id, data); 
     7188                return 0; 
     7189        case SC_OVERWHELMING:   // Warlock Overwhelming Evil [Brain] 
     7190                if(!status_charge(bl, 0, status->max_sp/100)) 
     7191                        break; //Not enough SP to continue. 
     7192                sc_timer_next(sce->val3+tick, status_change_timer, bl->id, data); 
     7193                return 0; 
     7194                //Custom Job End 
    67767195 
    67777196        case SC_CHASEWALK: 
     
    70087427                } 
    70097428                break; 
     7429                //Custom Jobs (blackmagic) 
     7430        case SC_DOOM: // Warlock Curse of Doom [Brain] 
     7431                if((sce->val4 -= 500) > 0) { 
     7432                        sc_timer_next(500 + tick, status_change_timer, bl->id, data); 
     7433                        return 0; 
     7434                } 
     7435                break; 
     7436                //Custom Job End 
    70107437 
    70117438        case SC_MARIONETTE: 
     
    71757602                        case SC_WATKFOOD: 
    71767603                        case SC_MATKFOOD: 
     7604                                //Custom Jobs (blackmagic) 
     7605                        case SC_DOOM: // Warlock Curse of Doom [Brain] 
     7606                                //Custom Job End 
    71777607                                continue; 
    71787608