From 7f2dafc88743c3c3ae6d83d962e18939b5e9e204 Mon Sep 17 00:00:00 2001
From: reddozen <reddozen@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Date: Fri, 24 Mar 2006 23:13:37 +0000
Subject: [PATCH] * Fixed / finished most of Gunslinger [Reddozen]   - fixed
 some bullets in the item DB   - adjusted a few rates in skill_cast_db.txt for
 Gunslingers   - adjusted a couple skills in skill_db.txt to act correctly   -
 adjusted all the SP values for Gunslinger skills   - changed piercing shot to
 lv 5 from lv 10   - made ki Translation fail giving coins to Gunslingers   -
 equipping a weapon other than a gatlin gun should cancel SC_GATLINGING. Also
 made Gatlinfeaver on/off togelable   - GS_CRACKER will no longer stun players
   - added GS_Disarm

* View changes here:
http://diviniaro.com/data/reddozen_3_24_2006.patch

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5739 54d463be-8e91-2dee-dedb-b68131a5f0ec
---
 db/item_db.txt          |  8 ++++----
 db/skill_cast_db.txt    |  4 ++--
 db/skill_db.txt         | 14 +++++++-------
 db/skill_require_db.txt | 22 +++++++++++-----------
 db/skill_tree.txt       |  4 ++--
 src/map/pc.c            |  4 ++++
 src/map/skill.c         | 30 +++++++++++++-----------------
 7 files changed, 43 insertions(+), 43 deletions(-)

diff --git a/db/item_db.txt b/db/item_db.txt
index e3f7e6f904..b91da9b427 100644
--- a/db/item_db.txt
+++ b/db/item_db.txt
@@ -1594,7 +1594,7 @@
 5120,Bucket_Hat_,Bucket Hat,5,6000,,300,,3,,1,532676607,7,2,256,,0,1,195,{}
 5121,Zherlthsh_Mask,Zherlthsh Mask,5,,10,400,,3,,0,119529470,7,2,768,,70,1,200,{ bonus2 bAddRace,RC_DemiHuman,5; bonus2 bSubRace,RC_DemiHuman,5; }
 5122,Magni's_Cap,Magni's Cap,5,,10,1000,,5,,0,119529470,7,2,256,,65,1,201,{ bonus bStr,2; }
-5123,Ulle's_Cap,Ulle's Cap,5,,10,500,,3,,1,119529470,7,2,256,,65,1,202,{ bonus bDex,2; bonus bAgi,1; if(isequipped(2353) && readparam(bDex)>=70) bonus bUseSPrate,-10; }
+5123,Ulle's_Cap,Ulle's Cap,5,,10,500,,3,,1,119529470,7,2,256,,65,1,202,{ bonus bDex,2; bonus bAgi,1; if(isequipped(2353) && bDex>=70) bonus bUseSPrate,-10; }
 5124,Frigg's_Circlet,Frigg's Circlet,5,,10,300,,3,,0,119529470,7,2,256,,65,1,203,{ bonus bMdef,10; bonus bInt,2; bonus bMaxSP,50; }
 5125,Angel's_Kiss,Angel's Kiss,5,,10,300,,2,,1,8388609,7,2,256,,50,1,204,{ bonus bSPrecovRate,3; }
 5126,Morpheus's_Hood,Morpheus's Hood,5,,10,200,,3,,0,119529470,7,2,256,,33,1,205,{ bonus bInt,2; if(isequipped(2518,2648,2649)==0) end; bonus bInt,5; bonus bMdef,11; bonus bMaxSPrate,20; if(Upper == 1) bonus bCastrate,25; }
@@ -2404,9 +2404,9 @@
 13202,Shell_of_Blood,Shell of Blood,10,30,,2,30,,,,134217728,7,2,32768,,1,,,{ bonus2 bAddEff,Eff_Bleeding,50; }
 13203,Flare_Sphere,Flare Sphere,10,80,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus bAtkEle,Ele_Fire; }
 13204,Lightning_Sphere,Lightning Sphere,10,80,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus bAtkEle,Ele_Wind; }
-13205,Poison_Sphere,Poison Sphere,10,80,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus2 bAddEff,Eff_Poison,50; }
-13206,Blind_Sphere,Blind Sphere,10,80,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus2 bAddEff,Eff_Blind,50; }
-13207,Freezing_Sphere,Freezing Sphere,10,80,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus bAtkEle,Ele_Water; }
+13205,Poison_Sphere,Poison Sphere,10,80,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus bAtkEle,Ele_Poision; bonus2 bAddEff,Eff_Poison,50; }
+13206,Blind_Sphere,Blind Sphere,10,80,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,50; }
+13207,Freezing_Sphere,Freezing Sphere,10,80,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,50; }
 
 // Shurikens & Kunais
 13250,Shuriken,Shuriken,10,4,,5,10,,,,268435456,7,2,32768,,1,,,{}
diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt
index 549ae6cb24..fb79f6645c 100644
--- a/db/skill_cast_db.txt
+++ b/db/skill_cast_db.txt
@@ -819,7 +819,7 @@
 //-- GS_BULLSEYE
 503,0,1000,0,0,0
 //-- GS_MADNESSCANCEL
-504,0,1000,0,15000,0
+504,0,1000,15000,15000,0
 //-- GS_ADJUSTMENT
 505,0,1000,0,30000,0
 //-- GS_INCREASING
@@ -833,7 +833,7 @@
 //-- GS_DISARM
 513,0,1000,0,0,0
 //-- GS_PIERCINGSHOT
-514,0,1000,0,0,60000
+514,0,1000,0,0,120000
 //-- GS_RAPIDSHOWER
 515,0,1000,0,0,0
 //-- GS_DESPERADO
diff --git a/db/skill_db.txt b/db/skill_db.txt
index 884beae25e..7d86422b28 100644
--- a/db/skill_db.txt
+++ b/db/skill_db.txt
@@ -527,21 +527,21 @@
 504,0,6,4,0,1,0,5,1,no,0,0,0,weapon,0	//GS_MADNESSCANCEL#Madness Canceler#
 505,0,6,4,0,1,0,5,1,no,0,0,0,weapon,0	//GS_ADJUSTMENT#AdJustment#
 506,0,6,4,0,1,0,5,1,no,0,0,0,weapon,0	//GS_INCREASING#Increasing Accuracy#
-507,-5,6,1,-1,0,0,1,1,no,0,0,0,weapon,0	//GS_MAGICALBULLET#Magical Bullet#
+507,-5,6,1,7,0,0,1,1,no,0,0,0,weapon,0	//GS_MAGICALBULLET#Magical Bullet#
 508,-5,6,1,-1,0,0,1,1,no,0,0,0,weapon,0	//GS_CRACKER#Cracker#
-509,0,0,0,0,0,0,10,0,no,0,0,0,none,0	//GS_SINGLEACTION#Single Action#
+509,-5,0,0,0,0,0,10,0,no,0,0,0,none,0	//GS_SINGLEACTION#Single Action#
 510,0,0,0,0,0,0,10,0,no,0,0,0,none,0	//GS_SNAKEEYE#Snake Eye#
 511,-5,8,0,-1,0,0,10,2,no,0,0,0,weapon,0	//GS_CHAINACTION#Chain Action#
 512,-5,6,1,-1,0,0,10,1,no,0,0,0,weapon,0	//GS_TRACKING#Tracking#
 513,-5,6,1,-1,0,0,5,1,no,0,0,0,weapon,0	//GS_DISARM#Disarm#
-514,-5,6,1,-1,0,0,10,1,no,0,0,0,weapon,0	//GS_PIERCINGSHOT#Piercing Shot#
+514,-5,6,1,-1,0,0,5,1,no,0,0,0,weapon,0	//GS_PIERCINGSHOT#Piercing Shot#
 515,-5,8,1,-1,0,0,10,5,no,0,0,0,weapon,0	//GS_RAPIDSHOWER#Rapid Shower#
-516,-5,8,4,-1,2,2,10,10,no,0,0,0,weapon,0	//GS_DESPERADO#Desperado#
-517,0,6,4,0,1,0,5,1,no,0,0,0,weapon,0	//GS_GATLINGFEVER#Gatling Fever#
+516,-5,8,4,-1,2,2,10,-10,no,0,0,0,weapon,0	//GS_DESPERADO#Desperado#
+517,-5,6,4,0,1,0,10,1,no,0,0,0,weapon,0	//GS_GATLINGFEVER#Gatling Fever#
 518,-5,6,1,-1,0,0,10,1,no,0,0,0,weapon,0	//GS_DUST#Dust#
 519,-5,6,1,-1,0,0,10,1,no,0,0,0,weapon,0	//GS_FULLBUSTER#Full Buster#
-520,-5,6,4,-1,2,1:1:1:2:2:2:3:3:3:4,10,1,no,0,0,0,weapon,0	//GS_SPREADATTACK#Spread Attack#
-521,-5,6,1,-1,0,0,10,1,no,0,0,0,weapon,0	//GS_GROUNDDRIFT#Ground Drift#
+520,-5,6,1,-1,2,1:1:1:2:2:2:3:3:3:4,10,1,no,0,0,0,weapon,0	//GS_SPREADATTACK#Spread Attack#
+521,5,6,1,-1,0,0,10,1,no,0,0,0,weapon,0	//GS_GROUNDDRIFT#Ground Drift#
 522,0,0,0,0,0,0,10,1,no,0,0,0,weapon,0	//NJ_TOBIDOUGU#NJ_TOBIDOUGU#
 523,9,6,1,-1,0,0,10,1,no,0,0,0,weapon,0	//NJ_SYURIKEN#NJ_SYURIKEN#
 524,9,8,1,-1,0,0,5,3,no,0,0,0,weapon,0	//NJ_KUNAI#NJ_KUNAI#
diff --git a/db/skill_require_db.txt b/db/skill_require_db.txt
index bc3be65079..3d5ab09410 100644
--- a/db/skill_require_db.txt
+++ b/db/skill_require_db.txt
@@ -254,8 +254,8 @@
 330,0,0,40:45:50:55:60:65:70:75:80:85,0,0,0,13:14,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//DC_SERVICEFORYOU#�T?�r�X�t�H?��?#
 
 334,0,0,1,10,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WE_MALE#�N�����͌���#
-335,0,0,1,0,10,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WE_FEMALE#���Ȃ���?�����܂�#
-336,0,0,1,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WE_CALLPARTNER#���Ȃ��Ɉ�������#
+335,0,0,1,0,10,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WE_FEMALE#� �Ȃ���?�����܂�#
+336,0,0,1,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WE_CALLPARTNER#� �Ȃ��Ɉ�������#
 337,0,0,1,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//ITM_TOMAHAWK##
 
 355,0,0,18:26:34:42:50,0,0,0,1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//LK_AURABLADE#�I?���u��?�h#
@@ -388,7 +388,7 @@
 498,0,0,200,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0//AM_TWILIGHT3#�g�?�C���C�g�t�@?[�}�V?[3#
 499,0,0,8,0,0,0,11,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//HT_POWER#�r?[�X�g�X�g���C�s���O#
 //temp plugs
-500,0,0,10,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_GLITTERING
+500,0,0,10:20:30:40:50,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_GLITTERING
 501,0,0,10,0,0,0,17:18:19:20:21,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_FLING
 502,0,0,10,0,0,0,17:18:19:20:21,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_TRIPLEACTION
 503,0,0,10,0,0,0,17:18:19:20:21,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_BULLSEYE
@@ -397,16 +397,16 @@
 506,0,0,10,0,0,0,17:18:19:20:21,none,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_INCREASING
 507,0,0,7,0,0,0,17:18:19:20:21,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_MAGICALBULLET
 508,0,0,10,0,0,0,17:18:19:20:21,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_CRACKER
-512,0,0,10,0,0,0,17:18,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_TRACKING
-513,0,0,10,0,0,0,17:18,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_DISARM
+512,0,0,15:20:25:30:35:40:45:50:55:60,0,0,0,17:18,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_TRACKING
+513,0,0,15:20:25:30:35,0,0,0,17:18,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_DISARM
 514,0,0,11:12:13:14:15,0,0,0,17:18,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_PIERCINGSHOT
-515,0,0,10,0,0,0,17,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_RAPIDSHOWER
+515,0,0,22:24:26:28:30:32:34:36:38:40,0,0,0,17,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_RAPIDSHOWER
 516,0,0,32:34:36:38:40:42:44:46:48:50,0,0,0,17,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_DESPERADO
-517,0,0,10,0,0,0,20,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_GATLINGFEVER
-518,0,0,10,0,0,0,19,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_DUST
+517,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,20,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_GATLINGFEVER
+518,0,0,3:6:9:12:15:18:21:24:27:30,0,0,0,19,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_DUST
 519,0,0,20:25:30:35:40:45:50:55:60:65,0,0,0,19,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_FULLBUSTER
-520,0,0,10,0,0,0,19,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_SPREADATTACK
-521,0,0,10,0,0,0,21,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_GROUNDDRIFT
+520,0,0,15:20:25:30:35:40:45:50:55:60,0,0,0,19,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_SPREADATTACK
+521,0,0,4:8:12:16:20:24:28:32:36:40,0,0,0,21,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_GROUNDDRIFT
 523,0,0,10,0,0,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NJ_SYURIKEN
 524,0,0,10,0,0,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NJ_KUNAI
 525,0,0,10,0,0,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NJ_HUUMA
@@ -443,7 +443,7 @@
 1013,0,0,10,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//BS_GREED#�×~#
 1014,0,0,400,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//PR_REDEMPTIO#���f���v�e�B�I#
 1015,0,0,40,0,0,0,99,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MO_KITRANSLATION#����?��(?U�C�?��)#
-1016,10,0,20,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MO_BALKYOUNG#��?�(����)#
+1016,10,0,20,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MO_BALKYOUNG#��? (����)#
 1017,0,0,30,0,0,0,99,none,0,12116,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SA_ELEMENTGROUND
 1018,0,0,30,0,0,0,99,none,0,12114,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SA_ELEMENTFIRE
 1019,0,0,30,0,0,0,99,none,0,12117,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SA_ELEMENTWIND
diff --git a/db/skill_tree.txt b/db/skill_tree.txt
index 9adf757897..1cb03dc123 100644
--- a/db/skill_tree.txt
+++ b/db/skill_tree.txt
@@ -661,12 +661,12 @@
 24,511,10,509,1,0,0,0,0,0,0,0,0 //GS_CHAINACTION#Chain Action#
 24,512,10,509,5,0,0,0,0,0,0,0,0 //GS_TRACKING#Tracking#
 24,513,5,512,7,0,0,0,0,0,0,0,0 //GS_DISARM#Disarm#
-24,514,10,512,5,0,0,0,0,0,0,0,0 //GS_PIERCINGSHOT#Piercing Shot#
+24,514,5,512,5,0,0,0,0,0,0,0,0 //GS_PIERCINGSHOT#Piercing Shot#
 24,515,10,511,3,0,0,0,0,0,0,0,0 //GS_RAPIDSHOWER#Rapid Shower#
 24,516,10,515,5,0,0,0,0,0,0,0,0 //GS_DESPERADO#Desperado#
 24,517,10,515,7,516,5,0,0,0,0,0,0 //GS_GATLINGFEVER#Gatling Fever#
 24,518,10,509,5,0,0,0,0,0,0,0,0 //GS_DUST#Dust#
-24,519,5,518,3,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster#
+24,519,10,518,3,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster#
 24,520,10,519,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack#
 24,521,10,519,5,520,7,0,0,0,0,0,0 //GS_GROUNDDRIFT#Ground Drift#
 //Ninja
diff --git a/src/map/pc.c b/src/map/pc.c
index 4063d97f0c..75ce055300 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -595,6 +595,10 @@ int pc_isequip(struct map_session_data *sd,int n)
 						return 1;
 				}
 		}
+
+		if((item->equip & 0x0002 || item->equip & 0x0020) && item->type == 4 && sd->status.weapon != 20 && sd->sc.data[SC_GATLINGFEVER].timer != -1)
+			status_change_end(&sd->bl,SC_GATLINGFEVER,-1);	// added to disable effects if new wepaon is not a Gatlin gun [Reddozen]
+
 	}
 	//Not equipable by class. [Skotlex]
 	if (!(1<<(sd->class_&MAPID_BASEMASK)&item->class_base[(sd->class_&JOBL_2_1)?1:((sd->class_&JOBL_2_2)?2:0)]))
diff --git a/src/map/skill.c b/src/map/skill.c
index 38e6f987b5..dd30b56f58 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1248,7 +1248,8 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 		status_change_start(bl,SC_COMA,10,skilllv,0,0,0,0,0);
 		break;
 	case GS_CRACKER:
-		sc_start(bl,SC_STUN,(100 - 10*distance_bl(src, bl)),skilllv,skill_get_time2(skillid,skilllv)); //Temp stun rate
+		if (!dstsd)	// according to latest patch, should not work on players [Reddozen]
+			sc_start(bl,SC_STUN,(100 - 10*distance_bl(src, bl)),skilllv,skill_get_time2(skillid,skilllv)); //Temp stun rate 
 		break;
 	case GS_PIERCINGSHOT:
 		sc_start(bl,SC_BLEEDING,(skilllv*3),skilllv,skill_get_time2(skillid,skilllv));
@@ -3032,18 +3033,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl,int s
 		break;
 	//Not implemented yet [Vicious]
 	case GS_FLING:
-	//case GS_TRIPLEACTION:
-	//case GS_BULLSEYE:
-	//case GS_MAGICALBULLET:
-	//case GS_CRACKER:
-	//case GS_TRACKING:
-	case GS_DISARM:
-	//case GS_PIERCINGSHOT:
-	//case GS_RAPIDSHOWER:
-	//case GS_DESPERADO:
-	//case GS_DUST:
-	//case GS_FULLBUSTER:
-	//case GS_SPREADATTACK:
 	case GS_GROUNDDRIFT:
 	
 	//case NJ_SYURIKEN:
@@ -3843,7 +3832,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 		break;
 
 	case MO_KITRANSLATION:
-		if(dstsd) {
+		if(dstsd && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER) {
 			pc_addspiritball(dstsd,skill_get_time(skillid,skilllv),5);
 		}
 		break;
@@ -4410,11 +4399,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case RG_STRIPARMOR:			/* �X�g���b�v�A?[�}?[ */
 	case RG_STRIPHELM:			/* �X�g���b�v�w���� */
 	case ST_FULLSTRIP:			// Rewritten most of the code [DracoRPG]
+	case GS_DISARM:				// Added disarm. [Reddozen]
 		{
 		int strip_fix, equip = 0;
 		int sclist[4] = {0,0,0,0};
 
-		if (skillid == RG_STRIPWEAPON || skillid == ST_FULLSTRIP)
+		if (skillid == RG_STRIPWEAPON || skillid == ST_FULLSTRIP || skillid == GS_DISARM)
 		   equip |= EQP_WEAPON;
 		if (skillid == RG_STRIPSHIELD || skillid == ST_FULLSTRIP)
 		   equip |= EQP_SHIELD;
@@ -5535,6 +5525,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case NJ_UTSUSEMI:
 	case NJ_BUNSINJYUTSU:
 	case NJ_NEN:
+
+		if (skillid == GS_GATLINGFEVER && sd->sc.data[SC_GATLINGFEVER].timer!=-1){	// added to allow you to toggle skill on/off [Reddozen]
+			status_change_end(bl,SC_GATLINGFEVER,-1);
+			break;
+		}
+
 		clif_skill_nodamage(src,bl,skillid,skilllv,
 			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
 		break;
@@ -7967,13 +7963,13 @@ int skill_check_condition(struct map_session_data *sd,int skill, int lv, int typ
 	case GS_MADNESSCANCEL:
 		spiritball = 4;
 		if(sd->spiritball >= 4 && sd->sc.data[SC_ADJUSTMENT].timer!=-1)
-			sd->sc.data[SC_ADJUSTMENT].timer = -1;
+			status_change_end(&sd->bl,SC_ADJUSTMENT,-1);
 		break;
 
 	case GS_ADJUSTMENT:
 		spiritball = 2;
 		if(sd->spiritball >= 2 && sd->sc.data[SC_MADNESSCANCEL].timer != -1)
-			sd->sc.data[SC_MADNESSCANCEL].timer = -1;
+			status_change_end(&sd->bl,SC_MADNESSCANCEL,-1);
 		break;
 
 	case GS_INCREASING: