Changeset 10 for src/map

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

Finished Draft for Adept, Necro and Warlock.

Location:
src/map
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • src/map/pc.c

    r1 r10  
    754754        if (battle_config.disp_zeny) 
    755755                sd->state.showzeny = 1; 
     756        //Custom Job (blackmagick)       
     757        //Vanaheim settings [Brainstorm] 
     758        if (battle_config.disp_summon_stats) // Battle Flag to Show Summoned Monster Stats [Brain] 
     759                sd->state.showsummon = 1; 
    756760         
    757761        if (!(battle_config.display_skill_fail&2)) 
     
    38873891                        class_ = MAPID_SUMMER; 
    38883892                        break; 
     3893                        //Custom Jobs (blackmagic) 
     3894                        +               case JOB_NECROMANCER: // Necromancer [Brain] 
     3895                        class_ |= JOBL_2_1; 
     3896                        class_ |= MAPID_ADEPT; 
     3897                        break;   
     3898                case JOB_WARLOCK: // Warlock [Brain] 
     3899                        class_ |= JOBL_2_2; 
     3900                case JOB_ADEPT: // Adept [Brain] 
     3901                        class_ |= MAPID_ADEPT; 
     3902                        break; 
     3903//Custom Job End 
    38893904                default: 
    38903905                        return -1; 
     
    39103925                case MAPID_XMAS:            return JOB_XMAS; 
    39113926                case MAPID_SUMMER:          return JOB_SUMMER; 
     3927                //Custom Jobs (blackmagic) 
     3928                case MAPID_ADEPT:                       return JOB_ADEPT; // Adept [Brain] 
     3929                //Custom Job End 
     3930 
    39123931        //2_1 classes 
    39133932                case MAPID_SUPER_NOVICE:    return JOB_SUPER_NOVICE; 
     
    39193938                case MAPID_ASSASSIN:        return JOB_ASSASSIN; 
    39203939                case MAPID_STAR_GLADIATOR:  return JOB_STAR_GLADIATOR; 
     3940                //Custom Jobs (blackmagic) 
     3941                case MAPID_NECROMANCER:         return JOB_NECROMANCER; // Necromancer [Brain] 
     3942                //Custom Job End 
     3943 
    39213944        //2_2 classes 
    39223945                case MAPID_CRUSADER:        return JOB_CRUSADER; 
     
    39273950                case MAPID_ROGUE:           return JOB_ROGUE; 
    39283951                case MAPID_SOUL_LINKER:     return JOB_SOUL_LINKER; 
     3952                //Custom Jobs (blackmagic) 
     3953                case MAPID_WARLOCK:                     return JOB_WARLOCK; // Warlock [Brain] 
     3954                //Custom Job End 
     3955 
    39293956        //1-1: advanced 
    39303957                case MAPID_NOVICE_HIGH:     return JOB_NOVICE_HIGH; 
     
    41034130        case JOB_NINJA: 
    41044131                return msg_txt(620); 
     4132        //Custom Jobs (blackmagic) 
     4133        case JOB_ADEPT: // Adept [Brain] 
     4134                return msg_txt(1000); 
     4135        case JOB_NECROMANCER: // Necromancer [Brain] 
     4136                return msg_txt(1001); 
     4137        case JOB_WARLOCK: // Warlock [Flavio] 
     4138                return msg_txt(1002); 
     4139        //Custom Job End 
    41054140         
    41064141        default: 
  • src/map/pc.h

    r1 r10  
    114114                unsigned short autolootid; // [Zephyrus] 
    115115                unsigned noks : 3; // [Zeph Kill Steal Protection] 
     116                //Custom Jobs (blackmagic) 
     117                 
     118                //Vanaheim settings [Brainstorm] 
     119                unsigned showsummon :1; //Show summoned monster stats [Brainstorm] 
     120                 
     121                //Custom Job End 
    116122                unsigned god :1; //[Sketchy] 
    117123                unsigned demon :1; //[Sketchy] 
  • src/map/skill.c

    r1 r10  
    4242#define GD_SKILLRANGEMIN 900 
    4343#define GD_SKILLRANGEMAX GD_SKILLRANGEMIN+MAX_GUILDSKILL 
    44 #define HM_SKILLRANGEMIN 800 
     44#define HM_SKILLRANGEMIN 1100 //Custom Jobs (blackmagic)//Custom Job End 
    4545#define HM_SKILLRANGEMAX HM_SKILLRANGEMIN+MAX_HOMUNSKILL 
    4646 
     
    821821                sc_start(bl,SC_CRITICALWOUND,100,skilllv,skill_get_time2(skillid,skilllv)); 
    822822                break; 
     823                //Custom Jobs (blackmagic) 
     824        case NC_GHOULTOUCH:     //Necro Ghoul Touch [Brain] 
     825                if (battle_check_living(tstatus->race, tstatus->def_ele)) //Check if target is a living creature before proceed 
     826                        sc_start(bl,SC_POISON,10000,skilllv,skill_get_time2(skillid,skilllv)); 
     827                break; 
     828        case NC_PWSUFFER:       //Necro Power Word: Suffer [Brain] 
     829        case WL_PWAGONY:        //Warlock Power Word: Agony [Brain] 
     830                if (battle_check_living(tstatus->race, tstatus->def_ele)) //Check if target is a living creature before proceed 
     831                        sc_start(bl,skillid==NC_PWSUFFER?SC_SUFFER:SC_AGONY,1000,skilllv,skill_get_time2(skillid,skilllv)); 
     832                break; 
     833        case WL_SEARING:        //Warlock Searing Pain [Brain] 
     834                //The DoT is only initiated if target isnt burning already. 
     835                if(!tsc->data[SC_SEARING] && !tsc->data[SC_IMMOLATE]) 
     836                        sc_start(bl,SC_SEARING,10000,skilllv,skill_get_time2(skillid,skilllv)); 
     837                break; 
     838        case WL_IMMOLATE:       //Warlock Immolate [Brain] 
     839                //The DoT is only initiated if target isnt in immolate, but must be in searing pain status 
     840                if(tsc->data[SC_SEARING] && !tsc->data[SC_IMMOLATE]) 
     841                        sc_start(bl,SC_IMMOLATE,10000,skilllv,skill_get_time2(skillid,skilllv)); 
     842                break; 
     843        case WL_SHADOWBURN:     //Warlock Shadow Burn [Brain] 
     844                sc_start(bl,SC_STUN,10000,skilllv,skill_get_time(skillid,skilllv)); 
     845                break; 
     846//Custom Job End 
    823847        } 
    824848 
     
    10181042                status_heal(src, 0, status_get_lv(bl)*(95+15*rate)/100, 2); 
    10191043        } 
    1020  
     1044//Custom Jobs (blackmagic)       
     1045        // Warlock Soul Steal [Brain] 
     1046        if(sd && skillid && attack_type&BF_MAGIC && status_isdead(bl)  
     1047                && !(skill_get_inf(skillid)&(INF_GROUND_SKILL|INF_SELF_SKILL)) 
     1048                && (rate=pc_checkskill(sd,WL_SOULSTEAL))>0){// Wont work with area/ground spells (hellfire) 
     1049                if (pc_issit(sd)) pc_setstand(sd); 
     1050                clif_skill_nodamage(src,bl,WL_SOULSTEAL,rate,1); 
     1051                clif_specialeffect(src, 253, AREA); // Absorb Mana effect on caster 
     1052                status_heal(src, 0, status_get_lv(bl)*(90+10*rate)/100, 2); 
     1053                if(rand()%100 < rate) skill_additem(src,src,15020,1); //Chance to "steal" the target soul 
     1054        } 
     1055//Custom Job End 
    10211056        if(dstsd && attack_type&BF_WEAPON) 
    10221057        {       //Counter effects. 
     
    21102145                                        } 
    21112146                                        break; 
     2147                                        //Custom Jobs (blackmagic) 
     2148                                 
     2149                                case NC_PWSUFFER: //Necro Power Word: Suffer [Brain] 
     2150                                        if (!status_isdead(target) && status_get_sc(target)->data[SC_SUFFER]){ 
     2151                                                skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL); 
     2152                                                clif_specialeffect(target, 180, AREA); //Shadow Hit Effect on target 
     2153                                                if (skl->type>1 && !status_isdead(target)) 
     2154                                                        skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION); 
     2155                                        } 
     2156                                        break; 
     2157                                case WL_SEARING: //Warlock Searing Pain [Brain] 
     2158                                        if (!status_isdead(target) && status_get_sc(target)->data[SC_SEARING]){ 
     2159                                                skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL); 
     2160                                                clif_specialeffect(target, 49, AREA); //Fire Hit Effect on target 
     2161                                                if (skl->type>1 && !status_isdead(target)) 
     2162                                                        skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION); 
     2163                                        } 
     2164                                        break; 
     2165                                case WL_IMMOLATE: //Warlock Immolate [Brain] 
     2166                                        if (!status_isdead(target) && status_get_sc(target)->data[SC_IMMOLATE]){ 
     2167                                                skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL); 
     2168                                                clif_specialeffect(target, 97, AREA); //Firepillar Hit Effect on target 
     2169                                                if (skl->type>1 && !status_isdead(target)) 
     2170                                                        skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION); 
     2171                                        } 
     2172                                        break; 
     2173                                case WL_PWAGONY: //Warlock Power Word: Agony [Brain] 
     2174                                        if (!status_isdead(target) && status_get_sc(target)->data[SC_AGONY]){ 
     2175                                                skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL); 
     2176                                                clif_specialeffect(target, 587, AREA); //Big Purple Flame Effect on target 
     2177                                                if (skl->type>1 && !status_isdead(target)) 
     2178                                                        skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION); 
     2179                                        } 
     2180                                        break; 
     2181                                 
     2182                                        //Custom Job End 
    21122183                                default: 
    21132184                                        skill_attack(skl->type,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag); 
     
    23242395                skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); 
    23252396                break; 
     2397                //Custom Jobs (blackmagic) 
     2398         
     2399        case NC_GHOULTOUCH:     //Necro Ghoul Touch [Brain] 
     2400                skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); 
     2401                clif_specialeffect(bl, 124, AREA); //Venom Dust Effect on target 
     2402                break; 
     2403        case NC_DEATHHAND:      //Necro Death Hand [Brain] 
     2404                skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag|SD_LEVEL);//Hide skill yell 
     2405                clif_specialeffect(bl, 65, AREA); //Power absorb Effect on target 
     2406                if (battle_check_living(tstatus->race, tstatus->def_ele)){ //Check if target is a living creature before proceed 
     2407                        int chance = (10+(skilllv*2)+(status_get_luk(src)-status_get_luk(bl))/5);  
     2408                        //10% chance + 2% per skilllv + (caster luk - target luk)/5 % 
     2409                                if (rand()%100 < chance) { 
     2410                                        clif_skill_nodamage(src,bl,skillid,-1,flag|SD_LEVEL);//Hide skill yell 
     2411                                        status_percent_damage(src, bl, 100, 0, true); //Instant kill our target 
     2412                                } else clif_skill_fail(sd,skillid,0,0); 
     2413                } 
     2414                break; 
     2415                //Custom Job End 
    23262416 
    23272417        case LK_JOINTBEAT: // decide the ailment first (affects attack damage and effect) 
     
    26592749                skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
    26602750                break; 
     2751                //Custom Jobs (blackmagic) 
     2752 
     2753         
     2754        case AD_DARKHEAL: // Adept Dark Heal [Brain] 
     2755                clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite Effect on target 
     2756                skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); //Exception because we must add the effect manually =/ 
     2757                break; 
     2758        case NC_PWSUFFER: //Necro Power Word: Suffer [Brain] 
     2759                if(battle_check_living(tstatus->race,tstatus->def_ele)){ 
     2760                        skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2761                        clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 
     2762                        clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     2763                        //If target is on suffering status already, just cause damage, no extra DoT 
     2764                        if(!status_get_sc(bl)->data[SC_SUFFER]) 
     2765                                skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,skilllv,flag); 
     2766                } 
     2767                else clif_skill_fail(sd,skillid,0,0); 
     2768                break; 
     2769        case NC_DRAINLIFE: // Necromancer Drain Life [Brain] 
     2770                { 
     2771                        int heal = skill_attack(BF_MAGIC, src, src, bl, skillid, skilllv, tick, flag)/2; 
     2772                        if (heal > 0 && (battle_check_living(tstatus->race,tstatus->def_ele))){ 
     2773                                clif_skill_nodamage(NULL, src, AL_HEAL, heal, 1); 
     2774                                status_heal(src, heal, 0, 0); 
     2775                        } 
     2776                } 
     2777                clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 
     2778                clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     2779                break; 
     2780        case WL_SHADOWBOLT: // Warlock Shadowbolt [Brain] 
     2781                clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 
     2782                clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     2783                skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); //Again, the effect...cursed effects... 
     2784                break; 
     2785        case WL_SHADOWBURN: // Warlock Shadow Burn [Brain] 
     2786                clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 
     2787                clif_specialeffect(bl, 32, AREA); //Flame Engulf Effect on target 
     2788                clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     2789                skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2790                break; 
     2791        case WL_SEARING: // Warlock Searing Pain [Brain] 
     2792                clif_specialeffect(bl, 406, AREA); //Fire on Head Effect on target 
     2793                clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster 
     2794                skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2795                //if target is on searing status already, just cause damage, no extra DoT 
     2796                if(!status_get_sc(bl)->data[SC_SEARING]) 
     2797                        skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,4,flag); 
     2798                break; 
     2799        case WL_CONFLAGRATE: // Warlock Conflagrate [Brain] 
     2800                if(status_get_sc(bl)->data[SC_IMMOLATE]) { // Can only be casted if target is immolating status 
     2801                        clif_specialeffect(bl, 183, AREA); //Explosion Effect on target 
     2802                        clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster 
     2803                        skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2804                        status_change_end(bl,SC_IMMOLATE,-1); //End Immolating status 
     2805                } else clif_skill_fail(sd,skillid,0,0); 
     2806                break; 
     2807        case WL_IMMOLATE: // Warlock Immolate [Brain] 
     2808                clif_specialeffect(bl, 635, AREA); //Dragon Fire Effect on target 
     2809                clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster 
     2810                skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2811                //If Target is on searing pain status, will change immolating status instead 
     2812                if(!status_get_sc(bl)->data[SC_IMMOLATE]) 
     2813                        skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,5,flag); 
     2814                break; 
     2815        case WL_CURSEDOOM: // Warlock Curse of Doom [Brain] 
     2816                clif_specialeffect(bl, 183, AREA); //Explosion Effect on target 
     2817                skill_attack(BF_MAGIC,src,bl,bl,skillid,skilllv,tick,flag|SD_ANIMATION); 
     2818                break; 
     2819        case WL_PWAGONY: // Warlock Power Word: Agony [Brain] 
     2820                if(battle_check_living(tstatus->race,tstatus->def_ele)){ 
     2821                        skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 
     2822                        clif_specialeffect(bl, 587, AREA); //Big Purple Flame Effect on target 
     2823                        clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     2824                        //If target is on Agonizing status already, just cause damage, no extra DoT 
     2825                        if(!status_get_sc(bl)->data[SC_AGONY]) 
     2826                                skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,skilllv,flag); 
     2827                } 
     2828                else clif_skill_fail(sd,skillid,0,0); 
     2829                break; 
     2830 
     2831                //Custom Job End 
    26612832 
    26622833        case NPC_MAGICALATTACK: 
     
    28643035        if(status_isdead(src)) 
    28653036                return 1; 
    2866  
    2867         if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO) 
     3037//Custom Jobs (blackmagic) 
     3038        /*if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO)*/ 
     3039        // Added DEATHPACT [Brain] 
     3040        //if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO) 
     3041        if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO && skillid != NC_DEATHPACT) 
    28683042                return 1; 
    2869  
     3043//Custom Job End 
    28703044        tstatus = status_get_status_data(bl); 
    28713045        sstatus = status_get_status_data(src); 
     
    28913065                        } 
    28923066                        break; 
     3067                        //Custom Jobs (blackmagic) 
     3068                 
     3069                case AD_DARKHEAL:       // Adept Dark Heal [Brain] 
     3070                        // Only player casted spells can be offensive (copyed from AL_HEAL code above) 
     3071                        if (sd && (battle_check_living(tstatus->race,tstatus->def_ele)) //Check if target is a living creature 
     3072                                && !pc_checkskill(dstsd,NC_PHYLACTERY) //Or he doesnt have Phylactery (non-perma undead) 
     3073                                && !status_get_sc(bl)->data[SC_OVERWHELMING]) { //Or Overwhelming Evil is off (most cases) 
     3074                                if (battle_check_target(src, bl, BCT_ENEMY) < 1) { 
     3075                                        //Offensive heal does not works on non-enemies. 
     3076                                        clif_skill_fail(sd,skillid,0,0); 
     3077                                        return 0; 
     3078                                } 
     3079                                return skill_castend_damage_id(src, bl, skillid, skilllv, tick, flag); 
     3080                        } 
     3081                        break; 
     3082                 
     3083                        //Custom Job End 
    28933084                case NPC_SMOKING: //Since it is a self skill, this one ends here rather than in damage_id. [Skotlex] 
    28943085                        return skill_castend_damage_id (src, bl, skillid, skilllv, tick, flag); 
     
    29203111                        if (status_isimmune(bl) || (dstmd && dstmd->class_ == MOBID_EMPERIUM)) 
    29213112                                heal=0; 
     3113                        //Custom Jobs (blackmagic) 
     3114                        // Profane Soul reduces the healed recieved by 3% per skilllv [Brain] 
     3115                        if(dstsd) { 
     3116                                heal = heal * (100 - pc_checkskill(dstsd,AD_PROFANE)*3)/100; 
     3117                                //Wont heal even if he got elemental armors [Brain] 
     3118                                if(pc_checkskill(dstsd,NC_PHYLACTERY)) heal = skilllv; 
     3119                        } 
     3120                        //Custom Job End 
    29223121                        if (sd) { 
    29233122                                if ((i = pc_skillheal_bonus(sd, skillid))) 
     
    29553154                } 
    29563155                break; 
    2957  
     3156        //Custom Jobs (blackmagic) 
     3157         
     3158        case AD_DARKHEAL: // Adept Dark Heal [Brain] 
     3159                { 
     3160                        int heal = skill_calc_heal(src, bl, skilllv); 
     3161                        if (status_isimmune(bl) || (dstmd && dstmd->class_ == MOBID_EMPERIUM)) 
     3162                                heal=0; 
     3163                        if(battle_check_undead(tstatus->race,tstatus->def_ele) || tstatus->race==RC_UNDEAD // Check if our target is undead or demon 
     3164                                || tstatus->race==RC_DEMON || pc_checkskill(dstsd,NC_PHYLACTERY)//Or has a phylactery 
     3165                                || status_get_sc(bl)->data[SC_OVERWHELMING]) { //Or is on OverWhelm status, checking again... 
     3166                                clif_skill_nodamage(src, bl, skillid, heal, 1); 
     3167                                clif_skill_nodamage(NULL, bl, AL_HEAL, heal, 1); //Subtle way to show heal numbers AND effect =D 
     3168                                status_heal(bl, heal, 0, 0); 
     3169                        } else { 
     3170                                clif_skill_nodamage(src, bl, skillid, 0, 1); 
     3171                                clif_skill_nodamage(NULL, bl, AL_HEAL, 0, 1); 
     3172                        } 
     3173                clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite Effect on target 
     3174                } 
     3175                break; 
     3176        //Custom Job End 
    29583177        case PR_REDEMPTIO: 
    29593178                if (sd && !(flag&1)) { 
     
    29883207                 
    29893208        case ALL_RESURRECTION: 
     3209        //Custom Jobs (blackmagic) 
     3210        case NC_DEATHPACT: // Necro Death Pact [Brain] 
     3211        //Custom Job End 
    29903212                if(sd && map_flag_gvg(bl->m)) 
    29913213                {       //No reviving in WoE grounds! 
     
    30053227                        case 3: per=50; break; 
    30063228                        case 4: per=80; break; 
     3229                        //Custom Jobs (blackmagic) 
     3230                        case 5: per=100; break; //Added a 5th level because NC_DEATHPACT got 5 lvs [Brain] 
     3231                        //Custom Job End 
    30073232                        } 
    30083233                        if(dstsd && dstsd->special_state.restart_full_recover)  
     
    30113236                        { 
    30123237                                clif_skill_nodamage(src,bl,ALL_RESURRECTION,skilllv,1); //Both Redemptio and Res show this skill-animation. 
     3238                                //Custom Jobs (blackmagic) 
     3239                                if(skillid==NC_DEATHPACT) { // Necro Death Pact [Brain] 
     3240                                        clif_skill_nodamage(src, bl, skillid, skilllv,  
     3241                                                sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3242                                        break; 
     3243                                } 
     3244                                //Custom Job End 
    30133245                                if(sd && dstsd && battle_config.resurrection_exp > 0)  
    30143246                                { 
     
    30293261                } 
    30303262                break; 
     3263                //Custom Jobs (blackmagic) 
     3264         
     3265        case AD_PWBLIND: // Adept Power Word: Blind [Brain] 
     3266                if(!tsc->data[type]) { 
     3267                        clif_skill_nodamage(src, bl, skillid, skilllv,1); 
     3268                        if(sc_start(bl, type,(30 + skilllv * 10 + (status_get_lv(src) - sstatus->int_)/5), 
     3269                                skilllv, skill_get_time(skillid,skilllv)))  
     3270                        { 
     3271                                if(dstmd) mob_unlocktarget(dstmd,tick);  //Removes current target 
     3272                                clif_specialeffect(bl, 379, AREA); //379.Soul Drain (2nd Part) 
     3273                                break; 
     3274                        } 
     3275                } else clif_skill_fail(sd,skillid,0,0); 
     3276                break; 
     3277  
     3278        case AD_PWFEAR: // Adept Power Word: Fear [Brain] 
     3279                if(!tsc->data[type]) { 
     3280                        clif_skill_nodamage(src, bl, skillid, skilllv,1); 
     3281                        if(dstsd) 
     3282                                type = SC_CONFUSION; //Players cant be affected by SC_FEAR 
     3283                        if(sc_start(bl, type, (30 + skilllv * 10), skilllv, skill_get_time(skillid,skilllv))) 
     3284                        { 
     3285                                clif_specialeffect(bl, 372, AREA); //372.Death 
     3286                                unit_escape(bl, bl, 30); 
     3287                        } 
     3288                } else clif_skill_fail(sd,skillid,0,0); 
     3289                break; 
     3290        case WL_HOWLOFPAIN: // Warlock Howl of Pain [Brain] 
     3291                //These must be here first or else the code wont execute them. 
     3292                clif_specialeffect(src, 670, AREA); // Monster skill SCREAM effect on caster (no sound) 
     3293                clif_soundeffectall(bl, "wraith_die.wav", 0, AREA); //Wraith Laugh Sound 
     3294                if (flag & 1) { 
     3295                        //Check if target is a living creature AND a valid enemy 
     3296                        if (battle_check_target(src, bl, BCT_ENEMY) && battle_check_living(tstatus->race,tstatus->def_ele)) 
     3297                        { 
     3298                                if(sc_start(bl,type,10+skilllv*10,skilllv,skill_get_time(skillid,skilllv))) 
     3299                                { 
     3300                                        if(dstmd) //PROVOKE Effect on mobs 
     3301                                                mob_target(dstmd,src,skill_get_range2(src,skillid,skilllv)); 
     3302                                        // Breaks Frozen and Sleep status 
     3303                                        if(tsc && tsc->count){ 
     3304                                                if(tsc->data[SC_FREEZE]) 
     3305                                                        status_change_end(bl,SC_FREEZE,-1); 
     3306                                                if(tsc->data[SC_SLEEP]) 
     3307                                                        status_change_end(bl,SC_SLEEP,-1); 
     3308                                        } 
     3309                                        clif_emotion(bl,6); //anger emote on target 
     3310                                        break; 
     3311                                } else { //What will happen if the status fail: 
     3312                                        { 
     3313                                                if (sd) //If is a player 
     3314                                                        clif_skill_fail(sd,skillid,0,0); 
     3315                                                map_freeblock_unlock(); //Else is a mob 
     3316                                                return 0; 
     3317                                        } 
     3318                                        unit_skillcastcancel(bl, 2); //In any case, will cancel casting 
     3319                                } 
     3320                        } 
     3321                } else { 
     3322                        map_foreachinrange(skill_area_sub, src, 
     3323                                skill_get_splash(skillid, skilllv), BL_CHAR, 
     3324                                src, skillid, skilllv, tick, flag|BCT_ENEMY|1, 
     3325                                skill_castend_nodamage_id); 
     3326                        clif_skill_nodamage(src, bl, skillid, skilllv, 1); 
     3327                        map_freeblock_unlock(); 
     3328                        return 1; 
     3329                } 
     3330                break; 
     3331        case WL_HOWLOFTERROR: // Warlock Howl of Terror [Brain] 
     3332                if (flag & 1) { 
     3333                        int rate; 
     3334                        //Check if target is a living creature AND a valid enemy 
     3335                        if (battle_check_target(src, bl, BCT_ENEMY) 
     3336                                && battle_check_living(tstatus->race,tstatus->def_ele)) { 
     3337                                rate = 10 + skilllv*5 + pc_checkskill(sd,AD_PWFEAR)*3; 
     3338                                if(dstsd) {  
     3339                                        rate -= 10; // 10% less chance on players 
     3340                                        type = SC_CONFUSION; //Players cant be affected by SC_FEAR 
     3341                                } 
     3342                                if(sc_start(bl,type,rate,skilllv,skill_get_time(skillid,skilllv))) 
     3343                                        clif_specialeffect(bl, 372, AREA); //Same as PW: Fear 
     3344                        } 
     3345                } else { 
     3346                        map_foreachinrange(skill_area_sub, src, 
     3347                                skill_get_splash(skillid, skilllv), BL_CHAR, 
     3348                                src, skillid, skilllv, tick, flag|BCT_ENEMY|1, 
     3349                                skill_castend_nodamage_id); 
     3350                        clif_skill_nodamage(src, bl, skillid, skilllv, 1); 
     3351                } 
     3352                clif_specialeffect(src, 668, AREA); // Monster skill SCREAM effect on caster (with sound) 
     3353                break; 
     3354 
     3355                //Custom Job End 
    30313356 
    30323357        case AL_DECAGI: 
     
    30463371                } 
    30473372                break; 
     3373        //Custom Jobs (blackmagic) 
     3374        case NC_DARKMOON: //Necro Dark Moon [Brain] 
     3375                if (flag&1) { 
     3376                        //Check my enemies 
     3377                        if (battle_check_target(src, bl, BCT_ENEMY) && 
     3378                                battle_check_living(tstatus->race,tstatus->def_ele)) 
     3379                        { 
     3380                                if(sc_start(bl,SC_BLIND,50,skilllv,skill_get_time(skillid,skilllv))) 
     3381                                        clif_specialeffect(bl, 580, AREA); //Box of Rain effect on target 
     3382                        } 
     3383                        else { //Now my Party members 
     3384                                if (sd == NULL || sd->status.party_id == 0 || (flag & 1)) { 
     3385                                        clif_skill_nodamage(bl,bl,skillid,skilllv, 
     3386                                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3387                                        clif_specialeffect(bl, 521, AREA); //Red Flashing Aura Sprite effect on target 
     3388                                } else if (sd) { 
     3389                                        party_foreachsamemap(skill_area_sub, sd,skill_get_splash(skillid, skilllv), 
     3390                                                src,skillid,skilllv,tick, flag|BCT_ALL|1,skill_castend_nodamage_id); 
     3391                                } 
     3392                        } 
     3393                } else { 
     3394                        map_foreachinrange(skill_area_sub, src, skill_get_splash(skillid, skilllv), BL_CHAR, 
     3395                                src, skillid, skilllv, tick, flag|BCT_ALL|1, skill_castend_nodamage_id); 
     3396                        clif_skill_nodamage(src, bl, skillid, skilllv, 1); 
     3397                } 
     3398                clif_specialeffect(src, 407, AREA); //Soul Change Effect on caster 
     3399                clif_soundeffectall(bl, "se_wolf1.wav", 0, AREA); //Wolf Howl Sound 
     3400                break; 
     3401        case NC_REQUIEM: //Necro Requiem [Brain] 
     3402                if (flag&1) { 
     3403                        //Check my enemies 
     3404                        if (battle_check_target(src, bl, BCT_ENEMY) && 
     3405                                        battle_check_living(tstatus->race,tstatus->def_ele)) 
     3406                        { 
     3407                                if(sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))) 
     3408                                        clif_specialeffect(bl, 578, AREA); //Box of Curse effect on target 
     3409                        } 
     3410                        else { //Now my Party members 
     3411                                if (sd == NULL || sd->status.party_id == 0 || (flag & 1)) { 
     3412                                        clif_skill_nodamage(bl,bl,skillid,skilllv, 
     3413                                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3414                                        clif_specialeffect(bl, 572, AREA); //Warmth Soul effect on target 
     3415                                } else if (sd) { 
     3416                                        party_foreachsamemap(skill_area_sub, sd,skill_get_splash(skillid, skilllv), 
     3417                                                src,skillid,skilllv,tick, flag|BCT_ALL|1,skill_castend_nodamage_id); 
     3418                                } 
     3419                        } 
     3420                } else { 
     3421                        map_foreachinrange(skill_area_sub, src, skill_get_splash(skillid, skilllv), BL_CHAR, 
     3422                                src, skillid, skilllv, tick, flag|BCT_ALL|1, skill_castend_nodamage_id); 
     3423                        clif_skill_nodamage(src, bl, skillid, skilllv, 1); 
     3424                } 
     3425                int rnds = rand()%3; 
     3426                switch(rnds) { 
     3427                        case 1: 
     3428                                clif_soundeffectall(bl, "chant1.wav", 0, AREA); //Chanting Sound 
     3429                                break; 
     3430                        case 2: 
     3431                                clif_soundeffectall(bl, "chant2.wav", 0, AREA); //Chanting Sound 
     3432                                break; 
     3433                        case 3: 
     3434                                clif_soundeffectall(bl, "chant3.wav", 0, AREA); //Chanting Sound 
     3435                                break; 
     3436                } 
     3437                break; 
     3438 
     3439                //Custom Job End 
    30483440 
    30493441        case PR_LEXDIVINA: 
     
    33483740        case NPC_DEFENDER: 
    33493741        case NPC_MAGICMIRROR: 
     3742                //Custom Jobs (blackmagic) 
     3743        case ALL_ATFIELD:       //AT Field [Brain] 
     3744                //Custom Job End 
    33503745                clif_skill_nodamage(src,bl,skillid,skilllv, 
    33513746                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
    33523747                break; 
     3748        //Custom Jobs (blackmagic) 
     3749         
     3750        case AD_LUST:   // Adept Blood Lust [Brain] 
     3751                clif_specialeffect(src, 220, AREA); //Berserk Pot effect 
     3752                clif_specialeffect(src, 455, AREA); //Red Lightnings 
     3753                clif_skill_nodamage(src,bl,skillid,skilllv, 
     3754                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3755                break; 
     3756        case NC_DECREPIFY: //Necro Decrepify [Brain] 
     3757                if(battle_check_living(tstatus->race,tstatus->def_ele)){ 
     3758                        clif_specialeffect(bl, 403, AREA); //Mind Breaker Effect on target 
     3759                        clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 
     3760                        clif_skill_nodamage(src,bl,skillid,skilllv, 
     3761                                sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3762                } 
     3763                else clif_skill_fail(sd,skillid,0,0); 
     3764                break; 
     3765        case WL_CURSEWEAKNESS: // Warlock Curse of Weakness [Brain] 
     3766                clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite effect on target 
     3767                clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster 
     3768                clif_skill_nodamage(src,bl,skillid,skilllv, 
     3769                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3770                break; 
     3771        case WL_CURSEEXHAUST: // Warlock Curse of Exhaustion [Brain] 
     3772                clif_specialeffect(bl, 135, AREA); //Ice Breaking effect on target 
     3773                clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster 
     3774                clif_skill_nodamage(src,bl,skillid,skilllv, 
     3775                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3776                break; 
     3777        case WL_CURSETONGUES: // Warlock Curse of Tongues [Brain] 
     3778                clif_specialeffect(bl, 72, AREA); //Spinning Lights effect on target 
     3779                clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster 
     3780                clif_skill_nodamage(src,bl,skillid,skilllv, 
     3781                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3782                break; 
     3783        case WL_CURSEDOOM: // Warlock Curse of Doom (temp) [Brain] 
     3784                if(!tsc->data[type]) { 
     3785                        clif_specialeffect(bl, 196, AREA); //Small Curse Reaper effect on target 
     3786                        clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster 
     3787                        clif_skill_nodamage(src,bl,skillid,skilllv, 
     3788                                sc_start4(bl,type,100, 
     3789                                        skilllv,skillid,src->id,skill_get_time(skillid,skilllv),1000)); 
     3790                } else clif_skill_fail(sd,skillid,0,0); 
     3791                break; 
     3792        case WL_OVERWHELMING: // Warlock Overwhelming Evil [Brain] 
     3793                clif_specialeffect(src, 348, AREA); //1000 Blades Trespassing effect on caster 
     3794                clif_skill_nodamage(src,bl,skillid,skilllv, 
     3795                        sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 
     3796                break; 
     3797         
     3798        //Custom Job End 
    33533799        case MG_SIGHT: 
    33543800        case AL_RUWACH: 
     
    35674013                clif_skill_nodamage(src,bl,skillid,skilllv,i?1:0); 
    35684014                break; 
     4015                //Custom Jobs (blackmagic) 
     4016         
     4017        case WL_DRAINSOUL: // Warlock Drain Soul [Brain] 
     4018                i = 0; 
     4019                if (dstsd && (sd == dstsd || map_flag_vs(src->m))) 
     4020                {       //check if target is a player and we are in versus map 
     4021                        i = tstatus->max_sp * skilllv/100;//i = SkillLv% of player Max SP 
     4022                        if(dstsd->spiritball && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER) { 
     4023                                i += dstsd->spiritball * 5;//will drain Monk Spirits and regain 5 SP per Spirit 
     4024                                pc_delspiritball(dstsd,dstsd->spiritball,0); 
     4025                        } 
     4026                } else if (dstmd && !(tstatus->mode&MD_BOSS) && battle_check_living(tstatus->race,tstatus->def_ele)) 
     4027                {       // check if target is a monster and not a Boss 
     4028                        i = dstmd->level/5 * skilllv;//i = mob level/5 * Skill Lvl 
     4029                        mob_target(dstmd,src,0);//This will turn the mob agressive against the caster 
     4030                } 
     4031                if(i < skilllv) i = skilllv; //Minimum 1 sp per skill lvl 
     4032                if (i) { 
     4033                        clif_specialeffect(src, 253, AREA); //Absorb Mana effect on caster 
     4034                        clif_specialeffect(bl, 52, AREA); //Lightning Hit effect on target 
     4035                        status_heal(src, 0, i, 3); //caster drains sp 
     4036                        status_zap(bl, 0, i*skilllv); //target lost sp equal to 1*SkillLv the amount drained 
     4037                } 
     4038                clif_skill_nodamage(src,bl,skillid,skilllv,i?1:0); 
     4039                break; 
     4040                //Custom Job End 
    35694041 
    35704042        case AC_MAKINGARROW: 
     
    56356107                        src->m, x-i, y-i, x+i,y+i,BL_SKILL); 
    56366108                break; 
     6109                //Custom Jobs (blackmagic) 
     6110        case WL_HELLFIRE: // Warlock Hellfire [Brain] 
     6111                //clif_specialeffect(sd, 92, AREA); //Meteor Effect on caster, cant set on ground 
     6112                clif_skill_poseffect(src,WZ_METEOR,skilllv,x,y,tick); //Meteor Effect 
     6113                clif_skill_nodamage(src, src, skillid, 0, 1); //Lalala, just to show the skill yell correctly 
     6114                clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster 
     6115                // Continue reading because skill_unitsetting is bellow 
     6116                //Custom Job End 
    56376117 
    56386118        case MG_SAFETYWALL: 
     
    57946274                                md->deletetimer = add_timer (gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, md->bl.id, 0); 
    57956275                                mob_spawn (md); //Now it is ready for spawning. 
    5796                         } 
    5797                 } 
    5798                 break; 
     6276                                //Custom Jobs (blackmagic) 
     6277                                // @showsummon command implementation [Brainstorm] 
     6278                                if(sd->state.showsummon){ 
     6279                                        char output[256]; 
     6280                                        sprintf(output, 
     6281                                                "[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d", 
     6282                                                md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk); 
     6283                                        clif_disp_onlyself(sd,output,strlen(output)); 
     6284                                        sprintf(output, 
     6285                                                "[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d", 
     6286                                                md->name,md->status.rhw.atk,md->status.rhw.atk2,md->status.def,md->status.def2,md->status.mdef,md->status.mdef2,md->status.hit,md->status.flee); 
     6287                                        clif_disp_onlyself(sd,output,strlen(output)); 
     6288                                } 
     6289                                //Custom Job End 
     6290                        } 
     6291                } 
     6292                break; 
     6293 
     6294                //Custom Jobs (blackmagic)       
     6295        case AD_FAMILIAR: // Adept Summon Familiar [Brain] 
     6296                if( sd ) 
     6297                { 
     6298                        int id; 
     6299                        int mob_class; 
     6300                        struct mob_data* md; 
     6301  
     6302                        mob_class = pc_readglobalreg(sd, "ADEPT_FAMILIAR"); 
     6303                        if( mob_class == 0 ) 
     6304                        { 
     6305                                mob_class = mob_get_random_id(4, 0x1, 0); 
     6306                                pc_setglobalreg(sd, "ADEPT_FAMILIAR", mob_class); 
     6307                        } 
     6308                        id = mob_once_spawn(sd,src->m,src->x,src->y,"--en--",mob_class,1,""); 
     6309                        md = (struct mob_data *)map_id2bl(id); 
     6310                        if( md != NULL ) 
     6311                        { 
     6312                                md->master_id = sd->bl.id; 
     6313                                md->special_state.ai = 1; 
     6314                                md->status.mode = md->status.mode|MD_AGGRESSIVE; 
     6315                                status_calc_mob(md,0); //Recalc their stats based on passive bonus 
     6316                                md->status.hp = md->status.max_hp; //Must be here or the code wont update it 
     6317                                // @showsummon command implementation [Brainstorm] 
     6318                                if(sd->state.showsummon){ 
     6319                                        char output[256]; 
     6320                                        sprintf(output, 
     6321                                                "[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d", 
     6322                                                md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk); 
     6323                                        clif_disp_onlyself(sd,output,strlen(output)); 
     6324                                        sprintf(output, 
     6325                                                "[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d", 
     6326                                                md->name,md->status.rhw.atk,md->status.rhw.atk2,md->status.def,md->status.def2,md->status.mdef,md->status.mdef2,md->status.hit,md->status.flee); 
     6327                                        clif_disp_onlyself(sd,output,strlen(output)); 
     6328                                } 
     6329                                md->deletetimer = add_timer(gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, id, 0); 
     6330                        } 
     6331                } 
     6332                break; 
     6333        case NC_SKELETON: // Raise Skeleton [Brain] 
     6334        case NC_ARCHER: // Raise Archer Skeleton 
     6335        case NC_ZOMBIE: // Raise Zombie 
     6336        case NC_MUMMY: // Raise Mummy 
     6337        case NC_GHOST: // Raise Ghost 
     6338        case NC_SHADOW: // Raise Shadow 
     6339        case NC_WRAITH: // Raise Wraith 
     6340                if( sd ) 
     6341                { 
     6342                        static const int mob_skeleton[5]={ 3201, 3202, 3203, 3204, 3205 }; // Skeleton, Orc Skeleton, Soldier Skeleton, Pirate Skeleton, Skeleton General 
     6343                        static const int mob_archer[5]={ 3206, 3207, 3208, 3209, 3210 }; // Archer Skeleton, Firelock Soldier 
     6344                        static const int mob_zombie[5]={ 3211, 3212, 3213, 3214, 3215 }; // Zombie, Ghoul, Zombie Master 
     6345                        static const int mob_mummy[5]={ 3216, 3217, 3218, 3219, 3220 }; // Mummy, Ancient Mummy 
     6346                        static const int mob_ghost[5]={ 3221, 3222, 3223, 3224, 3225 }; // Whisper, Nightmare, Nightmare Terror 
     6347                        static const int mob_shadow[5]={ 3226, 3227, 3228, 3229, 3230 }; // Injustice, Raydric, Dullahan 
     6348                        static const int mob_wraith[5]={ 3231, 3232, 3233, 3234, 3235 }; // Wraith, Wraith Dead 
     6349                        int id; 
     6350                        int mob_class; 
     6351                        struct mob_data *md; 
     6352 
     6353                        switch( skillid ) 
     6354                        { 
     6355                                case NC_SKELETON: mob_class = mob_skeleton[skilllv-1]; break; 
     6356                                case NC_ARCHER:   mob_class = mob_archer[skilllv-1]; break; 
     6357                                case NC_ZOMBIE:   mob_class = mob_zombie[skilllv-1]; break; 
     6358                                case NC_MUMMY:    mob_class = mob_mummy[skilllv-1]; break; 
     6359                                case NC_GHOST:    mob_class = mob_ghost[skilllv-1]; break; 
     6360                                case NC_SHADOW:   mob_class = mob_shadow[skilllv-1]; break; 
     6361                                case NC_WRAITH:   mob_class = mob_wraith[skilllv-1]; break; 
     6362                                default: 
     6363                                        mob_class = 1002; // poring 
     6364                                        ShowDebug("skill_castend_pos2: undefined skill #%d used to raise mobs, defaulting to poring\n"); 
     6365                                        break; 
     6366                        } 
     6367                        id = mob_once_spawn(sd,src->m,src->x,src->y,"--ja--",mob_class,1,""); 
     6368                        if((md=(struct mob_data *)map_id2bl(id))) 
     6369                        { 
     6370                                md->master_id=sd->bl.id; 
     6371                                md->special_state.ai=1; 
     6372                                md->status.mode=md->db->status.mode|MD_AGGRESSIVE; 
     6373                                status_calc_mob(md,0); //Recalc their stats based on passive bonus 
     6374                                md->status.hp = md->status.max_hp; //Must be here or the code wont update it 
     6375                                // @showsummon command implementation [Brainstorm] 
     6376                                if(sd->state.showsummon){ 
     6377                                        char output[256]; 
     6378                                        sprintf(output, 
     6379                                                "[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d", 
     6380                                                md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk); 
     6381                                        clif_disp_onlyself(sd,output,strlen(output)); 
     6382                                        sprintf(output, 
     6383                                                "[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d", 
     6384                                                md->name,md->status.rhw.atk,md->status.rhw.atk2,md->status.def,md->status.def2,md->status.mdef,md->status.mdef2,md->status.hit,md->status.flee); 
     6385                                        clif_disp_onlyself(sd,output,strlen(output)); 
     6386                                } 
     6387                                md->deletetimer = add_timer(gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, id, 0); 
     6388                        } 
     6389                } 
     6390                break; 
     6391 
     6392 
     6393                //Custom Job End 
    57996394 
    58006395        // Slim Pitcher [Celest] 
     
    62096804        switch(skillid) 
    62106805        { 
    6211  
     6806//Custom Jobs (blackmagic) 
     6807        case WL_HELLFIRE: // Warlock Hellfire [Brain] 
     6808                if(map_flag_vs(src->m)) target = BCT_ALL; 
     6809                break; 
     6810//Custom Job End 
    62126811        case MG_SAFETYWALL: 
    62136812                val2=skilllv+1; 
     
    68067405                                } 
    68077406                                if (status_isimmune(bl)) 
    6808                                         heal = 0;       /* 黄金蟲カヌドヒヌル量 */ 
     7407                                        heal = 0;       /* 黁Eß蟲カヌドヒヌル量E*/ 
     7408                                //Custom Jobs (blackmagic) 
     7409                                // Profane Soul reduces the healed recieved by 3% per skilllv [Brain] 
     7410                                if(tsd) { 
     7411                                        heal = heal * (100 - pc_checkskill(tsd,AD_PROFANE)*3)/100; 
     7412                                        //Wont heal even if he got elemental armors [Brain] 
     7413                                        if(pc_checkskill(tsd,NC_PHYLACTERY)) heal = sg->skill_lv; 
     7414                                } 
     7415                                //Custom Job End 
    68097416                                clif_skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1); 
    68107417                                status_heal(bl, heal, 0, 0); 
     
    77088315                } 
    77098316                break; 
    7710         case MO_FINGEROFFENSIVE:                                //指匟 
     8317        case MO_FINGEROFFENSIVE:                                //持EŒŸ 
    77118318        case GS_FLING: 
    77128319                if (sd->spiritball > 0 && sd->spiritball < spiritball) { 
     
    78648471                } 
    78658472                break; 
     8473                //Custom Jobs (blackmagic)       
     8474        case AD_FAMILIAR: //Adept Familiar [Flavio] 
     8475                { 
     8476                        short familiar[1] ={ pc_readglobalreg(sd, "ADEPT_FAMILIAR") }; 
     8477                        int maxcount = skill_get_maxcount(skill,lv); 
     8478                        int count = 0; 
     8479                        count = mob_countslave_class(&sd->bl, 1, familiar ); 
     8480                        if( count >= maxcount ) 
     8481                        { 
     8482                                clif_skill_fail(sd,skill,0,0); 
     8483                                return 0; 
     8484                        } 
     8485                } 
     8486                break; 
     8487        case NC_SKELETON: // Raise Skeleton [Brain] 
     8488        case NC_ARCHER: // Raise Archer Skeleton 
     8489        case NC_ZOMBIE: // Raise Zombie 
     8490        case NC_MUMMY: // Raise Mummy 
     8491        case NC_GHOST: // Raise Ghost 
     8492        case NC_SHADOW: // Raise Shadow 
     8493        case NC_WRAITH: // Raise Wraith 
     8494                {// corrigido o limite de spawns [Flavio] 
     8495                        short summon1[5]={ 3201, 3202, 3203, 3204, 3205 }; // Skeleton, Orc Skeleton, Soldier Skeleton, Pirate Skeleton, Skeleton General 
     8496                        short summon2[5]={ 3206, 3207, 3208, 3209, 3210 }; // Archer Skeleton, Firelock Soldier 
     8497                        short summon3[5]={ 3211, 3212, 3213, 3214, 3215 }; // Zombie, Ghoul, Zombie Master 
     8498                        short summon4[5]={ 3216, 3217, 3218, 3219, 3220 }; // Mummy, Ancient Mummy 
     8499                        short summon5[5]={ 3221, 3222, 3223, 3224, 3225 }; // Whisper, Nightmare, Nightmare Terror 
     8500                        short summon6[5]={ 3226, 3227, 3228, 3229, 3230 }; // Injustice, Raydric, Dullahan 
     8501                        short summon7[5]={ 3231, 3232, 3233, 3234, 3235 }; // Wraith, Wraith Dead 
     8502                        int maxcount = skill_get_maxcount(skill,lv); 
     8503                        int count = 0; 
     8504                        switch( skill ) 
     8505                        { 
     8506                        case NC_SKELETON: count = mob_countslave_class(&sd->bl, 5, summon1); break; 
     8507                        case NC_ARCHER: count = mob_countslave_class(&sd->bl, 5, summon2); break; 
     8508                        case NC_ZOMBIE: count = mob_countslave_class(&sd->bl, 5, summon3); break; 
     8509                        case NC_MUMMY: count = mob_countslave_class(&sd->bl, 5, summon4); break; 
     8510                        case NC_GHOST: count = mob_countslave_class(&sd->bl, 5, summon5); break; 
     8511                        case NC_SHADOW: count = mob_countslave_class(&sd->bl, 5, summon6); break; 
     8512                        case NC_WRAITH: count = mob_countslave_class(&sd->bl, 5, summon7); break; 
     8513                        } 
     8514                        if( count >= maxcount ) 
     8515                        { 
     8516                                clif_skill_fail(sd,skill,0,0); 
     8517                                return 0; 
     8518                        } 
     8519                } 
     8520                break; 
     8521                //Custom Job End 
    78668522        case WZ_FIREPILLAR: // celest 
    78678523                if (lv <= 5)    // no gems required at level 1-5 
     
    80448700 
    80458701        if(!(type&2)){ 
    8046                 if( hp>0 && status->hp <= (unsigned int)hp) {                           /* HPチェック */ 
    8047                         clif_skill_fail(sd,skill,2,0);          /* HP䞍足倱敗通知 */ 
     8702                if( hp>0 && status->hp <= (unsigned int)hp) {                           /* HPチェチE‚¯ */ 
     8703                        clif_skill_fail(sd,skill,2,0);          /* HP䞍足Ešå€±æ•—通知 */ 
    80488704                        return 0; 
    80498705                } 
    8050                 if( sp>0 && status->sp < (unsigned int)sp) {                            /* SPチェック */ 
    8051                         clif_skill_fail(sd,skill,1,0);          /* SP䞍足倱敗通知 */ 
     8706                if( sp>0 && status->sp < (unsigned int)sp) {                            /* SPチェチE‚¯ */ 
     8707                        clif_skill_fail(sd,skill,1,0);          /* SP䞍足Ešå€±æ•—通知 */ 
    80528708                        return 0; 
    80538709                } 
     
    82968952                        status_change_end(bl, SC_SUFFRAGIUM, -1); 
    82978953                } 
     8954                //Custom Jobs (blackmagic) 
     8955                 
     8956                if (sc->data[SC_DECREPIFY]) // Necro Decrepify [Brain] 
     8957                        if(sc->data[SC_DECREPIFY]->val2>=3) 
     8958                                time += time * 25/100; //+25% cast time 
     8959                if (sc->data[SC_CURSETONGUES]) { //Warlock Curse of Tongues [Brain] 
     8960                        time += time * sc->data[SC_CURSETONGUES]->val2 / 100; 
     8961                        status_change_end(bl, SC_CURSETONGUES, -1); 
     8962                } 
     8963                 
     8964                //Custom Job End 
    82988965                if (sc->data[SC_MEMORIZE]) { 
    82998966                        time>>=1; 
     
    1109111758        return 0; 
    1109211759} 
     11760//Custom Jobs (blackmagic) 
     11761int skill_additem(struct block_list* src, struct block_list *bl, int itemid, int amount)// ITEM GIVER [Brain] 
     11762{ 
     11763        struct map_session_data *sd = NULL, *tsd = NULL; 
     11764 
     11765        nullpo_retr(1, src); 
     11766        nullpo_retr(1, bl);      
     11767 
     11768        if (src->m != bl->m) 
     11769                return 1; 
     11770        if (bl->prev == NULL) 
     11771                return 1; 
     11772        if (src->type == BL_PC) 
     11773                sd = (struct map_session_data *)src; 
     11774        if (bl->type == BL_PC) 
     11775                tsd = (struct map_session_data *)bl; 
     11776        if (status_isdead(bl)) 
     11777                return 1; 
     11778 
     11779        int eflag; 
     11780        struct item item_tmp; 
     11781        struct block_list tbl; 
     11782         
     11783        memset(&item_tmp,0,sizeof(item_tmp)); 
     11784        memset(&tbl,0,sizeof(tbl)); 
     11785 
     11786        item_tmp.nameid = itemid; 
     11787        item_tmp.identify = 1; 
     11788        tbl.id = 0; 
     11789 
     11790        clif_takeitem(&sd->bl,&tbl); 
     11791        eflag = pc_additem(sd,&item_tmp,amount); 
     11792        if(eflag) { 
     11793                clif_additem(sd,0,0,eflag); 
     11794                map_addflooritem(&item_tmp,amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); 
     11795        } 
     11796        return 0; 
     11797} 
     11798//Custom Job End 
  • src/map/skill.h

    r1 r10  
    320320 
    321321int skill_arrow_create( struct map_session_data *sd,int nameid); 
     322 
     323//Custom Jobs (blackmagic) 
     324int skill_additem(struct block_list* src, struct block_list *bl, int itemid, int amount); // Item giver func [Brain] 
     325//Custom Job End 
    322326 
    323327// mobƒXƒLƒ‹‚Ì‚œ‚ß 
     
    956960 
    957961        ALL_INCCARRY = 681, 
     962 
     963        //Custom Jobs (blackmagic) 
     964        AD_PWBLIND = 700,       // Custom Skills [Brainstorm] 
     965        AD_PWFEAR, 
     966        AD_DARKHEAL, 
     967        AD_BLOODPACT, 
     968        AD_LUST, 
     969        AD_FERVOR, 
     970        AD_PROFANE, 
     971        AD_DARKFAITH, 
     972        AD_FAMILIAR, 
     973        AD_SUMMONS, 
     974 
     975        NC_PHYLACTERY, //710 
     976        NC_UNDEAD, 
     977        NC_DEATHHAND, 
     978        NC_GHOULTOUCH, 
     979        NC_SKELETON, 
     980        NC_ZOMBIE, 
     981        NC_ARCHER, 
     982        NC_MUMMY, 
     983        NC_GHOST, 
     984        NC_SHADOW, 
     985        NC_WRAITH, 
     986        NC_REQUIEM, 
     987        NC_DARKMOON, 
     988        NC_PWSUFFER, 
     989        NC_DECREPIFY, 
     990        NC_DRAINLIFE, 
     991        NC_DEATHPACT, 
     992 
     993        ALL_ATFIELD, //GM SKILL 
     994 
     995        WL_CURSETONGUES =732, //732 
     996        WL_CURSEDOOM, 
     997        WL_CURSEEXHAUST, 
     998        WL_CURSEWEAKNESS, 
     999        WL_SEARING, 
     1000        WL_HELLFIRE, 
     1001        WL_CONFLAGRATE, 
     1002        WL_IMMOLATE, 
     1003        WL_SHADOWBOLT, 
     1004        WL_SHADOWBURN, 
     1005        WL_HOWLOFPAIN, 
     1006        WL_DEMONOLOGY, 
     1007        WL_HOWLOFTERROR, 
     1008        WL_PWAGONY, 
     1009        WL_OVERWHELMING, 
     1010        WL_SOULSTEAL, 
     1011        WL_DRAINSOUL, 
     1012        WL_CORRUPTION, //749 
     1013// STOP! Cant use 800 (homun skills) NOR 900 (guild skills) 
     1014         
     1015        //Custom Job End 
     1016 
    9581017 
    9591018        KN_CHARGEATK = 1001, 
  • 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                                 
  • src/map/status.h

    r1 r10  
    296296        SC_SPREGEN, 
    297297        SC_WALKSPEED, 
     298        //Custom Jobs (blackmagic) 
     299        SC_DECREPIFY, // New status [brain] 
     300        SC_LUST, 
     301        SC_DARKMOON, 
     302        SC_REQUIEM, 
     303        SC_DEATHPACT, 
     304        SC_ATFIELD, 
     305        SC_SUFFER, 
     306        SC_SEARING, 
     307        SC_IMMOLATE, 
     308        SC_AGONY, 
     309        SC_CURSETONGUES, 
     310        SC_DOOM, 
     311        SC_CURSEWEAKNESS, 
     312        SC_CURSEEXHAUST, 
     313        SC_OVERWHELMING, 
     314        SC_FEAR, 
     315//Custom Job End 
    298316        SC_MAX, //Automatically updated max, used in for's to check we are within bounds. 
    299317} sc_type; 
     
    450468        SI_BOSSMAPINFO          = 253, 
    451469        //SI_TURTLEGENERAL      = 260, //All mobs display as Turtle General 
    452         //SI_BIOMOBTRICKDEAD    = 263, //Bio Mob effect on you and SI_TRICKDEAD 
     470        SI_BIOMOBTRICKDEAD      = 263, //Bio Mob effect on you and SI_TRICKDEAD 
    453471        //SI_BLURRY             = 264, //For short time blurry screen and get Gloria icon 
    454472        //SI_FOODSTR            = 271, //Same as 241 
  • src/map/unit.c

    r1 r10  
    306306        if (sc && sc->data[SC_CONFUSION]) //Randomize the target position 
    307307                map_random_dir(bl, &ud->to_x, &ud->to_y); 
     308        //Custom Jobs (blackmagic) 
     309        if (sc && sc->data[SC_FEAR]) //Flee from my target [Brainstorm] 
     310                unit_escape(bl, tbl, 15); 
     311        //Custom Job End 
    308312 
    309313        if(ud->walktimer != -1) {