- In CELL_NOSTACK mode, mob_canreach will now ignore other players when checking if there's a path to the player.
- Added RG_RAID to the list of skills that need a status_checkskilluse on skill_attack. - Added the mapflag check monster_noteleport to AL_TELEPORT. - Fixed the sc_def rate not being reduced in status_change_start. - The battle config options sp_rate and hp_rate are now applied independently of the same type of bonuses from cards. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5300 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
a56eb4b977
commit
5044ec742c
@ -4,6 +4,14 @@ 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. EVERYTHING ELSE
|
||||
GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
|
||||
2006/02/16
|
||||
* The battle config options sp_rate and hp_rate are now applied
|
||||
independently of the same type of bonuses from cards. [Skotlex]
|
||||
* In CELL_NOSTACK mode, mob_canreach will now ignore other players when
|
||||
checking if there's a path to the player. [Skotlex]
|
||||
* Added RG_RAID to the list of skills that need a status_checkskilluse on
|
||||
skill_attack. [Skotlex]
|
||||
* Added the mapflag check monster_noteleport to AL_TELEPORT. [Skotlex]
|
||||
* Fixed the sc_def rate not being reduced in status_change_start. [Skotlex]
|
||||
* Changed the include in irc.c from strings.h to string.h, which fixes a
|
||||
bunch of compilation warnings here... [Skotlex]
|
||||
* Updated the SQL login/char servers to let the mysql server grant the new
|
||||
|
@ -612,7 +612,11 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range, int state
|
||||
easy = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef CELL_NOSTACK
|
||||
//In no stack mode, do these path searches ignoring other players as it's just
|
||||
//for reachability judging, not the actual path used. [Skotlex]
|
||||
easy |= 0x30000;
|
||||
#endif
|
||||
if( md->bl.m != bl->m) // 違うャbプ
|
||||
return 0;
|
||||
|
||||
|
@ -1525,7 +1525,7 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
|
||||
return 0;
|
||||
|
||||
//Note that splash attacks often only check versus the targetted mob, those around the splash area normally don't get checked for being hidden/cloaked/etc. [Skotlex]
|
||||
if ((skill_get_nk(skillid) == NK_SPLASH_DAMAGE || skillid == ASC_METEORASSAULT || skillid == SN_SHARPSHOOTING)
|
||||
if ((skill_get_nk(skillid) == NK_SPLASH_DAMAGE || skillid == ASC_METEORASSAULT || skillid == SN_SHARPSHOOTING || skillid == RG_RAID)
|
||||
&& !status_check_skilluse(dsrc, bl, skillid, 1))
|
||||
return 0;
|
||||
|
||||
@ -3163,7 +3163,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
if(status_isdead(bl) && skillid != NPC_REBIRTH && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO)
|
||||
return 1;
|
||||
|
||||
if (skillid >= 0 && skillid < sizeof(SkillStatusChangeTable)/sizeof(SkillStatusChangeTable[0]))
|
||||
if (skillid > 0 && skillid < MAX_SKILL)
|
||||
type = SkillStatusChangeTable[skillid];
|
||||
//Shouldn't be needed, skillnotok's return value is highly unlikely to have changed after you started casting. [Skotlex]
|
||||
// if (sd && skillnotok(skillid, sd)) // [MouseJstr]
|
||||
@ -4344,7 +4344,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
clif_skill_warppoint(sd,skillid,"Random",
|
||||
mapindex_id2name(sd->status.save_point.map),"","");
|
||||
}
|
||||
} else if(dstmd)
|
||||
} else if(dstmd && !map[sd->bl.m].flag.monster_noteleport)
|
||||
mob_warp(dstmd,-1,-1,-1,3);
|
||||
break;
|
||||
|
||||
|
@ -610,8 +610,8 @@ int status_calc_pc(struct map_session_data* sd,int first)
|
||||
// these are not zeroed. [zzo]
|
||||
|
||||
sd->speed = DEFAULT_WALK_SPEED;
|
||||
sd->hprate=battle_config.hp_rate;
|
||||
sd->sprate=battle_config.sp_rate;
|
||||
sd->hprate=100;
|
||||
sd->sprate=100;
|
||||
sd->castrate=100;
|
||||
sd->delayrate=100;
|
||||
sd->dsprate=100;
|
||||
@ -1386,12 +1386,14 @@ int status_calc_pc(struct map_session_data* sd,int first)
|
||||
// Apply relative modifiers from equipment
|
||||
if(sd->hprate!=100)
|
||||
sd->status.max_hp = sd->status.max_hp * sd->hprate/100;
|
||||
if(battle_config.hp_rate != 100)
|
||||
sd->status.max_hp = sd->status.max_hp * battle_config.hp_rate/100;
|
||||
|
||||
if(sd->status.max_hp > battle_config.max_hp)
|
||||
sd->status.max_hp = battle_config.max_hp;
|
||||
if(sd->status.max_hp <= 0) sd->status.max_hp = 1;
|
||||
if(sd->status.hp>sd->status.max_hp)
|
||||
sd->status.hp=sd->status.max_hp;
|
||||
if(sd->status.max_hp <= 0) sd->status.max_hp = 1;
|
||||
|
||||
// Basic natural HP regeneration value
|
||||
sd->nhealhp = 1 + (sd->paramc[2]/5) + (sd->status.max_hp/200);
|
||||
@ -1443,7 +1445,9 @@ int status_calc_pc(struct map_session_data* sd,int first)
|
||||
// Apply relative modifiers from equipment
|
||||
if(sd->sprate!=100)
|
||||
sd->status.max_sp = sd->status.max_sp * sd->sprate/100;
|
||||
|
||||
if(battle_config.sp_rate != 100)
|
||||
sd->status.max_sp = sd->status.max_sp * battle_config.sp_rate/100;
|
||||
|
||||
if(sd->status.max_sp > battle_config.max_sp)
|
||||
sd->status.max_sp = battle_config.max_sp;
|
||||
if(sd->status.sp>sd->status.max_sp)
|
||||
@ -3494,7 +3498,7 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
|
||||
//Check rate
|
||||
if (!(flag&(4|1))) {
|
||||
rate*=100; //Pass to 10000 = 100%
|
||||
if (flag&8) {
|
||||
if (!(flag&8)) {
|
||||
race = status_get_sc_def(bl, type);
|
||||
if (race)
|
||||
rate -= rate*race/10000;
|
||||
|
Loading…
x
Reference in New Issue
Block a user