- 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://svn.code.sf.net/p/rathena/svn/trunk@9816 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2007-02-07 17:46:50 +00:00
parent c46f3cf135
commit 6597b8c74b
10 changed files with 32 additions and 41 deletions

View File

@ -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. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2007/02/07 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. * Removed deprecated console code.
* Moved CHAT_SIZE back to map.h because log_atcommand uses it on sql * Moved CHAT_SIZE back to map.h because log_atcommand uses it on sql
builds. (moved to clif.c in r9811) [FlavioJS] builds. (moved to clif.c in r9811) [FlavioJS]

View File

@ -20,6 +20,9 @@
======================== ========================
02/07
* Updated the range of BioExplosion and Self Destruction so they count as
ranged skills.
02/05 02/05
* Updated comments and inf2 values of the skill_db to use the new format. * Updated comments and inf2 values of the skill_db to use the new format.
* Soul Change now can't be casted on self. * Soul Change now can't be casted on self.

View File

@ -261,8 +261,6 @@ bDex 17
bLuk 18 bLuk 18
bAtk 41 bAtk 41
bAtk2 42 bAtk2 42
bMatk1 43
bMatk2 44
bDef 45 bDef 45
bDef2 46 bDef2 46
bMdef 47 bMdef 47
@ -299,7 +297,6 @@ bNearAtkDef 1020
bLongAtkDef 1021 bLongAtkDef 1021
bDoubleRate 1022 bDoubleRate 1022
bDoubleAddRate 1023 bDoubleAddRate 1023
bMatk 1024
bMatkRate 1025 bMatkRate 1025
bIgnoreDefEle 1026 bIgnoreDefEle 1026
bIgnoreDefRace 1027 bIgnoreDefRace 1027

View File

@ -204,7 +204,7 @@
170,-1,6,1,-1,0,0,10,1,no,0,0x2,0,weapon,0 //NPC_CRITICALSLASH#Defense disregard attack# 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# 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# 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# 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# 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# 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 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 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 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# 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# 10001,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0 //GD_KAFRACONTRACT#Kafra Contract#

View File

@ -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 || if(p->party.member[i].lv < p->min_lv ||
p->party.member[i].lv > p->max_lv) p->party.member[i].lv > p->max_lv)
int_party_check_lv(p); int_party_check_lv(p);
//Send online update to map servers
mapif_party_membermoved(&p->party, i);
break; break;
} }
return 0; return 0;

View File

@ -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 || if(p->party.member[i].lv < p->min_lv ||
p->party.member[i].lv > p->max_lv) p->party.member[i].lv > p->max_lv)
int_party_check_lv(p); int_party_check_lv(p);
//Send online update to map servers
mapif_party_membermoved(&p->party, i);
} }
break; break;
} }

View File

@ -959,7 +959,7 @@ static struct Damage battle_calc_weapon_attack(
if (battle_config.skillrange_by_distance && if (battle_config.skillrange_by_distance &&
(src->type&battle_config.skillrange_by_distance) (src->type&battle_config.skillrange_by_distance)
) { //based on distance between src/target [Skotlex] ) { //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; wd.flag=(wd.flag&~BF_RANGEMASK)|BF_SHORT;
else else
wd.flag=(wd.flag&~BF_RANGEMASK)|BF_LONG; wd.flag=(wd.flag&~BF_RANGEMASK)|BF_LONG;
@ -2204,7 +2204,7 @@ struct Damage battle_calc_magic_attack(
if (battle_config.skillrange_by_distance && if (battle_config.skillrange_by_distance &&
(src->type&battle_config.skillrange_by_distance) (src->type&battle_config.skillrange_by_distance)
) { //based on distance between src/target [Skotlex] ) { //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; ad.flag=(ad.flag&~BF_RANGEMASK)|BF_SHORT;
else else
ad.flag=(ad.flag&~BF_RANGEMASK)|BF_LONG; ad.flag=(ad.flag&~BF_RANGEMASK)|BF_LONG;
@ -2581,7 +2581,7 @@ struct Damage battle_calc_misc_attack(
if (battle_config.skillrange_by_distance && if (battle_config.skillrange_by_distance &&
(src->type&battle_config.skillrange_by_distance) (src->type&battle_config.skillrange_by_distance)
) { //based on distance between src/target [Skotlex] ) { //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; md.flag=(md.flag&~BF_RANGEMASK)|BF_SHORT;
else else
md.flag=(md.flag&~BF_RANGEMASK)|BF_LONG; md.flag=(md.flag&~BF_RANGEMASK)|BF_LONG;

View File

@ -1180,7 +1180,7 @@ enum _sp {
SP_ADDEFF, SP_RESEFF, // 1012-1013 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_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_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_IGNORE_DEF_ELE,SP_IGNORE_DEF_RACE, // 1026-1027
SP_ATK_RATE,SP_SPEED_ADDRATE,SP_ASPD_ADDRATE, // 1028-1030 SP_ATK_RATE,SP_SPEED_ADDRATE,SP_ASPD_ADDRATE, // 1028-1030
SP_MAGIC_ATK_DEF,SP_MISC_ATK_DEF, // 1031-1032 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_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_INTRAVISION, SP_ADD_MONSTER_DROP_ITEMGROUP, SP_SP_LOSS_RATE, // 2038-2040
SP_ADD_SKILL_BLOW, SP_SP_VANISH_RATE //2041 SP_ADD_SKILL_BLOW, SP_SP_VANISH_RATE //2041
//Before adding another, note that //Before adding another, note that these are free:
//1077 (SP_FREE, previously disguise), //1024 (SP_FREE2, previous matk)
//are available! //1077 (SP_FREE, previously disguise)
}; };
enum _look { enum _look {

View File

@ -1338,26 +1338,6 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
status->batk = cap_value(bonus, 0, USHRT_MAX); status->batk = cap_value(bonus, 0, USHRT_MAX);
} }
break; 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: case SP_DEF1:
if(sd->state.lr_flag != 2) { if(sd->state.lr_flag != 2) {
bonus = status->def + val; 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); pc_unequipitem(sd,sd->equip_index[i],2);
} }
if ((type == 1 || type == 2 || type == 3) && sd->status.party_id) { 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_levelup(sd);
party_send_movemap(sd);
}
status_calc_pc(sd,0); status_calc_pc(sd,0);
clif_skillinfoblock(sd); clif_skillinfoblock(sd);

View File

@ -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. //Non players get the value set, players need to stack with previous bonuses.
if (bl->type != BL_PC) if (bl->type != BL_PC)
status->batk = status->batk =
status->matk_min = status->matk_max =
status->hit = status->flee = status->hit = status->flee =
status->def2 = status->mdef2 = status->def2 = status->mdef2 =
status->cri = status->flee2 = 0; status->cri = status->flee2 = 0;
status->matk_min += status_base_matk_min(status); status->matk_min = status_base_matk_min(status);
status->matk_max += status_base_matk_max(status); status->matk_max = status_base_matk_max(status);
status->hit += level + status->dex; status->hit += level + status->dex;
status->flee += level + status->agi; 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); status->matk_max = status_base_matk_max(status);
//Bonuses from previous matk //Bonuses from previous matk
status->matk_max += b_status->matk_max - status_base_matk_max(b_status); if(sd->matk_rate != 100){
status->matk_min += b_status->matk_min - status_base_matk_min(b_status); 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_min = status_calc_matk(&sd->bl, &sd->sc, status->matk_min);
status->matk_max = status_calc_matk(&sd->bl, &sd->sc, status->matk_max); status->matk_max = status_calc_matk(&sd->bl, &sd->sc, status->matk_max);