summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt5
-rw-r--r--db/skill_cast_db.txt36
-rw-r--r--src/map/clif.c11
-rw-r--r--src/map/map.h4
-rw-r--r--src/map/pc.c10
-rw-r--r--src/map/skill.c10
-rw-r--r--src/map/status.c17
-rw-r--r--src/map/status.h4
8 files changed, 43 insertions, 54 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 6474f29cd..d458f29f6 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,11 @@ 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.
2006/05/01
+ * Removed OPTION_XMAS, it seems to not exist.... [Skotlex]
+ * Added SC_SMA to handle "ready to use SMA" status (rather than SC_COMBO)
+ since it has a visual effect to use. [Skotlex]
+ * Corrected the value of OPTION_FLYING [Skotlex]
+ * Using SG_FUSION ends Soul Linked effect. [Skotlex]
* status_setviewdata will set your option accordingly when the previous/new
view-class is wedding or xmas suit. [Skotlex]
* Added function map_foreachinshootrange, behaves the same way as
diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt
index 2d1cba139..d81d50c9f 100644
--- a/db/skill_cast_db.txt
+++ b/db/skill_cast_db.txt
@@ -705,39 +705,39 @@
//===== Soul Linker ========================
//-- SL_ALCHEMIST
-445,1000,0,0,150000:200000:250000:300000:350000,3000
+445,1000,0,0,150000:200000:250000:300000:350000,0
//-- AM_BERSERKPITCHER - Copy of AM_POTIONPITCHER for now
446,0,500,0,0,0
//-- SL_MONK
-447,1000,0,0,150000:200000:250000:300000:350000,3000
+447,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_STAR
-448,1000,0,0,150000:200000:250000:300000:350000,3000
+448,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_SAGE
-449,1000,0,0,150000:200000:250000:300000:350000,3000
+449,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_CRUSADER
-450,1000,0,0,150000:200000:250000:300000:350000,3000
+450,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_SUPERNOVICE
-451,1000,0,0,150000:200000:250000:300000:350000,3000
+451,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_KNIGHT
-452,1000,0,0,150000:200000:250000:300000:350000,3000
+452,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_WIZARD
-453,1000,0,0,150000:200000:250000:300000:350000,3000
+453,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_PRIEST
-454,1000,0,0,150000:200000:250000:300000:350000,3000
+454,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_BARDDANCER
-455,1000,0,0,150000:200000:250000:300000:350000,3000
+455,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_ROGUE
-456,1000,0,0,150000:200000:250000:300000:350000,3000
+456,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_ASSASSIN
-457,1000,0,0,150000:200000:250000:300000:350000,3000
+457,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_BLACKSMITH
-458,1000,0,0,150000:200000:250000:300000:350000,3000
+458,1000,0,0,150000:200000:250000:300000:350000,0
//-- BS_ADRENALINE2
459,0,0,0,150000,0
//-- SL_HUNTER
-460,1000,0,0,150000:200000:250000:300000:350000,3000
+460,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_SOULLINKER
-461,1000,0,0,150000:200000:250000:300000:350000,3000
+461,1000,0,0,150000:200000:250000:300000:350000,0
//-- SL_KAIZEL
462,4500:4000:3500:3000:2500:2000:1500,0,0,1800000,2000
//-- SL_KAAHI
@@ -747,11 +747,11 @@
//-- SL_KAITE
465,6000:5500:5000:4500:4000:3500:3000,0,0,60000:120000:180000:240000:300000:360000:600000,0
//-- SL_STIN
-467,100,500,0,0,3000
+467,100,500,0,0,0
//-- SL_STUN
-468,100,500,0,2000,3000
+468,100,500,0,2000,0
//-- SL_SMA
-469,2000,500,0,0,0
+469,2000,500,0,3000,0
//-- SL_SWOO
470,1000,500,0,1000:2000:3000:4000:5000:6000:7000,0
//-- SL_SKE
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,