Updated some more skills. ;P
git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@169 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
42dc8b3b71
commit
62089ca111
@ -6,7 +6,11 @@ Date Added
|
||||
* Fixed chrif_changesex and @changesex, now uses packet 0x3000. [MC Cameri]
|
||||
* Updated some skills, credits to orn and midas. [celest]
|
||||
- Magnum Break, Throw Stone, Sprinkle Sand, Magic Power, Memorise, Quagmire,
|
||||
Spider Web, Reject Sword, and assassin's Dodge.
|
||||
Spider Web, Reject Sword, assassin's Dodge, Demonbane, Divine Protection.
|
||||
- Firewall, Quagmire, Fog Wall (100%), Marionette Control (30%), Sandman,
|
||||
Claymore Trap
|
||||
- Adjusted some mob skills for mod support.
|
||||
* Fixed weight increase when riding. [celest]
|
||||
|
||||
11/12
|
||||
* added folder: /save-tmpl, removed folder /save
|
||||
|
@ -263,7 +263,7 @@
|
||||
401,2000,0,600000,0 //CH_SOULCOLLECT#狂気功#
|
||||
402,0,800:900:1000:1100:1200,30000,0 //PF_MINDBREAKER
|
||||
403,5000,0,0,0 //PF_MEMORIZE
|
||||
404,0,0,30000,10000 //PF_FOGWALL#フォグウォール#
|
||||
404,0,0,20000,10000 //PF_FOGWALL#フォグウォール#
|
||||
405,0,0,30000,8000 //PF_SPIDERWEB#スパイダーウェッブ#
|
||||
406,0,0,0,3000 //ASC_METEORASSAULT#メテオアサルト#
|
||||
407,0,5000,0,0 //ASC_CDP
|
||||
|
@ -438,7 +438,7 @@
|
||||
401,0,6,4,0,1,1,1,yes,0,0,0,weapon,0 //CH_SOULCOLLECT#狂気功#
|
||||
402,8,6,1,0,1,10,1,no,0,0,0,none,0 //PF_MINDBREAKER#マインドブレーカー#
|
||||
403,0,0,4,0,1,1,1,yes,0,0,0,magic,0 //PF_MEMORIZE#メモライズ#
|
||||
404,3,6,2,2,1,5,1,yes,0,128,2,magic,0 //PF_FOGWALL#フォグウォール#
|
||||
404,3,6,2,2,1,5,1,yes,0,128,1,magic,0 //PF_FOGWALL#フォグウォール#
|
||||
405,3,6,2,0,1,5,1,no,0,128,2,misc,0 //PF_SPIDERWEB#スパイダーウェッブ#
|
||||
406,-1,6,1,0,2,10,1,no,33,0,0,weapon,0 //ASC_METEORASSAULT#メテオアサルト#
|
||||
407,0,6,4,0,1,10,0,no,0,0,0,none,0 //ASC_CDP#デッドリーポイズン製造#
|
||||
|
@ -80,7 +80,7 @@
|
||||
89,0,0,78,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_STORMGUST#???????#
|
||||
90,0,0,12:14:16:18:20,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_EARTHSPIKE#???????#
|
||||
91,0,0,28:32:36:40:44,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_HEAVENDRIVE#????????#
|
||||
92,0,0,15,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_QUAGMIRE#??????#
|
||||
92,0,0,5:10:15:20:25,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_QUAGMIRE#??????#
|
||||
93,0,0,10,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_ESTIMATION#???????#
|
||||
|
||||
108,0,0,5,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //BS_REPAIRWEAPON#????#
|
||||
|
@ -247,8 +247,11 @@ int battle_get_agi(struct block_list *bl)
|
||||
if(sc_data[SC_DECREASEAGI].timer!=-1) // 速度減少
|
||||
agi -= 2+sc_data[SC_DECREASEAGI].val1;
|
||||
|
||||
if(sc_data[SC_QUAGMIRE].timer!=-1 ) // クァグマイア
|
||||
agi >>= 1;
|
||||
if(sc_data[SC_QUAGMIRE].timer!=-1 ) { // クァグマイア
|
||||
//agi >>= 1;
|
||||
int agib = agi*(sc_data[SC_QUAGMIRE].val1*10)/100;
|
||||
agi -= agib > 50 ? 50 : agib;
|
||||
}
|
||||
if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト
|
||||
agi += 5;
|
||||
}
|
||||
@ -345,8 +348,11 @@ int battle_get_dex(struct block_list *bl)
|
||||
else dex += sc_data[SC_BLESSING].val1; // その他
|
||||
}
|
||||
|
||||
if(sc_data[SC_QUAGMIRE].timer!=-1 ) // クァグマイア
|
||||
dex >>= 1;
|
||||
if(sc_data[SC_QUAGMIRE].timer!=-1 ) { // クァグマイア
|
||||
// dex >>= 1;
|
||||
int dexb = dex*(sc_data[SC_QUAGMIRE].val1*10)/100;
|
||||
dex -= dexb > 50 ? 50 : dexb;
|
||||
}
|
||||
if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト
|
||||
dex += 5;
|
||||
}
|
||||
@ -1581,6 +1587,10 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i
|
||||
damage<<=1;
|
||||
skill_status_change_end(bl, SC_SPIDERWEB, -1);
|
||||
}
|
||||
|
||||
if(sc_data[SC_FOGWALL].timer != -1 && flag&BF_MAGIC)
|
||||
if(rand()%100 < sc_data[SC_FOGWALL].val2)
|
||||
damage = 0;
|
||||
}
|
||||
|
||||
if(class == 1288 || class == 1287 || class == 1286 || class == 1285) {
|
||||
@ -2126,13 +2136,17 @@ static struct Damage battle_calc_pet_weapon_attack(
|
||||
if(damage<1) damage=1;
|
||||
|
||||
// 回避修正
|
||||
if( hitrate < 1000000 && t_sc_data ) { // 必中攻撃
|
||||
if(t_sc_data[SC_FOGWALL].timer != -1 && flag&BF_LONG)
|
||||
hitrate -= 50;
|
||||
if (t_sc_data[SC_SLEEP].timer!=-1 || // 睡眠は必中
|
||||
t_sc_data[SC_STAN].timer!=-1 || // スタンは必中
|
||||
t_sc_data[SC_FREEZE].timer!=-1 ||
|
||||
(t_sc_data[SC_STONE].timer!=-1 && t_sc_data[SC_STONE].val2==0)) // 凍結は必中
|
||||
hitrate = 1000000;
|
||||
}
|
||||
if(hitrate < 1000000)
|
||||
hitrate = ( (hitrate>95)?95: ((hitrate<5)?5:hitrate) );
|
||||
if( hitrate < 1000000 && // 必中攻撃
|
||||
(t_sc_data != NULL && (t_sc_data[SC_SLEEP].timer!=-1 || // 睡眠は必中
|
||||
t_sc_data[SC_STAN].timer!=-1 || // スタンは必中
|
||||
t_sc_data[SC_FREEZE].timer!=-1 || (t_sc_data[SC_STONE].timer!=-1 && t_sc_data[SC_STONE].val2==0) ) ) ) // 凍結は必中
|
||||
hitrate = 1000000;
|
||||
if(type == 0 && rand()%100 >= hitrate) {
|
||||
damage = damage2 = 0;
|
||||
dmg_lv = ATK_FLEE;
|
||||
@ -2145,6 +2159,8 @@ static struct Damage battle_calc_pet_weapon_attack(
|
||||
int cardfix=100;
|
||||
if(t_sc_data[SC_DEFENDER].timer != -1 && flag&BF_LONG)
|
||||
cardfix=cardfix*(100-t_sc_data[SC_DEFENDER].val2)/100;
|
||||
if(t_sc_data[SC_FOGWALL].timer != -1 && flag&BF_LONG)
|
||||
cardfix=cardfix*(100-t_sc_data[SC_FOGWALL].val2)/100;
|
||||
if(cardfix != 100)
|
||||
damage=damage*cardfix/100;
|
||||
}
|
||||
@ -2613,13 +2629,17 @@ static struct Damage battle_calc_mob_weapon_attack(
|
||||
if(damage<1) damage=1;
|
||||
|
||||
// 回避修正
|
||||
if( hitrate < 1000000 && t_sc_data ) { // 必中攻撃
|
||||
if(t_sc_data[SC_FOGWALL].timer != -1 && flag&BF_LONG)
|
||||
hitrate -= 50;
|
||||
if (t_sc_data[SC_SLEEP].timer!=-1 || // 睡眠は必中
|
||||
t_sc_data[SC_STAN].timer!=-1 || // スタンは必中
|
||||
t_sc_data[SC_FREEZE].timer!=-1 ||
|
||||
(t_sc_data[SC_STONE].timer!=-1 && t_sc_data[SC_STONE].val2==0)) // 凍結は必中
|
||||
hitrate = 1000000;
|
||||
}
|
||||
if(hitrate < 1000000)
|
||||
hitrate = ( (hitrate>95)?95: ((hitrate<5)?5:hitrate) );
|
||||
if( hitrate < 1000000 && // 必中攻撃
|
||||
(t_sc_data != NULL && (t_sc_data[SC_SLEEP].timer!=-1 || // 睡眠は必中
|
||||
t_sc_data[SC_STAN].timer!=-1 || // スタンは必中
|
||||
t_sc_data[SC_FREEZE].timer!=-1 || (t_sc_data[SC_STONE].timer!=-1 && t_sc_data[SC_STONE].val2==0) ) ) ) // 凍結は必中
|
||||
hitrate = 1000000;
|
||||
if(type == 0 && rand()%100 >= hitrate) {
|
||||
damage = damage2 = 0;
|
||||
dmg_lv = ATK_FLEE;
|
||||
@ -2651,6 +2671,8 @@ static struct Damage battle_calc_mob_weapon_attack(
|
||||
int cardfix=100;
|
||||
if(t_sc_data[SC_DEFENDER].timer != -1 && flag&BF_LONG)
|
||||
cardfix=cardfix*(100-t_sc_data[SC_DEFENDER].val2)/100;
|
||||
if(t_sc_data[SC_FOGWALL].timer != -1 && flag&BF_LONG)
|
||||
cardfix=cardfix*(100-t_sc_data[SC_FOGWALL].val2)/100;
|
||||
if(cardfix != 100)
|
||||
damage=damage*cardfix/100;
|
||||
}
|
||||
@ -3533,18 +3555,23 @@ static struct Damage battle_calc_pc_weapon_attack(
|
||||
}
|
||||
|
||||
// 回避修正
|
||||
if( hitrate < 1000000 && t_sc_data ) { // 必中攻撃
|
||||
if(t_sc_data[SC_FOGWALL].timer != -1 && flag&BF_LONG)
|
||||
hitrate -= 50;
|
||||
if (t_sc_data[SC_SLEEP].timer!=-1 || // 睡眠は必中
|
||||
t_sc_data[SC_STAN].timer!=-1 || // スタンは必中
|
||||
t_sc_data[SC_FREEZE].timer!=-1 ||
|
||||
(t_sc_data[SC_STONE].timer!=-1 && t_sc_data[SC_STONE].val2==0)) // 凍結は必中
|
||||
hitrate = 1000000;
|
||||
}
|
||||
hitrate = (hitrate<5)?5:hitrate;
|
||||
if( hitrate < 1000000 && // 必中攻撃
|
||||
(t_sc_data != NULL && (t_sc_data[SC_SLEEP].timer!=-1 || // 睡眠は必中
|
||||
t_sc_data[SC_STAN].timer!=-1 || // スタンは必中
|
||||
t_sc_data[SC_FREEZE].timer!=-1 || (t_sc_data[SC_STONE].timer!=-1 && t_sc_data[SC_STONE].val2==0) ) ) ) // 凍結は必中
|
||||
hitrate = 1000000;
|
||||
if(type == 0 && rand()%100 >= hitrate) {
|
||||
damage = damage2 = 0;
|
||||
dmg_lv = ATK_FLEE;
|
||||
} else {
|
||||
dmg_lv = ATK_DEF;
|
||||
}
|
||||
|
||||
// スキル修正3(武器研究)
|
||||
if( (skill=pc_checkskill(sd,BS_WEAPONRESEARCH)) > 0) {
|
||||
damage+= skill*2;
|
||||
@ -3665,6 +3692,8 @@ static struct Damage battle_calc_pc_weapon_attack(
|
||||
cardfix=100;
|
||||
if(t_sc_data[SC_DEFENDER].timer != -1 && flag&BF_LONG) //ディフェンダー状態で遠距離攻撃
|
||||
cardfix=cardfix*(100-t_sc_data[SC_DEFENDER].val2)/100; //ディフェンダーによる減衰
|
||||
if(t_sc_data[SC_FOGWALL].timer != -1 && flag&BF_LONG)
|
||||
cardfix=cardfix*(100-t_sc_data[SC_FOGWALL].val2)/100;
|
||||
if(cardfix != 100) {
|
||||
damage=damage*cardfix/100; //ディフェンダー補正によるダメージ減少
|
||||
damage2=damage2*cardfix/100; //ディフェンダー補正による左手ダメージ減少
|
||||
|
23
src/map/pc.c
23
src/map/pc.c
@ -1455,8 +1455,10 @@ int pc_calcstatus(struct map_session_data* sd,int first)
|
||||
sd->paramb[0]+= 4;
|
||||
if(sd->sc_data[SC_QUAGMIRE].timer!=-1){ // クァグマイア
|
||||
sd->speed = sd->speed*3/2;
|
||||
sd->paramb[1]-=(sd->status.agi+sd->paramb[1]+sd->parame[1])/2;
|
||||
sd->paramb[4]-=(sd->status.dex+sd->paramb[4]+sd->parame[4])/2;
|
||||
int agib = (sd->status.agi+sd->paramb[1]+sd->parame[1])*(sd->sc_data[SC_QUAGMIRE].val1*10)/100;
|
||||
int dexb = (sd->status.dex+sd->paramb[4]+sd->parame[4])*(sd->sc_data[SC_QUAGMIRE].val1*10)/100;
|
||||
sd->paramb[1]-= agib > 50 ? 50 : agib;
|
||||
sd->paramb[4]-= dexb > 50 ? 50 : dexb;
|
||||
}
|
||||
if(sd->sc_data[SC_TRUESIGHT].timer!=-1){ // トゥルーサイト
|
||||
sd->paramb[0]+= 5;
|
||||
@ -1466,6 +1468,14 @@ int pc_calcstatus(struct map_session_data* sd,int first)
|
||||
sd->paramb[4]+= 5;
|
||||
sd->paramb[5]+= 5;
|
||||
}
|
||||
if(sd->sc_data[SC_MARIONETTE].timer!=-1){
|
||||
sd->paramb[0]-= (sd->status.str+sd->paramb[0]+sd->parame[0])/2;
|
||||
sd->paramb[1]-= (sd->status.agi+sd->paramb[1]+sd->parame[1])/2;
|
||||
sd->paramb[2]-= (sd->status.vit+sd->paramb[2]+sd->parame[2])/2;
|
||||
sd->paramb[3]-= (sd->status.int_+sd->paramb[3]+sd->parame[3])/2;
|
||||
sd->paramb[4]-= (sd->status.dex+sd->paramb[4]+sd->parame[4])/2;
|
||||
sd->paramb[5]-= (sd->status.luk+sd->paramb[5]+sd->parame[5])/2;
|
||||
}
|
||||
}
|
||||
|
||||
//1度も死んでないJob70スパノビに+10
|
||||
@ -1562,9 +1572,10 @@ int pc_calcstatus(struct map_session_data* sd,int first)
|
||||
sd->speed += (1.2*DEFAULT_WALK_SPEED - skill*9);
|
||||
if (pc_iscarton(sd) && (skill=pc_checkskill(sd,MC_PUSHCART))>0) // カートによる速度低下
|
||||
sd->speed += (10-skill) * (DEFAULT_WALK_SPEED * 0.1);
|
||||
else if (pc_isriding(sd)) // ペコペコ乗りによる速度増加
|
||||
else if (pc_isriding(sd)) { // ペコペコ乗りによる速度増加
|
||||
sd->speed -= (0.25 * DEFAULT_WALK_SPEED);
|
||||
sd->max_weight += 1000;
|
||||
sd->max_weight += 10000;
|
||||
}
|
||||
if(sd->sc_count){
|
||||
if(sd->sc_data[SC_WINDWALK].timer!=-1) //ウィンドウォーク時はLv*2%減算
|
||||
sd->speed -= sd->speed *(sd->sc_data[SC_WINDWALK].val1*2)/100;
|
||||
@ -1890,6 +1901,10 @@ int pc_calcstatus(struct map_session_data* sd,int first)
|
||||
if(sd->sc_data[SC_DELUGE].timer!=-1) // エンチャントポイズン(属性はbattle.cで)
|
||||
sd->addeff[0]+=sd->sc_data[SC_DELUGE].val2;//% of granting
|
||||
*/
|
||||
if(sd->sc_data[SC_KEEPING].timer!=-1)
|
||||
sd->def = 100;
|
||||
if(sd->sc_data[SC_BARRIER].timer!=-1)
|
||||
sd->mdef = 100;
|
||||
}
|
||||
|
||||
if(sd->speed_rate != 100)
|
||||
|
1602
src/map/skill.c
1602
src/map/skill.c
File diff suppressed because it is too large
Load Diff
@ -332,6 +332,8 @@ enum { // struct map_session_data
|
||||
SC_SPELLBREAKER =192,
|
||||
|
||||
SC_EDP = 114, // [Celest]
|
||||
SC_MARIONETTE2 = 122,
|
||||
SC_BLEEDING = 124,
|
||||
|
||||
// -- testing various SC effects
|
||||
// SC_AURABLADE =81,
|
||||
|
Loading…
x
Reference in New Issue
Block a user