Changeset 5 for src/map/battle.c

Show
Ignore:
Timestamp:
06/30/08 21:19:58 (17 years ago)
Author:
jinshiro
Message:
 
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/map/battle.c

    r1 r5  
    373373                } 
    374374 
     375                //Begin Custom Jobs (blackmagic) 
     376                         
     377        //Display red flashing aura effect of Adept Blood Lust [Brain] 
     378        if(sc->data[SC_LUST] && damage > 0){ 
     379                clif_specialeffect(bl, 548, AREA); 
     380                if(rand()%100 < 10) clif_specialeffect(bl, 455, AREA); //Red Lightnings, 1/10 attacks will show to prevent spam 
     381        }; 
     382        //Display blue flashing aura effect of Warlock Overwhelming Evil [Brain] 
     383        if(sc->data[SC_OVERWHELMING] && damage > 0) 
     384                clif_specialeffect(bl, 73, AREA); 
     385 
     386        // AT-Field [Brainstorm] 
     387        if(sc->data[SC_ATFIELD] && 
     388                rand()%100 < sc->data[SC_ATFIELD]->val2) 
     389        {       //Blocks all skills. 
     390                clif_specialeffect(bl, 438, AREA); 
     391                //Shouldn't end until Breaker's non-weapon part connects. 
     392                if (skill_num == ASC_BREAKER || 
     393                skill_num == LK_SPIRALPIERCE || 
     394                skill_num == CG_ARROWVULCAN || 
     395                skill_num == SN_SHARPSHOOTING) 
     396                if (--sc->data[SC_ATFIELD]->val3 <= 0) //We make it work like Safety Wall 
     397                status_change_end(bl, SC_ATFIELD, -1); 
     398                return 0; 
     399        } 
     400//End Custom Jobs 
     401 
    375402                if (((sce=sc->data[SC_UTSUSEMI]) || sc->data[SC_BUNSINJYUTSU]) 
    376403                &&  
     
    624651                        damage += sd->status.str; 
    625652        } 
     653        //Begin Custom Jobs (blackmagic)         
     654        //Warlock Touch of Corruption (Mage-Monster Killer passive skill) [Brainstorm] 
     655        if((skill = pc_checkskill(sd,WL_CORRUPTION)) > 0 && target->type==BL_MOB ) 
     656        damage += (skill * (status->int_/10)); 
     657        //end custom job 
    626658 
    627659        if(type == 0) 
     
    12991331                        switch( skill_num ) 
    13001332                        { 
     1333                        //Begin Custom Job (blackmagic) 
     1334                                case NC_DEATHHAND: // Necro Death Hand [Brain] 
     1335                                skillratio += -25+25*skill_lv; 
     1336                                break; 
     1337                        //End Black Magic Custom Jobs 
    13011338                                case SM_BASH: 
    13021339                                        skillratio += 30*skill_lv; 
     
    15751612                                        skillratio += 100 *(skill_lv-1); 
    15761613                                        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 
    15771623                        } 
    15781624 
     
    21882234                        case AL_HEAL: 
    21892235                        case PR_BENEDICTIO: 
     2236                                //Begin Custom Job (blackmagic) 
     2237                        case AD_DARKHEAL: // Adept Dark Heal 
     2238                                //end custom job 
    21902239                                ad.damage = skill_calc_heal(src, target, skill_lv)/2; 
    21912240                                break; 
     
    23062355                                                skillratio += 100 +100*skill_lv +100*(skill_lv/2); 
    23072356                                                break; 
    2308                                 } 
     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                        } 
    23092385 
    23102386                                MATK_RATE(skillratio); 
     
    23762452                if (!(nk&NK_NO_ELEFIX)) 
    23772453                        ad.damage=battle_attr_fix(src, target, ad.damage, s_ele, tstatus->def_ele, tstatus->ele_lv); 
    2378  
     2454        //Begin Custom Job (blackmagic)          
     2455        if(skill_num == WL_SHADOWBURN) { // Warlock Shadow Burn [Brain] 
     2456                // This is where we calculate the secondary damage 
     2457                if(ad.damage<1) ad.damage=1; 
     2458                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 
    23792463                if (sd && !(nk&NK_NO_CARDFIX_ATK)) { 
    23802464                        short t_class = status_get_class(target); 
     
    25762660        case NPC_EVILLAND: 
    25772661                md.damage = (skill_lv>6)?666:skill_lv*100; 
     2662        //Begin Custom Job (blackmagic) 
     2663        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 
    25782667                break; 
    25792668        } 
     
    27632852        if (sd->sp_vanish_rate && rand()%1000 < sd->sp_vanish_rate) 
    27642853                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] 
     2856        if( pc_checkskill(sd, AD_BLOODPACT) > 0 ) 
     2857        thp += battle_calc_drain(rdamage,1000,5); 
     2858 
     2859        // Warlock Soul Steal drains 1%*skilllv damage per hit [Brain] 
     2860        if( pc_checkskill(sd, WL_SOULSTEAL) > 0 ) 
     2861        tsp += battle_calc_drain(rdamage,1000,pc_checkskill(sd,WL_SOULSTEAL)); 
     2862        // Warlock Touch of Corruption burns 1%*skilllv damage as SP per hit [Brain] 
     2863        if( pc_checkskill(sd, WL_CORRUPTION) > 0 ) { 
     2864        int corrupt_sp; 
     2865        corrupt_sp = battle_calc_drain(rdamage,1000,pc_checkskill(sd,WL_CORRUPTION)); 
     2866        if(status_damage(NULL, tbl, 0, corrupt_sp, 0, 3)) 
     2867                rhp += corrupt_sp;//If SP damage was caused, increase HP damage too 
     2868        } 
     2869        //end custom job 
    27652870        if (!thp && !tsp) return; 
    27662871 
     
    29863091        return wd.dmg_lv; 
    29873092} 
     3093 
     3094//Begin custom Job (blackmagic) 
     3095int battle_check_living(int race,int element)// Living creature check [Brain] 
     3096{ 
     3097        if(element == ELE_UNDEAD || race == RC_UNDEAD // Undead element and race check 
     3098        || race == RC_DEMON             // Demon race check 
     3099        || race == RC_FORMLESS          // Formless race check 
     3100        || element == ELE_GHOST){       // Ghost element check 
     3101        return 0; 
     3102        } 
     3103        else { 
     3104        return 1; 
     3105        } 
     3106} 
     3107//end custom job 
    29883108 
    29893109int battle_check_undead(int race,int element) 
     
    37123832        { "auction_feeperhour",                 &battle_config.auction_feeperhour,              12000,  0,      INT_MAX,        }, 
    37133833        { "auction_maximumprice",               &battle_config.auction_maximumprice,            500000000, 0,   MAX_ZENY,       }, 
     3834        //Begin Custom Job (blackmagic)  
     3835        //Vanaheim battle settings [Brainstorm] 
     3836        { "necro_retaliation",            &battle_config.necro_retaliation,                1,     0,      1,              }, 
     3837        { "disp_summon_stats",            &battle_config.disp_summon_stats, 
     3838        //End Custom Job 
    37143839        { "gm_viewequip_min_lv",                &battle_config.gm_viewequip_min_lv,             0,      0,      99,             }, 
    37153840};