Changeset 19 for src/map/status.c
- Timestamp:
- 07/02/08 12:20:18 (17 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
src/map/status.c
r13 r19 130 130 set_sc( NPC_SILENCEATTACK , SC_SILENCE , SI_BLANK , SCB_NONE ); 131 131 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] 135 133 set_sc( NPC_BLINDATTACK , SC_BLIND , SI_BLANK , SCB_HIT|SCB_FLEE ); 136 134 set_sc( LK_HEADCRUSH , SC_BLEEDING , SI_BLEEDING , SCB_REGEN ); … … 410 408 set_sc( GD_BATTLEORDER , SC_BATTLEORDERS , SI_BLANK , SCB_STR|SCB_INT|SCB_DEX ); 411 409 set_sc( GD_REGENERATION , SC_REGENERATION , SI_BLANK , SCB_REGEN ); 410 <<<<<<< .mine 411 ======= 412 412 //Custom Jobs (blackmagic) 413 413 // Custom Jobs Skills [Brain] … … 438 438 set_sc( ALL_ATFIELD , SC_ATFIELD , SI_UTSUSEMI ,SCB_NONE); 439 439 //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 440 469 441 470 // Storing the target job rather than simply SC_SPIRIT simplifies code later on. … … 677 706 status_change_end(target,SC_WINKCHARM,-1); 678 707 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); 679 711 status_change_end(target,SC_TRICKDEAD,-1); 680 712 status_change_end(target,SC_HIDING,-1); 681 713 status_change_end(target,SC_CLOAKING,-1); 682 714 status_change_end(target,SC_CHASEWALK,-1); 683 status_change_end(target,SC_FEAR, -1);//Custom Jobs (blackmagic)684 715 if ((sce=sc->data[SC_ENDURE]) && !sce->val4) { 685 716 //Endure count is only reduced by non-players on non-gvg maps. … … 1373 1404 flag|=16; 1374 1405 1406 <<<<<<< .mine 1407 if (md->master_id && md->special_state.ai) 1408 flag|=32; //Adept/Necro/Warlock Summon Stats Bonus [Brainstorm] 1409 ======= 1375 1410 //Custom Jobs (blackmagic) 1376 1411 if (md->master_id && md->special_state.ai) 1377 1412 flag|=32; //Adept/Necro/Warlock Summon Stats Bonus [Brainstorm] 1378 1413 //Custom Job End 1414 >>>>>>> .r18 1415 1379 1416 1380 1417 if (!flag) … … 1494 1531 status->aspd_rate -= 100*md->guardian_data->guardup_lv; 1495 1532 } 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 ======= 1496 1594 1497 1595 //Custom Jobs (blackmagic) … … 1557 1655 } 1558 1656 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 1561 1662 1562 1663 //Initial battle status … … 1807 1908 status->aspd_rate = 1000; 1808 1909 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 ======= 1809 1914 //Custom Jobs (blackmagic) 1810 1915 status->race = RC_DEMIHUMAN;// This define players default race to DEMIHUMAN [Brain] 1811 1916 if(pc_checkskill(sd,NC_PHYLACTERY)>0) status->def_ele = ELE_UNDEAD; //Phylactery turns you UNDEAD 1 instead of NEUTRAL 1812 1917 //Custom Job End 1813 1918 >>>>>>> .r18 1814 1919 1815 1920 //zero up structures... … … 2101 2206 if((skill=pc_checkskill(sd,AC_OWL))>0) 2102 2207 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 ======= 2104 2213 //Custom Jobs (blackmagic) 2105 2214 … … 2107 2216 status->str += skill/2; //+1 str per 2 skill points 2108 2217 //Custom Job End 2218 >>>>>>> .r18 2109 2219 2110 2220 // Bonuses from cards and equipment as well as base stat, remember to avoid overflows. … … 2144 2254 if((skill=pc_checkskill(sd,CR_TRUST))>0) 2145 2255 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 ======= 2147 2261 //Custom Jobs (blackmagic) 2148 2262 if((skill=pc_checkskill(sd,AD_PROFANE))>0) // Adept Profane Soul [Brain] 2149 2263 status->max_hp += status->max_hp * (skill*3)/100; 2150 2264 //Custom Job End 2265 >>>>>>> .r18 2151 2266 2152 2267 // Apply relative modifiers from equipment … … 2178 2293 if((skill=pc_checkskill(sd,HW_SOULDRAIN))>0) 2179 2294 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 ======= 2181 2300 //Custom Jobs (blackmagic) 2182 2301 if((skill=pc_checkskill(sd,AD_PROFANE))>0) // Adept Profane Soul [Brain] 2183 2302 status->max_sp += sd->status.max_sp * (skill*3)/100; 2184 2303 //Custom Job End 2304 >>>>>>> .r18 2185 2305 2186 2306 // Apply relative modifiers from equipment … … 2276 2396 } 2277 2397 } 2278 2398 if((skill=pc_checkskill(sd,AD_FERVOR))>0) // Adept Unholy Fevor [Brain] 2399 status->hit += skill*2; 2400 2401 <<<<<<< .mine 2402 ======= 2279 2403 //Custom Jobs (blackmagic) 2280 2404 if((skill=pc_checkskill(sd,AD_FERVOR))>0) // Adept Unholy Fevor [Brain] … … 2282 2406 //Custom Job End 2283 2407 2408 >>>>>>> .r18 2284 2409 // ----- FLEE CALCULATION ----- 2285 2410 … … 2289 2414 if((skill=pc_checkskill(sd,MO_DODGE))>0) 2290 2415 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 ======= 2292 2421 //Custom Jobs (blackmagic) 2293 2422 if((skill=pc_checkskill(sd,AD_FERVOR))>0) // Adept Unholy Fevor [Brain] … … 2295 2424 //Custom Job End 2296 2425 2426 >>>>>>> .r18 2297 2427 // ----- EQUIPMENT-DEF CALCULATION ----- 2298 2428 … … 2304 2434 status->def = cap_value(i, CHAR_MIN, CHAR_MAX); 2305 2435 } 2436 <<<<<<< .mine 2437 2438 ======= 2306 2439 //Custom Jobs (blackmagic) 2307 2440 // Absolute modifiers from passive skills … … 2309 2442 status->mdef += 1*skill; 2310 2443 //Custom Job End 2444 >>>>>>> .r18 2311 2445 if (!battle_config.weapon_defense_type && status->def > battle_config.max_def) 2312 2446 { … … 2324 2458 status->mdef = cap_value(i, CHAR_MIN, CHAR_MAX); 2325 2459 } 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 2326 2464 2327 2465 if (!battle_config.magic_defense_type && status->mdef > battle_config.max_def) … … 2431 2569 } 2432 2570 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 ======= 2433 2580 2434 2581 //Custom Jobs (blackmagic) … … 2440 2587 sd->magic_addrace[RC_DEMON]+=skill; 2441 2588 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 ======= 2443 2596 if((pc_checkskill(sd,NC_PHYLACTERY))>0){ // Necro Phylactery [Brain] 2444 2597 sd->subele[ELE_NEUTRAL] += 10; //And increases neutral resistance by 10% 2445 2598 } 2446 2599 //Custom Job End 2600 >>>>>>> .r18 2601 2447 2602 2448 2603 if(sc->count){ … … 2468 2623 sd->subrace[RC_DEMON] += sc->data[SC_PROVIDENCE]->val2; 2469 2624 } 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 ======= 2471 2630 //Custom Jobs (blackmagic) 2472 2631 if(sd->sc.data[SC_DEATHPACT]) //Necro Death Pact [Brain] … … 2474 2633 //Custom Job End 2475 2634 2635 >>>>>>> .r18 2476 2636 if(sc->data[SC_ARMOR_ELEMENT]) 2477 2637 { //This status change should grant card-type elemental resist. … … 2629 2789 status->rhw.atk2 = status->str + hom->level; 2630 2790 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 2631 2805 status->aspd_rate = 1000; 2632 2806 … … 2795 2969 || sc->data[SC_TRICKDEAD] 2796 2970 || sc->data[SC_BLEEDING] 2971 <<<<<<< .mine 2972 || sc->data[SC_LUST] // Adept Blood Lust, stops hp regen [Brain] 2973 ======= 2797 2974 //Custom Jobs (blackmagic) 2798 2975 || sc->data[SC_LUST] // Adept Blood Lust, stops hp regen [Brain] 2976 >>>>>>> .r18 2799 2977 || sc->data[SC_DEATHPACT] // Necro Death Pact 2800 //Custom Job End 2978 2801 2979 ) //No regen 2802 2980 regen->flag = 0; … … 2807 2985 || (sc->data[SC_EXPLOSIONSPIRITS] 2808 2986 && (!sc->data[SC_SPIRIT] || sc->data[SC_SPIRIT]->val2 != SL_MONK)) 2809 //Custom Jobs (blackmagic)2810 2987 || sc->data[SC_OVERWHELMING] // Warlock Overwhelming Evil, stops sp regen [Brain] 2811 //Custom Job End 2988 2812 2989 ) //No natural SP regen 2813 2990 regen->flag &=~RGN_SP; … … 3578 3755 if(sc->data[SC_MADNESSCANCEL]) 3579 3756 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 ======= 3580 3767 //Custom Jobs (blackmagic) 3581 3768 if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] … … 3588 3775 3589 3776 //Custom Job End 3777 >>>>>>> .r18 3590 3778 return (unsigned short)cap_value(batk,0,USHRT_MAX); 3591 3779 } … … 3630 3818 if(sc->data[SC_STRIPWEAPON]) 3631 3819 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 ======= 3632 3835 //Custom Jobs (blackmagic) 3633 3836 if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] … … 3645 3848 watk -= watk * 25/100; 3646 3849 //Custom Job End 3850 >>>>>>> .r18 3851 3647 3852 3648 3853 return (unsigned short)cap_value(watk,0,USHRT_MAX); … … 3664 3869 if(sc->data[SC_INCMATKRATE]) 3665 3870 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 ======= 3666 3875 //Custom Jobs (blackmagic) 3667 3876 if(sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 3668 3877 matk += matk * sc->data[SC_OVERWHELMING]->val2/100; 3669 3878 //Custom Job End 3879 >>>>>>> .r18 3880 3670 3881 3671 3882 return (unsigned short)cap_value(matk,0,USHRT_MAX); … … 3715 3926 if(sc->data[SC_INCREASING]) 3716 3927 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 ======= 3717 3935 //Custom Jobs (blackmagic) 3718 3936 if(sc->data[SC_DARKMOON]){ //Necro Dark Moon [Brain] … … 3721 3939 if(sc->data[SC_DARKMOON]->val3) 3722 3940 hit -= sc->data[SC_DARKMOON]->val3; 3723 } 3724 //Custom Job End 3941 >>>>>>> .r18 3942 } 3943 3725 3944 3726 3945 return (short)cap_value(hit,1,SHRT_MAX); … … 3763 3982 if(sc->data[SC_SPEED]) 3764 3983 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 ======= 3765 3991 //Custom Jobs (blackmagic) 3766 3992 if(sc->data[SC_DARKMOON]){ //Necro Dark Moon [Brain] … … 3769 3995 if(sc->data[SC_DARKMOON]->val3) 3770 3996 flee -= sc->data[SC_DARKMOON]->val3; 3771 } 3772 //Custom Job End 3997 >>>>>>> .r18 3998 } 3999 3773 4000 3774 4001 return (short)cap_value(flee,1,SHRT_MAX); … … 3829 4056 if (sc->data[SC_FLING]) 3830 4057 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 ======= 3831 4066 //Custom Jobs (blackmagic) 3832 4067 if(sc->data[SC_SUFFER]) // Necro Power Word: Suffer [Brain] … … 3837 4072 def += sc->data[SC_OVERWHELMING]->val1; 3838 4073 //Custom Job End 4074 >>>>>>> .r18 4075 3839 4076 3840 4077 return (signed char)cap_value(def,CHAR_MIN,CHAR_MAX); … … 3871 4108 if(sc->data[SC_FLING]) 3872 4109 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 ======= 3874 4118 //Custom Jobs (blackmagic) 3875 4119 if(sc->data[SC_SUFFER]) // Necro Power Word: Suffer [Brain] … … 3879 4123 def2 -= def2 * 25/100; 3880 4124 //Custom Job End 4125 >>>>>>> .r18 3881 4126 3882 4127 return (short)cap_value(def2,1,SHRT_MAX); … … 3906 4151 if(sc->data[SC_CONCENTRATION]) 3907 4152 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 ======= 3908 4161 //Custom Jobs (blackmagic) 3909 4162 if(sc->data[SC_AGONY]) // Warlock Power Word: Agony [Brain] … … 3914 4167 mdef += sc->data[SC_OVERWHELMING]->val1; 3915 4168 //Custom Job End 4169 >>>>>>> .r18 4170 3916 4171 3917 4172 return (signed char)cap_value(mdef,CHAR_MIN,CHAR_MAX); … … 3927 4182 if(sc->data[SC_MINDBREAKER]) 3928 4183 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 ======= 3929 4191 //Custom Jobs (blackmagic) 3930 4192 if(sc->data[SC_AGONY]) // Warlock Power Word: Agony [Brain] … … 3934 4196 mdef2 -= mdef2 * 25/100; 3935 4197 //Custom Job End 4198 >>>>>>> .r18 4199 3936 4200 3937 4201 return (short)cap_value(mdef2,1,SHRT_MAX); … … 3987 4251 else if(sc->data[SC_WINDWALK]) 3988 4252 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 ======= 3989 4258 //Custom Jobs (blackmagic) 3990 4259 else if(sc->data[SC_FEAR]) //Fear Status by [Brainstorm] 3991 4260 new_speed -= new_speed * 25/100; 3992 4261 //Custom Job End 4262 >>>>>>> .r18 3993 4263 } 3994 4264 … … 4034 4304 if(sc->data[SC_SLOWDOWN]) 4035 4305 speed = speed * 100/75; 4306 <<<<<<< .mine 4307 if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 4308 speed = speed * 100/75; //-25% walkspeed 4309 4310 ======= 4036 4311 //Custom Jobs (blackmagic) 4037 4312 if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 4038 4313 speed = speed * 100/75; //-25% walkspeed 4039 4314 //Custom Job End 4315 >>>>>>> .r18 4040 4316 4041 4317 return (short)cap_value(speed,10,USHRT_MAX); … … 4108 4384 else if(sc->data[SC_MADNESSCANCEL]) 4109 4385 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 ======= 4110 4391 //Custom Jobs (blackmagic) 4111 4392 else if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 4112 4393 aspd_rate -= sc->data[SC_LUST]->val2*10; 4113 4394 //Custom Job End 4395 >>>>>>> .r18 4114 4396 } 4115 4397 … … 4205 4487 if(sc->data[SC_ELEMENTALCHANGE]) 4206 4488 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 ======= 4207 4496 //Custom Jobs (blackmagic) 4208 4497 if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain] … … 4211 4500 return ELE_DARK; 4212 4501 //Custom Job End 4502 >>>>>>> .r18 4213 4503 return (unsigned char)cap_value(element,0,UCHAR_MAX); 4214 4504 } … … 4229 4519 if(sc->data[SC_ELEMENTALCHANGE]) 4230 4520 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 ======= 4231 4527 //Custom Jobs (blackmagic) 4232 4528 if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain] … … 4235 4531 return 1; 4236 4532 //Custom Job End 4533 >>>>>>> .r18 4534 4237 4535 4238 4536 return (unsigned char)cap_value(lv,1,4); … … 4972 5270 case SC_CARTBOOST: 4973 5271 case SC_ASSNCROS: 4974 //Custom Jobs (blackmagic)4975 5272 case SC_LUST: // Adept Blood Lust [Brain] 4976 //Custom Job End 5273 4977 5274 if (sc->data[SC_QUAGMIRE]) 4978 5275 return 0; … … 5092 5389 case SC_RICHMANKIM: 5093 5390 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 5094 5400 case SC_FOGWALL: 5401 <<<<<<< .mine 5402 ======= 5095 5403 //Custom Jobs (blackmagic) 5096 5404 //New status [Brainstorm] … … 5103 5411 case SC_CURSEEXHAUST: 5104 5412 //Custom Job End 5413 >>>>>>> .r18 5105 5414 return 0; 5106 5415 } … … 5118 5427 if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE) 5119 5428 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 ======= 5120 5441 //Custom Jobs (blackmagic) 5121 5442 // Warlock Curses are canceled by blessing [Brain] … … 5129 5450 status_change_end(bl,SC_DOOM,-1);//But then people would abuse on WoEs 5130 5451 //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 ======= 5133 5489 //Custom Jobs (blackmagic) 5134 5490 case SC_CURSEWEAKNESS: // Warlock Curse of Weakness removes Impositio Manus [Brain] … … 5164 5520 break; 5165 5521 //Custom Job End 5522 >>>>>>> .r18 5166 5523 case SC_INCREASEAGI: 5167 5524 status_change_end(bl,SC_DECREASEAGI,-1); … … 5182 5539 status_change_end(bl,SC_TWOHANDQUICKEN,-1); 5183 5540 status_change_end(bl,SC_ONEHAND,-1); 5541 <<<<<<< .mine 5542 if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 5543 ======= 5184 5544 //Custom Jobs (blackmagic) 5185 5545 if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 5546 >>>>>>> .r18 5186 5547 status_change_end(bl,SC_LUST,-1); 5187 //Custom Job End 5548 5188 5549 break; 5189 5550 case SC_ONEHAND: … … 5244 5605 status_change_end(bl,SC_MADNESSCANCEL,-1); 5245 5606 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 ======= 5246 5617 //Custom Jobs (blackmagic) 5247 5618 case SC_FREEZE: //Frozen status ends immolating AND searing status [Brain] … … 5253 5624 break; 5254 5625 //Custom Job End 5626 >>>>>>> .r18 5255 5627 case SC_MADNESSCANCEL: 5256 5628 status_change_end(bl,SC_ADJUSTMENT,-1); … … 5284 5656 case SC_SILENCE: 5285 5657 case SC_CONFUSION: 5286 //Custom Jobs (blackmagic)5287 5658 case SC_FEAR: //Fear Status by [Brainstorm] 5288 //Custom Job End5289 5659 case SC_BLIND: 5290 5660 case SC_BLEEDING: … … 5596 5966 clif_emotion(bl,1); 5597 5967 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 ======= 5598 5975 //Custom Jobs (blackmagic) 5599 5976 case SC_FEAR: //Fear Status by [Brainstorm] … … 5602 5979 break; 5603 5980 //Custom Job End 5981 >>>>>>> .r18 5604 5982 case SC_BLEEDING: 5605 5983 val4 = tick/10000; … … 5979 6357 break; 5980 6358 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 ======= 5981 6367 //Custom Jobs (blackmagic) 5982 6368 case SC_ATFIELD: // AT-Field [Brainstorm] … … 5987 6373 break; 5988 6374 //Custom Job End 6375 >>>>>>> .r18 6376 5989 6377 5990 6378 case SC_COMBO: … … 6035 6423 val2 = 0; //0 -> Half stat. 6036 6424 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 ======= 6037 6438 //Custom Jobs (blackmagic) 6038 6439 case SC_REQUIEM: //Necro Requiem and Dark Moon [Brain] … … 6050 6451 case SC_DECREPIFY: //Necro Decrepify [Brain] 6051 6452 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 6054 6459 case SC_TRICKDEAD: 6055 6460 if (vd) vd->dead_sit = 1; … … 6092 6497 val2 = 5*val1; //watk increase 6093 6498 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 ======= 6094 6511 //Custom Jobs (blackmagic) 6095 6512 case SC_CURSEWEAKNESS: // Warlock Curse of Weakness [Brain] … … 6103 6520 break; 6104 6521 //Custom Job End 6522 >>>>>>> .r18 6105 6523 case SC_MELTDOWN: 6106 6524 val2 = 100*val1; //Chance to break weapon … … 6158 6576 val3 = 5+5*val1; //bAtk/wAtk rate change 6159 6577 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 ======= 6160 6593 //Custom Jobs (blackmagic) 6161 6594 case SC_LUST: // Adept Blood Lust [Brain] … … 6172 6605 break; 6173 6606 //Custom Job End 6607 >>>>>>> .r18 6174 6608 case SC_MINDBREAKER: 6175 6609 val2 = 20*val1; //matk increase. … … 6355 6789 unit_skillcastcancel(bl, 0); 6356 6790 break; 6791 <<<<<<< .mine 6792 6793 case SC_FEAR: //Fear Status by [Brainstorm] 6794 unit_stop_attack(bl); 6795 break; 6796 6797 6798 ======= 6357 6799 //Custom Jobs (blackmagic) 6358 6800 case SC_FEAR: //Fear Status by [Brainstorm] … … 6360 6802 break; 6361 6803 //Custom Job End 6804 >>>>>>> .r18 6362 6805 } 6363 6806 … … 6794 7237 clif_status_change(bl,SI_MOONLIT,0); 6795 7238 6796 status_change_end(bl,SC_LONGING,-1); 7239 status_change_end(bl,SC_LONGING,-1); 6797 7240 break; 6798 7241 case SC_NOCHAT: … … 6805 7248 } 6806 7249 break; 7250 <<<<<<< .mine 7251 case SC_SPLASHER: 7252 case SC_DOOM: // Warlock Curse of Doom [Brain] 7253 7254 ======= 6807 7255 //Custom Jobs (blackmagic) 6808 7256 case SC_SPLASHER: 6809 7257 case SC_DOOM: // Warlock Curse of Doom [Brain] 6810 7258 //Custom Job End 7259 >>>>>>> .r18 6811 7260 { 6812 7261 struct block_list *src=map_id2bl(sce->val3); … … 7176 7625 sc_timer_next(sce->val2+tick, status_change_timer, bl->id, data); 7177 7626 return 0; 7627 <<<<<<< .mine 7628 ======= 7178 7629 //Custom Jobs (blackmagic) 7179 7630 case SC_LUST: // Adept Blood Lust [Brain] … … 7193 7644 return 0; 7194 7645 //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 7195 7664 7196 7665 case SC_CHASEWALK: … … 7427 7896 } 7428 7897 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 ======= 7429 7906 //Custom Jobs (blackmagic) 7430 7907 case SC_DOOM: // Warlock Curse of Doom [Brain] … … 7435 7912 break; 7436 7913 //Custom Job End 7914 >>>>>>> .r18 7437 7915 7438 7916 case SC_MARIONETTE: … … 7602 8080 case SC_WATKFOOD: 7603 8081 case SC_MATKFOOD: 7604 //Custom Jobs (blackmagic)7605 8082 case SC_DOOM: // Warlock Curse of Doom [Brain] 7606 //Custom Job End 8083 7607 8084 continue; 7608 8085