diff options
-rw-r--r-- | conf/messages.conf | 3 | ||||
-rw-r--r-- | db/pre-re/item_db.conf | 152 | ||||
-rw-r--r-- | db/re/item_db.conf | 131 | ||||
-rw-r--r-- | src/map/clif.h | 1 | ||||
-rw-r--r-- | src/map/itemdb.h | 50 | ||||
-rw-r--r-- | src/map/pc.c | 42 |
6 files changed, 242 insertions, 137 deletions
diff --git a/conf/messages.conf b/conf/messages.conf index efc8d8a36..3cebc4173 100644 --- a/conf/messages.conf +++ b/conf/messages.conf @@ -51,7 +51,8 @@ 23: Job level can't go any higher. 24: Job level raised. 25: Job level lowered. -//26-27 FREE +26: [%d] seconds left until you can use +//27 FREE 28: No player found. 29: 1 player found. 30: %d players found. diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf index a681d5753..cfa7cb7d1 100644 --- a/db/pre-re/item_db.conf +++ b/db/pre-re/item_db.conf @@ -1197,6 +1197,9 @@ item_db: ( Buy: 2000 Weight: 100 BuyingStore: true + Nouse: { + sitting: true + } Script: <" itemskill SM_ENDURE,1; "> }, { @@ -1207,6 +1210,9 @@ item_db: ( Buy: 1500 Weight: 100 BuyingStore: true + Nouse: { + sitting: true + } Script: <" itemskill SM_SELFPROVOKE,1; "> }, { @@ -74741,11 +74747,15 @@ item_db: ( Name: "Paralyze" Type: 0 Buy: 2 - Weight: 100 + Weight: 20 + Job: { + Assassin: true + } + Upper: 8 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_PARALYSE,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_PARALYSE, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -74754,11 +74764,15 @@ item_db: ( Name: "Leech End" Type: 0 Buy: 2 - Weight: 100 + Weight: 20 + Job: { + Assassin: true + } + Upper: 8 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_LEECHESEND,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_LEECHESEND, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -74767,11 +74781,15 @@ item_db: ( Name: "Oblivion Curse" Type: 0 Buy: 2 - Weight: 100 + Weight: 20 + Job: { + Assassin: true + } + Upper: 8 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_OBLIVIONCURSE,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_OBLIVIONCURSE, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -74780,11 +74798,15 @@ item_db: ( Name: "Disheart" Type: 0 Buy: 2 - Weight: 100 + Weight: 20 + Job: { + Assassin: true + } + Upper: 8 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_DEATHHURT,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_DEATHHURT, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -74793,11 +74815,15 @@ item_db: ( Name: "Toxin" Type: 0 Buy: 2 - Weight: 100 + Weight: 20 + Job: { + Assassin: true + } + Upper: 8 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_TOXIN,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_TOXIN, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -74806,11 +74832,15 @@ item_db: ( Name: "Pyrexia" Type: 0 Buy: 2 - Weight: 100 + Weight: 20 + Job: { + Assassin: true + } + Upper: 8 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_PYREXIA,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_PYREXIA, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -74819,11 +74849,16 @@ item_db: ( Name: "Magic Mushroom" Type: 0 Buy: 2 - Weight: 100 + Weight: 20 + BuyingStore: true + Job: { + Assassin: true + } + Upper: 8 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_MAGICMUSHROOM,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_MAGICMUSHROOM, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -74832,11 +74867,15 @@ item_db: ( Name: "Venom Bleed" Type: 0 Buy: 2 - Weight: 100 + Weight: 20 + Job: { + Assassin: true + } + Upper: 8 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_VENOMBLEED,15000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_VENOMBLEED, 15000, 0, 10, SCFLAG_FIXEDTICK; "> }, @@ -74848,6 +74887,9 @@ item_db: ( Type: 11 Buy: 100 Weight: 100 + Job: { + Knight: true + } Upper: 8 Delay: 120000 Trade: { @@ -74863,7 +74905,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_REFRESH,1; "> + Script: <" itemskill RK_REFRESH, 1; "> }, { Id: 12726 @@ -74872,6 +74914,9 @@ item_db: ( Type: 11 Buy: 100 Weight: 100 + Job: { + Knight: true + } Upper: 8 Delay: 30000 Trade: { @@ -74887,7 +74932,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_CRUSHSTRIKE,1; "> + Script: <" itemskill RK_CRUSHSTRIKE, 1; "> }, { Id: 12727 @@ -74896,6 +74941,9 @@ item_db: ( Type: 11 Buy: 100 Weight: 100 + Job: { + Knight: true + } Upper: 8 Delay: 60000 Trade: { @@ -74911,7 +74959,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_MILLENNIUMSHIELD,1; "> + Script: <" itemskill RK_MILLENNIUMSHIELD, 1; "> }, { Id: 12728 @@ -74920,6 +74968,9 @@ item_db: ( Type: 11 Buy: 100 Weight: 100 + Job: { + Knight: true + } Upper: 8 Trade: { nodrop: true @@ -74934,7 +74985,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_VITALITYACTIVATION,1; "> + Script: <" itemskill RK_VITALITYACTIVATION, 1; "> }, { Id: 12729 @@ -74943,6 +74994,9 @@ item_db: ( Type: 11 Buy: 100 Weight: 100 + Job: { + Knight: true + } Upper: 8 Trade: { nodrop: true @@ -74957,7 +75011,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_FIGHTINGSPIRIT,1; "> + Script: <" itemskill RK_FIGHTINGSPIRIT, 1; "> }, { Id: 12730 @@ -74966,6 +75020,9 @@ item_db: ( Type: 11 Buy: 100 Weight: 100 + Job: { + Knight: true + } Upper: 8 Trade: { nodrop: true @@ -74980,7 +75037,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_ABUNDANCE,1; "> + Script: <" itemskill RK_ABUNDANCE, 1; "> }, { Id: 12731 @@ -74989,6 +75046,9 @@ item_db: ( Type: 11 Buy: 100 Weight: 100 + Job: { + Knight: true + } Upper: 8 Trade: { nodrop: true @@ -75003,7 +75063,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_GIANTGROWTH,1; "> + Script: <" itemskill RK_GIANTGROWTH, 1; "> }, { Id: 12732 @@ -75012,6 +75072,9 @@ item_db: ( Type: 11 Buy: 100 Weight: 100 + Job: { + Knight: true + } Upper: 8 Delay: 1000 Trade: { @@ -75027,7 +75090,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_STORMBLAST,1; "> + Script: <" itemskill RK_STORMBLAST, 1; "> }, { Id: 12733 @@ -75036,6 +75099,9 @@ item_db: ( Type: 11 Buy: 100 Weight: 100 + Job: { + Knight: true + } Upper: 8 Trade: { nodrop: true @@ -75050,9 +75116,10 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_STONEHARDSKIN,1; "> + Script: <" itemskill RK_STONEHARDSKIN, 1; "> }, -// Rune Knight Rune Ores + +//== Rune Knight Rune Ores ============================= { Id: 12734 AegisName: "Runstone_Quality" @@ -75060,10 +75127,6 @@ item_db: ( Type: 0 Buy: 2 Weight: 100 - Job: { - Knight: true - } - Upper: 8 BuyingStore: true Script: <" makerune 5; "> }, @@ -75074,10 +75137,6 @@ item_db: ( Type: 0 Buy: 2 Weight: 100 - Job: { - Knight: true - } - Upper: 8 BuyingStore: true Script: <" makerune 11; "> }, @@ -75088,10 +75147,6 @@ item_db: ( Type: 0 Buy: 2 Weight: 100 - Job: { - Knight: true - } - Upper: 8 BuyingStore: true Script: <" makerune 14; "> }, @@ -75102,10 +75157,6 @@ item_db: ( Type: 0 Buy: 2 Weight: 100 - Job: { - Knight: true - } - Upper: 8 BuyingStore: true Script: <" makerune 2; "> }, @@ -75116,10 +75167,6 @@ item_db: ( Type: 0 Buy: 2 Weight: 100 - Job: { - Knight: true - } - Upper: 8 BuyingStore: true Script: <" makerune 8; "> }, @@ -96076,7 +96123,20 @@ item_db: ( Type: 11 Buy: 2 Weight: 100 + Job: { + Knight: true + } + Upper: 8 Delay: 60000 + Trade: { + nodrop: true + notrade: true + noselltonpc: true + nocart: true + nogstorage: true + nomail: true + noauction: true + } Stack: [20, 1] Script: <" itemskill RK_LUXANIMA,1; "> }, diff --git a/db/re/item_db.conf b/db/re/item_db.conf index ca826e58d..d1f416b08 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -1218,6 +1218,9 @@ item_db: ( Buy: 2000 Weight: 100 BuyingStore: true + Nouse: { + sitting: true + } Script: <" itemskill SM_ENDURE,1; "> }, { @@ -1228,6 +1231,9 @@ item_db: ( Buy: 1500 Weight: 100 BuyingStore: true + Nouse: { + sitting: true + } Script: <" itemskill SM_SELFPROVOKE,1; "> }, { @@ -94153,10 +94159,14 @@ item_db: ( Type: 0 Buy: 2 Weight: 20 + Job: { + Assassin: true + } + Upper: 56 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_PARALYSE,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_PARALYSE, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -94166,10 +94176,14 @@ item_db: ( Type: 0 Buy: 2 Weight: 20 + Job: { + Assassin: true + } + Upper: 56 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_LEECHESEND,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_LEECHESEND, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -94179,10 +94193,14 @@ item_db: ( Type: 0 Buy: 2 Weight: 20 + Job: { + Assassin: true + } + Upper: 56 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_OBLIVIONCURSE,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_OBLIVIONCURSE, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -94192,10 +94210,14 @@ item_db: ( Type: 0 Buy: 2 Weight: 20 + Job: { + Assassin: true + } + Upper: 56 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_DEATHHURT,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_DEATHHURT, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -94205,10 +94227,14 @@ item_db: ( Type: 0 Buy: 2 Weight: 20 + Job: { + Assassin: true + } + Upper: 56 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_TOXIN,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_TOXIN, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -94218,10 +94244,14 @@ item_db: ( Type: 0 Buy: 2 Weight: 20 + Job: { + Assassin: true + } + Upper: 56 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_PYREXIA,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_PYREXIA, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -94231,10 +94261,14 @@ item_db: ( Type: 0 Buy: 2 Weight: 20 + Job: { + Assassin: true + } + Upper: 56 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_MAGICMUSHROOM,300000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_MAGICMUSHROOM, 300000, 0, 10, SCFLAG_FIXEDTICK; "> }, { @@ -94244,10 +94278,14 @@ item_db: ( Type: 0 Buy: 2 Weight: 20 + Job: { + Assassin: true + } + Upper: 56 BuyingStore: true Script: <" specialeffect2 EF_ENCHANTPOISON; - sc_start SC_VENOMBLEED,15000,0,10,SCFLAG_FIXEDTICK; + sc_start SC_VENOMBLEED, 15000, 0, 10, SCFLAG_FIXEDTICK; "> }, @@ -94259,6 +94297,10 @@ item_db: ( Type: 11 Buy: 2 Weight: 100 + Job: { + Knight: true + } + Upper: 56 Delay: 120000 Trade: { nodrop: true @@ -94273,7 +94315,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_REFRESH,1; "> + Script: <" itemskill RK_REFRESH, 1; "> }, { Id: 12726 @@ -94282,6 +94324,10 @@ item_db: ( Type: 11 Buy: 2 Weight: 100 + Job: { + Knight: true + } + Upper: 56 Delay: 30000 Trade: { nodrop: true @@ -94296,7 +94342,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_CRUSHSTRIKE,1; "> + Script: <" itemskill RK_CRUSHSTRIKE, 1; "> }, { Id: 12727 @@ -94305,6 +94351,10 @@ item_db: ( Type: 11 Buy: 2 Weight: 100 + Job: { + Knight: true + } + Upper: 56 Delay: 60000 Trade: { nodrop: true @@ -94319,7 +94369,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_MILLENNIUMSHIELD,1; "> + Script: <" itemskill RK_MILLENNIUMSHIELD, 1; "> }, { Id: 12728 @@ -94328,6 +94378,10 @@ item_db: ( Type: 11 Buy: 2 Weight: 100 + Job: { + Knight: true + } + Upper: 56 Trade: { nodrop: true notrade: true @@ -94341,7 +94395,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_VITALITYACTIVATION,1; "> + Script: <" itemskill RK_VITALITYACTIVATION, 1; "> }, { Id: 12729 @@ -94350,6 +94404,10 @@ item_db: ( Type: 11 Buy: 2 Weight: 100 + Job: { + Knight: true + } + Upper: 56 Trade: { nodrop: true notrade: true @@ -94363,7 +94421,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_FIGHTINGSPIRIT,1; "> + Script: <" itemskill RK_FIGHTINGSPIRIT, 1; "> }, { Id: 12730 @@ -94372,6 +94430,10 @@ item_db: ( Type: 11 Buy: 2 Weight: 100 + Job: { + Knight: true + } + Upper: 56 Trade: { nodrop: true notrade: true @@ -94385,7 +94447,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_ABUNDANCE,1; "> + Script: <" itemskill RK_ABUNDANCE, 1; "> }, { Id: 12731 @@ -94394,6 +94456,10 @@ item_db: ( Type: 11 Buy: 2 Weight: 100 + Job: { + Knight: true + } + Upper: 56 Trade: { nodrop: true notrade: true @@ -94407,7 +94473,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_GIANTGROWTH,1; "> + Script: <" itemskill RK_GIANTGROWTH, 1; "> }, { Id: 12732 @@ -94416,6 +94482,10 @@ item_db: ( Type: 11 Buy: 2 Weight: 100 + Job: { + Knight: true + } + Upper: 56 Delay: 1000 Trade: { nodrop: true @@ -94430,7 +94500,7 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_STORMBLAST,1; "> + Script: <" itemskill RK_STORMBLAST, 1; "> }, { Id: 12733 @@ -94439,6 +94509,10 @@ item_db: ( Type: 11 Buy: 2 Weight: 100 + Job: { + Knight: true + } + Upper: 56 Trade: { nodrop: true notrade: true @@ -94452,8 +94526,10 @@ item_db: ( sitting: true } Stack: [20, 1] - Script: <" itemskill RK_STONEHARDSKIN,1; "> + Script: <" itemskill RK_STONEHARDSKIN, 1; "> }, + +//== Rune Knight Rune Ores ============================= { Id: 12734 AegisName: "Runstone_Quality" @@ -94461,9 +94537,6 @@ item_db: ( Type: 0 Buy: 2 Weight: 100 - Job: { - Knight: true - } BuyingStore: true Script: <" makerune 5; "> }, @@ -94474,9 +94547,6 @@ item_db: ( Type: 0 Buy: 2 Weight: 100 - Job: { - Knight: true - } BuyingStore: true Script: <" makerune 11; "> }, @@ -94487,9 +94557,6 @@ item_db: ( Type: 0 Buy: 2 Weight: 100 - Job: { - Knight: true - } BuyingStore: true Script: <" makerune 14; "> }, @@ -94500,9 +94567,6 @@ item_db: ( Type: 0 Buy: 2 Weight: 100 - Job: { - Knight: true - } BuyingStore: true Script: <" makerune 2; "> }, @@ -94513,9 +94577,6 @@ item_db: ( Type: 0 Buy: 2 Weight: 100 - Job: { - Knight: true - } BuyingStore: true Script: <" makerune 8; "> }, @@ -146815,6 +146876,10 @@ item_db: ( Type: 11 Buy: 2 Weight: 100 + Job: { + Knight: true + } + Upper: 56 Delay: 60000 Trade: { nodrop: true @@ -146826,7 +146891,7 @@ item_db: ( noauction: true } Stack: [20, 1] - Script: <" itemskill RK_LUXANIMA,1; "> + Script: <" itemskill RK_LUXANIMA, 1; "> }, { Id: 22669 diff --git a/src/map/clif.h b/src/map/clif.h index e16655c1a..6b5fb8dca 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -69,6 +69,7 @@ struct view_data; #define COLOR_RED 0xff0000U #define COLOR_GREEN 0x00ff00U #define COLOR_WHITE 0xffffffU +#define COLOR_YELLOW 0xffff00U #define COLOR_DEFAULT COLOR_GREEN /** diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 618111d2a..138a783ae 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -147,6 +147,23 @@ enum item_itemid { ITEMID_BLACK_THING = 12435, ITEMID_BOARDING_HALTER = 12622, ITEMID_NOBLE_NAMEPLATE = 12705, + ITEMID_POISON_PARALYSIS = 12717, + ITEMID_POISON_LEECH = 12718, + ITEMID_POISON_OBLIVION = 12719, + ITEMID_POISON_CONTAMINATION = 12720, + ITEMID_POISON_NUMB = 12721, + ITEMID_POISON_FEVER = 12722, + ITEMID_POISON_LAUGHING = 12723, + ITEMID_POISON_FATIGUE = 12724, + ITEMID_NAUTHIZ = 12725, + ITEMID_RAIDO = 12726, + ITEMID_BERKANA = 12727, + ITEMID_ISA = 12728, + ITEMID_OTHILA = 12729, + ITEMID_URUZ = 12730, + ITEMID_THURISAZ = 12731, + ITEMID_WYRD = 12732, + ITEMID_HAGALAZ = 12733, ITEMID_DUN_TELE_SCROLL1 = 14527, ITEMID_BATTLE_MANUAL25 = 14532, ITEMID_BATTLE_MANUAL100 = 14533, @@ -161,6 +178,7 @@ enum item_itemid { ITEMID_PILEBUNCKER_S = 16030, ITEMID_PILEBUNCKER_P = 16031, ITEMID_PILEBUNCKER_T = 16032, + ITEMID_LUX_ANIMA = 22540, }; enum cards_item_list { @@ -262,37 +280,6 @@ enum cash_food_item_list { }; /** - * GC Poison - */ -enum poison_item_list { - ITEMID_POISON_PARALYSIS = 12717, - ITEMID_POISON_LEECH, // 12718 - ITEMID_POISON_OBLIVION, // 12719 - ITEMID_POISON_CONTAMINATION, // 12720 - ITEMID_POISON_NUMB, // 12721 - ITEMID_POISON_FEVER, // 12722 - ITEMID_POISON_LAUGHING, // 12723 - ITEMID_POISON_FATIGUE, // 12724 -}; - - -/** - * Rune Knight - **/ -enum rune_item_list { - ITEMID_NAUTHIZ = 12725, - ITEMID_RAIDO, // 12726 - ITEMID_BERKANA, // 12727 - ITEMID_ISA, // 12728 - ITEMID_OTHILA, // 12729 - ITEMID_URUZ, // 12730 - ITEMID_THURISAZ, // 12731 - ITEMID_WYRD, // 12732 - ITEMID_HAGALAZ, // 12733 - ITEMID_LUX_ANIMA = 22540, -}; - -/** * Geneticist */ enum geneticist_item_list { @@ -566,7 +553,6 @@ struct item_data { #define itemdb_canrefine(n) (!itemdb->search(n)->flag.no_refine) #define itemdb_allowoption(n) (!itemdb->search(n)->flag.no_options) -#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_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_POISON_PARALYSIS && (n) <= ITEMID_POISON_FATIGUE) diff --git a/src/map/pc.c b/src/map/pc.c index e9855c16d..b4985dd5f 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4840,11 +4840,7 @@ int pc_isUseitem(struct map_session_data *sd,int n) switch( nameid ) { // TODO: Is there no better way to handle this, other than hardcoding item IDs? case ITEMID_ANODYNE: - if( map_flag_gvg2(sd->bl.m) ) - return 0; - /* Fall through */ - case ITEMID_ALOEBERA: - if( pc_issit(sd) ) + if (map_flag_gvg2(sd->bl.m)) return 0; break; case ITEMID_WING_OF_FLY: @@ -4921,17 +4917,6 @@ int pc_isUseitem(struct map_session_data *sd,int n) if( nameid >= ITEMID_BOW_MERCENARY_SCROLL1 && nameid <= ITEMID_SPEARMERCENARY_SCROLL10 && sd->md != NULL ) // Mercenary Scrolls return 0; - /** - * Only Rune Knights may use runes - **/ - if (itemdb_is_rune(nameid) && (sd->job & MAPID_THIRDMASK) != MAPID_RUNE_KNIGHT) - return 0; - /** - * Only GCross may use poisons - **/ - else if (itemdb_is_poison(nameid) && (sd->job & MAPID_THIRDMASK) != MAPID_GUILLOTINE_CROSS) - return 0; - if( item->package || item->group ) { if (pc_is90overweight(sd)) { clif->msgtable(sd, MSG_ITEM_CANT_OBTAIN_WEIGHT); @@ -5078,15 +5063,22 @@ int pc_useitem(struct map_session_data *sd,int n) { if( sd->inventory_data[n]->flag.delay_consume && ( sd->ud.skilltimer != INVALID_TIMER /*|| !status->check_skilluse(&sd->bl, &sd->bl, ALL_RESURRECTION, 0)*/ ) ) return 0; - if( sd->inventory_data[n]->delay > 0 ) { - ARR_FIND(0, MAX_ITEMDELAYS, i, sd->item_delay[i].nameid == nameid ); - if( i == MAX_ITEMDELAYS ) /* item not found. try first empty now */ - ARR_FIND(0, MAX_ITEMDELAYS, i, !sd->item_delay[i].nameid ); - if( i < MAX_ITEMDELAYS ) { - if( sd->item_delay[i].nameid ) {// found - if( DIFF_TICK(sd->item_delay[i].tick, tick) > 0 ) { - int e_tick = (int)(DIFF_TICK(sd->item_delay[i].tick, tick)/1000); - clif->msgtable_num(sd, MSG_SECONDS_UNTIL_USE, e_tick + 1); // [%d] seconds left until you can use + if (sd->inventory_data[n]->delay > 0) { + ARR_FIND(0, MAX_ITEMDELAYS, i, sd->item_delay[i].nameid == nameid); + if (i == MAX_ITEMDELAYS) /* item not found. try first empty now */ + ARR_FIND(0, MAX_ITEMDELAYS, i, sd->item_delay[i].nameid == 0); + if (i < MAX_ITEMDELAYS) { + if (sd->item_delay[i].nameid != 0) {// found + if (DIFF_TICK(sd->item_delay[i].tick, tick) > 0) { + int delay_tick = (int)(DIFF_TICK(sd->item_delay[i].tick, tick) / 1000); +#if PACKETVER >= 20101123 + clif->msgtable_num(sd, MSG_SECONDS_UNTIL_USE, delay_tick + 1); // [%d] seconds left until you can use +#else + char delay_msg[100]; + clif->msgtable_num(sd, MSG_SECONDS_UNTIL_USE, delay_tick + 1); // [%d] seconds left until you can use + sprintf(delay_msg, msg_sd(sd, 26), delay_tick + 1); + clif->messagecolor_self(sd->fd, COLOR_YELLOW, delay_msg); +#endif return 0; // Delay has not expired yet } } else {// not yet used item (all slots are initially empty) |