- Updated the autospell bonus scripts so you don't have to specify all the attack type criteria. If neither of BF_LONG/BF_SHORT is specified, the spell will trigger on both. If neither of BF_WEAPON/BF_MAGIC/BF_MISC is specified, the spell will trigger on BF_WEAPON, if neither of BF_NORMAL/BF_SKILL is specified, BF_SKILL is used if the trigger is BF_MAGIC/BF_MISC and BF_NORMAL is used if the attack is BF_WEAPON. This way the default when nothing is specified is BF_NORMAL|BF_WEAPON|BF_SHORT|BF_LONG.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10300 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
edf0a6328d
commit
e120c937cc
@ -3,6 +3,15 @@ Date Added
|
|||||||
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
|
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
|
||||||
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.
|
||||||
|
|
||||||
|
2007/04/22
|
||||||
|
* Updated the autospell bonus scripts so you don't have to specify all the
|
||||||
|
attack type criteria. If neither of BF_LONG/BF_SHORT is specified, the
|
||||||
|
spell will trigger on both. If neither of BF_WEAPON/BF_MAGIC/BF_MISC is
|
||||||
|
specified, the spell will trigger on BF_WEAPON, if neither of
|
||||||
|
BF_NORMAL/BF_SKILL is specified, BF_SKILL is used if the trigger is
|
||||||
|
BF_MAGIC/BF_MISC and BF_NORMAL is used if the attack is BF_WEAPON. This way
|
||||||
|
the default when nothing is specified is
|
||||||
|
BF_NORMAL|BF_WEAPON|BF_SHORT|BF_LONG. [Skotlex]
|
||||||
2007/04/21
|
2007/04/21
|
||||||
* Removed the +25% mdef, -50% def effect from Freeze status
|
* Removed the +25% mdef, -50% def effect from Freeze status
|
||||||
* Changed autocast skills, they now only work with normal attacks!
|
* Changed autocast skills, they now only work with normal attacks!
|
||||||
|
@ -204,12 +204,20 @@ bonus5 bAutoSpell,x,y,n,t,i; n/10% chance to cast skill x of level y when
|
|||||||
t: Trigger criteria:
|
t: Trigger criteria:
|
||||||
BF_SHORT: Trigger on melee attack
|
BF_SHORT: Trigger on melee attack
|
||||||
BF_LONG: Trigger on ranged attack
|
BF_LONG: Trigger on ranged attack
|
||||||
|
(When neither is specified,
|
||||||
|
then BF_SHORT+BF_LONG is used.
|
||||||
BF_WEAPON: Trigger on weapon skills
|
BF_WEAPON: Trigger on weapon skills
|
||||||
BF_MAGIC: Trigger on magic skills
|
BF_MAGIC: Trigger on magic skills
|
||||||
BF_MISC: Trigger on misc skills
|
BF_MISC: Trigger on misc skills
|
||||||
(the default for the other
|
(If none is specified, BF_WEAPON is
|
||||||
bAutoSpell modes is
|
used)
|
||||||
BF_WEAPON|BF_LONG|BF_SHORT)
|
BF_NORMAL: Trigger on normal
|
||||||
|
attacks.
|
||||||
|
BF_SKILL: Trigger on skills
|
||||||
|
(When neither is specified,
|
||||||
|
BF_SKILL is used if the type is
|
||||||
|
BF_MISC or BF_MAGIC. BF_NORMAL is
|
||||||
|
used if the type is BF_WEAPON)
|
||||||
|
|
||||||
bonus5 bAutoSpellWhenHit,x,y,n,t,i; n/10% chance to cast skill x of level y when
|
bonus5 bAutoSpellWhenHit,x,y,n,t,i; n/10% chance to cast skill x of level y when
|
||||||
being hit by a direct attack. Target
|
being hit by a direct attack. Target
|
||||||
@ -218,12 +226,8 @@ bonus5 bAutoSpellWhenHit,x,y,n,t,i; n/10% chance to cast skill x of level y when
|
|||||||
i: 1=cast on enemy, not on self
|
i: 1=cast on enemy, not on self
|
||||||
2=use random skill lv in [1..y]
|
2=use random skill lv in [1..y]
|
||||||
3=1+2 (random lv on enemy)
|
3=1+2 (random lv on enemy)
|
||||||
t: Trigger criteria:
|
t: Trigger criteria (see bonus5
|
||||||
BF_SHORT: Trigger on melee attack
|
bAutoSpell)
|
||||||
BF_LONG: Trigger on ranged attack
|
|
||||||
BF_WEAPON: Trigger on weapon skills
|
|
||||||
BF_MAGIC: Trigger on magic skills
|
|
||||||
BF_MISC: Trigger on misc skills
|
|
||||||
|
|
||||||
//---- 2/22 new card effects ----
|
//---- 2/22 new card effects ----
|
||||||
|
|
||||||
|
15
src/map/pc.c
15
src/map/pc.c
@ -1260,6 +1260,13 @@ static int pc_bonus_autospell(struct s_autospell *spell, int max, short id, shor
|
|||||||
spell[i].id = id;
|
spell[i].id = id;
|
||||||
spell[i].lv = lv;
|
spell[i].lv = lv;
|
||||||
spell[i].rate = rate;
|
spell[i].rate = rate;
|
||||||
|
//Auto-update flag value.
|
||||||
|
if (!(flag&BF_RANGEMASK)) flag|=BF_SHORT|BF_LONG; //No range defined? Use both.
|
||||||
|
if (!(flag&BF_WEAPONMASK)) flag|=BF_WEAPON; //No attack type defined? Use weapon.
|
||||||
|
if (!(flag&BF_SKILLMASK)) {
|
||||||
|
if (flag&(BF_MAGIC|BF_MISC)) flag|=BF_SKILL; //These two would never trigger without BF_SKILL
|
||||||
|
if (flag&BF_WEAPON) flag|=BF_NORMAL; //By default autospells should only trigger on normal weapon attacks.
|
||||||
|
}
|
||||||
spell[i].flag|= flag;
|
spell[i].flag|= flag;
|
||||||
spell[i].card_id = card_id;
|
spell[i].card_id = card_id;
|
||||||
return 1;
|
return 1;
|
||||||
@ -2329,11 +2336,11 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
|
|||||||
break;
|
break;
|
||||||
case SP_AUTOSPELL:
|
case SP_AUTOSPELL:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
pc_bonus_autospell(sd->autospell, MAX_PC_BONUS, type2, type3, val, BF_WEAPON|BF_SHORT|BF_LONG|BF_NORMAL, current_equip_card_id);
|
pc_bonus_autospell(sd->autospell, MAX_PC_BONUS, type2, type3, val, 0, current_equip_card_id);
|
||||||
break;
|
break;
|
||||||
case SP_AUTOSPELL_WHENHIT:
|
case SP_AUTOSPELL_WHENHIT:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
pc_bonus_autospell(sd->autospell2, MAX_PC_BONUS, type2, type3, val, BF_WEAPON|BF_SHORT|BF_LONG|BF_NORMAL, current_equip_card_id);
|
pc_bonus_autospell(sd->autospell2, MAX_PC_BONUS, type2, type3, val, 0, current_equip_card_id);
|
||||||
break;
|
break;
|
||||||
case SP_HP_LOSS_RATE:
|
case SP_HP_LOSS_RATE:
|
||||||
if(sd->state.lr_flag != 2) {
|
if(sd->state.lr_flag != 2) {
|
||||||
@ -2422,12 +2429,12 @@ int pc_bonus4(struct map_session_data *sd,int type,int type2,int type3,int type4
|
|||||||
switch(type){
|
switch(type){
|
||||||
case SP_AUTOSPELL:
|
case SP_AUTOSPELL:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
pc_bonus_autospell(sd->autospell, MAX_PC_BONUS, (val&1?type2:-type2), (val&2?-type3:type3), type4, BF_WEAPON|BF_SHORT|BF_LONG|BF_NORMAL, current_equip_card_id);
|
pc_bonus_autospell(sd->autospell, MAX_PC_BONUS, (val&1?type2:-type2), (val&2?-type3:type3), type4, 0, current_equip_card_id);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SP_AUTOSPELL_WHENHIT:
|
case SP_AUTOSPELL_WHENHIT:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
pc_bonus_autospell(sd->autospell2, MAX_PC_BONUS, (val&1?type2:-type2), (val&2?-type3:type3), type4, BF_WEAPON|BF_SHORT|BF_LONG|BF_NORMAL, current_equip_card_id);
|
pc_bonus_autospell(sd->autospell2, MAX_PC_BONUS, (val&1?type2:-type2), (val&2?-type3:type3), type4, 0, current_equip_card_id);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if(battle_config.error_log)
|
if(battle_config.error_log)
|
||||||
|
@ -6560,7 +6560,7 @@ BUILDIN_FUNC(statusup2)
|
|||||||
/// bonus2 <bonus type>,<val1>,<val2>
|
/// bonus2 <bonus type>,<val1>,<val2>
|
||||||
/// bonus3 <bonus type>,<val1>,<val2>,<val3>
|
/// bonus3 <bonus type>,<val1>,<val2>,<val3>
|
||||||
/// bonus4 <bonus type>,<val1>,<val2>,<val3>,<val4>
|
/// bonus4 <bonus type>,<val1>,<val2>,<val3>,<val4>
|
||||||
/// bonus4 <bonus type>,<val1>,<val2>,<val3>,<val4>,<val5>
|
/// bonus5 <bonus type>,<val1>,<val2>,<val3>,<val4>,<val5>
|
||||||
BUILDIN_FUNC(bonus)
|
BUILDIN_FUNC(bonus)
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user