diff --git a/conf/msg_conf/map_msg_idn.conf b/conf/msg_conf/map_msg_idn.conf index 6b352c6b2c..051e733fe1 100644 --- a/conf/msg_conf/map_msg_idn.conf +++ b/conf/msg_conf/map_msg_idn.conf @@ -498,9 +498,13 @@ // Sistem surat (e-mail) 510: Kamu memiliki %d pesan baru (ada %d pesan yang belum dibaca) +// Instancing +515: Intance kamu sudha dimuat ulang. +516: Database Instance sudah dimuat ulang. + // Pesan yang berhubungan dengan deteksi Bot (Saat ini belum diimplementasikan) 535: Kemungkinan BOT (99%%) atau client yang digunakan sudah dimodifikasi '%s' (akun: %d, char_id: %d). Pemain ini bisa melihat nama kamu saat kamu sedang tidak terlihat. -536: Karakter '%s' (akun: %d) sedang mencoba menggunakan bot (Pemain ini sedang mencoba mendeteksi player umpan). +536: Karakter '%s' (akun: %d) sedang mencoba menggunakan bot (Pemain ini sedang mencoba mendeteksi pemain umpan). 537: Karakter '%s' (akun: %d) sedang mencoba menggunakan bot (Pemain ini sedang mencoba mendeteksi monster umpan). // Pesan tentang pelanggaran transaksi. @@ -927,7 +931,6 @@ 1096: PartyLock | 1097: GuildLock | 1098: Loadevent | -1099: Src4instance | 1100: Chmautojoin | 1101: nousecart | 1102: noitemconsumption | diff --git a/src/map/pc.c b/src/map/pc.c index 919fe9b864..f1ff9025a5 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -8540,6 +8540,11 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos) return 0; } + if( sd->sc.count && sd->sc.data[SC_PYROCLASTIC] && sd->inventory_data[n]->type == IT_WEAPON ) { + clif_equipitemack(sd,0,0,0); + return 0; + } + if( DIFF_TICK(sd->canequip_tick,gettick()) > 0 ) { clif_equipitemack(sd,n,0,0); @@ -8749,14 +8754,13 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag) { return 0; } - // if player is berserk then cannot unequip - if (!(flag & 2) && sd->sc.count && (sd->sc.data[SC_BERSERK] || sd->sc.data[SC_SATURDAYNIGHTFEVER] || sd->sc.data[SC__BLOODYLUST])) - { - clif_unequipitemack(sd,n,0,0); - return 0; - } - - if( !(flag&2) && sd->sc.count && sd->sc.data[SC_KYOUGAKU] ) + // status change that makes player cannot unequip equipment + if( !(flag&2) && sd->sc.count && ( + sd->sc.data[SC_BERSERK] || + sd->sc.data[SC_SATURDAYNIGHTFEVER] || + sd->sc.data[SC__BLOODYLUST] || + sd->sc.data[SC_KYOUGAKU] || + (sd->sc.data[SC_PYROCLASTIC] && sd->inventory_data[n]->type == IT_WEAPON)) ) // can't switch weapon { clif_unequipitemack(sd,n,0,0); return 0; @@ -9856,7 +9860,7 @@ static bool pc_readdb_job_exp(char* fields[], int columns, int current) /*========================================== * pc DB reading. - * exp.txt - required experience values + * job_exp.txt - required experience values * skill_tree.txt - skill tree for every class * attr_fix.txt - elemental adjustment table * job_db1.txt - job,weight,hp_factor,hp_multiplicator,sp_factor,aspds/lvl diff --git a/src/map/status.c b/src/map/status.c index e8ce158b44..fb4c98a08b 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -7860,7 +7860,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty { struct block_list *src = val2?map_id2bl(val2):NULL; struct status_change *sc2 = src?status_get_sc(src):NULL; - int type2 = ((type == SC_TINDER_BREAKER2)?SC_TINDER_BREAKER:SC_CLOSECONFINE); + enum sc_type type2 = ((type == SC_TINDER_BREAKER2)?SC_TINDER_BREAKER:SC_CLOSECONFINE); struct status_change_entry *sce2 = sc2?sc2->data[type2]:NULL; if (src && sc2) { @@ -8724,15 +8724,15 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty val4 = 50; //def reduc % break; case SC_GRANITIC_ARMOR: - val2 = 2*val1; //dmg hp reduction - val3 = (6*status_get_max_hp(src))/100; //dmg hp on status end - val4 = 5 * val1; //unknow formula + val2 = 2*val1; //dmg reduction + val3 = 6*val1; //dmg taken on status end (6%:12%:18%:24%:30%) + val4 = 5*val1; //unknow formula break; case SC_MAGMA_FLOW: val2 = 3*val1; //activation chance break; case SC_PYROCLASTIC: - val2 += 10*val1+status_get_lv(src); //atk bonus + val2 += 10*val1; //atk bonus val3 = 2*val1;//Chance To AutoCast Hammer Fall % break; case SC_PARALYSIS: //[Lighta] need real info @@ -9305,16 +9305,17 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const vd = status_get_viewdata(bl); calc_flag = StatusChangeFlagTable[type]; switch(type){ - case SC_GRANITIC_ARMOR:{ - int dammage = status->max_hp*sce->val3/100; - if(status->hp < dammage) //to not kill him - dammage = status->hp-1; - status_damage(NULL, bl, dammage,0,0,1); + case SC_GRANITIC_ARMOR: + { + int damage = status->max_hp*sce->val3/100; + if(status->hp < damage) //to not kill him + damage = status->hp-1; + status_damage(NULL,bl,damage,0,0,1); + } break; - } case SC_PYROCLASTIC: if(bl->type == BL_PC) - skill_break_equip(bl,bl,EQP_WEAPON,10000,BCT_SELF); + skill_break_equip(bl,bl,EQP_WEAPON,10000,BCT_SELF); break; case SC_WEDDING: case SC_XMAS: @@ -9498,7 +9499,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const case SC_CLOSECONFINE2:{ struct block_list *src = sce->val2?map_id2bl(sce->val2):NULL; struct status_change *sc2 = src?status_get_sc(src):NULL; - int type2 = ((type==SC_CLOSECONFINE2)?SC_CLOSECONFINE:SC_TINDER_BREAKER); + enum sc_type type2 = ((type==SC_CLOSECONFINE2)?SC_CLOSECONFINE:SC_TINDER_BREAKER); if (src && sc2 && sc2->data[type2]) { //If status was already ended, do nothing. //Decrease count