- 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://svn.code.sf.net/p/rathena/svn/trunk@8406 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2006-08-21 17:55:19 +00:00
parent ade0103541
commit 200813da7e
4 changed files with 25 additions and 8 deletions

View File

@ -4,6 +4,14 @@ 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. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/08/21 2006/08/21
* Adjusted Glittering's success rate to 20+10*lv% [Skotlex]
* Corrected isequipped() so that cards will not be tagged as "used up"
unless all the specified items were found. [Skotlex]
* 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. [Skotlex]
* Fixed ASC_BREAKER's misc damage part not having the ignore-element flag
set. [Skotlex]
* Moved homunc battle conf from misc.conf to homunc.conf [Toms] * Moved homunc battle conf from misc.conf to homunc.conf [Toms]
* Some cleaning in skill.c in regard to homun skills. [Skotlex] * Some cleaning in skill.c in regard to homun skills. [Skotlex]
* Madness Canceller now stacks with other aspd bonuses, just like Berserk * Madness Canceller now stacks with other aspd bonuses, just like Berserk

View File

@ -2519,13 +2519,14 @@ struct Damage battle_calc_misc_attack(
case PA_PRESSURE: case PA_PRESSURE:
case GS_FLING: case GS_FLING:
case NJ_ZENYNAGE: case NJ_ZENYNAGE:
flag.elefix = flag.cardfix = 0; flag.cardfix = 0;
case ASC_BREAKER:
flag.elefix = 0;
case HT_BLITZBEAT: case HT_BLITZBEAT:
case TF_THROWSTONE: case TF_THROWSTONE:
case SN_FALCONASSAULT: case SN_FALCONASSAULT:
case PA_GOSPEL: case PA_GOSPEL:
case CR_ACIDDEMONSTRATION: case CR_ACIDDEMONSTRATION:
case ASC_BREAKER:
md.flag = (md.flag&~BF_RANGEMASK)|BF_LONG; md.flag = (md.flag&~BF_RANGEMASK)|BF_LONG;
break; break;
case HVAN_EXPLOSION: case HVAN_EXPLOSION:

View File

@ -10796,6 +10796,8 @@ int buildin_isequipped(struct script_state *st)
int i, j, k, id = 1; int i, j, k, id = 1;
int index, flag; int index, flag;
int ret = -1; int ret = -1;
//Original hash to reverse it when full check fails.
unsigned int setitem_hash = 0, setitem_hash2 = 0;
sd = script_rid2sd(st); sd = script_rid2sd(st);
@ -10804,6 +10806,8 @@ int buildin_isequipped(struct script_state *st)
return 0; return 0;
} }
setitem_hash = sd->setitem_hash;
setitem_hash2 = sd->setitem_hash2;
for (i=0; id!=0; i++) for (i=0; id!=0; i++)
{ {
FETCH (i+2, id) else id = 0; FETCH (i+2, id) else id = 0;
@ -10860,7 +10864,11 @@ int buildin_isequipped(struct script_state *st)
ret &= flag; ret &= flag;
if (!ret) break; 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); push_val(st->stack,C_INT,ret);
return 0; return 0;
} }

View File

@ -1818,14 +1818,14 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
return 0; return 0;
} else if (flag && skill_get_nk(skillid)&NK_SPLASH) { } 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] //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; return 0;
} }
BL_CAST(BL_PC, dsrc, sd); BL_CAST(BL_PC, src, sd);
BL_CAST(BL_PC, bl, tsd); BL_CAST(BL_PC, bl, tsd);
sstatus = status_get_status_data(dsrc); sstatus = status_get_status_data(src);
tstatus = status_get_status_data(bl); tstatus = status_get_status_data(bl);
// Is this check really needed? FrostNova won't hurt you if you step right where the caster is? // 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) 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: case GS_GLITTERING:
if(sd) { if(sd) {
clif_skill_nodamage(src,bl,skillid,skilllv,1); 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); pc_addspiritball(sd,skill_get_time(skillid,skilllv),10);
else if(sd->spiritball > 0) else if(sd->spiritball > 0)
pc_delspiritball(sd,1,0); pc_delspiritball(sd,1,0);