From 6e72489049bffc5900ce0a81ed30caec75b65b21 Mon Sep 17 00:00:00 2001 From: euphyy Date: Wed, 27 Feb 2013 01:49:09 +0000 Subject: [PATCH] * Part two of fixing bugreport:6527. Players can now change equipment when talking with NPCs by default. This behavior can be switched off in conf/battle/items.conf. (Hercules ad792f4) * Minor update to Renewal item database. * Follow-up r17158, added a missing label in Octopus Cave instance (bugreport:7303). > Hercules merges: * b9c79ce: Fixed NJ_SUITON not working properly with Kagerou/Oboro. * dbf69e8: Updated quest_db with more Port Malaya entries. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17163 54d463be-8e91-2dee-dedb-b68131a5f0ec --- conf/battle/items.conf | 4 +++ db/quest_db.txt | 49 ++++++++++++++++++++++++++++++++ db/re/item_db.txt | 30 ++++++++++--------- doc/script_commands.txt | 14 ++++----- npc/custom/quests/quest_shop.txt | 3 +- npc/re/instances/OctopusCave.txt | 2 ++ sql-files/item_db_re.sql | 30 ++++++++++--------- src/map/battle.c | 1 + src/map/battle.h | 1 + src/map/clif.c | 7 +++-- src/map/pc.c | 3 +- src/map/script.c | 6 ++-- src/map/script.h | 1 + src/map/status.c | 2 +- 14 files changed, 109 insertions(+), 44 deletions(-) diff --git a/conf/battle/items.conf b/conf/battle/items.conf index c3c117b1e7..4426f75a5c 100644 --- a/conf/battle/items.conf +++ b/conf/battle/items.conf @@ -78,3 +78,7 @@ autospell_stacking: no // Will disabled consumables (disabled by item_noequip.txt) be consumed when trying to use them? (Note 1) item_restricted_consumption_type: yes + +// Allow changing of equipment while interacting with NPCs? (Note 1) +// Default: yes +item_enabled_npc: yes diff --git a/db/quest_db.txt b/db/quest_db.txt index c0aea950fc..1144599d95 100644 --- a/db/quest_db.txt +++ b/db/quest_db.txt @@ -890,9 +890,58 @@ 7356,0,0,0,0,0,0,0,"Little Kid Wants a Button" 7357,0,0,0,0,0,0,0,"Middle-aged Guy Wants a Button" 7358,0,0,0,0,0,0,0,"Why do they want my Buttons?" +7359,0,0,0,0,0,0,0,"Deliver Holy Item to Sailor" 7360,0,0,0,0,0,0,0,"Deliver Holy Item to Old Man" +7361,0,0,0,0,0,0,0,"Deliver Holy Item to Young Man" +7362,0,0,0,0,0,0,0,"Deliver Holy Item to Merchant" 7363,0,0,0,0,0,0,0,"Deliver Holy Item to Little Kid" 7364,0,0,0,0,0,0,0,"Deliver Holy Item to Middle-aged Man" +7365,0,0,0,0,0,0,0,"Better than My Old Button-2" +7366,0,0,0,0,0,0,0,"Traditional Spiritual Protection and Impudent Girl-1" +7367,0,0,0,0,0,0,0,"Traditional Spiritual Protection and Impudent Girl-2" +7368,0,0,0,0,0,0,0,"Deliver Spiritual Protection-Pedro" +7369,0,0,0,0,0,0,0,"Deliver Spiritual Protection-Nardo" +7370,0,0,0,0,0,0,0,"Deliver Spiritual Protection-Pandoi" +7371,0,0,0,0,0,0,0,"Deliver Spiritual Protection-Woeon" +7372,0,0,0,0,0,0,0,"Deliver Spiritual Protection-Talah" +7373,0,0,0,0,0,0,0,"Deliver Spiritual Protection-Romel" +7374,0,0,0,0,0,0,0,"Love and Spiritual Protection for All" +7375,0,0,0,0,0,0,0,"Love and Spiritual Protection Continues" +7376,0,0,0,0,0,0,0,"Old Man and Cast-Iron Caldron-1" +7377,0,0,0,0,0,0,0,"Old Man and Cast-Iron Caldron-2" +7378,0,0,0,0,0,0,0,"Old Man and Cast-Iron Caldron-Regular Trades" +7379,0,0,0,0,0,0,0,"Peace Preacher" +7380,0,0,0,0,0,0,0,"To Smith a Traditional Spiritual Protection" +7381,0,0,0,0,0,0,0,"High Demand on Spiritual Protection Material" +7382,0,0,0,0,0,0,0,"Deliver to Pedro" +7383,0,0,0,0,0,0,0,"Deliver to Nardo" +7384,0,0,0,0,0,0,0,"Deliver to Pandoi" +7385,0,0,0,0,0,0,0,"Deliver to Woeon" +7386,0,0,0,0,0,0,0,"Deliver to Talah" +7387,0,0,0,0,0,0,0,"Deliver to Romel" +7388,0,0,0,0,0,0,0,"Maries's Child" +7389,0,0,0,0,0,0,0,"Give the Shirt to Maries's Child" +7390,0,0,0,0,0,0,0,"Worried about Maries's Child" +7391,0,0,0,0,0,0,0,"Jejeling and Jejellopy" +7392,0,0,0,0,0,0,0,"Collect Jejellopy Regularly" +7393,0,0,0,0,0,0,0,"Shiny Silver Blade" +7394,0,0,0,0,0,0,0,"Shiny Tomorrow" +7395,0,0,0,0,0,0,0,"Ghost on the Perry Ship" +7396,0,0,0,0,0,0,0,"Angry Soul on Perry Ship" +7397,0,0,0,0,0,0,0,"Mumbaki Phong's Advice" +7398,0,0,0,0,0,0,0,"Offering Bouquet Recommended by Mumbaki" +7399,0,0,0,0,0,0,0,"Soul Diwata's Story" +7400,0,0,0,0,0,0,0,"Mumbaki of Port Malaya" +7401,0,0,0,0,0,0,0,"All Aboard for Perry Sailing" +7402,0,0,0,0,0,0,0,"Bouquet for Diwata" +7403,0,0,0,0,0,0,0,"Stabilized Perry" +7404,0,0,0,0,0,0,0,"Get Rid of Jejeling" +7405,0,0,0,0,0,0,0,"Get Rid of Jejeling - Same Time Tomorrow" +7406,0,0,0,0,0,0,0,"Agree to Collecting Bones!" +7407,0,0,0,0,0,0,0,"Purified Bone" +7408,0,0,0,0,0,0,0,"Agree to Come Back Tomorrow?" +7409,0,0,0,0,0,0,0,"Cannot Meet Eyes with Him!" +7410,0,0,0,0,0,0,0,"Teach Another Lesson Tomorrow!" 8000,0,0,0,0,0,0,0,"Quitting Job Change" 8001,0,0,0,0,0,0,0,"Job Change to Assassin" diff --git a/db/re/item_db.txt b/db/re/item_db.txt index ca2c7bba82..b428de85ac 100644 --- a/db/re/item_db.txt +++ b/db/re/item_db.txt @@ -3881,11 +3881,11 @@ 6415,Strange_Embryo,Strange Embryo,3,0,,0,,,,,,,,,,,,,{},{},{} 6416,Pet_Exchange,Pet Exchange,3,0,,0,,,,,,,,,,,,,{},{},{} 6417,Garderie_Fruit,Garderie Fruit,3,20,,0,,,,,,,,,,,,,{},{},{} -6418,A_Grade_Coin,A Grade Coin,3,20,,0,,,,,,,,,,,,,{},{},{} -6419,B_Grade_Coin,B Grade Coin,3,20,,0,,,,,,,,,,,,,{},{},{} -6420,C_Grade_Coin,C Grade Coin,3,20,,0,,,,,,,,,,,,,{},{},{} -6421,D_Grade_Coin,D Grade Coin,3,20,,0,,,,,,,,,,,,,{},{},{} -6422,E_Grade_Coin,E Grade Coin,3,20,,0,,,,,,,,,,,,,{},{},{} +6418,Agrade_Coin,A Grade Coin,3,20,,0,,,,,,,,,,,,,{},{},{} +6419,Bgrade_Coin,B Grade Coin,3,20,,0,,,,,,,,,,,,,{},{},{} +6420,Cgrade_Coin,C Grade Coin,3,20,,0,,,,,,,,,,,,,{},{},{} +6421,Dgrade_Coin,D Grade Coin,3,20,,0,,,,,,,,,,,,,{},{},{} +6422,Egrade_Coin,E Grade Coin,3,20,,0,,,,,,,,,,,,,{},{},{} 6423,Anger_Seagod,Sea God's Wrath,3,20,,0,,,,,,,,,,,,,{},{},{} 6424,Halloween_Fragment,Spirit Piece,3,20,,0,,,,,,,,,,,,,{},{},{} 6425,Halloween_Certificate,Halloween Certificate,3,20,,0,,,,,,,,,,,,,{},{},{} @@ -5693,17 +5693,19 @@ 12613,Improved_Coin_Bag,Improved Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_Improved_Coin_Bag),1; getrandgroupitem(IG_Improved_Coin_Bag),1; getrandgroupitem(IG_Improved_Coin_Bag),1; getrandgroupitem(IG_Improved_Coin_Bag),1; },{},{} 12614,Intermediate_Coin_Bag,Intermediate Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_Intermediate_Coin_Bag),1; getrandgroupitem(IG_Intermediate_Coin_Bag),1; getrandgroupitem(IG_Intermediate_Coin_Bag),1; getrandgroupitem(IG_Intermediate_Coin_Bag),1; },{},{} 12615,Minor_Coin_Bag,Minor Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_Minor_Coin_Bag),1; getrandgroupitem(IG_Minor_Coin_Bag),1; getrandgroupitem(IG_Minor_Coin_Bag),1; getrandgroupitem(IG_Minor_Coin_Bag),1; },{},{} -12616,S_Grade_Coin_Bag,S Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_S_Grade_Coin_Bag),1; getrandgroupitem(IG_S_Grade_Coin_Bag),1; getrandgroupitem(IG_S_Grade_Coin_Bag),1; },{},{} -12617,A_Grade_Coin_Bag,A Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_A_Grade_Coin_Bag),1; getrandgroupitem(IG_A_Grade_Coin_Bag),1; getrandgroupitem(IG_A_Grade_Coin_Bag),1; },{},{} -12618,B_Grade_Coin_Bag,B Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12619,C_Grade_Coin_Bag,C Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12620,D_Grade_Coin_Bag,D Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12621,E_Grade_Coin_Bag,E Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12622,Reins_Of_Mount,Reins Of Mount,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ setmounting(); },{},{} -12623,Advanced_Weapons_Box,Advanced Weapons Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_Advanced_Weapons_Box),1; },{},{} +12616,Sgrade_Pocket,S Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_S_Grade_Coin_Bag),1; getrandgroupitem(IG_S_Grade_Coin_Bag),1; getrandgroupitem(IG_S_Grade_Coin_Bag),1; },{},{} +12617,Agrade_Pocket,A Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_A_Grade_Coin_Bag),1; getrandgroupitem(IG_A_Grade_Coin_Bag),1; getrandgroupitem(IG_A_Grade_Coin_Bag),1; },{},{} +12618,Bgrade_Pocket,B Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} +12619,Cgrade_Pocket,C Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} +12620,Dgrade_Pocket,D Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} +12621,Egrade_Pocket,E Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} +12622,Boarding_Halter,Reins Of Mount,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ setmounting(); },{},{} +12623,High_Weapons_Box,Advanced Weapons Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_Advanced_Weapons_Box),1; },{},{} 12624,Delicious_Jelly,Delicious Jelly,0,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 3,3; },{},{} // -12636,Malangdo_Canned_Specialties,Malangdo Canned Specialties,2,20,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ warp "malangdo",140,114; },{},{} +12633,Malang_Cat_Can,Malangdo Cat Can,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_EXPBOOST,1200000,10; sc_start SC_ITEMBOOST,1200000,20; },{},{} +// +12636,Malang_Sp_Can,Malangdo Canned Specialties,2,20,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ warp "malangdo",140,114; },{},{} // 12642,Terra_Mars_100_Box,Terra_Mars_100_Box,0,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 504,100; },{},{} // diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 7321b7a14c..cc0aacd525 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -4401,13 +4401,13 @@ getrandgroupitem(1,3); *enable_items; *disable_items; -These commands enable item usage while an NPC is running. When enable_items is -run, items can be used during scripts until disable_items is called. -To avoid possible exploits, when enable_items is invoked, it will only enable -item usage while running that script in particular. Note that if a different -script also calls enable_items, it will override the last call (so you may -want to call this command at the start of your script without assuming the -effect is still in effect). +These commands toggle the ability to change equipment while interacting with +an NPC. To avoid possible exploits, the commands affect the particular script +instance only. Note that if a different script also calls enable_items, it +will override the last call (so you may want to call this command at the start +of your script without assuming it is still in effect). + +The default setting, 'item_enabled_npc', is defined in 'conf/battle/items.conf'. --------------------------------------- diff --git a/npc/custom/quests/quest_shop.txt b/npc/custom/quests/quest_shop.txt index ec45567211..539c29f233 100644 --- a/npc/custom/quests/quest_shop.txt +++ b/npc/custom/quests/quest_shop.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= Euphy //===== Current Version: ===================================== -//= 1.6a +//= 1.6 //===== Compatible With: ===================================== //= rAthena SVN r16862+ //===== Description: ========================================= @@ -107,7 +107,6 @@ OnBuyItem: message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+"."; end; } - disable_items; mes "[Quest Shop]"; mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000"; mes "Requirements:"; diff --git a/npc/re/instances/OctopusCave.txt b/npc/re/instances/OctopusCave.txt index 2cbb7e25ee..aa08e7af89 100644 --- a/npc/re/instances/OctopusCave.txt +++ b/npc/re/instances/OctopusCave.txt @@ -675,6 +675,8 @@ OnDisable: killmonster "1@cash",instance_npcname("oct_boss_foot", instance_id())+"::OnMyMobDead"; // Not in official script. disablenpc instance_npcname("oct_boss_foot", instance_id()); end; +OnMyMobDead: + end; } 1@cash,198,116,0 script oct_boss_warp 45,2,2,{ diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql index 7e13ae45a0..8a44d07945 100644 --- a/sql-files/item_db_re.sql +++ b/sql-files/item_db_re.sql @@ -3912,11 +3912,11 @@ REPLACE INTO `item_db_re` VALUES (6414,'Ragunta_Card','Ragunta Card',3,20,NULL,1 REPLACE INTO `item_db_re` VALUES (6415,'Strange_Embryo','Strange Embryo',3,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6416,'Pet_Exchange','Pet Exchange',3,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6417,'Garderie_Fruit','Garderie Fruit',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (6418,'A_Grade_Coin','A Grade Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (6419,'B_Grade_Coin','B Grade Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (6420,'C_Grade_Coin','C Grade Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (6421,'D_Grade_Coin','D Grade Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (6422,'E_Grade_Coin','E Grade Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6418,'Agrade_Coin','A Grade Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6419,'Bgrade_Coin','B Grade Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6420,'Cgrade_Coin','C Grade Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6421,'Dgrade_Coin','D Grade Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6422,'Egrade_Coin','E Grade Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6423,'Anger_Seagod','Sea God\'s Wrath',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6424,'Halloween_Fragment','Spirit Piece',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6425,'Halloween_Certificate','Halloween Certificate',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -5724,17 +5724,19 @@ REPLACE INTO `item_db_re` VALUES (12612,'Old_Coin_Bag','Old Coin Bag',2,20,NULL, REPLACE INTO `item_db_re` VALUES (12613,'Improved_Coin_Bag','Improved Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Improved_Coin_Bag),1; getrandgroupitem(IG_Improved_Coin_Bag),1; getrandgroupitem(IG_Improved_Coin_Bag),1; getrandgroupitem(IG_Improved_Coin_Bag),1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12614,'Intermediate_Coin_Bag','Intermediate Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Intermediate_Coin_Bag),1; getrandgroupitem(IG_Intermediate_Coin_Bag),1; getrandgroupitem(IG_Intermediate_Coin_Bag),1; getrandgroupitem(IG_Intermediate_Coin_Bag),1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12615,'Minor_Coin_Bag','Minor Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Minor_Coin_Bag),1; getrandgroupitem(IG_Minor_Coin_Bag),1; getrandgroupitem(IG_Minor_Coin_Bag),1; getrandgroupitem(IG_Minor_Coin_Bag),1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12616,'S_Grade_Coin_Bag','S Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_S_Grade_Coin_Bag),1; getrandgroupitem(IG_S_Grade_Coin_Bag),1; getrandgroupitem(IG_S_Grade_Coin_Bag),1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12617,'A_Grade_Coin_Bag','A Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_A_Grade_Coin_Bag),1; getrandgroupitem(IG_A_Grade_Coin_Bag),1; getrandgroupitem(IG_A_Grade_Coin_Bag),1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12618,'B_Grade_Coin_Bag','B Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12619,'C_Grade_Coin_Bag','C Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12620,'D_Grade_Coin_Bag','D Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12621,'E_Grade_Coin_Bag','E Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12622,'Reins_Of_Mount','Reins Of Mount',11,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'setmounting();',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12623,'Advanced_Weapons_Box','Advanced Weapons Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Advanced_Weapons_Box),1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12616,'Sgrade_Pocket','S Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_S_Grade_Coin_Bag),1; getrandgroupitem(IG_S_Grade_Coin_Bag),1; getrandgroupitem(IG_S_Grade_Coin_Bag),1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12617,'Agrade_Pocket','A Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_A_Grade_Coin_Bag),1; getrandgroupitem(IG_A_Grade_Coin_Bag),1; getrandgroupitem(IG_A_Grade_Coin_Bag),1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12618,'Bgrade_Pocket','B Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12619,'Cgrade_Pocket','C Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12620,'Dgrade_Pocket','D Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12621,'Egrade_Pocket','E Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12622,'Boarding_Halter','Reins Of Mount',11,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'setmounting();',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12623,'High_Weapons_Box','Advanced Weapons Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Advanced_Weapons_Box),1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12624,'Delicious_Jelly','Delicious Jelly',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 3,3;',NULL,NULL); # -REPLACE INTO `item_db_re` VALUES (12636,'Malangdo_Canned_Specialties','Malangdo Canned Specialties',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'warp "malangdo",140,114;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12633,'Malang_Cat_Can','Malangdo Cat Can',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_EXPBOOST,1200000,10; sc_start SC_ITEMBOOST,1200000,20;',NULL,NULL); +# +REPLACE INTO `item_db_re` VALUES (12636,'Malang_Sp_Can','Malangdo Canned Specialties',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'warp "malangdo",140,114;',NULL,NULL); # REPLACE INTO `item_db_re` VALUES (12642,'Terra_Mars_100_Box','Terra_Mars_100_Box',0,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 504,100;',NULL,NULL); # diff --git a/src/map/battle.c b/src/map/battle.c index e1b18eea57..ee1288d78f 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -5903,6 +5903,7 @@ static const struct _battle_data { { "skill_trap_type", &battle_config.skill_trap_type, 0, 0, 1, }, { "item_restricted_consumption_type", &battle_config.item_restricted_consumption_type,1, 0, 1, }, { "max_walk_path", &battle_config.max_walk_path, 17, 1, MAX_WALKPATH, }, + { "item_enabled_npc", &battle_config.item_enabled_npc, 1, 0, 1, }, }; #ifndef STATS_OPT_OUT /** diff --git a/src/map/battle.h b/src/map/battle.h index 970a268819..6c2394469a 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -486,6 +486,7 @@ extern struct Battle_Config int skill_trap_type; int item_restricted_consumption_type; int max_walk_path; + int item_enabled_npc; } battle_config; void do_init_battle(void); diff --git a/src/map/clif.c b/src/map/clif.c index 3805bb844a..dbd3aa73b3 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -10215,7 +10215,7 @@ void clif_parse_EquipItem(int fd,struct map_session_data *sd) return; //Out of bounds check. if(sd->npc_id) { - if (sd->npc_id != sd->npc_item_flag) + if (!sd->npc_item_flag) return; } else if (sd->state.storage_flag || sd->sc.opt1) ; //You can equip/unequip stuff while storage is open/under status changes @@ -10254,7 +10254,10 @@ void clif_parse_UnequipItem(int fd,struct map_session_data *sd) return; } - if (sd->state.storage_flag || sd->sc.opt1) + if (sd->npc_id) { + if (!sd->npc_item_flag) + return; + } else if (sd->state.storage_flag || sd->sc.opt1) ; //You can equip/unequip stuff while storage is open/under status changes else if (pc_cant_act2(sd)) return; diff --git a/src/map/pc.c b/src/map/pc.c index c8805abe8b..25ca968f10 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4215,8 +4215,7 @@ int pc_useitem(struct map_session_data *sd,int n) nullpo_ret(sd); - //This flag enables you to use items while in an NPC. [Skotlex] - if( sd->npc_id && sd->npc_id != sd->npc_item_flag ){ + if( sd->npc_id ){ #ifdef RENEWAL clif_msg(sd, 0x783); // TODO look for the client date that has this message. #endif diff --git a/src/map/script.c b/src/map/script.c index c4a251ddd9..4e2f9d94d5 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -3016,6 +3016,7 @@ struct script_state* script_alloc_state(struct script_code* script, int pos, int st->rid = rid; st->oid = oid; st->sleep.timer = INVALID_TIMER; + st->npc_item_flag = battle_config.item_enabled_npc; return st; } @@ -3643,6 +3644,7 @@ static void script_attach_state(struct script_state* st) } sd->st = st; sd->npc_id = st->oid; + sd->npc_item_flag = st->npc_item_flag; // load default. /** * For the Secure NPC Timeout option (check config/Secure.h) [RR] **/ @@ -6961,7 +6963,7 @@ BUILDIN_FUNC(enableitemuse) TBL_PC *sd; sd=script_rid2sd(st); if (sd) - sd->npc_item_flag = st->oid; + st->npc_item_flag = sd->npc_item_flag = 1; return 0; } @@ -6970,7 +6972,7 @@ BUILDIN_FUNC(disableitemuse) TBL_PC *sd; sd=script_rid2sd(st); if (sd) - sd->npc_item_flag = 0; + st->npc_item_flag = sd->npc_item_flag = 0; return 0; } diff --git a/src/map/script.h b/src/map/script.h index b27b3d2905..3e7f3087fd 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -132,6 +132,7 @@ struct script_state { int bk_npcid; unsigned freeloop : 1;// used by buildin_freeloop unsigned op2ref : 1;// used by op_2 + unsigned npc_item_flag : 1; }; struct script_reg { diff --git a/src/map/status.c b/src/map/status.c index 35acc60917..cf9e0829b3 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -7375,7 +7375,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val #endif break; case SC_SUITON: - if (!val2 || (sd && (sd->class_&MAPID_UPPERMASK) == MAPID_NINJA)) { + if (!val2 || (sd && (sd->class_&MAPID_BASEMASK) == MAPID_NINJA)) { //No penalties. val2 = 0; //Agi penalty val3 = 0; //Walk speed penalty