Index: src/map/skill.c
===================================================================
--- src/map/skill.c (revision 13)
+++ src/map/skill.c (revision 19)
@@ -42,5 +42,5 @@
 #define GD_SKILLRANGEMIN 900
 #define GD_SKILLRANGEMAX GD_SKILLRANGEMIN+MAX_GUILDSKILL
-#define HM_SKILLRANGEMIN 1100 //Custom Jobs (blackmagic)//Custom Job End
+#define HM_SKILLRANGEMIN 1100
 #define HM_SKILLRANGEMAX HM_SKILLRANGEMIN+MAX_HOMUNSKILL
 
@@ -283,5 +283,5 @@
 	struct status_change* sc;
 	sc = status_get_sc(bl);
-	
+
 	// Never copy NPC/Wedding Skills
 	if (skill_get_inf2(skillid)&(INF2_NPC_SKILL|INF2_WEDDING_SKILL))
@@ -300,5 +300,5 @@
 	if ((skillid == AL_INCAGI || skillid == AL_BLESSING))
 		return 0;
-		
+
 	return 1;
 }
@@ -306,13 +306,13 @@
 // [MouseJstr] - skill ok to cast? and when?
 int skillnotok (int skillid, struct map_session_data *sd)
-{	
+{
 	int i,m;
 	nullpo_retr (1, sd);
 	m = sd->bl.m;
 	i = skill_get_index(skillid);
-	
+
 	if (i == 0)
 		return 1; // invalid skill id
-	
+
 	if (battle_config.gm_skilluncond && pc_isGM(sd) >= battle_config.gm_skilluncond)
 		return 0;  // GMs can do any damn thing they want
@@ -354,5 +354,5 @@
 				return 1;
 			}
-			break;	
+			break;
 		case MC_VENDING:
 		case MC_IDENTIFY:
@@ -387,5 +387,5 @@
 	if (i == 0)
 		return 1; // invalid skill id
-	
+
 	if (hd->blockskill[i] > 0)
 		return 1;
@@ -396,5 +396,5 @@
 
 struct s_skill_unit_layout* skill_get_unit_layout (int skillid, int skilllv, struct block_list* src, int x, int y)
-{	
+{
 	int pos = skill_get_unit_layout_type(skillid,skilllv);
 	int dir;
@@ -420,5 +420,5 @@
 
 /*==========================================
- * 
+ *
  *------------------------------------------*/
 int skill_additional_effect (struct block_list* src, struct block_list *bl, int skillid, int skilllv, int attack_type, unsigned int tick)
@@ -450,5 +450,5 @@
 	if (!tsc) //skill additional effect is about adding effects to the target...
 		//So if the target can't be inflicted with statuses, this is pointless.
-		return 0;	
+		return 0;
 
 	switch(skillid)
@@ -482,5 +482,5 @@
 						(2000 - 4*sstatus->agi - 2*sstatus->dex)))
 					; //Stance triggered
-				else if(sc->data[SC_READYTURN] && 
+				else if(sc->data[SC_READYTURN] &&
 					sc_start(src,SC_COMBO, 15, TK_TURNKICK,
 						(2000 - 4*sstatus->agi - 2*sstatus->dex)))
@@ -492,5 +492,5 @@
 						rate += rate*sc->data[SC_SKILLRATE_UP]->val2/100;
 						status_change_end(src,SC_SKILLRATE_UP,-1);
-					} 
+					}
 					sc_start4(src,SC_COMBO, rate, TK_COUNTER, bl->id,0,0,
 						(2000 - 4*sstatus->agi - 2*sstatus->dex));
@@ -662,5 +662,5 @@
 	case NPC_PETRIFYATTACK:
 		sc_start4(bl,status_skill2sc(skillid),50+10*skilllv,
-			skilllv,0,0,skill_get_time(skillid,skilllv), 
+			skilllv,0,0,skill_get_time(skillid,skilllv),
 			skill_get_time2(skillid,skilllv));
 		break;
@@ -680,5 +680,5 @@
 		sc_start(bl,SC_BLEEDING,(20*skilllv),skilllv,skill_get_time2(skillid,skilllv));
 		break;
-	case NPC_MENTALBREAKER: 
+	case NPC_MENTALBREAKER:
 	{	//Based on observations by Tharis, Mental Breaker should do SP damage
 	  	//equal to Matk*skLevel.
@@ -785,5 +785,5 @@
 			if (tsc->data[SC_ADRENALINE2])
 				status_change_end(bl, SC_ADRENALINE2, -1);
-		}		
+		}
 		break;
 	case TK_TURNKICK:
@@ -821,4 +821,35 @@
 		sc_start(bl,SC_CRITICALWOUND,100,skilllv,skill_get_time2(skillid,skilllv));
 		break;
+<<<<<<< .mine
+	case NC_GHOULTOUCH:	//Necro Ghoul Touch [Brain]
+	if (battle_check_living(tstatus->race, tstatus->def_ele)) //Check if target is a living creature before proceed
+		sc_start(bl,SC_POISON,10000,skilllv,skill_get_time2(skillid,skilllv));
+	break;
+	case NC_PWSUFFER:	//Necro Power Word: Suffer [Brain]
+	case WL_PWAGONY:	//Warlock Power Word: Agony [Brain]
+	if (battle_check_living(tstatus->race, tstatus->def_ele)) //Check if target is a living creature before proceed
+		sc_start(bl,skillid==NC_PWSUFFER?SC_SUFFER:SC_AGONY,1000,skilllv,skill_get_time2(skillid,skilllv));
+	break;
+	case WL_SEARING:	//Warlock Searing Pain [Brain]
+	//The DoT is only initiated if target isnt burning already.
+	if(!tsc->data[SC_SEARING] && !tsc->data[SC_IMMOLATE])
+		sc_start(bl,SC_SEARING,10000,skilllv,skill_get_time2(skillid,skilllv));
+	break;
+	case WL_IMMOLATE:	//Warlock Immolate [Brain]
+	//The DoT is only initiated if target isnt in immolate, but must be in searing pain status
+	if(tsc->data[SC_SEARING] && !tsc->data[SC_IMMOLATE])
+		sc_start(bl,SC_IMMOLATE,10000,skilllv,skill_get_time2(skillid,skilllv));
+	break;
+	case WL_SHADOWBURN:	//Warlock Shadow Burn [Brain]
+	sc_start(bl,SC_STUN,10000,skilllv,skill_get_time(skillid,skilllv));
+	break;
+	//Mercenary Skills [Brainstorm]
+/*	case MS_BASH:
+	sc_start(bl,SC_STUN,5*(skilllv-5),skilllv,skill_get_time(skillid,skilllv));
+	break;
+	case MER_CRASH:
+	sc_start(bl,SC_STUN,6*skilllv,skilllv,skill_get_time(skillid,skilllv));
+	break;*/
+=======
 		//Custom Jobs (blackmagic)
 	case NC_GHOULTOUCH:	//Necro Ghoul Touch [Brain]
@@ -845,4 +876,5 @@
 		break;
 //Custom Job End
+>>>>>>> .r18
 	}
 
@@ -956,5 +988,5 @@
 	if(sd && sd->classchange && attack_type&BF_WEAPON &&
 		dstmd && !(tstatus->mode&MD_BOSS) &&
-		(rand()%10000 < sd->classchange)) 
+		(rand()%10000 < sd->classchange))
 	{
 		struct mob_db *mob;
@@ -965,5 +997,5 @@
 				class_ = rand() % MAX_MOB_DB;
 			} while (!mobdb_checkid(class_));
-			
+
 			rate = rand() % 1000000;
 			mob = mob_db(class_);
@@ -979,8 +1011,8 @@
 
 /* Splitted off from skill_additional_effect, which is never called when the
- * attack skill kills the enemy. Place in this function counter status effects 
- * when using skills (eg: Asura's sp regen penalty, or counter-status effects 
+ * attack skill kills the enemy. Place in this function counter status effects
+ * when using skills (eg: Asura's sp regen penalty, or counter-status effects
  * from cards) that will take effect on the source, not the target. [Skotlex]
- * Note: Currently this function only applies to Extremity Fist and BF_WEAPON 
+ * Note: Currently this function only applies to Extremity Fist and BF_WEAPON
  * type of skills, so not every instance of skill_additional_effect needs a call
  * to this one.
@@ -992,5 +1024,5 @@
 	struct map_session_data *dstsd=NULL;
 	struct status_change *tsc;
-	
+
 	nullpo_retr(0, src);
 	nullpo_retr(0, bl);
@@ -1010,5 +1042,5 @@
 		if(tsc && tsc->data[SC_KAAHI] && tsc->data[SC_KAAHI]->val4 == -1)
 			tsc->data[SC_KAAHI]->val4 = add_timer(
-				tick+skill_get_time2(SL_KAAHI,tsc->data[SC_KAAHI]->val1), 
+				tick+skill_get_time2(SL_KAAHI,tsc->data[SC_KAAHI]->val1),
 				kaahi_heal_timer, bl->id, SC_KAAHI); //Activate heal.
 		break;
@@ -1042,4 +1074,16 @@
 		status_heal(src, 0, status_get_lv(bl)*(95+15*rate)/100, 2);
 	}
+<<<<<<< .mine
+
+	// Warlock Soul Steal [Brain]
+	if(sd && skillid && attack_type&BF_MAGIC && status_isdead(bl)
+	&& !(skill_get_inf(skillid)&(INF_GROUND_SKILL|INF_SELF_SKILL))
+	&& (rate=pc_checkskill(sd,WL_SOULSTEAL))>0){// Wont work with area/ground spells (hellfire)
+	if (pc_issit(sd)) pc_setstand(sd);
+	clif_skill_nodamage(src,bl,WL_SOULSTEAL,rate,1);
+	clif_specialeffect(src, 253, AREA); // Absorb Mana effect on caster
+	status_heal(src, 0, status_get_lv(bl)*(90+10*rate)/100, 2);
+	if(rand()%100 < rate) skill_additem(src,src,15020,1); //Chance to "steal" the target soul
+=======
 //Custom Jobs (blackmagic)	
 	// Warlock Soul Steal [Brain]
@@ -1052,6 +1096,7 @@
 		status_heal(src, 0, status_get_lv(bl)*(90+10*rate)/100, 2);
 		if(rand()%100 < rate) skill_additem(src,src,15020,1); //Chance to "steal" the target soul
-	}
-//Custom Job End
+>>>>>>> .r18
+	}
+
 	if(dstsd && attack_type&BF_WEAPON)
 	{	//Counter effects.
@@ -1064,5 +1109,5 @@
 				rate+=dstsd->addeff2[i].arrow_rate;
 			if (!rate) continue;
-			
+
 			if ((dstsd->addeff2[i].flag&(ATF_LONG|ATF_SHORT)) != (ATF_LONG|ATF_SHORT))
 			{	//Trigger has range consideration.
@@ -1073,8 +1118,8 @@
 			type = dstsd->addeff2[i].id;
 			time = skill_get_time2(status_sc2skill(type),7);
-			
+
 			if (dstsd->addeff2[i].flag&ATF_TARGET)
 				status_change_start(src,type,rate,7,0,0,0,time,0);
-			
+
 			if (dstsd->addeff2[i].flag&ATF_SELF && !status_isdead(bl))
 				status_change_start(bl,type,rate,7,0,0,0,time,0);
@@ -1084,5 +1129,5 @@
 	// Trigger counter-spells to retaliate against damage causing skills.
 	if(dstsd && !status_isdead(bl) && src != bl && dstsd->autospell2[0].id &&
-		!(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE)) 
+		!(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE))
 	{
 		struct block_list *tbl;
@@ -1104,5 +1149,5 @@
 			if (attack_type&BF_LONG)
 				 rate>>=1;
-			
+
 			if (skillnotok(skillid, dstsd))
 				continue;
@@ -1113,5 +1158,5 @@
 			else
 				tbl = src;
-			
+
 			switch (skill_get_casttype(skillid)) {
 				case CAST_GROUND:
@@ -1137,5 +1182,5 @@
 	//Auto-script when attacked
 	if(dstsd && !status_isdead(bl) && src != bl && dstsd->autoscript2[0].script &&
-		!(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE)) 
+		!(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE))
 	{
 		int i;
@@ -1161,5 +1206,5 @@
    (BCT_ENEMY/BCT_PARTY/BCT_SELF) are the valid values.
 --------------------------------------------------------------------------*/
-int skill_break_equip (struct block_list *bl, unsigned short where, int rate, int flag) 
+int skill_break_equip (struct block_list *bl, unsigned short where, int rate, int flag)
 {
 	const int where_list[4]     = {EQP_WEAPON, EQP_ARMOR, EQP_SHIELD, EQP_HELM};
@@ -1263,5 +1308,5 @@
 	for (i = 0; i < ARRAYLENGTH(pos); i++) {
 		if (where&pos[i] && sc->data[sc_def[i]])
-			where&=~pos[i]; 
+			where&=~pos[i];
 	}
 	if (!where) return 0;
@@ -1293,5 +1338,5 @@
 	if (count == 0)
 		return 0; //Actual knockback distance is 0.
-	
+
 	switch (target->type)
 	{
@@ -1328,5 +1373,5 @@
 
 	if (!su)
-		unit_stop_walking(target,0); 
+		unit_stop_walking(target,0);
 
 	dx = nx - target->x;
@@ -1345,5 +1390,5 @@
 	map_foreachinmovearea(clif_insight, target, AREA_SIZE, -dx, -dy, target->type == BL_PC ? BL_ALL : BL_PC, target);
 
-	if(!(flag&0x1)) 
+	if(!(flag&0x1))
 		clif_blown(target);
 
@@ -1393,5 +1438,5 @@
  * flag&0xFFF is passed to the underlying battle_calc_attack for processing
  *      (usually holds number of targets, or just 1 for simple splash attacks)
- * flag&0x1000 is used to tag that this is a splash-attack (so the damage 
+ * flag&0x1000 is used to tag that this is a splash-attack (so the damage
  *      packet shouldn't display a skill animation)
  * flag&0x2000 is used to signal that the skilllv should be passed as -1 to the
@@ -1494,5 +1539,5 @@
 			}
 		}
-	
+
 		if(sc && sc->data[SC_MAGICROD] && src == dsrc) {
 			int sp = skill_get_sp(skillid,skilllv);
@@ -1508,8 +1553,7 @@
 
 	damage = dmg.damage + dmg.damage2;
-	
-	if (skillid == AL_INCAGI || skillid == AL_BLESSING)
-		if (tsd->sc.data[SC_CHANGEUNDEAD])
-			damage = 1;
+
+	if( (skillid == AL_INCAGI || skillid == AL_BLESSING) && tsd->sc.data[SC_CHANGEUNDEAD] )
+		damage = 1;
 
 	if (damage > 0 && dmg.flag&BF_WEAPON && src != bl && src == dsrc &&
@@ -1520,5 +1564,5 @@
 	type=(skillid==0)?5:skill_get_hit(skillid);
 
-	if(damage < dmg.div_ 
+	if(damage < dmg.div_
 		//Only skills that knockback even when they miss. [Skotlex]
 		&& skillid != CH_PALMSTRIKE)
@@ -1649,5 +1693,5 @@
 		break;
 	}
-	
+
 	map_freeblock_lock();
 
@@ -1682,6 +1726,6 @@
 		}
 	}
-	if (skillid != WZ_SIGHTRASHER && 
-		skillid != WZ_SIGHTBLASTER && 
+	if (skillid != WZ_SIGHTRASHER &&
+		skillid != WZ_SIGHTBLASTER &&
 		skillid != AC_SHOWER &&
 		skillid != SM_MAGNUM &&
@@ -1705,5 +1749,5 @@
 			if (!status_isdead(bl))
 				skill_additional_effect(src,bl,skillid,skilllv,attack_type,tick);
-			//Counter status effects [Skotlex] 
+			//Counter status effects [Skotlex]
 			skill_counter_additional_effect(dsrc,bl,skillid,skilllv,attack_type,tick);
 		}
@@ -1723,5 +1767,5 @@
 		skill_blown(dsrc,bl,dmg.blewcount,direction,0);
 	}
-	
+
 	//Delayed damage must be dealt after the knockback (it needs to know actual position of target)
 	if (dmg.amotion)
@@ -1755,5 +1799,5 @@
 
 	if (!(flag&2) &&
-		(	
+		(
 			skillid == MG_COLDBOLT || skillid == MG_FIREBOLT || skillid == MG_LIGHTNINGBOLT
 		) &&
@@ -1800,9 +1844,11 @@
 	if(battle_check_target(src,bl,flag) > 0)
 	{
-		if (flag&(SD_SPLASH|SD_PREAMBLE)) {
-			if (flag&SD_PREAMBLE && !skill_area_temp[2])
-				clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6);
+		// several splash skills need this initial dummy packet to display correctly
+		if (flag&SD_PREAMBLE && skill_area_temp[2] == 0)
+			clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6);
+
+		if (flag&(SD_SPLASH|SD_PREAMBLE))
 			skill_area_temp[2]++;
-		}
+
 		return func(src,bl,skill_id,skill_lv,tick,flag);
 	}
@@ -1927,5 +1973,5 @@
 	struct map_session_data *sd;
 	int gid, id, strvit, agidex;
-	
+
 	sd = (struct map_session_data *)bl;
 
@@ -1967,5 +2013,5 @@
 	int i,j,hp,sp,hp_rate,sp_rate,state,mhp ;
 	int itemid[10],amount[ARRAYLENGTH(itemid)],index[ARRAYLENGTH(itemid)];
-	
+
 	nullpo_retr(0, hd);
 	sd = hd->master;
@@ -2102,5 +2148,5 @@
 				target = src; //Required since it has to warp.
 			if(target == NULL)
-				break;	
+				break;
 			if(target->prev == NULL)
 				break;
@@ -2145,4 +2191,40 @@
 					}
 					break;
+<<<<<<< .mine
+
+		case NC_PWSUFFER: //Necro Power Word: Suffer [Brain]
+			if (!status_isdead(target) && status_get_sc(target)->data[SC_SUFFER]){
+			skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL);
+			clif_specialeffect(target, 180, AREA); //Shadow Hit Effect on target
+			if (skl->type>1 && !status_isdead(target))
+				skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION);
+			}
+			break;
+		case WL_SEARING: //Warlock Searing Pain [Brain]
+			if (!status_isdead(target) && status_get_sc(target)->data[SC_SEARING]){
+			skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL);
+			clif_specialeffect(target, 49, AREA); //Fire Hit Effect on target
+			if (skl->type>1 && !status_isdead(target))
+				skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION);
+			}
+			break;
+		case WL_IMMOLATE: //Warlock Immolate [Brain]
+			if (!status_isdead(target) && status_get_sc(target)->data[SC_IMMOLATE]){
+			skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL);
+			clif_specialeffect(target, 97, AREA); //Firepillar Hit Effect on target
+			if (skl->type>1 && !status_isdead(target))
+				skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION);
+			}
+			break;
+		case WL_PWAGONY: //Warlock Power Word: Agony [Brain]
+			if (!status_isdead(target) && status_get_sc(target)->data[SC_AGONY]){
+			skill_attack(BF_MAGIC,src,target,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_ANIMATION|SD_LEVEL);
+			clif_specialeffect(target, 587, AREA); //Big Purple Flame Effect on target
+			if (skl->type>1 && !status_isdead(target))
+				skill_addtimerskill(src,tick+3000,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag|SD_ANIMATION);
+			}
+			break;
+
+=======
 					//Custom Jobs (blackmagic)
 				
@@ -2181,4 +2263,5 @@
 				
 					//Custom Job End
+>>>>>>> .r18
 				default:
 					skill_attack(skl->type,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag);
@@ -2216,8 +2299,8 @@
 	ud = unit_bl2ud(src);
 	nullpo_retr(1, ud);
-	
+
 	ARR_FIND( 0, MAX_SKILLTIMERSKILL, i, ud->skilltimerskill[i] == 0 );
 	if( i == MAX_SKILLTIMERSKILL ) return 1;
-	
+
 	ud->skilltimerskill[i] = ers_alloc(skill_timer_ers, struct skill_timerskill);
 	ud->skilltimerskill[i]->timer = add_timer(tick, skill_timerskill, src->id, i);
@@ -2244,5 +2327,5 @@
 	ud = unit_bl2ud(src);
 	nullpo_retr(0, ud);
-		
+
 	for(i=0;i<MAX_SKILLTIMERSKILL;i++) {
 		if(ud->skilltimerskill[i]) {
@@ -2281,5 +2364,5 @@
 
 	nullpo_retr(1, src);
-	nullpo_retr(1, bl);	
+	nullpo_retr(1, bl);
 
 	if (src->m != bl->m)
@@ -2288,5 +2371,5 @@
 	if (bl->prev == NULL)
 		return 1;
-	
+
 	sd = BL_CAST(BL_PC, src);
 	tsd = BL_CAST(BL_PC, bl);
@@ -2304,5 +2387,5 @@
 	}
 
-	sc = status_get_sc(src);	
+	sc = status_get_sc(src);
 	if (sc && !sc->count)
 		sc = NULL; //Unneeded
@@ -2393,5 +2476,31 @@
 	case NPC_BLEEDING:
 	case NPC_CRITICALWOUND:
+	/*Mercenary Skills [Brainstorm]
+	case MS_BASH:
+	case MA_DOUBLE:
+	case MA_CHARGEARROW:
+	case ML_PIERCE:
+	case ML_SPIRALPIERCE:
+	case MER_CRASH:
 		skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
+<<<<<<< .mine
+		break;*/
+	case NC_GHOULTOUCH:	//Necro Ghoul Touch [Brain]
+	skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
+	clif_specialeffect(bl, 124, AREA); //Venom Dust Effect on target
+	break;
+	case NC_DEATHHAND:	 //Necro Death Hand [Brain]
+	skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag|SD_LEVEL);//Hide skill yell
+	clif_specialeffect(bl, 65, AREA); //Power absorb Effect on target
+	if (battle_check_living(tstatus->race, tstatus->def_ele)){ //Check if target is a living creature before proceed
+		int chance = (10+(skilllv*2)+(status_get_luk(src)-status_get_luk(bl))/5);
+		//10% chance + 2% per skilllv + (caster luk - target luk)/5 %
+		if (rand()%100 < chance) {
+			clif_skill_nodamage(src,bl,skillid,-1,flag|SD_LEVEL);//Hide skill yell
+			status_percent_damage(src, bl, 100, 0, true); //Instant kill our target
+		} else clif_skill_fail(sd,skillid,0,0);
+	}
+	break;
+=======
 		break;
 		//Custom Jobs (blackmagic)
@@ -2414,4 +2523,6 @@
 		break;
 		//Custom Job End
+>>>>>>> .r18
+
 
 	case LK_JOINTBEAT: // decide the ailment first (affects attack damage and effect)
@@ -2446,5 +2557,5 @@
 		map_foreachinrange(skill_attack_area, src,
 			skill_get_splash(skillid, skilllv), splash_target(src),
-			BF_WEAPON, src, src, skillid, skilllv, tick, flag, BCT_ENEMY);	
+			BF_WEAPON, src, src, skillid, skilllv, tick, flag, BCT_ENEMY);
 		break;
 
@@ -2588,5 +2699,5 @@
 	//Splash attack skills.
 	case AS_GRIMTOOTH:
-	case MC_CARTREVOLUTION:	
+	case MC_CARTREVOLUTION:
 	case NPC_SPLASHATTACK:
 		flag |= SD_PREAMBLE; // a fake packet will be sent for the first target to be hit
@@ -2594,5 +2705,5 @@
 	case SM_MAGNUM:
 	case HT_BLITZBEAT:
-	case AC_SHOWER:	
+	case AC_SHOWER:
 	case MG_NAPALMBEAT:
 	case MG_FIREBALL:
@@ -2651,5 +2762,5 @@
 		if (skill_area_temp[1] != bl->id)
 			skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag|SD_ANIMATION);
-		else 
+		else
 			skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag);
 		break;
@@ -2716,10 +2827,10 @@
 				skill_castend_nodamage_id);
 	}
-		break;	
+		break;
 	case CH_PALMSTRIKE: //	Palm Strike takes effect 1sec after casting. [Skotlex]
 	//	clif_skill_nodamage(src,bl,skillid,skilllv,0); //Can't make this one display the correct attack animation delay :/
 		clif_damage(src,bl,tick,status_get_amotion(src),0,-1,1,4,0); //Display an absorbed damage attack.
 		skill_addtimerskill(src, tick + 1000, bl->id, 0, 0, skillid, skilllv, BF_WEAPON, flag);
-		break;	
+		break;
 
 	case PR_TURNUNDEAD:
@@ -2749,6 +2860,87 @@
 		skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
 		break;
+<<<<<<< .mine
+	case AD_DARKHEAL: // Adept Dark Heal [Brain]
+	clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite Effect on target
+	skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); //Exception because we must add the effect manually =/
+	break;
+	case NC_PWSUFFER: //Necro Power Word: Suffer [Brain]
+	if(battle_check_living(tstatus->race,tstatus->def_ele)){
+		skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
+		clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target
+		clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster
+		//If target is on suffering status already, just cause damage, no extra DoT
+		if(!status_get_sc(bl)->data[SC_SUFFER])
+		skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,skilllv,flag);
+	}
+	else clif_skill_fail(sd,skillid,0,0);
+	break;
+	case NC_DRAINLIFE: // Necromancer Drain Life [Brain]
+	{
+		int heal = skill_attack(BF_MAGIC, src, src, bl, skillid, skilllv, tick, flag)/2;
+		if (heal > 0 && (battle_check_living(tstatus->race,tstatus->def_ele))){
+		clif_skill_nodamage(NULL, src, AL_HEAL, heal, 1);
+		status_heal(src, heal, 0, 0);
+		}
+	}
+	clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target
+	clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster
+	break;
+	case WL_SHADOWBOLT: // Warlock Shadowbolt [Brain]
+	clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target
+	clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster
+	skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); //Again, the effect...cursed effects...
+	break;
+	case WL_SHADOWBURN: // Warlock Shadow Burn [Brain]
+	clif_specialeffect(bl, 180, AREA); //Shadow hit Effect on target
+	clif_specialeffect(bl, 32, AREA); //Flame Engulf Effect on target
+	clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster
+	skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
+	break;
+	case WL_SEARING: // Warlock Searing Pain [Brain]
+	clif_specialeffect(bl, 406, AREA); //Fire on Head Effect on target
+	clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster
+	skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
+	//if target is on searing status already, just cause damage, no extra DoT
+	if(!status_get_sc(bl)->data[SC_SEARING])
+		skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,4,flag);
+	break;
+	case WL_CONFLAGRATE: // Warlock Conflagrate [Brain]
+	if(status_get_sc(bl)->data[SC_IMMOLATE]) { // Can only be casted if target is immolating status
+		clif_specialeffect(bl, 183, AREA); //Explosion Effect on target
+		clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster
+		skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
+		status_change_end(bl,SC_IMMOLATE,-1); //End Immolating status
+	} else clif_skill_fail(sd,skillid,0,0);
+	break;
+	case WL_IMMOLATE: // Warlock Immolate [Brain]
+	clif_specialeffect(bl, 635, AREA); //Dragon Fire Effect on target
+	clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster
+	skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
+	//If Target is on searing pain status, will change immolating status instead
+	if(!status_get_sc(bl)->data[SC_IMMOLATE])
+		skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,5,flag);
+	break;
+	case WL_CURSEDOOM: // Warlock Curse of Doom [Brain]
+	clif_specialeffect(bl, 183, AREA); //Explosion Effect on target
+	skill_attack(BF_MAGIC,src,bl,bl,skillid,skilllv,tick,flag|SD_ANIMATION);
+	break;
+	case WL_PWAGONY: // Warlock Power Word: Agony [Brain]
+	if(battle_check_living(tstatus->race,tstatus->def_ele)){
+		skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
+		clif_specialeffect(bl, 587, AREA); //Big Purple Flame Effect on target
+		clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster
+		//If target is on Agonizing status already, just cause damage, no extra DoT
+		if(!status_get_sc(bl)->data[SC_AGONY])
+		skill_addtimerskill(src,tick+3000,bl->id,0,0,skillid,skilllv,skilllv,flag);
+	}
+	else clif_skill_fail(sd,skillid,0,0);
+	break;
+=======
 		//Custom Jobs (blackmagic)
-
+>>>>>>> .r18
+
+<<<<<<< .mine
+=======
 	
 	case AD_DARKHEAL: // Adept Dark Heal [Brain]
@@ -2830,4 +3022,5 @@
 
 		//Custom Job End
+>>>>>>> .r18
 
 	case NPC_MAGICALATTACK:
@@ -2867,5 +3060,5 @@
 					count++; // natural water cell
 				else
-				if( (unit = map_find_skill_unit_oncell(src,x,y,SA_DELUGE,NULL)) != NULL 
+				if( (unit = map_find_skill_unit_oncell(src,x,y,SA_DELUGE,NULL)) != NULL
 				||  (unit = map_find_skill_unit_oncell(src,x,y,NJ_SUITON,NULL)) != NULL )
 				{
@@ -2932,5 +3125,5 @@
 				skill_attack(BF_MAGIC,src,src,src,skillid,skilllv,tick,flag);
 			status_percent_damage(src, src, 0, 100, false);
-		}		
+		}
 		if (sd) skill_blockpc_start (sd, skillid, (skilllv < 5 ? 10000: 15000));
 		break;
@@ -2993,5 +3186,5 @@
 	}
 
-	map_freeblock_unlock();	
+	map_freeblock_unlock();
 
 	if (sd && !(flag&1) && sd->state.arrow_atk) //Consume arrow on last invocation to this skill.
@@ -3001,5 +3194,5 @@
 
 /*==========================================
- * 
+ *
  *------------------------------------------*/
 int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, int skillid, int skilllv, unsigned int tick, int flag)
@@ -3015,5 +3208,5 @@
 	int i;
 	enum sc_type type;
-	
+
 	if(skillid > 0 && skilllv <= 0) return 0;	// celest
 
@@ -3035,14 +3228,18 @@
 	if(status_isdead(src))
 		return 1;
+<<<<<<< .mine
+
+=======
 //Custom Jobs (blackmagic)
 	/*if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO)*/
 	// Added DEATHPACT [Brain]
 	//if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO)
+>>>>>>> .r18
 	if(src!=bl && status_isdead(bl) && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO && skillid != NC_DEATHPACT)
 		return 1;
-//Custom Job End
+
 	tstatus = status_get_status_data(bl);
 	sstatus = status_get_status_data(src);
-	
+
 	//Check for undead skills that convert a no-damage skill into a damage one. [Skotlex]
 	switch (skillid) {
@@ -3065,4 +3262,20 @@
 			}
 			break;
+<<<<<<< .mine
+	case AD_DARKHEAL:	// Adept Dark Heal [Brain]
+		// Only player casted spells can be offensive (copyed from AL_HEAL code above)
+		if (sd && (battle_check_living(tstatus->race,tstatus->def_ele)) //Check if target is a living creature
+		&& !pc_checkskill(dstsd,NC_PHYLACTERY) //Or he doesnt have Phylactery (non-perma undead)
+		&& !status_get_sc(bl)->data[SC_OVERWHELMING]) { //Or Overwhelming Evil is off (most cases)
+		if (battle_check_target(src, bl, BCT_ENEMY) < 1) {
+			  //Offensive heal does not works on non-enemies.
+			clif_skill_fail(sd,skillid,0,0);
+			return 0;
+		}
+		return skill_castend_damage_id(src, bl, skillid, skilllv, tick, flag);
+		}
+		break;
+
+=======
 			//Custom Jobs (blackmagic)
 		
@@ -3082,4 +3295,5 @@
 		
 			//Custom Job End
+>>>>>>> .r18
 		case NPC_SMOKING: //Since it is a self skill, this one ends here rather than in damage_id. [Skotlex]
 			return skill_castend_damage_id (src, bl, skillid, skilllv, tick, flag);
@@ -3108,7 +3322,15 @@
 			int heal = skill_calc_heal(src, bl, skilllv);
 			int heal_get_jobexp;
-	
+
 			if (status_isimmune(bl) || (dstmd && dstmd->class_ == MOBID_EMPERIUM))
 				heal=0;
+<<<<<<< .mine
+		// Profane Soul reduces the healed recieved by 3% per skilllv [Brain]
+		if(dstsd) {
+		heal = heal * (100 - pc_checkskill(dstsd,AD_PROFANE)*3)/100;
+		//Wont heal even if he got elemental armors [Brain]
+		if(pc_checkskill(dstsd,NC_PHYLACTERY)) heal = skilllv;
+		}
+=======
 			//Custom Jobs (blackmagic)
 			// Profane Soul reduces the healed recieved by 3% per skilllv [Brain]
@@ -3119,4 +3341,5 @@
 			}
 			//Custom Job End
+>>>>>>> .r18
 			if (sd) {
 				if ((i = pc_skillheal_bonus(sd, skillid)))
@@ -3154,4 +3377,27 @@
 		}
 		break;
+<<<<<<< .mine
+
+	case AD_DARKHEAL: // Adept Dark Heal [Brain]
+	{
+		int heal = skill_calc_heal(src, bl, skilllv);
+		if (status_isimmune(bl) || (dstmd && dstmd->class_ == MOBID_EMPERIUM))
+		heal=0;
+		if(battle_check_undead(tstatus->race,tstatus->def_ele) || tstatus->race==RC_UNDEAD // Check if our target is undead or demon
+		|| tstatus->race==RC_DEMON || pc_checkskill(dstsd,NC_PHYLACTERY)//Or has a phylactery
+		|| status_get_sc(bl)->data[SC_OVERWHELMING]) { //Or is on OverWhelm status, checking again...
+		clif_skill_nodamage(src, bl, skillid, heal, 1);
+		clif_skill_nodamage(NULL, bl, AL_HEAL, heal, 1); //Subtle way to show heal numbers AND effect =D
+		status_heal(bl, heal, 0, 0);
+		} else {
+		clif_skill_nodamage(src, bl, skillid, 0, 1);
+		clif_skill_nodamage(NULL, bl, AL_HEAL, 0, 1);
+		}
+	clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite Effect on target
+	}
+	break;
+
+
+=======
 	//Custom Jobs (blackmagic)
 	
@@ -3175,4 +3421,5 @@
 		break;
 	//Custom Job End
+>>>>>>> .r18
 	case PR_REDEMPTIO:
 		if (sd && !(flag&1)) {
@@ -3205,9 +3452,7 @@
 		} else //Invalid target, skip resurrection.
 			break;
-		
+
 	case ALL_RESURRECTION:
-	//Custom Jobs (blackmagic)
 	case NC_DEATHPACT: // Necro Death Pact [Brain]
-	//Custom Job End
 		if(sd && map_flag_gvg(bl->m))
 		{	//No reviving in WoE grounds!
@@ -3217,5 +3462,5 @@
 		if (!status_isdead(bl))
 			break;
-		{	
+		{
 			int per = 0, sper = 0;
 			if (map[bl->m].flag.pvp && dstsd && dstsd->pvp_point < 0)
@@ -3227,13 +3472,20 @@
 			case 3: per=50; break;
 			case 4: per=80; break;
-			//Custom Jobs (blackmagic)
 			case 5: per=100; break; //Added a 5th level because NC_DEATHPACT got 5 lvs [Brain]
-			//Custom Job End
-			}
-			if(dstsd && dstsd->special_state.restart_full_recover) 
+			}
+			if(dstsd && dstsd->special_state.restart_full_recover)
 				per = sper = 100;
 			if (status_revive(bl, per, sper))
 			{
 				clif_skill_nodamage(src,bl,ALL_RESURRECTION,skilllv,1); //Both Redemptio and Res show this skill-animation.
+<<<<<<< .mine
+						if(skillid==NC_DEATHPACT) { // Necro Death Pact [Brain]
+			clif_skill_nodamage(src, bl, skillid, skilllv,
+			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
+			break;
+		}
+
+				if(sd && dstsd && battle_config.resurrection_exp > 0)
+=======
 				//Custom Jobs (blackmagic)
 				if(skillid==NC_DEATHPACT) { // Necro Death Pact [Brain]
@@ -3244,4 +3496,5 @@
 				//Custom Job End
 				if(sd && dstsd && battle_config.resurrection_exp > 0) 
+>>>>>>> .r18
 				{
 					int exp = 0,jexp = 0;
@@ -3261,4 +3514,6 @@
 		}
 		break;
+<<<<<<< .mine
+=======
 		//Custom Jobs (blackmagic)
 	
@@ -3352,6 +3607,96 @@
 		clif_specialeffect(src, 668, AREA); // Monster skill SCREAM effect on caster (with sound)
 		break;
-
-		//Custom Job End
+>>>>>>> .r18
+
+	case AD_PWBLIND: // Adept Power Word: Blind [Brain]
+	if(!tsc->data[type]) {
+		clif_skill_nodamage(src, bl, skillid, skilllv,1);
+		if(sc_start(bl, type,(30 + skilllv * 10 + (status_get_lv(src) - sstatus->int_)/5),
+		skilllv, skill_get_time(skillid,skilllv)))
+		{
+		if(dstmd) mob_unlocktarget(dstmd,tick);  //Removes current target
+		clif_specialeffect(bl, 379, AREA); //379.Soul Drain (2nd Part)
+		break;
+		}
+	} else clif_skill_fail(sd,skillid,0,0);
+	break;
+
+	case AD_PWFEAR: // Adept Power Word: Fear [Brain]
+	if(!tsc->data[type]) {
+		clif_skill_nodamage(src, bl, skillid, skilllv,1);
+		if(dstsd)
+		type = SC_CONFUSION; //Players cant be affected by SC_FEAR
+		if(sc_start(bl, type, (30 + skilllv * 10), skilllv, skill_get_time(skillid,skilllv)))
+		{
+		clif_specialeffect(bl, 372, AREA); //372.Death
+		unit_escape(bl, bl, 30);
+		}
+	} else clif_skill_fail(sd,skillid,0,0);
+	break;
+	case WL_HOWLOFPAIN: // Warlock Howl of Pain [Brain]
+	//These must be here first or else the code wont execute them.
+	clif_specialeffect(src, 670, AREA); // Monster skill SCREAM effect on caster (no sound)
+	clif_soundeffectall(bl, "wraith_die.wav", 0, AREA); //Wraith Laugh Sound
+	if (flag & 1) {
+		//Check if target is a living creature AND a valid enemy
+		if (battle_check_target(src, bl, BCT_ENEMY) && battle_check_living(tstatus->race,tstatus->def_ele))
+		{
+		if(sc_start(bl,type,10+skilllv*10,skilllv,skill_get_time(skillid,skilllv)))
+		{
+			if(dstmd) //PROVOKE Effect on mobs
+			mob_target(dstmd,src,skill_get_range2(src,skillid,skilllv));
+			// Breaks Frozen and Sleep status
+			if(tsc && tsc->count){
+			if(tsc->data[SC_FREEZE])
+				status_change_end(bl,SC_FREEZE,-1);
+			if(tsc->data[SC_SLEEP])
+				status_change_end(bl,SC_SLEEP,-1);
+			}
+			clif_emotion(bl,6); //anger emote on target
+			break;
+		} else { //What will happen if the status fail:
+			{
+			if (sd) //If is a player
+				clif_skill_fail(sd,skillid,0,0);
+			map_freeblock_unlock(); //Else is a mob
+			return 0;
+			}
+			unit_skillcastcancel(bl, 2); //In any case, will cancel casting
+		}
+		}
+	} else {
+		map_foreachinrange(skill_area_sub, src,
+		skill_get_splash(skillid, skilllv), BL_CHAR,
+		src, skillid, skilllv, tick, flag|BCT_ENEMY|1,
+		skill_castend_nodamage_id);
+		clif_skill_nodamage(src, bl, skillid, skilllv, 1);
+		map_freeblock_unlock();
+		return 1;
+	}
+	break;
+	case WL_HOWLOFTERROR: // Warlock Howl of Terror [Brain]
+	if (flag & 1) {
+		int rate;
+		//Check if target is a living creature AND a valid enemy
+		if (battle_check_target(src, bl, BCT_ENEMY)
+		&& battle_check_living(tstatus->race,tstatus->def_ele)) {
+		rate = 10 + skilllv*5 + pc_checkskill(sd,AD_PWFEAR)*3;
+		if(dstsd) {
+			rate -= 10; // 10% less chance on players
+			type = SC_CONFUSION; //Players cant be affected by SC_FEAR
+		}
+		if(sc_start(bl,type,rate,skilllv,skill_get_time(skillid,skilllv)))
+			clif_specialeffect(bl, 372, AREA); //Same as PW: Fear
+		}
+	} else {
+		map_foreachinrange(skill_area_sub, src,
+		skill_get_splash(skillid, skilllv), BL_CHAR,
+		src, skillid, skilllv, tick, flag|BCT_ENEMY|1,
+		skill_castend_nodamage_id);
+		clif_skill_nodamage(src, bl, skillid, skilllv, 1);
+	}
+	clif_specialeffect(src, 668, AREA); // Monster skill SCREAM effect on caster (with sound)
+	break;
+
 
 	case AL_DECAGI:
@@ -3371,4 +3716,7 @@
 		}
 		break;
+<<<<<<< .mine
+
+=======
 	//Custom Jobs (blackmagic)
 	case NC_DARKMOON: //Necro Dark Moon [Brain]
@@ -3436,5 +3784,70 @@
 		}
 		break;
-		//Custom Job End
+>>>>>>> .r18
+	case NC_DARKMOON: //Necro Dark Moon [Brain]
+	if (flag&1) {
+		//Check my enemies
+		if (battle_check_target(src, bl, BCT_ENEMY) &&
+		battle_check_living(tstatus->race,tstatus->def_ele))
+		{
+		if(sc_start(bl,SC_BLIND,50,skilllv,skill_get_time(skillid,skilllv)))
+			clif_specialeffect(bl, 580, AREA); //Box of Rain effect on target
+		}
+		else { //Now my Party members
+		if (sd == NULL || sd->status.party_id == 0 || (flag & 1)) {
+			clif_skill_nodamage(bl,bl,skillid,skilllv,
+			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
+			clif_specialeffect(bl, 521, AREA); //Red Flashing Aura Sprite effect on target
+		} else if (sd) {
+			party_foreachsamemap(skill_area_sub, sd,skill_get_splash(skillid, skilllv),
+			src,skillid,skilllv,tick, flag|BCT_ALL|1,skill_castend_nodamage_id);
+		}
+		}
+	} else {
+		map_foreachinrange(skill_area_sub, src, skill_get_splash(skillid, skilllv), BL_CHAR,
+		src, skillid, skilllv, tick, flag|BCT_ALL|1, skill_castend_nodamage_id);
+		clif_skill_nodamage(src, bl, skillid, skilllv, 1);
+	}
+	clif_specialeffect(src, 407, AREA); //Soul Change Effect on caster
+	clif_soundeffectall(bl, "se_wolf1.wav", 0, AREA); //Wolf Howl Sound
+	break;
+	case NC_REQUIEM: //Necro Requiem [Brain]
+	if (flag&1) {
+		//Check my enemies
+		if (battle_check_target(src, bl, BCT_ENEMY) &&
+			battle_check_living(tstatus->race,tstatus->def_ele))
+		{
+		if(sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)))
+			clif_specialeffect(bl, 578, AREA); //Box of Curse effect on target
+		}
+		else { //Now my Party members
+		if (sd == NULL || sd->status.party_id == 0 || (flag & 1)) {
+			clif_skill_nodamage(bl,bl,skillid,skilllv,
+			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
+			clif_specialeffect(bl, 572, AREA); //Warmth Soul effect on target
+		} else if (sd) {
+			party_foreachsamemap(skill_area_sub, sd,skill_get_splash(skillid, skilllv),
+			src,skillid,skilllv,tick, flag|BCT_ALL|1,skill_castend_nodamage_id);
+		}
+		}
+	} else {
+		map_foreachinrange(skill_area_sub, src, skill_get_splash(skillid, skilllv), BL_CHAR,
+		src, skillid, skilllv, tick, flag|BCT_ALL|1, skill_castend_nodamage_id);
+		clif_skill_nodamage(src, bl, skillid, skilllv, 1);
+	}
+	int rnds = rand()%3;
+	switch(rnds) {
+		case 1:
+		clif_soundeffectall(bl, "chant1.wav", 0, AREA); //Chanting Sound
+		break;
+		case 2:
+		clif_soundeffectall(bl, "chant2.wav", 0, AREA); //Chanting Sound
+		break;
+		case 3:
+		clif_soundeffectall(bl, "chant3.wav", 0, AREA); //Chanting Sound
+		break;
+	}
+	break;
+
 
 	case PR_LEXDIVINA:
@@ -3442,6 +3855,6 @@
 			status_change_end(bl,type, -1);
 			clif_skill_nodamage (src, bl, skillid, skilllv, 1);
-		} else 
-			clif_skill_nodamage (src, bl, skillid, skilllv, 
+		} else
+			clif_skill_nodamage (src, bl, skillid, skilllv,
 				sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
 		break;
@@ -3459,5 +3872,5 @@
 			abra_skilllv = min(skilllv, skill_get_max(abra_skillid));
 			clif_skill_nodamage (src, bl, skillid, skilllv, 1);
-			
+
 			if( sd )
 			{// player-casted
@@ -3473,9 +3886,9 @@
 				int target_id = 0;
 				if (!ud) break;
-				if (inf&INF_SELF_SKILL || inf&INF_SUPPORT_SKILL) { 
+				if (inf&INF_SELF_SKILL || inf&INF_SUPPORT_SKILL) {
 					if (src->type == BL_PET)
 						bl = (struct block_list*)((TBL_PET*)src)->msd;
 					if (!bl) bl = src;
-					unit_skilluse_id(src, bl->id, abra_skillid, abra_skilllv); 
+					unit_skilluse_id(src, bl->id, abra_skillid, abra_skilllv);
 				} else {	//Assume offensive skills
 					if (ud->target)
@@ -3490,5 +3903,5 @@
 						bl = map_id2bl(target_id);
 						if (!bl) bl = src;
-						unit_skilluse_pos(src, bl->x, bl->y, abra_skillid, abra_skilllv); 
+						unit_skilluse_pos(src, bl->x, bl->y, abra_skillid, abra_skilllv);
 					} else
 						unit_skilluse_id(src, target_id, abra_skillid, abra_skilllv);
@@ -3564,5 +3977,5 @@
 	case CR_PROVIDENCE:
 		if(sd && dstsd){ //Check they are not another crusader [Skotlex]
-			if ((dstsd->class_&MAPID_UPPERMASK) == MAPID_CRUSADER) {	
+			if ((dstsd->class_&MAPID_UPPERMASK) == MAPID_CRUSADER) {
 				clif_skill_fail(sd,skillid,0,0);
 				map_freeblock_unlock();
@@ -3573,5 +3986,5 @@
 			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
 		break;
-		
+
 	case CG_MARIONETTE:
 		{
@@ -3671,5 +4084,5 @@
 
 		sc_start(bl,SC_SEVENWIND,100,skilllv,skill_get_time(skillid,skilllv));
-			
+
 		break;
 
@@ -3702,5 +4115,5 @@
 	case LK_BERSERK:
 	case KN_AUTOCOUNTER:
-	case KN_TWOHANDQUICKEN:	
+	case KN_TWOHANDQUICKEN:
 	case KN_ONEHAND:
 	case CR_SPEARQUICKEN:
@@ -3713,5 +4126,5 @@
 	case MO_BLADESTOP:
 	case LK_AURABLADE:
-	case LK_PARRYING:	
+	case LK_PARRYING:
 	case LK_CONCENTRATION:
 	case WS_CARTBOOST:
@@ -3739,10 +4152,57 @@
 	case NPC_DEFENDER:
 	case NPC_MAGICMIRROR:
-		//Custom Jobs (blackmagic)
-	case ALL_ATFIELD:	//AT Field [Brain]
-		//Custom Job End
+	case ALL_ATFIELD:
 		clif_skill_nodamage(src,bl,skillid,skilllv,
 			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
 		break;
+<<<<<<< .mine
+	case AD_LUST:	// Adept Blood Lust [Brain]
+	clif_specialeffect(src, 220, AREA); //Berserk Pot effect
+	clif_specialeffect(src, 455, AREA); //Red Lightnings
+	clif_skill_nodamage(src,bl,skillid,skilllv,
+		sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
+	break;
+	case NC_DECREPIFY: //Necro Decrepify [Brain]
+	if(battle_check_living(tstatus->race,tstatus->def_ele)){
+		clif_specialeffect(bl, 403, AREA); //Mind Breaker Effect on target
+		clif_specialeffect(src, 454, AREA); //Black Cast Effect on caster
+		clif_skill_nodamage(src,bl,skillid,skilllv,
+		sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
+	}
+	else clif_skill_fail(sd,skillid,0,0);
+	break;
+	case WL_CURSEWEAKNESS: // Warlock Curse of Weakness [Brain]
+	clif_specialeffect(bl, 656, AREA); //Blinking Green Sprite effect on target
+	clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster
+	clif_skill_nodamage(src,bl,skillid,skilllv,
+		sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
+	break;
+	case WL_CURSEEXHAUST: // Warlock Curse of Exhaustion [Brain]
+	clif_specialeffect(bl, 135, AREA); //Ice Breaking effect on target
+	clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster
+	clif_skill_nodamage(src,bl,skillid,skilllv,
+		sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
+	break;
+	case WL_CURSETONGUES: // Warlock Curse of Tongues [Brain]
+	clif_specialeffect(bl, 72, AREA); //Spinning Lights effect on target
+	clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster
+	clif_skill_nodamage(src,bl,skillid,skilllv,
+		sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
+	break;
+	case WL_CURSEDOOM: // Warlock Curse of Doom (temp) [Brain]
+	if(!tsc->data[type]) {
+		clif_specialeffect(bl, 196, AREA); //Small Curse Reaper effect on target
+		clif_specialeffect(src, 59, AREA); //Purple Cast Effect on caster
+		clif_skill_nodamage(src,bl,skillid,skilllv,
+		sc_start4(bl,type,100,
+			skilllv,skillid,src->id,skill_get_time(skillid,skilllv),1000));
+	} else clif_skill_fail(sd,skillid,0,0);
+	break;
+	case WL_OVERWHELMING: // Warlock Overwhelming Evil [Brain]
+	clif_specialeffect(src, 348, AREA); //1000 Blades Trespassing effect on caster
+	clif_skill_nodamage(src,bl,skillid,skilllv,
+		sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
+	break;
+=======
 	//Custom Jobs (blackmagic)
 	
@@ -3796,4 +4256,5 @@
 	
 	//Custom Job End
+>>>>>>> .r18
 	case MG_SIGHT:
 	case AL_RUWACH:
@@ -3910,5 +4371,5 @@
 		if (!i)
 		{
-			if (sd) 
+			if (sd)
 				clif_skill_fail(sd,skillid,0,0);
 			map_freeblock_unlock();
@@ -3996,5 +4457,5 @@
 			skill_additional_effect(src,bl,skillid,skilllv,BF_MISC,tick); //Use Misc rather than weapon to signal passive pushback
 		}
-		break;	
+		break;
 
 	case MO_ABSORBSPIRITS:
@@ -4012,4 +4473,6 @@
 		clif_skill_nodamage(src,bl,skillid,skilllv,i?1:0);
 		break;
+<<<<<<< .mine
+=======
 		//Custom Jobs (blackmagic)
 	
@@ -4038,4 +4501,30 @@
 		break;
 		//Custom Job End
+>>>>>>> .r18
+
+	case WL_DRAINSOUL: // Warlock Drain Soul [Brain]
+	i = 0;
+	if (dstsd && (sd == dstsd || map_flag_vs(src->m)))
+	{	//check if target is a player and we are in versus map
+		i = tstatus->max_sp * skilllv/100;//i = SkillLv% of player Max SP
+		if(dstsd->spiritball && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER) {
+		i += dstsd->spiritball * 5;//will drain Monk Spirits and regain 5 SP per Spirit
+		pc_delspiritball(dstsd,dstsd->spiritball,0);
+		}
+	} else if (dstmd && !(tstatus->mode&MD_BOSS) && battle_check_living(tstatus->race,tstatus->def_ele))
+	{	// check if target is a monster and not a Boss
+		i = dstmd->level/5 * skilllv;//i = mob level/5 * Skill Lvl
+		mob_target(dstmd,src,0);//This will turn the mob agressive against the caster
+	}
+	if(i < skilllv) i = skilllv; //Minimum 1 sp per skill lvl
+	if (i) {
+		clif_specialeffect(src, 253, AREA); //Absorb Mana effect on caster
+		clif_specialeffect(bl, 52, AREA); //Lightning Hit effect on target
+		status_heal(src, 0, i, 3); //caster drains sp
+		status_zap(bl, 0, i*skilllv); //target lost sp equal to 1*SkillLv the amount drained
+	}
+	clif_skill_nodamage(src,bl,skillid,skilllv,i?1:0);
+	break;
+
 
 	case AC_MAKINGARROW:
@@ -4130,5 +4619,5 @@
 		}
 		break;
-	
+
 	case WZ_SIGHTRASHER:
 		//Passive side of the attack.
@@ -4238,5 +4727,5 @@
 	case SM_AUTOBERSERK:	// Celest
 		if (tsce)
-			i = status_change_end(bl, type, -1);				
+			i = status_change_end(bl, type, -1);
 		else
 			i = sc_start(bl,type,100,skilllv,60000);
@@ -4252,5 +4741,5 @@
 		break;
 	case TK_RUN:
-			if (tsce) 
+			if (tsce)
 				clif_skill_nodamage(src,bl,skillid,skilllv,
 					status_change_end(bl, type, -1));
@@ -4348,5 +4837,5 @@
 			if (dstmd)
 				mob_target(dstmd,src,skill_get_range2(src,skillid,skilllv));
-			
+
 			if (tsc->data[SC_STONE]) {
 				status_change_end(bl,SC_STONE,-1);
@@ -4499,5 +4988,5 @@
 		}
 		break;
-		
+
 	case TF_PICKSTONE:
 		if(sd) {
@@ -4556,5 +5045,5 @@
 		//Note that Full Strip autospell doesn't use a duration
 		if (!clif_skill_nodamage(src,bl,skillid,skilllv,
-				skill_strip_equip(bl, location, i, skilllv, 
+				skill_strip_equip(bl, location, i, skilllv,
 				sd&&skillid==ST_FULLSTRIP&&!pc_checkskill(sd, skillid)?0:skill_get_time(skillid,skilllv)))
 			&& sd)
@@ -4712,5 +5201,5 @@
 					continue;
 				switch (i) {
-				case SC_WEIGHT50:    case SC_WEIGHT90:    case SC_HALLUCINATION: 
+				case SC_WEIGHT50:    case SC_WEIGHT90:    case SC_HALLUCINATION:
 				case SC_STRIPWEAPON: case SC_STRIPSHIELD: case SC_STRIPARMOR:
 				case SC_STRIPHELM:   case SC_CP_WEAPON:   case SC_CP_SHIELD:
@@ -4762,5 +5251,5 @@
 				y = src->y + diry[dir]*skilllv*2;
 			}
-			
+
 			clif_skill_nodamage(src,bl,TK_HIGHJUMP,skilllv,1);
 			if(!map_count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB) && map_getcell(src->m,x,y,CELL_CHKREACH)) {
@@ -4806,5 +5295,5 @@
 				} else if (!dstsd || map_flag_vs(bl->m)) //HP damage only on pvp-maps when against players.
 					hp = tstatus->max_hp/50; //Recover 2% HP [Skotlex]
-				
+
 				clif_skill_nodamage(src,bl,skillid,skilllv,1);
 				unit_skillcastcancel(bl,0);
@@ -4816,5 +5305,5 @@
 				else
 					hp = 0;
-				
+
 				if (sp) //Recover some of the SP used
 					sp = sp*(25*(skilllv-1))/100;
@@ -4892,5 +5381,5 @@
 	case NPC_CHANGETELEKINESIS:
 		clif_skill_nodamage(src,bl,skillid,skilllv,
-			sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv), 
+			sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv),
 				skill_get_time(skillid, skilllv)));
 		break;
@@ -4900,5 +5389,5 @@
 		if(tstatus->def_ele==ELE_UNDEAD || tstatus->def_ele==ELE_DARK) break;
 		clif_skill_nodamage(src,bl,skillid,skilllv,
-			sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv), 
+			sc_start2(bl, type, 100, skilllv, skill_get_ele(skillid,skilllv),
 				skill_get_time(skillid, skilllv)));
 		break;
@@ -4917,5 +5406,5 @@
 					sc_start(bl,type,100,skilllv,skill_time))
 			&& ud) {	//Disable attacking/acting/moving for skill's duration.
-				ud->attackabletime = 
+				ud->attackabletime =
 				ud->canact_tick =
 				ud->canmove_tick = tick + skill_time;
@@ -4961,5 +5450,5 @@
 		}
 		break;
-	
+
 	case NPC_SPEEDUP:
 		{
@@ -5034,5 +5523,5 @@
 			sc_start(bl,type,100,100,skill_get_time(skillid, skilllv)));
 		break;
-		
+
 	case NPC_AGIUP:
 		sc_start(bl,SC_SPEEDUP1,100,skilllv,skill_get_time(skillid, skilllv));
@@ -5046,5 +5535,5 @@
 			sc_start4(bl,type,100,skilllv,0,0,6,skill_get_time(skillid,skilllv)));
 		break;
-		
+
 	case NPC_SIEGEMODE:
 		// not sure what it does
@@ -5196,5 +5685,5 @@
 				return 1;
 			}
-	
+
 			if (tsce)
 			{	//HelloKitty2 (?) explained that this silently fails when target is
@@ -5207,5 +5696,5 @@
 			if (!clif_skill_nodamage(src,bl,skillid,skilllv,
 				sc_start(bl,type,55+5*skilllv,skilllv,skill_get_time(skillid,skilllv))))
-			{	
+			{
 				if (sd) clif_skill_fail(sd,skillid,0,0);
 				map_freeblock_unlock();
@@ -5388,6 +5877,6 @@
 					break;
 				default:
-					break;			
-				}			
+					break;
+				}
 			} while ((--count) > 0);
 			clif_skill_nodamage(src,bl,skillid,skilllv,1);
@@ -5449,10 +5938,10 @@
 			clif_skill_nodamage(src,bl,skillid,skilllv,
 				sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
-		
+
 		if (skillid == SL_SKE)
 			sc_start(src,SC_SMA,100,skilllv,skill_get_time(SL_SMA,skilllv));
 
 		break;
-		
+
 	// New guild skills [Celest]
 	case GD_BATTLEORDER:
@@ -5532,5 +6021,5 @@
 				clif_feel_info(sd, skilllv-1, 1);
 		}
-		break;	
+		break;
 
 	case SG_HATE:
@@ -5612,5 +6101,5 @@
 			static const int per[5][2]={{20,50},{50,60},{25,75},{60,64},{34,67}};
 			int rnd = rand()%100;
-			i = (skilllv-1)%5; 
+			i = (skilllv-1)%5;
 			if(rnd<per[i][0]) //Self
 				bl = src;
@@ -5679,5 +6168,5 @@
 		mobskill_event(dstmd, src, tick, MSC_SKILLUSED|(skillid<<16));
 	}
-	
+
 	if (sd && !(flag&1) && sd->state.arrow_atk) //Consume arrow on last invocation to this skill.
 		battle_consume_ammo(sd, skillid, skilllv);
@@ -5782,5 +6271,5 @@
 			if(inf2 & (INF2_PARTY_ONLY|INF2_GUILD_ONLY) && src != target)
 			{
-				inf |= 	
+				inf |=
 					(inf2&INF2_PARTY_ONLY?BCT_PARTY:0)|
 					(inf2&INF2_GUILD_ONLY?BCT_GUILD:0);
@@ -5824,5 +6313,5 @@
 		if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv,1))
 			break;
-			
+
 		if(hd && !skill_check_condition_hom(hd,ud->skillid, ud->skilllv,1))	//[orn]
 			break;
@@ -5833,10 +6322,10 @@
 		if (ud->walktimer != -1 && ud->skillid != TK_RUN)
 			unit_stop_walking(src,1);
-		
+
 		ud->canact_tick = tick + skill_delayfix(src, ud->skillid, ud->skilllv);
-	
+
 		if (skill_get_state(ud->skillid) != ST_MOVE_ENABLE)
 			unit_set_walkdelay(src, tick, battle_config.default_walk_delay+skill_get_walkdelay(ud->skillid, ud->skilllv), 1);
-		
+
 		if(battle_config.skill_log && battle_config.skill_log&src->type)
 			ShowInfo("Type %d, ID %d skill castend id [id =%d, lv=%d, target ID %d]\n",
@@ -5893,5 +6382,5 @@
 			if (dy > 0) dy++;
 			else if(dy < 0) dy--;
-			
+
 			if (unit_movepos(src, src->x+dx, src->y+dy, 1, 1))
 			{	//Display movement + animation.
@@ -5914,5 +6403,5 @@
 
 /*==========================================
- * 
+ *
  *------------------------------------------*/
 int skill_castend_pos(int tid, unsigned int tick, int id, intptr data)
@@ -5935,5 +6424,5 @@
 		return 0;
 	}
-	
+
 	if( ud->skilltimer != tid )
 	{
@@ -5954,5 +6443,5 @@
 			skill_get_unit_flag(ud->skillid)&UF_NOREITERATION &&
 			skill_check_unit_range(src,ud->skillx,ud->skilly,ud->skillid,ud->skilllv)
-		  ) 
+		  )
 		{
 			if (sd) clif_skill_fail(sd,ud->skillid,0,0);
@@ -5993,5 +6482,5 @@
 			}
 		}
-			
+
 		if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv, 1))
 			break;
@@ -6079,5 +6568,5 @@
 		skill_area_temp[1] = src->id;
 		i = skill_get_splash(skillid, skilllv);
-		map_foreachinarea(skill_area_sub, 
+		map_foreachinarea(skill_area_sub,
 			src->m, x-i, y-i, x+i, y+i, BL_PC,
 			src, skillid, skilllv, tick, flag|BCT_ALL|1,
@@ -6106,4 +6595,6 @@
 			src->m, x-i, y-i, x+i,y+i,BL_SKILL);
 		break;
+<<<<<<< .mine
+=======
 		//Custom Jobs (blackmagic)
 	case WL_HELLFIRE: // Warlock Hellfire [Brain]
@@ -6114,7 +6605,16 @@
 		// Continue reading because skill_unitsetting is bellow
 		//Custom Job End
+>>>>>>> .r18
+
+	case WL_HELLFIRE: // Warlock Hellfire [Brain]
+	//clif_specialeffect(sd, 92, AREA); //Meteor Effect on caster, cant set on ground
+	clif_skill_poseffect(src,WZ_METEOR,skilllv,x,y,tick); //Meteor Effect
+	clif_skill_nodamage(src, src, skillid, 0, 1); //Lalala, just to show the skill yell correctly
+	clif_specialeffect(src, 55, AREA); //Red Cast Effect on caster
+	// Continue reading because skill_unitsetting is bellow
+
 
 	case MG_SAFETYWALL:
-	case MG_FIREWALL:	
+	case MG_FIREWALL:
 	case MG_THUNDERSTORM:
 	case AL_PNEUMA:
@@ -6273,4 +6773,19 @@
 				md->deletetimer = add_timer (gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, md->bl.id, 0);
 				mob_spawn (md); //Now it is ready for spawning.
+<<<<<<< .mine
+                // @showsummon command implementation [Brainstorm]
+		if(sd->state.showsummon){
+			char output[256];
+			sprintf(output,
+			"[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d",
+			md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk);
+			clif_disp_onlyself(sd,output,strlen(output));
+			sprintf(output,
+			"[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d",
+			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);
+			clif_disp_onlyself(sd,output,strlen(output));
+		}
+
+=======
 				//Custom Jobs (blackmagic)
 				// @showsummon command implementation [Brainstorm]
@@ -6287,8 +6802,67 @@
 				}
 				//Custom Job End
-			}
-		}
-		break;
-
+>>>>>>> .r18
+			}
+		}
+		break;
+
+<<<<<<< .mine
+	case AD_FAMILIAR: // Adept Summon Familiar [Brain]
+	if( sd )
+	{
+		int id;
+		int mob_class;
+		struct mob_data* md;
+		mob_class = pc_readglobalreg(sd, "ADEPT_FAMILIAR");
+		if( mob_class == 0 )
+		{
+		mob_class = mob_get_random_id(4, 0x1, 0);
+		pc_setglobalreg(sd, "ADEPT_FAMILIAR", mob_class);
+		}
+		id = mob_once_spawn(sd,src->m,src->x,src->y,"--en--",mob_class,1,"");
+		md = (struct mob_data *)map_id2bl(id);
+		if( md != NULL )
+		{
+		md->master_id = sd->bl.id;
+		md->special_state.ai = 1;
+		md->status.mode = md->status.mode|MD_AGGRESSIVE;
+		status_calc_mob(md,0); //Recalc their stats based on passive bonus
+		md->status.hp = md->status.max_hp; //Must be here or the code wont update it
+		// @showsummon command implementation [Brainstorm]
+		if(sd->state.showsummon){
+			char output[256];
+			sprintf(output,
+			"[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d",
+			md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk);
+			clif_disp_onlyself(sd,output,strlen(output));
+			sprintf(output,
+			"[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d",
+			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);
+			clif_disp_onlyself(sd,output,strlen(output));
+		}
+		md->deletetimer = add_timer(gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, id, 0);
+		}
+	}
+	break;
+	case NC_SKELETON: // Raise Skeleton [Brain]
+	case NC_ARCHER: // Raise Archer Skeleton
+	case NC_ZOMBIE: // Raise Zombie
+	case NC_MUMMY: // Raise Mummy
+	case NC_GHOST: // Raise Ghost
+	case NC_SHADOW: // Raise Shadow
+	case NC_WRAITH: // Raise Wraith
+	if( sd )
+	{
+		static const int mob_skeleton[5]={ 3201, 3202, 3203, 3204, 3205 }; // Skeleton, Orc Skeleton, Soldier Skeleton, Pirate Skeleton, Skeleton General
+		static const int mob_archer[5]={ 3206, 3207, 3208, 3209, 3210 }; // Archer Skeleton, Firelock Soldier
+		static const int mob_zombie[5]={ 3211, 3212, 3213, 3214, 3215 }; // Zombie, Ghoul, Zombie Master
+		static const int mob_mummy[5]={ 3216, 3217, 3218, 3219, 3220 }; // Mummy, Ancient Mummy
+		static const int mob_ghost[5]={ 3221, 3222, 3223, 3224, 3225 }; // Whisper, Nightmare, Nightmare Terror
+		static const int mob_shadow[5]={ 3226, 3227, 3228, 3229, 3230 }; // Injustice, Raydric, Dullahan
+		static const int mob_wraith[5]={ 3231, 3232, 3233, 3234, 3235 }; // Wraith, Wraith Dead
+		int id;
+		int mob_class;
+		struct mob_data *md;
+=======
 		//Custom Jobs (blackmagic)	
 	case AD_FAMILIAR: // Adept Summon Familiar [Brain]
@@ -6349,5 +6923,46 @@
 			int mob_class;
 			struct mob_data *md;
-
+>>>>>>> .r18
+
+<<<<<<< .mine
+		switch( skillid )
+		{
+		case NC_SKELETON: mob_class = mob_skeleton[skilllv-1]; break;
+		case NC_ARCHER:   mob_class = mob_archer[skilllv-1]; break;
+		case NC_ZOMBIE:   mob_class = mob_zombie[skilllv-1]; break;
+		case NC_MUMMY:	mob_class = mob_mummy[skilllv-1]; break;
+		case NC_GHOST:	mob_class = mob_ghost[skilllv-1]; break;
+		case NC_SHADOW:   mob_class = mob_shadow[skilllv-1]; break;
+		case NC_WRAITH:   mob_class = mob_wraith[skilllv-1]; break;
+		default:
+			mob_class = 1002; // poring
+			ShowDebug("skill_castend_pos2: undefined skill #%d used to raise mobs, defaulting to poring\n");
+			break;
+		}
+		id = mob_once_spawn(sd,src->m,src->x,src->y,"--ja--",mob_class,1,"");
+		if((md=(struct mob_data *)map_id2bl(id)))
+		{
+		md->master_id=sd->bl.id;
+		md->special_state.ai=1;
+		md->status.mode=md->db->status.mode|MD_AGGRESSIVE;
+		status_calc_mob(md,0); //Recalc their stats based on passive bonus
+		md->status.hp = md->status.max_hp; //Must be here or the code wont update it
+		// @showsummon command implementation [Brainstorm]
+		if(sd->state.showsummon){
+			char output[256];
+			sprintf(output,
+			"[Summon] HP : %d | STR : %d DEX : %d VIT : %d INT : %d AGI : %d LUK : %d",
+			md->status.max_hp,md->status.str,md->status.dex,md->status.vit,md->status.int_,md->status.agi,md->status.luk);
+			clif_disp_onlyself(sd,output,strlen(output));
+			sprintf(output,
+			"[%s] ATK : %d~%d | DEF: %d+%d MDEF: %d+%d | HIT: %d FLEE: %d",
+			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);
+			clif_disp_onlyself(sd,output,strlen(output));
+		}
+		md->deletetimer = add_timer(gettick() + skill_get_time(skillid,skilllv), mob_timer_delete, id, 0);
+		}
+	}
+	break;
+=======
 			switch( skillid )
 			{
@@ -6391,4 +7006,7 @@
 
 		//Custom Job End
+>>>>>>> .r18
+
+
 
 	// Slim Pitcher [Celest]
@@ -6416,5 +7034,5 @@
 			potion_hp = potion_hp * (100+i)/100;
 			potion_sp = potion_sp * (100+i)/100;
-			
+
 			if(potion_hp > 0 || potion_sp > 0) {
 				i = skill_get_splash(skillid, skilllv);
@@ -6438,5 +7056,5 @@
 			potion_hp = potion_hp * (100+i)/100;
 			potion_sp = potion_sp * (100+i)/100;
-			
+
 			if(potion_hp > 0 || potion_sp > 0) {
 				i = skill_get_splash(skillid, skilllv);
@@ -6460,5 +7078,5 @@
 		}
 		break;
-	
+
 	case HW_GRAVITATION:
 		if ((sg = skill_unitsetting(src,skillid,skilllv,x,y,0)))
@@ -6542,10 +7160,10 @@
 	if (sd && !(flag&1) && sd->state.arrow_atk) //Consume arrow if a ground skill was not invoked. [Skotlex]
 		battle_consume_ammo(sd, skillid, skilllv);
-		
+
 	return 0;
 }
 
 /*==========================================
- * 
+ *
  *------------------------------------------*/
 int skill_castend_map (struct map_session_data *sd, short skill_num, const char *map)
@@ -6555,5 +7173,5 @@
 //Simplify skill_failed code.
 #define skill_failed(sd) { sd->menuskill_id = sd->menuskill_val = 0; }
-	if(skill_num != sd->menuskill_id) 
+	if(skill_num != sd->menuskill_id)
 		return 0;
 
@@ -6590,5 +7208,5 @@
 		return 0;
 	}
-	
+
 	switch(skill_num)
 	{
@@ -6631,10 +7249,10 @@
 				}
 			}
-		
+
 			//When it's an item-used warp-portal, the skill-lv used is lost.. assume max level.
 			lv = sd->skillitem==skill_num?skill_get_max(skill_num):pc_checkskill(sd,skill_num);
 			wx = sd->menuskill_val>>16;
 			wy = sd->menuskill_val&0xffff;
-			
+
 			if( lv <= 0 ) return 0;
 			if( lv > 4 ) lv = 4; // crash prevention
@@ -6655,5 +7273,5 @@
 				return 0;
 			}
-			
+
 			// This makes Warp Portal fail if the cell is not empty
 			//if(skill_check_unit_range2(&sd->bl,wx,wy,skill_num,lv) > 0) {
@@ -6714,10 +7332,10 @@
 		return 0; //Nothing to remove, this unit is not overlapped.
 
-	if (unit->val1 != unit->group->skill_id) 
+	if (unit->val1 != unit->group->skill_id)
 	{	//Reset state
 		unit->val1 = unit->group->skill_id;
 		unit->val2 &= ~UF_ENSEMBLE;
 	}
-	
+
 	return map_foreachincell(skill_dance_overlap_sub, unit->bl.m,unit->bl.x,unit->bl.y,BL_SKILL, unit,flag);
 }
@@ -6803,4 +7421,9 @@
 	switch(skillid)
 	{
+<<<<<<< .mine
+	case WL_HELLFIRE: // Warlock Hellfire [Brain]
+	if(map_flag_vs(src->m)) target = BCT_ALL;
+	break;
+=======
 //Custom Jobs (blackmagic)
 	case WL_HELLFIRE: // Warlock Hellfire [Brain]
@@ -6808,4 +7431,5 @@
 		break;
 //Custom Job End
+>>>>>>> .r18
 	case MG_SAFETYWALL:
 		val2=skilllv+1;
@@ -6883,5 +7507,5 @@
 			{	//Use the previous limit (minus the elapsed time) [Skotlex]
 				limit = old_sg->limit - DIFF_TICK(gettick(), old_sg->tick);
-				if (limit < 0)	//This can happen... 
+				if (limit < 0)	//This can happen...
 					limit = skill_get_time(skillid,skilllv);
 			}
@@ -7130,5 +7754,5 @@
 		return NULL;
 	}
-	
+
 
 	if (skillid == NJ_TATAMIGAESHI) //Store number of tiles.
@@ -7139,5 +7763,5 @@
 
 /*==========================================
- * 
+ *
  *------------------------------------------*/
 static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned int tick)
@@ -7152,5 +7776,5 @@
 	nullpo_retr(0, src);
 	nullpo_retr(0, bl);
-	
+
 	if(bl->prev==NULL || !src->alive || status_isdead(bl))
 		return 0;
@@ -7162,10 +7786,10 @@
 			&& !skill_get_inf2(sg->skill_id) == INF2_TRAP) //Traps work on top of land protector, magical or not [Brain]
 		return 0; //AoE skills are ineffective. [Skotlex]
-	
+
 	sc = status_get_sc(bl);
-	
+
 	if (sc && sc->option&OPTION_HIDE && sg->skill_id != WZ_HEAVENDRIVE)
 		return 0; //Hidden characters are immune to AoE skills except Heaven's Drive. [Skotlex]
-	
+
 	type = status_skill2sc(sg->skill_id);
 	sce = (sc && type != -1)?sc->data[type]:NULL;
@@ -7263,5 +7887,5 @@
 		}
 		break;
-	
+
 	case UNT_FOGWALL:
 		if (!sce)
@@ -7284,5 +7908,5 @@
 //			src->limit = DIFF_TICK(tick+700,sg->tick);
 //		break;
-	
+
 	case UNT_MOONLIT:
 		//Knockback out of area if affected char isn't in Moonlit effect
@@ -7298,5 +7922,5 @@
 
 /*==========================================
- * 
+ *
  *------------------------------------------*/
 int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, unsigned int tick)
@@ -7325,5 +7949,5 @@
 	tsc = status_get_sc(bl);
 	tstatus = status_get_status_data(bl);
-	if (sg->state.magic_power)  //For magic power. 
+	if (sg->state.magic_power)  //For magic power.
 	{
 		sc = status_get_sc(ss);
@@ -7354,5 +7978,5 @@
 			return 0;
 		ts->tick = tick+sg->interval;
-		
+
 		if ((skillid==CR_GRANDCROSS || skillid==NPC_GRANDDARKNESS) && !battle_config.gx_allhit)
 			ts->tick += sg->interval*(map_count_oncell(bl->m,bl->x,bl->y,BL_CHAR)-1);
@@ -7404,4 +8028,14 @@
 				}
 				if (status_isimmune(bl))
+<<<<<<< .mine
+					heal = 0;	/* é»éè²ã«ãŒãïŒããŒã«éïŒïŒ */
+		// Profane Soul reduces the healed recieved by 3% per skilllv [Brain]
+		if(tsd) {
+			heal = heal * (100 - pc_checkskill(tsd,AD_PROFANE)*3)/100;
+			//Wont heal even if he got elemental armors [Brain]
+			if(pc_checkskill(tsd,NC_PHYLACTERY)) heal = sg->skill_lv;
+		}
+
+=======
 					heal = 0;	/* é»Eßè²ã«ãŒãïŒããŒã«éïŒïŒE*/
 				//Custom Jobs (blackmagic)
@@ -7413,4 +8047,5 @@
 				}
 				//Custom Job End
+>>>>>>> .r18
 				clif_skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1);
 				status_heal(bl, heal, 0, 0);
@@ -7447,5 +8082,5 @@
 
 		case UNT_ATTACK_SKILLS:
-			switch (sg->skill_id) 
+			switch (sg->skill_id)
 			{
 				case SG_SUN_WARM: //SG skills [Komurka]
@@ -7485,5 +8120,5 @@
 				break;
 				default:
-					skill_attack(skill_get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);			
+					skill_attack(skill_get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
 			}
 			break;
@@ -7509,5 +8144,5 @@
 				if (status_change_start(bl,type,10000,sg->skill_lv,sg->group_id,0,0,sec, 8))
 				{
-					struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL; 
+					struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL;
 					if (td) sec = DIFF_TICK(td->tick, tick);
 					map_moveblock(bl, src->bl.x, src->bl.y, tick);
@@ -7580,5 +8215,5 @@
 			clif_skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1);
 			status_heal(bl, heal, 0, 0);
-			break;	
+			break;
 		}
 
@@ -7755,5 +8390,5 @@
 			status_change_end(bl,type,-1);
 		break;
-		
+
 	case UNT_SPIDERWEB:
 		{
@@ -7783,5 +8418,5 @@
 	if (sc && !sc->count)
 		sc = NULL;
-	
+
 	type = status_skill2sc(skill_id);
 	sce = (sc && type != -1)?sc->data[type]:NULL;
@@ -7800,5 +8435,5 @@
 		case BD_ETERNALCHAOS:
 		case BD_DRUMBATTLEFIELD:
-		case BD_RINGNIBELUNGEN:	
+		case BD_RINGNIBELUNGEN:
 		case BD_ROKISWEIL:
 		case BD_INTOABYSS:
@@ -7809,5 +8444,5 @@
 				//FIXME: This code is not perfect, it doesn't checks for the real ensemble's owner,
 				//it only checks if you are doing the same ensemble. So if there's two chars doing an ensemble
-				//which overlaps, by stepping outside of the other parther's ensemble will cause you to cancel 
+				//which overlaps, by stepping outside of the other parther's ensemble will cause you to cancel
 				//your own. Let's pray that scenario is pretty unlikely and noone will complain too much about it.
 				skill_stop_dancing(bl);
@@ -7824,5 +8459,5 @@
 				status_change_end(bl, type, -1);
 			break;
-			
+
 		case BA_POEMBRAGI:
 		case BA_WHISTLE:
@@ -7831,5 +8466,5 @@
 		case DC_HUMMING:
 		case DC_DONTFORGETME:
-		case DC_FORTUNEKISS:	
+		case DC_FORTUNEKISS:
 		case DC_SERVICEFORYOU:
 			if (sce)
@@ -7881,5 +8516,5 @@
 
 	nullpo_retr(0, group);
-  	
+
 	dissonance = skill_dance_switch(unit, 0);
 
@@ -7966,5 +8601,5 @@
 	if ((skillid != PR_BENEDICTIO && *c >=1) || *c >=2)
 		return 0; //Partner found for ensembles, or the two companions for Benedictio. [Skotlex]
-	
+
 	if (bl == src)
 		return 0;
@@ -7975,5 +8610,5 @@
 	if (tsd->sc.data[SC_SILENCE] || tsd->sc.opt1)
 		return 0;
-	
+
 	switch(skillid)
 	{
@@ -8060,5 +8695,5 @@
 
 /*==========================================
- * 
+ *
  *------------------------------------------*/
 static int skill_check_condition_mob_master_sub (struct block_list *bl, va_list ap)
@@ -8083,5 +8718,5 @@
 
 /*==========================================
- * Determines if a given skill should be made to consume ammo 
+ * Determines if a given skill should be made to consume ammo
  * when used by the player. [Skotlex]
  *------------------------------------------*/
@@ -8122,5 +8757,5 @@
 		sd->skillitem = sd->skillitemlv = 0;
 		//Need to do arrow state check.
-		sd->state.arrow_atk = skill_get_ammotype(skill)?1:0; 
+		sd->state.arrow_atk = skill_get_ammotype(skill)?1:0;
 		//Need to do Spiritball check.
 		sd->spiritball_old = sd->spiritball;
@@ -8132,5 +8767,5 @@
 	if (!sc->count)
 		sc = NULL;
-	
+
 	if(pc_is90overweight(sd)) {
 		clif_skill_fail(sd,skill,9,0);
@@ -8156,5 +8791,5 @@
 	if (sd->menuskill_id == AM_PHARMACY &&
 		(skill == AM_PHARMACY || skill == AC_MAKINGARROW || skill == BS_REPAIRWEAPON ||
-		skill == AM_TWILIGHT1 || skill == AM_TWILIGHT2  || skill == AM_TWILIGHT3 
+		skill == AM_TWILIGHT1 || skill == AM_TWILIGHT2  || skill == AM_TWILIGHT3
 	)) {
 		sd->skillitem = sd->skillitemlv = 0;
@@ -8314,5 +8949,5 @@
 		}
 		break;
-	case MO_FINGEROFFENSIVE:				//æEŒŸ
+	case MO_FINGEROFFENSIVE:				//æåŒŸ
 	case GS_FLING:
 		if (sd->spiritball > 0 && sd->spiritball < spiritball) {
@@ -8380,5 +9015,5 @@
 		}
 		break;
-		
+
 	case TK_READYCOUNTER:
 	case TK_READYDOWN:
@@ -8408,8 +9043,8 @@
 				status_change_end(&sd->bl, SC_COMBO, -1);
 				sd->skillid_old = sd->skilllv_old = 0;
-				return 0; //Can't repeat previous combo skill.				
+				return 0; //Can't repeat previous combo skill.
 			}
 			break;
-		} else 
+		} else
 		if(sc->data[SC_COMBO]->val1 == skill)
 			break; //Combo ready.
@@ -8470,4 +9105,54 @@
 		}
 		break;
+<<<<<<< .mine
+	case AD_FAMILIAR: //Adept Familiar [Flavio]
+	{
+		short familiar[1] ={ pc_readglobalreg(sd, "ADEPT_FAMILIAR") };
+		int maxcount = skill_get_maxcount(skill,lv);
+		int count = 0;
+		count = mob_countslave_class(&sd->bl, 1, familiar );
+		if( count >= maxcount )
+		{
+		clif_skill_fail(sd,skill,0,0);
+		return 0;
+		}
+	}
+	break;
+	case NC_SKELETON: // Raise Skeleton [Brain]
+	case NC_ARCHER: // Raise Archer Skeleton
+	case NC_ZOMBIE: // Raise Zombie
+	case NC_MUMMY: // Raise Mummy
+	case NC_GHOST: // Raise Ghost
+	case NC_SHADOW: // Raise Shadow
+	case NC_WRAITH: // Raise Wraith
+	{// corrigido o limite de spawns [Flavio]
+		short summon1[5]={ 3201, 3202, 3203, 3204, 3205 }; // Skeleton, Orc Skeleton, Soldier Skeleton, Pirate Skeleton, Skeleton General
+		short summon2[5]={ 3206, 3207, 3208, 3209, 3210 }; // Archer Skeleton, Firelock Soldier
+		short summon3[5]={ 3211, 3212, 3213, 3214, 3215 }; // Zombie, Ghoul, Zombie Master
+		short summon4[5]={ 3216, 3217, 3218, 3219, 3220 }; // Mummy, Ancient Mummy
+		short summon5[5]={ 3221, 3222, 3223, 3224, 3225 }; // Whisper, Nightmare, Nightmare Terror
+		short summon6[5]={ 3226, 3227, 3228, 3229, 3230 }; // Injustice, Raydric, Dullahan
+		short summon7[5]={ 3231, 3232, 3233, 3234, 3235 }; // Wraith, Wraith Dead
+		int maxcount = skill_get_maxcount(skill,lv);
+		int count = 0;
+		switch( skill )
+		{
+		case NC_SKELETON: count = mob_countslave_class(&sd->bl, 5, summon1); break;
+		case NC_ARCHER: count = mob_countslave_class(&sd->bl, 5, summon2); break;
+		case NC_ZOMBIE: count = mob_countslave_class(&sd->bl, 5, summon3); break;
+		case NC_MUMMY: count = mob_countslave_class(&sd->bl, 5, summon4); break;
+		case NC_GHOST: count = mob_countslave_class(&sd->bl, 5, summon5); break;
+		case NC_SHADOW: count = mob_countslave_class(&sd->bl, 5, summon6); break;
+		case NC_WRAITH: count = mob_countslave_class(&sd->bl, 5, summon7); break;
+		}
+		if( count >= maxcount )
+		{
+		clif_skill_fail(sd,skill,0,0);
+		return 0;
+		}
+	}
+	break;
+
+=======
 		//Custom Jobs (blackmagic)	
 	case AD_FAMILIAR: //Adept Familiar [Flavio]
@@ -8519,4 +9204,5 @@
 		break;
 		//Custom Job End
+>>>>>>> .r18
 	case WZ_FIREPILLAR: // celest
 		if (lv <= 5)	// no gems required at level 1-5
@@ -8527,5 +9213,5 @@
 		if(!(sc && sc->data[SC_SMA]))
 			return 0;
-		break;	
+		break;
 
 	case HT_POWER:
@@ -8579,5 +9265,5 @@
 					clif_skill_fail(sd,skill,0,0);
 					return 0;
-				}	
+				}
 			}
 		}
@@ -8631,5 +9317,5 @@
 		//Only invoke on skill begin cast (instant cast skill). [Kevin]
 		if(sp>0 && !type)
-		{ 
+		{
 			if (status->sp < (unsigned int)sp)
 				clif_skill_fail(sd,skill,1,0);
@@ -8657,5 +9343,5 @@
 		}
 		break;
-	
+
 	case NJ_ISSEN:
 		if (status->hp < 2) {
@@ -8669,5 +9355,5 @@
 	  	}
 		break;
-	
+
 	case NJ_ZENYNAGE:
 		if(sd->status.zeny < zeny) {
@@ -8699,10 +9385,10 @@
 
 	if(!(type&2)){
-		if( hp>0 && status->hp <= (unsigned int)hp) {				/* HPãã§ãE¯ */
-			clif_skill_fail(sd,skill,2,0);		/* HPäžè¶³Eå€±æéç¥ */
+		if( hp>0 && status->hp <= (unsigned int)hp) {				/* HPãã§ãã¯ */
+			clif_skill_fail(sd,skill,2,0);		/* HPäžè¶³ïŒå€±æéç¥ */
 			return 0;
 		}
-		if( sp>0 && status->sp < (unsigned int)sp) {				/* SPãã§ãE¯ */
-			clif_skill_fail(sd,skill,1,0);		/* SPäžè¶³Eå€±æéç¥ */
+		if( sp>0 && status->sp < (unsigned int)sp) {				/* SPãã§ãã¯ */
+			clif_skill_fail(sd,skill,1,0);		/* SPäžè¶³ïŒå€±æéç¥ */
 			return 0;
 		}
@@ -8711,5 +9397,5 @@
 			return 0;
 		}
-	
+
 		if(weapon && !pc_check_weapontype(sd,weapon)) {
 			clif_skill_fail(sd,skill,6,0);
@@ -8807,5 +9493,5 @@
 		if (sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == skill)
 			sd->ud.canmove_tick = gettick(); //When using a combo, cancel the can't move delay to enable the skill. [Skotlex]
-			
+
 		if (!unit_can_move(&sd->bl)) {
 			clif_skill_fail(sd,skill,0,0);
@@ -8898,10 +9584,10 @@
 int skill_castfix (struct block_list *bl, int skill_id, int skill_lv)
 {
-	int time = skill_get_cast(skill_id, skill_lv);	
+	int time = skill_get_cast(skill_id, skill_lv);
 	struct map_session_data *sd;
 
 	nullpo_retr(0, bl);
 	sd = BL_CAST(BL_PC, bl);
-	
+
 	// calculate base cast time (reduced by dex)
 	if (!(skill_get_castnodex(skill_id, skill_lv)&1)) {
@@ -8951,4 +9637,14 @@
 			status_change_end(bl, SC_SUFFRAGIUM, -1);
 		}
+<<<<<<< .mine
+	if (sc->data[SC_DECREPIFY]) // Necro Decrepify [Brain]
+		if(sc->data[SC_DECREPIFY]->val2>=3)
+		time += time * 25/100; //+25% cast time
+	if (sc->data[SC_CURSETONGUES]) { //Warlock Curse of Tongues [Brain]
+		time += time * sc->data[SC_CURSETONGUES]->val2 / 100;
+		status_change_end(bl, SC_CURSETONGUES, -1);
+	}
+
+=======
 		//Custom Jobs (blackmagic)
 		
@@ -8962,4 +9658,5 @@
 		
 		//Custom Job End
+>>>>>>> .r18
 		if (sc->data[SC_MEMORIZE]) {
 			time>>=1;
@@ -8980,5 +9677,5 @@
 	int delaynodex = skill_get_delaynodex(skill_id, skill_lv);
 	int time = skill_get_delay(skill_id, skill_lv);
-	
+
 	nullpo_retr(0, bl);
 
@@ -8987,5 +9684,5 @@
 
 	if (bl->type&battle_config.no_skill_delay)
-		return battle_config.min_skill_delay_limit; 
+		return battle_config.min_skill_delay_limit;
 
 	if (time < 0)
@@ -9004,5 +9701,5 @@
 	default:
 		if (battle_config.delay_dependon_dex && !(delaynodex&1))
-		{	// if skill delay is allowed to be reduced by dex 
+		{	// if skill delay is allowed to be reduced by dex
 			int scale = battle_config.castrate_dex_scale - status_get_dex(bl);
 			if (scale > 0)
@@ -9012,5 +9709,5 @@
 		}
 		if (battle_config.delay_dependon_agi && !(delaynodex&1))
-		{	// if skill delay is allowed to be reduced by agi 
+		{	// if skill delay is allowed to be reduced by agi
 			int scale = battle_config.castrate_dex_scale - status_get_agi(bl);
 			if (scale > 0)
@@ -9056,5 +9753,5 @@
 
 /*=========================================
- * 
+ *
  *-----------------------------------------*/
 void skill_brandishspear_first (struct square *tc, int dir, int x, int y)
@@ -9580,5 +10277,5 @@
 	return count;
 }
-	
+
 /*==========================================
  * Returns the first element field found [Skotlex]
@@ -9734,5 +10431,5 @@
 
 /*==========================================
- * 
+ *
  *------------------------------------------*/
 int skill_chastle_mob_changetarget(struct block_list *bl,va_list ap)
@@ -9767,5 +10464,5 @@
 	unit = (struct skill_unit *)src;
 	tick = va_arg(ap,int);
-	
+
 	nullpo_retr(0, sg = unit->group);
 	nullpo_retr(0, ss = map_id2bl(sg->src_id));
@@ -9777,5 +10474,5 @@
 		case UNT_SHOCKWAVE:
 		case UNT_SANDMAN:
-		case UNT_FLASHER:        
+		case UNT_FLASHER:
 			skill_additional_effect(ss,bl,sg->skill_id,sg->skill_lv,BF_MISC,tick);
 			break;
@@ -9823,5 +10520,5 @@
 		if (type != scs[i] && sc->data[scs[i]])
 			status_change_end(bl, scs[i], -1);
-		
+
 	return 0;
 }
@@ -9841,5 +10538,5 @@
 			wall = false;
 	}
-		
+
 	if( sce )
 	{
@@ -9884,8 +10581,8 @@
 	if(!sc->count || !(sce=sc->data[SC_DANCING]))
 		return;
-	
+
 	group = (struct skill_unit_group *)sce->val2;
 	sce->val2 = 0;
-	
+
 	if (sce->val4)
 	{
@@ -10021,5 +10718,5 @@
 	nullpo_retr(NULL, src);
 	nullpo_retr(NULL, ud);
-	
+
 	// find a free spot to store the new unit group
 	ARR_FIND( 0, MAX_SKILLUNITGROUP, i, ud->skillunit[i] == NULL );
@@ -10081,8 +10778,8 @@
 
 	if (!src) src=map_id2bl(group->src_id);
-	ud = unit_bl2ud(src);	
+	ud = unit_bl2ud(src);
 	if(!src || !ud) {
 		ShowError("skill_delunitgroup: Group's source not found! (src_id: %d skill_id: %d)\n", group->src_id, group->skill_id);
-		return 0;	
+		return 0;
 	}
 	if (skill_get_unit_flag(group->skill_id)&(UF_DANCE|UF_SONG|UF_ENSEMBLE))
@@ -10180,5 +10877,5 @@
 	if (group->interval==-1)
 		return NULL;
-	
+
 	ud = unit_bl2ud(bl);
 	if (!ud) return NULL;
@@ -10422,7 +11119,7 @@
 	int skill_id;
 	int i;
-	
+
 	nullpo_retr(0, group);
-	
+
 	if( !unit->alive || target->prev == NULL )
 		return 0;
@@ -10503,5 +11200,5 @@
 		//cells do not get deleted within them. [Skotlex]
 		if( dissonance ) skill_dance_switch(unit, 1);
-			
+
 		if( flag&4 )
 			skill_unit_onleft(skill_id,target,tick);
@@ -10530,5 +11227,5 @@
 		memset(skill_unit_temp, 0, sizeof(skill_unit_temp));
 	}
-		
+
 	map_foreachincell(skill_unit_move_sub,bl->m,bl->x,bl->y,BL_SKILL,bl,tick,flag);
 
@@ -10708,8 +11405,8 @@
 	if (qty < 1)
 		qty = 1;
-	
+
 	if (!skill_id) //A skill can be specified for some override cases.
 		skill_id = skill_produce_db[idx].req_skill;
-	
+
 	slot[0]=slot1;
 	slot[1]=slot2;
@@ -10859,5 +11556,5 @@
 	if(make_per < 1) make_per = 1;
 
-	
+
 	if(rand()%10000 < make_per || qty > 1){ //Success, or crafting multiple items.
 		struct item tmp_item;
@@ -10930,5 +11627,5 @@
 						skill_id != AM_TWILIGHT2 &&
 						skill_id != AM_TWILIGHT3)
-						continue;						
+						continue;
 					//Add fame as needed.
 					switch(++sd->potion_success_counter) {
@@ -10983,5 +11680,5 @@
 		}
 	}
-	//Failure	
+	//Failure
 //	if(log_config.produce)
 //		log_produce(sd,nameid,slot1,slot2,slot3,0);
@@ -11069,5 +11766,5 @@
 		return 0;
 	if (sd) sd->blockskill[data] = 0;
-	
+
 	return 1;
 }
@@ -11096,5 +11793,5 @@
 		return 0;
 	if (hd) hd->blockskill[data] = 0;
-	
+
 	return 1;
 }
@@ -11103,5 +11800,5 @@
 {
 	nullpo_retr (-1, hd);
-	
+
 	skillid = skill_get_index(skillid);
 	if (skillid == 0)
@@ -11163,8 +11860,8 @@
 			if ((val[j]-val[j-step]) != diff)
 				break;
-	
+
 		if (j>=step) //No match, try next step.
 			continue;
-		
+
 		for(; i < MAX_SKILL_LEVEL; i++)
 		{	//Apply linear increase
@@ -11363,6 +12060,6 @@
 				memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy));
 			} else {
-				int dx[] = { 1, 1 ,0, 0,-1}; 
-				int dy[] = { 1, 0, 0,-1,-1}; 
+				int dx[] = { 1, 1 ,0, 0,-1};
+				int dy[] = { 1, 0, 0,-1,-1};
 				memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx));
 				memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy));
@@ -11394,6 +12091,6 @@
 				memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy));
 			} else {
-				int dx[] = { 2, 1 ,0,-1,-2}; 
-				int dy[] = { 2, 1, 0,-1,-2}; 
+				int dx[] = { 2, 1 ,0,-1,-2};
+				int dy[] = { 2, 1, 0,-1,-2};
 				memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx));
 				memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy));
@@ -11424,5 +12121,5 @@
  * skill_nocast_db.txt
  * skill_unit_db.txt
- * produce_db.txt 
+ * produce_db.txt
  * create_arrow_db.txt
  * abra_db.txt
@@ -11493,5 +12190,5 @@
 	skill_split_atoi(split[5],skill_db[i].sp_rate);
 	skill_split_atoi(split[6],skill_db[i].zeny);
-	
+
 	//FIXME: document this
 	p = split[7];
@@ -11511,5 +12208,5 @@
 		p++;
 	}
-	
+
 	//FIXME: document this
 	p = split[8];
@@ -11545,5 +12242,5 @@
 	else if( strcmpi(split[10],"water")==0 ) skill_db[i].state = ST_WATER;
 	else skill_db[i].state = ST_NONE;
-	
+
 	skill_split_atoi(split[11],skill_db[i].spiritball);
 	for( j = 0; j < 10; j++ ) {
@@ -11561,5 +12258,5 @@
 	if( !i ) // invalid skill id
 		return false;
-	
+
 	skill_split_atoi(split[1],skill_db[i].cast);
 	skill_split_atoi(split[2],skill_db[i].delay);
@@ -11577,5 +12274,5 @@
 	if( !i ) // invalid skill id
 		return false;
-	
+
 	skill_split_atoi(split[1],skill_db[i].castnodex);
 	if( split[2] ) // optional column
@@ -11603,5 +12300,5 @@
 	if( !i ) // invalid skill id
 		return false;
-	
+
 	skill_db[i].unit_id[0] = strtol(split[1],NULL,16);
 	skill_db[i].unit_id[1] = strtol(split[2],NULL,16);
@@ -11649,5 +12346,5 @@
 	skill_produce_db[current].req_skill = atoi(split[2]);
 	skill_produce_db[current].req_skill_lv = atoi(split[3]);
-	
+
 	for( x = 4, y = 0; x+1 < columns && split[x] && split[x+1] && y < MAX_PRODUCE_RESOURCE; x += 2, y++ )
 	{
@@ -11668,5 +12365,5 @@
 
 	skill_arrow_db[current].nameid = i;
-	
+
 	for( x = 1, y = 0; x+1 < columns && split[x] && split[x+1] && y < MAX_ARROW_RESOURCE; x += 2, y++ )
 	{
@@ -11707,5 +12404,5 @@
 	memset(skill_arrow_db,0,sizeof(skill_arrow_db));
 	memset(skill_abra_db,0,sizeof(skill_abra_db));
-	
+
 	// load skill databases
 	safestrncpy(skill_db[0].name, "UNKNOWN_SKILL", sizeof(skill_db[0].name));
@@ -11735,8 +12432,8 @@
 	skilldb_name2id = strdb_alloc(DB_OPT_DUP_KEY, 0);
 	skill_readdb();
-	
+
 	skill_unit_ers = ers_new(sizeof(struct skill_unit_group));
 	skill_timer_ers  = ers_new(sizeof(struct skill_timerskill));
-	
+
 	add_timer_func_list(skill_unit_timer,"skill_unit_timer");
 	add_timer_func_list(skill_castend_id,"skill_castend_id");
@@ -11744,5 +12441,5 @@
 	add_timer_func_list(skill_timerskill,"skill_timerskill");
 	add_timer_func_list(skill_blockpc_end, "skill_blockpc_end");
-	
+
 	add_timer_interval(gettick()+SKILLUNITTIMER_INTERVAL,skill_unit_timer,0,0,SKILLUNITTIMER_INTERVAL);
 
@@ -11757,4 +12454,44 @@
 	return 0;
 }
+<<<<<<< .mine
+
+int skill_additem(struct block_list* src, struct block_list *bl, int itemid, int amount)// ITEM GIVER [Brain]
+{
+	struct map_session_data *sd = NULL, *tsd = NULL;
+
+	nullpo_retr(1, src);
+	nullpo_retr(1, bl);
+
+	if (src->m != bl->m)
+	return 1;
+	if (bl->prev == NULL)
+	return 1;
+	if (src->type == BL_PC)
+	sd = (struct map_session_data *)src;
+	if (bl->type == BL_PC)
+	tsd = (struct map_session_data *)bl;
+	if (status_isdead(bl))
+	return 1;
+
+	int eflag;
+	struct item item_tmp;
+	struct block_list tbl;
+
+	memset(&item_tmp,0,sizeof(item_tmp));
+	memset(&tbl,0,sizeof(tbl));
+
+	item_tmp.nameid = itemid;
+	item_tmp.identify = 1;
+	tbl.id = 0;
+
+	clif_takeitem(&sd->bl,&tbl);
+	eflag = pc_additem(sd,&item_tmp,amount);
+	if(eflag) {
+	clif_additem(sd,0,0,eflag);
+	map_addflooritem(&item_tmp,amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0);
+	}
+	return 0;
+}
+=======
 //Custom Jobs (blackmagic)
 int skill_additem(struct block_list* src, struct block_list *bl, int itemid, int amount)// ITEM GIVER [Brain]
@@ -11795,3 +12532,3 @@
 	return 0;
 }
-//Custom Job End
+//Custom Job End>>>>>>> .r18
