From 15d86669fb2fcedefa83d76cfe8b4bf3f110d481 Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 7 Feb 2007 17:46:50 +0000 Subject: - Updated the range of BioExplosion and Self Destruction so they count as ranged skills. - Removed old script bonuses bMatk, bMatk1, bMatk2 - Fixed char-server not sending online notification when a party member logs in. - When skill range by distance is set, the distance checked for is now 5 cells rather than 3. - Fixed bMatkRate bonuses not applying to status earned modifications to int/matk. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9816 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 7 +++++++ db/Changelog.txt | 3 +++ db/const.txt | 3 --- db/skill_db.txt | 4 ++-- src/char/int_party.c | 2 ++ src/char_sql/int_party.c | 2 ++ src/map/battle.c | 6 +++--- src/map/map.h | 8 ++++---- src/map/pc.c | 27 +++------------------------ src/map/status.c | 11 ++++++----- 10 files changed, 32 insertions(+), 41 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 943f15c16..9b645a7d5 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,13 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2007/02/07 + * Removed old script bonuses bMatk, bMatk1, bMatk2. + * Fixed char-server not sending online notification when a party member + logs in. + * When skill range by distance is set, the distance checked for is now 5 + cells rather than 3. + * Fixed bMatkRate bonuses not applying to status earned modifications to + int/matk. [Skotlex] * Removed deprecated console code. * Moved CHAT_SIZE back to map.h because log_atcommand uses it on sql builds. (moved to clif.c in r9811) [FlavioJS] diff --git a/db/Changelog.txt b/db/Changelog.txt index e389f1bd5..69a86761c 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -20,6 +20,9 @@ ======================== +02/07 + * Updated the range of BioExplosion and Self Destruction so they count as + ranged skills. 02/05 * Updated comments and inf2 values of the skill_db to use the new format. * Soul Change now can't be casted on self. diff --git a/db/const.txt b/db/const.txt index 7f71a0a35..097ac1ed8 100644 --- a/db/const.txt +++ b/db/const.txt @@ -261,8 +261,6 @@ bDex 17 bLuk 18 bAtk 41 bAtk2 42 -bMatk1 43 -bMatk2 44 bDef 45 bDef2 46 bMdef 47 @@ -299,7 +297,6 @@ bNearAtkDef 1020 bLongAtkDef 1021 bDoubleRate 1022 bDoubleAddRate 1023 -bMatk 1024 bMatkRate 1025 bIgnoreDefEle 1026 bIgnoreDefRace 1027 diff --git a/db/skill_db.txt b/db/skill_db.txt index 349871ab9..a4f465c32 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -204,7 +204,7 @@ 170,-1,6,1,-1,0,0,10,1,no,0,0x2,0,weapon,0 //NPC_CRITICALSLASH#Defense disregard attack# 171,-1,8,1,-1,0,0,10,2:3:4:5:6:7:8:9:10:11,no,0,0x2,0,weapon,0 //NPC_COMBOATTACK#Multi-stage Attack# 172,-1,6,1,-1,0,0,10,1,no,0,0x2,0,weapon,0 //NPC_GUIDEATTACK#On-target Impact Attack# -173,1,6,4,3,2,5,10,1,no,0,0x2,0,misc,3 //NPC_SELFDESTRUCTION#Suicide bombing# +173,5,6,4,3,2,5,10,1,no,0,0x2,0,misc,3 //NPC_SELFDESTRUCTION#Suicide bombing# 174,-1,6,1,-1,2,3,1,1,no,0,0x2,0,weapon,0 //NPC_SPLASHATTACK#Splash attack# 175,0,0,4,0,1,0,10,1,no,0,0x2,0,misc,0 //NPC_SUICIDE#Suicide# 176,-1,6,1,-1,0,0,5,1,no,0,0x2,0,weapon,0 //NPC_POISON#Poison Attack# @@ -612,7 +612,7 @@ 8013,9,6,1,0,0,0,5,1:2:3:4:5,no,0,0,0,magic,0 //HVAN_CAPRICE 8014,0,6,4,0,1,0,5,0,no,0,0,0,none,0 //HVAN_CHAOTIC 8015,0,0,0,0,1,0,5,0,no,0,0,0,none,0 //HVAN_INSTRUCT -8016,0,6,4,-1,2,4,3,1,no,0,0,0,misc,0 //HVAN_EXPLOSION +8016,5,6,4,-1,2,4,3,1,no,0,0,0,misc,0 //HVAN_EXPLOSION 10000,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0 //GD_APPROVAL#Approval# 10001,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0 //GD_KAFRACONTRACT#Kafra Contract# diff --git a/src/char/int_party.c b/src/char/int_party.c index b043b8649..96a120aab 100644 --- a/src/char/int_party.c +++ b/src/char/int_party.c @@ -413,6 +413,8 @@ int inter_party_logged(int party_id, int account_id, int char_id) if(p->party.member[i].lv < p->min_lv || p->party.member[i].lv > p->max_lv) int_party_check_lv(p); + //Send online update to map servers + mapif_party_membermoved(&p->party, i); break; } return 0; diff --git a/src/char_sql/int_party.c b/src/char_sql/int_party.c index 054df47a7..8553862fe 100644 --- a/src/char_sql/int_party.c +++ b/src/char_sql/int_party.c @@ -483,6 +483,8 @@ int inter_party_logged(int party_id, int account_id, int char_id) if(p->party.member[i].lv < p->min_lv || p->party.member[i].lv > p->max_lv) int_party_check_lv(p); + //Send online update to map servers + mapif_party_membermoved(&p->party, i); } break; } diff --git a/src/map/battle.c b/src/map/battle.c index 4aec803f7..9f8270f42 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -959,7 +959,7 @@ static struct Damage battle_calc_weapon_attack( if (battle_config.skillrange_by_distance && (src->type&battle_config.skillrange_by_distance) ) { //based on distance between src/target [Skotlex] - if (check_distance_bl(src, target, 3)) + if (check_distance_bl(src, target, 5)) wd.flag=(wd.flag&~BF_RANGEMASK)|BF_SHORT; else wd.flag=(wd.flag&~BF_RANGEMASK)|BF_LONG; @@ -2204,7 +2204,7 @@ struct Damage battle_calc_magic_attack( if (battle_config.skillrange_by_distance && (src->type&battle_config.skillrange_by_distance) ) { //based on distance between src/target [Skotlex] - if (check_distance_bl(src, target, 3)) + if (check_distance_bl(src, target, 5)) ad.flag=(ad.flag&~BF_RANGEMASK)|BF_SHORT; else ad.flag=(ad.flag&~BF_RANGEMASK)|BF_LONG; @@ -2581,7 +2581,7 @@ struct Damage battle_calc_misc_attack( if (battle_config.skillrange_by_distance && (src->type&battle_config.skillrange_by_distance) ) { //based on distance between src/target [Skotlex] - if (check_distance_bl(src, target, 3)) + if (check_distance_bl(src, target, 5)) md.flag=(md.flag&~BF_RANGEMASK)|BF_SHORT; else md.flag=(md.flag&~BF_RANGEMASK)|BF_LONG; diff --git a/src/map/map.h b/src/map/map.h index cc6228bd2..fb0756c65 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -1180,7 +1180,7 @@ enum _sp { SP_ADDEFF, SP_RESEFF, // 1012-1013 SP_BASE_ATK,SP_ASPD_RATE,SP_HP_RECOV_RATE,SP_SP_RECOV_RATE,SP_SPEED_RATE, // 1014-1018 SP_CRITICAL_DEF,SP_NEAR_ATK_DEF,SP_LONG_ATK_DEF, // 1019-1021 - SP_DOUBLE_RATE, SP_DOUBLE_ADD_RATE, SP_MATK, SP_MATK_RATE, // 1022-1025 + SP_DOUBLE_RATE, SP_DOUBLE_ADD_RATE, SP_FREE2, SP_MATK_RATE, // 1022-1025 SP_IGNORE_DEF_ELE,SP_IGNORE_DEF_RACE, // 1026-1027 SP_ATK_RATE,SP_SPEED_ADDRATE,SP_ASPD_ADDRATE, // 1028-1030 SP_MAGIC_ATK_DEF,SP_MISC_ATK_DEF, // 1031-1032 @@ -1211,9 +1211,9 @@ enum _sp { SP_UNSTRIPABLE_WEAPON,SP_UNSTRIPABLE_ARMOR,SP_UNSTRIPABLE_HELM,SP_UNSTRIPABLE_SHIELD, // 2034-2037 SP_INTRAVISION, SP_ADD_MONSTER_DROP_ITEMGROUP, SP_SP_LOSS_RATE, // 2038-2040 SP_ADD_SKILL_BLOW, SP_SP_VANISH_RATE //2041 - //Before adding another, note that - //1077 (SP_FREE, previously disguise), - //are available! + //Before adding another, note that these are free: + //1024 (SP_FREE2, previous matk) + //1077 (SP_FREE, previously disguise) }; enum _look { diff --git a/src/map/pc.c b/src/map/pc.c index a0741f10d..307fb791c 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1338,26 +1338,6 @@ int pc_bonus(struct map_session_data *sd,int type,int val) status->batk = cap_value(bonus, 0, USHRT_MAX); } break; - case SP_MATK1: - if(sd->state.lr_flag != 2) { - bonus = status->matk_max + val; - status->matk_max = cap_value(bonus, 0, USHRT_MAX); - } - break; - case SP_MATK2: - if(sd->state.lr_flag != 2) { - bonus = status->matk_min + val; - status->matk_min = cap_value(bonus, 0, USHRT_MAX); - } - break; - case SP_MATK: - if(sd->state.lr_flag != 2) { - bonus = status->matk_max + val; - status->matk_max = cap_value(bonus, 0, USHRT_MAX); - bonus = status->matk_min + val; - status->matk_min = cap_value(bonus, 0, USHRT_MAX); - } - break; case SP_DEF1: if(sd->state.lr_flag != 2) { bonus = status->def + val; @@ -4639,10 +4619,9 @@ int pc_resetlvl(struct map_session_data* sd,int type) pc_unequipitem(sd,sd->equip_index[i],2); } - if ((type == 1 || type == 2 || type == 3) && sd->status.party_id) { - //Send map-change packet to do a level range check and break party settings. [Skotlex] - party_send_movemap(sd); - } + if ((type == 1 || type == 2 || type == 3) && sd->status.party_id) + party_send_levelup(sd); + status_calc_pc(sd,0); clif_skillinfoblock(sd); diff --git a/src/map/status.c b/src/map/status.c index 5f53f6655..bfae98dea 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1211,13 +1211,12 @@ void status_calc_misc(struct block_list *bl, struct status_data *status, int lev //Non players get the value set, players need to stack with previous bonuses. if (bl->type != BL_PC) status->batk = - status->matk_min = status->matk_max = status->hit = status->flee = status->def2 = status->mdef2 = status->cri = status->flee2 = 0; - status->matk_min += status_base_matk_min(status); - status->matk_max += status_base_matk_max(status); + status->matk_min = status_base_matk_min(status); + status->matk_max = status_base_matk_max(status); status->hit += level + status->dex; status->flee += level + status->agi; @@ -2665,8 +2664,10 @@ void status_calc_bl_sub_pc(struct map_session_data *sd, unsigned long flag) status->matk_max = status_base_matk_max(status); //Bonuses from previous matk - status->matk_max += b_status->matk_max - status_base_matk_max(b_status); - status->matk_min += b_status->matk_min - status_base_matk_min(b_status); + if(sd->matk_rate != 100){ + status->matk_max = status->matk_max * sd->matk_rate/100; + status->matk_min = status->matk_min * sd->matk_rate/100; + } status->matk_min = status_calc_matk(&sd->bl, &sd->sc, status->matk_min); status->matk_max = status_calc_matk(&sd->bl, &sd->sc, status->matk_max); -- cgit v1.2.3-70-g09d2