From f912cd0151436e64cba2341b42da996645243b2f Mon Sep 17 00:00:00 2001
From: L0ne_W0lf <L0ne_W0lf@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Date: Tue, 17 Aug 2010 00:48:37 +0000
Subject: [PATCH] * Attempting to tackle, and fix some simple errors in skills.
 - Stormgust hit counter no longer resets under new casts of stormgust. -
 RG_STEALCOIN will now cause the monster to aggro player on success.
 (bugreport:3547) - SL_WIZARD will now consume one crystal fragement per
 reflected hit. (bugreport:3603) - WZ_FROSTNOVA will now ignore targets in
 area that are already frozen. (bugreport:3980) - SL_KAAHI will no longer uses
 SP if player has full health already. (bugreport:3918) - CG_TAROTCARD "The
 Lovers" will heal source player instead of target. (bugreport:4171)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14378 54d463be-8e91-2dee-dedb-b68131a5f0ec
---
 Changelog-Trunk.txt |  7 +++++++
 db/Changelog.txt    |  2 ++
 db/skill_db.txt     | 20 ++++++++++----------
 src/map/battle.c    |  2 +-
 src/map/skill.c     | 29 ++++++++++++-----------------
 src/map/status.c    |  2 +-
 6 files changed, 33 insertions(+), 29 deletions(-)

diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 1f551c6a6c..f60c567381 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,13 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2010/08/16
+	* Rev. 14378 Attempting to tackle, and fix some simple errors in skills. [L0ne_W0lf]
+	- Stormgust hit counter no longer resets under new casts of stormgust.
+	- RG_STEALCOIN will now cause the monster to aggro player on success. (bugreport:3547)
+	- SL_WIZARD will now consume one crystal fragement per reflected hit. (bugreport:3603)
+	- WZ_FROSTNOVA will now ignore targets in area that are already frozen. (bugreport:3980)
+	- SL_KAAHI will no longer uses SP if player has full health already. (bugreport:3918)
+	- CG_TAROTCARD "The Lovers" will heal source player instead of target. (bugreport:4171)
 	* Merged Shinryo's patch which speeds up map-cache loading (with a few changes, see eA forum thread #253218 for details) [Skotlex]
 2010/08/14
 	* Rev. 14373 Quest log kill count now updated properly. (Added from topic 253813) [L0ne_W0lf]
diff --git a/db/Changelog.txt b/db/Changelog.txt
index 29a8da57d4..660edbeb82 100644
--- a/db/Changelog.txt
+++ b/db/Changelog.txt
@@ -8,6 +8,8 @@
 	1475 Equestrian's Spear:	NEED INFO.
 	13005 Angelic Wing Dagger:	NEED INFO.
 =======================
+2010/08/16
+	* Rev. 14378 Flag some skills so they won't be given with @allskills. (bugreport:3933) [L0ne_W0lf]
 2010/07/30
 	* Rev. 14367 Added two new monster mercenaries. [L0ne_W0lf]
 	- Added information for the three new mercenary skills.
diff --git a/db/skill_db.txt b/db/skill_db.txt
index 19f31c3a65..b534986c87 100644
--- a/db/skill_db.txt
+++ b/db/skill_db.txt
@@ -631,17 +631,17 @@
 
 // Additional Skill (??)
 //688,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		GM_SANDMAN,GM Sandman
-689,0,6,4,0,0x3,-1,10,1,yes,0,0,0,magic,0,	CASH_BLESSING,Party Blessing
-690,0,6,4,0,0x3,-1,10,1,yes,0,0,0,magic,0,	CASH_INCAGI,Party Increase AGI
-691,0,6,4,0,0x3,-1,5,1,yes,0,0,0,magic,0,	CASH_ASSUMPTIO,Party Assumptio
-//692,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		ALL_CATCRY,Cat Cry
-//693,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		ALL_PARTYFLEE,Party Flee
-//694,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		ALL_ANGEL_PROTECT,Angel's Protection
-//695,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		ALL_DREAM_SUMMERNIGHT,Summer Night Dream
-//696,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		NPC_CHANGEUNDEAD2,Change Undead
+689,0,6,4,0,0x3,-1,10,1,yes,0,0x2,0,magic,0,	CASH_BLESSING,Party Blessing
+690,0,6,4,0,0x3,-1,10,1,yes,0,0x2,0,magic,0,	CASH_INCAGI,Party Increase AGI
+691,0,6,4,0,0x3,-1,5,1,yes,0,0x2,0,magic,0,	CASH_ASSUMPTIO,Party Assumptio
+//692,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,		ALL_CATCRY,Cat Cry
+//693,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,		ALL_PARTYFLEE,Party Flee
+//694,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,		ALL_ANGEL_PROTECT,Angel's Protection
+//695,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,		ALL_DREAM_SUMMERNIGHT,Summer Night Dream
+//696,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,		NPC_CHANGEUNDEAD2,Change Undead
 //697,9,6,4,0,0x1,0,1,1,yes,0,0x2,0,magic,0,	ALL_REVERSEORCISH,Reverse Orcish
-698,0,6,4,0,0x01,0,1,1,no,0,0,0,none,0,		ALL_WEWISH,Christmas Carol
-//699,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		ALL_SONKRAN,ALL_SONKRAN
+698,0,6,4,0,0x01,0,1,1,no,0,0x2,0,none,0,		ALL_WEWISH,Christmas Carol
+//699,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,		ALL_SONKRAN,ALL_SONKRAN
 
 1001,9,6,1,-1,0,0,1,1,no,0,0x1,0,weapon,0,	KN_CHARGEATK,Charge Attack
 1002,0,6,4,0,0x1,0,1,0,no,0,0x1,0,weapon,2,	CR_SHRINK,Shrink
diff --git a/src/map/battle.c b/src/map/battle.c
index 3ed1aa33cc..0f800b759e 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -3052,7 +3052,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 			return (damage_lv)skill_attack(BF_MAGIC,src,src,target,NPC_MAGICALATTACK,sc->data[SC_MAGICALATTACK]->val1,tick,0);
 	}
 
-	if(tsc && tsc->data[SC_KAAHI] && tsc->data[SC_KAAHI]->val4 == -1)
+	if(tsc && tsc->data[SC_KAAHI] && tsc->data[SC_KAAHI]->val4 == -1 && tstatus->hp < tstatus->max_hp)
 		tsc->data[SC_KAAHI]->val4 = add_timer(tick + skill_get_time2(SL_KAAHI,tsc->data[SC_KAAHI]->val1), kaahi_heal_timer, target->id, SC_KAAHI); //Activate heal.
 
 	wd = battle_calc_attack(BF_WEAPON, src, target, 0, 0, flag);	
diff --git a/src/map/skill.c b/src/map/skill.c
index 5fd1fe54dd..e214a7f55c 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1677,15 +1677,11 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
 
 			//Spirit of Wizard blocks Kaite's reflection
 			if( type == 2 && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_WIZARD )
-			{	//It should only consume once per skill casted. Val3 is the skill id and val4 is the ID of the damage src.
+			{	//Consume one Fragment per hit of the casted skill. Val3 is the skill id and val4 is the ID of the damage src.
 				//This should account for ground spells (and single target spells will be completed on castend_id) [Skotlex]
-				if (tsd && !(sc->data[SC_SPIRIT]->val3 == skillid && sc->data[SC_SPIRIT]->val4 == dsrc->id) )
-				{	//Check if you have stone to consume.
-				  	type = pc_search_inventory (tsd, 7321);
-					if (type >= 0)
-						pc_delitem(tsd, type, 1, 0);
-				} else
-					type = 0;
+			  	type = pc_search_inventory (tsd, 7321);
+				if (type >= 0)
+					pc_delitem(tsd, type, 1, 0);
 
 				if (type >= 0) {
 					dmg.damage = dmg.damage2 = 0;
@@ -4258,7 +4254,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case RG_STEALCOIN:
 		if(sd) {
 			if(pc_steal_coin(sd,bl))
+			{
+				dstmd->state.provoke_flag = src->id;
+				mob_target(dstmd, src, skill_get_range2(src,skillid,skilllv));
 				clif_skill_nodamage(src,bl,skillid,skilllv,1);
+
+			} 
 			else
 				clif_skill_fail(sd,skillid,0,0);
 		}
@@ -5373,7 +5374,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 					sc_start(bl,SC_INCATKRATE,100,-50,skill_get_time2(skillid,skilllv));
 					break;
 				case 5:	// 2000HP heal, random teleported
-					status_heal(bl, 2000, 0, 0);
+					status_heal(src, 2000, 0, 0);
 					if( !map_flag_vs(bl->m) )
 						unit_warp(bl, -1,-1,-1, 3);
 					break;
@@ -7539,15 +7540,9 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 						++count < SKILLUNITTIMER_INTERVAL/sg->interval && !status_isdead(bl) );
 				}
 				break;
-				case WZ_STORMGUST:
-					if (tsc)
-					{	//Reset hit counter when under new storm gust.
-						if (tsc->sg_id != sg->group_id) {
-							tsc->sg_id = sg->group_id;
-							tsc->sg_counter = 0;
-						}
+				case WZ_STORMGUST: //SG counter does not reset per stormgust. IE: One hit from a SG and two hits from another will freeze you.
+					if (tsc) 
 						tsc->sg_counter++; //SG hit counter.
-					}
 					if (skill_attack(skill_get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0) <= 0 && tsc)
 						tsc->sg_counter=0; //Attack absorbed.
 				break;
diff --git a/src/map/status.c b/src/map/status.c
index aa639337e9..f1315f23fe 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -1175,7 +1175,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
 	{	
 		if(!skill_num && !(status->mode&MD_BOSS) && tsc->data[SC_TRICKDEAD])
 			return 0;
-		if((skill_num == WZ_STORMGUST || skill_num == NJ_HYOUSYOURAKU)
+		if((skill_num == WZ_STORMGUST || skill_num == WZ_FROSTNOVA || skill_num == NJ_HYOUSYOURAKU)
 			&& tsc->data[SC_FREEZE])
 			return 0;
 		if(skill_num == PR_LEXAETERNA && (tsc->data[SC_FREEZE] || (tsc->data[SC_STONE] && tsc->opt1 == OPT1_STONE)))