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)
|
||||
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 |
|
||||
|
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;
|
||||
}
|
||||
|
||||
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
|
||||
|
@ -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,13 +9305,14 @@ 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);
|
||||
break;
|
||||
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);
|
||||
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user