- Corrected Cloaking level 1-2 not letting you move across walls.
- updated cloaking code so that when you set "enable cloaking without walls", the code will consider you as "always next to a wall", thus you get the wall-speed bonus always. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7778 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
a0ab1d07f5
commit
de6883c0bb
@ -4,6 +4,10 @@ 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/07/20
|
2006/07/20
|
||||||
|
* Corrected Cloaking level 1-2 not letting you move across walls. [Skotlex]
|
||||||
|
* updated cloaking code so that when you set "enable cloaking without
|
||||||
|
walls", the code will consider you as "always next to a wall", thus you get
|
||||||
|
the wall-speed bonus always. [Skotlex]
|
||||||
* Applied the fix to homunculus name saving... [Skotlex]
|
* Applied the fix to homunculus name saving... [Skotlex]
|
||||||
* Added battle config settings agi_penalty_target and vit_penalty_target,
|
* Added battle config settings agi_penalty_target and vit_penalty_target,
|
||||||
they define which object types will get vit/flee reductions when
|
they define which object types will get vit/flee reductions when
|
||||||
|
@ -138,17 +138,17 @@ traps_setting: 2
|
|||||||
// (Makes it so that Storm Gust/Lord of Vermillion/etc when casted next to a wall, won't hit on the other side)
|
// (Makes it so that Storm Gust/Lord of Vermillion/etc when casted next to a wall, won't hit on the other side)
|
||||||
skill_wall_check: yes
|
skill_wall_check: yes
|
||||||
|
|
||||||
// When a player is cloaking, Whether the wall is checked or not. (Note 1)
|
// When cloaking, Whether the wall is checked or not. (Note 1)
|
||||||
// Note: When set to no players can always cloak away from walls and move around
|
// Note: When the skill does not checks for walls, you will always be considered
|
||||||
// freely even if the skill level is below 3.
|
// as if you had a wall-next to you (you always get the wall-based speed).
|
||||||
// no or 0 = doesn't check for walls (you can cloak without walls)
|
// When "cloaking lasts forever" is set, it means attacking or using skills
|
||||||
|
// won't uncloak you, but being hit does.
|
||||||
|
// 0 = doesn't check for walls
|
||||||
// 1 = it checks for walls
|
// 1 = it checks for walls
|
||||||
// 2 = it doesn't checks for walls + your cloaking lasts forever
|
// 2 = it doesn't checks for walls + your cloaking lasts forever
|
||||||
// 3 = it checks for walls + your cloaking lasts forever (it is not cancelled on attack)
|
// 3 = it checks for walls + your cloaking lasts forever
|
||||||
player_cloak_check_type: 1
|
player_cloak_check_type: 1
|
||||||
|
monster_cloak_check_type: 0
|
||||||
// When a monster is cloaking, Whether the wall is checked or not. (Note 1)
|
|
||||||
monster_cloak_check_type: no
|
|
||||||
|
|
||||||
// Can't place unlimited land skills at the same time (Note 4)
|
// Can't place unlimited land skills at the same time (Note 4)
|
||||||
land_skill_limit: 1
|
land_skill_limit: 1
|
||||||
|
@ -2817,7 +2817,7 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sc && sc->data[SC_CLOAKING].timer != -1 && !(sc->data[SC_CLOAKING].val4&1))
|
if (sc && sc->data[SC_CLOAKING].timer != -1 && !(sc->data[SC_CLOAKING].val4&2))
|
||||||
status_change_end(src,SC_CLOAKING,-1);
|
status_change_end(src,SC_CLOAKING,-1);
|
||||||
|
|
||||||
//Check for counter attacks that block your attack. [Skotlex]
|
//Check for counter attacks that block your attack. [Skotlex]
|
||||||
|
@ -9490,16 +9490,16 @@ int skill_check_cloaking(struct block_list *bl, struct status_change *sc)
|
|||||||
if (sc->data[SC_CLOAKING].timer != -1) {
|
if (sc->data[SC_CLOAKING].timer != -1) {
|
||||||
if (sc->data[SC_CLOAKING].val1 < 3) //End cloaking.
|
if (sc->data[SC_CLOAKING].val1 < 3) //End cloaking.
|
||||||
status_change_end(bl, SC_CLOAKING, -1);
|
status_change_end(bl, SC_CLOAKING, -1);
|
||||||
else if(sc->data[SC_CLOAKING].val4&2)
|
else if(sc->data[SC_CLOAKING].val4&1)
|
||||||
{ //Remove wall bonus
|
{ //Remove wall bonus
|
||||||
sc->data[SC_CLOAKING].val4&=~2;
|
sc->data[SC_CLOAKING].val4&=~1;
|
||||||
status_calc_bl(bl,SCB_SPEED);
|
status_calc_bl(bl,SCB_SPEED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(sc->data[SC_CLOAKING].timer != -1 && !(sc->data[SC_CLOAKING].val4&2))
|
else if(sc->data[SC_CLOAKING].timer != -1 && !(sc->data[SC_CLOAKING].val4&1))
|
||||||
{ //Add wall speed bonus
|
{ //Add wall speed bonus
|
||||||
sc->data[SC_CLOAKING].val4|=2;
|
sc->data[SC_CLOAKING].val4|=1;
|
||||||
status_calc_bl(bl,SCB_SPEED);
|
status_calc_bl(bl,SCB_SPEED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3473,7 +3473,7 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha
|
|||||||
}
|
}
|
||||||
if(sc->data[SC_CLOAKING].timer!=-1)
|
if(sc->data[SC_CLOAKING].timer!=-1)
|
||||||
speed = speed * 100 /(
|
speed = speed * 100 /(
|
||||||
(sc->data[SC_CLOAKING].val4&2?25:0) //Wall speed bonus
|
(sc->data[SC_CLOAKING].val4&1?25:0) //Wall speed bonus
|
||||||
+sc->data[SC_CLOAKING].val3); //Normal adjustment bonus.
|
+sc->data[SC_CLOAKING].val3); //Normal adjustment bonus.
|
||||||
|
|
||||||
if(sc->data[SC_LONGING].timer!=-1)
|
if(sc->data[SC_LONGING].timer!=-1)
|
||||||
@ -4904,14 +4904,12 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
|
|||||||
val3 *= -1; //Substract the Dodge speed bonus.
|
val3 *= -1; //Substract the Dodge speed bonus.
|
||||||
val3+= 70+val1*3; //Speed adjustment without a wall.
|
val3+= 70+val1*3; //Speed adjustment without a wall.
|
||||||
//With a wall, it is val3 +25.
|
//With a wall, it is val3 +25.
|
||||||
//val4&2 signals the presence of a wall.
|
//val4&1 signals the presence of a wall.
|
||||||
if (!val4)
|
//val4&2 signals eternal cloaking (not cancelled on attack) [Skotlex]
|
||||||
{ //val4&1 signals eternal cloaking (not cancelled on attack) [Skotlex]
|
if (bl->type == BL_PC) //Standard cloaking.
|
||||||
if (bl->type == BL_PC) //Standard cloaking.
|
val4 |= battle_config.pc_cloak_check_type&3;
|
||||||
val4 = battle_config.pc_cloak_check_type&2?1:0;
|
else
|
||||||
else
|
val4 |= battle_config.monster_cloak_check_type&3;
|
||||||
val4 = battle_config.monster_cloak_check_type&2?1:0;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case SC_SIGHT: /* サイト/ルアフ */
|
case SC_SIGHT: /* サイト/ルアフ */
|
||||||
case SC_RUWACH:
|
case SC_RUWACH:
|
||||||
|
@ -668,7 +668,8 @@ int unit_can_move(struct block_list *bl)
|
|||||||
sc->data[SC_STOP].timer != -1 ||
|
sc->data[SC_STOP].timer != -1 ||
|
||||||
sc->data[SC_CLOSECONFINE].timer != -1 ||
|
sc->data[SC_CLOSECONFINE].timer != -1 ||
|
||||||
sc->data[SC_CLOSECONFINE2].timer != -1 ||
|
sc->data[SC_CLOSECONFINE2].timer != -1 ||
|
||||||
(sc->data[SC_CLOAKING].timer != -1 && sc->data[SC_CLOAKING].val1 < 3)
|
(sc->data[SC_CLOAKING].timer != -1 && //Need wall at level 1-2
|
||||||
|
sc->data[SC_CLOAKING].val1 < 3 && !(sc->data[SC_CLOAKING].val4&1))
|
||||||
))
|
))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -933,7 +934,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, int skill_num, int
|
|||||||
ud->skilllv = skill_lv;
|
ud->skilllv = skill_lv;
|
||||||
|
|
||||||
if(sc && sc->data[SC_CLOAKING].timer != -1 &&
|
if(sc && sc->data[SC_CLOAKING].timer != -1 &&
|
||||||
!(sc->data[SC_CLOAKING].val4&1) && skill_num != AS_CLOAKING)
|
!(sc->data[SC_CLOAKING].val4&2) && skill_num != AS_CLOAKING)
|
||||||
status_change_end(src,SC_CLOAKING,-1);
|
status_change_end(src,SC_CLOAKING,-1);
|
||||||
|
|
||||||
if(casttime > 0) {
|
if(casttime > 0) {
|
||||||
@ -1026,7 +1027,7 @@ int unit_skilluse_pos2( struct block_list *src, int skill_x, int skill_y, int sk
|
|||||||
ud->skilltarget = 0;
|
ud->skilltarget = 0;
|
||||||
|
|
||||||
if (sc && sc->data[SC_CLOAKING].timer != -1 &&
|
if (sc && sc->data[SC_CLOAKING].timer != -1 &&
|
||||||
!(sc->data[SC_CLOAKING].val4&1))
|
!(sc->data[SC_CLOAKING].val4&2))
|
||||||
status_change_end(src,SC_CLOAKING,-1);
|
status_change_end(src,SC_CLOAKING,-1);
|
||||||
|
|
||||||
if(casttime > 0) {
|
if(casttime > 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user