From 3387b6a441e8cd740b8742a404f7e2da616a4c94 Mon Sep 17 00:00:00 2001 From: Akinari1087 Date: Wed, 16 Oct 2013 03:19:12 -0700 Subject: [PATCH] Fixed Poison/Blind/Silence effects and Zeny penalty for Masquerade Unlucky - http://rathena.org/board/tracker/issue-8098-masquerade-unlucky/ Fixed and modified SP absorb from mobs and players for Masquerade Ignorance - http://rathena.org/board/tracker/issue-8099-masquerade-ignorance/ --- src/map/skill.c | 12 ++++++++---- src/map/status.c | 9 +++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/map/skill.c b/src/map/skill.c index cd68ab13eb..d6bdb1d431 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -8596,9 +8596,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui - status_get_lv(bl)/10 - tstatus->luk/10 - (dstsd?(dstsd->max_weight-dstsd->weight)/10000:0) - rnd_value(tstatus->agi/6,tstatus->agi/3); rate = cap_value(rate, skill_lv+sstatus->dex/20, 100); if (clif_skill_nodamage(src,bl,skill_id,0,sc_start(src,bl,type,rate,skill_lv,skill_get_time(skill_id,skill_lv)))) { - int sp = 200 * skill_lv; + int sp = 100 * skill_lv; if( dstmd ) sp = dstmd->level * 2; - if( status_zap(bl,0,sp) ) + if( !dstmd && status_zap(bl,0,sp) ) status_heal(src,0,sp/2,3); } else if( sd ) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); @@ -14125,8 +14125,12 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 req.zeny = skill_db[idx].require.zeny[skill_lv-1]; - if( sc && sc->data[SC__UNLUCKY] ) - req.zeny += sc->data[SC__UNLUCKY]->val1 * 500; + if( sc && sc->data[SC__UNLUCKY] ) { + if(sc->data[SC__UNLUCKY]->val1 < 3) + req.zeny += sc->data[SC__UNLUCKY]->val1 * 250; + else + req.zeny += 1000; + } req.spiritball = skill_db[idx].require.spiritball[skill_lv-1]; req.state = skill_db[idx].require.state; diff --git a/src/map/status.c b/src/map/status.c index 21fd82642b..e384854840 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -8473,9 +8473,18 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty val_flag |= 1|2|4; break; case SC__UNLUCKY: + { + short rand_eff; + switch(rand() % 3) { + case 1: rand_eff = SC_BLIND; break; + case 2: rand_eff = SC_SILENCE; break; + default: rand_eff = SC_POISON; break; + } val2 = 10 * val1; // Crit and Flee2 Reduction val_flag |= 1|2|4; + status_change_start(src,bl,rand_eff,10000,val1,0,0,0,tick,10); break; + } case SC__WEAKNESS: val2 = 10 * val1; val_flag |= 1|2;