- Updated HLIF_CHANGE to work as explained by Tharis -> It now adds 30*lv vit and 20*lv int, is dispelled on warp, and can-act delay is 5+5*lv minutes. Hp/Sp is no longer set to 10 after a forced expiration.
- Added instant skill unblock in skill_[merc/pc]block_start when the duration passed is less than 1. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8547 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
0f8fb18252
commit
87d78eb976
@ -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/30
|
2006/08/30
|
||||||
|
* Updated HLIF_CHANGE to work as explained by Tharis -> It now adds 30*lv
|
||||||
|
vit and 20*lv int, is dispelled on warp, and can-act delay is 5+5*lv
|
||||||
|
minutes. Hp/Sp is no longer set to 10 after a forced expiration. [Skotlex]
|
||||||
* Fixed up char-sql compilation. [Skotlex]
|
* Fixed up char-sql compilation. [Skotlex]
|
||||||
* Added a message to @clearweather stating when climate changes will
|
* Added a message to @clearweather stating when climate changes will
|
||||||
dispel. [Skotlex]
|
dispel. [Skotlex]
|
||||||
|
@ -962,7 +962,7 @@
|
|||||||
//-- HLIF_AVOID
|
//-- HLIF_AVOID
|
||||||
8002,0,0,0,40000:35000:30000:25000:20000,40000:45000:50000:55000:60000
|
8002,0,0,0,40000:35000:30000:25000:20000,40000:45000:50000:55000:60000
|
||||||
//-- HLIF_CHANGE
|
//-- HLIF_CHANGE
|
||||||
8004,0,0,0,60000:180000:300000,600000:900000:1200000
|
8004,0,600000:900000:1200000,0,60000:180000:300000,0
|
||||||
//-- HAMI_CASTLE
|
//-- HAMI_CASTLE
|
||||||
8005,0,0,0,0,60000:70000:80000:90000:129000
|
8005,0,0,0,0,60000:70000:80000:90000:129000
|
||||||
//-- HAMI_DEFENCE
|
//-- HAMI_DEFENCE
|
||||||
|
@ -10738,6 +10738,11 @@ int skill_blockpc_start(struct map_session_data *sd, int skillid, int tick)
|
|||||||
if (skillid < 1 || skillid > MAX_SKILL)
|
if (skillid < 1 || skillid > MAX_SKILL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
if (tick < 1) {
|
||||||
|
sd->blockskill[skillid] = 0;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
sd->blockskill[skillid] = 1;
|
sd->blockskill[skillid] = 1;
|
||||||
return add_timer(gettick()+tick,skill_blockpc_end,sd->bl.id,skillid);
|
return add_timer(gettick()+tick,skill_blockpc_end,sd->bl.id,skillid);
|
||||||
}
|
}
|
||||||
@ -10763,6 +10768,10 @@ int skill_blockmerc_start(struct homun_data *hd, int skillid, int tick) //[orn]
|
|||||||
if (skillid < 1 || skillid > MAX_SKILL)
|
if (skillid < 1 || skillid > MAX_SKILL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
if (tick < 1) {
|
||||||
|
hd->blockskill[skillid] = 0;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
hd->blockskill[skillid] = 1;
|
hd->blockskill[skillid] = 1;
|
||||||
return add_timer(gettick()+tick,skill_blockmerc_end,hd->bl.id,skillid);
|
return add_timer(gettick()+tick,skill_blockmerc_end,hd->bl.id,skillid);
|
||||||
}
|
}
|
||||||
|
@ -379,7 +379,7 @@ void initChangeTables(void) {
|
|||||||
add_sc(SA_ELEMENTWIND, SC_ELEMENTALCHANGE);
|
add_sc(SA_ELEMENTWIND, SC_ELEMENTALCHANGE);
|
||||||
|
|
||||||
set_sc(HLIF_AVOID, SC_AVOID, SI_BLANK, SCB_SPEED);
|
set_sc(HLIF_AVOID, SC_AVOID, SI_BLANK, SCB_SPEED);
|
||||||
set_sc(HLIF_CHANGE, SC_CHANGE, SI_BLANK, SCB_MAXHP|SCB_MAXSP);
|
set_sc(HLIF_CHANGE, SC_CHANGE, SI_BLANK, SCB_VIT|SCB_INT);
|
||||||
set_sc(HFLI_FLEET, SC_FLEET, SI_BLANK, SCB_ASPD|SCB_BATK|SCB_WATK);
|
set_sc(HFLI_FLEET, SC_FLEET, SI_BLANK, SCB_ASPD|SCB_BATK|SCB_WATK);
|
||||||
set_sc(HFLI_SPEED, SC_SPEED, SI_BLANK, SCB_FLEE); //[orn]
|
set_sc(HFLI_SPEED, SC_SPEED, SI_BLANK, SCB_FLEE); //[orn]
|
||||||
set_sc(HAMI_DEFENCE, SC_DEFENCE, SI_BLANK, SCB_DEF); //[orn]
|
set_sc(HAMI_DEFENCE, SC_DEFENCE, SI_BLANK, SCB_DEF); //[orn]
|
||||||
@ -3126,6 +3126,8 @@ static unsigned short status_calc_vit(struct block_list *bl, struct status_chang
|
|||||||
vit += sc->data[SC_INCVIT].val1;
|
vit += sc->data[SC_INCVIT].val1;
|
||||||
if(sc->data[SC_VITFOOD].timer!=-1)
|
if(sc->data[SC_VITFOOD].timer!=-1)
|
||||||
vit += sc->data[SC_VITFOOD].val1;
|
vit += sc->data[SC_VITFOOD].val1;
|
||||||
|
if(sc->data[SC_CHANGE].timer!=-1)
|
||||||
|
vit += sc->data[SC_CHANGE].val2;
|
||||||
if(sc->data[SC_GUILDAURA].timer != -1 && sc->data[SC_GUILDAURA].val3&0xFFFF)
|
if(sc->data[SC_GUILDAURA].timer != -1 && sc->data[SC_GUILDAURA].val3&0xFFFF)
|
||||||
vit += sc->data[SC_GUILDAURA].val3&0xFFFF;
|
vit += sc->data[SC_GUILDAURA].val3&0xFFFF;
|
||||||
if(sc->data[SC_TRUESIGHT].timer!=-1)
|
if(sc->data[SC_TRUESIGHT].timer!=-1)
|
||||||
@ -3153,6 +3155,8 @@ static unsigned short status_calc_int(struct block_list *bl, struct status_chang
|
|||||||
int_ += sc->data[SC_INCINT].val1;
|
int_ += sc->data[SC_INCINT].val1;
|
||||||
if(sc->data[SC_INTFOOD].timer!=-1)
|
if(sc->data[SC_INTFOOD].timer!=-1)
|
||||||
int_ += sc->data[SC_INTFOOD].val1;
|
int_ += sc->data[SC_INTFOOD].val1;
|
||||||
|
if(sc->data[SC_CHANGE].timer!=-1)
|
||||||
|
int_ += sc->data[SC_CHANGE].val3;
|
||||||
if(sc->data[SC_BATTLEORDERS].timer!=-1)
|
if(sc->data[SC_BATTLEORDERS].timer!=-1)
|
||||||
int_ += 5;
|
int_ += 5;
|
||||||
if(sc->data[SC_TRUESIGHT].timer!=-1)
|
if(sc->data[SC_TRUESIGHT].timer!=-1)
|
||||||
@ -3744,8 +3748,6 @@ static unsigned int status_calc_maxhp(struct block_list *bl, struct status_chang
|
|||||||
if(!sc || !sc->count)
|
if(!sc || !sc->count)
|
||||||
return cap_value(maxhp,1,UINT_MAX);
|
return cap_value(maxhp,1,UINT_MAX);
|
||||||
|
|
||||||
if(sc->data[SC_CHANGE].timer!=-1)
|
|
||||||
maxhp = sc->data[SC_CHANGE].val3;
|
|
||||||
if(sc->data[SC_INCMHPRATE].timer!=-1)
|
if(sc->data[SC_INCMHPRATE].timer!=-1)
|
||||||
maxhp += maxhp * sc->data[SC_INCMHPRATE].val1/100;
|
maxhp += maxhp * sc->data[SC_INCMHPRATE].val1/100;
|
||||||
if(sc->data[SC_APPLEIDUN].timer!=-1)
|
if(sc->data[SC_APPLEIDUN].timer!=-1)
|
||||||
@ -3763,8 +3765,6 @@ static unsigned int status_calc_maxsp(struct block_list *bl, struct status_chang
|
|||||||
if(!sc || !sc->count)
|
if(!sc || !sc->count)
|
||||||
return cap_value(maxsp,1,UINT_MAX);
|
return cap_value(maxsp,1,UINT_MAX);
|
||||||
|
|
||||||
if(sc->data[SC_CHANGE].timer!=-1)
|
|
||||||
maxsp = sc->data[SC_CHANGE].val2;
|
|
||||||
if(sc->data[SC_INCMSPRATE].timer!=-1)
|
if(sc->data[SC_INCMSPRATE].timer!=-1)
|
||||||
maxsp += maxsp * sc->data[SC_INCMSPRATE].val1/100;
|
maxsp += maxsp * sc->data[SC_INCMSPRATE].val1/100;
|
||||||
if(sc->data[SC_SERVICE4U].timer!=-1)
|
if(sc->data[SC_SERVICE4U].timer!=-1)
|
||||||
@ -5554,12 +5554,8 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
|
|||||||
val2=(val1+1)/2; // number of hits blocked
|
val2=(val1+1)/2; // number of hits blocked
|
||||||
break;
|
break;
|
||||||
case SC_CHANGE:
|
case SC_CHANGE:
|
||||||
{
|
val2= 30*val1; //Vit increase
|
||||||
struct status_data *status = status_get_base_status(bl);
|
val3= 20*val1; //Int increase
|
||||||
if (!status) return 0;
|
|
||||||
val2= status->max_hp; //Base Max HP
|
|
||||||
val3= status->max_sp; //Base Max SP
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case SC_ARMOR_ELEMENT:
|
case SC_ARMOR_ELEMENT:
|
||||||
break; // It just change the armor element of the player (used by battle_attr_fix)
|
break; // It just change the armor element of the player (used by battle_attr_fix)
|
||||||
@ -6132,7 +6128,9 @@ int status_change_end( struct block_list* bl , int type,int tid )
|
|||||||
}
|
}
|
||||||
break; //guess hes not in jail :P
|
break; //guess hes not in jail :P
|
||||||
case SC_CHANGE:
|
case SC_CHANGE:
|
||||||
// "lose almost all her HP and SP"
|
if (tid == -1)
|
||||||
|
break;
|
||||||
|
// "lose almost all her HP and SP" on natural expiration.
|
||||||
status_set_hp(bl, 10, 0);
|
status_set_hp(bl, 10, 0);
|
||||||
status_set_sp(bl, 10, 0);
|
status_set_sp(bl, 10, 0);
|
||||||
break;
|
break;
|
||||||
|
@ -1529,6 +1529,8 @@ int unit_remove_map(struct block_list *bl, int clrtype) {
|
|||||||
status_change_end(bl, SC_CHASEWALK, -1);
|
status_change_end(bl, SC_CHASEWALK, -1);
|
||||||
if (sc->data[SC_GOSPEL].timer != -1 && sc->data[SC_GOSPEL].val4 == BCT_SELF)
|
if (sc->data[SC_GOSPEL].timer != -1 && sc->data[SC_GOSPEL].val4 == BCT_SELF)
|
||||||
status_change_end(bl, SC_GOSPEL, -1);
|
status_change_end(bl, SC_GOSPEL, -1);
|
||||||
|
if (sc->data[SC_CHANGE].timer!=-1)
|
||||||
|
status_change_end(bl, SC_CHANGE, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bl->type&BL_CHAR) {
|
if (bl->type&BL_CHAR) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user