diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/battle.c | 3 | ||||
-rw-r--r-- | src/map/clif.c | 20 | ||||
-rw-r--r-- | src/map/map.h | 2 | ||||
-rw-r--r-- | src/map/skill.c | 5 | ||||
-rw-r--r-- | src/map/status.c | 4 |
5 files changed, 21 insertions, 13 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index a8aa4e988..a2f71a32c 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -882,7 +882,6 @@ static struct Damage battle_calc_weapon_attack( case CR_GRANDCROSS: case NPC_GRANDDARKNESS: case NJ_HUUMA: - case NJ_TATAMIGAESHI: case GS_FLING: case GS_TRIPLEACTION: case GS_BULLSEYE: @@ -2618,7 +2617,7 @@ struct Damage battle_calc_misc_attack( pc_payzeny(sd, md.damage); } - if(is_boss(target)) + if(is_boss(target) || tsd) md.damage=md.damage*60/100; break; case GS_FLING: diff --git a/src/map/clif.c b/src/map/clif.c index f60594160..318aa3a99 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -11086,12 +11086,20 @@ void clif_parse_PMIgnoreList(int fd,struct map_session_data *sd) void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd) {
int level;
- if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE)
- sd->doridori_counter++;
-
- if ((sd->class_&MAPID_BASEMASK) == MAPID_TAEKWON
- && sd->state.rest && (level = pc_checkskill(sd,TK_SPTIME)))
- sc_start(&sd->bl,SkillStatusChangeTable(TK_SPTIME),100,level,skill_get_time(TK_SPTIME, level));
+ if (sd->state.doridori) return;
+
+ switch (sd->class_&MAPID_UPPERMASK)
+ {
+ case MAPID_TAEKWON:
+ if (!sd->state.rest)
+ break;
+ if (level = pc_checkskill(sd,TK_SPTIME))
+ sc_start(&sd->bl,SkillStatusChangeTable(TK_SPTIME),
+ 100,level,skill_get_time(TK_SPTIME, level));
+ case MAPID_SUPER_NOVICE:
+ sd->state.doridori=1;
+ break;
+ }
return;
}
/*==========================================
diff --git a/src/map/map.h b/src/map/map.h index dcd87f294..4249babd4 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -595,6 +595,7 @@ struct map_session_data { unsigned rewarp :1; //Signals that a player should warp as soon as he is done loading a map. [Skotlex]
unsigned killer : 1;
unsigned killable : 1;
+ unsigned doridori : 1;
unsigned short autoloot;
struct guild *gmaster_flag;
} state;
@@ -765,7 +766,6 @@ struct map_session_data { int spirit_timer[MAX_SKILL_LEVEL];
int die_counter;
- short doridori_counter;
char potion_success_counter;
int reg_num;
diff --git a/src/map/skill.c b/src/map/skill.c index 531cb9857..87df0e1ac 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1848,6 +1848,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds clif_specialeffect(bl, 438, AREA); if (--sc->data[SC_KAITE].val2 <= 0) status_change_end(bl, SC_KAITE, -1); + clif_skill_nodamage(bl,src,skillid,skilllv,1); bl = src; //Just make the skill attack yourself @.@ sc = status_get_sc(bl); tsd = (bl->type == BL_PC)?(TBL_PC*)bl:NULL; @@ -5128,7 +5129,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in } break; - // Slim Pitcher (normally Condensed Potion doesn't give SP (Heals party members)) + // Slim Pitcher case CR_SLIMPITCHER: if (potion_hp || potion_sp) { int hp = potion_hp, sp = potion_sp; @@ -5466,7 +5467,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in pc_delspiritball(sd,1,0); } break; - + case GS_CRACKER: if (!dstsd) // according to latest patch, should not work on players [Reddozen] { diff --git a/src/map/status.c b/src/map/status.c index e561b7d91..f4af0c8e7 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -7006,9 +7006,9 @@ static int status_natural_heal(DBKey key,void * data,va_list app) while(sregen->tick.sp >= (unsigned int)battle_config.natural_heal_skill_interval)
{
val = sregen->sp;
- if (sd && sd->doridori_counter) {
+ if (sd && sd->state.doridori) {
val*=2;
- sd->doridori_counter--;
+ sd->state.doridori = 0;
if (
(sd->class_&MAPID_UPPERMASK) == MAPID_STAR_GLADIATOR &&
rand()%10000 < battle_config.sg_angel_skill_ratio
|