Bläddra i källkod

Item data corrections (#8390)

* Fixed items in DB using wrong field. Some fields don't work with certain item types.
* Added warnings when a type is using a wrong field.
Atemo 11 månader sedan
förälder
incheckning
ed3f418d15
4 ändrade filer med 29 tillägg och 18 borttagningar
  1. 6 14
      db/re/item_db_equip.yml
  2. 0 3
      db/re/item_db_etc.yml
  3. 0 1
      db/re/item_db_usable.yml
  4. 23 0
      src/map/itemdb.cpp

+ 6 - 14
db/re/item_db_equip.yml

@@ -93103,7 +93103,6 @@ Body:
     Name: Red Baby Dragon
     Type: Armor
     Weight: 700
-    Range: 1
     Slots: 1
     Locations:
       Head_Top: true
@@ -95837,7 +95836,6 @@ Body:
     Name: Red Baby Dragon
     Type: Armor
     Weight: 700
-    Range: 1
     Slots: 1
     Locations:
       Head_Top: true
@@ -110713,7 +110711,6 @@ Body:
     Type: Armor
     Weight: 700
     Defense: 20
-    Range: 1
     Slots: 1
     Locations:
       Garment: true
@@ -185413,7 +185410,6 @@ Body:
     AegisName: E_Auto_Armor_B
     Name: Automatic Armor B-type (Bound)
     Type: Armor
-    MagicAttack: 125
     Defense: 135
     Slots: 1
     Locations:
@@ -185430,7 +185426,7 @@ Body:
       NoAuction: true
     Script: |
       .@r = getrefine();
-      bonus bMatk,10*(.@r/2);
+      bonus bMatk,125+10*(.@r/2);
       if (.@r>=7) {
          bonus bVariableCastrate,-15;
       }
@@ -186266,7 +186262,6 @@ Body:
     Name: Glacier Robe
     Type: Armor
     Weight: 1200
-    MagicAttack: 120
     Defense: 120
     Slots: 1
     Locations:
@@ -186278,7 +186273,7 @@ Body:
     Script: |
       .@g = getenchantgrade();
       .@r = getrefine();
-      bonus bMatk,15*(.@r/2);
+      bonus bMatk,120+15*(.@r/2);
       bonus bDef,15*(.@r/2);
       if (.@r>=7) {
          bonus2 bMagicAtkEle,Ele_All,5;
@@ -186481,7 +186476,6 @@ Body:
     Name: Dim Glacier Robe
     Type: Armor
     Weight: 1200
-    MagicAttack: 140
     Defense: 145
     Slots: 1
     Locations:
@@ -186495,6 +186489,7 @@ Body:
     Script: |
       .@g = getenchantgrade();
       .@r = getrefine();
+      bonus bMatk,140;
       bonus bSpl,(.@r/2);
       bonus bCon,(.@r/2);
       if (.@r>=7) {
@@ -186689,7 +186684,6 @@ Body:
     Name: Soul Purifying Rune Robe
     Type: Armor
     Weight: 500
-    MagicAttack: 100
     Slots: 1
     Locations:
       Armor: true
@@ -186708,7 +186702,7 @@ Body:
       .@g = getenchantgrade();
       .@r = getrefine();
       bonus bUseSPrate,10;
-      bonus bMatk,15*(.@r/2);
+      bonus bMatk,100+15*(.@r/2);
       bonus bDef,30*(.@r/2);
       if (.@r>=7) {
          bonus bSMatk,2;
@@ -186927,7 +186921,6 @@ Body:
     AegisName: Soul_P_R_Robe2
     Name: Engraved Soul Purifying Rune Robe
     Type: Armor
-    MagicAttack: 140
     Defense: 75
     Slots: 1
     Locations:
@@ -186950,7 +186943,7 @@ Body:
       bonus bUseSPrate,10;
       bonus bSpl,3;
       bonus bCon,3;
-      bonus bMatk,15*(.@r/2);
+      bonus bMatk,140+15*(.@r/2);
       bonus bDef,30*(.@r/2);
       if (.@r>=7) {
          bonus bSMatk,2;
@@ -187969,7 +187962,6 @@ Body:
     Name: Gaebolg Robe
     Type: Armor
     Weight: 1200
-    MagicAttack: 130
     Defense: 130
     Slots: 1
     Locations:
@@ -187981,7 +187973,7 @@ Body:
     Script: |
       .@g = getenchantgrade();
       .@r = getrefine();
-      bonus bMatk,15*(.@r/2);
+      bonus bMatk,130+15*(.@r/2);
       bonus bDef,15*(.@r/2);
       if (.@r>=7) {
          bonus2 bMagicAtkEle,Ele_All,3;

+ 0 - 3
db/re/item_db_etc.yml

@@ -29172,21 +29172,18 @@ Body:
     Type: Etc
     Buy: 5
     Weight: 1
-    Attack: 10
   - Id: 7664
     AegisName: Shooting_Mine
     Name: Grenade Launcher
     Type: Etc
     Buy: 30
     Weight: 1
-    Attack: 10
   - Id: 7665
     AegisName: Dragon_Tail_Missile
     Name: Dragon Tail Missile
     Type: Etc
     Buy: 15
     Weight: 1
-    Attack: 10
   - Id: 7666
     AegisName: TimeTravel_Scroll
     Name: Time Travel Scroll

+ 0 - 1
db/re/item_db_usable.yml

@@ -51457,7 +51457,6 @@ Body:
     Type: Usable
     Buy: 10
     Weight: 10
-    Defense: 4
     Trade:
       NoDrop: true
       NoTrade: true

+ 23 - 0
src/map/itemdb.cpp

@@ -1158,6 +1158,29 @@ void ItemDatabase::loadingFinished(){
 			}
 		}
 
+		if (item->type != IT_ARMOR && item->type != IT_SHADOWGEAR && item->def > 0) {
+			ShowWarning( "Item %s is not a armor or shadowgear. Defaulting Defense to 0.\n", item->name.c_str() );
+			item->def = 0;
+		}
+
+		if (item->type != IT_WEAPON && item->type != IT_AMMO && item->atk > 0) {
+			ShowWarning( "Item %s is not a weapon or ammo. Defaulting Attack to 0.\n", item->name.c_str() );
+			item->atk = 0;
+		}
+
+		if (item->type != IT_WEAPON) {
+#ifdef RENEWAL
+			if (item->matk > 0) {
+				ShowWarning( "Item %s is not a weapon. Defaulting MagicAttack to 0.\n", item->name.c_str() );
+				item->matk = 0;
+			}
+#endif
+			if (item->range > 0) {
+				ShowWarning( "Item %s is not a weapon. Defaulting Range to 0.\n", item->name.c_str() );
+				item->range = 0;
+			}
+		}
+
 		// When a particular price is not given, we should base it off the other one
 		if (!hasPriceValue[item->nameid].has_buy && hasPriceValue[item->nameid].has_sell)
 			item->value_buy = item->value_sell * 2;