* 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
This commit is contained in:
L0ne_W0lf 2010-08-17 00:48:37 +00:00
parent 1a2fd04b19
commit f912cd0151
6 changed files with 33 additions and 29 deletions

View File

@ -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. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2010/08/16 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] * 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 2010/08/14
* Rev. 14373 Quest log kill count now updated properly. (Added from topic 253813) [L0ne_W0lf] * Rev. 14373 Quest log kill count now updated properly. (Added from topic 253813) [L0ne_W0lf]

View File

@ -8,6 +8,8 @@
1475 Equestrian's Spear: NEED INFO. 1475 Equestrian's Spear: NEED INFO.
13005 Angelic Wing Dagger: 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 2010/07/30
* Rev. 14367 Added two new monster mercenaries. [L0ne_W0lf] * Rev. 14367 Added two new monster mercenaries. [L0ne_W0lf]
- Added information for the three new mercenary skills. - Added information for the three new mercenary skills.

View File

@ -631,17 +631,17 @@
// Additional Skill (??) // Additional Skill (??)
//688,0,0,0,0,0,0,9,0,no,0,0,0,none,0, GM_SANDMAN,GM Sandman //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 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,0,0,magic,0, CASH_INCAGI,Party Increase AGI 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,0,0,magic,0, CASH_ASSUMPTIO,Party Assumptio 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,0,0,none,0, ALL_CATCRY,Cat Cry //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,0,0,none,0, ALL_PARTYFLEE,Party Flee //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,0,0,none,0, ALL_ANGEL_PROTECT,Angel's Protection //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,0,0,none,0, ALL_DREAM_SUMMERNIGHT,Summer Night Dream //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,0,0,none,0, NPC_CHANGEUNDEAD2,Change Undead //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 //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 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,0,0,none,0, ALL_SONKRAN,ALL_SONKRAN //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 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 1002,0,6,4,0,0x1,0,1,0,no,0,0x1,0,weapon,2, CR_SHRINK,Shrink

View File

@ -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); 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. 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); wd = battle_calc_attack(BF_WEAPON, src, target, 0, 0, flag);

View File

@ -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 //Spirit of Wizard blocks Kaite's reflection
if( type == 2 && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_WIZARD ) 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] //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) ) type = pc_search_inventory (tsd, 7321);
{ //Check if you have stone to consume. if (type >= 0)
type = pc_search_inventory (tsd, 7321); pc_delitem(tsd, type, 1, 0);
if (type >= 0)
pc_delitem(tsd, type, 1, 0);
} else
type = 0;
if (type >= 0) { if (type >= 0) {
dmg.damage = dmg.damage2 = 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: case RG_STEALCOIN:
if(sd) { if(sd) {
if(pc_steal_coin(sd,bl)) 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); clif_skill_nodamage(src,bl,skillid,skilllv,1);
}
else else
clif_skill_fail(sd,skillid,0,0); 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)); sc_start(bl,SC_INCATKRATE,100,-50,skill_get_time2(skillid,skilllv));
break; break;
case 5: // 2000HP heal, random teleported case 5: // 2000HP heal, random teleported
status_heal(bl, 2000, 0, 0); status_heal(src, 2000, 0, 0);
if( !map_flag_vs(bl->m) ) if( !map_flag_vs(bl->m) )
unit_warp(bl, -1,-1,-1, 3); unit_warp(bl, -1,-1,-1, 3);
break; 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) ); ++count < SKILLUNITTIMER_INTERVAL/sg->interval && !status_isdead(bl) );
} }
break; break;
case WZ_STORMGUST: 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) 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;
}
tsc->sg_counter++; //SG hit counter. 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) 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. tsc->sg_counter=0; //Attack absorbed.
break; break;

View File

@ -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]) if(!skill_num && !(status->mode&MD_BOSS) && tsc->data[SC_TRICKDEAD])
return 0; 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]) && tsc->data[SC_FREEZE])
return 0; return 0;
if(skill_num == PR_LEXAETERNA && (tsc->data[SC_FREEZE] || (tsc->data[SC_STONE] && tsc->opt1 == OPT1_STONE))) if(skill_num == PR_LEXAETERNA && (tsc->data[SC_FREEZE] || (tsc->data[SC_STONE] && tsc->opt1 == OPT1_STONE)))