- Timestamp:
- 07/02/08 22:46:07 (17 years ago)
- Location:
- src
- Files:
-
- 8 modified
Legend:
- Unmodified
- Added
- Removed
-
src/common/mmo.h
r18 r22 31 31 #define MAX_FAME 1000000000 32 32 #define MAX_CART 100 33 #define MAX_SKILL 1 100 // Bumped to 1100 for new quest skills, will need to further increase one day... [DracoRPG]33 #define MAX_SKILL 1600 // Bumped to 1100 for new quest skills, will need to further increase one day... [DracoRPG] 34 34 #define GLOBAL_REG_NUM 96 35 35 #define ACCOUNT_REG_NUM 64 … … 526 526 JOB_XMAS, 527 527 JOB_SUMMER, 528 JOB_ADEPT = 30, // [Brain] 529 JOB_NECROMANCER, // [Brain] 530 JOB_WARLOCK, 531 528 532 JOB_MAX_BASIC, 529 533 … … 579 583 JOB_STAR_GLADIATOR2, 580 584 JOB_SOUL_LINKER, 581 JOB_NECROMANCER, 582 JOB_ADEPT, 583 JOB_WARLOCK, 585 584 586 JOB_MAX, 585 587 }; -
src/map/pc.c
r19 r22 1 // Copyright (c) Athena Dev Teams - Licensed under GNU GPL =D1 // Copyright (c) Athena Dev Teams - Licensed under GNU GPL 2 2 // For more information, see LICENCE in the main folder 3 3 … … 754 754 if (battle_config.disp_zeny) 755 755 sd->state.showzeny = 1; 756 <<<<<<< .mine757 756 //Vanaheim settings [Brainstorm] 758 757 if (battle_config.disp_summon_stats) // Battle Flag to Show Summoned Monster Stats [Brain] 759 758 sd->state.showsummon = 1; 760 759 761 =======762 //Custom Job (blackmagick)763 //Vanaheim settings [Brainstorm]764 if (battle_config.disp_summon_stats) // Battle Flag to Show Summoned Monster Stats [Brain]765 sd->state.showsummon = 1;766 767 >>>>>>> .r18768 760 if (!(battle_config.display_skill_fail&2)) 769 761 sd->state.showdelay = 1; … … 3898 3890 class_ = MAPID_SUMMER; 3899 3891 break; 3900 <<<<<<< .mine3901 3892 //Possible to be in the wrong spot? 3902 3893 case JOB_NECROMANCER: // Necromancer [Brain] 3903 3894 class_ |= JOBL_2_1; 3904 3895 class_ |= MAPID_ADEPT; 3905 =======3906 //Custom Jobs (blackmagic)3907 + case JOB_NECROMANCER: // Necromancer [Brain]3908 class_ |= JOBL_2_1;3909 class_ |= MAPID_ADEPT;3910 break;3911 case JOB_WARLOCK: // Warlock [Brain]3912 class_ |= JOBL_2_2;3913 case JOB_ADEPT: // Adept [Brain]3914 class_ |= MAPID_ADEPT;3915 >>>>>>> .r183916 3896 break; 3917 3897 case JOB_WARLOCK: // Warlock [Brain] … … 4139 4119 case JOB_NINJA: 4140 4120 return msg_txt(620); 4141 <<<<<<< .mine4142 4121 case JOB_ADEPT: // Adept [Brain] 4143 4122 return msg_txt(1000); … … 4145 4124 return msg_txt(1001); 4146 4125 case JOB_WARLOCK: // Warlock [Flavio] 4147 =======4148 //Custom Jobs (blackmagic)4149 case JOB_ADEPT: // Adept [Brain]4150 return msg_txt(1000);4151 case JOB_NECROMANCER: // Necromancer [Brain]4152 return msg_txt(1001);4153 case JOB_WARLOCK: // Warlock [Flavio]4154 >>>>>>> .r184155 4126 return msg_txt(1002); 4156 4127 -
src/map/pc.h
r19 r22 1 // Copyright (c) Athena Dev Teams - Licensed under GNU GPL =D1 // Copyright (c) Athena Dev Teams - Licensed under GNU GPL 2 2 // For more information, see LICENCE in the main folder 3 3 … … 114 114 unsigned short autolootid; // [Zephyrus] 115 115 unsigned noks : 3; // [Zeph Kill Steal Protection] 116 <<<<<<< .mine117 116 unsigned showsummon : 1; //Show summoned monster stats [Brainstorm] 118 =======119 //Custom Jobs (blackmagic)120 121 //Vanaheim settings [Brainstorm]122 unsigned showsummon :1; //Show summoned monster stats [Brainstorm]123 124 //Custom Job End125 unsigned god :1; //[Sketchy]126 unsigned demon :1; //[Sketchy]127 >>>>>>> .r17128 117 bool changemap; 129 118 struct guild *gmaster_flag; -
src/map/skill.c
r19 r22 821 821 sc_start(bl,SC_CRITICALWOUND,100,skilllv,skill_get_time2(skillid,skilllv)); 822 822 break; 823 <<<<<<< .mine824 823 case NC_GHOULTOUCH: //Necro Ghoul Touch [Brain] 825 824 if (battle_check_living(tstatus->race, tstatus->def_ele)) //Check if target is a living creature before proceed … … 851 850 sc_start(bl,SC_STUN,6*skilllv,skilllv,skill_get_time(skillid,skilllv)); 852 851 break;*/ 853 =======854 //Custom Jobs (blackmagic)855 case NC_GHOULTOUCH: //Necro Ghoul Touch [Brain]856 if (battle_check_living(tstatus->race, tstatus->def_ele)) //Check if target is a living creature before proceed857 sc_start(bl,SC_POISON,10000,skilllv,skill_get_time2(skillid,skilllv));858 break;859 case NC_PWSUFFER: //Necro Power Word: Suffer [Brain]860 case WL_PWAGONY: //Warlock Power Word: Agony [Brain]861 if (battle_check_living(tstatus->race, tstatus->def_ele)) //Check if target is a living creature before proceed862 sc_start(bl,skillid==NC_PWSUFFER?SC_SUFFER:SC_AGONY,1000,skilllv,skill_get_time2(skillid,skilllv));863 break;864 case WL_SEARING: //Warlock Searing Pain [Brain]865 //The DoT is only initiated if target isnt burning already.866 if(!tsc->data[SC_SEARING] && !tsc->data[SC_IMMOLATE])867 sc_start(bl,SC_SEARING,10000,skilllv,skill_get_time2(skillid,skilllv));868 break;869 case WL_IMMOLATE: //Warlock Immolate [Brain]870 //The DoT is only initiated if target isnt in immolate, but must be in searing pain status871 if(tsc->data[SC_SEARING] && !tsc->data[SC_IMMOLATE])872 sc_start(bl,SC_IMMOLATE,10000,skilllv,skill_get_time2(skillid,skilllv));873 break;874 case WL_SHADOWBURN: //Warlock Shadow Burn [Brain]875 sc_start(bl,SC_STUN,10000,skilllv,skill_get_time(skillid,skilllv));876 break;877 //Custom Job End878 >>>>>>> .r18879 852 } 880 853 … … 1074 1047 status_heal(src, 0, status_get_lv(bl)*(95+15*rate)/100, 2); 1075 1048 } 1076 <<<<<<< .mine1077 1049 1078 1050 // Warlock Soul Steal [Brain] … … 1085 1057 status_heal(src, 0, status_get_lv(bl)*(90+10*rate)/100, 2); 1086 1058 if(rand()%100 < rate) skill_additem(src,src,15020,1); //Chance to "steal" the target soul 1087 =======1088 //Custom Jobs (blackmagic)1089 // Warlock Soul Steal [Brain]1090 if(sd && skillid && attack_type&BF_MAGIC && status_isdead(bl)1091 && !(skill_get_inf(skillid)&(INF_GROUND_SKILL|INF_SELF_SKILL))1092 && (rate=pc_checkskill(sd,WL_SOULSTEAL))>0){// Wont work with area/ground spells (hellfire)1093 if (pc_issit(sd)) pc_setstand(sd);1094 clif_skill_nodamage(src,bl,WL_SOULSTEAL,rate,1);1095 clif_specialeffect(src, 253, AREA); // Absorb Mana effect on caster1096 status_heal(src, 0, status_get_lv(bl)*(90+10*rate)/100, 2);1097 if(rand()%100 < rate) skill_additem(src,src,15020,1); //Chance to "steal" the target soul1098 >>>>>>> .r181099 1059 } 1100 1060 … … 2191 2151 } 2192 2152 break; 2193 <<<<<<< .mine2194 2153 2195 2154 case NC_PWSUFFER: //Necro Power Word: Suffer [Brain] … … 2226 2185 break; 2227 2186 2228 =======2229 //Custom Jobs (blackmagic)2230 2231 case NC_PWSUFFER: //Necro Power Word: Suffer [Brain]2232 if (!status_isdead(target) && status_get_sc(target)->data[SC_SUFFER]){2233 skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL);2234 clif_specialeffect(target, 180, AREA); //Shadow Hit Effect on target2235 if (skl->type>1 && !status_isdead(target))2236 skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION);2237 }2238 break;2239 case WL_SEARING: //Warlock Searing Pain [Brain]2240 if (!status_isdead(target) && status_get_sc(target)->data[SC_SEARING]){2241 skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL);2242 clif_specialeffect(target, 49, AREA); //Fire Hit Effect on target2243 if (skl->type>1 && !status_isdead(target))2244 skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION);2245 }2246 break;2247 case WL_IMMOLATE: //Warlock Immolate [Brain]2248 if (!status_isdead(target) && status_get_sc(target)->data[SC_IMMOLATE]){2249 skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL);2250 clif_specialeffect(target, 97, AREA); //Firepillar Hit Effect on target2251 if (skl->type>1 && !status_isdead(target))2252 skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION);2253 }2254 break;2255 case WL_PWAGONY: //Warlock Power Word: Agony [Brain]2256 if (!status_isdead(target) && status_get_sc(target)->data[SC_AGONY]){2257 skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL);2258 clif_specialeffect(target, 587, AREA); //Big Purple Flame Effect on target2259 if (skl->type>1 && !status_isdead(target))2260 skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION);2261 }2262 break;2263 2264 //Custom Job End2265 >>>>>>> .r182266 2187 default: 2267 2188 skill_attack(skl->type,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag); … … 2484 2405 case MER_CRASH: 2485 2406 skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); 2486 <<<<<<< .mine2487 2407 break;*/ 2488 2408 case NC_GHOULTOUCH: //Necro Ghoul Touch [Brain] … … 2502 2422 } 2503 2423 break; 2504 =======2505 break;2506 //Custom Jobs (blackmagic)2507 2508 case NC_GHOULTOUCH: //Necro Ghoul Touch [Brain]2509 skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);2510 clif_specialeffect(bl, 124, AREA); //Venom Dust Effect on target2511 break;2512 case NC_DEATHHAND: //Necro Death Hand [Brain]2513 skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag|SD_LEVEL);//Hide skill yell2514 clif_specialeffect(bl, 65, AREA); //Power absorb Effect on target2515 if (battle_check_living(tstatus->race, tstatus->def_ele)){ //Check if target is a living creature before proceed2516 int chance = (10+(skilllv*2)+(status_get_luk(src)-status_get_luk(bl))/5);2517 //10% chance + 2% per skilllv + (caster luk - target luk)/5 %2518 if (rand()%100 < chance) {2519 clif_skill_nodamage(src,bl,skillid,-1,flag|SD_LEVEL);//Hide skill yell2520 status_percent_damage(src, bl, 100, 0, true); //Instant kill our target2521 } else clif_skill_fail(sd,skillid,0,0);2522 }2523 break;2524 //Custom Job End2525 >>>>>>> .r182526 2424 2527 2425 … … 2860 2758 skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 2861 2759 break; 2862 <<<<<<< .mine2863 2760 case AD_DARKHEAL: // Adept Dark Heal [Brain] 2864 2761 clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite Effect on target … … 2937 2834 else clif_skill_fail(sd,skillid,0,0); 2938 2835 break; 2939 ======= 2940 //Custom Jobs (blackmagic) 2941 >>>>>>> .r18 2942 2943 <<<<<<< .mine 2944 ======= 2945 2946 case AD_DARKHEAL: // Adept Dark Heal [Brain] 2947 clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite Effect on target 2948 skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); //Exception because we must add the effect manually =/ 2949 break; 2950 case NC_PWSUFFER: //Necro Power Word: Suffer [Brain] 2951 if(battle_check_living(tstatus->race,tstatus->def_ele)){ 2952 skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 2953 clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 2954 clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 2955 //If target is on suffering status already, just cause damage, no extra DoT 2956 if(!status_get_sc(bl)->data[SC_SUFFER]) 2957 skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,skilllv,flag); 2958 } 2959 else clif_skill_fail(sd,skillid,0,0); 2960 break; 2961 case NC_DRAINLIFE: // Necromancer Drain Life [Brain] 2962 { 2963 int heal = skill_attack(BF_MAGIC, src, src, bl, skillid, skilllv, tick, flag)/2; 2964 if (heal > 0 && (battle_check_living(tstatus->race,tstatus->def_ele))){ 2965 clif_skill_nodamage(NULL, src, AL_HEAL, heal, 1); 2966 status_heal(src, heal, 0, 0); 2967 } 2968 } 2969 clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 2970 clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 2971 break; 2972 case WL_SHADOWBOLT: // Warlock Shadowbolt [Brain] 2973 clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 2974 clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 2975 skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); //Again, the effect...cursed effects... 2976 break; 2977 case WL_SHADOWBURN: // Warlock Shadow Burn [Brain] 2978 clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target 2979 clif_specialeffect(bl, 32, AREA); //Flame Engulf Effect on target 2980 clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 2981 skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 2982 break; 2983 case WL_SEARING: // Warlock Searing Pain [Brain] 2984 clif_specialeffect(bl, 406, AREA); //Fire on Head Effect on target 2985 clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster 2986 skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 2987 //if target is on searing status already, just cause damage, no extra DoT 2988 if(!status_get_sc(bl)->data[SC_SEARING]) 2989 skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,4,flag); 2990 break; 2991 case WL_CONFLAGRATE: // Warlock Conflagrate [Brain] 2992 if(status_get_sc(bl)->data[SC_IMMOLATE]) { // Can only be casted if target is immolating status 2993 clif_specialeffect(bl, 183, AREA); //Explosion Effect on target 2994 clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster 2995 skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 2996 status_change_end(bl,SC_IMMOLATE,-1); //End Immolating status 2997 } else clif_skill_fail(sd,skillid,0,0); 2998 break; 2999 case WL_IMMOLATE: // Warlock Immolate [Brain] 3000 clif_specialeffect(bl, 635, AREA); //Dragon Fire Effect on target 3001 clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster 3002 skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 3003 //If Target is on searing pain status, will change immolating status instead 3004 if(!status_get_sc(bl)->data[SC_IMMOLATE]) 3005 skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,5,flag); 3006 break; 3007 case WL_CURSEDOOM: // Warlock Curse of Doom [Brain] 3008 clif_specialeffect(bl, 183, AREA); //Explosion Effect on target 3009 skill_attack(BF_MAGIC,src,bl,bl,skillid,skilllv,tick,flag|SD_ANIMATION); 3010 break; 3011 case WL_PWAGONY: // Warlock Power Word: Agony [Brain] 3012 if(battle_check_living(tstatus->race,tstatus->def_ele)){ 3013 skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); 3014 clif_specialeffect(bl, 587, AREA); //Big Purple Flame Effect on target 3015 clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster 3016 //If target is on Agonizing status already, just cause damage, no extra DoT 3017 if(!status_get_sc(bl)->data[SC_AGONY]) 3018 skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,skilllv,flag); 3019 } 3020 else clif_skill_fail(sd,skillid,0,0); 3021 break; 3022 3023 //Custom Job End 3024 >>>>>>> .r18 2836 3025 2837 3026 2838 case NPC_MAGICALATTACK: … … 3228 3040 if(status_isdead(src)) 3229 3041 return 1; 3230 <<<<<<< .mine 3231 3232 ======= 3233 //Custom Jobs (blackmagic) 3234 /*if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO)*/ 3235 // Added DEATHPACT [Brain] 3236 //if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO) 3237 >>>>>>> .r18 3042 3238 3043 if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO && skillid != NC_DEATHPACT) 3239 3044 return 1; … … 3262 3067 } 3263 3068 break; 3264 <<<<<<< .mine3265 3069 case AD_DARKHEAL: // Adept Dark Heal [Brain] 3266 3070 // Only player casted spells can be offensive (copyed from AL_HEAL code above) … … 3277 3081 break; 3278 3082 3279 =======3280 //Custom Jobs (blackmagic)3281 3282 case AD_DARKHEAL: // Adept Dark Heal [Brain]3283 // Only player casted spells can be offensive (copyed from AL_HEAL code above)3284 if (sd && (battle_check_living(tstatus->race,tstatus->def_ele)) //Check if target is a living creature3285 && !pc_checkskill(dstsd,NC_PHYLACTERY) //Or he doesnt have Phylactery (non-perma undead)3286 && !status_get_sc(bl)->data[SC_OVERWHELMING]) { //Or Overwhelming Evil is off (most cases)3287 if (battle_check_target(src, bl, BCT_ENEMY) < 1) {3288 //Offensive heal does not works on non-enemies.3289 clif_skill_fail(sd,skillid,0,0);3290 return 0;3291 }3292 return skill_castend_damage_id(src, bl, skillid, skilllv, tick, flag);3293 }3294 break;3295 3296 //Custom Job End3297 >>>>>>> .r183298 3083 case NPC_SMOKING: //Since it is a self skill, this one ends here rather than in damage_id. [Skotlex] 3299 3084 return skill_castend_damage_id (src, bl, skillid, skilllv, tick, flag); … … 3325 3110 if (status_isimmune(bl) || (dstmd && dstmd->class_ == MOBID_EMPERIUM)) 3326 3111 heal=0; 3327 <<<<<<< .mine3328 3112 // Profane Soul reduces the healed recieved by 3% per skilllv [Brain] 3329 3113 if(dstsd) { … … 3332 3116 if(pc_checkskill(dstsd,NC_PHYLACTERY)) heal = skilllv; 3333 3117 } 3334 =======3335 //Custom Jobs (blackmagic)3336 // Profane Soul reduces the healed recieved by 3% per skilllv [Brain]3337 if(dstsd) {3338 heal = heal * (100 - pc_checkskill(dstsd,AD_PROFANE)*3)/100;3339 //Wont heal even if he got elemental armors [Brain]3340 if(pc_checkskill(dstsd,NC_PHYLACTERY)) heal = skilllv;3341 }3342 //Custom Job End3343 >>>>>>> .r183344 3118 if (sd) { 3345 3119 if ((i = pc_skillheal_bonus(sd, skillid))) … … 3377 3151 } 3378 3152 break; 3379 <<<<<<< .mine3380 3153 3381 3154 case AD_DARKHEAL: // Adept Dark Heal [Brain] … … 3399 3172 3400 3173 3401 =======3402 //Custom Jobs (blackmagic)3403 3404 case AD_DARKHEAL: // Adept Dark Heal [Brain]3405 {3406 int heal = skill_calc_heal(src, bl, skilllv);3407 if (status_isimmune(bl) || (dstmd && dstmd->class_ == MOBID_EMPERIUM))3408 heal=0;3409 if(battle_check_undead(tstatus->race,tstatus->def_ele) || tstatus->race==RC_UNDEAD // Check if our target is undead or demon3410 || tstatus->race==RC_DEMON || pc_checkskill(dstsd,NC_PHYLACTERY)//Or has a phylactery3411 || status_get_sc(bl)->data[SC_OVERWHELMING]) { //Or is on OverWhelm status, checking again...3412 clif_skill_nodamage(src, bl, skillid, heal, 1);3413 clif_skill_nodamage(NULL, bl, AL_HEAL, heal, 1); //Subtle way to show heal numbers AND effect =D3414 status_heal(bl, heal, 0, 0);3415 } else {3416 clif_skill_nodamage(src, bl, skillid, 0, 1);3417 clif_skill_nodamage(NULL, bl, AL_HEAL, 0, 1);3418 }3419 clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite Effect on target3420 }3421 break;3422 //Custom Job End3423 >>>>>>> .r183424 3174 case PR_REDEMPTIO: 3425 3175 if (sd && !(flag&1)) { … … 3479 3229 { 3480 3230 clif_skill_nodamage(src,bl,ALL_RESURRECTION,skilllv,1); //Both Redemptio and Res show this skill-animation. 3481 <<<<<<< .mine3482 3231 if(skillid==NC_DEATHPACT) { // Necro Death Pact [Brain] 3483 3232 clif_skill_nodamage(src, bl, skillid, skilllv, … … 3487 3236 3488 3237 if(sd && dstsd && battle_config.resurrection_exp > 0) 3489 =======3490 //Custom Jobs (blackmagic)3491 if(skillid==NC_DEATHPACT) { // Necro Death Pact [Brain]3492 clif_skill_nodamage(src, bl, skillid, skilllv,3493 sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));3494 break;3495 }3496 //Custom Job End3497 if(sd && dstsd && battle_config.resurrection_exp > 0)3498 >>>>>>> .r183499 3238 { 3500 3239 int exp = 0,jexp = 0; … … 3514 3253 } 3515 3254 break; 3516 <<<<<<< .mine3517 =======3518 //Custom Jobs (blackmagic)3519 3520 case AD_PWBLIND: // Adept Power Word: Blind [Brain]3521 if(!tsc->data[type]) {3522 clif_skill_nodamage(src, bl, skillid, skilllv,1);3523 if(sc_start(bl, type,(30 + skilllv * 10 + (status_get_lv(src) - sstatus->int_)/5),3524 skilllv, skill_get_time(skillid,skilllv)))3525 {3526 if(dstmd) mob_unlocktarget(dstmd,tick); //Removes current target3527 clif_specialeffect(bl, 379, AREA); //379.Soul Drain (2nd Part)3528 break;3529 }3530 } else clif_skill_fail(sd,skillid,0,0);3531 break;3532 3533 case AD_PWFEAR: // Adept Power Word: Fear [Brain]3534 if(!tsc->data[type]) {3535 clif_skill_nodamage(src, bl, skillid, skilllv,1);3536 if(dstsd)3537 type = SC_CONFUSION; //Players cant be affected by SC_FEAR3538 if(sc_start(bl, type, (30 + skilllv * 10), skilllv, skill_get_time(skillid,skilllv)))3539 {3540 clif_specialeffect(bl, 372, AREA); //372.Death3541 unit_escape(bl, bl, 30);3542 }3543 } else clif_skill_fail(sd,skillid,0,0);3544 break;3545 case WL_HOWLOFPAIN: // Warlock Howl of Pain [Brain]3546 //These must be here first or else the code wont execute them.3547 clif_specialeffect(src, 670, AREA); // Monster skill SCREAM effect on caster (no sound)3548 clif_soundeffectall(bl, "wraith_die.wav", 0, AREA); //Wraith Laugh Sound3549 if (flag & 1) {3550 //Check if target is a living creature AND a valid enemy3551 if (battle_check_target(src, bl, BCT_ENEMY) && battle_check_living(tstatus->race,tstatus->def_ele))3552 {3553 if(sc_start(bl,type,10+skilllv*10,skilllv,skill_get_time(skillid,skilllv)))3554 {3555 if(dstmd) //PROVOKE Effect on mobs3556 mob_target(dstmd,src,skill_get_range2(src,skillid,skilllv));3557 // Breaks Frozen and Sleep status3558 if(tsc && tsc->count){3559 if(tsc->data[SC_FREEZE])3560 status_change_end(bl,SC_FREEZE,-1);3561 if(tsc->data[SC_SLEEP])3562 status_change_end(bl,SC_SLEEP,-1);3563 }3564 clif_emotion(bl,6); //anger emote on target3565 break;3566 } else { //What will happen if the status fail:3567 {3568 if (sd) //If is a player3569 clif_skill_fail(sd,skillid,0,0);3570 map_freeblock_unlock(); //Else is a mob3571 return 0;3572 }3573 unit_skillcastcancel(bl, 2); //In any case, will cancel casting3574 }3575 }3576 } else {3577 map_foreachinrange(skill_area_sub, src,3578 skill_get_splash(skillid, skilllv), BL_CHAR,3579 src, skillid, skilllv, tick, flag|BCT_ENEMY|1,3580 skill_castend_nodamage_id);3581 clif_skill_nodamage(src, bl, skillid, skilllv, 1);3582 map_freeblock_unlock();3583 return 1;3584 }3585 break;3586 case WL_HOWLOFTERROR: // Warlock Howl of Terror [Brain]3587 if (flag & 1) {3588 int rate;3589 //Check if target is a living creature AND a valid enemy3590 if (battle_check_target(src, bl, BCT_ENEMY)3591 && battle_check_living(tstatus->race,tstatus->def_ele)) {3592 rate = 10 + skilllv*5 + pc_checkskill(sd,AD_PWFEAR)*3;3593 if(dstsd) {3594 rate -= 10; // 10% less chance on players3595 type = SC_CONFUSION; //Players cant be affected by SC_FEAR3596 }3597 if(sc_start(bl,type,rate,skilllv,skill_get_time(skillid,skilllv)))3598 clif_specialeffect(bl, 372, AREA); //Same as PW: Fear3599 }3600 } else {3601 map_foreachinrange(skill_area_sub, src,3602 skill_get_splash(skillid, skilllv), BL_CHAR,3603 src, skillid, skilllv, tick, flag|BCT_ENEMY|1,3604 skill_castend_nodamage_id);3605 clif_skill_nodamage(src, bl, skillid, skilllv, 1);3606 }3607 clif_specialeffect(src, 668, AREA); // Monster skill SCREAM effect on caster (with sound)3608 break;3609 >>>>>>> .r183610 3255 3611 3256 case AD_PWBLIND: // Adept Power Word: Blind [Brain] … … 3716 3361 } 3717 3362 break; 3718 <<<<<<< .mine 3719 3720 ======= 3721 //Custom Jobs (blackmagic) 3722 case NC_DARKMOON: //Necro Dark Moon [Brain] 3723 if (flag&1) { 3724 //Check my enemies 3725 if (battle_check_target(src, bl, BCT_ENEMY) && 3726 battle_check_living(tstatus->race,tstatus->def_ele)) 3727 { 3728 if(sc_start(bl,SC_BLIND,50,skilllv,skill_get_time(skillid,skilllv))) 3729 clif_specialeffect(bl, 580, AREA); //Box of Rain effect on target 3730 } 3731 else { //Now my Party members 3732 if (sd == NULL || sd->status.party_id == 0 || (flag & 1)) { 3733 clif_skill_nodamage(bl,bl,skillid,skilllv, 3734 sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 3735 clif_specialeffect(bl, 521, AREA); //Red Flashing Aura Sprite effect on target 3736 } else if (sd) { 3737 party_foreachsamemap(skill_area_sub, sd,skill_get_splash(skillid, skilllv), 3738 src,skillid,skilllv,tick, flag|BCT_ALL|1,skill_castend_nodamage_id); 3739 } 3740 } 3741 } else { 3742 map_foreachinrange(skill_area_sub, src, skill_get_splash(skillid, skilllv), BL_CHAR, 3743 src, skillid, skilllv, tick, flag|BCT_ALL|1, skill_castend_nodamage_id); 3744 clif_skill_nodamage(src, bl, skillid, skilllv, 1); 3745 } 3746 clif_specialeffect(src, 407, AREA); //Soul Change Effect on caster 3747 clif_soundeffectall(bl, "se_wolf1.wav", 0, AREA); //Wolf Howl Sound 3748 break; 3749 case NC_REQUIEM: //Necro Requiem [Brain] 3750 if (flag&1) { 3751 //Check my enemies 3752 if (battle_check_target(src, bl, BCT_ENEMY) && 3753 battle_check_living(tstatus->race,tstatus->def_ele)) 3754 { 3755 if(sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))) 3756 clif_specialeffect(bl, 578, AREA); //Box of Curse effect on target 3757 } 3758 else { //Now my Party members 3759 if (sd == NULL || sd->status.party_id == 0 || (flag & 1)) { 3760 clif_skill_nodamage(bl,bl,skillid,skilllv, 3761 sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 3762 clif_specialeffect(bl, 572, AREA); //Warmth Soul effect on target 3763 } else if (sd) { 3764 party_foreachsamemap(skill_area_sub, sd,skill_get_splash(skillid, skilllv), 3765 src,skillid,skilllv,tick, flag|BCT_ALL|1,skill_castend_nodamage_id); 3766 } 3767 } 3768 } else { 3769 map_foreachinrange(skill_area_sub, src, skill_get_splash(skillid, skilllv), BL_CHAR, 3770 src, skillid, skilllv, tick, flag|BCT_ALL|1, skill_castend_nodamage_id); 3771 clif_skill_nodamage(src, bl, skillid, skilllv, 1); 3772 } 3773 int rnds = rand()%3; 3774 switch(rnds) { 3775 case 1: 3776 clif_soundeffectall(bl, "chant1.wav", 0, AREA); //Chanting Sound 3777 break; 3778 case 2: 3779 clif_soundeffectall(bl, "chant2.wav", 0, AREA); //Chanting Sound 3780 break; 3781 case 3: 3782 clif_soundeffectall(bl, "chant3.wav", 0, AREA); //Chanting Sound 3783 break; 3784 } 3785 break; 3786 >>>>>>> .r18 3363 3787 3364 case NC_DARKMOON: //Necro Dark Moon [Brain] 3788 3365 if (flag&1) { … … 4156 3733 sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 4157 3734 break; 4158 <<<<<<< .mine4159 3735 case AD_LUST: // Adept Blood Lust [Brain] 4160 3736 clif_specialeffect(src, 220, AREA); //Berserk Pot effect … … 4204 3780 sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); 4205 3781 break; 4206 =======4207 //Custom Jobs (blackmagic)4208 4209 case AD_LUST: // Adept Blood Lust [Brain]4210 clif_specialeffect(src, 220, AREA); //Berserk Pot effect4211 clif_specialeffect(src, 455, AREA); //Red Lightnings4212 clif_skill_nodamage(src,bl,skillid,skilllv,4213 sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));4214 break;4215 case NC_DECREPIFY: //Necro Decrepify [Brain]4216 if(battle_check_living(tstatus->race,tstatus->def_ele)){4217 clif_specialeffect(bl, 403, AREA); //Mind Breaker Effect on target4218 clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster4219 clif_skill_nodamage(src,bl,skillid,skilllv,4220 sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));4221 }4222 else clif_skill_fail(sd,skillid,0,0);4223 break;4224 case WL_CURSEWEAKNESS: // Warlock Curse of Weakness [Brain]4225 clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite effect on target4226 clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster4227 clif_skill_nodamage(src,bl,skillid,skilllv,4228 sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));4229 break;4230 case WL_CURSEEXHAUST: // Warlock Curse of Exhaustion [Brain]4231 clif_specialeffect(bl, 135, AREA); //Ice Breaking effect on target4232 clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster4233 clif_skill_nodamage(src,bl,skillid,skilllv,4234 sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));4235 break;4236 case WL_CURSETONGUES: // Warlock Curse of Tongues [Brain]4237 clif_specialeffect(bl, 72, AREA); //Spinning Lights effect on target4238 clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster4239 clif_skill_nodamage(src,bl,skillid,skilllv,4240 sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));4241 break;4242 case WL_CURSEDOOM: // Warlock Curse of Doom (temp) [Brain]4243 if(!tsc->data[type]) {4244 clif_specialeffect(bl, 196, AREA); //Small Curse Reaper effect on target4245 clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster4246 clif_skill_nodamage(src,bl,skillid,skilllv,4247 sc_start4(bl,type,100,4248 skilllv,skillid,src->id,skill_get_time(skillid,skilllv),1000));4249 } else clif_skill_fail(sd,skillid,0,0);4250 break;4251 case WL_OVERWHELMING: // Warlock Overwhelming Evil [Brain]4252 clif_specialeffect(src, 348, AREA); //1000 Blades Trespassing effect on caster4253 clif_skill_nodamage(src,bl,skillid,skilllv,4254 sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));4255 break;4256 4257 //Custom Job End4258 >>>>>>> .r184259 3782 case MG_SIGHT: 4260 3783 case AL_RUWACH: … … 4473 3996 clif_skill_nodamage(src,bl,skillid,skilllv,i?1:0); 4474 3997 break; 4475 <<<<<<< .mine4476 =======4477 //Custom Jobs (blackmagic)4478 4479 case WL_DRAINSOUL: // Warlock Drain Soul [Brain]4480 i = 0;4481 if (dstsd && (sd == dstsd || map_flag_vs(src->m)))4482 { //check if target is a player and we are in versus map4483 i = tstatus->max_sp * skilllv/100;//i = SkillLv% of player Max SP4484 if(dstsd->spiritball && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER) {4485 i += dstsd->spiritball * 5;//will drain Monk Spirits and regain 5 SP per Spirit4486 pc_delspiritball(dstsd,dstsd->spiritball,0);4487 }4488 } else if (dstmd && !(tstatus->mode&MD_BOSS) && battle_check_living(tstatus->race,tstatus->def_ele))4489 { // check if target is a monster and not a Boss4490 i = dstmd->level/5 * skilllv;//i = mob level/5 * Skill Lvl4491 mob_target(dstmd,src,0);//This will turn the mob agressive against the caster4492 }4493 if(i < skilllv) i = skilllv; //Minimum 1 sp per skill lvl4494 if (i) {4495 clif_specialeffect(src, 253, AREA); //Absorb Mana effect on caster4496 clif_specialeffect(bl, 52, AREA); //Lightning Hit effect on target4497 status_heal(src, 0, i, 3); //caster drains sp4498 status_zap(bl, 0, i*skilllv); //target lost sp equal to 1*SkillLv the amount drained4499 }4500 clif_skill_nodamage(src,bl,skillid,skilllv,i?1:0);4501 break;4502 //Custom Job End4503 >>>>>>> .r184504 3998 4505 3999 case WL_DRAINSOUL: // Warlock Drain Soul [Brain] … … 6595 6089 src->m, x-i, y-i, x+i,y+i,BL_SKILL); 6596 6090 break; 6597 <<<<<<< .mine6598 =======6599 //Custom Jobs (blackmagic)6600 case WL_HELLFIRE: // Warlock Hellfire [Brain]6601 //clif_specialeffect(sd, 92, AREA); //Meteor Effect on caster, cant set on ground6602 clif_skill_poseffect(src,WZ_METEOR,skilllv,x,y,tick); //Meteor Effect6603 clif_skill_nodamage(src, src, skillid, 0, 1); //Lalala, just to show the skill yell correctly6604 clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster6605 // Continue reading because skill_unitsetting is bellow6606 //Custom Job End6607 >>>>>>> .r186608 6091 6609 6092 case WL_HELLFIRE: // Warlock Hellfire [Brain] … … 6773 6256 md->deletetimer = add_timer (gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, md->bl.id, 0); 6774 6257 mob_spawn (md); //Now it is ready for spawning. 6775 <<<<<<< .mine6776 6258 // @showsummon command implementation [Brainstorm] 6777 6259 if(sd->state.showsummon){ … … 6787 6269 } 6788 6270 6789 ======= 6790 //Custom Jobs (blackmagic) 6791 // @showsummon command implementation [Brainstorm] 6792 if(sd->state.showsummon){ 6793 char output[256]; 6794 sprintf(output, 6795 "[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d", 6796 md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk); 6797 clif_disp_onlyself(sd,output,strlen(output)); 6798 sprintf(output, 6799 "[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d", 6800 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); 6801 clif_disp_onlyself(sd,output,strlen(output)); 6802 } 6803 //Custom Job End 6804 >>>>>>> .r18 6805 } 6806 } 6807 break; 6808 6809 <<<<<<< .mine 6271 } 6272 } 6273 break; 6274 6810 6275 case AD_FAMILIAR: // Adept Summon Familiar [Brain] 6811 6276 if( sd ) … … 6864 6329 int mob_class; 6865 6330 struct mob_data *md; 6866 ======= 6867 //Custom Jobs (blackmagic) 6868 case AD_FAMILIAR: // Adept Summon Familiar [Brain] 6869 if( sd ) 6870 { 6871 int id; 6872 int mob_class; 6873 struct mob_data* md; 6874 6875 mob_class = pc_readglobalreg(sd, "ADEPT_FAMILIAR"); 6876 if( mob_class == 0 ) 6877 { 6878 mob_class = mob_get_random_id(4, 0x1, 0); 6879 pc_setglobalreg(sd, "ADEPT_FAMILIAR", mob_class); 6880 } 6881 id = mob_once_spawn(sd,src->m,src->x,src->y,"--en--",mob_class,1,""); 6882 md = (struct mob_data *)map_id2bl(id); 6883 if( md != NULL ) 6884 { 6885 md->master_id = sd->bl.id; 6886 md->special_state.ai = 1; 6887 md->status.mode = md->status.mode|MD_AGGRESSIVE; 6888 status_calc_mob(md,0); //Recalc their stats based on passive bonus 6889 md->status.hp = md->status.max_hp; //Must be here or the code wont update it 6890 // @showsummon command implementation [Brainstorm] 6891 if(sd->state.showsummon){ 6892 char output[256]; 6893 sprintf(output, 6894 "[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d", 6895 md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk); 6896 clif_disp_onlyself(sd,output,strlen(output)); 6897 sprintf(output, 6898 "[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d", 6899 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); 6900 clif_disp_onlyself(sd,output,strlen(output)); 6901 } 6902 md->deletetimer = add_timer(gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, id, 0); 6903 } 6904 } 6905 break; 6906 case NC_SKELETON: // Raise Skeleton [Brain] 6907 case NC_ARCHER: // Raise Archer Skeleton 6908 case NC_ZOMBIE: // Raise Zombie 6909 case NC_MUMMY: // Raise Mummy 6910 case NC_GHOST: // Raise Ghost 6911 case NC_SHADOW: // Raise Shadow 6912 case NC_WRAITH: // Raise Wraith 6913 if( sd ) 6914 { 6915 static const int mob_skeleton[5]={ 3201, 3202, 3203, 3204, 3205 }; // Skeleton, Orc Skeleton, Soldier Skeleton, Pirate Skeleton, Skeleton General 6916 static const int mob_archer[5]={ 3206, 3207, 3208, 3209, 3210 }; // Archer Skeleton, Firelock Soldier 6917 static const int mob_zombie[5]={ 3211, 3212, 3213, 3214, 3215 }; // Zombie, Ghoul, Zombie Master 6918 static const int mob_mummy[5]={ 3216, 3217, 3218, 3219, 3220 }; // Mummy, Ancient Mummy 6919 static const int mob_ghost[5]={ 3221, 3222, 3223, 3224, 3225 }; // Whisper, Nightmare, Nightmare Terror 6920 static const int mob_shadow[5]={ 3226, 3227, 3228, 3229, 3230 }; // Injustice, Raydric, Dullahan 6921 static const int mob_wraith[5]={ 3231, 3232, 3233, 3234, 3235 }; // Wraith, Wraith Dead 6922 int id; 6923 int mob_class; 6924 struct mob_data *md; 6925 >>>>>>> .r18 6926 6927 <<<<<<< .mine 6331 6928 6332 switch( skillid ) 6929 6333 { … … 6964 6368 } 6965 6369 break; 6966 =======6967 switch( skillid )6968 {6969 case NC_SKELETON: mob_class = mob_skeleton[skilllv-1]; break;6970 case NC_ARCHER: mob_class = mob_archer[skilllv-1]; break;6971 case NC_ZOMBIE: mob_class = mob_zombie[skilllv-1]; break;6972 case NC_MUMMY: mob_class = mob_mummy[skilllv-1]; break;6973 case NC_GHOST: mob_class = mob_ghost[skilllv-1]; break;6974 case NC_SHADOW: mob_class = mob_shadow[skilllv-1]; break;6975 case NC_WRAITH: mob_class = mob_wraith[skilllv-1]; break;6976 default:6977 mob_class = 1002; // poring6978 ShowDebug("skill_castend_pos2: undefined skill #%d used to raise mobs, defaulting to poring\n");6979 break;6980 }6981 id = mob_once_spawn(sd,src->m,src->x,src->y,"--ja--",mob_class,1,"");6982 if((md=(struct mob_data *)map_id2bl(id)))6983 {6984 md->master_id=sd->bl.id;6985 md->special_state.ai=1;6986 md->status.mode=md->db->status.mode|MD_AGGRESSIVE;6987 status_calc_mob(md,0); //Recalc their stats based on passive bonus6988 md->status.hp = md->status.max_hp; //Must be here or the code wont update it6989 // @showsummon command implementation [Brainstorm]6990 if(sd->state.showsummon){6991 char output[256];6992 sprintf(output,6993 "[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d",6994 md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk);6995 clif_disp_onlyself(sd,output,strlen(output));6996 sprintf(output,6997 "[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d",6998 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);6999 clif_disp_onlyself(sd,output,strlen(output));7000 }7001 md->deletetimer = add_timer(gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, id, 0);7002 }7003 }7004 break;7005 7006 7007 //Custom Job End7008 >>>>>>> .r187009 6370 7010 6371 … … 7421 6782 switch(skillid) 7422 6783 { 7423 <<<<<<< .mine7424 6784 case WL_HELLFIRE: // Warlock Hellfire [Brain] 7425 6785 if(map_flag_vs(src->m)) target = BCT_ALL; 7426 6786 break; 7427 =======7428 //Custom Jobs (blackmagic)7429 case WL_HELLFIRE: // Warlock Hellfire [Brain]7430 if(map_flag_vs(src->m)) target = BCT_ALL;7431 break;7432 //Custom Job End7433 >>>>>>> .r187434 6787 case MG_SAFETYWALL: 7435 6788 val2=skilllv+1; … … 8028 7381 } 8029 7382 if (status_isimmune(bl)) 8030 <<<<<<< .mine8031 7383 heal = 0; /* é»éè²ã«ãŒãïŒããŒã«éïŒïŒ */ 8032 7384 // Profane Soul reduces the healed recieved by 3% per skilllv [Brain] … … 8037 7389 } 8038 7390 8039 =======8040 heal = 0; /* é»Eßè²ã«ãŒãïŒããŒã«éïŒïŒE*/8041 //Custom Jobs (blackmagic)8042 // Profane Soul reduces the healed recieved by 3% per skilllv [Brain]8043 if(tsd) {8044 heal = heal * (100 - pc_checkskill(tsd,AD_PROFANE)*3)/100;8045 //Wont heal even if he got elemental armors [Brain]8046 if(pc_checkskill(tsd,NC_PHYLACTERY)) heal = sg->skill_lv;8047 }8048 //Custom Job End8049 >>>>>>> .r188050 7391 clif_skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1); 8051 7392 status_heal(bl, heal, 0, 0); … … 9105 8446 } 9106 8447 break; 9107 <<<<<<< .mine9108 8448 case AD_FAMILIAR: //Adept Familiar [Flavio] 9109 8449 { … … 9154 8494 break; 9155 8495 9156 =======9157 //Custom Jobs (blackmagic)9158 case AD_FAMILIAR: //Adept Familiar [Flavio]9159 {9160 short familiar[1] ={ pc_readglobalreg(sd, "ADEPT_FAMILIAR") };9161 int maxcount = skill_get_maxcount(skill,lv);9162 int count = 0;9163 count = mob_countslave_class(&sd->bl, 1, familiar );9164 if( count >= maxcount )9165 {9166 clif_skill_fail(sd,skill,0,0);9167 return 0;9168 }9169 }9170 break;9171 case NC_SKELETON: // Raise Skeleton [Brain]9172 case NC_ARCHER: // Raise Archer Skeleton9173 case NC_ZOMBIE: // Raise Zombie9174 case NC_MUMMY: // Raise Mummy9175 case NC_GHOST: // Raise Ghost9176 case NC_SHADOW: // Raise Shadow9177 case NC_WRAITH: // Raise Wraith9178 {// corrigido o limite de spawns [Flavio]9179 short summon1[5]={ 3201, 3202, 3203, 3204, 3205 }; // Skeleton, Orc Skeleton, Soldier Skeleton, Pirate Skeleton, Skeleton General9180 short summon2[5]={ 3206, 3207, 3208, 3209, 3210 }; // Archer Skeleton, Firelock Soldier9181 short summon3[5]={ 3211, 3212, 3213, 3214, 3215 }; // Zombie, Ghoul, Zombie Master9182 short summon4[5]={ 3216, 3217, 3218, 3219, 3220 }; // Mummy, Ancient Mummy9183 short summon5[5]={ 3221, 3222, 3223, 3224, 3225 }; // Whisper, Nightmare, Nightmare Terror9184 short summon6[5]={ 3226, 3227, 3228, 3229, 3230 }; // Injustice, Raydric, Dullahan9185 short summon7[5]={ 3231, 3232, 3233, 3234, 3235 }; // Wraith, Wraith Dead9186 int maxcount = skill_get_maxcount(skill,lv);9187 int count = 0;9188 switch( skill )9189 {9190 case NC_SKELETON: count = mob_countslave_class(&sd->bl, 5, summon1); break;9191 case NC_ARCHER: count = mob_countslave_class(&sd->bl, 5, summon2); break;9192 case NC_ZOMBIE: count = mob_countslave_class(&sd->bl, 5, summon3); break;9193 case NC_MUMMY: count = mob_countslave_class(&sd->bl, 5, summon4); break;9194 case NC_GHOST: count = mob_countslave_class(&sd->bl, 5, summon5); break;9195 case NC_SHADOW: count = mob_countslave_class(&sd->bl, 5, summon6); break;9196 case NC_WRAITH: count = mob_countslave_class(&sd->bl, 5, summon7); break;9197 }9198 if( count >= maxcount )9199 {9200 clif_skill_fail(sd,skill,0,0);9201 return 0;9202 }9203 }9204 break;9205 //Custom Job End9206 >>>>>>> .r189207 8496 case WZ_FIREPILLAR: // celest 9208 8497 if (lv <= 5) // no gems required at level 1-5 … … 9637 8926 status_change_end(bl, SC_SUFFRAGIUM, -1); 9638 8927 } 9639 <<<<<<< .mine9640 8928 if (sc->data[SC_DECREPIFY]) // Necro Decrepify [Brain] 9641 8929 if(sc->data[SC_DECREPIFY]->val2>=3) … … 9646 8934 } 9647 8935 9648 =======9649 //Custom Jobs (blackmagic)9650 9651 if (sc->data[SC_DECREPIFY]) // Necro Decrepify [Brain]9652 if(sc->data[SC_DECREPIFY]->val2>=3)9653 time += time * 25/100; //+25% cast time9654 if (sc->data[SC_CURSETONGUES]) { //Warlock Curse of Tongues [Brain]9655 time += time * sc->data[SC_CURSETONGUES]->val2 / 100;9656 status_change_end(bl, SC_CURSETONGUES, -1);9657 }9658 9659 //Custom Job End9660 >>>>>>> .r189661 8936 if (sc->data[SC_MEMORIZE]) { 9662 8937 time>>=1; … … 12454 11729 return 0; 12455 11730 } 12456 <<<<<<< .mine12457 11731 12458 11732 int skill_additem(struct block_list* src, struct block_list *bl, int itemid, int amount)// ITEM GIVER [Brain] … … 12493 11767 return 0; 12494 11768 } 12495 =======12496 //Custom Jobs (blackmagic)12497 int skill_additem(struct block_list* src, struct block_list *bl, int itemid, int amount)// ITEM GIVER [Brain]12498 {12499 struct map_session_data *sd = NULL, *tsd = NULL;12500 12501 nullpo_retr(1, src);12502 nullpo_retr(1, bl);12503 12504 if (src->m != bl->m)12505 return 1;12506 if (bl->prev == NULL)12507 return 1;12508 if (src->type == BL_PC)12509 sd = (struct map_session_data *)src;12510 if (bl->type == BL_PC)12511 tsd = (struct map_session_data *)bl;12512 if (status_isdead(bl))12513 return 1;12514 12515 int eflag;12516 struct item item_tmp;12517 struct block_list tbl;12518 12519 memset(&item_tmp,0,sizeof(item_tmp));12520 memset(&tbl,0,sizeof(tbl));12521 12522 item_tmp.nameid = itemid;12523 item_tmp.identify = 1;12524 tbl.id = 0;12525 12526 clif_takeitem(&sd->bl,&tbl);12527 eflag = pc_additem(sd,&item_tmp,amount);12528 if(eflag) {12529 clif_additem(sd,0,0,eflag);12530 map_addflooritem(&item_tmp,amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0);12531 }12532 return 0;12533 }12534 //Custom Job End>>>>>>> .r18 -
src/map/skill.h
r19 r22 970 970 AD_SUMMONS, 971 971 972 <<<<<<< .mine973 972 NC_PHYLACTERY, //710 974 973 NC_UNDEAD, … … 988 987 NC_DRAINLIFE, 989 988 NC_DEATHPACT, 990 =======991 //Custom Jobs (blackmagic)992 AD_PWBLIND = 700, // Custom Skills [Brainstorm]993 AD_PWFEAR,994 AD_DARKHEAL,995 AD_BLOODPACT,996 AD_LUST,997 AD_FERVOR,998 AD_PROFANE,999 AD_DARKFAITH,1000 AD_FAMILIAR,1001 AD_SUMMONS,1002 1003 NC_PHYLACTERY, //7101004 NC_UNDEAD,1005 NC_DEATHHAND,1006 NC_GHOULTOUCH,1007 NC_SKELETON,1008 NC_ZOMBIE,1009 NC_ARCHER,1010 NC_MUMMY,1011 NC_GHOST,1012 NC_SHADOW,1013 NC_WRAITH,1014 NC_REQUIEM,1015 NC_DARKMOON,1016 NC_PWSUFFER,1017 NC_DECREPIFY,1018 NC_DRAINLIFE,1019 NC_DEATHPACT,1020 1021 ALL_ATFIELD, //GM SKILL1022 1023 WL_CURSETONGUES =732, //7321024 WL_CURSEDOOM,1025 WL_CURSEEXHAUST,1026 WL_CURSEWEAKNESS,1027 WL_SEARING,1028 WL_HELLFIRE,1029 WL_CONFLAGRATE,1030 WL_IMMOLATE,1031 WL_SHADOWBOLT,1032 WL_SHADOWBURN,1033 WL_HOWLOFPAIN,1034 WL_DEMONOLOGY,1035 WL_HOWLOFTERROR,1036 WL_PWAGONY,1037 WL_OVERWHELMING,1038 WL_SOULSTEAL,1039 WL_DRAINSOUL,1040 WL_CORRUPTION, //7491041 // STOP! Cant use 800 (homun skills) NOR 900 (guild skills)1042 1043 //Custom Job End1044 >>>>>>> .r181045 989 1046 990 ALL_ATFIELD, //GM SKILL -
src/map/status.c
r19 r22 408 408 set_sc( GD_BATTLEORDER , SC_BATTLEORDERS , SI_BLANK , SCB_STR|SCB_INT|SCB_DEX ); 409 409 set_sc( GD_REGENERATION , SC_REGENERATION , SI_BLANK , SCB_REGEN ); 410 <<<<<<< .mine411 =======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 End440 >>>>>>> .r18441 410 442 411 // Custom Jobs Skills [Brain] … … 1404 1373 flag|=16; 1405 1374 1406 <<<<<<< .mine1407 1375 if (md->master_id && md->special_state.ai) 1408 1376 flag|=32; //Adept/Necro/Warlock Summon Stats Bonus [Brainstorm] 1409 =======1410 //Custom Jobs (blackmagic)1411 if (md->master_id && md->special_state.ai)1412 flag|=32; //Adept/Necro/Warlock Summon Stats Bonus [Brainstorm]1413 //Custom Job End1414 >>>>>>> .r181415 1377 1416 1378 … … 1531 1493 status->aspd_rate -= 100*md->guardian_data->guardup_lv; 1532 1494 } 1533 <<<<<<< .mine1534 1495 //Summon Bonus from Skills [Brainstorm] 1535 1496 if(flag&32) … … 1591 1552 status->mdef2 += (undead_mastery*3) + (skill_mastery); 1592 1553 } 1593 =======1594 1595 //Custom Jobs (blackmagic)1596 //Summon Bonus from Skills [Brainstorm]1597 if(flag&32)1598 {1599 mbl = map_id2bl(md->master_id);1600 if(mbl)1601 {1602 struct unit_data *ud = unit_bl2ud(mbl);1603 //Remove special AI when this is used by regular mobs.1604 if (mbl->type == BL_MOB && !((TBL_MOB*)mbl)->special_state.ai)1605 md->special_state.ai = 0;1606 1607 int master_lv = status_get_lv(mbl);1608 int skill_mastery = pc_checkskill((TBL_PC*)mbl,AD_SUMMONS);1609 int undead_mastery = pc_checkskill((TBL_PC*)mbl,NC_UNDEAD);1610 1611 if (ud->skillid == AD_FAMILIAR)1612 {1613 status->max_hp += (skill_mastery*10) + (master_lv*10);1614 status->str += (master_lv) + (skill_mastery);1615 status->dex += (master_lv) + (skill_mastery);1616 status->agi += (master_lv) + (skill_mastery);1617 status->int_ += (master_lv) + (skill_mastery);1618 status->vit += (master_lv) + (skill_mastery);1619 status->luk += (master_lv) + (skill_mastery);1620 status->rhw.atk += (skill_mastery*3)1621 + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10));1622 status->rhw.atk2 += (skill_mastery*3)1623 + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10));1624 status->speed -= skill_mastery;1625 status->def += (master_lv)/10 + (skill_mastery);1626 status->mdef += (master_lv)/10 + (skill_mastery);1627 //These are not automatically recalculated1628 status->hit += (master_lv*2) + (skill_mastery);1629 status->flee += (master_lv*2) + (skill_mastery);1630 status->def2 += (master_lv) + (skill_mastery);1631 status->mdef2 += (master_lv) + (skill_mastery);1632 }1633 else if(status->race==RC_UNDEAD)1634 {1635 status->max_hp += (undead_mastery*10) + (master_lv*2);1636 status->str += (undead_mastery*3) + (skill_mastery);1637 status->dex += (undead_mastery*3) + (skill_mastery);1638 status->agi += (undead_mastery*3) + (skill_mastery);1639 status->int_ += (undead_mastery*3) + (skill_mastery);1640 status->vit += (undead_mastery*3) + (skill_mastery);1641 status->luk += (undead_mastery*3) + (skill_mastery);1642 status->rhw.atk += (undead_mastery*3) + (skill_mastery*3)1643 + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10));1644 status->rhw.atk2 += (undead_mastery*3) + (skill_mastery*3)1645 + (status->str+((status->str/10)*(status->str/10))+(status->dex/5)+(status->luk/10));1646 status->speed -= undead_mastery;1647 status->def += undead_mastery;1648 status->mdef += undead_mastery;1649 //These are not automatically recalculated1650 status->hit += (undead_mastery*3) + (skill_mastery);1651 status->flee += (undead_mastery*3) + (skill_mastery);1652 status->def2 += (undead_mastery*3) + (skill_mastery);1653 status->mdef2 += (undead_mastery*3) + (skill_mastery);1654 }1655 }1656 else ShowError("status_calc_mob: Monster summoned without a master at %s\n", map[md->bl.m].name);1657 >>>>>>> .r181658 1554 } 1659 1555 else ShowError("status_calc_mob: Monster summoned without a master at %s\n", map[md->bl.m].name); … … 1908 1804 status->aspd_rate = 1000; 1909 1805 status->ele_lv = 1; 1910 <<<<<<< .mine1911 1806 status->race = RC_DEMIHUMAN;// This define players default race to DEMIHUMAN [Brain] 1912 1807 if(pc_checkskill(sd,NC_PHYLACTERY)>0) status->def_ele = ELE_UNDEAD; //Phylactery turns you UNDEAD 1 instead of NEUTRAL 1913 =======1914 //Custom Jobs (blackmagic)1915 status->race = RC_DEMIHUMAN;// This define players default race to DEMIHUMAN [Brain]1916 if(pc_checkskill(sd,NC_PHYLACTERY)>0) status->def_ele = ELE_UNDEAD; //Phylactery turns you UNDEAD 1 instead of NEUTRAL1917 //Custom Job End1918 >>>>>>> .r181919 1808 1920 1809 //zero up structures... … … 2209 2098 status->str += skill/2; //+1 str per 2 skill points 2210 2099 2211 <<<<<<< .mine2212 =======2213 //Custom Jobs (blackmagic)2214 2215 if((skill=pc_checkskill(sd,WL_DEMONOLOGY))>0) //Warlock Demonology [Brain]2216 status->str += skill/2; //+1 str per 2 skill points2217 //Custom Job End2218 >>>>>>> .r182219 2100 2220 2101 // Bonuses from cards and equipment as well as base stat, remember to avoid overflows. … … 2257 2138 status->max_hp += status->max_hp * (skill*3)/100; 2258 2139 2259 <<<<<<< .mine2260 =======2261 //Custom Jobs (blackmagic)2262 if((skill=pc_checkskill(sd,AD_PROFANE))>0) // Adept Profane Soul [Brain]2263 status->max_hp += status->max_hp * (skill*3)/100;2264 //Custom Job End2265 >>>>>>> .r182266 2140 2267 2141 // Apply relative modifiers from equipment … … 2296 2170 status->max_sp += sd->status.max_sp * (skill*3)/100; 2297 2171 2298 <<<<<<< .mine2299 =======2300 //Custom Jobs (blackmagic)2301 if((skill=pc_checkskill(sd,AD_PROFANE))>0) // Adept Profane Soul [Brain]2302 status->max_sp += sd->status.max_sp * (skill*3)/100;2303 //Custom Job End2304 >>>>>>> .r182305 2172 2306 2173 // Apply relative modifiers from equipment … … 2399 2266 status->hit += skill*2; 2400 2267 2401 <<<<<<< .mine2402 =======2403 //Custom Jobs (blackmagic)2404 if((skill=pc_checkskill(sd,AD_FERVOR))>0) // Adept Unholy Fevor [Brain]2405 status->hit += skill*2;2406 //Custom Job End2407 2408 >>>>>>> .r182409 2268 // ----- FLEE CALCULATION ----- 2410 2269 … … 2417 2276 status->flee += skill*2; 2418 2277 2419 <<<<<<< .mine2420 =======2421 //Custom Jobs (blackmagic)2422 if((skill=pc_checkskill(sd,AD_FERVOR))>0) // Adept Unholy Fevor [Brain]2423 status->flee += skill*2;2424 //Custom Job End2425 2426 >>>>>>> .r182427 2278 // ----- EQUIPMENT-DEF CALCULATION ----- 2428 2279 … … 2434 2285 status->def = cap_value(i, CHAR_MIN, CHAR_MAX); 2435 2286 } 2436 <<<<<<< .mine 2437 2438 ======= 2439 //Custom Jobs (blackmagic) 2440 // Absolute modifiers from passive skills 2441 if((skill=pc_checkskill(sd,AD_DARKFAITH))>0) // Adept Dark Faith [Brain] 2442 status->mdef += 1*skill; 2443 //Custom Job End 2444 >>>>>>> .r18 2287 2445 2288 if (!battle_config.weapon_defense_type && status->def > battle_config.max_def) 2446 2289 { … … 2569 2412 } 2570 2413 2571 <<<<<<< .mine2572 2414 if((skill=pc_checkskill(sd,AD_DARKFAITH))>0) // Adept Dark Faith [Brain] 2573 2415 sd->subele[ELE_DARK] += skill*5; … … 2577 2419 sd->magic_addrace[RC_DEMON]+=skill; 2578 2420 sd->subrace[RC_DEMON]+=skill; 2579 ======= 2580 2581 //Custom Jobs (blackmagic) 2582 if((skill=pc_checkskill(sd,AD_DARKFAITH))>0) // Adept Dark Faith [Brain] 2583 sd->subele[ELE_DARK] += skill*5; 2584 if((skill=pc_checkskill(sd,WL_DEMONOLOGY))>0 ){ //Warlock Demonology [Brain] 2585 skill = skill*5; 2586 sd->right_weapon.addrace[RC_DEMON]+=skill; 2587 sd->magic_addrace[RC_DEMON]+=skill; 2588 sd->subrace[RC_DEMON]+=skill; 2589 >>>>>>> .r18 2590 } 2591 <<<<<<< .mine 2421 } 2592 2422 if((pc_checkskill(sd,NC_PHYLACTERY))>0){ // Necro Phylactery [Brain] 2593 2423 sd->subele[ELE_NEUTRAL] += 10; //And increases neutral resistance by 10% 2594 2424 } 2595 =======2596 if((pc_checkskill(sd,NC_PHYLACTERY))>0){ // Necro Phylactery [Brain]2597 sd->subele[ELE_NEUTRAL] += 10; //And increases neutral resistance by 10%2598 }2599 //Custom Job End2600 >>>>>>> .r182601 2425 2602 2426 … … 2626 2450 sd->subele[ELE_NEUTRAL] += sd->sc.data[SC_DEATHPACT]->val2; 2627 2451 2628 <<<<<<< .mine2629 =======2630 //Custom Jobs (blackmagic)2631 if(sd->sc.data[SC_DEATHPACT]) //Necro Death Pact [Brain]2632 sd->subele[ELE_NEUTRAL] += sd->sc.data[SC_DEATHPACT]->val2;2633 //Custom Job End2634 2635 >>>>>>> .r182636 2452 if(sc->data[SC_ARMOR_ELEMENT]) 2637 2453 { //This status change should grant card-type elemental resist. … … 2969 2785 || sc->data[SC_TRICKDEAD] 2970 2786 || sc->data[SC_BLEEDING] 2971 <<<<<<< .mine2972 2787 || sc->data[SC_LUST] // Adept Blood Lust, stops hp regen [Brain] 2973 =======2974 //Custom Jobs (blackmagic)2975 || sc->data[SC_LUST] // Adept Blood Lust, stops hp regen [Brain]2976 >>>>>>> .r182977 2788 || sc->data[SC_DEATHPACT] // Necro Death Pact 2978 2789 … … 3755 3566 if(sc->data[SC_MADNESSCANCEL]) 3756 3567 batk += 100; 3757 <<<<<<< .mine3758 3568 if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 3759 3569 batk += batk * sc->data[SC_LUST]->val2/100; … … 3764 3574 batk -= batk * 25/100; 3765 3575 3766 =======3767 //Custom Jobs (blackmagic)3768 if(sc->data[SC_LUST]) // Adept Blood Lust [Brain]3769 batk += batk * sc->data[SC_LUST]->val2/100;3770 if(sc->data[SC_CURSEWEAKNESS]) // Warlock Curse of Weakness [Brain]3771 batk -= batk * sc->data[SC_CURSEWEAKNESS]->val2/100;3772 if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain]3773 if(sc->data[SC_DECREPIFY]->val2>=2)3774 batk -= batk * 25/100;3775 3776 //Custom Job End3777 >>>>>>> .r183778 3576 return (unsigned short)cap_value(batk,0,USHRT_MAX); 3779 3577 } … … 3818 3616 if(sc->data[SC_STRIPWEAPON]) 3819 3617 watk -= watk * sc->data[SC_STRIPWEAPON]->val2/100; 3820 <<<<<<< .mine3821 3618 if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 3822 3619 watk += watk * sc->data[SC_LUST]->val2/100; … … 3832 3629 if(sc->data[SC_DECREPIFY]->val2>=2) 3833 3630 watk -= watk * 25/100; 3834 =======3835 //Custom Jobs (blackmagic)3836 if(sc->data[SC_LUST]) // Adept Blood Lust [Brain]3837 watk += watk * sc->data[SC_LUST]->val2/100;3838 if(sc->data[SC_REQUIEM]){ //Necro Requiem [Brain]3839 if(sc->data[SC_REQUIEM]->val2)3840 watk += sc->data[SC_REQUIEM]->val2*10;3841 if(sc->data[SC_REQUIEM]->val3)3842 watk -= sc->data[SC_REQUIEM]->val3*10;3843 }3844 if(sc->data[SC_CURSEWEAKNESS]) // Warlock Curse of Weakness [Brain]3845 watk -= watk * sc->data[SC_CURSEWEAKNESS]->val2/100;3846 if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain]3847 if(sc->data[SC_DECREPIFY]->val2>=2)3848 watk -= watk * 25/100;3849 //Custom Job End3850 >>>>>>> .r183851 3631 3852 3632 … … 3869 3649 if(sc->data[SC_INCMATKRATE]) 3870 3650 matk += matk * sc->data[SC_INCMATKRATE]->val1/100; 3871 <<<<<<< .mine3872 3651 if(sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 3873 3652 matk += matk * sc->data[SC_OVERWHELMING]->val2/100; 3874 =======3875 //Custom Jobs (blackmagic)3876 if(sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain]3877 matk += matk * sc->data[SC_OVERWHELMING]->val2/100;3878 //Custom Job End3879 >>>>>>> .r183880 3653 3881 3654 … … 3926 3699 if(sc->data[SC_INCREASING]) 3927 3700 hit += 20; // RockmanEXE; changed based on updated [Reddozen] 3928 <<<<<<< .mine3929 3701 if(sc->data[SC_DARKMOON]){ //Necro Dark Moon [Brain] 3930 3702 if(sc->data[SC_DARKMOON]->val2) … … 3932 3704 if(sc->data[SC_DARKMOON]->val3) 3933 3705 hit -= sc->data[SC_DARKMOON]->val3; 3934 =======3935 //Custom Jobs (blackmagic)3936 if(sc->data[SC_DARKMOON]){ //Necro Dark Moon [Brain]3937 if(sc->data[SC_DARKMOON]->val2)3938 hit += sc->data[SC_DARKMOON]->val2;3939 if(sc->data[SC_DARKMOON]->val3)3940 hit -= sc->data[SC_DARKMOON]->val3;3941 >>>>>>> .r183942 3706 } 3943 3707 … … 3982 3746 if(sc->data[SC_SPEED]) 3983 3747 flee += 10 + sc->data[SC_SPEED]->val1 * 10 ; 3984 <<<<<<< .mine3985 3748 if(sc->data[SC_DARKMOON]){ //Necro Dark Moon [Brain] 3986 3749 if(sc->data[SC_DARKMOON]->val2) … … 3988 3751 if(sc->data[SC_DARKMOON]->val3) 3989 3752 flee -= sc->data[SC_DARKMOON]->val3; 3990 =======3991 //Custom Jobs (blackmagic)3992 if(sc->data[SC_DARKMOON]){ //Necro Dark Moon [Brain]3993 if(sc->data[SC_DARKMOON]->val2)3994 flee += sc->data[SC_DARKMOON]->val2;3995 if(sc->data[SC_DARKMOON]->val3)3996 flee -= sc->data[SC_DARKMOON]->val3;3997 >>>>>>> .r183998 3753 } 3999 3754 … … 4056 3811 if (sc->data[SC_FLING]) 4057 3812 def -= def * (sc->data[SC_FLING]->val2)/100; 4058 <<<<<<< .mine4059 3813 if(sc->data[SC_SUFFER]) // Necro Power Word: Suffer [Brain] 4060 3814 def <<=1; // -25% def … … 4063 3817 if (sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 4064 3818 def += sc->data[SC_OVERWHELMING]->val1; 4065 =======4066 //Custom Jobs (blackmagic)4067 if(sc->data[SC_SUFFER]) // Necro Power Word: Suffer [Brain]4068 def <<=1; // -25% def4069 if (sc->data[SC_CURSEEXHAUST]) // Warlock Curse of Exhaustion [Brain]4070 def -= sc->data[SC_CURSEEXHAUST]->val2;4071 if (sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain]4072 def += sc->data[SC_OVERWHELMING]->val1;4073 //Custom Job End4074 >>>>>>> .r184075 3819 4076 3820 … … 4114 3858 def2 -= def2 * 25/100; 4115 3859 4116 <<<<<<< .mine4117 =======4118 //Custom Jobs (blackmagic)4119 if(sc->data[SC_SUFFER]) // Necro Power Word: Suffer [Brain]4120 def2 -= def2 * 25/100; // -25% def4121 if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain]4122 if(sc->data[SC_DECREPIFY]->val2>=4)4123 def2 -= def2 * 25/100;4124 //Custom Job End4125 >>>>>>> .r184126 3860 4127 3861 return (short)cap_value(def2,1,SHRT_MAX); … … 4151 3885 if(sc->data[SC_CONCENTRATION]) 4152 3886 mdef += 1; //Skill info says it adds a fixed 1 Mdef point. 4153 <<<<<<< .mine4154 3887 if(sc->data[SC_AGONY]) // Warlock Power Word: Agony [Brain] 4155 3888 mdef -= 25*mdef/100; // -25% mdef … … 4158 3891 if (sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 4159 3892 mdef += sc->data[SC_OVERWHELMING]->val1; 4160 =======4161 //Custom Jobs (blackmagic)4162 if(sc->data[SC_AGONY]) // Warlock Power Word: Agony [Brain]4163 mdef -= 25*mdef/100; // -25% mdef4164 if (sc->data[SC_CURSEEXHAUST]) // Warlock Curse of Exhaustion [Brain]4165 mdef -= sc->data[SC_CURSEEXHAUST]->val2;4166 if (sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain]4167 mdef += sc->data[SC_OVERWHELMING]->val1;4168 //Custom Job End4169 >>>>>>> .r184170 3893 4171 3894 … … 4182 3905 if(sc->data[SC_MINDBREAKER]) 4183 3906 mdef2 -= mdef2 * sc->data[SC_MINDBREAKER]->val3/100; 4184 <<<<<<< .mine4185 3907 if(sc->data[SC_AGONY]) // Warlock Power Word: Agony [Brain] 4186 3908 mdef2 -= mdef2 * 25/100; // -25% mdef … … 4188 3910 if(sc->data[SC_DECREPIFY]->val2>=5) 4189 3911 mdef2 -= mdef2 * 25/100; 4190 =======4191 //Custom Jobs (blackmagic)4192 if(sc->data[SC_AGONY]) // Warlock Power Word: Agony [Brain]4193 mdef2 -= mdef2 * 25/100; // -25% mdef4194 if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain]4195 if(sc->data[SC_DECREPIFY]->val2>=5)4196 mdef2 -= mdef2 * 25/100;4197 //Custom Job End4198 >>>>>>> .r184199 3912 4200 3913 … … 4251 3964 else if(sc->data[SC_WINDWALK]) 4252 3965 new_speed -= new_speed * sc->data[SC_WINDWALK]->val3/100; 4253 <<<<<<< .mine4254 3966 else if(sc->data[SC_FEAR]) //Fear Status by [Brainstorm] 4255 3967 new_speed -= new_speed * 25/100; 4256 3968 4257 =======4258 //Custom Jobs (blackmagic)4259 else if(sc->data[SC_FEAR]) //Fear Status by [Brainstorm]4260 new_speed -= new_speed * 25/100;4261 //Custom Job End4262 >>>>>>> .r184263 3969 } 4264 3970 … … 4304 4010 if(sc->data[SC_SLOWDOWN]) 4305 4011 speed = speed * 100/75; 4306 <<<<<<< .mine4307 4012 if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain] 4308 4013 speed = speed * 100/75; //-25% walkspeed 4309 4014 4310 =======4311 //Custom Jobs (blackmagic)4312 if(sc->data[SC_DECREPIFY]) // Necromancer Decrepify [Brain]4313 speed = speed * 100/75; //-25% walkspeed4314 //Custom Job End4315 >>>>>>> .r184316 4015 4317 4016 return (short)cap_value(speed,10,USHRT_MAX); … … 4384 4083 else if(sc->data[SC_MADNESSCANCEL]) 4385 4084 aspd_rate -= 200; 4386 <<<<<<< .mine4387 4085 else if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 4388 4086 aspd_rate -= sc->data[SC_LUST]->val2*10; 4389 4087 4390 =======4391 //Custom Jobs (blackmagic)4392 else if(sc->data[SC_LUST]) // Adept Blood Lust [Brain]4393 aspd_rate -= sc->data[SC_LUST]->val2*10;4394 //Custom Job End4395 >>>>>>> .r184396 4088 } 4397 4089 … … 4487 4179 if(sc->data[SC_ELEMENTALCHANGE]) 4488 4180 return sc->data[SC_ELEMENTALCHANGE]->val2; 4489 <<<<<<< .mine4490 4181 if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain] 4491 4182 return ELE_UNDEAD; … … 4493 4184 return ELE_DARK; 4494 4185 4495 =======4496 //Custom Jobs (blackmagic)4497 if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain]4498 return ELE_UNDEAD;4499 if( sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain]4500 return ELE_DARK;4501 //Custom Job End4502 >>>>>>> .r184503 4186 return (unsigned char)cap_value(element,0,UCHAR_MAX); 4504 4187 } … … 4519 4202 if(sc->data[SC_ELEMENTALCHANGE]) 4520 4203 return sc->data[SC_ELEMENTALCHANGE]->val1; 4521 <<<<<<< .mine4522 4204 if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain] 4523 4205 return 1; 4524 4206 if( sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain] 4525 4207 return 1; 4526 =======4527 //Custom Jobs (blackmagic)4528 if( sc->data[SC_DEATHPACT]) // Necro Death Pact [Brain]4529 return 1;4530 if( sc->data[SC_OVERWHELMING]) // Warlock Overwhelming Evil [Brain]4531 return 1;4532 //Custom Job End4533 >>>>>>> .r184534 4208 4535 4209 … … 5399 5073 5400 5074 case SC_FOGWALL: 5401 <<<<<<< .mine5402 =======5403 //Custom Jobs (blackmagic)5404 //New status [Brainstorm]5405 case SC_FEAR:5406 case SC_DECREPIFY:5407 case SC_DARKMOON:5408 case SC_REQUIEM:5409 case SC_CURSETONGUES:5410 case SC_CURSEWEAKNESS:5411 case SC_CURSEEXHAUST:5412 //Custom Job End5413 >>>>>>> .r185414 5075 return 0; 5415 5076 } … … 5427 5088 if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE) 5428 5089 status_change_end(bl,SC_STONE,-1); 5429 <<<<<<< .mine5430 5090 // Warlock Curses are canceled by blessing [Brain] 5431 5091 if (sc->data[SC_CURSEWEAKNESS]) … … 5438 5098 status_change_end(bl,SC_DOOM,-1);//But then people would abuse on WoEs 5439 5099 5440 ======= 5441 //Custom Jobs (blackmagic) 5442 // Warlock Curses are canceled by blessing [Brain] 5443 if (sc->data[SC_CURSEWEAKNESS]) 5444 status_change_end(bl,SC_CURSEWEAKNESS,-1); 5445 if (sc->data[SC_CURSETONGUES]) 5446 status_change_end(bl,SC_CURSETONGUES,-1); 5447 if (sc->data[SC_CURSEEXHAUST]) 5448 status_change_end(bl,SC_CURSEEXHAUST,-1); 5449 if (sc->data[SC_DOOM]) // This skill would be way funnier if we could igore this concept, no? 5450 status_change_end(bl,SC_DOOM,-1);//But then people would abuse on WoEs 5451 //Custom Job End 5452 >>>>>>> .r18 5453 } 5454 break; 5455 <<<<<<< .mine 5100 } 5101 break; 5456 5102 case SC_CURSEWEAKNESS: // Warlock Curse of Weakness removes Impositio Manus [Brain] 5457 5103 if (sc->data[SC_IMPOSITIO]) … … 5486 5132 break; 5487 5133 5488 =======5489 //Custom Jobs (blackmagic)5490 case SC_CURSEWEAKNESS: // Warlock Curse of Weakness removes Impositio Manus [Brain]5491 if (sc->data[SC_IMPOSITIO])5492 status_change_end(bl,SC_IMPOSITIO,-1);5493 if (sc->data[SC_BLESSING]) //The opposite is also valid, curses cancel blessing [Brain]5494 status_change_end(bl,SC_BLESSING,-1);5495 break;5496 case SC_CURSETONGUES: // Warlock Curse of Tongues removes Suffragium [Brain]5497 if (sc->data[SC_SUFFRAGIUM])5498 status_change_end(bl,SC_SUFFRAGIUM,-1);5499 if (sc->data[SC_BLESSING])5500 status_change_end(bl,SC_BLESSING,-1);5501 break;5502 case SC_CURSEEXHAUST: // Warlock Curse of Exhaustion removes angelus [Brain]5503 if (sc->data[SC_ANGELUS])5504 status_change_end(bl,SC_ANGELUS,-1);5505 case SC_DOOM:5506 if (sc->data[SC_BLESSING])5507 status_change_end(bl,SC_BLESSING,-1);5508 break;5509 case SC_IMPOSITIO: // Impositio Manus removes Curse of Weakness [Brain]5510 if (sc->data[SC_CURSEWEAKNESS])5511 status_change_end(bl,SC_CURSEWEAKNESS,-1);5512 break;5513 case SC_SUFFRAGIUM: // Suffragium removes Curse of Tongues [Brain]5514 if (sc->data[SC_CURSETONGUES])5515 status_change_end(bl,SC_CURSETONGUES,-1);5516 break;5517 case SC_ANGELUS: // Angelus removes Curse of Exhaustion [Brain]5518 if (sc->data[SC_CURSEEXHAUST])5519 status_change_end(bl,SC_CURSEEXHAUST,-1);5520 break;5521 //Custom Job End5522 >>>>>>> .r185523 5134 case SC_INCREASEAGI: 5524 5135 status_change_end(bl,SC_DECREASEAGI,-1); … … 5539 5150 status_change_end(bl,SC_TWOHANDQUICKEN,-1); 5540 5151 status_change_end(bl,SC_ONEHAND,-1); 5541 <<<<<<< .mine5542 5152 if(sc->data[SC_LUST]) // Adept Blood Lust [Brain] 5543 =======5544 //Custom Jobs (blackmagic)5545 if(sc->data[SC_LUST]) // Adept Blood Lust [Brain]5546 >>>>>>> .r185547 5153 status_change_end(bl,SC_LUST,-1); 5548 5154 … … 5605 5211 status_change_end(bl,SC_MADNESSCANCEL,-1); 5606 5212 break; 5607 <<<<<<< .mine5608 5213 case SC_FREEZE: //Frozen status ends immolating AND searing status [Brain] 5609 5214 if(sc->data[SC_IMMOLATE]) … … 5614 5219 break; 5615 5220 5616 =======5617 //Custom Jobs (blackmagic)5618 case SC_FREEZE: //Frozen status ends immolating AND searing status [Brain]5619 if(sc->data[SC_IMMOLATE])5620 status_change_end(bl,SC_IMMOLATE,-1);5621 case SC_IMMOLATE: // Warlock Immolate [Brain]5622 if(sc->data[SC_SEARING]) //Immolating status ends searing status5623 status_change_end(bl,SC_SEARING,-1);5624 break;5625 //Custom Job End5626 >>>>>>> .r185627 5221 case SC_MADNESSCANCEL: 5628 5222 status_change_end(bl,SC_ADJUSTMENT,-1); … … 5966 5560 clif_emotion(bl,1); 5967 5561 break; 5968 <<<<<<< .mine5969 5562 case SC_FEAR: //Fear Status by [Brainstorm] 5970 5563 clif_emotion(bl,16); // e_wah … … 5972 5565 break; 5973 5566 5974 =======5975 //Custom Jobs (blackmagic)5976 case SC_FEAR: //Fear Status by [Brainstorm]5977 clif_emotion(bl,16); // e_wah5978 if(sd) tick /= 2;5979 break;5980 //Custom Job End5981 >>>>>>> .r185982 5567 case SC_BLEEDING: 5983 5568 val4 = tick/10000; … … 6357 5942 break; 6358 5943 6359 <<<<<<< .mine6360 5944 case SC_ATFIELD: // AT-Field [Brainstorm] 6361 5945 val2 = 100; // 100% Block chance … … 6364 5948 tick = 1000; 6365 5949 break; 6366 =======6367 //Custom Jobs (blackmagic)6368 case SC_ATFIELD: // AT-Field [Brainstorm]6369 val2 = 100; // 100% Block chance6370 val3 = 100; // Dodge 100 attacks total.6371 val4 = tick/1000;6372 tick = 1000;6373 break;6374 //Custom Job End6375 >>>>>>> .r186376 5950 6377 5951 … … 6423 5997 val2 = 0; //0 -> Half stat. 6424 5998 break; 6425 <<<<<<< .mine6426 5999 case SC_REQUIEM: //Necro Requiem and Dark Moon [Brain] 6427 6000 case SC_DARKMOON: … … 6435 6008 else 6436 6009 val3 = val1; //Everything else (living) get negative status (requiem only) 6437 =======6438 //Custom Jobs (blackmagic)6439 case SC_REQUIEM: //Necro Requiem and Dark Moon [Brain]6440 case SC_DARKMOON:6441 if (undead_flag || status->race==RC_UNDEAD || status->race==RC_DEMON)6442 val2 = val1; //Demon and Undead get buffed6443 else if(status->race==RC_FORMLESS || status->def_ele==ELE_GHOST || bl->type == BL_PC)6444 {6445 val1 = 0; //No status change for Formless and Ghosts, and non-undead players6446 tick = 0; //Cancel status to not show requiem icon without a reason6447 }6448 else6449 val3 = val1; //Everything else (living) get negative status (requiem only)6450 break;6451 case SC_DECREPIFY: //Necro Decrepify [Brain]6452 val2 = val1;6453 >>>>>>> .r186454 6010 break; 6455 6011 case SC_DECREPIFY: //Necro Decrepify [Brain] … … 6497 6053 val2 = 5*val1; //watk increase 6498 6054 break; 6499 <<<<<<< .mine6500 6055 case SC_CURSEWEAKNESS: // Warlock Curse of Weakness [Brain] 6501 6056 val2 = 5*val1; //batk/watk decrease … … 6508 6063 break; 6509 6064 6510 =======6511 //Custom Jobs (blackmagic)6512 case SC_CURSEWEAKNESS: // Warlock Curse of Weakness [Brain]6513 val2 = 5*val1; //batk/watk decrease6514 break;6515 case SC_CURSEEXHAUST: // Warlock Curse of Exhaustion [Brain]6516 val2 = 2*val1; //def/mdef decrease6517 break;6518 case SC_CURSETONGUES: // Warlock Curse of Tongues [Brain]6519 val2 = 10*val1; //casttime increase6520 break;6521 //Custom Job End6522 >>>>>>> .r186523 6065 case SC_MELTDOWN: 6524 6066 val2 = 100*val1; //Chance to break weapon … … 6576 6118 val3 = 5+5*val1; //bAtk/wAtk rate change 6577 6119 break; 6578 <<<<<<< .mine6579 6120 case SC_LUST: // Adept Blood Lust [Brain] 6580 6121 val2 = 5+3*val1; //Aspd/bAtk/wAtk change … … 6590 6131 break; 6591 6132 6592 =======6593 //Custom Jobs (blackmagic)6594 case SC_LUST: // Adept Blood Lust [Brain]6595 val2 = 5+3*val1; //Aspd/bAtk/wAtk change6596 val3 = tick>0?tick:1000; //Interval at which HP is drained.6597 break;6598 case SC_DEATHPACT: // Necro Death Pact [Brain]6599 val2 = 5*val1; //Neutral property resistance6600 val3 = tick>0?tick:10000; //Interval at which HP is drained.6601 break;6602 case SC_OVERWHELMING: // Warlock Overwhelming Evil [Brain]6603 val2 = 2*val1; //matk bonus6604 val3 = tick>0?tick:1000; //Interval at which SP is drained.6605 break;6606 //Custom Job End6607 >>>>>>> .r186608 6133 case SC_MINDBREAKER: 6609 6134 val2 = 20*val1; //matk increase. … … 6789 6314 unit_skillcastcancel(bl, 0); 6790 6315 break; 6791 <<<<<<< .mine6792 6316 6793 6317 case SC_FEAR: //Fear Status by [Brainstorm] … … 6796 6320 6797 6321 6798 =======6799 //Custom Jobs (blackmagic)6800 case SC_FEAR: //Fear Status by [Brainstorm]6801 unit_stop_attack(bl);6802 break;6803 //Custom Job End6804 >>>>>>> .r186805 6322 } 6806 6323 … … 7248 6765 } 7249 6766 break; 7250 <<<<<<< .mine7251 6767 case SC_SPLASHER: 7252 6768 case SC_DOOM: // Warlock Curse of Doom [Brain] 7253 6769 7254 =======7255 //Custom Jobs (blackmagic)7256 case SC_SPLASHER:7257 case SC_DOOM: // Warlock Curse of Doom [Brain]7258 //Custom Job End7259 >>>>>>> .r187260 6770 { 7261 6771 struct block_list *src=map_id2bl(sce->val3); … … 7625 7135 sc_timer_next(sce->val2+tick, status_change_timer, bl->id, data); 7626 7136 return 0; 7627 <<<<<<< .mine7628 =======7629 //Custom Jobs (blackmagic)7630 case SC_LUST: // Adept Blood Lust [Brain]7631 if(!status_charge(bl, status->max_hp/100, 0))7632 break; //Not enough HP to continue.7633 sc_timer_next(sce->val3+tick, status_change_timer, bl->id, data);7634 return 0;7635 case SC_DEATHPACT: // Necro Death Pact [Brain]7636 // Drains 1 HP every second (status wont kill, but dying will cancel it)7637 status_charge(bl, 1, 0);7638 sc_timer_next(sce->val3+tick, status_change_timer, bl->id, data);7639 return 0;7640 case SC_OVERWHELMING: // Warlock Overwhelming Evil [Brain]7641 if(!status_charge(bl, 0, status->max_sp/100))7642 break; //Not enough SP to continue.7643 sc_timer_next(sce->val3+tick, status_change_timer, bl->id, data);7644 return 0;7645 //Custom Job End7646 >>>>>>> .r187647 7137 7648 7138 case SC_LUST: // Adept Blood Lust [Brain] … … 7896 7386 } 7897 7387 break; 7898 <<<<<<< .mine7899 7388 case SC_DOOM: // Warlock Curse of Doom [Brain] 7900 7389 if((sce->val4 -= 500) > 0) { … … 7903 7392 } 7904 7393 break; 7905 =======7906 //Custom Jobs (blackmagic)7907 case SC_DOOM: // Warlock Curse of Doom [Brain]7908 if((sce->val4 -= 500) > 0) {7909 sc_timer_next(500 + tick, status_change_timer, bl->id, data);7910 return 0;7911 }7912 break;7913 //Custom Job End7914 >>>>>>> .r187915 7394 7916 7395 case SC_MARIONETTE: -
src/map/status.h
r19 r22 312 312 SC_SPREGEN, 313 313 SC_WALKSPEED, 314 <<<<<<< .mine315 =======316 //Custom Jobs (blackmagic)317 SC_DECREPIFY, // New status [brain]318 SC_LUST,319 SC_DARKMOON,320 SC_REQUIEM,321 SC_DEATHPACT,322 SC_ATFIELD,323 SC_SUFFER,324 SC_SEARING,325 SC_IMMOLATE,326 SC_AGONY,327 SC_CURSETONGUES,328 SC_DOOM,329 SC_CURSEWEAKNESS,330 SC_CURSEEXHAUST,331 SC_OVERWHELMING,332 SC_FEAR,333 //Custom Job End334 >>>>>>> .r18335 314 SC_MAX, //Automatically updated max, used in for's to check we are within bounds. 336 315 } sc_type; -
src/map/unit.c
r19 r22 307 307 map_random_dir(bl, &ud->to_x, &ud->to_y); 308 308 309 310 309 if(ud->walktimer != -1) { 311 310 // »Ýà¢Ä¢éÅÌÚInÏXÈÌÅ}XÚÌSÉœÉ … … 375 374 if (sc && sc->data[SC_CONFUSION]) //Randomize the target position 376 375 map_random_dir(bl, &ud->to_x, &ud->to_y); 377 //Custom Jobs (blackmagic)378 if (sc && sc->data[SC_FEAR]) //Flee from my target [Brainstorm]379 unit_escape(bl, tbl, 15);380 //Custom Job End381 376 382 377 if (sc && sc->data[SC_FEAR]) //Flee from my target [Brainstorm]