Changeset 10 for src/map/status.c
- Timestamp:
- 07/01/08 02:49:27 (17 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
src/map/status.c
r1 r10 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 135 set_sc( NPC_BLINDATTACK , SC_BLIND , SI_BLANK , SCB_HIT|SCB_FLEE ); 133 136 set_sc( LK_HEADCRUSH , SC_BLEEDING , SI_BLEEDING , SCB_REGEN ); … … 407 410 set_sc( GD_BATTLEORDER , SC_BATTLEORDERS , SI_BLANK , SCB_STR|SCB_INT|SCB_DEX ); 408 411 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 409 440 410 441 // Storing the target job rather than simply SC_SPIRIT simplifies code later on. … … 650 681 status_change_end(target,SC_CLOAKING,-1); 651 682 status_change_end(target,SC_CHASEWALK,-1); 683 status_change_end(target,SC_FEAR, -1);//Custom Jobs (blackmagic) 652 684 if ((sce=sc->data[SC_ENDURE]) && !sce->val4) { 653 685 //Endure count is only reduced by non-players on non-gvg maps. … … 1340 1372 if (md->master_id && md->special_state.ai>1) 1341 1373 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 1342 1379 1343 1380 if (!flag) … … 1458 1495 } 1459 1496 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 1460 1562 //Initial battle status 1461 1563 if (!first) … … 1705 1807 status->aspd_rate = 1000; 1706 1808 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 1708 1814 1709 1815 //zero up structures... … … 1996 2102 status->dex += skill; 1997 2103 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 1998 2110 // Bonuses from cards and equipment as well as base stat, remember to avoid overflows. 1999 2111 i = status->str + sd->status.str + sd->param_bonus[0] + sd->param_equip[0]; … … 2033 2145 status->max_hp += skill*200; 2034 2146 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 2035 2152 // Apply relative modifiers from equipment 2036 2153 if(sd->hprate < 0) … … 2061 2178 if((skill=pc_checkskill(sd,HW_SOULDRAIN))>0) 2062 2179 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 2063 2185 2064 2186 // Apply relative modifiers from equipment … … 2155 2277 } 2156 2278 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 2157 2284 // ----- FLEE CALCULATION ----- 2158 2285 … … 2162 2289 if((skill=pc_checkskill(sd,MO_DODGE))>0) 2163 2290 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 2164 2296 2165 2297 // ----- EQUIPMENT-DEF CALCULATION ----- … … 2172 2304 status->def = cap_value(i, CHAR_MIN, CHAR_MAX); 2173 2305 } 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 2175 2311 if (!battle_config.weapon_defense_type && status->def > battle_config.max_def) 2176 2312 { … … 2295 2431 } 2296 2432 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 2297 2448 if(sc->count){ 2298 2449 if(sc->data[SC_CONCENTRATE]) … … 2317 2468 sd->subrace[RC_DEMON] += sc->data[SC_PROVIDENCE]->val2; 2318 2469 } 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 2319 2476 if(sc->data[SC_ARMOR_ELEMENT]) 2320 2477 { //This status change should grant card-type elemental resist. … … 2638 2795 || sc->data[SC_TRICKDEAD] 2639 2796 || 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 2640 2801 ) //No regen 2641 2802 regen->flag = 0; … … 2646 2807 || (sc->data[SC_EXPLOSIONSPIRITS] 2647 2808 && (!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 2648 2812 ) //No natural SP regen 2649 2813 regen->flag &=~RGN_SP; … … 3414 3578 if(sc->data[SC_MADNESSCANCEL]) 3415 3579 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 3416 3590 return (unsigned short)cap_value(batk,0,USHRT_MAX); 3417 3591 } … … 3456 3630 if(sc->data[SC_STRIPWEAPON]) 3457 3631 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 3458 3647 3459 3648 return (unsigned short)cap_value(watk,0,USHRT_MAX); … … 3475 3664 if(sc->data[SC_INCMATKRATE]) 3476 3665 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 3477 3670 3478 3671 return (unsigned short)cap_value(matk,0,USHRT_MAX); … … 3522 3715 if(sc->data[SC_INCREASING]) 3523 3716 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 3524 3725 3525 3726 return (short)cap_value(hit,1,SHRT_MAX); … … 3562 3763 if(sc->data[SC_SPEED]) 3563 3764 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 3564 3773 3565 3774 return (short)cap_value(flee,1,SHRT_MAX); … … 3620 3829 if (sc->data[SC_FLING]) 3621 3830 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 3622 3839 3623 3840 return (signed char)cap_value(def,CHAR_MIN,CHAR_MAX); … … 3655 3872 def2 -= def2 * (sc->data[SC_FLING]->val3)/100; 3656 3873 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 3657 3882 return (short)cap_value(def2,1,SHRT_MAX); 3658 3883 } … … 3681 3906 if(sc->data[SC_CONCENTRATION]) 3682 3907 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 3683 3916 3684 3917 return (signed char)cap_value(mdef,CHAR_MIN,CHAR_MAX); … … 3694 3927 if(sc->data[SC_MINDBREAKER]) 3695 3928 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 3696 3936 3697 3937 return (short)cap_value(mdef2,1,SHRT_MAX); … … 3747 3987 else if(sc->data[SC_WINDWALK]) 3748 3988 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 3749 3993 } 3750 3994 … … 3790 4034 if(sc->data[SC_SLOWDOWN]) 3791 4035 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 3792 4040 3793 4041 return (short)cap_value(speed,10,USHRT_MAX); … … 3860 4108 else if(sc->data[SC_MADNESSCANCEL]) 3861 4109 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 3862 4114 } 3863 4115 … … 3953 4205 if(sc->data[SC_ELEMENTALCHANGE]) 3954 4206 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 3955 4213 return (unsigned char)cap_value(element,0,UCHAR_MAX); 3956 4214 } … … 3971 4229 if(sc->data[SC_ELEMENTALCHANGE]) 3972 4230 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 3973 4237 3974 4238 return (unsigned char)cap_value(lv,1,4); … … 4708 4972 case SC_CARTBOOST: 4709 4973 case SC_ASSNCROS: 4974 //Custom Jobs (blackmagic) 4975 case SC_LUST: // Adept Blood Lust [Brain] 4976 //Custom Job End 4710 4977 if (sc->data[SC_QUAGMIRE]) 4711 4978 return 0; … … 4826 5093 case SC_ROKISWEIL: 4827 5094 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 4828 5105 return 0; 4829 5106 } … … 4841 5118 if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE) 4842 5119 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 4845 5166 case SC_INCREASEAGI: 4846 5167 status_change_end(bl,SC_DECREASEAGI,-1); … … 4861 5182 status_change_end(bl,SC_TWOHANDQUICKEN,-1); 4862 5183 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 4863 5188 break; 4864 5189 case SC_ONEHAND: … … 4919 5244 status_change_end(bl,SC_MADNESSCANCEL,-1); 4920 5245 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 4921 5255 case SC_MADNESSCANCEL: 4922 5256 status_change_end(bl,SC_ADJUSTMENT,-1); … … 4950 5284 case SC_SILENCE: 4951 5285 case SC_CONFUSION: 5286 //Custom Jobs (blackmagic) 5287 case SC_FEAR: //Fear Status by [Brainstorm] 5288 //Custom Job End 4952 5289 case SC_BLIND: 4953 5290 case SC_BLEEDING: … … 5259 5596 clif_emotion(bl,1); 5260 5597 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 5261 5604 case SC_BLEEDING: 5262 5605 val4 = tick/10000; … … 5636 5979 break; 5637 5980 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 5638 5990 case SC_COMBO: 5639 5991 { … … 5683 6035 val2 = 0; //0 -> Half stat. 5684 6036 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 5685 6054 case SC_TRICKDEAD: 5686 6055 if (vd) vd->dead_sit = 1; … … 5723 6092 val2 = 5*val1; //watk increase 5724 6093 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 5725 6105 case SC_MELTDOWN: 5726 6106 val2 = 100*val1; //Chance to break weapon … … 5778 6158 val3 = 5+5*val1; //bAtk/wAtk rate change 5779 6159 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 5780 6174 case SC_MINDBREAKER: 5781 6175 val2 = 20*val1; //matk increase. … … 5961 6355 unit_skillcastcancel(bl, 0); 5962 6356 break; 6357 //Custom Jobs (blackmagic) 6358 case SC_FEAR: //Fear Status by [Brainstorm] 6359 unit_stop_attack(bl); 6360 break; 6361 //Custom Job End 5963 6362 } 5964 6363 … … 6406 6805 } 6407 6806 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 6409 6811 { 6410 6812 struct block_list *src=map_id2bl(sce->val3); … … 6774 7176 sc_timer_next(sce->val2+tick, status_change_timer, bl->id, data); 6775 7177 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 6776 7195 6777 7196 case SC_CHASEWALK: … … 7008 7427 } 7009 7428 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 7010 7437 7011 7438 case SC_MARIONETTE: … … 7175 7602 case SC_WATKFOOD: 7176 7603 case SC_MATKFOOD: 7604 //Custom Jobs (blackmagic) 7605 case SC_DOOM: // Warlock Curse of Doom [Brain] 7606 //Custom Job End 7177 7607 continue; 7178 7608