Fix Granitic Armor's status effect, wrong calculation that not causing damage taken at the end of status (bugreport:7786)
Fix Pyroclastic's status effect: "can't switch the weapon equipped" (http://irowiki.org/wiki/Pyroclastic), still need more info update map messages for IDN (conf/msg_conf/map_msg_idn.conf) git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17399 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
e18cb74516
commit
a59ae7bee1
@ -498,9 +498,13 @@
|
|||||||
// Sistem surat (e-mail)
|
// Sistem surat (e-mail)
|
||||||
510: Kamu memiliki %d pesan baru (ada %d pesan yang belum dibaca)
|
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)
|
// 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.
|
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).
|
537: Karakter '%s' (akun: %d) sedang mencoba menggunakan bot (Pemain ini sedang mencoba mendeteksi monster umpan).
|
||||||
|
|
||||||
// Pesan tentang pelanggaran transaksi.
|
// Pesan tentang pelanggaran transaksi.
|
||||||
@ -927,7 +931,6 @@
|
|||||||
1096: PartyLock |
|
1096: PartyLock |
|
||||||
1097: GuildLock |
|
1097: GuildLock |
|
||||||
1098: Loadevent |
|
1098: Loadevent |
|
||||||
1099: Src4instance |
|
|
||||||
1100: Chmautojoin |
|
1100: Chmautojoin |
|
||||||
1101: nousecart |
|
1101: nousecart |
|
||||||
1102: noitemconsumption |
|
1102: noitemconsumption |
|
||||||
|
22
src/map/pc.c
22
src/map/pc.c
@ -8540,6 +8540,11 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos)
|
|||||||
return 0;
|
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 )
|
if( DIFF_TICK(sd->canequip_tick,gettick()) > 0 )
|
||||||
{
|
{
|
||||||
clif_equipitemack(sd,n,0,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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if player is berserk then cannot unequip
|
// 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]))
|
if( !(flag&2) && sd->sc.count && (
|
||||||
{
|
sd->sc.data[SC_BERSERK] ||
|
||||||
clif_unequipitemack(sd,n,0,0);
|
sd->sc.data[SC_SATURDAYNIGHTFEVER] ||
|
||||||
return 0;
|
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
|
||||||
if( !(flag&2) && sd->sc.count && sd->sc.data[SC_KYOUGAKU] )
|
|
||||||
{
|
{
|
||||||
clif_unequipitemack(sd,n,0,0);
|
clif_unequipitemack(sd,n,0,0);
|
||||||
return 0;
|
return 0;
|
||||||
@ -9856,7 +9860,7 @@ static bool pc_readdb_job_exp(char* fields[], int columns, int current)
|
|||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* pc DB reading.
|
* pc DB reading.
|
||||||
* exp.txt - required experience values
|
* job_exp.txt - required experience values
|
||||||
* skill_tree.txt - skill tree for every class
|
* skill_tree.txt - skill tree for every class
|
||||||
* attr_fix.txt - elemental adjustment table
|
* attr_fix.txt - elemental adjustment table
|
||||||
* job_db1.txt - job,weight,hp_factor,hp_multiplicator,sp_factor,aspds/lvl
|
* job_db1.txt - job,weight,hp_factor,hp_multiplicator,sp_factor,aspds/lvl
|
||||||
|
@ -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 block_list *src = val2?map_id2bl(val2):NULL;
|
||||||
struct status_change *sc2 = src?status_get_sc(src):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;
|
struct status_change_entry *sce2 = sc2?sc2->data[type2]:NULL;
|
||||||
|
|
||||||
if (src && sc2) {
|
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 %
|
val4 = 50; //def reduc %
|
||||||
break;
|
break;
|
||||||
case SC_GRANITIC_ARMOR:
|
case SC_GRANITIC_ARMOR:
|
||||||
val2 = 2*val1; //dmg hp reduction
|
val2 = 2*val1; //dmg reduction
|
||||||
val3 = (6*status_get_max_hp(src))/100; //dmg hp on status end
|
val3 = 6*val1; //dmg taken on status end (6%:12%:18%:24%:30%)
|
||||||
val4 = 5 * val1; //unknow formula
|
val4 = 5*val1; //unknow formula
|
||||||
break;
|
break;
|
||||||
case SC_MAGMA_FLOW:
|
case SC_MAGMA_FLOW:
|
||||||
val2 = 3*val1; //activation chance
|
val2 = 3*val1; //activation chance
|
||||||
break;
|
break;
|
||||||
case SC_PYROCLASTIC:
|
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 %
|
val3 = 2*val1;//Chance To AutoCast Hammer Fall %
|
||||||
break;
|
break;
|
||||||
case SC_PARALYSIS: //[Lighta] need real info
|
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);
|
vd = status_get_viewdata(bl);
|
||||||
calc_flag = StatusChangeFlagTable[type];
|
calc_flag = StatusChangeFlagTable[type];
|
||||||
switch(type){
|
switch(type){
|
||||||
case SC_GRANITIC_ARMOR:{
|
case SC_GRANITIC_ARMOR:
|
||||||
int dammage = status->max_hp*sce->val3/100;
|
{
|
||||||
if(status->hp < dammage) //to not kill him
|
int damage = status->max_hp*sce->val3/100;
|
||||||
dammage = status->hp-1;
|
if(status->hp < damage) //to not kill him
|
||||||
status_damage(NULL, bl, dammage,0,0,1);
|
damage = status->hp-1;
|
||||||
|
status_damage(NULL,bl,damage,0,0,1);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case SC_PYROCLASTIC:
|
case SC_PYROCLASTIC:
|
||||||
if(bl->type == BL_PC)
|
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;
|
break;
|
||||||
case SC_WEDDING:
|
case SC_WEDDING:
|
||||||
case SC_XMAS:
|
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:{
|
case SC_CLOSECONFINE2:{
|
||||||
struct block_list *src = sce->val2?map_id2bl(sce->val2):NULL;
|
struct block_list *src = sce->val2?map_id2bl(sce->val2):NULL;
|
||||||
struct status_change *sc2 = src?status_get_sc(src):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 (src && sc2 && sc2->data[type2]) {
|
||||||
//If status was already ended, do nothing.
|
//If status was already ended, do nothing.
|
||||||
//Decrease count
|
//Decrease count
|
||||||
|
Loading…
x
Reference in New Issue
Block a user