* Fixed bAutoSpellOnSkill bonuses could not be chained (bugreport:4421, since r13596).
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14536 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
9808dfb86b
commit
0b5563ac28
@ -1,6 +1,7 @@
|
|||||||
Date Added
|
Date Added
|
||||||
|
|
||||||
2010/12/01
|
2010/12/01
|
||||||
|
* Fixed bAutoSpellOnSkill bonuses could not be chained (bugreport:4421, since r13596). [Ai4rei]
|
||||||
* Fixed NPC_TALK message being displayed with EOL character attached (bugreport:4596, since r14270). [Ai4rei]
|
* Fixed NPC_TALK message being displayed with EOL character attached (bugreport:4596, since r14270). [Ai4rei]
|
||||||
* Reverted change from r14533 and restored the 3rd field of mob_avail.txt being optional (bugreport:4599, since r14532). [Ai4rei]
|
* Reverted change from r14533 and restored the 3rd field of mob_avail.txt being optional (bugreport:4599, since r14532). [Ai4rei]
|
||||||
* Monster database reading now utilizes sv_readdb. [Ai4rei]
|
* Monster database reading now utilizes sv_readdb. [Ai4rei]
|
||||||
|
@ -55,6 +55,7 @@ struct weapon_data {
|
|||||||
|
|
||||||
struct s_autospell {
|
struct s_autospell {
|
||||||
short id, lv, rate, card_id, flag;
|
short id, lv, rate, card_id, flag;
|
||||||
|
bool lock; // bAutoSpellOnSkill: blocks autospell from triggering again, while being executed
|
||||||
};
|
};
|
||||||
|
|
||||||
struct s_addeffect {
|
struct s_addeffect {
|
||||||
@ -134,7 +135,6 @@ struct map_session_data {
|
|||||||
short pmap; // Previous map on Map Change
|
short pmap; // Previous map on Map Change
|
||||||
struct guild *gmaster_flag;
|
struct guild *gmaster_flag;
|
||||||
unsigned int bg_id;
|
unsigned int bg_id;
|
||||||
unsigned skillonskill : 1;
|
|
||||||
unsigned short user_font;
|
unsigned short user_font;
|
||||||
unsigned short autobonus; //flag to indicate if an autobonus is activated. [Inkfish]
|
unsigned short autobonus; //flag to indicate if an autobonus is activated. [Inkfish]
|
||||||
} state;
|
} state;
|
||||||
|
@ -1091,11 +1091,14 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, int s
|
|||||||
if( sd == NULL || skillid <= 0 )
|
if( sd == NULL || skillid <= 0 )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
sd->state.skillonskill = 1;
|
|
||||||
for( i = 0; i < ARRAYLENGTH(sd->autospell3) && sd->autospell3[i].flag; i++ )
|
for( i = 0; i < ARRAYLENGTH(sd->autospell3) && sd->autospell3[i].flag; i++ )
|
||||||
{
|
{
|
||||||
if( sd->autospell3[i].flag != skillid )
|
if( sd->autospell3[i].flag != skillid )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if( sd->autospell3[i].lock )
|
||||||
|
continue; // autospell already being executed
|
||||||
|
|
||||||
skill = (sd->autospell3[i].id > 0) ? sd->autospell3[i].id : -sd->autospell3[i].id;
|
skill = (sd->autospell3[i].id > 0) ? sd->autospell3[i].id : -sd->autospell3[i].id;
|
||||||
if( skillnotok(skill, sd) )
|
if( skillnotok(skill, sd) )
|
||||||
continue;
|
continue;
|
||||||
@ -1113,6 +1116,7 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, int s
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
sd->state.autocast = 1;
|
sd->state.autocast = 1;
|
||||||
|
sd->autospell3[i].lock = true;
|
||||||
skill_consume_requirement(sd,skill,skilllv,1);
|
skill_consume_requirement(sd,skill,skilllv,1);
|
||||||
switch( skill_get_casttype(skill) )
|
switch( skill_get_casttype(skill) )
|
||||||
{
|
{
|
||||||
@ -1120,6 +1124,7 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, int s
|
|||||||
case CAST_NODAMAGE: skill_castend_nodamage_id(&sd->bl, tbl, skill, skilllv, tick, 0); break;
|
case CAST_NODAMAGE: skill_castend_nodamage_id(&sd->bl, tbl, skill, skilllv, tick, 0); break;
|
||||||
case CAST_DAMAGE: skill_castend_damage_id(&sd->bl, tbl, skill, skilllv, tick, 0); break;
|
case CAST_DAMAGE: skill_castend_damage_id(&sd->bl, tbl, skill, skilllv, tick, 0); break;
|
||||||
}
|
}
|
||||||
|
sd->autospell3[i].lock = false;
|
||||||
sd->state.autocast = 0;
|
sd->state.autocast = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1137,7 +1142,6 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, int s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sd->state.skillonskill = 0;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3096,7 +3100,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
|
|||||||
{
|
{
|
||||||
if( sd->state.arrow_atk ) //Consume arrow on last invocation to this skill.
|
if( sd->state.arrow_atk ) //Consume arrow on last invocation to this skill.
|
||||||
battle_consume_ammo(sd, skillid, skilllv);
|
battle_consume_ammo(sd, skillid, skilllv);
|
||||||
if( !sd->state.skillonskill )
|
|
||||||
skill_onskillusage(sd, bl, skillid, tick);
|
skill_onskillusage(sd, bl, skillid, tick);
|
||||||
skill_consume_requirement(sd,skillid,skilllv,2);
|
skill_consume_requirement(sd,skillid,skilllv,2);
|
||||||
}
|
}
|
||||||
@ -5718,7 +5721,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
|||||||
{
|
{
|
||||||
if( sd->state.arrow_atk ) //Consume arrow on last invocation to this skill.
|
if( sd->state.arrow_atk ) //Consume arrow on last invocation to this skill.
|
||||||
battle_consume_ammo(sd, skillid, skilllv);
|
battle_consume_ammo(sd, skillid, skilllv);
|
||||||
if( !sd->state.skillonskill )
|
|
||||||
skill_onskillusage(sd, bl, skillid, tick);
|
skill_onskillusage(sd, bl, skillid, tick);
|
||||||
skill_consume_requirement(sd,skillid,skilllv,2);
|
skill_consume_requirement(sd,skillid,skilllv,2);
|
||||||
}
|
}
|
||||||
@ -6583,7 +6585,6 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
|
|||||||
{
|
{
|
||||||
if( sd->state.arrow_atk && !(flag&1) ) //Consume arrow if a ground skill was not invoked. [Skotlex]
|
if( sd->state.arrow_atk && !(flag&1) ) //Consume arrow if a ground skill was not invoked. [Skotlex]
|
||||||
battle_consume_ammo(sd, skillid, skilllv);
|
battle_consume_ammo(sd, skillid, skilllv);
|
||||||
if( !sd->state.skillonskill )
|
|
||||||
skill_onskillusage(sd, NULL, skillid, tick);
|
skill_onskillusage(sd, NULL, skillid, tick);
|
||||||
skill_consume_requirement(sd,skillid,skilllv,2);
|
skill_consume_requirement(sd,skillid,skilllv,2);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user