From c638f42f8e80a980c21e210c6ce149731dd53b17 Mon Sep 17 00:00:00 2001 From: skotlex Date: Tue, 2 May 2006 00:06:58 +0000 Subject: - Removed OPTION_XMAS, it seems to not exist.... - Added SC_SMA to handle "ready to use SMA" status (rather than SC_COMBO) since it has a visual effect to use. - Corrected the value of OPTION_FLYING - Using SG_FUSION ends Soul Linked effect. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6438 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/clif.c | 11 ++++++----- src/map/map.h | 4 +--- src/map/pc.c | 10 ---------- src/map/skill.c | 10 +++++----- src/map/status.c | 17 ++++++----------- src/map/status.h | 4 ++-- 6 files changed, 20 insertions(+), 36 deletions(-) (limited to 'src/map') diff --git a/src/map/clif.c b/src/map/clif.c index 1f3dc4373..6808260af 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -780,7 +780,8 @@ void clif_get_weapon_view(TBL_PC* sd, short *rhand, short *lhand) #if PACKETVER > 3 struct item_data *id; #endif - if (sd->sc.option&(OPTION_XMAS|OPTION_WEDDING)) + + if(sd->sc.option&OPTION_WEDDING || sd->vd.class_ == JOB_XMAS) { *rhand = *lhand = 0; return; @@ -8739,7 +8740,7 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd) { switch(action_type) { case 0x00: // once attack case 0x07: // continuous attack - if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS)) + if(sd->sc.option&OPTION_WEDDING || sd->vd.class_ == JOB_XMAS) return; if (!battle_config.sdelay_attack_enable && pc_checkskill(sd, SA_FREECAST) <= 0) { if (DIFF_TICK(tick, sd->ud.canact_tick) < 0) { @@ -9520,7 +9521,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) { return; } - if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS)) + if(sd->sc.option&OPTION_WEDDING || sd->vd.class_ == JOB_XMAS) return; if (sd->invincible_timer != -1) @@ -9610,7 +9611,7 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, int skilll return; } - if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS)) + if(sd->sc.option&OPTION_WEDDING || sd->vd.class_ == JOB_XMAS) return; if (sd->invincible_timer != -1) @@ -9674,7 +9675,7 @@ void clif_parse_UseSkillMap(int fd,struct map_session_data *sd) if (clif_cant_act(sd)) return; - if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS)) + if(sd->sc.option&OPTION_WEDDING || sd->vd.class_ == JOB_XMAS) return; if(sd->invincible_timer != -1) diff --git a/src/map/map.h b/src/map/map.h index 66a242545..c06252b46 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -253,9 +253,7 @@ enum { #define OPTION_WEDDING 0x1000 #define OPTION_RUWACH 0x2000 #define OPTION_CHASEWALK 0x4000 -#define OPTION_XMAS 0x8000 - -#define OPTION_FLYING 0x10000 +#define OPTION_FLYING 0x8000 //TODO: Get these Missing options... #define OPTION_SIGHTTRASHER 0x0001 diff --git a/src/map/pc.c b/src/map/pc.c index 7d9cee17f..da385ffcb 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -5513,16 +5513,6 @@ int pc_setoption(struct map_session_data *sd,int type) else if (!(type&OPTION_FALCON) && sd->sc.option&OPTION_FALCON) //Falcon OFF clif_status_load(&sd->bl,SI_FALCON,0); - //SG flying [Komurka] - if (type&OPTION_FLYING && !(sd->sc.option&OPTION_FLYING)) //Flying ON - { - if (sd->status.class_==JOB_STAR_GLADIATOR) - clif_changelook(&sd->bl,LOOK_BASE,JOB_STAR_GLADIATOR2); - } - else if (!(type&OPTION_FLYING) && sd->sc.option&OPTION_FLYING) //Flying OFF - if (sd->vd.class_ != sd->status.class_) - clif_changelook(&sd->bl,LOOK_BASE,sd->status.class_); - sd->sc.option=type; clif_changeoption(&sd->bl); status_calc_pc(sd,0); diff --git a/src/map/skill.c b/src/map/skill.c index b09d4927b..7193cb98a 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1917,7 +1917,7 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds case SL_STIN: case SL_STUN: if (skilllv >= 7 && sd->sc.data[SC_COMBO].timer == -1) - sc_start4(src,SC_COMBO,100,SL_SMA,skilllv,0,0,skill_get_time2(skillid, skilllv)); + sc_start(src,SC_SMA,100,skilllv,skill_get_time(SL_SMA, skilllv)); break; case GS_FULLBUSTER: //Can't attack nor use items until skill's delay expires. [Skotlex] @@ -5419,7 +5419,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in } clif_skill_nodamage(src,bl,skillid,skilllv, sc_start4(bl,SC_SPIRIT,100,skilllv,skillid,0,0,skill_get_time(skillid,skilllv))); - sc_start4(src,SC_COMBO,100,SL_SMA,skilllv,0,0,skill_get_time2(skillid,skilllv)); + sc_start(src,SC_SMA,100,skilllv,skill_get_time(SL_SMA,skilllv)); break; case SL_HIGH: if (sd && !(dstsd && (dstsd->class_&JOBL_UPPER) && !(dstsd->class_&JOBL_2) && dstsd->status.base_level < 70)) { @@ -5428,7 +5428,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in } clif_skill_nodamage(src,bl,skillid,skilllv, sc_start4(bl,type,100,skilllv,skillid,0,0,skill_get_time(skillid,skilllv))); - sc_start4(src,SC_COMBO,100,SL_SMA,skilllv,0,0,skill_get_time2(skillid,skilllv)); + sc_start(src,SC_SMA,100,skilllv,skill_get_time(SL_SMA,skilllv)); break; case SL_SKA: // [marquis007] @@ -5463,7 +5463,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in } clif_skill_nodamage(src,bl,skillid,skilllv, sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); - sc_start4(src,SC_COMBO,100,SL_SMA,skilllv,0,0,skill_get_time2(skillid,skilllv)); + sc_start(src,SC_SMA,100,skilllv,skill_get_time(SL_SMA,skilllv)); break; // New guild skills [Celest] @@ -7913,7 +7913,7 @@ int skill_check_condition(struct map_session_data *sd,int skill, int lv, int typ break; case SL_SMA: if(type) break; //Only do the combo check when the target is selected (type == 0) - if(sd->sc.data[SC_COMBO].timer == -1 || sd->sc.data[SC_COMBO].val1 != skill) + if(sd->sc.data[SC_SMA].timer == -1) return 0; break; diff --git a/src/map/status.c b/src/map/status.c index f77f2a917..d2a744504 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -267,6 +267,7 @@ void initChangeTables(void) { set_sc(SL_SWOO, SC_SWOO, SI_BLANK); set_sc(SL_SKE, SC_SKE, SI_BLANK); set_sc(SL_SKA, SC_SKA, SI_BLANK); + set_sc(SL_SMA, SC_SMA, SI_SMA); set_sc(ST_PRESERVE, SC_PRESERVE, SI_PRESERVE); set_sc(PF_DOUBLECASTING, SC_DOUBLECAST, SI_DOUBLECAST); set_sc(HW_GRAVITATION, SC_GRAVITATION, SI_BLANK); @@ -3332,12 +3333,8 @@ void status_set_viewdata(struct block_list *bl, int class_) } if (sd->vd.class_ == JOB_WEDDING) sd->sc.option&=~OPTION_WEDDING; - if (sd->vd.class_ == JOB_XMAS) - sd->sc.option&=~OPTION_XMAS; if (class_ == JOB_WEDDING) sd->sc.option|=OPTION_WEDDING; - if (class_ == JOB_XMAS) - sd->sc.option|=OPTION_XMAS; sd->vd.class_ = class_; clif_get_weapon_view(sd, &sd->vd.weapon, &sd->vd.shield); sd->vd.head_top = sd->status.head_top; @@ -3871,6 +3868,9 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val status_change_end(bl,SC_DECREASEAGI,-1); return 0; } + case SC_FUSION: + if(sc->data[SC_SPIRIT].timer!=-1 ) + status_change_end(bl,SC_SPIRIT,-1); break; } //Check for overlapping fails @@ -4577,6 +4577,7 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val case SC_SILENCE: /* 沈?(レックスデビ?ナ) */ case SC_ASSUMPTIO: /* アスムプティオ */ case SC_SLEEP: + case SC_SMA: break; // gs_something1 [Vicious] case SC_MADNESSCANCEL: @@ -4741,9 +4742,6 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val case SC_SIGHTTRASHER: sc->option |= OPTION_SIGHTTRASHER; break; - case SC_XMAS: // Xmas Suit [Valaris] - sc->option |= OPTION_XMAS; - break; case SC_FUSION: sc->option |= OPTION_FLYING; break; @@ -5255,10 +5253,6 @@ int status_change_end( struct block_list* bl , int type,int tid ) sc->option &= ~OPTION_SIGHTTRASHER; opt_flag = 1; break; - case SC_XMAS: // Xmas Suit [Valaris] - sc->option &= ~OPTION_XMAS; - opt_flag = 1; - break; case SC_FUSION: sc->option &= ~OPTION_FLYING; opt_flag = 1; @@ -5817,6 +5811,7 @@ int status_change_clear_buffs (struct block_list *bl, int type) case SC_WEIGHT50: case SC_WEIGHT90: case SC_COMBO: + case SC_SMA: case SC_DANCING: case SC_GUILDAURA: case SC_SAFETYWALL: diff --git a/src/map/status.h b/src/map/status.h index a42cb9e41..57db4c937 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -241,7 +241,7 @@ enum { SC_SUITON, SC_NEN, SC_KNOWLEDGE, - + SC_SMA, //Not combined with SC_COMBO because SMA has it's own visual effect. [Skotlex]. SC_MAX, //Automatically updated max, used in for's and at startup to check we are within bounds. [Skotlex] }; extern int SkillStatusChangeTable[MAX_SKILL]; @@ -352,7 +352,7 @@ enum { SI_KAIZEL = 156, SI_KAAHI = 157, SI_KAUPE = 158, -// 159 = blue sparks and item-heal sound effect. Looks like item-use effect. + SI_SMA = 159, // 160 SI_ONEHAND = 161, SI_WARM = 165, -- cgit v1.2.3-70-g09d2