Follow up 4019fb4
- Wrong macro for itemdb_is_element, thx @exneval - Incompatible type issue on UNT_BANDING. bugreport:8616 http://rathena.org/board/tracker/issue-8616-error-while-recompiling/ - Skill usage messages ot conf/msg_conf/map_msg.conf instead following official client fail message by clif_skill_fail() for each failure. (related with skill_require_db.txt) --> "%s is required." (similar: 28 messages) -->"[%s] Poison effect was applied to the weapon." (similar: 8 messages) -->"Please equipped with a %s." (similar: 7 messages) Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
This commit is contained in:
parent
4019fb4531
commit
3fce137cbb
@ -729,7 +729,12 @@
|
||||
718: Personal rate information is not displayed now.
|
||||
719: Personal rate information will be shown.
|
||||
|
||||
//720-899 free
|
||||
//Skill messages
|
||||
720: %s is required.
|
||||
721: [%s] Poison effect was applied to the weapon.
|
||||
722: Please equipped with a %s.
|
||||
|
||||
//723-899 free
|
||||
|
||||
//------------------------------------
|
||||
// More atcommands message
|
||||
|
@ -729,7 +729,12 @@
|
||||
718: Informasi mengenai rate pribadi tidak akan ditampilkan lagi.
|
||||
719: Informasi mengenai rate pribadi akan ditampilkan kembali.
|
||||
|
||||
//720-899 kosong
|
||||
//Pesan skill
|
||||
720: Membutuhkan %s.
|
||||
721: Efek [%s] Poison diberikan ke senjata.
|
||||
722: Butuh memakai %s.
|
||||
|
||||
//723-899 kosong
|
||||
|
||||
//------------------------------------
|
||||
// Pesan dalam perintah atcommand
|
||||
|
@ -18016,7 +18016,10 @@ void packetdb_readdb(void)
|
||||
*
|
||||
*------------------------------------------*/
|
||||
int do_init_clif(void) {
|
||||
const char* colors[COLOR_MAX] = { "0xFF0000" };
|
||||
const char* colors[COLOR_MAX] = {
|
||||
"0xFF0000",
|
||||
"0xFFFFFF",
|
||||
};
|
||||
int i;
|
||||
/**
|
||||
* Setup Color Table (saves unnecessary load of strtoul on every call)
|
||||
|
@ -824,6 +824,7 @@ void clif_monster_hp_bar( struct mob_data* md, int fd );
|
||||
**/
|
||||
enum clif_colors {
|
||||
COLOR_RED,
|
||||
COLOR_WHITE,
|
||||
|
||||
COLOR_MAX
|
||||
};
|
||||
|
@ -428,7 +428,7 @@ struct item_data* itemdb_exists(int nameid);
|
||||
#define itemdb_viewid(n) (itemdb_search(n)->view_id)
|
||||
#define itemdb_autoequip(n) (itemdb_search(n)->flag.autoequip)
|
||||
#define itemdb_is_rune(n) ((n >= ITEMID_NAUTHIZ && n <= ITEMID_HAGALAZ) || n == ITEMID_LUX_ANIMA)
|
||||
#define itemdb_is_element(n) (n >= ITEMID_SCARLET_PTS && n <= ITEMID_SCARLET_PTS)
|
||||
#define itemdb_is_element(n) (n >= ITEMID_SCARLET_PTS && n <= ITEMID_LIME_GREEN_PTS)
|
||||
#define itemdb_is_spellbook(n) (n >= ITEMID_MAGIC_BOOK_FB && n <= ITEMID_MAGIC_BOOK_DL)
|
||||
#define itemdb_is_poison(n) (n >= ITEMID_PARALYSE && n <= ITEMID_VENOMBLEED)
|
||||
#define itemid_isgemstone(id) ( (id) >= ITEMID_YELLOW_GEMSTONE && (id) <= ITEMID_BLUE_GEMSTONE )
|
||||
|
@ -12851,7 +12851,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
|
||||
|
||||
case UNT_BANDING:
|
||||
if( battle_check_target(&src->bl, bl, BCT_ENEMY) > 0 && !(status_get_mode(bl)&MD_BOSS) && !(tsc && tsc->data[SC_BANDING_DEFENCE]) )
|
||||
sc_start(ss, bl, SC_BANDING_DEFENCE, (status_get_lv(src) / 5) + (sg->skill_lv * 5) - (status_get_agi(bl) / 10), 90, skill_get_time2(sg->skill_id, sg->skill_lv));
|
||||
sc_start(ss, bl, SC_BANDING_DEFENCE, (status_get_lv(&src->bl) / 5) + (sg->skill_lv * 5) - (status_get_agi(bl) / 10), 90, skill_get_time2(sg->skill_id, sg->skill_lv));
|
||||
break;
|
||||
|
||||
case UNT_FIRE_MANTLE:
|
||||
@ -14182,18 +14182,36 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
|
||||
if (require.status_count) {
|
||||
uint8 i;
|
||||
/* May has multiple requirements */
|
||||
if (!sc) {
|
||||
clif_skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0);
|
||||
return false;
|
||||
}
|
||||
//if (!sc) {
|
||||
// clif_skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0);
|
||||
// return false;
|
||||
//}
|
||||
for (i = 0; i < require.status_count; i++) {
|
||||
if (require.status[i] >= 0 && !sc->data[require.status[i]]) {
|
||||
if (require.status[i] == SC_PUSH_CART) {
|
||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_CART,0);
|
||||
return false;
|
||||
}
|
||||
clif_skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0);
|
||||
return false;
|
||||
enum sc_type req_sc = require.status[i];
|
||||
if (req_sc == SC_NONE)
|
||||
continue;
|
||||
|
||||
switch (req_sc) {
|
||||
/* Official fail msg */
|
||||
case SC_PUSH_CART:
|
||||
if (!sc || !sc->data[SC_PUSH_CART]) {
|
||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_CART,0);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case SC_POISONINGWEAPON:
|
||||
if (!sc || !sc->data[SC_POISONINGWEAPON]) {
|
||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_GC_POISONINGWEAPON,0);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (!sc || !sc->data[req_sc]) {
|
||||
clif_skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -14205,8 +14223,8 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
|
||||
if(!reqeqit) break; //no more required item get out of here
|
||||
if (!pc_checkequip2(sd,reqeqit,EQI_ACC_L,EQI_MAX)) {
|
||||
char output[128];
|
||||
//clif_skill_fail(sd, skill_id, USESKILL_FAIL_NEED_EQUIPMENT, reqeqit);
|
||||
sprintf(output,"Please equip with a %d.",reqeqit); // Officially, some Mechanic skills failure message displays this rather than just "Skill has failed."
|
||||
//Official use msgstringtable.txt for each skill failure
|
||||
sprintf(output,msg_txt(sd,722),itemdb_jname(reqeqit));
|
||||
clif_colormes(sd,color_table[COLOR_RED],output);
|
||||
return false;
|
||||
}
|
||||
@ -14401,16 +14419,18 @@ bool skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
|
||||
continue;
|
||||
index[i] = pc_search_inventory(sd,require.itemid[i]);
|
||||
if( index[i] < 0 || sd->status.inventory[index[i]].amount < require.amount[i] ) {
|
||||
if( require.itemid[i] == ITEMID_RED_GEMSTONE )
|
||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_REDJAMSTONE,0);// red gemstone required
|
||||
else if( require.itemid[i] == ITEMID_BLUE_GEMSTONE )
|
||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_BLUEJAMSTONE,0);// blue gemstone required
|
||||
else {
|
||||
// char output[128]; //not offi but more explicit msg
|
||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
|
||||
// sprintf(output, "You need itemid=%d, amount=%d", require.itemid[i], require.amount[i]);
|
||||
// clif_colormes(sd,color_table[COLOR_RED],output);
|
||||
}
|
||||
//if( require.itemid[i] == ITEMID_RED_GEMSTONE )
|
||||
// clif_skill_fail(sd,skill_id,USESKILL_FAIL_REDJAMSTONE,0);// red gemstone required
|
||||
//else if( require.itemid[i] == ITEMID_BLUE_GEMSTONE )
|
||||
// clif_skill_fail(sd,skill_id,USESKILL_FAIL_BLUEJAMSTONE,0);// blue gemstone required
|
||||
//else {
|
||||
//Official is using msgstringtable.txt for each requirement failure
|
||||
char output[CHAT_SIZE_MAX];
|
||||
//clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
|
||||
//sprintf(output, "You need itemid=%d, amount=%d", require.itemid[i], require.amount[i]);
|
||||
sprintf(output, msg_txt(sd,720), itemdb_jname(require.itemid[i])); // %s is required.
|
||||
clif_colormes(sd,color_table[COLOR_RED],output);
|
||||
//}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -17805,29 +17825,41 @@ int skill_arrow_create (struct map_session_data *sd, int nameid)
|
||||
int skill_poisoningweapon( struct map_session_data *sd, int nameid) {
|
||||
sc_type type;
|
||||
int chance, i;
|
||||
//uint16 msg = 1443; //Official is using msgstringtable.txt
|
||||
char output[CHAT_SIZE_MAX];
|
||||
const char *msg;
|
||||
|
||||
nullpo_ret(sd);
|
||||
|
||||
if( nameid <= 0 || (i = pc_search_inventory(sd,nameid)) < 0 || pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME) ) {
|
||||
clif_skill_fail(sd,GC_POISONINGWEAPON,USESKILL_FAIL_LEVEL,0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch( nameid ) { // t_lv used to take duration from skill_get_time2
|
||||
case ITEMID_PARALYSE: type = SC_PARALYSE; break;
|
||||
case ITEMID_PYREXIA: type = SC_PYREXIA; break;
|
||||
case ITEMID_DEATHHURT: type = SC_DEATHHURT; break;
|
||||
case ITEMID_LEECHESEND: type = SC_LEECHESEND; break;
|
||||
case ITEMID_VENOMBLEED: type = SC_VENOMBLEED; break;
|
||||
case ITEMID_TOXIN: type = SC_TOXIN; break;
|
||||
case ITEMID_MAGICMUSHROOM: type = SC_MAGICMUSHROOM; break;
|
||||
case ITEMID_OBLIVIONCURSE: type = SC_OBLIVIONCURSE; break;
|
||||
case ITEMID_PARALYSE: type = SC_PARALYSE; /*msg = 1444;*/ msg = "Paralyze"; break;
|
||||
case ITEMID_PYREXIA: type = SC_PYREXIA; /*msg = 1448;*/ msg = "Pyrexia"; break;
|
||||
case ITEMID_DEATHHURT: type = SC_DEATHHURT; /*msg = 1447;*/ msg = "Deathhurt"; break;
|
||||
case ITEMID_LEECHESEND: type = SC_LEECHESEND; /*msg = 1450;*/ msg = "Leech End"; break;
|
||||
case ITEMID_VENOMBLEED: type = SC_VENOMBLEED; /*msg = 1445;*/ msg = "Venom Bleed"; break;
|
||||
case ITEMID_TOXIN: type = SC_TOXIN; /*msg = 1443;*/ msg = "Toxin"; break;
|
||||
case ITEMID_MAGICMUSHROOM: type = SC_MAGICMUSHROOM; /*msg = 1446;*/ msg = "Magic Mushroom"; break;
|
||||
case ITEMID_OBLIVIONCURSE: type = SC_OBLIVIONCURSE; /*msg = 1449;*/ msg = "Oblivion Curse"; break;
|
||||
default:
|
||||
clif_skill_fail(sd,GC_POISONINGWEAPON,USESKILL_FAIL_LEVEL,0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
chance = 2 + 2 * sd->menuskill_val; // 2 + 2 * skill_lv
|
||||
sc_start4(&sd->bl,&sd->bl, SC_POISONINGWEAPON, 100, pc_checkskill(sd, GC_RESEARCHNEWPOISON), //in Aegis it store the level of GC_RESEARCHNEWPOISON in val1
|
||||
type, chance, 0, skill_get_time(GC_POISONINGWEAPON, sd->menuskill_val));
|
||||
|
||||
sprintf(output, msg_txt(sd,721), msg);
|
||||
clif_colormes(sd,color_table[COLOR_WHITE],output);
|
||||
|
||||
/*#if PACKETVER >= 20110208 //! TODO: Check the correct PACKVETVER
|
||||
clif_msg(sd,msg);
|
||||
#endif*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user