* Updated Sphere Mine
* Updated Wind Walk * Added effect for Deadly poison bottle and Ice cream git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@594 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
4d61ade16c
commit
0fbbeca96d
@ -1,6 +1,9 @@
|
||||
Date Added
|
||||
12/17
|
||||
* Added a fix for map loading, thanks to 'Guest' [celest]
|
||||
* Reverted a change in map.c causing problems, sorry >.< [celest]
|
||||
* Updated Sphere Mine - it'll now move in the opposite direction if
|
||||
being hit by its master [celest]
|
||||
* Updated Wind Walk [celest]
|
||||
* Fixed skill #301 causing crashes [MouseJstr]
|
||||
* Fixed documentation error on gm_skills_unconditionl [MouseJstr]
|
||||
* added @grind test command.. only for testing [MouseJstr]
|
||||
|
@ -5,6 +5,8 @@
|
||||
Ayathoya items == Added but no effect ( all are "ect" itens)
|
||||
Skill databases == celest working on them i believe.
|
||||
|
||||
12/17 * Added effect for Deadly poison bottle and Ice cream [celest]
|
||||
|
||||
12/15 * Updated Steel Body, Thunderstorm, Investigate and Magic Crasher, thanks
|
||||
to midas
|
||||
* Removed elunium and oridecon from produce_db, thanks to Draco
|
||||
|
@ -252,6 +252,7 @@ SC_Blind 136
|
||||
SC_SpeedPot0 37
|
||||
SC_SpeedPot1 38
|
||||
SC_SpeedPot2 39
|
||||
SC_SpeedPot3 40
|
||||
SC_ATKPot 185
|
||||
SC_MATKPot 186
|
||||
SC_EncPoison 6
|
||||
|
@ -37,7 +37,7 @@
|
||||
533,Grape_Juice,Grape Juice,0,250,0,40,,,,,10477567,2,,,,,{ itemheal 0,rand(15,24); },{}
|
||||
534,Carrot_Juice,Carrot Juice,0,20,0,40,,,,,10477567,2,,,,,{ itemheal rand(27,32),0; },{}
|
||||
535,Pumkin,Pumpkin,0,15,0,20,,,,,10477567,2,,,,,{ itemheal 19,0; },{}
|
||||
536,Ice_Cream,Ice Cream,0,150,0,80,,,,,10477567,2,,,,,{ itemheal rand(105,144),0; },{}
|
||||
536,Ice_Cream,Ice Cream,0,150,0,80,,,,,10477567,2,,,,,{ itemheal rand(105,144),0; if (rand(100)<3) goto FR; end; FR: sc_start SC_Freeze,10000,0; },{}
|
||||
537,Pet_Food,Pet Food,0,1000,0,10,,,,,10477567,2,,,,,{ itemheal rand(50,89),0; },{}
|
||||
538,Well-baked_Cookie,Well-baked Cookie,0,1000,0,30,,,,,10477567,2,,,,,{ itemheal rand(160,199),0; },{}
|
||||
539,Piece_of_Cake,Piece of Cake,0,3000,0,100,,,,,10477567,2,,,,,{ itemheal rand(270,329),0; },{}
|
||||
@ -148,7 +148,7 @@
|
||||
675,Silver_Coin,Silver Coin,2,20,0,40,,,,,0,3,,,,,{},{}
|
||||
676,Silver_Coin_Pouch,Silver Coin Pouch,2,20,0,400,,,,,0,3,,,,,{},{}
|
||||
677,Platinum_Coin,Platinum Coin,2,20,0,40,,,,,0,3,,,,,{},{}
|
||||
678,Deadly_Poison_Bottle,Deadly Poison Bottle,2,20,0,100,,,,,10477567,2,,,,,{ sc_start 193,60000,0; },{}
|
||||
678,Deadly_Poison_Bottle,Deadly Poison Bottle,2,20,0,100,,,,,10477567,2,,,,,{ if(Class!=4013) goto Not_ASC; sc_start SC_Poison,600000,0; sc_start SC_SpeedPot0,30,0; end; Not_ASC: percentheal -100,0; },{}
|
||||
679,Recall_Pills,Recall Pills,2,20,0,300,,,,,0,3,,,,,{},{}
|
||||
680,Carnation,Carnation,2,20,0,1000,,,,,0,3,,,,,{},{}
|
||||
681,Wedding_Photo_Album,Wedding_Photo_Album,2,20,0,10,,,,,0,3,,,,,{},{}
|
||||
|
@ -144,7 +144,7 @@
|
||||
230,1000,0,3:7:10:12:13,60000 //AM_ACIDTERROR#アシッドテラー#
|
||||
|
||||
232,2000,500,40000:50000:60000:70000:80000,0 //AM_CANNIBALIZE#バイオプラント#
|
||||
233,2000,500,30000,0 //AM_SPHEREMINE#スフィアーマイン#
|
||||
233,2000,500,40000:50000:60000:70000:80000,0 //AM_SPHEREMINE#スフィアーマイン#
|
||||
234,2000,0,120000:240000:360000:480000:600000,0 //AM_CP_WEAPON#ケミカルウェポンチャージ#
|
||||
235,2000,0,120000:240000:360000:480000:600000,0 //AM_CP_SHIELD#ケミカルシールドチャージ#
|
||||
236,2000,0,120000:240000:360000:480000:600000,0 //AM_CP_ARMOR#ケミカルアーマーチャージ#
|
||||
|
@ -931,7 +931,7 @@ int battle_get_speed(struct block_list *bl)
|
||||
if(sc_data[SC_CURSE].timer!=-1)
|
||||
speed = speed + 450;
|
||||
//ウィンドウォーク時はLv*2%減算
|
||||
if(sc_data[SC_WINDWALK].timer!=-1)
|
||||
if(sc_data[SC_WINDWALK].timer!=-1 && sc_data[SC_INCREASEAGI].timer==-1)
|
||||
speed -= (speed*(sc_data[SC_WINDWALK].val1*2))/100;
|
||||
if(sc_data[SC_SLOWDOWN].timer!=-1)
|
||||
speed = speed*150/100;
|
||||
@ -990,7 +990,7 @@ int battle_get_adelay(struct block_list *bl)
|
||||
if(sc_data[SC_STEELBODY].timer!=-1) // 金剛
|
||||
aspd_rate += 25;
|
||||
//増速ポーション使用時は減算
|
||||
if( sc_data[i=SC_SPEEDPOTION2].timer!=-1 || sc_data[i=SC_SPEEDPOTION1].timer!=-1 || sc_data[i=SC_SPEEDPOTION0].timer!=-1)
|
||||
if( sc_data[i=SC_SPEEDPOTION3].timer!=-1 || sc_data[i=SC_SPEEDPOTION2].timer!=-1 || sc_data[i=SC_SPEEDPOTION1].timer!=-1 || sc_data[i=SC_SPEEDPOTION0].timer!=-1)
|
||||
aspd_rate -= sc_data[i].val2;
|
||||
//ディフェンダー時は加算
|
||||
if(sc_data[SC_DEFENDER].timer != -1)
|
||||
@ -1037,7 +1037,7 @@ int battle_get_amotion(struct block_list *bl)
|
||||
aspd_rate += sc_data[SC_DONTFORGETME].val1*3 + sc_data[SC_DONTFORGETME].val2 + (sc_data[SC_DONTFORGETME].val3>>16);
|
||||
if(sc_data[SC_STEELBODY].timer!=-1) // 金剛
|
||||
aspd_rate += 25;
|
||||
if( sc_data[i=SC_SPEEDPOTION2].timer!=-1 || sc_data[i=SC_SPEEDPOTION1].timer!=-1 || sc_data[i=SC_SPEEDPOTION0].timer!=-1)
|
||||
if( sc_data[i=SC_SPEEDPOTION3].timer!=-1 || sc_data[i=SC_SPEEDPOTION2].timer!=-1 || sc_data[i=SC_SPEEDPOTION1].timer!=-1 || sc_data[i=SC_SPEEDPOTION0].timer!=-1)
|
||||
aspd_rate -= sc_data[i].val2;
|
||||
if(sc_data[SC_DEFENDER].timer != -1)
|
||||
amotion += (550 - sc_data[SC_DEFENDER].val1*50);
|
||||
|
@ -407,6 +407,7 @@ struct mob_data {
|
||||
} state;
|
||||
int timer;
|
||||
short to_x,to_y;
|
||||
short target_dir;
|
||||
short speed;
|
||||
int hp;
|
||||
int target_id,attacked_id;
|
||||
|
@ -928,6 +928,7 @@ int mob_spawn(int id)
|
||||
md->to_x=md->bl.x=x;
|
||||
md->to_y=md->bl.y=y;
|
||||
md->dir=0;
|
||||
md->target_dir=0;
|
||||
|
||||
map_addblock(&md->bl);
|
||||
|
||||
@ -1492,17 +1493,28 @@ static int mob_randomwalk(struct mob_data *md,int tick)
|
||||
speed=battle_get_speed(&md->bl);
|
||||
if(DIFF_TICK(md->next_walktime,tick)<0){
|
||||
int i,x,y,c,d=12-md->move_fail_count;
|
||||
int mask[8][2] = {{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1},{1,0},{1,1}};
|
||||
if(d<5) d=5;
|
||||
for(i=0;i<retrycount;i++){ // Search of a movable place
|
||||
int r=rand();
|
||||
x=md->bl.x+r%(d*2+1)-d;
|
||||
y=md->bl.y+r/(d*2+1)%(d*2+1)-d;
|
||||
x=r%(d*2+1)-d;
|
||||
y=r/(d*2+1)%(d*2+1)-d;
|
||||
if (md->target_dir){
|
||||
if (x<0) x=0-x;
|
||||
if (y<0) y=0-y;
|
||||
x *= mask[md->target_dir-1][0];
|
||||
y *= mask[md->target_dir-1][1];
|
||||
}
|
||||
x+=md->bl.x;
|
||||
y+=md->bl.y;
|
||||
|
||||
if((c=map_getcell(md->bl.m,x,y))!=1 && c!=5 && mob_walktoxy(md,x,y,1)==0){
|
||||
md->move_fail_count=0;
|
||||
break;
|
||||
}
|
||||
if(i+1>=retrycount){
|
||||
md->move_fail_count++;
|
||||
md->target_dir = 0;
|
||||
if(md->move_fail_count>1000){
|
||||
if(battle_config.error_log)
|
||||
printf("MOB cant move. random spawn %d, class = %d\n",md->bl.id,md->class);
|
||||
@ -2278,6 +2290,8 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type)
|
||||
mobskill_use_id(md,&md->bl,skillidx);//Ž©”š‰r<E280B0>¥ŠJŽn
|
||||
md->state.special_mob_ai++;
|
||||
}
|
||||
if (md->master_id==src->id)
|
||||
md->target_dir=map_calc_dir(src,md->bl.x,md->bl.y)+1;
|
||||
}
|
||||
|
||||
if(md->hp>0){
|
||||
|
@ -1888,11 +1888,12 @@ int pc_calcstatus(struct map_session_data* sd,int first)
|
||||
aspd_rate += sd->sc_data[SC_DONTFORGETME].val1*3 + sd->sc_data[SC_DONTFORGETME].val2 + (sd->sc_data[SC_DONTFORGETME].val3>>16);
|
||||
sd->speed= sd->speed*(100+sd->sc_data[SC_DONTFORGETME].val1*2 + sd->sc_data[SC_DONTFORGETME].val2 + (sd->sc_data[SC_DONTFORGETME].val3&0xffff))/100;
|
||||
}
|
||||
if( sd->sc_data[i=SC_SPEEDPOTION2].timer!=-1 ||
|
||||
if( sd->sc_data[i=SC_SPEEDPOTION3].timer!=-1 ||
|
||||
sd->sc_data[i=SC_SPEEDPOTION2].timer!=-1 ||
|
||||
sd->sc_data[i=SC_SPEEDPOTION1].timer!=-1 ||
|
||||
sd->sc_data[i=SC_SPEEDPOTION0].timer!=-1) // ? ‘¬ƒ|?ƒVƒ‡ƒ“
|
||||
aspd_rate -= sd->sc_data[i].val2;
|
||||
if(sd->sc_data[SC_WINDWALK].timer!=-1) //ウィンドウォ?ク時はLv*2%減算
|
||||
if(sd->sc_data[SC_WINDWALK].timer!=-1 && sd->sc_data[SC_INCREASEAGI].timer==-1) //ウィンドウォ?ク時はLv*2%減算
|
||||
sd->speed -= sd->speed *(sd->sc_data[SC_WINDWALK].val1*2)/100;
|
||||
if(sd->sc_data[SC_CARTBOOST].timer!=-1) // ƒJ?ƒgƒu?ƒXƒg
|
||||
sd->speed -= (DEFAULT_WALK_SPEED * 20)/100;
|
||||
@ -2162,7 +2163,7 @@ int pc_calcspeed (struct map_session_data *sd)
|
||||
if(sd->sc_data[SC_QUAGMIRE].timer!=-1){
|
||||
sd->speed = sd->speed*3/2;
|
||||
}
|
||||
if(sd->sc_data[SC_WINDWALK].timer!=-1) {
|
||||
if(sd->sc_data[SC_WINDWALK].timer!=-1 && sd->sc_data[SC_INCREASEAGI].timer==-1) {
|
||||
sd->speed -= sd->speed *(sd->sc_data[SC_WINDWALK].val1*2)/100;
|
||||
}
|
||||
if(sd->sc_data[SC_CARTBOOST].timer!=-1) {
|
||||
|
@ -8667,6 +8667,7 @@ int skill_status_change_end(struct block_list* bl, int type, int tid)
|
||||
case SC_SPEEDPOTION0: /* ?速ポ?ション */
|
||||
case SC_SPEEDPOTION1:
|
||||
case SC_SPEEDPOTION2:
|
||||
case SC_SPEEDPOTION3:
|
||||
case SC_APPLEIDUN: /* イドゥンの林檎 */
|
||||
case SC_RIDING:
|
||||
case SC_BLADESTOP_WAIT:
|
||||
@ -9500,7 +9501,7 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val
|
||||
|
||||
if(sc_data[type].timer != -1){ /* すでに同じ異常になっている場合タイマ解除 */
|
||||
if(sc_data[type].val1 > val1 && type != SC_COMBO && type != SC_DANCING && type != SC_DEVOTION &&
|
||||
type != SC_SPEEDPOTION0 && type != SC_SPEEDPOTION1 && type != SC_SPEEDPOTION2
|
||||
type != SC_SPEEDPOTION0 && type != SC_SPEEDPOTION1 && type != SC_SPEEDPOTION2 && type != SC_SPEEDPOTION3
|
||||
&& type != SC_ATKPOT && type != SC_MATKPOT) // added atk and matk potions [Valaris]
|
||||
return 0;
|
||||
if ((type >=SC_STAN && type <= SC_BLIND) || type == SC_DPOISON)
|
||||
@ -9553,8 +9554,9 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val
|
||||
calc_flag = 1;
|
||||
if(sc_data[SC_DECREASEAGI].timer!=-1 )
|
||||
skill_status_change_end(bl,SC_DECREASEAGI,-1);
|
||||
if(sc_data[SC_WINDWALK].timer!=-1 ) /* ウインドウォ?ク */
|
||||
skill_status_change_end(bl,SC_WINDWALK,-1);
|
||||
// the effect will still remain [celest]
|
||||
// if(sc_data[SC_WINDWALK].timer!=-1 ) /* ウインドウォ?ク */
|
||||
// skill_status_change_end(bl,SC_WINDWALK,-1);
|
||||
break;
|
||||
case SC_DECREASEAGI: /* 速度減少 */
|
||||
if (bl->type == BL_PC) // Celest
|
||||
@ -9840,6 +9842,7 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val
|
||||
case SC_SPEEDPOTION0: /* ?速ポ?ション */
|
||||
case SC_SPEEDPOTION1:
|
||||
case SC_SPEEDPOTION2:
|
||||
case SC_SPEEDPOTION3:
|
||||
calc_flag = 1;
|
||||
tick = 1000 * tick;
|
||||
val2 = 5*(2+type-SC_SPEEDPOTION0);
|
||||
|
@ -222,6 +222,7 @@ enum { // struct map_session_data
|
||||
SC_SPEEDPOTION0 = 37,
|
||||
SC_SPEEDPOTION1 = 38,
|
||||
SC_SPEEDPOTION2 = 39,
|
||||
SC_SPEEDPOTION3 = 40,
|
||||
SC_STRIPWEAPON = 50,
|
||||
SC_STRIPSHIELD = 51,
|
||||
SC_STRIPARMOR = 52,
|
||||
|
Loading…
x
Reference in New Issue
Block a user