From 90d59676f4e34d970a7c89d82afc8b57f4b34dc8 Mon Sep 17 00:00:00 2001 From: skotlex Date: Mon, 21 Aug 2006 17:55:19 +0000 Subject: - Adjusted Glittering's success rate to 20+10*lv% - Corrected isequipped() so that cards will not be tagged as "used up" unless all the specified items were found. - Fixed a confusion in skill_attack using the src instead of dsrc for some calls, which was causing some problems with the KAITE check from AoE spells. - Fixed ASC_BREAKER's misc damage part not having the ignore-element flag set. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8406 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/battle.c | 5 +++-- src/map/script.c | 12 ++++++++++-- src/map/skill.c | 8 ++++---- 3 files changed, 17 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index c645399e7..51101b3c0 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2519,13 +2519,14 @@ struct Damage battle_calc_misc_attack( case PA_PRESSURE: case GS_FLING: case NJ_ZENYNAGE: - flag.elefix = flag.cardfix = 0; + flag.cardfix = 0; + case ASC_BREAKER: + flag.elefix = 0; case HT_BLITZBEAT: case TF_THROWSTONE: case SN_FALCONASSAULT: case PA_GOSPEL: case CR_ACIDDEMONSTRATION: - case ASC_BREAKER: md.flag = (md.flag&~BF_RANGEMASK)|BF_LONG; break; case HVAN_EXPLOSION: diff --git a/src/map/script.c b/src/map/script.c index 6aa199d1b..7d199721d 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -10796,6 +10796,8 @@ int buildin_isequipped(struct script_state *st) int i, j, k, id = 1; int index, flag; int ret = -1; + //Original hash to reverse it when full check fails. + unsigned int setitem_hash = 0, setitem_hash2 = 0; sd = script_rid2sd(st); @@ -10803,7 +10805,9 @@ int buildin_isequipped(struct script_state *st) push_val(st->stack,C_INT,0); return 0; } - + + setitem_hash = sd->setitem_hash; + setitem_hash2 = sd->setitem_hash2; for (i=0; id!=0; i++) { FETCH (i+2, id) else id = 0; @@ -10860,7 +10864,11 @@ int buildin_isequipped(struct script_state *st) ret &= flag; if (!ret) break; } - + if (!ret) + { //When check fails, restore original hash values. [Skotlex] + sd->setitem_hash = setitem_hash; + sd->setitem_hash2 = setitem_hash2; + } push_val(st->stack,C_INT,ret); return 0; } diff --git a/src/map/skill.c b/src/map/skill.c index df2b796e6..ac11dc856 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1818,14 +1818,14 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds return 0; } else if (flag && skill_get_nk(skillid)&NK_SPLASH) { //Note that splash attacks often only check versus the targetted mob, those around the splash area normally don't get checked for being hidden/cloaked/etc. [Skotlex] - if (!status_check_skilluse(dsrc, bl, skillid, 2)) + if (!status_check_skilluse(src, bl, skillid, 2)) return 0; } - BL_CAST(BL_PC, dsrc, sd); + BL_CAST(BL_PC, src, sd); BL_CAST(BL_PC, bl, tsd); - sstatus = status_get_status_data(dsrc); + sstatus = status_get_status_data(src); tstatus = status_get_status_data(bl); // Is this check really needed? FrostNova won't hurt you if you step right where the caster is? if(skillid == WZ_FROSTNOVA && dsrc->x == bl->x && dsrc->y == bl->y) @@ -5510,7 +5510,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case GS_GLITTERING: if(sd) { clif_skill_nodamage(src,bl,skillid,skilllv,1); - if(rand()%100 < (10+10*skilllv)) + if(rand()%100 < (20+10*skilllv)) pc_addspiritball(sd,skill_get_time(skillid,skilllv),10); else if(sd->spiritball > 0) pc_delspiritball(sd,1,0); -- cgit v1.2.3-70-g09d2