* Code consistency updates. No functional changes. Credits to Lighta.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15974 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
2a8f785f04
commit
529295983e
@ -394,7 +394,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
|
||||
(skill_num && skill_get_ele(skill_num, skill_lv) == ELE_GHOST) ||
|
||||
(!skill_num && (status_get_status_data(src))->rhw.ele == ELE_GHOST)
|
||||
)
|
||||
status_change_end(bl,SC_WHITEIMPRISON,-1); // Those skills do damage and removes effect
|
||||
status_change_end(bl,SC_WHITEIMPRISON,INVALID_TIMER); // Those skills do damage and removes effect
|
||||
else
|
||||
{
|
||||
d->dmg_lv = ATK_BLOCK;
|
||||
@ -468,7 +468,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
|
||||
clif_millenniumshield(sd,sce->val2);
|
||||
sce->val3 = 1000; // Next Shield
|
||||
} else
|
||||
status_change_end(bl,SC_MILLENNIUMSHIELD,-1); // All shields down
|
||||
status_change_end(bl,SC_MILLENNIUMSHIELD,INVALID_TIMER); // All shields down
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -556,11 +556,11 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
|
||||
|
||||
if( sc->data[SC_DEEPSLEEP] ) {
|
||||
damage += damage / 2; // 1.5 times more damage while in Deep Sleep.
|
||||
status_change_end(bl,SC_DEEPSLEEP,-1);
|
||||
status_change_end(bl,SC_DEEPSLEEP,INVALID_TIMER);
|
||||
}
|
||||
|
||||
if( sc->data[SC_VOICEOFSIREN] )
|
||||
status_change_end(bl,SC_VOICEOFSIREN,-1);
|
||||
status_change_end(bl,SC_VOICEOFSIREN,INVALID_TIMER);
|
||||
}
|
||||
|
||||
|
||||
@ -632,9 +632,9 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
|
||||
//Finally added to remove the status of immobile when aimedbolt is used. [Jobbie]
|
||||
if( skill_num == RA_AIMEDBOLT && (sc->data[SC_BITE] || sc->data[SC_ANKLE] || sc->data[SC_ELECTRICSHOCKER]) )
|
||||
{
|
||||
status_change_end(bl, SC_BITE, -1);
|
||||
status_change_end(bl, SC_ANKLE, -1);
|
||||
status_change_end(bl, SC_ELECTRICSHOCKER, -1);
|
||||
status_change_end(bl, SC_BITE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_ANKLE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_ELECTRICSHOCKER, INVALID_TIMER);
|
||||
}
|
||||
|
||||
//Finally Kyrie because it may, or not, reduce damage to 0.
|
||||
@ -661,7 +661,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
|
||||
unit_setdir(bl, dir);
|
||||
}
|
||||
d->dmg_lv = ATK_DEF;
|
||||
status_change_end(bl, SC_LIGHTNINGWALK, -1);
|
||||
status_change_end(bl, SC_LIGHTNINGWALK, INVALID_TIMER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -680,14 +680,14 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
|
||||
if( sc && sc->data[SC__SHADOWFORM] ) {
|
||||
struct block_list *s_bl = map_id2bl(sc->data[SC__SHADOWFORM]->val2);
|
||||
if( !s_bl ) { // If the shadow form target is not present remove the sc.
|
||||
status_change_end(bl, SC__SHADOWFORM, -1);
|
||||
status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
|
||||
} else if( status_isdead(s_bl) || !battle_check_target(src,s_bl,BCT_ENEMY)) { // If the shadow form target is dead or not your enemy remove the sc in both.
|
||||
status_change_end(bl, SC__SHADOWFORM, -1);
|
||||
status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
|
||||
if( s_bl->type == BL_PC )
|
||||
((TBL_PC*)s_bl)->shadowform_id = 0;
|
||||
} else {
|
||||
if( (--sc->data[SC__SHADOWFORM]->val3) < 0 ) { // If you have exceded max hits supported, remove the sc in both.
|
||||
status_change_end(bl, SC__SHADOWFORM, -1);
|
||||
status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
|
||||
if( s_bl->type == BL_PC )
|
||||
((TBL_PC*)s_bl)->shadowform_id = 0;
|
||||
} else {
|
||||
@ -1589,11 +1589,11 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
|
||||
i*=i;
|
||||
ATK_ADD(i); //Add str bonus.
|
||||
switch (tstatus->size) { //Size-fix. Is this modified by weapon perfection?
|
||||
case 0: //Small: 125%
|
||||
case SZ_SMALL: //Small: 125%
|
||||
ATK_RATE(125);
|
||||
break;
|
||||
//case 1: //Medium: 100%
|
||||
case 2: //Large: 75%
|
||||
//case SZ_MEDIUM: //Medium: 100%
|
||||
case SZ_BIG: //Large: 75%
|
||||
ATK_RATE(75);
|
||||
break;
|
||||
}
|
||||
@ -1610,7 +1610,6 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
|
||||
sd->inventory_data[index] &&
|
||||
sd->inventory_data[index]->type == IT_ARMOR)
|
||||
ATK_ADD(sd->inventory_data[index]->weight/10);
|
||||
break;
|
||||
} else
|
||||
ATK_ADD(sstatus->rhw.atk2); //Else use Atk2
|
||||
break;
|
||||
@ -2123,9 +2122,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
|
||||
break;
|
||||
case NC_ARMSCANNON:
|
||||
switch( tstatus->size ) {
|
||||
case 0: skillratio += 100 + 500 * skill_lv; break;// Small
|
||||
case 1: skillratio += 100 + 400 * skill_lv; break;// Medium
|
||||
case 2: skillratio += 100 + 300 * skill_lv; break;// Large
|
||||
case SZ_SMALL: skillratio += 100 + 500 * skill_lv; break;// Small
|
||||
case SZ_MEDIUM: skillratio += 100 + 400 * skill_lv; break;// Medium
|
||||
case SZ_BIG: skillratio += 100 + 300 * skill_lv; break;// Large
|
||||
}
|
||||
if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus.
|
||||
//NOTE: Their's some other factors that affects damage, but not sure how exactly. Will recheck one day. [Rytech]
|
||||
@ -3299,10 +3298,10 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
skillratio += 10*skill_lv-30;
|
||||
break;
|
||||
case SL_STIN:
|
||||
skillratio += (tstatus->size?-99:10*skill_lv); //target size must be small (0) for full damage.
|
||||
skillratio += (tstatus->size!=SZ_SMALL?-99:10*skill_lv); //target size must be small (0) for full damage.
|
||||
break;
|
||||
case SL_STUN:
|
||||
skillratio += (tstatus->size!=2?5*skill_lv:-99); //Full damage is dealt on small/medium targets
|
||||
skillratio += (tstatus->size!=SZ_BIG?5*skill_lv:-99); //Full damage is dealt on small/medium targets
|
||||
break;
|
||||
case SL_SMA:
|
||||
skillratio += -60 + status_get_lv(src); //Base damage is 40% + lv%
|
||||
@ -4079,7 +4078,7 @@ int battle_calc_return_damage(struct block_list* bl, struct block_list *src, int
|
||||
rd1 = min(damage,status_get_max_hp(bl)) * sc->data[SC_DEATHBOUND]->val2 / 100; // Amplify damage.
|
||||
*dmg = rd1 * 30 / 100; // Received damge = 30% of amplifly damage.
|
||||
clif_skill_damage(src,bl,gettick(), status_get_amotion(src), 0, -30000, 1, RK_DEATHBOUND, sc->data[SC_DEATHBOUND]->val1,6);
|
||||
status_change_end(bl,SC_DEATHBOUND,-1);
|
||||
status_change_end(bl,SC_DEATHBOUND,INVALID_TIMER);
|
||||
rdamage += rd1;
|
||||
if (rdamage < 1) rdamage = 1;
|
||||
}
|
||||
@ -4344,7 +4343,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
|
||||
if( --(sc->data[SC_SPELLFIST]->val1) >= 0 )
|
||||
wd = battle_calc_attack(BF_MAGIC,src,target,sc->data[SC_SPELLFIST]->val3,sc->data[SC_SPELLFIST]->val4,flag);
|
||||
else
|
||||
status_change_end(src,SC_SPELLFIST,-1);
|
||||
status_change_end(src,SC_SPELLFIST,INVALID_TIMER);
|
||||
}
|
||||
if( sc->data[SC_GIANTGROWTH] && (wd.flag&BF_SHORT) && rand()%100 < sc->data[SC_GIANTGROWTH]->val2 )
|
||||
wd.damage *= 3; // Triple Damage
|
||||
@ -4685,6 +4684,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
|
||||
return 0; // Disable guardians/emperiums owned by Guilds on non-woe times.
|
||||
break;
|
||||
}
|
||||
default: break; //other type doesn't have slave yet
|
||||
}
|
||||
|
||||
switch( src->type )
|
||||
|
@ -1367,9 +1367,9 @@ int clif_spawn(struct block_list *bl)
|
||||
case BL_NPC:
|
||||
{
|
||||
TBL_NPC *nd = ((TBL_NPC*)bl);
|
||||
if( nd->size == 2 )
|
||||
if( nd->size == SZ_BIG )
|
||||
clif_specialeffect(&nd->bl,423,AREA);
|
||||
else if( nd->size == 1 )
|
||||
else if( nd->size == SZ_MEDIUM )
|
||||
clif_specialeffect(&nd->bl,421,AREA);
|
||||
}
|
||||
break;
|
||||
@ -4050,18 +4050,18 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
|
||||
TBL_NPC* nd = (TBL_NPC*)bl;
|
||||
if( nd->chat_id )
|
||||
clif_dispchat((struct chat_data*)map_id2bl(nd->chat_id),sd->fd);
|
||||
if( nd->size == 2 )
|
||||
if( nd->size == SZ_BIG )
|
||||
clif_specialeffect_single(bl,423,sd->fd);
|
||||
else if( nd->size == 1 )
|
||||
else if( nd->size == SZ_MEDIUM )
|
||||
clif_specialeffect_single(bl,421,sd->fd);
|
||||
}
|
||||
break;
|
||||
case BL_MOB:
|
||||
{
|
||||
TBL_MOB* md = (TBL_MOB*)bl;
|
||||
if(md->special_state.size==2) // tiny/big mobs [Valaris]
|
||||
if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris]
|
||||
clif_specialeffect_single(bl,423,sd->fd);
|
||||
else if(md->special_state.size==1)
|
||||
else if(md->special_state.size==SZ_MEDIUM)
|
||||
clif_specialeffect_single(bl,421,sd->fd);
|
||||
}
|
||||
break;
|
||||
@ -15757,7 +15757,7 @@ int clif_spellbook_list(struct map_session_data *sd)
|
||||
sd->menuskill_val = c;
|
||||
}
|
||||
else
|
||||
status_change_end(&sd->bl,SC_STOP,-1);
|
||||
status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -247,11 +247,14 @@ int elemental_clean_single_effect(struct elemental_data *ed, int skill_num) {
|
||||
case SC_UPHEAVAL_OPTION:
|
||||
case SC_CIRCLE_OF_FIRE_OPTION:
|
||||
case SC_TIDAL_WEAPON_OPTION:
|
||||
if( bl ) status_change_end(bl,type,-1); // Master
|
||||
status_change_end(&ed->bl,type-1,-1); // Elemental Spirit
|
||||
if( bl ) status_change_end(bl,type,INVALID_TIMER); // Master
|
||||
status_change_end(&ed->bl,type-1,INVALID_TIMER); // Elemental Spirit
|
||||
break;
|
||||
case SC_ZEPHYR:
|
||||
if( bl ) status_change_end(bl,type,-1);
|
||||
if( bl ) status_change_end(bl,type,INVALID_TIMER);
|
||||
break;
|
||||
default:
|
||||
ShowWarning("Invalid SC=%d in elemental_clean_single_effect\n",type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -346,7 +349,7 @@ int elemental_action(struct elemental_data *ed, struct block_list *bl, unsigned
|
||||
if( elemental_skillnotok(skillnum, ed) )
|
||||
return 0;
|
||||
|
||||
if( ed->ud.skilltimer != -1 )
|
||||
if( ed->ud.skilltimer != INVALID_TIMER )
|
||||
return 0;
|
||||
else if( DIFF_TICK(tick, ed->ud.canact_tick) < 0 )
|
||||
return 0;
|
||||
@ -410,7 +413,7 @@ int elemental_change_mode_ack(struct elemental_data *ed, int mode) {
|
||||
if( elemental_skillnotok(skillnum, ed) )
|
||||
return 0;
|
||||
|
||||
if( ed->ud.skilltimer != -1 )
|
||||
if( ed->ud.skilltimer != INVALID_TIMER )
|
||||
return 0;
|
||||
else if( DIFF_TICK(gettick(), ed->ud.canact_tick) < 0 )
|
||||
return 0;
|
||||
@ -563,10 +566,10 @@ static int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_
|
||||
|
||||
ed->last_thinktime = tick;
|
||||
|
||||
if( ed->ud.skilltimer != -1 )
|
||||
if( ed->ud.skilltimer != INVALID_TIMER )
|
||||
return 0;
|
||||
|
||||
if( ed->ud.walktimer != -1 && ed->ud.walkpath.path_pos <= 2 )
|
||||
if( ed->ud.walktimer != INVALID_TIMER && ed->ud.walkpath.path_pos <= 2 )
|
||||
return 0; //No thinking when you just started to walk.
|
||||
|
||||
if(ed->ud.walkpath.path_pos < ed->ud.walkpath.path_len && ed->ud.target == sd->bl.id)
|
||||
@ -582,13 +585,13 @@ static int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_
|
||||
master_dist = distance_bl(&sd->bl, &ed->bl);
|
||||
if( master_dist > AREA_SIZE ) { // Master out of vision range.
|
||||
elemental_unlocktarget(ed);
|
||||
unit_warp(&ed->bl,sd->bl.m,sd->bl.x,sd->bl.y,3);
|
||||
unit_warp(&ed->bl,sd->bl.m,sd->bl.x,sd->bl.y,CLR_TELEPORT);
|
||||
return 0;
|
||||
} else if( master_dist > MAX_ELEDISTANCE ) { // Master too far, chase.
|
||||
short x = sd->bl.x, y = sd->bl.y;
|
||||
if( ed->target_id )
|
||||
elemental_unlocktarget(ed);
|
||||
if( ed->ud.walktimer != -1 && ed->ud.target == sd->bl.id )
|
||||
if( ed->ud.walktimer != INVALID_TIMER && ed->ud.target == sd->bl.id )
|
||||
return 0; //Already walking to him
|
||||
if( DIFF_TICK(tick, ed->ud.canmove_tick) < 0 )
|
||||
return 0; //Can't move yet.
|
||||
@ -615,7 +618,7 @@ static int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_
|
||||
|
||||
//Attempt to attack.
|
||||
//At this point we know the target is attackable, we just gotta check if the range matches.
|
||||
if( ed->ud.target == target->id && ed->ud.attacktimer != -1 ) //Already locked.
|
||||
if( ed->ud.target == target->id && ed->ud.attacktimer != INVALID_TIMER ) //Already locked.
|
||||
return 1;
|
||||
|
||||
if( battle_check_range(&ed->bl, target, ed->base_status.rhw.range) ) {//Target within range, engage
|
||||
|
@ -402,7 +402,7 @@ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick)
|
||||
status_change_end(bl, SC_MAGICROD, INVALID_TIMER);
|
||||
if (sc->data[SC_PROPERTYWALK] &&
|
||||
sc->data[SC_PROPERTYWALK]->val3 >= skill_get_maxcount(sc->data[SC_PROPERTYWALK]->val1,sc->data[SC_PROPERTYWALK]->val2) )
|
||||
status_change_end(bl,SC_PROPERTYWALK,-1);
|
||||
status_change_end(bl,SC_PROPERTYWALK,INVALID_TIMER);
|
||||
} else
|
||||
if (bl->type == BL_NPC)
|
||||
npc_unsetcells((TBL_NPC*)bl);
|
||||
|
@ -223,10 +223,10 @@ int mob_parse_dataset(struct spawn_data *data)
|
||||
|
||||
//FIXME: This implementation is not stable, npc scripts will stop working once MAX_MOB_DB changes value! [Skotlex]
|
||||
if(data->class_ > 2*MAX_MOB_DB){ // large/tiny mobs [Valaris]
|
||||
data->state.size=2;
|
||||
data->state.size=SZ_BIG;
|
||||
data->class_ -= 2*MAX_MOB_DB;
|
||||
} else if (data->class_ > MAX_MOB_DB) {
|
||||
data->state.size=1;
|
||||
data->state.size=SZ_MEDIUM;
|
||||
data->class_ -= MAX_MOB_DB;
|
||||
}
|
||||
|
||||
@ -240,9 +240,9 @@ int mob_parse_dataset(struct spawn_data *data)
|
||||
if( i )
|
||||
{
|
||||
if( i&2 )
|
||||
data->state.size = 1;
|
||||
data->state.size = SZ_MEDIUM;
|
||||
else if( i&4 )
|
||||
data->state.size = 2;
|
||||
data->state.size = SZ_BIG;
|
||||
if( i&8 )
|
||||
data->state.ai = 1;
|
||||
}
|
||||
@ -2197,9 +2197,9 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
||||
}
|
||||
|
||||
// change experience for different sized monsters [Valaris]
|
||||
if(md->special_state.size==1)
|
||||
if(md->special_state.size==SZ_MEDIUM)
|
||||
per /=2.;
|
||||
else if(md->special_state.size==2)
|
||||
else if(md->special_state.size==SZ_BIG)
|
||||
per *=2.;
|
||||
|
||||
if( md->dmglog[i].flag == MDLF_PET )
|
||||
@ -2313,9 +2313,9 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
||||
}
|
||||
|
||||
// change drops depending on monsters size [Valaris]
|
||||
if(md->special_state.size==1 && drop_rate >= 2)
|
||||
if(md->special_state.size==SZ_MEDIUM && drop_rate >= 2)
|
||||
drop_rate/=2;
|
||||
else if(md->special_state.size==2)
|
||||
else if(md->special_state.size==SZ_BIG)
|
||||
drop_rate*=2;
|
||||
if (src) {
|
||||
//Drops affected by luk as a fixed increase [Valaris]
|
||||
|
@ -63,6 +63,12 @@ enum MobDamageLogFlag
|
||||
MDLF_PET,
|
||||
};
|
||||
|
||||
enum size {
|
||||
SZ_SMALL = 0,
|
||||
SZ_MEDIUM,
|
||||
SZ_BIG,
|
||||
};
|
||||
|
||||
struct mob_skill {
|
||||
enum MobSkillState state;
|
||||
short skill_id,skill_lv;
|
||||
|
24
src/map/pc.c
24
src/map/pc.c
@ -7107,20 +7107,20 @@ int pc_setoption(struct map_session_data *sd,int type)
|
||||
if( (sd->class_&MAPID_THIRDMASK) == MAPID_MECHANIC ) {
|
||||
if( type&OPTION_MADOGEAR && !(p_type&OPTION_MADOGEAR) ) {
|
||||
status_calc_pc(sd, 0);
|
||||
status_change_end(&sd->bl,SC_MAXIMIZEPOWER,-1);
|
||||
status_change_end(&sd->bl,SC_OVERTHRUST,-1);
|
||||
status_change_end(&sd->bl,SC_WEAPONPERFECTION,-1);
|
||||
status_change_end(&sd->bl,SC_ADRENALINE,-1);
|
||||
status_change_end(&sd->bl,SC_CARTBOOST,-1);
|
||||
status_change_end(&sd->bl,SC_MELTDOWN,-1);
|
||||
status_change_end(&sd->bl,SC_MAXOVERTHRUST,-1);
|
||||
status_change_end(&sd->bl,SC_MAXIMIZEPOWER,INVALID_TIMER);
|
||||
status_change_end(&sd->bl,SC_OVERTHRUST,INVALID_TIMER);
|
||||
status_change_end(&sd->bl,SC_WEAPONPERFECTION,INVALID_TIMER);
|
||||
status_change_end(&sd->bl,SC_ADRENALINE,INVALID_TIMER);
|
||||
status_change_end(&sd->bl,SC_CARTBOOST,INVALID_TIMER);
|
||||
status_change_end(&sd->bl,SC_MELTDOWN,INVALID_TIMER);
|
||||
status_change_end(&sd->bl,SC_MAXOVERTHRUST,INVALID_TIMER);
|
||||
} else if( !(type&OPTION_MADOGEAR) && p_type&OPTION_MADOGEAR ) {
|
||||
status_calc_pc(sd, 0);
|
||||
status_change_end(&sd->bl,SC_SHAPESHIFT,-1);
|
||||
status_change_end(&sd->bl,SC_HOVERING,-1);
|
||||
status_change_end(&sd->bl,SC_ACCELERATION,-1);
|
||||
status_change_end(&sd->bl,SC_OVERHEAT_LIMITPOINT,-1);
|
||||
status_change_end(&sd->bl,SC_OVERHEAT,-1);
|
||||
status_change_end(&sd->bl,SC_SHAPESHIFT,INVALID_TIMER);
|
||||
status_change_end(&sd->bl,SC_HOVERING,INVALID_TIMER);
|
||||
status_change_end(&sd->bl,SC_ACCELERATION,INVALID_TIMER);
|
||||
status_change_end(&sd->bl,SC_OVERHEAT_LIMITPOINT,INVALID_TIMER);
|
||||
status_change_end(&sd->bl,SC_OVERHEAT,INVALID_TIMER);
|
||||
}
|
||||
}
|
||||
|
||||
|
130
src/map/skill.c
130
src/map/skill.c
@ -963,7 +963,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
|
||||
status_zap(bl, 0, rate);
|
||||
break;
|
||||
case SL_STUN:
|
||||
if (tstatus->size==1) //Only stuns mid-sized mobs.
|
||||
if (tstatus->size==SZ_MEDIUM) //Only stuns mid-sized mobs.
|
||||
sc_start(bl,SC_STUN,(30+10*skilllv),skilllv,skill_get_time(skillid,skilllv));
|
||||
break;
|
||||
|
||||
@ -1194,11 +1194,11 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
|
||||
case NC_PILEBUNKER:
|
||||
if( rnd()%100 < 5 + 15*skilllv )
|
||||
{ //Deactivatable Statuses: Kyrie Eleison, Auto Guard, Steel Body, Assumptio, and Millennium Shield
|
||||
status_change_end(bl, SC_KYRIE, -1);
|
||||
status_change_end(bl, SC_AUTOGUARD, -1);
|
||||
status_change_end(bl, SC_STEELBODY, -1);
|
||||
status_change_end(bl, SC_ASSUMPTIO, -1);
|
||||
status_change_end(bl, SC_MILLENNIUMSHIELD, -1);
|
||||
status_change_end(bl, SC_KYRIE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_AUTOGUARD, INVALID_TIMER);
|
||||
status_change_end(bl, SC_STEELBODY, INVALID_TIMER);
|
||||
status_change_end(bl, SC_ASSUMPTIO, INVALID_TIMER);
|
||||
status_change_end(bl, SC_MILLENNIUMSHIELD, INVALID_TIMER);
|
||||
}
|
||||
break;
|
||||
case NC_FLAMELAUNCHER:
|
||||
@ -2643,7 +2643,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
|
||||
struct status_change *ssc = status_get_sc(src);
|
||||
if( ssc && ssc->data[SC_POISONINGWEAPON] && rnd()%100 < 70 + 5*skilllv ) {
|
||||
sc_start(bl,ssc->data[SC_POISONINGWEAPON]->val2,100,ssc->data[SC_POISONINGWEAPON]->val1,skill_get_time2(GC_POISONINGWEAPON,ssc->data[SC_POISONINGWEAPON]->val1));
|
||||
status_change_end(src,SC_POISONINGWEAPON,-1);
|
||||
status_change_end(src,SC_POISONINGWEAPON,INVALID_TIMER);
|
||||
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
||||
}
|
||||
}
|
||||
@ -4009,7 +4009,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
|
||||
else
|
||||
{
|
||||
skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
|
||||
status_change_end(src,SC_ROLLINGCUTTER,-1);
|
||||
status_change_end(src,SC_ROLLINGCUTTER,INVALID_TIMER);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -4239,9 +4239,9 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
|
||||
{ //TODO: Need a confirmation if the other type of hidden status is included to be scanned. [Jobbie]
|
||||
if( rnd()%100 < 50 )
|
||||
sc_start(bl, SC_INFRAREDSCAN, 10000, skilllv, skill_get_time(skillid, skilllv));
|
||||
status_change_end(bl, SC_HIDING, -1);
|
||||
status_change_end(bl, SC_CLOAKING, -1);
|
||||
status_change_end(bl, SC_CLOAKINGEXCEED, -1); // Need confirm it.
|
||||
status_change_end(bl, SC_HIDING, INVALID_TIMER);
|
||||
status_change_end(bl, SC_CLOAKING, INVALID_TIMER);
|
||||
status_change_end(bl, SC_CLOAKINGEXCEED, INVALID_TIMER); // Need confirm it.
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -4304,19 +4304,19 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
|
||||
break;
|
||||
|
||||
case SR_HOWLINGOFLION:
|
||||
status_change_end(bl, SC_SWINGDANCE, -1);
|
||||
status_change_end(bl, SC_SYMPHONYOFLOVER, -1);
|
||||
status_change_end(bl, SC_MOONLITSERENADE, -1);
|
||||
status_change_end(bl, SC_RUSHWINDMILL, -1);
|
||||
status_change_end(bl, SC_ECHOSONG, -1);
|
||||
status_change_end(bl, SC_HARMONIZE, -1);
|
||||
status_change_end(bl, SC_SIRCLEOFNATURE, -1);
|
||||
status_change_end(bl, SC_SATURDAYNIGHTFEVER, -1);
|
||||
status_change_end(bl, SC_DANCEWITHWUG, -1);
|
||||
status_change_end(bl, SC_LERADSDEW, -1);
|
||||
status_change_end(bl, SC_MELODYOFSINK, -1);
|
||||
status_change_end(bl, SC_BEYONDOFWARCRY, -1);
|
||||
status_change_end(bl, SC_UNLIMITEDHUMMINGVOICE, -1);
|
||||
status_change_end(bl, SC_SWINGDANCE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_SYMPHONYOFLOVER, INVALID_TIMER);
|
||||
status_change_end(bl, SC_MOONLITSERENADE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_RUSHWINDMILL, INVALID_TIMER);
|
||||
status_change_end(bl, SC_ECHOSONG, INVALID_TIMER);
|
||||
status_change_end(bl, SC_HARMONIZE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_SIRCLEOFNATURE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_SATURDAYNIGHTFEVER, INVALID_TIMER);
|
||||
status_change_end(bl, SC_DANCEWITHWUG, INVALID_TIMER);
|
||||
status_change_end(bl, SC_LERADSDEW, INVALID_TIMER);
|
||||
status_change_end(bl, SC_MELODYOFSINK, INVALID_TIMER);
|
||||
status_change_end(bl, SC_BEYONDOFWARCRY, INVALID_TIMER);
|
||||
status_change_end(bl, SC_UNLIMITEDHUMMINGVOICE, INVALID_TIMER);
|
||||
skill_attack(BF_WEAPON, src, src, bl, skillid, skilllv, tick, flag);
|
||||
break;
|
||||
|
||||
@ -4324,10 +4324,10 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
|
||||
if( flag&1 ) {
|
||||
struct status_change *tsc = status_get_sc(bl);
|
||||
if( tsc && (tsc->data[SC_HIDING] || tsc->data[SC_CHASEWALK] || tsc->data[SC_CLOAKING] || tsc->data[SC_CLOAKINGEXCEED]) ) {
|
||||
status_change_end(bl, SC_HIDING, -1);
|
||||
status_change_end(bl, SC_CLOAKING, -1);
|
||||
status_change_end(bl, SC_CHASEWALK, -1);
|
||||
status_change_end(bl, SC_CLOAKINGEXCEED, -1);
|
||||
status_change_end(bl, SC_HIDING, INVALID_TIMER);
|
||||
status_change_end(bl, SC_CLOAKING, INVALID_TIMER);
|
||||
status_change_end(bl, SC_CHASEWALK, INVALID_TIMER);
|
||||
status_change_end(bl, SC_CLOAKINGEXCEED, INVALID_TIMER);
|
||||
sc_start(bl,SC_STUN, 25 + 5 * skilllv,skilllv,skill_get_time(skillid,skilllv));//Does it apply the stun chance to targets knocked out of hiding, or it applys allways? [Rytech]
|
||||
skill_attack(BF_WEAPON, src, src, bl, skillid, skilllv, tick, flag);
|
||||
} else
|
||||
@ -4346,7 +4346,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
|
||||
struct status_change *tsc = status_get_sc(bl);
|
||||
if( tsc && tsc->data[SC_POISON] ) {
|
||||
skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag);
|
||||
status_change_end(bl, SC_POISON, -1);
|
||||
status_change_end(bl, SC_POISON, INVALID_TIMER);
|
||||
}
|
||||
else if( sd )
|
||||
clif_skill_fail(sd, skillid, 0, 0);
|
||||
@ -5443,8 +5443,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
|
||||
case NC_EMERGENCYCOOL:
|
||||
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
||||
status_change_end(src,SC_OVERHEAT_LIMITPOINT,-1);
|
||||
status_change_end(src,SC_OVERHEAT,-1);
|
||||
status_change_end(src,SC_OVERHEAT_LIMITPOINT,INVALID_TIMER);
|
||||
status_change_end(src,SC_OVERHEAT,INVALID_TIMER);
|
||||
break;
|
||||
case SR_WINDMILL:
|
||||
case GN_CART_TORNADO:
|
||||
@ -7454,9 +7454,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
if( (tsc && (tsc->data[SC_FREEZE] || tsc->data[SC_STONE] ||
|
||||
tsc->data[SC_BLIND]))&& (rnd()%100 < 30+5*skilllv) )
|
||||
{
|
||||
status_change_end(bl, SC_FREEZE, -1);
|
||||
status_change_end(bl, SC_STONE, -1);
|
||||
status_change_end(bl, SC_BLIND, -1);
|
||||
status_change_end(bl, SC_FREEZE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_STONE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_BLIND, INVALID_TIMER);
|
||||
}
|
||||
// Success rate only applies to the curing effect and not stat bonus.
|
||||
clif_skill_nodamage(bl, bl, skillid, skilllv,
|
||||
@ -7473,9 +7473,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
if( (tsc && (tsc->data[SC_SLEEP] || tsc->data[SC_STUN] ||
|
||||
tsc->data[SC_SILENCE]))&& (rnd()%100 < 30+5*skilllv) )
|
||||
{
|
||||
status_change_end(bl, SC_SLEEP, -1);
|
||||
status_change_end(bl, SC_STUN, -1);
|
||||
status_change_end(bl, SC_SILENCE, -1);
|
||||
status_change_end(bl, SC_SLEEP, INVALID_TIMER);
|
||||
status_change_end(bl, SC_STUN, INVALID_TIMER);
|
||||
status_change_end(bl, SC_SILENCE, INVALID_TIMER);
|
||||
}
|
||||
clif_skill_nodamage(bl, bl, skillid, skilllv,
|
||||
sc_start(bl, type, 100, skilllv, skill_get_time(skillid, skilllv)));
|
||||
@ -7548,7 +7548,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
break;
|
||||
}
|
||||
if(i==SC_BERSERK /*|| i==SC_SATURDAYNIGHTFEVER*/) tsc->data[i]->val2=0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0.
|
||||
status_change_end(bl,(sc_type)i,-1);
|
||||
status_change_end(bl,(sc_type)i,INVALID_TIMER);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -7614,7 +7614,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
break; // Already work on this target
|
||||
|
||||
if( tsc && tsc->data[SC_STONE] )
|
||||
status_change_end(bl,SC_STONE,-1);
|
||||
status_change_end(bl,SC_STONE,INVALID_TIMER);
|
||||
else
|
||||
status_change_start(bl,SC_STONE,10000,skilllv,0,0,1000,(8+2*skilllv)*1000,2);
|
||||
}
|
||||
@ -7630,7 +7630,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
else
|
||||
{
|
||||
rate = 1;
|
||||
status_change_end(bl,SC_STONE,-1);
|
||||
status_change_end(bl,SC_STONE,INVALID_TIMER);
|
||||
}
|
||||
|
||||
if( rate )
|
||||
@ -7848,11 +7848,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
if( tsc && (tsc->data[SC_HIDING] || tsc->data[SC_CLOAKING] ||
|
||||
tsc->data[SC_CHASEWALK] || tsc->data[SC_CLOAKINGEXCEED] ||
|
||||
tsc->data[SC__INVISIBILITY]) ) {
|
||||
status_change_end(bl, SC_HIDING, -1);
|
||||
status_change_end(bl, SC_CLOAKING, -1);
|
||||
status_change_end(bl, SC_CHASEWALK, -1);
|
||||
status_change_end(bl, SC_CLOAKINGEXCEED, -1);
|
||||
status_change_end(bl, SC__INVISIBILITY, -1);
|
||||
status_change_end(bl, SC_HIDING, INVALID_TIMER);
|
||||
status_change_end(bl, SC_CLOAKING, INVALID_TIMER);
|
||||
status_change_end(bl, SC_CHASEWALK, INVALID_TIMER);
|
||||
status_change_end(bl, SC_CLOAKINGEXCEED, INVALID_TIMER);
|
||||
status_change_end(bl, SC__INVISIBILITY, INVALID_TIMER);
|
||||
|
||||
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv));
|
||||
sc_start(bl,SC_BLIND,53 + 2 * skilllv,skilllv,skill_get_time(skillid,skilllv));
|
||||
@ -7902,7 +7902,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
|
||||
case LG_REFLECTDAMAGE:
|
||||
if( tsc && tsc->data[type] )
|
||||
status_change_end(bl,type,-1);
|
||||
status_change_end(bl,type,INVALID_TIMER);
|
||||
else
|
||||
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv));
|
||||
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
||||
@ -7938,7 +7938,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6);
|
||||
if( rate < brate )
|
||||
map_foreachinrange(skill_area_sub,src,skill_get_splash(skillid,skilllv),BL_CHAR,src,skillid,skilllv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id);
|
||||
status_change_end(bl,SC_SHIELDSPELL_DEF,-1);
|
||||
status_change_end(bl,SC_SHIELDSPELL_DEF,INVALID_TIMER);
|
||||
break;
|
||||
case 2:
|
||||
val = 10 * shield_data->def; // % Reflected damage.
|
||||
@ -7966,7 +7966,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
||||
clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6);
|
||||
if( rate < brate )
|
||||
map_foreachinrange(skill_area_sub,src,skill_get_splash(skillid,skilllv),BL_CHAR,src,skillid,skilllv,tick,flag|BCT_ENEMY|2,skill_castend_damage_id);
|
||||
status_change_end(bl,SC_SHIELDSPELL_MDEF,-1);
|
||||
status_change_end(bl,SC_SHIELDSPELL_MDEF,INVALID_TIMER);
|
||||
break;
|
||||
case 2:
|
||||
sc_start(bl,SC_SHIELDSPELL_MDEF,100,opt,-1);
|
||||
@ -8785,7 +8785,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data)
|
||||
if (ud->state.running && ud->skillid == TK_JUMPKICK)
|
||||
{
|
||||
ud->state.running = 0;
|
||||
status_change_end(src, SC_RUN, -1);
|
||||
status_change_end(src, SC_RUN, INVALID_TIMER);
|
||||
flag = 1;
|
||||
}
|
||||
|
||||
@ -9513,7 +9513,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
|
||||
}
|
||||
clif_skill_damage(src,src,tick,status_get_amotion(src),0,-30000,1,skillid,skilllv,6);
|
||||
skill_unitsetting(src, skillid, skilllv, x, y, flag);
|
||||
status_change_end(src,SC_POISONINGWEAPON,-1);
|
||||
status_change_end(src,SC_POISONINGWEAPON,INVALID_TIMER);
|
||||
break;
|
||||
/**
|
||||
* Arch Bishop
|
||||
@ -9617,7 +9617,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
|
||||
|
||||
case LG_BANDING:
|
||||
if( sc && sc->data[SC_BANDING] )
|
||||
status_change_end(src,SC_BANDING,-1);
|
||||
status_change_end(src,SC_BANDING,INVALID_TIMER);
|
||||
else if( (sg = skill_unitsetting(src,skillid,skilllv,src->x,src->y,0)) != NULL ) {
|
||||
sc_start4(src,SC_BANDING,100,skilllv,0,0,sg->group_id,skill_get_time(skillid,skilllv));
|
||||
if( sd ) pc_banding(sd,skilllv);
|
||||
@ -9690,7 +9690,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
|
||||
case SO_FIREWALK:
|
||||
case SO_ELECTRICWALK:
|
||||
if( sc && sc->data[type] )
|
||||
status_change_end(src,type,-1);
|
||||
status_change_end(src,type,INVALID_TIMER);
|
||||
clif_skill_nodamage(src, src ,skillid, skilllv,
|
||||
sc_start2(src, type, 100, skillid, skilllv, skill_get_time(skillid, skilllv)));
|
||||
break;
|
||||
@ -11069,18 +11069,14 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
|
||||
}
|
||||
hp = tstatus->max_hp * hp / 100;
|
||||
sp = tstatus->max_sp * sp / 100;
|
||||
status_heal(bl, hp, sp, 0);
|
||||
if( tstatus->hp < tstatus->max_hp )
|
||||
clif_skill_nodamage(&src->bl, bl, AL_HEAL, hp, 1);
|
||||
if( tstatus->sp < tstatus->max_sp )
|
||||
clif_skill_nodamage(&src->bl, bl, MG_SRECOVERY, sp, 1);
|
||||
status_heal(bl, hp, sp, 2);
|
||||
sc_start(bl, type, 100, sg->skill_lv, (sg->interval * 3) + 100);
|
||||
}
|
||||
// Reveal hidden players every 5 seconds.
|
||||
if( sg->val2 % 5 == 0 ) {
|
||||
// TODO: check if other hidden status can be removed.
|
||||
status_change_end(bl,SC_HIDING,-1);
|
||||
status_change_end(bl,SC_CLOAKING,-1);
|
||||
status_change_end(bl,SC_HIDING,INVALID_TIMER);
|
||||
status_change_end(bl,SC_CLOAKING,INVALID_TIMER);
|
||||
}
|
||||
}
|
||||
/* Enable this if kRO fix the current skill. Currently no damage on undead and demon monster. [Jobbie]
|
||||
@ -11122,7 +11118,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
|
||||
if( tsc ) {
|
||||
if( !sg->val2 ) {
|
||||
int sec = skill_get_time2(sg->skill_id, sg->skill_lv);
|
||||
if( status_change_start(bl, type, 10000, sg->skill_lv, 0, 0, 0, sec, 0) ) {
|
||||
if( sc_start(bl, type, 100, sg->skill_lv, sec) ) {
|
||||
const struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL;
|
||||
if( td )
|
||||
sec = DIFF_TICK(td->tick, tick);
|
||||
@ -13947,7 +13943,7 @@ bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *s
|
||||
if( !wall )
|
||||
{
|
||||
if( sce->val1 < 3 ) //End camouflage.
|
||||
status_change_end(bl, SC_CAMOUFLAGE, -1);
|
||||
status_change_end(bl, SC_CAMOUFLAGE, INVALID_TIMER);
|
||||
else
|
||||
if( sce->val3&1 )
|
||||
{ //Remove wall bonus
|
||||
@ -14060,7 +14056,7 @@ int skill_delunit (struct skill_unit* unit)
|
||||
case RA_ELECTRICSHOCKER: {
|
||||
struct block_list* target = map_id2bl(group->val2);
|
||||
if( target )
|
||||
status_change_end(target, SC_ELECTRICSHOCKER, -1);
|
||||
status_change_end(target, SC_ELECTRICSHOCKER, INVALID_TIMER);
|
||||
}
|
||||
break;
|
||||
case SC_MAELSTROM:
|
||||
@ -14255,7 +14251,7 @@ int skill_delunitgroup_(struct skill_unit_group *group, const char* file, int li
|
||||
struct status_change *sc = NULL;
|
||||
if( (sc = status_get_sc(src)) != NULL && sc->data[SC_NEUTRALBARRIER_MASTER] ) {
|
||||
sc->data[SC_NEUTRALBARRIER_MASTER]->val2 = 0;
|
||||
status_change_end(src,SC_NEUTRALBARRIER_MASTER,-1);
|
||||
status_change_end(src,SC_NEUTRALBARRIER_MASTER,INVALID_TIMER);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -14264,7 +14260,7 @@ int skill_delunitgroup_(struct skill_unit_group *group, const char* file, int li
|
||||
struct status_change *sc = NULL;
|
||||
if( (sc = status_get_sc(src)) != NULL && sc->data[SC_STEALTHFIELD_MASTER] ) {
|
||||
sc->data[SC_STEALTHFIELD_MASTER]->val2 = 0;
|
||||
status_change_end(src,SC_STEALTHFIELD_MASTER,-1);
|
||||
status_change_end(src,SC_STEALTHFIELD_MASTER,INVALID_TIMER);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -14273,7 +14269,7 @@ int skill_delunitgroup_(struct skill_unit_group *group, const char* file, int li
|
||||
struct status_change *sc = NULL;
|
||||
if( (sc = status_get_sc(src)) && sc->data[SC_BANDING] ) {
|
||||
sc->data[SC_BANDING]->val4 = 0;
|
||||
status_change_end(src,SC_BANDING,-1);
|
||||
status_change_end(src,SC_BANDING,INVALID_TIMER);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -15545,7 +15541,7 @@ int skill_spellbook (struct map_session_data *sd, int nameid) {
|
||||
int i, j, points, skillid, preserved = 0, max_preserve;
|
||||
nullpo_ret(sd);
|
||||
|
||||
if( sd->sc.data[SC_STOP] ) status_change_end(&sd->bl,SC_STOP,-1);
|
||||
if( sd->sc.data[SC_STOP] ) status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
|
||||
if( nameid <= 0 ) return 0;
|
||||
|
||||
if( pc_search_inventory(sd,nameid) < 0 )
|
||||
@ -15601,7 +15597,7 @@ int skill_select_menu(struct map_session_data *sd,int flag,int skill_id) {
|
||||
|
||||
if (sd->sc.data[SC_STOP]) {
|
||||
aslvl = sd->sc.data[SC_STOP]->val1;
|
||||
status_change_end(&sd->bl,SC_STOP,-1);
|
||||
status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
|
||||
}
|
||||
|
||||
if( (id = sd->status.skill[skill_id].id) == 0 || sd->status.skill[skill_id].flag != SKILL_FLAG_PLAGIARIZED ||
|
||||
|
@ -1106,9 +1106,9 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s
|
||||
if (sc->data[SC_BERSERK] && status->hp <= 100)
|
||||
status_change_end(target, SC_BERSERK, INVALID_TIMER);
|
||||
if( sc->data[SC_RAISINGDRAGON] && status->hp <= 1000 )
|
||||
status_change_end(target, SC_RAISINGDRAGON, -1);
|
||||
status_change_end(target, SC_RAISINGDRAGON, INVALID_TIMER);
|
||||
if (sc->data[SC_SATURDAYNIGHTFEVER] && status->hp <= 100)
|
||||
status_change_end(target, SC_SATURDAYNIGHTFEVER, -1);
|
||||
status_change_end(target, SC_SATURDAYNIGHTFEVER, INVALID_TIMER);
|
||||
}
|
||||
|
||||
switch (target->type)
|
||||
@ -2250,13 +2250,13 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
|
||||
//Give them all modes except these (useful for clones)
|
||||
status->mode = MD_MASK&~(MD_BOSS|MD_PLANT|MD_DETECTOR|MD_ANGRY|MD_TARGETWEAK);
|
||||
|
||||
status->size = (sd->class_&JOBL_BABY)?0:1;
|
||||
status->size = (sd->class_&JOBL_BABY)?SZ_SMALL:SZ_MEDIUM;
|
||||
if (battle_config.character_size && pc_isriding(sd)) { //[Lupus]
|
||||
if (sd->class_&JOBL_BABY) {
|
||||
if (battle_config.character_size&2)
|
||||
if (battle_config.character_size&SZ_BIG)
|
||||
status->size++;
|
||||
} else
|
||||
if(battle_config.character_size&1)
|
||||
if(battle_config.character_size&SZ_MEDIUM)
|
||||
status->size++;
|
||||
}
|
||||
status->aspd_rate = 1000;
|
||||
@ -7414,13 +7414,13 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
|
||||
val_flag |= 1|2|4;
|
||||
break;
|
||||
case SC_WHITEIMPRISON:
|
||||
status_change_end(bl, SC_BURNING, -1);
|
||||
status_change_end(bl, SC_FREEZING, -1);
|
||||
status_change_end(bl, SC_FREEZE, -1);
|
||||
status_change_end(bl, SC_STONE, -1);
|
||||
status_change_end(bl, SC_BURNING, INVALID_TIMER);
|
||||
status_change_end(bl, SC_FREEZING, INVALID_TIMER);
|
||||
status_change_end(bl, SC_FREEZE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_STONE, INVALID_TIMER);
|
||||
break;
|
||||
case SC_FREEZING:
|
||||
status_change_end(bl, SC_BURNING, -1);
|
||||
status_change_end(bl, SC_BURNING, INVALID_TIMER);
|
||||
break;
|
||||
case SC_READING_SB:
|
||||
// val2 = sp reduction per second
|
||||
@ -7532,9 +7532,9 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
|
||||
val3 = 0;
|
||||
break;
|
||||
case SC_WARMER:
|
||||
status_change_end(bl, SC_FREEZE, -1);
|
||||
status_change_end(bl, SC_FREEZING, -1);
|
||||
status_change_end(bl, SC_CRYSTALIZE, -1);
|
||||
status_change_end(bl, SC_FREEZE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_FREEZING, INVALID_TIMER);
|
||||
status_change_end(bl, SC_CRYSTALIZE, INVALID_TIMER);
|
||||
break;
|
||||
case SC_STRIKING:
|
||||
val4 = tick / 1000;
|
||||
@ -8635,7 +8635,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
|
||||
}
|
||||
break;
|
||||
case SC_ADORAMUS:
|
||||
status_change_end(bl, SC_BLIND, -1);
|
||||
status_change_end(bl, SC_BLIND, INVALID_TIMER);
|
||||
break;
|
||||
case SC__SHADOWFORM: {
|
||||
struct map_session_data *s_sd = map_id2sd(sce->val2);
|
||||
@ -8679,7 +8679,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
|
||||
int i;
|
||||
i = min(sd->spiritball,5);
|
||||
pc_delspiritball(sd, sd->spiritball, 0);
|
||||
status_change_end(bl, SC_EXPLOSIONSPIRITS, -1);
|
||||
status_change_end(bl, SC_EXPLOSIONSPIRITS, INVALID_TIMER);
|
||||
while( i > 0 ) {
|
||||
pc_addspiritball(sd, skill_get_time(MO_CALLSPIRITS, pc_checkskill(sd,MO_CALLSPIRITS)), 5);
|
||||
--i;
|
||||
@ -9661,8 +9661,8 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
{
|
||||
struct block_list *s_bl = battle_get_master(bl);
|
||||
if( s_bl )
|
||||
status_change_end(s_bl,type+1,-1);
|
||||
status_change_end(bl,type,-1);
|
||||
status_change_end(s_bl,type+1,INVALID_TIMER);
|
||||
status_change_end(bl,type,INVALID_TIMER);
|
||||
break;
|
||||
}
|
||||
sc_timer_next(2000 + tick, status_change_timer, bl->id, data);
|
||||
@ -9753,7 +9753,7 @@ int status_change_timer_sub(struct block_list* bl, va_list ap)
|
||||
break;
|
||||
case SC_CURSEDCIRCLE_TARGET:
|
||||
if( tsc && tsc->data[SC_CURSEDCIRCLE_TARGET] && tsc->data[SC_CURSEDCIRCLE_TARGET]->val2 == src->id ) {
|
||||
status_change_end(bl, type, -1);
|
||||
status_change_end(bl, type, INVALID_TIMER);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -491,7 +491,7 @@ int unit_wugdash(struct block_list *bl, struct map_session_data *sd) {
|
||||
nullpo_ret(bl);
|
||||
|
||||
if (!unit_can_move(bl)) {
|
||||
status_change_end(bl,SC_WUGDASH,-1);
|
||||
status_change_end(bl,SC_WUGDASH,INVALID_TIMER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -516,7 +516,7 @@ int unit_wugdash(struct block_list *bl, struct map_session_data *sd) {
|
||||
if(to_x == bl->x && to_y == bl->y) {
|
||||
|
||||
unit_bl2ud(bl)->state.running = 0;
|
||||
status_change_end(bl,SC_WUGDASH,-1);
|
||||
status_change_end(bl,SC_WUGDASH,INVALID_TIMER);
|
||||
|
||||
if( sd ){
|
||||
clif_fixpos(bl);
|
||||
@ -533,7 +533,7 @@ int unit_wugdash(struct block_list *bl, struct map_session_data *sd) {
|
||||
if (i==0) {
|
||||
|
||||
unit_bl2ud(bl)->state.running = 0;
|
||||
status_change_end(bl,SC_WUGDASH,-1);
|
||||
status_change_end(bl,SC_WUGDASH,INVALID_TIMER);
|
||||
|
||||
if( sd ){
|
||||
clif_fixpos(bl);
|
||||
@ -1294,11 +1294,11 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh
|
||||
status_change_end(src,SC_CLOAKINGEXCEED, INVALID_TIMER);
|
||||
if (!src->prev) return 0;
|
||||
} else if( sc->data[SC_CAMOUFLAGE] && skill_num != RA_CAMOUFLAGE )
|
||||
status_change_end(src,SC_CAMOUFLAGE,-1);
|
||||
status_change_end(src,SC_CAMOUFLAGE,INVALID_TIMER);
|
||||
|
||||
if( sc->data[SC_CURSEDCIRCLE_ATKER] ) {
|
||||
sc->data[SC_CURSEDCIRCLE_ATKER]->val3 = 1;
|
||||
status_change_end(src,SC_CURSEDCIRCLE_ATKER,-1);
|
||||
status_change_end(src,SC_CURSEDCIRCLE_ATKER,INVALID_TIMER);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1422,11 +1422,11 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, sh
|
||||
status_change_end(src, SC_CLOAKINGEXCEED, INVALID_TIMER);
|
||||
if (!src->prev) return 0;
|
||||
} else if( sc->data[SC_CAMOUFLAGE] && skill_num != RA_CAMOUFLAGE )
|
||||
status_change_end(src,SC_CAMOUFLAGE,-1);
|
||||
status_change_end(src,SC_CAMOUFLAGE,INVALID_TIMER);
|
||||
|
||||
if( sc->data[SC_CURSEDCIRCLE_ATKER] ) {
|
||||
sc->data[SC_CURSEDCIRCLE_ATKER]->val3 = 1;
|
||||
status_change_end(src,SC_CURSEDCIRCLE_ATKER,-1);
|
||||
status_change_end(src,SC_CURSEDCIRCLE_ATKER,INVALID_TIMER);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user