Ver Fonte

Cleanup
* Changed `NeedRefine` in item_syntehsis.yml to `NeedRefineMin` and `NeedRefineMax` directly
* Removed lines with default value

Cydh há 5 anos atrás
pai
commit
f41f65f437

+ 3 - 2
db/import-tmpl/item_synthesis.yml

@@ -6,11 +6,12 @@
 #
 ###########################################################################
 # - Id:                 # (int) Item ID of synthesis box
-#   NeedRefine:         # (int) Minimum refine level for source item
+#   NeedRefineMin:      # (int) Minimum refine level needed for source item (default: 0)
+#   NeedRefineMax:      # (int) Maximum refine level needed for source item (default: MAX_REFINE)
 #   SourceNeeded:       # (int) Number of item sets (in SourceItem) must be selected (default: 1)
 #   SourceItem:         # List of item required
 #     - Item:           # (int) Item ID for source
-#     - Amount:         # (int) Item amount will be consumed
+#     - Amount:         # (int) Item amount will be consumed (Default: 1)
 #   Reward:             # (string) Script on synthesis success
 ###########################################################################
 

+ 3 - 2
db/pre-re/item_synthesis.yml

@@ -6,11 +6,12 @@
 #
 ###########################################################################
 # - Id:                 # (int) Item ID of synthesis box
-#   NeedRefine:         # (int) Minimum refine level for source item
+#   NeedRefineMin:      # (int) Minimum refine level needed for source item (default: 0)
+#   NeedRefineMax:      # (int) Maximum refine level needed for source item (default: MAX_REFINE)
 #   SourceNeeded:       # (int) Number of item sets (in SourceItem) must be selected (default: 1)
 #   SourceItem:         # List of item required
 #     - Item:           # (int) Item ID for source
-#     - Amount:         # (int) Item amount will be consumed
+#     - Amount:         # (int) Item amount will be consumed (Default: 1)
 #   Reward:             # (string) Script on synthesis success
 ###########################################################################
 

Diff do ficheiro suprimidas por serem muito extensas
+ 25 - 830
db/re/item_synthesis.yml


+ 0 - 148
db/re/item_upgrade.yml

@@ -21,9 +21,6 @@ Header:
 
 Body:
 - Id: 100023 # Ancient_Hero_Bravery, 영웅의 무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 18164 #Royal_Bow_K
   - Item: 18170 #Narcis_Bow
@@ -59,9 +56,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 100025 # Ancient_Hero_Wisdom, 영웅의 무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 18164 #Royal_Bow_K
   - Item: 18170 #Narcis_Bow
@@ -97,9 +91,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 100003 # ILL_Piece_A, 4레벨 일루전 무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 28762 #Bazerald_IL
   - Item: 28254 #Butcher_IL
@@ -130,9 +121,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 100004 # ILL_Piece_B, 4레벨 일루전 무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 28762 #Bazerald_IL
   - Item: 28254 #Butcher_IL
@@ -163,9 +151,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 9550 # Gemstone_Of_Time, 시간의 갑옷 6종
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 15278 #Overwhelm_Str_Armor
   - Item: 15279 #Overwhelm_Int_Armor
@@ -178,9 +163,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 9551 # Time_Unseal_Key, 시간의 망토 6종
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 20963 #Temporal_M_Str
   - Item: 20964 #Temporal_M_Agi
@@ -193,9 +175,7 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23815 # Magma_Essence, 라바 레더 갑옷 장비
-  NeedRefineMin: 0
   NeedOptionNumMin: 2
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 15378 #Lava_Leather_Armor
   - Item: 15379 #Lava_Leather_Suits
@@ -205,9 +185,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23776 # EP17_1_SPC05, OS무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 13493 #Cannon_Rapier_OS
   - Item: 21047 #Beam_Claymore_OS
@@ -230,9 +207,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23777 # EP17_1_SPC06, OS무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 13493 #Cannon_Rapier_OS
   - Item: 21047 #Beam_Claymore_OS
@@ -255,9 +229,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23778 # EP17_1_SPC07, OS무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 13493 #Cannon_Rapier_OS
   - Item: 21047 #Beam_Claymore_OS
@@ -280,9 +251,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23779 # EP17_1_SPC08, OS무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 13493 #Cannon_Rapier_OS
   - Item: 21047 #Beam_Claymore_OS
@@ -305,9 +273,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23780 # EP17_1_SPC09, OS무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 13493 #Cannon_Rapier_OS
   - Item: 21047 #Beam_Claymore_OS
@@ -330,9 +295,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23781 # EP17_1_SPC10, OS무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 13493 #Cannon_Rapier_OS
   - Item: 21047 #Beam_Claymore_OS
@@ -355,9 +317,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23706 # Charleston_Parts_W, 찰스턴 업그레이드 부품(물리)
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 1549 #파일벙커
   - Item: 16030 #파일벙커S
@@ -371,9 +330,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23707 # Charleston_Parts_R, 찰스턴 업그레이드 부품(원거리)
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 1549 #파일벙커
   - Item: 16030 #파일벙커S
@@ -387,9 +343,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23678 # Gray_Charcoal_Range, 타노스 원거리 무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 18119 #타노스의활
   - Item: 1933 #타노스의바이올린
@@ -407,9 +360,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23677 # Gray_Charcoal_Magic, 타노스 마법 무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 2023 #타노스의양손지팡이
   - Item: 1669 #타노스의지팡이
@@ -422,9 +372,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23676 # Gray_Charcoal_Melee, 타노스 근거리 무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 1988 #타노스의윕소드
   - Item: 13441 #타노스의검
@@ -442,9 +389,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23679 # Geffen_Magic_Scroll2, 게펜 마법 대회 액세서리 (accessory)
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 2963 #신체강화반지
   - Item: 2964 #마력증폭반지
@@ -453,9 +397,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23675 # Geffen_Magic_Scroll, 게펜 마법 대회 갑옷 (armor)
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 15074 #게펜매직로브
   - Item: 15073 #안티매직슈츠
@@ -464,9 +405,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23546 # Cursed_Blood, 피빛의 기사의 방패
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 28945 #Bloody_Knight_Shield_
   Result: |
@@ -474,9 +412,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23547 # Gold_Statue, 정화된 기사의 방패
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 28946 #Bloody_Knight_Shield__
   Result: |
@@ -484,8 +419,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23436 # Shadow_Refine_Hammer, 쉐도우 아이템
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
   NotSocketEnchantItem: false
   TargetItem:
   - Item: 24000 #T힘1아머쉐도우
@@ -958,8 +891,6 @@ Body:
     callfunc("F_Lapine_Shadow_Refine_Hammer", .@refine);
     getitem2(@last_lapine_id,1,1,.@refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4);
 - Id: 23926 # Shadow_9_Refine_Hammer, 쉐도우 아이템
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
   NotSocketEnchantItem: false
   TargetItem:
   - Item: 24000 #T힘1아머쉐도우
@@ -1432,9 +1363,6 @@ Body:
     callfunc("F_Lapine_Shadow_9_Refine_Hammer", .@refine);
     getitem2(@last_lapine_id,1,1,.@refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4);
 - Id: 23311 # 마법고양이손, 새끼 고양이 헤드드레스 (rdata.grf)
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 19242 #고양이레이스머리띠K
   Result: |
@@ -1442,9 +1370,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,0,0,0,0,0,0,.@opts,.@vals,.@params);
 - Id: 23289 # 사탕축복스크롤_물리, 사탕 주머니 가방(물리) (rdata.grf)
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 20842 #안토니오가방_물리
   Result: |
@@ -1452,9 +1377,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23290 # 사탕축복스크롤_원거리, 사탕 주머니 가방(원거리) (rdata.grf)
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 20843 #안토니오가방_원거리
   Result: |
@@ -1462,9 +1384,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23291 # 사탕축복스크롤_마법, 사탕 주머니 가방(마법) (rdata.grf)
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 20844 #안토니오가방_마법
   Result: |
@@ -1472,9 +1391,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23100 # 건슬링거두루마리, 늘어진 건슬링거 (rdata.grf)
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 19157 #늘어진건슬링거
   Result: |
@@ -1482,9 +1398,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23229 # 타락천사날개초기화권, 타락천사의 날개 (rdata.grf)
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 20835 #K타락천사의날개
   - Item: 2589 #타락천사의날개
@@ -1494,9 +1407,6 @@ Body:
     }
     getitem2(@last_lapine_id,1,1,0,0,0,0,0,0);
 - Id: 23175 # 제복수선키트, 카프라 제복 (rdata.grf)
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
-  NotSocketEnchantItem: true
   TargetItem:
   - Item: 15186 #카프라제복
   Result: |
@@ -1505,7 +1415,6 @@ Body:
     getitem3(@last_lapine_id,1,1,0,0,0,0,0,0,.@opts,.@vals,.@params);
 - Id: 23720 # Shadow_Random_Mix, "+7 쉐도우 아이템"
   NeedRefineMin: 7
-  NeedOptionNumMin: 0
   NotSocketEnchantItem: false
   TargetItem:
   - Item: 24000 #T힘1아머쉐도우
@@ -1889,8 +1798,6 @@ Body:
     .@params[0] = 0;
     getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 100043 # Boost_Up_1, 부스터 방어구
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
   NotSocketEnchantItem: false
   TargetItem:
   - Item: 450001 #Atker_Plate
@@ -1909,8 +1816,6 @@ Body:
     callfunc("F_Lapine_Boost_Up_1", .@refine);
     getitem2(@last_lapine_id,1,1,.@refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4);
 - Id: 100044 # Boost_Up_2, 부스팅 무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
   NotSocketEnchantItem: false
   TargetItem:
   - Item: 600001 #Boost_TH_Sword
@@ -1935,8 +1840,6 @@ Body:
     callfunc("F_Lapine_Boost_Up_2", .@refine);
     getitem2(@last_lapine_id,1,1,.@refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4);
 - Id: 9523 # Metal_Rifine_Ticket, 메탈 무기
-  NeedRefineMin: 0
-  NeedOptionNumMin: 0
   NotSocketEnchantItem: false
   TargetItem:
   - Item: 1296 #메탈카타르
@@ -1955,9 +1858,6 @@ Body:
     callfunc("F_Lapine_Metal_Rifine_Ticket", .@refine);
     getitem2(@last_lapine_id,1,1,.@refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4);
 #- Id: 100128 # Noblesse_Rifine_Ticket, 노블레스 아이템
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 450018 # Noblesse_Breath_Armor
 #  - Item: 450019 # Noblesse_Knight_Armor
@@ -2003,9 +1903,6 @@ Body:
 #    callfunc("F_Lapine_Noblesse_Refine_Ticket", .@refine);
 #    getitem2(@last_lapine_id,1,1,.@refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4);
 #- Id: 100129 # Imperial_Rifine_Ticket, 임페리얼 아이템
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 450052 # Imperial_Breath_Armor
 #  - Item: 450053 # Imperial_Knight_Armor
@@ -2051,9 +1948,6 @@ Body:
 #    callfunc("F_Lapine_Imperial_Refine_Ticket", .@refine);
 #    getitem2(@last_lapine_id,1,1,.@refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4);
 #- Id: 100130 # Grace_Rifine_Ticket, 그레이스 아이템
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 450086 # Grace_Breath_Armor
 #  - Item: 450087 # Grace_Knight_Armor
@@ -2099,9 +1993,6 @@ Body:
 #    callfunc("F_Lapine_Grace_Refine_Ticket", .@refine);
 #    getitem2(@last_lapine_id,1,1,.@refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4);
 #- Id: 100131 # Imperial_Convert1, 임페리얼 망토
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 480016 # Imperial_Attack_Manteau
 #  - Item: 480017 # Imperial_Magic_Manteau
@@ -2110,9 +2001,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 100132 # Imperial_Convert2, 임페리얼 망토
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 480016 # Imperial_Attack_Manteau
 #  - Item: 480017 # Imperial_Magic_Manteau
@@ -2121,9 +2009,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 100135 # Imperial_Convert3, 임페리얼 갑옷
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 450052 # Imperial_Breath_Armor
 #  - Item: 450053 # Imperial_Knight_Armor
@@ -2166,9 +2051,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 100136 # Imperial_Convert4, 임페리얼 갑옷
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 450052 # Imperial_Breath_Armor
 #  - Item: 450053 # Imperial_Knight_Armor
@@ -2211,9 +2093,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 100133 # Grace_Convert1, 그레이스 망토
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 480018 # Grace_Attack_Manteau
 #  - Item: 480019 # Grace_Magic_Manteau
@@ -2222,9 +2101,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 100134 # Grace_Convert2, 그레이스 망토
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 480018 # Grace_Attack_Manteau
 #  - Item: 480019 # Grace_Magic_Manteau
@@ -2233,9 +2109,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 100137 # Grace_Convert3, 그레이스 갑옷
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 450086 # Grace_Breath_Armor
 #  - Item: 450087 # Grace_Knight_Armor
@@ -2278,9 +2151,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 100138 # Grace_Convert4, 그레이스 갑옷
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 450086 # Grace_Breath_Armor
 #  - Item: 450087 # Grace_Knight_Armor
@@ -2323,9 +2193,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 9514 # Ein_Ddbox, 물리 개조 시스템
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 21054 # Ein_BHSWORD
 #  - Item: 2058 # Ein_BHSTAFF
@@ -2351,9 +2218,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 9529 # Ein_Ddbox2, 마법 개조 시스템
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 21054 # Ein_BHSWORD
 #  - Item: 2058 # Ein_BHSTAFF
@@ -2379,9 +2243,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 23981 # Abyss_Ddbox, 소용돌이 치는 용의 힘
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 15391 # DragonA_Red
 #  - Item: 15392 # DragonA_Green
@@ -2395,9 +2256,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 100142 # Abyss_Ddbox2, 안정된 용의 힘
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 15391 # DragonA_Red
 #  - Item: 15392 # DragonA_Green
@@ -2411,9 +2269,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 100144 # Abyss_Ddbox3, 불타는 용의 힘
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 20946 # Drag_Manteau
 #  Result: |
@@ -2422,9 +2277,6 @@ Body:
 #    .@params[0] = 0;
 #    getitem3(@last_lapine_id,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 #- Id: 100145 # Abyss_Ddbox4, 뜨거운 용의 힘
-#  NeedRefineMin: 0
-#  NeedOptionNumMin: 0
-#  NotSocketEnchantItem: true
 #  TargetItem:
 #  - Item: 22208 # Dragon_Boots
 #  Result: |

+ 14 - 13
src/map/item_synthesis.cpp

@@ -36,7 +36,7 @@ uint64 ItemSynthesisDatabase::parseBodyNode(const YAML::Node &node) {
 	bool exists = entry != nullptr;
 
 	if (!exists) {
-		if (!this->nodesExist(node, { "SourceNeeded", "SourceItem", "Reward" }))
+		if (!this->nodesExist(node, { "SourceItem", "Reward" }))
 			return 0;
 
 		entry = std::make_shared<s_item_synthesis_db>();
@@ -48,19 +48,14 @@ uint64 ItemSynthesisDatabase::parseBodyNode(const YAML::Node &node) {
 			return 0;
 	}
 
-	if (this->nodeExists(node, "NeedRefine")) {
-		const YAML::Node& refineNode = node["NeedRefine"];
-
-		if (refineNode.IsScalar()) {
-			this->asUInt16(node, "NeedRefine", entry->source_refine_min);
-		}
-		else {
-			if (this->nodeExists(refineNode, "Min"))
-				this->asUInt16(refineNode, "Min", entry->source_refine_min);
+	if (this->nodeExists(node, "NeedRefineMin")) {
+		if (!this->asUInt16(node, "NeedRefineMin", entry->source_refine_min))
+			return 0;
+	}
 
-			if (this->nodeExists(refineNode, "Max"))
-				this->asUInt16(refineNode, "Max", entry->source_refine_max);
-		}
+	if (this->nodeExists(node, "NeedRefineMax")) {
+		if (!this->asUInt16(node, "NeedRefineMax", entry->source_refine_max))
+			return 0;
 	}
 
 	if (this->nodeExists(node, "SourceItem")) {
@@ -260,6 +255,7 @@ bool s_item_synthesis_db::checkRequirement(map_session_data *sd, const std::vect
 
 	item *item = NULL;
 	item_data *id = NULL;
+	std::vector<int> indexes(this->source_needed);
 
 	for (auto &it : items) {
 		if (it.index >= MAX_INVENTORY)
@@ -279,6 +275,11 @@ bool s_item_synthesis_db::checkRequirement(map_session_data *sd, const std::vect
 
 		if (item->refine > this->source_refine_max)
 			return false;
+
+		if (std::find(indexes.begin(), indexes.end(), it.index) != indexes.end())
+			return false;
+
+		indexes.push_back(it.index);
 	}
 
 	return true;

+ 8 - 4
src/map/item_upgrade.cpp

@@ -81,19 +81,23 @@ uint64 ItemUpgradeDatabase::parseBodyNode(const YAML::Node &node) {
 	}
 
 	if (this->nodeExists(node, "NeedRefineMin")) {
-		this->asUInt16(node, "NeedRefineMin", entry->source_refine_min);
+		if (!this->asUInt16(node, "NeedRefineMin", entry->source_refine_min))
+			return 0;
 	}
 
 	if (this->nodeExists(node, "NeedRefineMax")) {
-		this->asUInt16(node, "NeedRefineMax", entry->source_refine_max);
+		if (!this->asUInt16(node, "NeedRefineMax", entry->source_refine_max))
+			return 0;
 	}
 
 	if (this->nodeExists(node, "NeedOptionNumMin")) {
-		this->asUInt16(node, "NeedOptionNumMin", entry->need_option_num);
+		if (!this->asUInt16(node, "NeedOptionNumMin", entry->need_option_num))
+			return 0;
 	}
 
 	if (this->nodeExists(node, "NotSocketEnchantItem")) {
-		this->asBool(node, "NotSocketEnchantItem", entry->not_socket_enchant);
+		if (!this->asBool(node, "NotSocketEnchantItem", entry->not_socket_enchant))
+			return 0;
 	}
 
 	if (!exists)

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff