diff --git a/db/import-tmpl/skill_db.txt b/db/import-tmpl/skill_db.txt index f7a1229fc1..a63cb88e85 100644 --- a/db/import-tmpl/skill_db.txt +++ b/db/import-tmpl/skill_db.txt @@ -38,8 +38,8 @@ // 0x01000- disable usage on enemies (for non-offensive skills). // 0x02000- free // 0x04000- chorus skill -// 0x08000- spell that ignore bg reduction -// 0x10000- spell that ignore gvg reduction +// 0x08000- skill that ignore bg 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) // 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 @@ -47,21 +47,23 @@ // 14 attack type (none, weapon, magic, misc) // 15 Blowcount (amount of tiles skill knockbacks) // 16 inf3 (skill information 3): -// 0x0001- skill ignores land protector (e.g. arrow shower) -// 0x0002- spell that doesn't end camouflage -// 0x0004- usable skills while hiding -// 0x0008- spell that can be use while in dancing state -// 0x0010- spell that could hit emperium -// 0x0020- spell blocked by statis -// 0x0040- spell blocked by kagehumi -// 0x0080- spell range affected by AC_VULTURE -// 0x0100- spell range affected by GS_SNAKEEYE -// 0x0200- spell range affected by NJ_SHADOWJUMP -// 0x0400- spell range affected by WL_RADIUS -// 0x0800- spell range affected by RA_RESEARCHTRAP -// 0x1000- spell that can't be copied -// 0x2000- spell that can be using while riding warg -// 0x4000- spell that can't be used while in mado +// 0x00001- skill ignores land protector (e.g. arrow shower) +// 0x00002- skill that doesn't end camouflage +// 0x00004- usable skills while hiding +// 0x00008- skill that can be use while in dancing state +// 0x00010- skill that could hit emperium +// 0x00020- skill blocked by statis +// 0x00040- skill blocked by kagehumi +// 0x00080- skill range affected by AC_VULTURE +// 0x00100- skill range affected by GS_SNAKEEYE +// 0x00200- skill range affected by NJ_SHADOWJUMP +// 0x00400- skill range affected by WL_RADIUS +// 0x00800- skill range affected by RA_RESEARCHTRAP +// 0x01000- skill that does not affect user that has NC_HOVERING active +// 0x02000- skill that can be using while riding warg +// 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 // 18 Description diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index 472ab58bb2..4bdcc6e23e 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -38,8 +38,8 @@ // 0x01000- disable usage on enemies (for non-offensive skills). // 0x02000- available skill for SC_AUTOSHADOWSPELL // 0x04000- chorus skill -// 0x08000- spell that ignore bg reduction -// 0x10000- spell that ignore gvg reduction +// 0x08000- skill that ignore bg 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) // 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 @@ -48,22 +48,22 @@ // 15 Blowcount (amount of tiles skill knockbacks) // 16 inf3 (skill information 3): // 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 -// 0x00008- spell that can be use while in dancing state -// 0x00010- spell that could hit emperium -// 0x00020- spell blocked by statis -// 0x00040- spell blocked by kagehumi -// 0x00080- spell range affected by AC_VULTURE -// 0x00100- spell range affected by GS_SNAKEEYE -// 0x00200- spell range affected by NJ_SHADOWJUMP -// 0x00400- spell range affected by WL_RADIUS -// 0x00800- spell range affected by RA_RESEARCHTRAP -// 0x01000- Spell that does not affect user that has NC_HOVERING active -// 0x02000- spell that can be using while riding warg -// 0x04000- spell that can't be used while in mado -// 0x08000- spell that can be used to target while under Man Hole effect -// 0x10000- spell that having an affect to hiding target +// 0x00008- skill that can be use while in dancing state +// 0x00010- skill that could hit emperium +// 0x00020- skill blocked by statis +// 0x00040- skill blocked by kagehumi +// 0x00080- skill range affected by AC_VULTURE +// 0x00100- skill range affected by GS_SNAKEEYE +// 0x00200- skill range affected by NJ_SHADOWJUMP +// 0x00400- skill range affected by WL_RADIUS +// 0x00800- skill range affected by RA_RESEARCHTRAP +// 0x01000- skill that does not affect user that has NC_HOVERING active +// 0x02000- skill that can be using while riding warg +// 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 // 18 Description 1,0,0,0,0,0,0,9,0,no,0,0,0,none,0,0x0, NV_BASIC,Basic Skill diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index 1f655d62ae..72e77d2adf 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -38,8 +38,8 @@ // 0x01000- disable usage on enemies (for non-offensive skills). // 0x02000- available skill for SC_AUTOSHADOWSPELL // 0x04000- chorus skill -// 0x08000- spell that ignore bg reduction -// 0x10000- spell that ignore gvg reduction +// 0x08000- skill that ignore bg 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) // 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 @@ -48,22 +48,22 @@ // 15 Blowcount (amount of tiles skill knockbacks) // 16 inf3 (skill information 3): // 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 -// 0x00008- spell that can be use while in dancing state -// 0x00010- spell that could hit emperium -// 0x00020- spell blocked by statis -// 0x00040- spell blocked by kagehumi -// 0x00080- spell range affected by AC_VULTURE -// 0x00100- spell range affected by GS_SNAKEEYE -// 0x00200- spell range affected by NJ_SHADOWJUMP -// 0x00400- spell range affected by WL_RADIUS -// 0x00800- spell range affected by RA_RESEARCHTRAP -// 0x01000- Spell that does not affect user that has NC_HOVERING active -// 0x02000- spell that can be using while riding warg -// 0x04000- spell that can't be used while in mado -// 0x08000- spell that can be used to target while under Man Hole effect -// 0x10000- spell that having an affect to hiding target +// 0x00008- skill that can be use while in dancing state +// 0x00010- skill that could hit emperium +// 0x00020- skill blocked by statis +// 0x00040- skill blocked by kagehumi +// 0x00080- skill range affected by AC_VULTURE +// 0x00100- skill range affected by GS_SNAKEEYE +// 0x00200- skill range affected by NJ_SHADOWJUMP +// 0x00400- skill range affected by WL_RADIUS +// 0x00800- skill range affected by RA_RESEARCHTRAP +// 0x01000- skill that does not affect user that has NC_HOVERING active +// 0x02000- skill that can be using while riding warg +// 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 // 18 Description 1,0,0,0,0,0,0,9,0,no,0,0,0,none,0,0x0, NV_BASIC,Basic Skill diff --git a/src/login/account.c b/src/login/account.c index 18d3d04fe9..24204cc297 100644 --- a/src/login/account.c +++ b/src/login/account.c @@ -107,12 +107,12 @@ AccountDB* account_db_sql(void) { static bool account_db_sql_init(AccountDB* self) { AccountDB_SQL* db = (AccountDB_SQL*)self; Sql* sql_handle; - const char* username; - const char* password; - const char* hostname; - uint16 port; - const char* database; - const char* codepage; + const char* username = "ragnarok"; + const char* password = ""; + const char* hostname = "127.0.0.1"; + uint16 port = 3306; + const char* database = "ragnarok"; + const char* codepage = ""; db->accounts = Sql_Malloc(); sql_handle = db->accounts; diff --git a/src/login/ipban.c b/src/login/ipban.c index b4786be97e..866bf97c80 100644 --- a/src/login/ipban.c +++ b/src/login/ipban.c @@ -25,7 +25,7 @@ static char ipban_db_hostname[32] = "127.0.0.1"; static uint16 ipban_db_port = 3306; 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_codepage[32] = ""; 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. */ void ipban_init(void) { - const char* username; - const char* password; - const char* hostname; - uint16 port; - const char* database; - const char* codepage; + const char* username = ipban_db_username; + const char* password = ipban_db_password; + const char* hostname = ipban_db_hostname; + uint16 port = ipban_db_port; + const char* database = ipban_db_database; + const char* codepage = ipban_db_codepage; ipban_inited = true; diff --git a/src/map/clif.c b/src/map/clif.c index 8301211a25..b6d8e7ab76 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -3285,7 +3285,6 @@ void clif_arrowequip(struct map_session_data *sd,int val) nullpo_retv(sd); - pc_stop_attack(sd); // [Valaris] #if PACKETVER >= 20121128 clif_status_change(&sd->bl, SI_CLIENT_ONLY_EQUIP_ARROW, 1, INVALID_TIMER, 0, 0, 0); #endif diff --git a/src/map/mob.c b/src/map/mob.c index 06eaca6738..fd0c726bc8 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -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**); dist = distance_bl(&md->bl, bl); - if(mob_can_reach(md,bl,dist+1, MSS_LOOT) && - ((*target) == NULL || !check_distance_bl(&md->bl, *target, dist)) //New target closer than previous one. - ) { + if (mob_can_reach(md,bl,dist+1, MSS_LOOT) && (*target) == NULL) { (*target) = bl; md->target_id = bl->id; md->min_chase = md->db->range3; diff --git a/src/map/npc.c b/src/map/npc.c index 709ef50b37..40b4037528 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -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)) break; // hidden or dead chars cannot use warps 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; break; } diff --git a/src/map/pc.h b/src/map/pc.h index f9d466ea77..c29f471fdb 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -717,7 +717,7 @@ struct { #endif #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_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 ) diff --git a/src/map/script.c b/src/map/script.c index 5dd38eddba..2932240966 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -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. void pop_stack(struct script_state* st, int start, int end) { @@ -18346,8 +18346,8 @@ BUILDIN_FUNC(sit) return SCRIPT_CMD_FAILURE; if( !pc_issit(sd) ) { - skill_sit(sd, 1); pc_setsit(sd); + skill_sit(sd, 1); clif_sitting(&sd->bl); } return SCRIPT_CMD_SUCCESS; diff --git a/src/map/skill.c b/src/map/skill.c index c5289b98b3..278476a5bf 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3777,8 +3777,8 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) if( target->type == BL_PC ) { struct map_session_data *tsd = NULL; if( (tsd = ((TBL_PC*)target)) && !pc_issit(tsd) ) { - skill_sit(tsd, 1); pc_setsit(tsd); + skill_sit(tsd, 1); 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); } - 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 + if (type) clif_status_load(&sd->bl, SI_SIT, 1); - } else + else clif_status_load(&sd->bl, SI_SIT, 0); if (!flag) return 0; diff --git a/src/map/skill.h b/src/map/skill.h index 8f82f5f6ae..c2c0a285b8 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -27,16 +27,6 @@ struct status_change_entry; 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) /// The NK value applies only to non INF_GROUND_SKILL skills /// when determining skill castend function to invoke. @@ -51,49 +41,58 @@ enum e_skill_nk { 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. /// Constants to identify a skill's inf2 value. enum e_skill_inf2 { - INF2_QUEST_SKILL = 0x00001, - INF2_NPC_SKILL = 0x00002, //NPC skills are those that players can't have in their skill tree. - INF2_WEDDING_SKILL = 0x00004, - INF2_SPIRIT_SKILL = 0x00008, - INF2_GUILD_SKILL = 0x00010, - INF2_SONG_DANCE = 0x00020, - INF2_ENSEMBLE_SKILL = 0x00040, - INF2_TRAP = 0x00080, - INF2_TARGET_SELF = 0x00100, //Refers to ground placed skills that will target the caster as well (like Grandcross) - INF2_NO_TARGET_SELF = 0x00200, - INF2_PARTY_ONLY = 0x00400, - INF2_GUILD_ONLY = 0x00800, - INF2_NO_ENEMY = 0x01000, + INF2_QUEST_SKILL = 0x00001, + INF2_NPC_SKILL = 0x00002, //NPC skills are those that players can't have in their skill tree. + INF2_WEDDING_SKILL = 0x00004, + INF2_SPIRIT_SKILL = 0x00008, + INF2_GUILD_SKILL = 0x00010, + INF2_SONG_DANCE = 0x00020, + INF2_ENSEMBLE_SKILL = 0x00040, + INF2_TRAP = 0x00080, + INF2_TARGET_SELF = 0x00100, //Refers to ground placed skills that will target the caster as well (like Grandcross) + INF2_NO_TARGET_SELF = 0x00200, + INF2_PARTY_ONLY = 0x00400, + INF2_GUILD_ONLY = 0x00800, + INF2_NO_ENEMY = 0x01000, INF2_AUTOSHADOWSPELL = 0x02000, // Skill that available for SC_AUTOSHADOWSPELL - INF2_CHORUS_SKILL = 0x04000, // Chorus skill - INF2_NO_BG_DMG = 0x08000, // spell that ignore bg reduction - INF2_NO_GVG_DMG = 0x10000, // spell that ignore gvg reduction - INF2_NO_NEARNPC = 0x20000, // disable to cast skill if near with NPC [Cydh] + INF2_CHORUS_SKILL = 0x04000, // Chorus skill + INF2_NO_BG_DMG = 0x08000, // Skill that ignore bg reduction + INF2_NO_GVG_DMG = 0x10000, // Skill that ignore gvg reduction + INF2_NO_NEARNPC = 0x20000, // disable to cast skill if near with NPC [Cydh] }; /// Skill info type 3 enum e_skill_inf3 { - INF3_NOLP = 0x00001, // Spells that can ignore Land Protector - INF3_NOENDCAMOUFLAGE = 0x00002, // spell that doesn't end camouflage - INF3_USABLE_HIDING = 0x00004, // spell that can be use in hiding - INF3_USABLE_DANCE = 0x00008, // spell that can be use while in dancing state - INF3_HIT_EMP = 0x00010, // spell that could hit emperium - INF3_STATIS_BL = 0x00020, // spell blocked by statis - INF3_KAGEHUMI_BL = 0x00040, // spell blocked by kagehumi - INF3_EFF_VULTURE = 0x00080, // spell range affected by AC_VULTURE - INF3_EFF_SNAKEEYE = 0x00100, // spell range affected by GS_SNAKEEYE - INF3_EFF_SHADOWJUMP = 0x00200, // spell range affected by NJ_SHADOWJUMP - INF3_EFF_RADIUS = 0x00400, // spell range affected by WL_RADIUS - INF3_EFF_RESEARCHTRAP = 0x00800, // spell range affected by RA_RESEARCHTRAP - INF3_NO_EFF_HOVERING = 0x01000, // Spell that does not affect user that has SC_HOVERING active - INF3_USABLE_WARG = 0x02000, // spell that can be use while riding warg - INF3_DIS_MADO = 0x04000, // spell 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_HIT_HIDING = 0x10000, // spell that having an affect to hiding target - //... add other spell list option here + INF3_NOLP = 0x00001, // Skill that can ignore Land Protector + INF3_NOENDCAMOUFLAGE = 0x00002, // Skill that doesn't end camouflage + INF3_USABLE_HIDING = 0x00004, // Skill that can be use in hiding + INF3_USABLE_DANCE = 0x00008, // Skill that can be use while in dancing state + INF3_HIT_EMP = 0x00010, // Skill that could hit emperium + INF3_STATIS_BL = 0x00020, // Skill blocked by statis + INF3_KAGEHUMI_BL = 0x00040, // Skill blocked by kagehumi + INF3_EFF_VULTURE = 0x00080, // Skill range affected by AC_VULTURE + INF3_EFF_SNAKEEYE = 0x00100, // Skill range affected by GS_SNAKEEYE + INF3_EFF_SHADOWJUMP = 0x00200, // Skill range affected by NJ_SHADOWJUMP + INF3_EFF_RADIUS = 0x00400, // Skill range affected by WL_RADIUS + INF3_EFF_RESEARCHTRAP = 0x00800, // Skill range affected by RA_RESEARCHTRAP + INF3_NO_EFF_HOVERING = 0x01000, // Skill that does not affect user that has SC_HOVERING active + INF3_USABLE_WARG = 0x02000, // Skill that can be use while riding warg + INF3_DIS_MADO = 0x04000, // Skill that can't be used while in mado + INF3_USABLE_MANHOLE = 0x08000, // Skill that can be used to target while under SC__MANHOLE effect + INF3_HIT_HIDING = 0x10000, // Skill that affects hidden targets }; /// Walk intervals at which chase-skills are attempted to be triggered. diff --git a/src/map/status.c b/src/map/status.c index 769790c14c..2543c9784e 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -8731,8 +8731,8 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty case SC_TENSIONRELAX: if (sd) { - skill_sit(sd, 1); pc_setsit(sd); + skill_sit(sd, 1); clif_sitting(&sd->bl); } 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_BANANA_BOMB_SITDOWN: if( sd && !pc_issit(sd) ) { - skill_sit(sd, 1); pc_setsit(sd); + skill_sit(sd, 1); clif_sitting(bl); } break; @@ -12044,8 +12044,8 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) if( --(sce->val4) >= 0 ) { status_charge(bl,0,sce->val2); // Reduce 8 every 10 seconds. if( sd && !pc_issit(sd) ) { // Force to sit every 10 seconds. - skill_sit(sd, 1); pc_setsit(sd); + skill_sit(sd, 1); clif_sitting(bl); } sc_timer_next(10000 + tick, status_change_timer, bl->id, data);