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:
celest 2004-11-14 13:24:09 +00:00
parent 42dc8b3b71
commit 62089ca111
8 changed files with 905 additions and 801 deletions

View File

@ -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

View File

@ -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

View File

@ -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#デッドリーポイズン製造#

View File

@ -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#????#

View File

@ -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; //ディフェンダー補正による左手ダメージ減少

View File

@ -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)

File diff suppressed because it is too large Load Diff

View File

@ -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,