- Modified Weapon Refine - should only +1 every time.
- Updated Berserk, Chase Walk, Slim Pitcher - Added skill_range_leniency * Added check for clif.c in case the server didn't realise we've died git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@433 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
05336cfde0
commit
58a9ab345e
@ -1,4 +1,11 @@
|
|||||||
Date Added
|
Date Added
|
||||||
|
12/2
|
||||||
|
* Skill Updates [celest]
|
||||||
|
- Modified Weapon Refine - should only +1 every time.
|
||||||
|
- Updated Berserk, Chase Walk, Slim Pitcher
|
||||||
|
- Added skill_range_leniency
|
||||||
|
* Added check for clif.c in case the server didn't realise we've died [celest]
|
||||||
|
|
||||||
12/1
|
12/1
|
||||||
- Make it build against gcc 2.95 [MouseJstr]
|
- Make it build against gcc 2.95 [MouseJstr]
|
||||||
- Changed #define MAX_PET_DB to 300, it's easier for people adding new pets like this. [Nas]
|
- Changed #define MAX_PET_DB to 300, it's easier for people adding new pets like this. [Nas]
|
||||||
|
@ -746,5 +746,10 @@ mobs_level_up: no
|
|||||||
// Use kRO new steal formula?
|
// Use kRO new steal formula?
|
||||||
skill_steal_type: yes
|
skill_steal_type: yes
|
||||||
|
|
||||||
|
// In some cases when moving to cast a skill the exe will a send a UseSkill packet
|
||||||
|
// before the server has moved us to the correct position, causing it to fail.
|
||||||
|
// Setting this at 1 would be enough.
|
||||||
|
skill_range_leniency: 1
|
||||||
|
|
||||||
import: conf/import/battle_conf.txt
|
import: conf/import/battle_conf.txt
|
||||||
|
|
||||||
|
@ -5,6 +5,9 @@
|
|||||||
Ayathoya items == Added but no effect ( all are "ect" itens)
|
Ayathoya items == Added but no effect ( all are "ect" itens)
|
||||||
Skill databases == celest working on them i believe.
|
Skill databases == celest working on them i believe.
|
||||||
|
|
||||||
|
|
||||||
|
12/2 * Updated skill tree prerequisites for the new kRO skills [celest]
|
||||||
|
|
||||||
12/1 * Updated Poison React, Soul Change, Soul Burn [celest]
|
12/1 * Updated Poison React, Soul Change, Soul Burn [celest]
|
||||||
|
|
||||||
11/30 * Corrected bUnbreakable value in const.txt [celest]
|
11/30 * Corrected bUnbreakable value in const.txt [celest]
|
||||||
|
@ -271,7 +271,7 @@
|
|||||||
|
|
||||||
475,0,0,300000,0 //ST_PRESERVE##
|
475,0,0,300000,0 //ST_PRESERVE##
|
||||||
476,1000,1000,75000:90000:105000:120000:135000,0 //ST_FULLSTRIP##
|
476,1000,1000,75000:90000:105000:120000:135000,0 //ST_FULLSTRIP##
|
||||||
479,2000,0,60000:120000:180000:240000:300000,0 //CR_FULLPROTECTION##
|
479,2000,0,120000:240000:360000:480000:600000,0 //CR_FULLPROTECTION##
|
||||||
|
|
||||||
10010,100,60000,0 //GD_BATTLEORDER##
|
10010,100,60000,0 //GD_BATTLEORDER##
|
||||||
10011,100,60000,0 //GD_REGENERATION##
|
10011,100,60000,0 //GD_REGENERATION##
|
||||||
|
@ -12,6 +12,6 @@
|
|||||||
27,12
|
27,12
|
||||||
87,12
|
87,12
|
||||||
150,12
|
150,12
|
||||||
|
214,12
|
||||||
361,12
|
361,12
|
||||||
362,12
|
362,12
|
||||||
389,12
|
|
@ -837,7 +837,7 @@
|
|||||||
4011,386,3,97,3,106,1,107,5,0,0,0,0//WS_CREATENUGGET #基本スキル#
|
4011,386,3,97,3,106,1,107,5,0,0,0,0//WS_CREATENUGGET #基本スキル#
|
||||||
4011,387,1,39,5,153,1,154,1,105,1,0,0//WS_CARTBOOST #基本スキル#
|
4011,387,1,39,5,153,1,154,1,105,1,0,0//WS_CARTBOOST #基本スキル#
|
||||||
4011,388,1,107,10,112,3,0,0,0,0,0,0//WS_SYSTEMCREATE #基本スキル#
|
4011,388,1,107,10,112,3,0,0,0,0,0,0//WS_SYSTEMCREATE #基本スキル#
|
||||||
4011,477,10,109,5,94,5,96,3,97,2,0,0//WS_WEAPONREFINE
|
4011,477,10,107,10,0,0,0,0,0,0,0,0//WS_WEAPONREFINE
|
||||||
//Sniper
|
//Sniper
|
||||||
4012,1,9,0,0,0,0,0,0,0,0,0,0//NV_BASIC #基本スキル#
|
4012,1,9,0,0,0,0,0,0,0,0,0,0//NV_BASIC #基本スキル#
|
||||||
4012,142,1,0,0,0,0,0,0,0,0,0,0//NV_FIRSTAID #応急手当#
|
4012,142,1,0,0,0,0,0,0,0,0,0,0//NV_FIRSTAID #応急手当#
|
||||||
@ -1081,8 +1081,8 @@
|
|||||||
4018,389,5,51,5,213,3,0,0,0,0,0,0//ST_CHASEWALK
|
4018,389,5,51,5,213,3,0,0,0,0,0,0//ST_CHASEWALK
|
||||||
4018,390,5,215,1,0,0,0,0,0,0,0,0//ST_REJECTSWORD
|
4018,390,5,215,1,0,0,0,0,0,0,0,0//ST_REJECTSWORD
|
||||||
4018,391,5,215,1,0,0,0,0,0,0,0,0//ST_STEALBACKPACK
|
4018,391,5,215,1,0,0,0,0,0,0,0,0//ST_STEALBACKPACK
|
||||||
4018,475,1,219,5,225,1,0,0,0,0,0,0//ST_PRESERVE
|
4018,475,1,225,10,0,0,0,0,0,0,0,0//ST_PRESERVE
|
||||||
4018,476,5,215,1,216,1,217,1,218,1,0,0//ST_FULLSTRIP
|
4018,476,5,215,5,216,5,217,5,218,5,0,0//ST_FULLSTRIP
|
||||||
//Creator
|
//Creator
|
||||||
4019,1,9,0,0,0,0,0,0,0,0,0,0//NV_BASIC #基本スキル#
|
4019,1,9,0,0,0,0,0,0,0,0,0,0//NV_BASIC #基本スキル#
|
||||||
4019,142,1,0,0,0,0,0,0,0,0,0,0//NV_FIRSTAID #応急手当#
|
4019,142,1,0,0,0,0,0,0,0,0,0,0//NV_FIRSTAID #応急手当#
|
||||||
@ -1109,8 +1109,8 @@
|
|||||||
4019,235,5,237,3,0,0,0,0,0,0,0,0//AM_CP_SHIELD #ケミカルシールドチャージ#
|
4019,235,5,237,3,0,0,0,0,0,0,0,0//AM_CP_SHIELD #ケミカルシールドチャージ#
|
||||||
4019,236,5,235,3,0,0,0,0,0,0,0,0//AM_CP_ARMOR #ケミカルアーマーチャージ#
|
4019,236,5,235,3,0,0,0,0,0,0,0,0//AM_CP_ARMOR #ケミカルアーマーチャージ#
|
||||||
4019,237,5,228,2,0,0,0,0,0,0,0,0//AM_CP_HELM #ケミカルヘルムチャージ#
|
4019,237,5,228,2,0,0,0,0,0,0,0,0//AM_CP_HELM #ケミカルヘルムチャージ#
|
||||||
4019,478,10,228,3,0,0,0,0,0,0,0,0//CR_SLIMPITCHER
|
4019,478,10,231,5,0,0,0,0,0,0,0,0//CR_SLIMPITCHER
|
||||||
4019,479,5,234,1,235,1,236,1,237,1,0,0//CR_FULLPROTECTION
|
4019,479,5,234,5,235,5,236,5,237,5,0,0//CR_FULLPROTECTION
|
||||||
|
|
||||||
// 韓国でも未実装なので以下のツリーコメントアウト
|
// 韓国でも未実装なので以下のツリーコメントアウト
|
||||||
//4019,238,1,0,0,0,0,0,0,0,0,0,0//AM_BIOETHICS #生命倫理#
|
//4019,238,1,0,0,0,0,0,0,0,0,0,0//AM_BIOETHICS #生命倫理#
|
||||||
|
@ -4955,8 +4955,12 @@ int battle_check_range(struct block_list *src,struct block_list *bl,int range)
|
|||||||
if(src->m != bl->m) // 違うマップ
|
if(src->m != bl->m) // 違うマップ
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if( range>0 && range < arange ) // 遠すぎる
|
if( range>0 && range < arange ) {// ‰“‚·‚¬‚é
|
||||||
|
// be lenient if the skill was cast before we have moved to the correct position [Celest]
|
||||||
|
if (src->type == BL_PC && ((struct map_session_data *)bl)->walktimer != -1 &&
|
||||||
|
!((arange-=battle_config.skill_range_leniency)<=range))
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if( arange<2 ) // 同じマスか隣接
|
if( arange<2 ) // 同じマスか隣接
|
||||||
return 1;
|
return 1;
|
||||||
@ -5208,6 +5212,7 @@ static const struct {
|
|||||||
{ "skill_steal_type", &battle_config.skill_steal_type}, // [celest]
|
{ "skill_steal_type", &battle_config.skill_steal_type}, // [celest]
|
||||||
{ "skill_steal_rate", &battle_config.skill_steal_rate}, // [celest]
|
{ "skill_steal_rate", &battle_config.skill_steal_rate}, // [celest]
|
||||||
{ "night_darkness_level", &battle_config.night_darkness_level}, // [celest]
|
{ "night_darkness_level", &battle_config.night_darkness_level}, // [celest]
|
||||||
|
{ "skill_range_leniency", &battle_config.skill_range_leniency}, // [celest]
|
||||||
|
|
||||||
//SQL-only options start
|
//SQL-only options start
|
||||||
#ifndef TXT_ONLY
|
#ifndef TXT_ONLY
|
||||||
@ -5437,6 +5442,7 @@ void battle_set_defaults() {
|
|||||||
battle_config.skill_steal_type = 1;
|
battle_config.skill_steal_type = 1;
|
||||||
battle_config.skill_steal_rate = 100;
|
battle_config.skill_steal_rate = 100;
|
||||||
battle_config.night_darkness_level = 9;
|
battle_config.night_darkness_level = 9;
|
||||||
|
battle_config.skill_range_leniency = 1;
|
||||||
|
|
||||||
battle_config.castrate_dex_scale = 150;
|
battle_config.castrate_dex_scale = 150;
|
||||||
|
|
||||||
@ -5560,6 +5566,9 @@ void battle_validate_conf() {
|
|||||||
if (battle_config.night_darkness_level > 10) // Celest
|
if (battle_config.night_darkness_level > 10) // Celest
|
||||||
battle_config.night_darkness_level = 10;
|
battle_config.night_darkness_level = 10;
|
||||||
|
|
||||||
|
if (battle_config.skill_range_leniency <= 0) // Celest
|
||||||
|
battle_config.skill_range_leniency = 0;
|
||||||
|
|
||||||
if (battle_config.vending_max_value > 10000000 || battle_config.vending_max_value<=0) // Lupus & Kobra_k88
|
if (battle_config.vending_max_value > 10000000 || battle_config.vending_max_value<=0) // Lupus & Kobra_k88
|
||||||
battle_config.vending_max_value = 10000000;
|
battle_config.vending_max_value = 10000000;
|
||||||
|
|
||||||
|
@ -340,6 +340,7 @@ extern struct Battle_Config {
|
|||||||
int skill_steal_type; // [celest]
|
int skill_steal_type; // [celest]
|
||||||
int skill_steal_rate; // [celest]
|
int skill_steal_rate; // [celest]
|
||||||
int night_darkness_level; // [celest]
|
int night_darkness_level; // [celest]
|
||||||
|
int skill_range_leniency; // [celest]
|
||||||
|
|
||||||
#ifndef TXT_ONLY /* SQL-only options */
|
#ifndef TXT_ONLY /* SQL-only options */
|
||||||
int mail_system; // [Valaris]
|
int mail_system; // [Valaris]
|
||||||
|
@ -7947,6 +7947,9 @@ void clif_parse_Restart(int fd, struct map_session_data *sd) {
|
|||||||
pc_setrestartvalue(sd, 3);
|
pc_setrestartvalue(sd, 3);
|
||||||
pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, 2);
|
pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, 2);
|
||||||
}
|
}
|
||||||
|
// in case the player's status somehow wasn't updated yet [Celest]
|
||||||
|
else if (sd->status.hp <= 0)
|
||||||
|
pc_setdead(sd);
|
||||||
break;
|
break;
|
||||||
case 0x01:
|
case 0x01:
|
||||||
if(!pc_isdead(sd) && (sd->opt1 || (sd->opt2 && !(night_flag == 1 && sd->opt2 == STATE_BLIND))))
|
if(!pc_isdead(sd) && (sd->opt1 || (sd->opt2 && !(night_flag == 1 && sd->opt2 == STATE_BLIND))))
|
||||||
|
48
src/map/pc.c
48
src/map/pc.c
@ -1,4 +1,4 @@
|
|||||||
// $Id: pc.c 101 2004-11-30 8:27:10 PM Celestia $
|
// $Id: pc.c 101 2004-12-2 12:58:29 AM Celestia $
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -1501,12 +1501,12 @@ int pc_calcstatus(struct map_session_data* sd,int first)
|
|||||||
if(sd->sc_data[SC_CLOAKING].timer!=-1) {
|
if(sd->sc_data[SC_CLOAKING].timer!=-1) {
|
||||||
sd->critical_rate += 100; // critical increases
|
sd->critical_rate += 100; // critical increases
|
||||||
sd->speed = sd->speed * (sd->sc_data[SC_CLOAKING].val3-sd->sc_data[SC_CLOAKING].val1*3) /100;
|
sd->speed = sd->speed * (sd->sc_data[SC_CLOAKING].val3-sd->sc_data[SC_CLOAKING].val1*3) /100;
|
||||||
// Ours is accurate enough - refer skill_check_cloaking. ^^
|
|
||||||
//sd->speed = (sd->speed*(76+(sd->sc_data[SC_CLOAKING].val1*3)))/100; // Fixed by MiKa & Asa [Lupus]
|
|
||||||
}
|
}
|
||||||
//sd->speed = (sd->speed*(76+(sd->sc_data[SC_INCREASEAGI].val1*3)))/100;
|
if(sd->sc_data[SC_CHASEWALK].timer!=-1) {
|
||||||
if(sd->sc_data[SC_CHASEWALK].timer!=-1)
|
|
||||||
sd->speed = sd->speed * sd->sc_data[SC_CHASEWALK].val3 /100; // slow down by chasewalk
|
sd->speed = sd->speed * sd->sc_data[SC_CHASEWALK].val3 /100; // slow down by chasewalk
|
||||||
|
if(sd->sc_data[SC_CHASEWALK].val4)
|
||||||
|
sd->paramb[0] += (1<<(sd->sc_data[SC_CHASEWALK].val1-1)); // increases strength after 10 seconds
|
||||||
|
}
|
||||||
if(sd->sc_data[SC_BLESSING].timer!=-1){ // ブレッシング
|
if(sd->sc_data[SC_BLESSING].timer!=-1){ // ブレッシング
|
||||||
sd->paramb[0]+= sd->sc_data[SC_BLESSING].val1;
|
sd->paramb[0]+= sd->sc_data[SC_BLESSING].val1;
|
||||||
sd->paramb[3]+= sd->sc_data[SC_BLESSING].val1;
|
sd->paramb[3]+= sd->sc_data[SC_BLESSING].val1;
|
||||||
@ -3501,7 +3501,7 @@ int pc_item_repair(struct map_session_data *sd,int idx)
|
|||||||
*/
|
*/
|
||||||
int pc_item_refine(struct map_session_data *sd,int idx)
|
int pc_item_refine(struct map_session_data *sd,int idx)
|
||||||
{
|
{
|
||||||
int flag = 1, i = 0, count = 0, ep = 0, per, refine;
|
int flag = 1, i = 0, ep = 0, per;
|
||||||
int material[5] = { 0, 1010, 1011, 984, 984 };
|
int material[5] = { 0, 1010, 1011, 984, 984 };
|
||||||
struct item *item;
|
struct item *item;
|
||||||
|
|
||||||
@ -3511,38 +3511,23 @@ int pc_item_refine(struct map_session_data *sd,int idx)
|
|||||||
if(idx >= 0 && idx < MAX_INVENTORY) {
|
if(idx >= 0 && idx < MAX_INVENTORY) {
|
||||||
if(item->nameid > 0 && itemdb_type(item->nameid)==4) {
|
if(item->nameid > 0 && itemdb_type(item->nameid)==4) {
|
||||||
// if it's no longer refineable
|
// if it's no longer refineable
|
||||||
if (item->refine == 10) {
|
if (item->refine >= sd->skilllv || item->refine == 10) {
|
||||||
clif_skill_fail(sd,sd->skillid,0,0);
|
clif_skill_fail(sd,sd->skillid,0,0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
refine = item->refine + sd->skilllv > 10
|
if ((i=pc_search_inventory(sd, material [itemdb_wlv (item->nameid)])) < 0 ) { //fixed by Lupus (item pos can be = 0!)
|
||||||
? 10 - item->refine : sd->skilllv;
|
|
||||||
for (i=0; i < MAX_INVENTORY; i++)
|
|
||||||
if(sd->status.inventory[i].nameid == material [itemdb_wlv (item->nameid)])
|
|
||||||
count += sd->status.inventory[i].amount;
|
|
||||||
if (count < refine ) {
|
|
||||||
clif_skill_fail(sd,sd->skillid,0,0);
|
clif_skill_fail(sd,sd->skillid,0,0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
per = percentrefinery [itemdb_wlv (item->nameid)][item->refine + refine - 1];
|
|
||||||
|
per = percentrefinery [itemdb_wlv (item->nameid)][(int)item->refine];
|
||||||
//per += pc_checkskill(sd,BS_WEAPONRESEARCH);
|
//per += pc_checkskill(sd,BS_WEAPONRESEARCH);
|
||||||
per *= (75 + sd->status.job_level/2)/100;
|
per *= (75 + sd->status.job_level/2)/100;
|
||||||
|
|
||||||
if (per > rand() % 100) {
|
if (per > rand() % 100) {
|
||||||
flag = 0;
|
flag = 0;
|
||||||
item->refine += refine;
|
item->refine++;
|
||||||
|
pc_delitem(sd, i, 1, 0);
|
||||||
for (i=0; i < MAX_INVENTORY; i++)
|
|
||||||
if(sd->status.inventory[i].nameid == material [itemdb_wlv (item->nameid)]) {
|
|
||||||
if (sd->status.inventory[i].amount >= refine) {
|
|
||||||
pc_delitem(sd,i,refine,0);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
refine -= sd->status.inventory[i].amount;
|
|
||||||
pc_delitem(sd,i,sd->status.inventory[i].amount,0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(item->equip) {
|
if(item->equip) {
|
||||||
ep = item->equip;
|
ep = item->equip;
|
||||||
pc_unequipitem(sd,idx,0, BF_NORMAL);
|
pc_unequipitem(sd,idx,0, BF_NORMAL);
|
||||||
@ -3555,7 +3540,7 @@ int pc_item_refine(struct map_session_data *sd,int idx)
|
|||||||
clif_misceffect(&sd->bl,3);
|
clif_misceffect(&sd->bl,3);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
clif_delitem(sd,i,refine);
|
pc_delitem(sd, i, 1, 0);
|
||||||
item->refine = 0;
|
item->refine = 0;
|
||||||
if(item->equip)
|
if(item->equip)
|
||||||
pc_unequipitem(sd,idx,0, BF_NORMAL);
|
pc_unequipitem(sd,idx,0, BF_NORMAL);
|
||||||
@ -4006,9 +3991,7 @@ static int pc_walk(int tid,unsigned int tick,int id,int data)
|
|||||||
int moveblock;
|
int moveblock;
|
||||||
int x,y,dx,dy;
|
int x,y,dx,dy;
|
||||||
|
|
||||||
sd=map_id2sd(id);
|
nullpo_retr(0, (sd=map_id2sd(id)));
|
||||||
if(sd==NULL)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if(sd->walktimer != tid){
|
if(sd->walktimer != tid){
|
||||||
if(battle_config.error_log)
|
if(battle_config.error_log)
|
||||||
@ -4026,6 +4009,7 @@ static int pc_walk(int tid,unsigned int tick,int id,int data)
|
|||||||
sd->walkpath.path_half ^= 1;
|
sd->walkpath.path_half ^= 1;
|
||||||
if(sd->walkpath.path_half==0){ // マス目中心へ到着
|
if(sd->walkpath.path_half==0){ // マス目中心へ到着
|
||||||
sd->walkpath.path_pos++;
|
sd->walkpath.path_pos++;
|
||||||
|
|
||||||
if(sd->state.change_walk_target){
|
if(sd->state.change_walk_target){
|
||||||
pc_walktoxy_sub(sd);
|
pc_walktoxy_sub(sd);
|
||||||
return 0;
|
return 0;
|
||||||
@ -7194,7 +7178,7 @@ static int pc_natural_heal_hp(struct map_session_data *sd)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if(sd->sc_count && sd->sc_data[SC_APPLEIDUN].timer!=-1) { // Apple of Idun
|
if(sd->sc_count && sd->sc_data[SC_APPLEIDUN].timer!=-1 && sd->sc_data[SC_BERSERK].timer==-1) { // Apple of Idun
|
||||||
if(sd->inchealhptick >= 6000 && sd->status.hp < sd->status.max_hp) {
|
if(sd->inchealhptick >= 6000 && sd->status.hp < sd->status.max_hp) {
|
||||||
bonus = skill*20;
|
bonus = skill*20;
|
||||||
while(sd->inchealhptick >= 6000) {
|
while(sd->inchealhptick >= 6000) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// $Id: skill.c,v 1.8 2004/12/1 11:59:43 PM Celestia Exp $
|
// $Id: skill.c,v 1.8 2004/12/2 12:58:19 AM Celestia Exp $
|
||||||
/* スキル?係 */
|
/* スキル?係 */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -4522,7 +4522,7 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int
|
|||||||
case CR_SLIMPITCHER:
|
case CR_SLIMPITCHER:
|
||||||
{
|
{
|
||||||
if (sd && flag&1) {
|
if (sd && flag&1) {
|
||||||
int hp = sd->potion_hp * (100 + pc_checkskill(sd,CR_SLIMPITCHER)*5 + pc_checkskill(sd,AM_POTIONPITCHER)*10 + pc_checkskill(sd,AM_LEARNINGPOTION)*5)/100;
|
int hp = sd->potion_hp * (100 + pc_checkskill(sd,CR_SLIMPITCHER)*10 + pc_checkskill(sd,AM_POTIONPITCHER)*10 + pc_checkskill(sd,AM_LEARNINGPOTION)*5)/100;
|
||||||
hp = hp * (100 + (battle_get_vit(bl)<<1))/100;
|
hp = hp * (100 + (battle_get_vit(bl)<<1))/100;
|
||||||
if (dstsd)
|
if (dstsd)
|
||||||
hp = hp * (100 + pc_checkskill(dstsd,SM_RECOVERY)*10)/100;
|
hp = hp * (100 + pc_checkskill(dstsd,SM_RECOVERY)*10)/100;
|
||||||
@ -8775,11 +8775,17 @@ int skill_status_change_timer(int tid, unsigned int tick, int id, int data)
|
|||||||
|
|
||||||
case SC_CHASEWALK:
|
case SC_CHASEWALK:
|
||||||
if(sd){
|
if(sd){
|
||||||
if( sd->status.sp > 19+sc_data[SC_CHASEWALK].val1*3){
|
int sp = 10+sc_data[SC_CHASEWALK].val1*2;
|
||||||
sd->status.sp-=(19+(sc_data[SC_CHASEWALK].val1*3)); // update sp cost [Celest]
|
if (map[sd->bl.m].flag.gvg) sp *= 5;
|
||||||
|
if( sd->status.sp > sp){
|
||||||
|
sd->status.sp -= sp; // update sp cost [Celest]
|
||||||
clif_updatestatus(sd,SP_SP);
|
clif_updatestatus(sd,SP_SP);
|
||||||
sc_data[type].timer=add_timer( /* タイマ?再設定 */
|
sc_data[type].timer=add_timer( /* タイマ?再設定 */
|
||||||
sc_data[type].val2+tick, skill_status_change_timer, bl->id, data);
|
sc_data[type].val2+tick, skill_status_change_timer, bl->id, data);
|
||||||
|
sc_data[SC_CHASEWALK].val4++;
|
||||||
|
if (sc_data[SC_CHASEWALK].val4 > 3)
|
||||||
|
sc_data[SC_CHASEWALK].val4 = 0;
|
||||||
|
pc_calcstatus (sd, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user