Kaynağa Gözat

Updated NJ_HUUMA to renewal behavior.(bugreport:6330)
Updated some wizard skills(WZ_METEOR,WZ_HEAVENDRIVE,WZ_VERMILION) to its RE damage ratio.(bugreport:6334,bugreport:6329, bugreport:6333)
Fixed bugreport:6321 where skill ratio of RK_HUNDREDSPEAR is adjusted too much.
Follow up r16492 where damage dealt to traps should now show/display w/o affecting other skills behavior.
Fixed a glitch in UNT_DUMMYSKILL where it triggers multiple time that causes multiple damage something related with bugreport:6201.
Added some Kagerou/Oboro skills and more to come :).
(KO_YAMIKUMO, KO_RIGHT, KO_LEFT, KO_JYUMONJIKIRI, KO_SETSUDAN, KO_BAKURETSU, KO_HAPPOKUNAI, KO_MUCHANAGE)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16506 54d463be-8e91-2dee-dedb-b68131a5f0ec

rud0lp20 13 yıl önce
ebeveyn
işleme
2468b058b0

+ 15 - 0
db/pre-re/skill_cast_db.txt

@@ -1639,6 +1639,21 @@
 //2537,5000,5000,0,60000,0,60000
 //==========================================
 
+//==== Kagerou & Oboro skills ==============
+//-- KO_YAMIKUMO
+3001,0,0,0,60000,0,0,0
+//-- KO_JYUMONJIKIRI
+3004,0,2500,0,5000,0,0,0
+//-- KO_SETSUDAN
+3005,0,2000,0,0,0,0,0
+//-- KO_BAKURETSU
+3006,1000:1500:2000:2500:3000,1000,0,100,0,3000,0
+//-- KO_HAPPOKUNAI
+3007,0,1000,0,0,0,0,0
+//-- KO_MUCHANAGE
+3008,0,0,0,100,0,10000,0
+//==========================================
+
 //===== Homunculus Skills ==================
 //-- HLIF_HEAL
 8001,0,2000,0,0,0,0

+ 11 - 0
db/pre-re/skill_db.txt

@@ -1007,6 +1007,17 @@
 2536,0,0,4,0,0x1,0,1,0,no,0,0,0,none,0,	ALL_GUARDIAN_RECALL,Guardian's Recall
 //2537,9,6,16,0,0x1,0,2,1,yes,0,0,0,magic,0,	ALL_ODINS_POWER,Odin's Power
 
+//****
+// Kagerou & Oboro
+3001,0,6,4,0,0,0,1,1,no,0,0,0,none,0,		KO_YAMIKUMO,Yamikumo
+3002,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,		KO_RIGHT,Right Hand Mastery
+3003,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,		KO_LEFT,Left Hand Mastery
+3004,3:4:5:6:7,8,1,-1,0,0,5,-2,no,0,0,0,weapon,0,	KO_JYUMONJIKIRI,Cross Strike
+3005,2,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,		KO_SETSUDAN,Soul Sever
+3006,7:8:9:10:11,6,2,0,0x2,0,5,0,no,0,0,0,weapon,0,	KO_BAKURETSU,Bakuretsu Kunai
+3007,0,6,4,-1,0x42,4:4:4:4:5,5,0,no,0,0,0,misc,0,	KO_HAPPOKUNAI,Happo Kunai
+3008,9,8,2,0,0x52,0,10,-10,no,0,0,0,misc,0,	KO_MUCHANAGE,Mucha Nage
+
 8001,9,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,	HLIF_HEAL,Healing Touch
 8002,0,6,4,0,0x3,-1,5,1,no,0,0,0,none,0,	HLIF_AVOID,Avoid
 8003,0,0,0,0,0,1,5,0,no,0,0,0,none,0,		HLIF_BRAIN,Brain Surgery

+ 7 - 0
db/pre-re/skill_require_db.txt

@@ -785,6 +785,13 @@
 2536,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//ALL_GUARDIAN_RECALL#Guardian's Recall#
 //2537,0,0,70:100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//ALL_ODINS_POWER#Odin's Power#
 
+3001,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_YAMIKUMO#Yamikumo#
+3004,0,0,10:12:14:16:18,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_JYUMONJIKIRI#Cross Strike#
+3005,0,0,12:16:20:24:28,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_SETSUDAN#Soul Sever#
+3006,0,0,5:6:7:8:9,0,0,0,99,0,0,none,0,13294,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_BAKURETSU#Bakuretsu Kunai#
+3007,0,0,8:9:10:11:12,0,0,0,99,7,8,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_HAPPOKUNAI#Happo Kunai#
+3008,0,0,50,0,0,10000:20000:30000:40000:50000:60000:70000:80000:90000:100000,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_MUCHANAGE#Mucha Nage#
+
 10010,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GD_BATTLEORDER##
 10011,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GD_REGENERATION##
 10012,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GD_RESTORE##

+ 3 - 0
db/pre-re/skill_unit_db.txt

@@ -148,6 +148,9 @@
 2488,0xe9,    ,  0, 3,1000,enemy, 0x000	//GN_FIRE_EXPANSION_TEAR_GAS
 2490,0xea,    ,  0, 1,1000,enemy, 0x000	//GN_HELLS_PLANT
 
+3006,0x86,    ,  0, 2, 100,enemy, 0x018	//KO_BAKURETSU
+3008,0x86,    ,  0, 2, 100,enemy, 0x018	//KO_MUCHANAGE
+
 8208,0x86,    ,  0, 2,1000,enemy, 0x080	//MA_SHOWER
 8209,0x90,    ,  0, 1,1000,enemy, 0x006	//MA_SKIDTRAP
 8210,0x93,    ,  0, 0,1000,enemy, 0x006	//MA_LANDMINE

+ 16 - 1
db/re/skill_cast_db.txt

@@ -875,7 +875,7 @@
 //-- NJ_KUNAI
 524,0,1000,0,0,0,0,0
 //-- NJ_HUUMA
-525,3000,2000,0,0,0,0,0
+525,3000,2000,0,100,0,0,0
 //-- NJ_ZENYNAGE
 526,0,5000,0,0,0,0,0
 //-- NJ_TATAMIGAESHI
@@ -1640,6 +1640,21 @@
 2537,5000,5000,0,60000,0,60000,0
 //==========================================
 
+//==== Kagerou & Oboro skills ==============
+//-- KO_YAMIKUMO
+3001,0,0,0,60000,0,0,0
+//-- KO_JYUMONJIKIRI
+3004,0,2500,0,5000,0,0,0
+//-- KO_SETSUDAN
+3005,0,2000,0,0,0,0,0
+//-- KO_BAKURETSU
+3006,1000:1500:2000:2500:3000,1000,0,100,0,3000,0
+//-- KO_HAPPOKUNAI
+3007,0,1000,0,0,0,0,0
+//-- KO_MUCHANAGE
+3008,0,0,0,100,0,10000,0
+//==========================================
+
 //===== Homunculus Skills ==================
 //-- HLIF_HEAL
 8001,0,2000,0,0,0,0,0

+ 12 - 1
db/re/skill_db.txt

@@ -568,7 +568,7 @@
 522,0,0,0,0,0,0,10,1,no,0,0,0,weapon,0,		NJ_TOBIDOUGU,Shuriken Training
 523,9,6,1,-1,0x40,0,10,1,no,0,0,0,weapon,0,	NJ_SYURIKEN,Throw Shuriken
 524,9,8,1,-1,0x40,0,5,3,no,0,0,0,weapon,0,	NJ_KUNAI,Throw Kunai
-525,9,8,1,-1,0x6,1,5,-3:-3:-4:-4:-5,no,0,0,0,weapon,0,	NJ_HUUMA,Throw Huuma Shuriken
+525,9,8,2,-1,0x2,0,5,-3:-3:-4:-4:-5,no,0,0,0,weapon,0,	NJ_HUUMA,Throw Huuma Shuriken
 526,9,6,1,0,0x50,0,10,1,no,0,0,0,misc,0,		NJ_ZENYNAGE,Throw Zeny
 527,0,6,4,-1,0,0,5,1,no,0,0,0,weapon,3,		NJ_TATAMIGAESHI,Improvised Defense
 528,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,	NJ_KASUMIKIRI,Vanishing Slash
@@ -1008,6 +1008,17 @@
 2536,0,0,4,0,0x1,0,1,0,no,0,0,0,none,0,	ALL_GUARDIAN_RECALL,Guardian's Recall
 2537,9,6,16,0,0x1,0,2,1,yes,0,0,0,magic,0,	ALL_ODINS_POWER,Odin's Power
 
+//****
+// Kagerou & Oboro
+3001,0,6,4,0,0,0,1,1,no,0,0,0,none,0,		KO_YAMIKUMO,Yamikumo
+3002,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,		KO_RIGHT,Right Hand Mastery
+3003,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,		KO_LEFT,Left Hand Mastery
+3004,3:4:5:6:7,8,1,-1,0,0,5,-2,no,0,0,0,weapon,0,	KO_JYUMONJIKIRI,Cross Strike
+3005,2,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,		KO_SETSUDAN,Soul Sever
+3006,7:8:9:10:11,6,2,0,0x2,0,5,0,no,0,0,0,weapon,0,	KO_BAKURETSU,Bakuretsu Kunai
+3007,0,6,4,-1,0x42,4:4:4:4:5,5,0,no,0,0,0,misc,0,	KO_HAPPOKUNAI,Happo Kunai
+3008,9,8,2,0,0x52,0,10,-10,no,0,0,0,misc,0,	KO_MUCHANAGE,Mucha Nage
+
 8001,9,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,	HLIF_HEAL,Healing Touch
 8002,0,6,4,0,0x3,-1,5,1,no,0,0,0,none,0,	HLIF_AVOID,Avoid
 8003,0,0,0,0,0,1,5,0,no,0,0,0,none,0,		HLIF_BRAIN,Brain Surgery

+ 7 - 0
db/re/skill_require_db.txt

@@ -786,6 +786,13 @@
 2535,0,0,1,0,0,0,99,0,0,none,0,6377,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//ALL_BUYING_STORE#Open Buying Store
 2536,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//ALL_GUARDIAN_RECALL#Guardian's Recall#
 //2537,0,0,70:100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//ALL_ODINS_POWER#Odin's Power#
+ 
+3001,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_YAMIKUMO#Yamikumo#
+3004,0,0,10:12:14:16:18,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_JYUMONJIKIRI#Cross Strike#
+3005,0,0,12:16:20:24:28,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_SETSUDAN#Soul Sever#
+3006,0,0,5:6:7:8:9,0,0,0,99,0,0,none,0,13294,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_BAKURETSU#Bakuretsu Kunai#
+3007,0,0,8:9:10:11:12,0,0,0,99,7,8,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_HAPPOKUNAI#Happo Kunai#
+3008,0,0,50,0,0,10000:20000:30000:40000:50000:60000:70000:80000:90000:100000,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//KO_MUCHANAGE#Mucha Nage#
 
 10010,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GD_BATTLEORDER##
 10011,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GD_REGENERATION##

+ 4 - 0
db/re/skill_unit_db.txt

@@ -91,6 +91,7 @@
 488,0xb9,    ,  3, 0,  -1,all,   0x200	//CG_HERMODE
 516,0x86,    ,  3, 0, 100,enemy, 0x000	//GS_DESPERADO
 521,0xbe,    ,  0, 1,1000,enemy, 0x000	//GS_GROUNDDRIFT
+525,0x86,    ,  0, 2, 100,enemy, 0x018	//NJ_HUUMA
 527,0xbc,    , -1, 0,2000,enemy, 0x018	//NJ_TATAMIGAESHI
 535,0xbd,    , -1, 0,  20,enemy, 0x010	//NJ_KAENSIN
 538,0xbb,    ,  1:1:1:2:2:2:3:3:3:4,0,-1,all,0x010	//NJ_SUITON
@@ -148,6 +149,9 @@
 2488,0xe9,    ,  0, 3,1000,enemy, 0x000	//GN_FIRE_EXPANSION_TEAR_GAS
 2490,0xea,    ,  0, 1,1000,enemy, 0x000	//GN_HELLS_PLANT
 
+3006,0x86,    ,  0, 2, 100,enemy, 0x018	//KO_BAKURETSU
+3008,0x86,    ,  0, 2, 100,enemy, 0x018	//KO_MUCHANAGE
+
 8020,0xf5,    ,  0, 3,2300:2100:1900:1700:1500,enemy,   0x018	//MH_POISON_MIST
 8033,0x7e,    ,  0, 0,  -1,all,   0x003	//MH_STEINWAND 
 8025,0x86,    ,  0, 2:2:3:3:4,1000,enemy, 0x018	//MH_XENO_SLASHER

+ 71 - 20
src/map/battle.c

@@ -865,6 +865,7 @@ int battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int dam
 		case PA_PRESSURE:
 		case HW_GRAVITATION:
 		case NJ_ZENYNAGE:
+		case KO_MUCHANAGE:
 			break;
 		default:
 			if( flag&BF_SKILL )
@@ -930,6 +931,7 @@ int battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int dama
 	case PA_PRESSURE:
 	case HW_GRAVITATION:
 	case NJ_ZENYNAGE:
+	case KO_MUCHANAGE:
 		break;
 	default:
 		/* Uncomment if you want god-mode Emperiums at 100 defense. [Kisuka]
@@ -2098,7 +2100,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
 							short index = sd->equip_index[EQI_HAND_R];
 							if( index >= 0 && sd->inventory_data[index] 
 								&& sd->inventory_data[index]->type == IT_WEAPON )
-								skillratio += max(10000 - sd->inventory_data[index]->weight, 0);
+								skillratio += max(10000 - sd->inventory_data[index]->weight, 0) / 10;
 							skillratio += 50 * pc_checkskill(sd,LK_SPIRALPIERCE);
 						} // (1 + [(Caster’s Base Level - 100) / 200])
 						skillratio = skillratio * (100 + (status_get_lv(src)-100) / 2) / 100;
@@ -2478,6 +2480,19 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
 				case EL_ROCK_CRUSHER:
 					skillratio += 700;
 					break;
+				case KO_JYUMONJIKIRI:
+					if( tsc && tsc->data[SC_JYUMONJIKIRI] )
+						wd.div_ = wd.div_ * -1;// needs more info
+					skillratio += -100 + 150 * skill_lv;
+				case KO_HUUMARANKA:
+					skillratio += -100 + 150 * skill_lv + sstatus->dex/2 + sstatus->agi/2; // needs more info
+					break;
+				case KO_SETSUDAN:
+					skillratio += 100 * (skill_lv-1);
+					break;
+				case KO_BAKURETSU:
+					skillratio = 50 * skill_lv * (sd?pc_checkskill(sd,NJ_TOBIDOUGU):10);
+					break;
 				case MH_STAHL_HORN:
 					skillratio += 500 + 100 * skill_lv;
 					break;
@@ -2552,6 +2567,12 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
 						ATK_ADD( status_get_lv(target) * 50 ); //mobs
 					}
 					break;
+				case KO_SETSUDAN:
+					if( tsc && tsc->data[SC_SPIRIT] ){
+						ATK_ADDRATE(10*tsc->data[SC_SPIRIT]->val1);// +10% custom value.
+						status_change_end(target,SC_SPIRIT,INVALID_TIMER);
+					}
+					break;
 			}
 		}
 		//Div fix.
@@ -3117,14 +3138,18 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
 		{	//Dual-wield
 			if (wd.damage)
 			{
-				skill = pc_checkskill(sd,AS_RIGHT);
-				wd.damage = wd.damage * (50 + (skill * 10))/100;
+				if( skill = pc_checkskill(sd,AS_RIGHT) )
+					wd.damage = wd.damage * (50 + (skill * 10))/100;
+				else if( skill = pc_checkskill(sd,KO_RIGHT) )
+					wd.damage = wd.damage * (70 + (skill * 10))/100;
 				if(wd.damage < 1) wd.damage = 1;
 			}
 			if (wd.damage2)
 			{
-				skill = pc_checkskill(sd,AS_LEFT);
-				wd.damage2 = wd.damage2 * (30 + (skill * 10))/100;
+				if( skill = pc_checkskill(sd,AS_LEFT) )
+					wd.damage2 = wd.damage2 * (30 + (skill * 10))/100;
+				else if( skill = pc_checkskill(sd,KO_LEFT) )
+					wd.damage2 = wd.damage2 * (50 + (skill * 10))/100;
 				if(wd.damage2 < 1) wd.damage2 = 1;
 			}
 		} else if(sd->status.weapon == W_KATAR && !skill_num)
@@ -3505,9 +3530,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 					case WZ_SIGHTRASHER:
 						skillratio += 20*skill_lv;
 						break;
-					case WZ_VERMILION:
-						skillratio += 20*skill_lv-20;
-						break;
 					case WZ_WATERBALL:
 						skillratio += 30*skill_lv;
 						break;
@@ -3541,11 +3563,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 					case NJ_RAIGEKISAI:
 						skillratio += 60 + 40*skill_lv;
 						break;
-				#ifdef RENEWAL
-					case NJ_HUUJIN:
-						skillratio += 50;
-						break;
-				#endif
 					case NJ_KAMAITACHI:
 					case NPC_ENERGYDRAIN:
 						skillratio += 100*skill_lv;
@@ -3553,6 +3570,31 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 					case NPC_EARTHQUAKE:
 						skillratio += 100 +100*skill_lv +100*(skill_lv/2);
 						break;
+				#ifdef RENEWAL
+					case WZ_HEAVENDRIVE:
+					case WZ_METEOR:
+						skillratio += 25;
+						break;
+					case WZ_VERMILION:
+						{
+    						int interval = 0, per = interval , ratio = per;
+    						while( (per++) < skill_lv ){
+     							ratio += interval; 
+     							if(per%3==0) interval += 20;
+    						}
+							if( skill_lv > 9 )
+								ratio -= 10;
+							skillratio += ratio;
+						}
+						break;
+					case NJ_HUUJIN:
+						skillratio += 50;
+						break;
+				#else	
+					case WZ_VERMILION:
+						skillratio += 20*skill_lv-20;
+						break;
+				#endif
 					/**
 					 * Arch Bishop
 					 **/
@@ -4068,13 +4110,14 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
 			md.damage = INT_MAX>>1;
 		break;
 	case NJ_ZENYNAGE:
-		md.damage = skill_get_zeny(skill_num ,skill_lv);
-		if (!md.damage) md.damage = 2;
-		md.damage = md.damage + rnd()%md.damage;
-		if (is_boss(target))
-			md.damage=md.damage/3;
-		else if (tsd)
-			md.damage=md.damage/2;
+	case KO_MUCHANAGE:
+			md.damage = skill_get_zeny(skill_num ,skill_lv);
+			if (!md.damage) md.damage = 2;
+			md.damage = rand()%md.damage + md.damage / (skill_num==NJ_ZENYNAGE?1:2) ;
+			if (is_boss(target))
+				md.damage=md.damage / (skill_num==NJ_ZENYNAGE?3:2);
+			else if (tsd) // need confirmation for KO_MUCHANAGE
+				md.damage=md.damage/2;
 		break;
 	case GS_FLING:
 		md.damage = sd?sd->status.job_level:status_get_lv(src);
@@ -4128,6 +4171,14 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
 		//[{( Hell Plant Skill Level x Caster’s Base Level ) x 10 } + {( Caster’s INT x 7 ) / 2 } x { 18 + ( Caster’s Job Level / 4 )] x ( 5 / ( 10 - Summon Flora Skill Level ))
 		md.damage = ( skill_lv * status_get_lv(src) * 10 ) + ( sstatus->int_ * 7 / 2 ) * ( 18 + (sd?sd->status.job_level:0) / 4 ) * ( 5 / (10 - (sd?pc_checkskill(sd,AM_CANNIBALIZE):0)) ); 
 		break;
+	case KO_HAPPOKUNAI:
+		{
+			struct Damage wd = battle_calc_weapon_attack(src,target,skill_num,skill_lv,mflag);
+			short totaldef = tstatus->def2 + (short)status_get_def(target);
+			md.damage = wd.damage * 60 * (5 + skill_lv) / 100;
+			md.damage -= totaldef;
+		}
+		break;
 	}
 
 	if (nk&NK_SPLASHSPLIT){ // Divide ATK among targets

+ 29 - 3
src/map/skill.c

@@ -1342,6 +1342,9 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 	case MH_STAHL_HORN:
 		sc_start(bl,SC_STUN,(20 + 4 * skilllv),skilllv,skill_get_time2(skillid,skilllv));
 		break;
+	case KO_JYUMONJIKIRI: // needs more info
+		sc_start(bl,SC_JYUMONJIKIRI,25,skilllv,skill_get_time(skillid,skilllv));
+		break;
 	}
 
 	if (md && battle_config.summons_trigger_autospells && md->master_id && md->special_state.ai)
@@ -2334,6 +2337,8 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
 		break;
 	case WL_SOULEXPANSION:
 	case WL_COMET:
+	case KO_MUCHANAGE:
+	case NJ_HUUMA:
 		dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skillid,skilllv,8);
 		break;
 	case WL_CHAINLIGHTNING_ATK:
@@ -2365,6 +2370,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
 	case EL_HURRICANE_ATK:
 	case EL_TYPOON_MIS:
 	case EL_TYPOON_MIS_ATK:
+	case KO_BAKURETSU:
 		dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skillid,-1,5);
 		break;
 	case GN_SLINGITEM_RANGEMELEEATK:
@@ -2399,6 +2405,11 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
 	default:
 		if( flag&SD_ANIMATION && dmg.div_ < 2 ) //Disabling skill animation doesn't works on multi-hit.
 			type = 5;
+		if( bl->type == BL_SKILL ){
+			TBL_SKILL *su = (TBL_SKILL*)bl;
+			if( su->group && skill_get_inf2(su->group->skill_id)&INF2_TRAP )// show damage on trap targets
+				clif_skill_damage(src,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skillid, flag&SD_LEVEL?-1:skilllv, 5);
+		}
 		dmg.dmotion = clif_skill_damage(dsrc,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skillid, flag&SD_LEVEL?-1:skilllv, type);
 		break;
 	}
@@ -3417,6 +3428,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
 	case WM_GREAT_ECHO:
 	case GN_SLINGITEM_RANGEMELEEATK:
 	case MH_STAHL_HORN:
+	case KO_JYUMONJIKIRI:
+	case KO_SETSUDAN:
 		skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
 	break;
 
@@ -3648,6 +3661,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
 	case GN_CART_TORNADO:
 	case GN_CARTCANNON:
 	case MH_LAVA_SLIDE:
+	case KO_HAPPOKUNAI:
+	case KO_HUUMARANKA:
 		if( flag&1 ) {//Recursive invocation
 			// skill_area_temp[0] holds number of targets in area
 			// skill_area_temp[1] holds the id of the original target
@@ -5457,11 +5472,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case SR_SKYNETBLOW:
 	case SR_RAMPAGEBLASTER:
 	case SR_HOWLINGOFLION:
+	case KO_HAPPOKUNAI:
 		skill_area_temp[1] = 0;
 		clif_skill_nodamage(src,bl,skillid,skilllv,1);
 		i = map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid, skilllv), splash_target(src), 
 			src, skillid, skilllv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id);
-		if( !i && ( skillid == NC_AXETORNADO || skillid == SR_SKYNETBLOW ) )
+		if( !i && ( skillid == NC_AXETORNADO || skillid == SR_SKYNETBLOW || skillid == KO_HAPPOKUNAI ) )
 			clif_skill_damage(src,src,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6);
 		break;
 
@@ -5614,6 +5630,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 		break;
 	case TF_HIDING:
 	case ST_CHASEWALK:
+	case KO_YAMIKUMO:
 		if (tsce)
 		{
 			clif_skill_nodamage(src,bl,skillid,-1,status_change_end(bl, type, INVALID_TIMER)); //Hide skill-scream animation.
@@ -9326,6 +9343,9 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
 	case NJ_HYOUSYOURAKU:
 	case NJ_RAIGEKISAI:
 	case NJ_KAMAITACHI:
+#ifdef RENEWAL
+	case NJ_HUUMA:
+#endif
 	case NPC_EVILLAND:
 	case RA_ELECTRICSHOCKER:
 	case RA_CLUSTERBOMB:
@@ -9356,6 +9376,9 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
 	case SO_WIND_INSIGNIA:
 	case SO_EARTH_INSIGNIA:
 	case MH_POISON_MIST:
+	case KO_HUUMARANKA:
+	case KO_MUCHANAGE:
+	case KO_BAKURETSU:
 		flag|=1;//Set flag to 1 to prevent deleting ammo (it will be deleted on group-delete).
 	case GS_GROUNDDRIFT: //Ammo should be deleted right away.
 		skill_unitsetting(src,skillid,skilllv,x,y,0);
@@ -10934,6 +10957,8 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 				default:
 					skill_attack(skill_get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
 			}
+			if( skill_get_unit_interval(sg->skill_id) >= skill_get_time(sg->skill_id,sg->skill_lv) )
+				sg->unit_id = UNT_USED_TRAPS;
 			break;
 
 		case UNT_FIREPILLAR_WAITING:
@@ -11894,7 +11919,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, short skill, sh
 		case BS_MAXIMIZE:		case NV_TRICKDEAD:	case TF_HIDING:			case AS_CLOAKING:		case CR_AUTOGUARD:
 		case ML_AUTOGUARD:		case CR_DEFENDER:	case ML_DEFENDER:		case ST_CHASEWALK:		case PA_GOSPEL:
 		case CR_SHRINK:			case TK_RUN:		case GS_GATLINGFEVER:	case TK_READYCOUNTER:	case TK_READYDOWN:
-		case TK_READYSTORM:		case TK_READYTURN:	case SG_FUSION:			case RA_WUGDASH:
+		case TK_READYSTORM:		case TK_READYTURN:	case SG_FUSION:			case RA_WUGDASH:		case KO_YAMIKUMO:
 			if( sc && sc->data[status_skill2sc(skill)] )
 				return 1;
 	}
@@ -12203,6 +12228,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, short skill, sh
 			break;
 
 		case NJ_ZENYNAGE:
+		case KO_MUCHANAGE:
 			if(sd->status.zeny < require.zeny) {
 				clif_skill_fail(sd,skill,USESKILL_FAIL_MONEY,0);
 				return 0;
@@ -12822,7 +12848,7 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, short
 	case BS_MAXIMIZE:		case NV_TRICKDEAD:	case TF_HIDING:			case AS_CLOAKING:		case CR_AUTOGUARD:
 	case ML_AUTOGUARD:		case CR_DEFENDER:	case ML_DEFENDER:		case ST_CHASEWALK:		case PA_GOSPEL:
 	case CR_SHRINK:			case TK_RUN:		case GS_GATLINGFEVER:	case TK_READYCOUNTER:	case TK_READYDOWN:
-	case TK_READYSTORM:		case TK_READYTURN:	case SG_FUSION:
+	case TK_READYSTORM:		case TK_READYTURN:	case SG_FUSION:			case KO_YAMIKUMO:
 		if( sc && sc->data[status_skill2sc(skill)] )
 			return req;
 	}

+ 3 - 0
src/map/status.c

@@ -706,6 +706,8 @@ void initChangeTables(void) {
 	set_sc( EL_TIDAL_WEAPON    , SC_TIDAL_WEAPON_OPTION  , SI_TIDAL_WEAPON_OPTION  , SCB_ALL );
 	set_sc( EL_ROCK_CRUSHER    , SC_ROCK_CRUSHER         , SI_ROCK_CRUSHER         , SCB_DEF );
 	set_sc( EL_ROCK_CRUSHER_ATK, SC_ROCK_CRUSHER_ATK     , SI_ROCK_CRUSHER_ATK     , SCB_SPEED );	
+	add_sc( KO_YAMIKUMO			, SC_HIDING		  );
+	set_sc( KO_JYUMONJIKIRI		, SC_JYUMONJIKIRI		 , SI_KO_JYUMONJIKIRI	   , SCB_NONE );
 	
 	add_sc( MH_STAHL_HORN		 , SC_STUN            );
 	set_sc( MH_ANGRIFFS_MODUS	 , SC_ANGRIFFS_MODUS  , SI_ANGRIFFS_MODUS	, SCB_BATK|SCB_WATK|SCB_DEF|SCB_FLEE );
@@ -1637,6 +1639,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
 			case RG_RAID:
 			case NJ_SHADOWJUMP:
 			case NJ_KIRIKAGE:
+			case KO_YAMIKUMO:
 				break;
 			default:
 				//Non players can use all skills while hidden.

+ 13 - 0
src/map/status.h

@@ -621,6 +621,19 @@ typedef enum sc_type {
 	SC_INCMHP,
 	SC_INCMSP,
 	SC_PARTYFLEE, // 531
+	/**
+	* Kagerou & Oboro [malufett]
+	**/
+	SC_MEIKYOUSISUI,
+	SC_JYUMONJIKIRI,
+	SC_KYOUGAKU,
+	SC_IZAYOI,
+	SC_KAGEHUMI,
+	SC_KYOMU,
+	SC_KAGEMUSYA,
+	SC_ZANGETSU,
+	SC_OBOROGENSOU,
+
 	SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
 } sc_type;