Michieru - Sep 24, 2013 11:43
					
				
				
					according to this: [url="https://docs.google.com/document/pub?id=1TEIr4zpaXOUvgNFJ8pkFT41O0A_nxm3u3rRLQChg_Zo"]https://docs.google.com/document/pub?id=1TEIr4zpaXOUvgNFJ8pkFT41O0A_nxm3u3rRLQChg_Zo[/url]
here is the patch of the fix made by rytech in 3ceam[code=auto:0]
 db/re/skill_db.txt |  2 +-
 src/map/skill.c    | 17 +++++++++++------
 src/map/status.c   |  5 +----
 3 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt
index 4b01cb3..831a5f4 100644
--- a/db/re/skill_db.txt
+++ b/db/re/skill_db.txt
@@ -1009,7 +1009,7 @@
 2489,11,6,1,0,0,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,weapon,0,		GN_FIRE_EXPANSION_ACID,Fire Expansion Acid
 2490,9,6,2,0,0x3,1,5,1,yes,0,0x80,2:3:4:5:6,none,0,	GN_HELLS_PLANT,Hell's Plant
 2491,0,6,1,0,0xC0,0,5,1,no,0,0,0,misc,0,	GN_HELLS_PLANT_ATK,Hell's Plant Attack
-2492,0,6,4,0,0x3,6:7:8:9:10,5,1,yes,0,0,0,none,0,	GN_MANDRAGORA,Howling of Mandragora
+2492,0,6,4,0,0x3,5:6:6:7:7,5,1,yes,0,0,0,none,0,	GN_MANDRAGORA,Howling of Mandragora
 2493,11,6,16,0,0x1,0,1,1,yes,0,0,0,none,0,	GN_SLINGITEM,Sling Item
 2494,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,		GN_CHANGEMATERIAL,Change Material
 2495,0,6,4,0,0x1,0,2,1,no,0,0,0,none,0,		GN_MIX_COOKING,Mix Cooking
diff --git a/src/map/skill.c b/src/map/skill.c
index 6ec9d2f..c9c1c27 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -9010,12 +9010,17 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 
 		case GN_MANDRAGORA:
 			if( flag&1 ) {
-				if ( clif->skill_nodamage(bl, src, skill_id, skill_lv,
-										 sc_start(bl, type, 25 + 10 * skill_lv, skill_lv, skill->get_time(skill_id, skill_lv))) )
-					status_zap(bl, 0, status_get_max_sp(bl) * (25 + 5 * skill_lv) / 100);
-			} else
-				iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR,
-								   src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id);
+				int chance = 25 + 10 * skill_lv - (status_get_vit(bl) + status_get_luk(bl)) / 5;
+				if ( chance < 10 )
+					chance = 10;//Minimal chance is 10%.
+				if ( rand()%100 < chance ) {//Coded to both inflect the status and drain the target's SP only when successful. [Rytech]
+				sc_start(bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv));
+				status_zap(bl, 0, status_get_max_sp(bl) * (25 + 5 * skill_lv) / 100);
+				}
+			} else if ( sd ) {
+				iMap->foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR,src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id);
+				clif->skill_nodamage(bl, src, skill_id, skill_lv, 1);
+			}
 			break;
 
 		case GN_SLINGITEM:
diff --git a/src/map/status.c b/src/map/status.c
index ee5d4bf..d08bf96 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -4323,7 +4323,7 @@ static unsigned short status_calc_int(struct block_list *bl, struct status_chang
 	if(sc->data[SC_MARIONETTE])
 		int_ += ((sc->data[SC_MARIONETTE]->val4)>>16)&0xFF;
 	if(sc->data[SC_MANDRAGORA])
-		int_ -= 5 + 5 * sc->data[SC_MANDRAGORA]->val1;
+		int_ -= 4 * sc->data[SC_MANDRAGORA]->val1;
 	if(sc->data[SC_COCKTAIL_WARG_BLOOD])
 		int_ += sc->data[SC_COCKTAIL_WARG_BLOOD]->val1;
 	if(sc->data[SC_INSPIRATION])
@@ -6382,9 +6382,6 @@ int status_get_sc_def(struct block_list *bl, enum sc_type type, int rate, int ti
 		tick -= 1000 * ((iStatus->get_lv(bl) / 10) + ((sd?sd->status.job_level:0) / 5));
 		tick = max(tick,10000);
 		break;
-	case SC_MANDRAGORA:
-		sc_def = (status->vit+status->luk)/5;
-		break;
 	case SC_KYOUGAKU:
 		tick -= 1000 * status_get_int(bl) / 20;
 		break;
[/code]