- Added SCB_DYE which marks which status-changes need a forced cloth dye change to 0 due to sprite issues. Currently only NJ_BUNSINJYUTSU's status uses it.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8293 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
9c6d56be63
commit
baee95996c
@ -4,6 +4,9 @@ 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/15
|
2006/08/15
|
||||||
|
* Added SCB_DYE which marks which status-changes need a forced cloth dye
|
||||||
|
change to 0 due to sprite issues. Currently only NJ_BUNSINJYUTSU's status
|
||||||
|
uses it. [Skotlex]
|
||||||
* Asura Strike now moves you to the target on fail always (unless the
|
* Asura Strike now moves you to the target on fail always (unless the
|
||||||
target does not exists or is in another map or there's a obstacle on the
|
target does not exists or is in another map or there's a obstacle on the
|
||||||
way) [Skotlex]
|
way) [Skotlex]
|
||||||
|
@ -357,7 +357,7 @@ void initChangeTables(void) {
|
|||||||
add_sc(NJ_HYOUSYOURAKU, SC_FREEZE);
|
add_sc(NJ_HYOUSYOURAKU, SC_FREEZE);
|
||||||
set_sc(NJ_NEN, SC_NEN, SI_NEN, SCB_STR|SCB_INT);
|
set_sc(NJ_NEN, SC_NEN, SI_NEN, SCB_STR|SCB_INT);
|
||||||
set_sc(NJ_UTSUSEMI, SC_UTSUSEMI, SI_UTSUSEMI,SCB_NONE);
|
set_sc(NJ_UTSUSEMI, SC_UTSUSEMI, SI_UTSUSEMI,SCB_NONE);
|
||||||
set_sc(NJ_BUNSINJYUTSU, SC_BUNSINJYUTSU, SI_BUNSINJYUTSU, SCB_NONE);
|
set_sc(NJ_BUNSINJYUTSU, SC_BUNSINJYUTSU, SI_BUNSINJYUTSU, SCB_DYE);
|
||||||
set_sc(CR_SHRINK, SC_SHRINK, SI_SHRINK, SCB_NONE);
|
set_sc(CR_SHRINK, SC_SHRINK, SI_SHRINK, SCB_NONE);
|
||||||
set_sc(RG_CLOSECONFINE, SC_CLOSECONFINE2, SI_CLOSECONFINE2, SCB_NONE);
|
set_sc(RG_CLOSECONFINE, SC_CLOSECONFINE2, SI_CLOSECONFINE2, SCB_NONE);
|
||||||
set_sc(RG_CLOSECONFINE, SC_CLOSECONFINE, SI_CLOSECONFINE, SCB_FLEE);
|
set_sc(RG_CLOSECONFINE, SC_CLOSECONFINE, SI_CLOSECONFINE, SCB_FLEE);
|
||||||
@ -4454,13 +4454,6 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
|
|||||||
}
|
}
|
||||||
//Before overlapping fail, one must check for status cured.
|
//Before overlapping fail, one must check for status cured.
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SC_BUNSINJYUTSU: //[blackhole89]
|
|
||||||
if(sd)
|
|
||||||
{
|
|
||||||
val4=sd->status.clothes_color;
|
|
||||||
pc_changelook(sd,LOOK_CLOTHES_COLOR,0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SC_BLESSING:
|
case SC_BLESSING:
|
||||||
if ((!undead_flag && status->race!=RC_DEMON) || bl->type == BL_PC) {
|
if ((!undead_flag && status->race!=RC_DEMON) || bl->type == BL_PC) {
|
||||||
if (sc->data[SC_CURSE].timer!=-1)
|
if (sc->data[SC_CURSE].timer!=-1)
|
||||||
@ -5590,6 +5583,16 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
|
|||||||
if(opt_flag)
|
if(opt_flag)
|
||||||
clif_changeoption(bl);
|
clif_changeoption(bl);
|
||||||
|
|
||||||
|
if (calc_flag&SCB_DYE)
|
||||||
|
{ //Reset DYE color
|
||||||
|
if (vd && vd->cloth_color)
|
||||||
|
{
|
||||||
|
val4 = vd->cloth_color;
|
||||||
|
clif_changelook(bl,LOOK_CLOTHES_COLOR,0);
|
||||||
|
}
|
||||||
|
calc_flag&=~SCB_DYE;
|
||||||
|
}
|
||||||
|
|
||||||
if (vd && pcdb_checkid(vd->class_)) //Only for players sprites, client crashes if they receive this for a mob o.O [Skotlex]
|
if (vd && pcdb_checkid(vd->class_)) //Only for players sprites, client crashes if they receive this for a mob o.O [Skotlex]
|
||||||
clif_status_change(bl,StatusIconChangeTable[type],1);
|
clif_status_change(bl,StatusIconChangeTable[type],1);
|
||||||
else if (sd) //Send packet to self otherwise (disguised player?)
|
else if (sd) //Send packet to self otherwise (disguised player?)
|
||||||
@ -5729,10 +5732,6 @@ int status_change_end( struct block_list* bl , int type,int tid )
|
|||||||
vd = status_get_viewdata(bl);
|
vd = status_get_viewdata(bl);
|
||||||
calc_flag = StatusChangeFlagTable[type];
|
calc_flag = StatusChangeFlagTable[type];
|
||||||
switch(type){
|
switch(type){
|
||||||
case SC_BUNSINJYUTSU: //[blackhole89]
|
|
||||||
{
|
|
||||||
if(sd) pc_changelook(sd,LOOK_CLOTHES_COLOR,sc->data[type].val4);
|
|
||||||
}
|
|
||||||
case SC_WEDDING:
|
case SC_WEDDING:
|
||||||
case SC_XMAS:
|
case SC_XMAS:
|
||||||
if (!vd) return 0;
|
if (!vd) return 0;
|
||||||
@ -6082,6 +6081,13 @@ int status_change_end( struct block_list* bl , int type,int tid )
|
|||||||
opt_flag = 0;
|
opt_flag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (calc_flag&SCB_DYE)
|
||||||
|
{ //Restore DYE color
|
||||||
|
if (vd && !vd->cloth_color && sc->data[type].val4)
|
||||||
|
clif_changelook(bl,LOOK_CLOTHES_COLOR,sc->data[type].val4);
|
||||||
|
calc_flag&=~SCB_DYE;
|
||||||
|
}
|
||||||
|
|
||||||
//On Aegis, when turning off a status change, first goes the sc packet, then the option packet.
|
//On Aegis, when turning off a status change, first goes the sc packet, then the option packet.
|
||||||
if (vd && pcdb_checkid(vd->class_))
|
if (vd && pcdb_checkid(vd->class_))
|
||||||
clif_status_change(bl,StatusIconChangeTable[type],0);
|
clif_status_change(bl,StatusIconChangeTable[type],0);
|
||||||
|
@ -514,8 +514,10 @@ enum {
|
|||||||
#define SCB_SIZE 0x04000000
|
#define SCB_SIZE 0x04000000
|
||||||
#define SCB_RACE 0x08000000
|
#define SCB_RACE 0x08000000
|
||||||
#define SCB_RANGE 0x10000000
|
#define SCB_RANGE 0x10000000
|
||||||
|
//SCB_DYE means the sc should force cloth-dye change to 0 to avoid client crashes.
|
||||||
|
#define SCB_DYE 0x40000000
|
||||||
#define SCB_PC 0x80000000
|
#define SCB_PC 0x80000000
|
||||||
#define SCB_ALL 0x7FFFFFFF
|
#define SCB_ALL 0x3FFFFFFF
|
||||||
|
|
||||||
//Define to determine who gets HP/SP consumed on doing skills/etc. [Skotlex]
|
//Define to determine who gets HP/SP consumed on doing skills/etc. [Skotlex]
|
||||||
#define BL_CONSUME (BL_PC|BL_HOM)
|
#define BL_CONSUME (BL_PC|BL_HOM)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user