- Corrected crash if itemskill is used without an attached player.
- Removed range checks for autospells as per UltraMage Aegis tests. - Added chatID skill fail check to skill_check_condition - Corrected @refresh not re-displaying your spirit spheres nor re-setting your cloth dye. - Now the "number of attackers" in mob_dead is counted only from online characters on the same map. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10307 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
c667825023
commit
36a86d07e4
@ -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/04/22
|
||||
* Corrected crash if itemskill is used without an attached player.
|
||||
* Removed range checks for autospells as per UltraMage Aegis tests.
|
||||
* Added chatID skill fail check to skill_check_condition
|
||||
* Corrected @refresh not re-displaying your spirit spheres nor re-setting
|
||||
your cloth dye.
|
||||
* Now the "number of attackers" in mob_dead is counted only from online
|
||||
characters on the same map.
|
||||
* Updated the autospell bonus scripts so you don't have to specify all the
|
||||
attack type criteria. If neither of BF_LONG/BF_SHORT is specified, the
|
||||
spell will trigger on both. If neither of BF_WEAPON/BF_MAGIC/BF_MISC is
|
||||
|
@ -7634,6 +7634,10 @@ int clif_refresh(struct map_session_data *sd) {
|
||||
clif_updatestatus(sd,SP_INT);
|
||||
clif_updatestatus(sd,SP_DEX);
|
||||
clif_updatestatus(sd,SP_LUK);
|
||||
if (sd->spiritball)
|
||||
clif_spiritball_single(sd->fd, sd);
|
||||
if (sd->vd.cloth_color)
|
||||
clif_refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF);
|
||||
map_foreachinrange(clif_getareachar,&sd->bl,AREA_SIZE,BL_ALL,sd);
|
||||
clif_weather_check(sd);
|
||||
return 0;
|
||||
|
@ -1790,12 +1790,18 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
||||
}
|
||||
}
|
||||
|
||||
for(i=0,mvp_damage=0;i<DAMAGELOG_SIZE && md->dmglog[i].id;i++)
|
||||
for(i=count=0,mvp_damage=0;i<DAMAGELOG_SIZE && md->dmglog[i].id;i++)
|
||||
{
|
||||
tmpsd[i] = map_charid2sd(md->dmglog[i].id);
|
||||
if(tmpsd[i] == NULL)
|
||||
continue;
|
||||
if(tmpsd[i]->bl.m != m || pc_isdead(tmpsd[i]))
|
||||
if(tmpsd[i]->bl.m != m)
|
||||
{
|
||||
tmpsd[i] = NULL;
|
||||
continue;
|
||||
}
|
||||
count++; //Only logged into same map chars are counted for the total.
|
||||
if (pc_isdead(tmpsd[i]))
|
||||
{
|
||||
tmpsd[i] = NULL;
|
||||
continue;
|
||||
@ -1805,7 +1811,6 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
||||
tmpsd[i] = NULL;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(mvp_damage<(unsigned int)md->dmglog[i].dmg){
|
||||
third_sd = second_sd;
|
||||
second_sd = mvp_sd;
|
||||
@ -1813,7 +1818,6 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
||||
mvp_damage=md->dmglog[i].dmg;
|
||||
}
|
||||
}
|
||||
count = i; //Total number of attackers.
|
||||
|
||||
if(!battle_config.exp_calc_type && count > 1)
|
||||
{ //Apply first-attacker 200% exp share bonus
|
||||
|
@ -7110,8 +7110,7 @@ BUILDIN_FUNC(itemskill)
|
||||
id=script_getnum(st,2);
|
||||
lv=script_getnum(st,3);
|
||||
|
||||
// 詠唱中にスキルアイテムは使用できない
|
||||
if(sd->ud.skilltimer != -1)
|
||||
if(!sd || sd->ud.skilltimer != -1)
|
||||
return 0;
|
||||
|
||||
sd->skillitem=id;
|
||||
|
@ -1440,9 +1440,6 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
|
||||
else
|
||||
tbl = bl;
|
||||
|
||||
if (tbl != src && !battle_check_range(src, tbl, skill_get_range2(src, skill, skilllv)))
|
||||
continue; //Autoskills DO check for target-src range. [Skotlex]
|
||||
rate = skill_get_inf(skill);
|
||||
switch (skill_get_casttype(skill)) {
|
||||
case CAST_GROUND:
|
||||
skill_castend_pos2(src, tbl->x, tbl->y, skill, skilllv, tick, 0);
|
||||
@ -1615,9 +1612,6 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
|
||||
else
|
||||
tbl = src;
|
||||
|
||||
if (tbl != bl && !battle_check_range(bl, tbl, skill_get_range2(bl, skillid, skilllv)))
|
||||
continue; //Autoskills DO check for target-src range. [Skotlex]
|
||||
|
||||
switch (skill_get_casttype(skillid)) {
|
||||
case CAST_GROUND:
|
||||
skill_castend_pos2(bl, tbl->x, tbl->y, skillid, skilllv, tick, 0);
|
||||
@ -7964,7 +7958,7 @@ int skill_check_condition (struct map_session_data *sd, int skill, int lv, int t
|
||||
|
||||
nullpo_retr(0, sd);
|
||||
|
||||
if (lv <= 0) return 0;
|
||||
if (lv <= 0 || sd->chatID) return 0;
|
||||
|
||||
if( battle_config.gm_skilluncond &&
|
||||
pc_isGM(sd)>= battle_config.gm_skilluncond &&
|
||||
|
Loading…
x
Reference in New Issue
Block a user