Bug Fixes

* Switching arrows no longer stops attacks. (bugreport:9270)
* Looter monsters will now randomly pick items rather than going for the closest one. (bugreport:9268)
* Follow up to 0fed97c. Moved pc_setsit before skill_sit to not break skills that count players who are sitting. (bugreport:8966)
* Follow up to 2d2991a. Cleaned up some compile warnings.
* Updated the inf3 descriptions in the skill_db.
This commit is contained in:
aleos89 2014-09-20 11:44:44 -04:00
parent 4f6448b23f
commit a080117a74
13 changed files with 121 additions and 126 deletions

View File

@ -38,8 +38,8 @@
// 0x01000- disable usage on enemies (for non-offensive skills). // 0x01000- disable usage on enemies (for non-offensive skills).
// 0x02000- free // 0x02000- free
// 0x04000- chorus skill // 0x04000- chorus skill
// 0x08000- spell that ignore bg reduction // 0x08000- skill that ignore bg reduction
// 0x10000- spell that ignore gvg reduction // 0x10000- skill that ignore gvg reduction
// 0x20000- makes 'self'/'place' skill cannot be casted/placed when near NPC (see 'db/skill_nonearnpc_db.txt' for more options) // 0x20000- makes 'self'/'place' skill cannot be casted/placed when near NPC (see 'db/skill_nonearnpc_db.txt' for more options)
// 13 maxcount: max amount of skill instances to place on the ground when // 13 maxcount: max amount of skill instances to place on the ground when
// player_land_skill_limit/monster_land_skill_limit is enabled. For skills // player_land_skill_limit/monster_land_skill_limit is enabled. For skills
@ -47,21 +47,23 @@
// 14 attack type (none, weapon, magic, misc) // 14 attack type (none, weapon, magic, misc)
// 15 Blowcount (amount of tiles skill knockbacks) // 15 Blowcount (amount of tiles skill knockbacks)
// 16 inf3 (skill information 3): // 16 inf3 (skill information 3):
// 0x0001- skill ignores land protector (e.g. arrow shower) // 0x00001- skill ignores land protector (e.g. arrow shower)
// 0x0002- spell that doesn't end camouflage // 0x00002- skill that doesn't end camouflage
// 0x0004- usable skills while hiding // 0x00004- usable skills while hiding
// 0x0008- spell that can be use while in dancing state // 0x00008- skill that can be use while in dancing state
// 0x0010- spell that could hit emperium // 0x00010- skill that could hit emperium
// 0x0020- spell blocked by statis // 0x00020- skill blocked by statis
// 0x0040- spell blocked by kagehumi // 0x00040- skill blocked by kagehumi
// 0x0080- spell range affected by AC_VULTURE // 0x00080- skill range affected by AC_VULTURE
// 0x0100- spell range affected by GS_SNAKEEYE // 0x00100- skill range affected by GS_SNAKEEYE
// 0x0200- spell range affected by NJ_SHADOWJUMP // 0x00200- skill range affected by NJ_SHADOWJUMP
// 0x0400- spell range affected by WL_RADIUS // 0x00400- skill range affected by WL_RADIUS
// 0x0800- spell range affected by RA_RESEARCHTRAP // 0x00800- skill range affected by RA_RESEARCHTRAP
// 0x1000- spell that can't be copied // 0x01000- skill that does not affect user that has NC_HOVERING active
// 0x2000- spell that can be using while riding warg // 0x02000- skill that can be using while riding warg
// 0x4000- spell that can't be used while in mado // 0x04000- skill that can't be used while in mado
// 0x08000- skill that can be used to target while under SC__MANHOLE effect
// 0x10000- skill that affects hidden targets
// 17 Name // 17 Name
// 18 Description // 18 Description

View File

@ -38,8 +38,8 @@
// 0x01000- disable usage on enemies (for non-offensive skills). // 0x01000- disable usage on enemies (for non-offensive skills).
// 0x02000- available skill for SC_AUTOSHADOWSPELL // 0x02000- available skill for SC_AUTOSHADOWSPELL
// 0x04000- chorus skill // 0x04000- chorus skill
// 0x08000- spell that ignore bg reduction // 0x08000- skill that ignore bg reduction
// 0x10000- spell that ignore gvg reduction // 0x10000- skill that ignore gvg reduction
// 0x20000- makes 'self'/'place' skill cannot be casted/placed when near NPC (see 'db/skill_nonearnpc_db.txt' for more options) // 0x20000- makes 'self'/'place' skill cannot be casted/placed when near NPC (see 'db/skill_nonearnpc_db.txt' for more options)
// 13 maxcount: max amount of skill instances to place on the ground when // 13 maxcount: max amount of skill instances to place on the ground when
// player_land_skill_limit/monster_land_skill_limit is enabled. For skills // player_land_skill_limit/monster_land_skill_limit is enabled. For skills
@ -48,22 +48,22 @@
// 15 Blowcount (amount of tiles skill knockbacks) // 15 Blowcount (amount of tiles skill knockbacks)
// 16 inf3 (skill information 3): // 16 inf3 (skill information 3):
// 0x00001- skill ignores land protector (e.g. arrow shower) // 0x00001- skill ignores land protector (e.g. arrow shower)
// 0x00002- spell that doesn't end camouflage // 0x00002- skill that doesn't end camouflage
// 0x00004- usable skills while hiding // 0x00004- usable skills while hiding
// 0x00008- spell that can be use while in dancing state // 0x00008- skill that can be use while in dancing state
// 0x00010- spell that could hit emperium // 0x00010- skill that could hit emperium
// 0x00020- spell blocked by statis // 0x00020- skill blocked by statis
// 0x00040- spell blocked by kagehumi // 0x00040- skill blocked by kagehumi
// 0x00080- spell range affected by AC_VULTURE // 0x00080- skill range affected by AC_VULTURE
// 0x00100- spell range affected by GS_SNAKEEYE // 0x00100- skill range affected by GS_SNAKEEYE
// 0x00200- spell range affected by NJ_SHADOWJUMP // 0x00200- skill range affected by NJ_SHADOWJUMP
// 0x00400- spell range affected by WL_RADIUS // 0x00400- skill range affected by WL_RADIUS
// 0x00800- spell range affected by RA_RESEARCHTRAP // 0x00800- skill range affected by RA_RESEARCHTRAP
// 0x01000- Spell that does not affect user that has NC_HOVERING active // 0x01000- skill that does not affect user that has NC_HOVERING active
// 0x02000- spell that can be using while riding warg // 0x02000- skill that can be using while riding warg
// 0x04000- spell that can't be used while in mado // 0x04000- skill that can't be used while in mado
// 0x08000- spell that can be used to target while under Man Hole effect // 0x08000- skill that can be used to target while under SC__MANHOLE effect
// 0x10000- spell that having an affect to hiding target // 0x10000- skill that affects hidden targets
// 17 Name // 17 Name
// 18 Description // 18 Description
1,0,0,0,0,0,0,9,0,no,0,0,0,none,0,0x0, NV_BASIC,Basic Skill 1,0,0,0,0,0,0,9,0,no,0,0,0,none,0,0x0, NV_BASIC,Basic Skill

View File

@ -38,8 +38,8 @@
// 0x01000- disable usage on enemies (for non-offensive skills). // 0x01000- disable usage on enemies (for non-offensive skills).
// 0x02000- available skill for SC_AUTOSHADOWSPELL // 0x02000- available skill for SC_AUTOSHADOWSPELL
// 0x04000- chorus skill // 0x04000- chorus skill
// 0x08000- spell that ignore bg reduction // 0x08000- skill that ignore bg reduction
// 0x10000- spell that ignore gvg reduction // 0x10000- skill that ignore gvg reduction
// 0x20000- makes 'self'/'place' skill cannot be casted/placed when near NPC (see 'db/skill_nonearnpc_db.txt' for more options) // 0x20000- makes 'self'/'place' skill cannot be casted/placed when near NPC (see 'db/skill_nonearnpc_db.txt' for more options)
// 13 maxcount: max amount of skill instances to place on the ground when // 13 maxcount: max amount of skill instances to place on the ground when
// player_land_skill_limit/monster_land_skill_limit is enabled. For skills // player_land_skill_limit/monster_land_skill_limit is enabled. For skills
@ -48,22 +48,22 @@
// 15 Blowcount (amount of tiles skill knockbacks) // 15 Blowcount (amount of tiles skill knockbacks)
// 16 inf3 (skill information 3): // 16 inf3 (skill information 3):
// 0x00001- skill ignores land protector (e.g. arrow shower) // 0x00001- skill ignores land protector (e.g. arrow shower)
// 0x00002- spell that doesn't end camouflage // 0x00002- skill that doesn't end camouflage
// 0x00004- usable skills while hiding // 0x00004- usable skills while hiding
// 0x00008- spell that can be use while in dancing state // 0x00008- skill that can be use while in dancing state
// 0x00010- spell that could hit emperium // 0x00010- skill that could hit emperium
// 0x00020- spell blocked by statis // 0x00020- skill blocked by statis
// 0x00040- spell blocked by kagehumi // 0x00040- skill blocked by kagehumi
// 0x00080- spell range affected by AC_VULTURE // 0x00080- skill range affected by AC_VULTURE
// 0x00100- spell range affected by GS_SNAKEEYE // 0x00100- skill range affected by GS_SNAKEEYE
// 0x00200- spell range affected by NJ_SHADOWJUMP // 0x00200- skill range affected by NJ_SHADOWJUMP
// 0x00400- spell range affected by WL_RADIUS // 0x00400- skill range affected by WL_RADIUS
// 0x00800- spell range affected by RA_RESEARCHTRAP // 0x00800- skill range affected by RA_RESEARCHTRAP
// 0x01000- Spell that does not affect user that has NC_HOVERING active // 0x01000- skill that does not affect user that has NC_HOVERING active
// 0x02000- spell that can be using while riding warg // 0x02000- skill that can be using while riding warg
// 0x04000- spell that can't be used while in mado // 0x04000- skill that can't be used while in mado
// 0x08000- spell that can be used to target while under Man Hole effect // 0x08000- skill that can be used to target while under SC__MANHOLE effect
// 0x10000- spell that having an affect to hiding target // 0x10000- skill that affects hidden targets
// 17 Name // 17 Name
// 18 Description // 18 Description
1,0,0,0,0,0,0,9,0,no,0,0,0,none,0,0x0, NV_BASIC,Basic Skill 1,0,0,0,0,0,0,9,0,no,0,0,0,none,0,0x0, NV_BASIC,Basic Skill

View File

@ -107,12 +107,12 @@ AccountDB* account_db_sql(void) {
static bool account_db_sql_init(AccountDB* self) { static bool account_db_sql_init(AccountDB* self) {
AccountDB_SQL* db = (AccountDB_SQL*)self; AccountDB_SQL* db = (AccountDB_SQL*)self;
Sql* sql_handle; Sql* sql_handle;
const char* username; const char* username = "ragnarok";
const char* password; const char* password = "";
const char* hostname; const char* hostname = "127.0.0.1";
uint16 port; uint16 port = 3306;
const char* database; const char* database = "ragnarok";
const char* codepage; const char* codepage = "";
db->accounts = Sql_Malloc(); db->accounts = Sql_Malloc();
sql_handle = db->accounts; sql_handle = db->accounts;

View File

@ -25,7 +25,7 @@
static char ipban_db_hostname[32] = "127.0.0.1"; static char ipban_db_hostname[32] = "127.0.0.1";
static uint16 ipban_db_port = 3306; static uint16 ipban_db_port = 3306;
static char ipban_db_username[32] = "ragnarok"; static char ipban_db_username[32] = "ragnarok";
static char ipban_db_password[32] = "ragnarok"; static char ipban_db_password[32] = "";
static char ipban_db_database[32] = "ragnarok"; static char ipban_db_database[32] = "ragnarok";
static char ipban_codepage[32] = ""; static char ipban_codepage[32] = "";
static char ipban_table[32] = "ipbanlist"; static char ipban_table[32] = "ipbanlist";
@ -187,12 +187,12 @@ bool ipban_config_read(const char* key, const char* value) {
* Launched at login-serv start, create db or other long scope variable here. * Launched at login-serv start, create db or other long scope variable here.
*/ */
void ipban_init(void) { void ipban_init(void) {
const char* username; const char* username = ipban_db_username;
const char* password; const char* password = ipban_db_password;
const char* hostname; const char* hostname = ipban_db_hostname;
uint16 port; uint16 port = ipban_db_port;
const char* database; const char* database = ipban_db_database;
const char* codepage; const char* codepage = ipban_db_codepage;
ipban_inited = true; ipban_inited = true;

View File

@ -3285,7 +3285,6 @@ void clif_arrowequip(struct map_session_data *sd,int val)
nullpo_retv(sd); nullpo_retv(sd);
pc_stop_attack(sd); // [Valaris]
#if PACKETVER >= 20121128 #if PACKETVER >= 20121128
clif_status_change(&sd->bl, SI_CLIENT_ONLY_EQUIP_ARROW, 1, INVALID_TIMER, 0, 0, 0); clif_status_change(&sd->bl, SI_CLIENT_ONLY_EQUIP_ARROW, 1, INVALID_TIMER, 0, 0, 0);
#endif #endif

View File

@ -1168,9 +1168,7 @@ static int mob_ai_sub_hard_lootsearch(struct block_list *bl,va_list ap)
target = va_arg(ap,struct block_list**); target = va_arg(ap,struct block_list**);
dist = distance_bl(&md->bl, bl); dist = distance_bl(&md->bl, bl);
if(mob_can_reach(md,bl,dist+1, MSS_LOOT) && if (mob_can_reach(md,bl,dist+1, MSS_LOOT) && (*target) == NULL) {
((*target) == NULL || !check_distance_bl(&md->bl, *target, dist)) //New target closer than previous one.
) {
(*target) = bl; (*target) = bl;
md->target_id = bl->id; md->target_id = bl->id;
md->min_chase = md->db->range3; md->min_chase = md->db->range3;

View File

@ -970,7 +970,7 @@ int npc_touch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y)
if (pc_ishiding(sd) || (sd->sc.count && sd->sc.data[SC_CAMOUFLAGE]) || pc_isdead(sd)) if (pc_ishiding(sd) || (sd->sc.count && sd->sc.data[SC_CAMOUFLAGE]) || pc_isdead(sd))
break; // hidden or dead chars cannot use warps break; // hidden or dead chars cannot use warps
if(sd->count_rewarp > 10){ if(sd->count_rewarp > 10){
ShowWarning("Prevent infinite warping loop for player (%d:%d), please fix script npc:'%s', path:'%s' \n",sd->status.account_id, sd->status.char_id,map[m].npc[i]->exname,map[m].npc[i]->path); ShowWarning("Prevented infinite warp loop for player (%d:%d). Please fix NPC: '%s', path: '%s'\n", sd->status.account_id, sd->status.char_id, map[m].npc[i]->exname, map[m].npc[i]->path);
sd->count_rewarp=0; sd->count_rewarp=0;
break; break;
} }

View File

@ -717,7 +717,7 @@ struct {
#endif #endif
#define pc_setdead(sd) ( (sd)->state.dead_sit = (sd)->vd.dead_sit = 1 ) #define pc_setdead(sd) ( (sd)->state.dead_sit = (sd)->vd.dead_sit = 1 )
#define pc_setsit(sd) ( (sd)->state.dead_sit = (sd)->vd.dead_sit = 2 ) #define pc_setsit(sd) { pc_stop_walking((sd), 1|4); pc_stop_attack((sd)); (sd)->state.dead_sit = (sd)->vd.dead_sit = 2; }
#define pc_isdead(sd) ( (sd)->state.dead_sit == 1 ) #define pc_isdead(sd) ( (sd)->state.dead_sit == 1 )
#define pc_issit(sd) ( (sd)->vd.dead_sit == 2 ) #define pc_issit(sd) ( (sd)->vd.dead_sit == 2 )
#define pc_isidle(sd) ( (sd)->chatID || (sd)->state.vending || (sd)->state.buyingstore || DIFF_TICK(last_tick, (sd)->idletime) >= battle_config.idle_no_share ) #define pc_isidle(sd) ( (sd)->chatID || (sd)->state.vending || (sd)->state.buyingstore || DIFF_TICK(last_tick, (sd)->idletime) >= battle_config.idle_no_share )

View File

@ -3100,7 +3100,7 @@ struct script_data* push_copy(struct script_stack* stack, int pos)
} }
} }
/// Removes the values in indexes [start,end[ from the stack. /// Removes the values in indexes [start,end] from the stack.
/// Adjusts all stack pointers. /// Adjusts all stack pointers.
void pop_stack(struct script_state* st, int start, int end) void pop_stack(struct script_state* st, int start, int end)
{ {
@ -18346,8 +18346,8 @@ BUILDIN_FUNC(sit)
return SCRIPT_CMD_FAILURE; return SCRIPT_CMD_FAILURE;
if( !pc_issit(sd) ) { if( !pc_issit(sd) ) {
skill_sit(sd, 1);
pc_setsit(sd); pc_setsit(sd);
skill_sit(sd, 1);
clif_sitting(&sd->bl); clif_sitting(&sd->bl);
} }
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;

View File

@ -3777,8 +3777,8 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data)
if( target->type == BL_PC ) { if( target->type == BL_PC ) {
struct map_session_data *tsd = NULL; struct map_session_data *tsd = NULL;
if( (tsd = ((TBL_PC*)target)) && !pc_issit(tsd) ) { if( (tsd = ((TBL_PC*)target)) && !pc_issit(tsd) ) {
skill_sit(tsd, 1);
pc_setsit(tsd); pc_setsit(tsd);
skill_sit(tsd, 1);
clif_sitting(&tsd->bl); clif_sitting(&tsd->bl);
} }
} }
@ -16057,12 +16057,9 @@ int skill_sit (struct map_session_data *sd, int type)
range = skill_get_splash(TK_SPTIME, lv); range = skill_get_splash(TK_SPTIME, lv);
} }
if( type ) { if (type)
// TODO: Include the case of using the Insert key
pc_stop_walking(sd, 1|4); // Stop players who may be walking
pc_stop_attack(sd); // Stop players who may be attacking
clif_status_load(&sd->bl, SI_SIT, 1); clif_status_load(&sd->bl, SI_SIT, 1);
} else else
clif_status_load(&sd->bl, SI_SIT, 0); clif_status_load(&sd->bl, SI_SIT, 0);
if (!flag) return 0; if (!flag) return 0;

View File

@ -27,16 +27,6 @@ struct status_change_entry;
DBMap* skilldb_name2id; DBMap* skilldb_name2id;
/// Constants to identify the skill's inf value:
enum e_skill_inf {
INF_ATTACK_SKILL = 0x01,
INF_GROUND_SKILL = 0x02,
INF_SELF_SKILL = 0x04, // Skills casted on self where target is automatically chosen
// 0x08 not assigned
INF_SUPPORT_SKILL = 0x10,
INF_TARGET_TRAP = 0x20,
};
/// Constants to identify a skill's nk value (damage properties) /// Constants to identify a skill's nk value (damage properties)
/// The NK value applies only to non INF_GROUND_SKILL skills /// The NK value applies only to non INF_GROUND_SKILL skills
/// when determining skill castend function to invoke. /// when determining skill castend function to invoke.
@ -51,49 +41,58 @@ enum e_skill_nk {
NK_NO_CARDFIX_DEF = 0x80, NK_NO_CARDFIX_DEF = 0x80,
}; };
/// Constants to identify the skill's inf value:
enum e_skill_inf {
INF_ATTACK_SKILL = 0x01,
INF_GROUND_SKILL = 0x02,
INF_SELF_SKILL = 0x04, // Skills casted on self where target is automatically chosen
// 0x08 not assigned
INF_SUPPORT_SKILL = 0x10,
INF_TARGET_TRAP = 0x20,
};
/// A skill with 3 would be no damage + splash: area of effect. /// A skill with 3 would be no damage + splash: area of effect.
/// Constants to identify a skill's inf2 value. /// Constants to identify a skill's inf2 value.
enum e_skill_inf2 { enum e_skill_inf2 {
INF2_QUEST_SKILL = 0x00001, INF2_QUEST_SKILL = 0x00001,
INF2_NPC_SKILL = 0x00002, //NPC skills are those that players can't have in their skill tree. INF2_NPC_SKILL = 0x00002, //NPC skills are those that players can't have in their skill tree.
INF2_WEDDING_SKILL = 0x00004, INF2_WEDDING_SKILL = 0x00004,
INF2_SPIRIT_SKILL = 0x00008, INF2_SPIRIT_SKILL = 0x00008,
INF2_GUILD_SKILL = 0x00010, INF2_GUILD_SKILL = 0x00010,
INF2_SONG_DANCE = 0x00020, INF2_SONG_DANCE = 0x00020,
INF2_ENSEMBLE_SKILL = 0x00040, INF2_ENSEMBLE_SKILL = 0x00040,
INF2_TRAP = 0x00080, INF2_TRAP = 0x00080,
INF2_TARGET_SELF = 0x00100, //Refers to ground placed skills that will target the caster as well (like Grandcross) INF2_TARGET_SELF = 0x00100, //Refers to ground placed skills that will target the caster as well (like Grandcross)
INF2_NO_TARGET_SELF = 0x00200, INF2_NO_TARGET_SELF = 0x00200,
INF2_PARTY_ONLY = 0x00400, INF2_PARTY_ONLY = 0x00400,
INF2_GUILD_ONLY = 0x00800, INF2_GUILD_ONLY = 0x00800,
INF2_NO_ENEMY = 0x01000, INF2_NO_ENEMY = 0x01000,
INF2_AUTOSHADOWSPELL = 0x02000, // Skill that available for SC_AUTOSHADOWSPELL INF2_AUTOSHADOWSPELL = 0x02000, // Skill that available for SC_AUTOSHADOWSPELL
INF2_CHORUS_SKILL = 0x04000, // Chorus skill INF2_CHORUS_SKILL = 0x04000, // Chorus skill
INF2_NO_BG_DMG = 0x08000, // spell that ignore bg reduction INF2_NO_BG_DMG = 0x08000, // Skill that ignore bg reduction
INF2_NO_GVG_DMG = 0x10000, // spell that ignore gvg reduction INF2_NO_GVG_DMG = 0x10000, // Skill that ignore gvg reduction
INF2_NO_NEARNPC = 0x20000, // disable to cast skill if near with NPC [Cydh] INF2_NO_NEARNPC = 0x20000, // disable to cast skill if near with NPC [Cydh]
}; };
/// Skill info type 3 /// Skill info type 3
enum e_skill_inf3 { enum e_skill_inf3 {
INF3_NOLP = 0x00001, // Spells that can ignore Land Protector INF3_NOLP = 0x00001, // Skill that can ignore Land Protector
INF3_NOENDCAMOUFLAGE = 0x00002, // spell that doesn't end camouflage INF3_NOENDCAMOUFLAGE = 0x00002, // Skill that doesn't end camouflage
INF3_USABLE_HIDING = 0x00004, // spell that can be use in hiding INF3_USABLE_HIDING = 0x00004, // Skill that can be use in hiding
INF3_USABLE_DANCE = 0x00008, // spell that can be use while in dancing state INF3_USABLE_DANCE = 0x00008, // Skill that can be use while in dancing state
INF3_HIT_EMP = 0x00010, // spell that could hit emperium INF3_HIT_EMP = 0x00010, // Skill that could hit emperium
INF3_STATIS_BL = 0x00020, // spell blocked by statis INF3_STATIS_BL = 0x00020, // Skill blocked by statis
INF3_KAGEHUMI_BL = 0x00040, // spell blocked by kagehumi INF3_KAGEHUMI_BL = 0x00040, // Skill blocked by kagehumi
INF3_EFF_VULTURE = 0x00080, // spell range affected by AC_VULTURE INF3_EFF_VULTURE = 0x00080, // Skill range affected by AC_VULTURE
INF3_EFF_SNAKEEYE = 0x00100, // spell range affected by GS_SNAKEEYE INF3_EFF_SNAKEEYE = 0x00100, // Skill range affected by GS_SNAKEEYE
INF3_EFF_SHADOWJUMP = 0x00200, // spell range affected by NJ_SHADOWJUMP INF3_EFF_SHADOWJUMP = 0x00200, // Skill range affected by NJ_SHADOWJUMP
INF3_EFF_RADIUS = 0x00400, // spell range affected by WL_RADIUS INF3_EFF_RADIUS = 0x00400, // Skill range affected by WL_RADIUS
INF3_EFF_RESEARCHTRAP = 0x00800, // spell range affected by RA_RESEARCHTRAP INF3_EFF_RESEARCHTRAP = 0x00800, // Skill range affected by RA_RESEARCHTRAP
INF3_NO_EFF_HOVERING = 0x01000, // Spell that does not affect user that has SC_HOVERING active INF3_NO_EFF_HOVERING = 0x01000, // Skill that does not affect user that has SC_HOVERING active
INF3_USABLE_WARG = 0x02000, // spell that can be use while riding warg INF3_USABLE_WARG = 0x02000, // Skill that can be use while riding warg
INF3_DIS_MADO = 0x04000, // spell that can't be used while in mado INF3_DIS_MADO = 0x04000, // Skill that can't be used while in mado
INF3_USABLE_MANHOLE = 0x08000, // spell that can be used to target while under Man Hole effect INF3_USABLE_MANHOLE = 0x08000, // Skill that can be used to target while under SC__MANHOLE effect
INF3_HIT_HIDING = 0x10000, // spell that having an affect to hiding target INF3_HIT_HIDING = 0x10000, // Skill that affects hidden targets
//... add other spell list option here
}; };
/// Walk intervals at which chase-skills are attempted to be triggered. /// Walk intervals at which chase-skills are attempted to be triggered.

View File

@ -8731,8 +8731,8 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
case SC_TENSIONRELAX: case SC_TENSIONRELAX:
if (sd) { if (sd) {
skill_sit(sd, 1);
pc_setsit(sd); pc_setsit(sd);
skill_sit(sd, 1);
clif_sitting(&sd->bl); clif_sitting(&sd->bl);
} }
val2 = 12; // SP cost val2 = 12; // SP cost
@ -9459,8 +9459,8 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
case SC_SITDOWN_FORCE: case SC_SITDOWN_FORCE:
case SC_BANANA_BOMB_SITDOWN: case SC_BANANA_BOMB_SITDOWN:
if( sd && !pc_issit(sd) ) { if( sd && !pc_issit(sd) ) {
skill_sit(sd, 1);
pc_setsit(sd); pc_setsit(sd);
skill_sit(sd, 1);
clif_sitting(bl); clif_sitting(bl);
} }
break; break;
@ -12044,8 +12044,8 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
if( --(sce->val4) >= 0 ) { if( --(sce->val4) >= 0 ) {
status_charge(bl,0,sce->val2); // Reduce 8 every 10 seconds. status_charge(bl,0,sce->val2); // Reduce 8 every 10 seconds.
if( sd && !pc_issit(sd) ) { // Force to sit every 10 seconds. if( sd && !pc_issit(sd) ) { // Force to sit every 10 seconds.
skill_sit(sd, 1);
pc_setsit(sd); pc_setsit(sd);
skill_sit(sd, 1);
clif_sitting(bl); clif_sitting(bl);
} }
sc_timer_next(10000 + tick, status_change_timer, bl->id, data); sc_timer_next(10000 + tick, status_change_timer, bl->id, data);