From 9403edafa9b8b521ba8d8c0a3ac372819322f7e4 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sun, 29 Oct 2023 12:35:12 -0500 Subject: [PATCH 01/37] First Aid Belt First Aid Belt and Bandage Bonus Property. --- data/dfndata/items/gear/clothing/ej_clothing.dfn | 13 +++++++++++++ data/js/item/equip_effects/bandagehealingbonus.js | 6 ++++++ data/js/jse_fileassociations.scp | 1 + data/js/skill/healing.js | 12 ++++++++++++ source/Changelog.txt | 6 ++++++ source/items.cpp | 1 + 6 files changed, 39 insertions(+) create mode 100644 data/dfndata/items/gear/clothing/ej_clothing.dfn create mode 100644 data/js/item/equip_effects/bandagehealingbonus.js diff --git a/data/dfndata/items/gear/clothing/ej_clothing.dfn b/data/dfndata/items/gear/clothing/ej_clothing.dfn new file mode 100644 index 000000000..0cf5b6af4 --- /dev/null +++ b/data/dfndata/items/gear/clothing/ej_clothing.dfn @@ -0,0 +1,13 @@ +[FirstAidBelt] +{ +get=base_clothing +name=First Aid Belt +id=0xA1F6 +type=1 +weight=100 +weightmax=40000 +maxitems=10000 +layer=0x12 +script=5049 +custominttag=healingbonus 15 +} \ No newline at end of file diff --git a/data/js/item/equip_effects/bandagehealingbonus.js b/data/js/item/equip_effects/bandagehealingbonus.js new file mode 100644 index 000000000..8f12a9a2d --- /dev/null +++ b/data/js/item/equip_effects/bandagehealingbonus.js @@ -0,0 +1,6 @@ +function onTooltip(equipment, pSocket) +{ + var healingBonus = parseInt(equipment.GetTag("healingbonus")); + var tooltipText = healingBonus + "% Bandage Healing Bonus"; + return tooltipText; +} \ No newline at end of file diff --git a/data/js/jse_fileassociations.scp b/data/js/jse_fileassociations.scp index d92b05035..cf0563348 100644 --- a/data/js/jse_fileassociations.scp +++ b/data/js/jse_fileassociations.scp @@ -267,6 +267,7 @@ 5046=item/corpse.js 5047=item/consumables/new_player_ticket.js 5048=item/teleport_item.js +5049=item/equip_effects/bandagehealingbonus.js //------------------------------------------- // Camps [5500-5599] diff --git a/data/js/skill/healing.js b/data/js/skill/healing.js index 002743d28..1751042c6 100644 --- a/data/js/skill/healing.js +++ b/data/js/skill/healing.js @@ -407,6 +407,16 @@ function onTimer( mChar, timerID ) } else if( mChar.CheckSkill( skillNum, 0, healthLoss * 10 )) // Requires higher and higher amount of health lost in order for healer to gain skill { + var mItem; + var healBonus; + for( mItem = mChar.FirstItem(); !mChar.FinishedItems(); mItem = mChar.NextItem() ) + { + if( !ValidateObject( mItem )) + continue; + + healBonus += parseInt( mItem.GetTag( "healingBonus" ) ); + } + // Increase karma when healing innocent/neutral characters if( ourObj != mChar && ( ourObj.innocent || ourObj.neutral )) { @@ -449,6 +459,8 @@ function onTimer( mChar, timerID ) var maxValue = Math.round(( secondarySkill / 50 ) + ( healSkill / 20 ) + 10 ); var healAmt = RandomNumber( minValue, maxValue ); + healAmt += healAmt * ( healBonus / 100 ); + // Reduce the amount healed with each slip caused by damage taken while healing for( var i = 0; i < slipCount; i++ ) { diff --git a/source/Changelog.txt b/source/Changelog.txt index 9e375d49e..6b22e94e5 100644 --- a/source/Changelog.txt +++ b/source/Changelog.txt @@ -1,3 +1,9 @@ +29/10/2023 - Dragon Slayer, Xuri (0.99.6a) + Added DFN entries for first aid belt. (dfn item/gear/clothing/ej_clothing) + Added First Aid Belt ID to backpack type. (cpp items) + Added bandage healing bonus to healing. (js healing) + Added JS script bandagehealingbonus (js items/equip_effect/bandagehealingbonus) + 28/10/2023 - Dragon Slayer (0.99.6a) Added DFN entries for hallow pumpkins, jack o lanterns and halloween decorations. (dfn item/misc/halloween) Added DFN entrie for killerpumpkin in daemons.dfn. (dfn daemons) diff --git a/source/items.cpp b/source/items.cpp index 71c8b964e..344ab2794 100644 --- a/source/items.cpp +++ b/source/items.cpp @@ -1402,6 +1402,7 @@ PackTypes cItem::GetPackType( CItem *i ) case 0x0E75: // backpack case 0x0E79: // pouch case 0x09B0: // pouch + case 0xA1F6: // First Aid Belt packType = PT_PACK; break; case 0x0E76: // leather bag From 93459a07a92ba70ca3d909321c001838182d3ec0 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sun, 29 Oct 2023 12:36:50 -0500 Subject: [PATCH 02/37] Update bandagehealingbonus.js --- data/js/item/equip_effects/bandagehealingbonus.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/js/item/equip_effects/bandagehealingbonus.js b/data/js/item/equip_effects/bandagehealingbonus.js index 8f12a9a2d..eb90b4104 100644 --- a/data/js/item/equip_effects/bandagehealingbonus.js +++ b/data/js/item/equip_effects/bandagehealingbonus.js @@ -1,6 +1,6 @@ -function onTooltip(equipment, pSocket) +function onTooltip( equipment, pSocket ) { - var healingBonus = parseInt(equipment.GetTag("healingbonus")); + var healingBonus = parseInt( equipment.GetTag( "healingbonus" )); var tooltipText = healingBonus + "% Bandage Healing Bonus"; return tooltipText; } \ No newline at end of file From 25fb7e4ef0e225d68a11df2d2ccaf4abd975735e Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sun, 29 Oct 2023 12:38:10 -0500 Subject: [PATCH 03/37] Update ej_clothing.dfn --- data/dfndata/items/gear/clothing/ej_clothing.dfn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/dfndata/items/gear/clothing/ej_clothing.dfn b/data/dfndata/items/gear/clothing/ej_clothing.dfn index 0cf5b6af4..bc155e336 100644 --- a/data/dfndata/items/gear/clothing/ej_clothing.dfn +++ b/data/dfndata/items/gear/clothing/ej_clothing.dfn @@ -9,5 +9,5 @@ weightmax=40000 maxitems=10000 layer=0x12 script=5049 -custominttag=healingbonus 15 +custominttag=healingBonus 15 } \ No newline at end of file From 20e19c19209984d4973db9306410990d5283deac Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sun, 29 Oct 2023 12:38:53 -0500 Subject: [PATCH 04/37] Update bandagehealingbonus.js --- data/js/item/equip_effects/bandagehealingbonus.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/js/item/equip_effects/bandagehealingbonus.js b/data/js/item/equip_effects/bandagehealingbonus.js index eb90b4104..0c1248671 100644 --- a/data/js/item/equip_effects/bandagehealingbonus.js +++ b/data/js/item/equip_effects/bandagehealingbonus.js @@ -1,6 +1,6 @@ function onTooltip( equipment, pSocket ) { - var healingBonus = parseInt( equipment.GetTag( "healingbonus" )); + var healingBonus = parseInt( equipment.GetTag( "healingBonus" )); var tooltipText = healingBonus + "% Bandage Healing Bonus"; return tooltipText; } \ No newline at end of file From 7b1702525aebd9f0ddbf7bcfda8578aa2b68e38a Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sun, 29 Oct 2023 12:42:31 -0500 Subject: [PATCH 05/37] Update Changelog.txt --- source/Changelog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/Changelog.txt b/source/Changelog.txt index 6b22e94e5..25564a163 100644 --- a/source/Changelog.txt +++ b/source/Changelog.txt @@ -1,4 +1,4 @@ -29/10/2023 - Dragon Slayer, Xuri (0.99.6a) +29/10/2023 - Dragon Slayer, Xuri Added DFN entries for first aid belt. (dfn item/gear/clothing/ej_clothing) Added First Aid Belt ID to backpack type. (cpp items) Added bandage healing bonus to healing. (js healing) From a785caed97a1c08713e9f17805ab7db697b37bb5 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sun, 29 Oct 2023 12:48:51 -0500 Subject: [PATCH 06/37] renamed file --- .../items/gear/clothing/{ej_clothing.dfn => tol_clothing.dfn} | 1 + 1 file changed, 1 insertion(+) rename data/dfndata/items/gear/clothing/{ej_clothing.dfn => tol_clothing.dfn} (93%) diff --git a/data/dfndata/items/gear/clothing/ej_clothing.dfn b/data/dfndata/items/gear/clothing/tol_clothing.dfn similarity index 93% rename from data/dfndata/items/gear/clothing/ej_clothing.dfn rename to data/dfndata/items/gear/clothing/tol_clothing.dfn index bc155e336..2c36bfe27 100644 --- a/data/dfndata/items/gear/clothing/ej_clothing.dfn +++ b/data/dfndata/items/gear/clothing/tol_clothing.dfn @@ -10,4 +10,5 @@ maxitems=10000 layer=0x12 script=5049 custominttag=healingBonus 15 +origin=tol } \ No newline at end of file From 9a45c2942bd8cb562ad859fe37afcc1fecc945b1 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sun, 29 Oct 2023 15:04:36 -0500 Subject: [PATCH 07/37] Fixed healing Bonus --- data/js/skill/healing.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/data/js/skill/healing.js b/data/js/skill/healing.js index 1751042c6..6523eb4a7 100644 --- a/data/js/skill/healing.js +++ b/data/js/skill/healing.js @@ -459,8 +459,6 @@ function onTimer( mChar, timerID ) var maxValue = Math.round(( secondarySkill / 50 ) + ( healSkill / 20 ) + 10 ); var healAmt = RandomNumber( minValue, maxValue ); - healAmt += healAmt * ( healBonus / 100 ); - // Reduce the amount healed with each slip caused by damage taken while healing for( var i = 0; i < slipCount; i++ ) { @@ -482,7 +480,7 @@ function onTimer( mChar, timerID ) } else { - ourObj.Heal( healAmt, mChar ); + ourObj.Heal(healAmt * (healBonus / 100), mChar ); socket.SysMessage( GetDictionaryEntry( 1271, socket.language )); // You apply the bandages and the patient looks a bit healthier. } } From 172983ab282d4fe115c98579cac5c92cc153dab9 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Mon, 30 Oct 2023 10:59:15 -0500 Subject: [PATCH 08/37] Added msg to dictionary files --- data/dictionaries/dictionary.CSY | 2 ++ data/dictionaries/dictionary.ENG | 2 ++ data/dictionaries/dictionary.FRE | 2 ++ data/dictionaries/dictionary.GER | 2 ++ data/dictionaries/dictionary.ITA | 2 ++ data/dictionaries/dictionary.POL | 2 ++ data/dictionaries/dictionary.PTG | 2 ++ data/dictionaries/dictionary.SPA | 2 ++ data/dictionaries/dictionary.ZRO | 2 ++ data/js/item/equip_effects/bandagehealingbonus.js | 4 ++-- 10 files changed, 20 insertions(+), 2 deletions(-) diff --git a/data/dictionaries/dictionary.CSY b/data/dictionaries/dictionary.CSY index fde773a06..b4a6bc2e1 100644 --- a/data/dictionaries/dictionary.CSY +++ b/data/dictionaries/dictionary.CSY @@ -5149,5 +5149,7 @@ 18769=Barviva a kádinka s barvivy byly umístěny do tvého batohu. 18770=Toto je polovina výherního lístku! Dvakrát klikni na tento tip a zaměř jakýkoli jiný tip označený jako NOVÝ HRÁČ a získej výhru! Tento los bude fungovat pouze pro TEBE, takže ho nikomu nedávej! 18771=Plná sada rangerské zbroje. +// [18800-19000] Vlastnosti AOS +18800=%i% Bonus za hojení obvazů } EOF diff --git a/data/dictionaries/dictionary.ENG b/data/dictionaries/dictionary.ENG index df08f4018..4b38d6239 100644 --- a/data/dictionaries/dictionary.ENG +++ b/data/dictionaries/dictionary.ENG @@ -5149,5 +5149,7 @@ 18769=The dyes and dye tub have been placed in your backpack. 18770=This is half a prize ticket! Double-click this ticket and target any other ticket marked NEW PLAYER and get a prize! This ticket will only work for YOU, so don’t give it away! 18771=A full set of ranger armor. +// [18800-19000] AOS properties +18800=%i% Bandage Healing Bonus } EOF diff --git a/data/dictionaries/dictionary.FRE b/data/dictionaries/dictionary.FRE index 47cf0430b..7194e3336 100644 --- a/data/dictionaries/dictionary.FRE +++ b/data/dictionaries/dictionary.FRE @@ -5305,5 +5305,7 @@ 18769=Les teintures et le bac à teinture ont été placés dans votre sac à dos. 18770=Voici la moitié d'un ticket de prix ! Double-cliquez sur ce ticket et ciblez n'importe quel autre ticket marqué NEW PLAYER et obtenez un prix ! Ce ticket ne fonctionnera que pour TOI, alors ne le donne pas ! 18771=Une armure de ranger complète. +// [18800-19000] Propriétés de l’AOS +18800=%i% Bonus de soins de bandage } EOF diff --git a/data/dictionaries/dictionary.GER b/data/dictionaries/dictionary.GER index 3d398d740..8c41ee586 100644 --- a/data/dictionaries/dictionary.GER +++ b/data/dictionaries/dictionary.GER @@ -5149,5 +5149,7 @@ 18769=Die Färbemittel und der Färbebecher wurden in deinen Rucksack gelegt. 18770=Dies ist ein halber Gewinnschein! Doppelklicke auf dieses Ticket und auf ein beliebiges anderes Ticket mit der Aufschrift NEUER SPIELER und du bekommst einen Preis! Dieses Ticket funktioniert nur für dich, also verschenke es nicht! 18771=Ein kompletter Satz Waldläufer-Rüstung. +// [18800-19000] AOS-Eigenschaften +18800=%i% Verbandsheilungsbonus } EOF diff --git a/data/dictionaries/dictionary.ITA b/data/dictionaries/dictionary.ITA index f9e9d1851..c47a0a19c 100644 --- a/data/dictionaries/dictionary.ITA +++ b/data/dictionaries/dictionary.ITA @@ -5149,5 +5149,7 @@ 18769=I coloranti e la vasca per i coloranti sono stati messi nel tuo zaino. 18770=Questo è mezzo biglietto premio! Fai doppio clic su questo biglietto e punta su qualsiasi altro biglietto con la dicitura NUOVO GIOCATORE per ottenere un premio! Questo biglietto funzionerà solo per te, quindi non darlo via! 18771=Un set completo di armatura da ranger. +// [18800-19000] Proprietà AOS +18800=%i% Bonus di guarigione della benda } EOF diff --git a/data/dictionaries/dictionary.POL b/data/dictionaries/dictionary.POL index 292144cb4..dbdc431e2 100644 --- a/data/dictionaries/dictionary.POL +++ b/data/dictionaries/dictionary.POL @@ -5149,5 +5149,7 @@ 18769=Barwniki i pojemnik na barwniki zostały umieszczone w twoim plecaku. 18770=To jest połowa biletu z nagrodą! Kliknij dwukrotnie ten bilet i wybierz dowolny inny bilet oznaczony jako NOWY GRACZ, a otrzymasz nagrodę! Ten bilet będzie działał tylko dla CIEBIE, więc go nie rozdawaj! 18771=Pełny zestaw zbroi strażnika. +// [18800-19000] Właściwości AOS +18800=%i% Premia do leczenia bandażem } EOF diff --git a/data/dictionaries/dictionary.PTG b/data/dictionaries/dictionary.PTG index efd386c00..81b5da2af 100644 --- a/data/dictionaries/dictionary.PTG +++ b/data/dictionaries/dictionary.PTG @@ -5149,5 +5149,7 @@ 18769=As tinturas e o tubo de tinturas foram colocados na tua mochila. 18770=Isto é metade de um bilhete premiado! Faz duplo clique neste bilhete e aponta para qualquer outro bilhete marcado NOVO JOGADOR e ganha um prémio! Este bilhete só serve para ti, por isso não o dês de mão beijada! 18771=Um conjunto completo de armadura de guarda-florestal. +// [18800-19000] Propriedades AOS +18800=%i% Bônus de cura de curativo } EOF diff --git a/data/dictionaries/dictionary.SPA b/data/dictionaries/dictionary.SPA index 6300de916..2c82493bd 100644 --- a/data/dictionaries/dictionary.SPA +++ b/data/dictionaries/dictionary.SPA @@ -5149,5 +5149,7 @@ 18769=Los tintes y la tina de tintes han sido colocados en tu mochila. 18770=¡Este es medio billete de premio! Haga doble clic en este billete y apunte a cualquier otro billete marcado como NUEVO JUGADOR ¡y consiga un premio! Este billete sólo te servirá a TI, ¡así que no lo regales! 18771=Un conjunto completo de armadura de guardabosques. +// [18800-19000] Propiedades AOS +18800=%i% Bonificación de curación de vendaje } EOF diff --git a/data/dictionaries/dictionary.ZRO b/data/dictionaries/dictionary.ZRO index 5c6792765..aca5a8424 100644 --- a/data/dictionaries/dictionary.ZRO +++ b/data/dictionaries/dictionary.ZRO @@ -5143,5 +5143,7 @@ 18769=The dyes and dye tub have been placed in your backpack. 18770=This is half a prize ticket! Double-click this ticket and target any other ticket marked NEW PLAYER and get a prize! This ticket will only work for YOU, so don’t give it away! 18771=A full set of ranger armor. +// [18800-19000] AOS properties +18800=%i% Bandage Healing Bonus } EOF diff --git a/data/js/item/equip_effects/bandagehealingbonus.js b/data/js/item/equip_effects/bandagehealingbonus.js index 0c1248671..eca48b330 100644 --- a/data/js/item/equip_effects/bandagehealingbonus.js +++ b/data/js/item/equip_effects/bandagehealingbonus.js @@ -1,6 +1,6 @@ function onTooltip( equipment, pSocket ) { var healingBonus = parseInt( equipment.GetTag( "healingBonus" )); - var tooltipText = healingBonus + "% Bandage Healing Bonus"; - return tooltipText; + var tooltipText = GetDictionaryEntry(18800, pSocket.language ); // %i% Bandage Healing Bonus + return tooltipText.replace( /%i/gi, healingBonus ); } \ No newline at end of file From 80ef79d694f05d3f0a7a13f777ad41ff97c9e1d7 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Mon, 30 Oct 2023 19:27:30 -0500 Subject: [PATCH 09/37] Spell Channeling Property --- source/CPacketSend.cpp | 5 +++++ source/cPlayerAction.cpp | 3 +++ source/enums.h | 1 + source/magic.cpp | 2 +- 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/source/CPacketSend.cpp b/source/CPacketSend.cpp index 7d3963143..f01b2ff6b 100644 --- a/source/CPacketSend.cpp +++ b/source/CPacketSend.cpp @@ -7465,6 +7465,11 @@ void CPToolTip::CopyItemData( CItem& cItem, size_t &totalStringLen, bool addAmou tempEntry.ourText = oldstrutil::number( cItem.GetTempVar( CITV_MOREZ )); FinalizeData( tempEntry, totalStringLen ); } + if( cItem.GetType() == IT_SPELLCHANNELING ) + { + tempEntry.stringNum = 1060482; // spell channeling + FinalizeData( tempEntry, totalStringLen ); + } bool hideMagicItemStats = cwmWorldState->ServerData()->HideStatsForUnknownMagicItems(); if( !cwmWorldState->ServerData()->BasicTooltipsOnly() && ( !hideMagicItemStats || ( hideMagicItemStats && ( !cItem.GetName2().empty() && cItem.GetName2() == "#")))) diff --git a/source/cPlayerAction.cpp b/source/cPlayerAction.cpp index 9fc561431..d667a6598 100644 --- a/source/cPlayerAction.cpp +++ b/source/cPlayerAction.cpp @@ -2853,6 +2853,8 @@ bool HandleDoubleClickTypes( CSocket *mSock, CChar *mChar, CItem *iUsed, ItemTyp } } return true; + case IT_SPELLCHANNELING: // Spell Channeling + return true; case IT_MAP: // Map { CPMapMessage m1; @@ -3389,6 +3391,7 @@ void InitTagToItemType( void ) tagToItemType["CLOCK"] = IT_CLOCK; tagToItemType["SEXTANT"] = IT_SEXTANT; tagToItemType["HAIRDYE"] = IT_HAIRDYE; + tagToItemType["SPELLCHANNELING"] = IT_SPELLCHANNELING; } ItemTypes FindItemTypeFromTag( const std::string &strToFind ) diff --git a/source/enums.h b/source/enums.h index e38028176..75e8786ae 100644 --- a/source/enums.h +++ b/source/enums.h @@ -530,6 +530,7 @@ enum ItemTypes IT_ZEROKILLSGATE = 111, IT_PLANK = 117, IT_FIREWORKSWAND = 118, + IT_SPELLCHANNELING = 119, IT_ESCORTNPCSPAWNER = 125, IT_RENAMEDEED = 186, IT_LEATHERREPAIRTOOL = 190, diff --git a/source/magic.cpp b/source/magic.cpp index 9d4aa2dec..daf0bf3e4 100644 --- a/source/magic.cpp +++ b/source/magic.cpp @@ -4114,7 +4114,7 @@ bool CMagic::SelectSpell( CSocket *mSock, SI32 num ) { CItem *itemRHand = mChar->GetItemAtLayer( IL_RIGHTHAND ); CItem *itemLHand = mChar->GetItemAtLayer( IL_LEFTHAND ); - if( itemLHand != nullptr || ( itemRHand != nullptr && itemRHand->GetType() != IT_SPELLBOOK )) + if(( itemLHand != nullptr && itemLHand->GetType() != IT_SPELLCHANNELING ) || ( itemRHand != nullptr && itemRHand->GetType() != IT_SPELLBOOK && itemRHand->GetType() != IT_SPELLCHANNELING )) { mSock->SysMessage( 708 ); // You cannot cast with a weapon equipped. mChar->StopSpell(); From 27b53e32d6e45bd1e75d37021fa44f5fa388f56c Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Thu, 9 Nov 2023 21:57:15 -0600 Subject: [PATCH 10/37] T2A Weapons and Armors This is adding T2A Weapons and Armors --- .../gear/armor/armor_sets/ranger_armor.dfn | 5 + .../items/gear/armor/base_armor_t2a.dfn | 1913 +++++++++++++++++ .../armor/gargish_armor/gargish_cloth.dfn | 9 + .../armor/gargish_armor/gargish_leather.dfn | 9 + .../armor/gargish_armor/gargish_plate.dfn | 8 + .../armor/gargish_armor/gargish_stone.dfn | 8 + .../gear/armor/leather_armor/leather.dfn | 10 + .../armor/leather_armor/ninja_leather.dfn | 5 + .../armor/leather_armor/samurai_leather.dfn | 6 + .../leather_armor/samurai_studded_leather.dfn | 5 + .../armor/leather_armor/studded_Leather.dfn | 7 + .../gear/armor/metal_armor/agapite_armor.dfn | 41 + .../gear/armor/metal_armor/bronze_armor.dfn | 41 + .../gear/armor/metal_armor/copper_armor.dfn | 41 + .../armor/metal_armor/dullcopper_armor.dfn | 41 + .../gear/armor/metal_armor/gold_armor.dfn | 67 +- .../gear/armor/metal_armor/iron_armor.dfn | 52 + .../gear/armor/metal_armor/shadow_armor.dfn | 41 + .../gear/armor/metal_armor/valorite_armor.dfn | 41 + .../gear/armor/metal_armor/verite_armor.dfn | 41 + .../items/gear/armor/other_armor/bone.dfn | 6 + .../items/gear/armor/other_armor/dragon.dfn | 5 + .../items/gear/armor/other_armor/glass.dfn | 1 + .../items/gear/armor/other_armor/hide.dfn | 11 + .../items/gear/armor/other_armor/leaf.dfn | 7 + .../items/gear/armor/other_armor/pelt.dfn | 8 + .../items/gear/armor/other_armor/wood.dfn | 9 + data/dfndata/items/gear/weapons/archery.dfn | 8 + data/dfndata/items/gear/weapons/axes.dfn | 11 + data/dfndata/items/gear/weapons/fencing.dfn | 23 + .../items/gear/weapons/knives_daggers.dfn | 7 + .../items/gear/weapons/maces_hammers.dfn | 19 + .../items/gear/weapons/missile_weapons.dfn | 1 + .../items/gear/weapons/staves_polearms.dfn | 16 + data/dfndata/items/gear/weapons/swords.dfn | 27 + data/dfndata/items/gear/weapons/throwing.dfn | 3 + data/dfndata/items/gear/weapons/wands.dfn | 1 + .../gear/weapons/weapons_t2a/archery_t2a.dfn | 101 + .../gear/weapons/weapons_t2a/axes_t2a.dfn | 143 ++ .../gear/weapons/weapons_t2a/fencing_t2a.dfn | 305 +++ .../weapons_t2a/knives_daggers_t2a.dfn | 95 + .../weapons/weapons_t2a/maces_hammers_t2a.dfn | 255 +++ .../weapons_t2a/missile_weapons_t2a.dfn | 9 + .../weapons_t2a/staves_polearms_t2a.dfn | 209 ++ .../gear/weapons/weapons_t2a/swords_t2a.dfn | 348 +++ .../gear/weapons/weapons_t2a/throwing_t2a.dfn | 45 + .../gear/weapons/weapons_t2a/wands_t2a.dfn | 17 + 47 files changed, 4068 insertions(+), 13 deletions(-) create mode 100644 data/dfndata/items/gear/armor/base_armor_t2a.dfn create mode 100644 data/dfndata/items/gear/weapons/weapons_t2a/archery_t2a.dfn create mode 100644 data/dfndata/items/gear/weapons/weapons_t2a/axes_t2a.dfn create mode 100644 data/dfndata/items/gear/weapons/weapons_t2a/fencing_t2a.dfn create mode 100644 data/dfndata/items/gear/weapons/weapons_t2a/knives_daggers_t2a.dfn create mode 100644 data/dfndata/items/gear/weapons/weapons_t2a/maces_hammers_t2a.dfn create mode 100644 data/dfndata/items/gear/weapons/weapons_t2a/missile_weapons_t2a.dfn create mode 100644 data/dfndata/items/gear/weapons/weapons_t2a/staves_polearms_t2a.dfn create mode 100644 data/dfndata/items/gear/weapons/weapons_t2a/swords_t2a.dfn create mode 100644 data/dfndata/items/gear/weapons/weapons_t2a/throwing_t2a.dfn create mode 100644 data/dfndata/items/gear/weapons/weapons_t2a/wands_t2a.dfn diff --git a/data/dfndata/items/gear/armor/armor_sets/ranger_armor.dfn b/data/dfndata/items/gear/armor/armor_sets/ranger_armor.dfn index 7f8c7e665..2320bc184 100644 --- a/data/dfndata/items/gear/armor/armor_sets/ranger_armor.dfn +++ b/data/dfndata/items/gear/armor/armor_sets/ranger_armor.dfn @@ -1,6 +1,7 @@ // Studded Sleeves - E/W [0x13d4-ranger] { +gett2a=0x13d4_t2a getlbr=0x13d4_lbr getaos=0x13d4_aos gettol=0x13d4_tol @@ -26,6 +27,7 @@ get=0x13d4-ranger 0x13dc-ranger // Studded Gloves - E/W [0x13d5-ranger] { +gett2a=0x13d5_t2a getlbr=0x13d5_lbr getaos=0x13d5_aos gettol=0x13d5_tol @@ -51,6 +53,7 @@ get=0x13d5-ranger 0x13dd-ranger // Studded Gorget [0x13d6-ranger] { +gett2a=0x13d6_t2a getlbr=0x13d6_lbr getaos=0x13d6_aos gettol=0x13d6_tol @@ -69,6 +72,7 @@ get=0x13d6-ranger // Studded Leggings - E/W [0x13da-ranger] { +gett2a=0x13da_t2a getlbr=0x13da_lbr getaos=0x13da_aos gettol=0x13da_tol @@ -94,6 +98,7 @@ get=0x13da-ranger 0x13e1-ranger // Studded Tunic - E/W [0x13db-ranger] { +gett2a=0x13db_t2a getlbr=0x13db_lbr getaos=0x13db_aos gettol=0x13db_tol diff --git a/data/dfndata/items/gear/armor/base_armor_t2a.dfn b/data/dfndata/items/gear/armor/base_armor_t2a.dfn new file mode 100644 index 000000000..bbff5479a --- /dev/null +++ b/data/dfndata/items/gear/armor/base_armor_t2a.dfn @@ -0,0 +1,1913 @@ + +// Ringmail Gloves - T2A stats (default) +[0x13eb_t2a] +{ +get=base_ring_gloves +def=22 +dexadd=-1 +hp=41 51 +str=20 +value=122 61 +weight=200 +} + +// Ringmail Tunic - T2A stats (default) +[0x13ec_t2a] +{ +get=base_ring_tunic +def=22 +dexadd=-2 +hp=41 51 +str=20 +value=218 109 +weight=1500 +} + +// Ringmail Sleeves - T2A stats (default) +[0x13ee_t2a] +{ +get=base_ring_sleeves +def=22 +dexadd=-1 +hp=41 51 +str=20 +value=147 73 +weight=1500 +} + +// Ringmail Leggings - T2A stats (default) +[0x13f0_t2a] +{ +get=base_ring_leggings +def=22 +dexadd=-1 +hp=41 51 +str=20 +value=147 73 +weight=1500 +} + +// Chainmail + +// Chainmail Coif - T2A stats (default) +[0x13bb_t2a] +{ +get=base_chain_coif +def=28 +hp=36 44 +str=20 +value=130 65 +weight=700 +} + +// Chainmail Leggings - T2A stats (default) +[0x13be_t2a] +{ +get=base_chain_leggings +def=28 +dexadd=-3 +hp=46 58 +str=20 +value=166 83 +weight=700 +} + +// Chainmail Tunic - T2A stats (default) +[0x13bf_t2a] +{ +get=base_chain_tunic +def=28 +dexadd=-5 +hp=46 58 +str=20 +value=207 103 +weight=700 +} + +// Plate Armor + +// Female Plate - T2A stats (default) +[0x1c04_t2a] +{ +get=base_fem_plate +def=30 +dexadd=-5 +hp=51 65 +str=45 +value=245 122 +weight=400 +} + +// Platemail Arms - T2A stats (default) +[0x1410_t2a] +{ +get=base_plate_arms +def=40 +dexadd=-2 +hp=51 65 +str=40 +value=181 90 +weight=500 +} + +// Platemail Leggings - T2A stats (default) +[0x1411_t2a] +{ +get=base_plate_leggings +def=40 +dexadd=-6 +hp=51 65 +str=60 +value=218 109 +weight=700 +} + +// Platemail Gorget - T2A stats (default) +[0x1413_t2a] +{ +get=base_plate_gorget +def=40 +dexadd=-1 +hp=40 65 +str=30 +value=124 70 +weight=200 +} + +// Platemail Gloves - T2A stats (default) +[0x1414_t2a] +{ +get=base_plate_gloves +def=40 +dexadd=-2 +hp=51 65 +str=30 +value=145 72 +weight=200 +} + +// Platemail Chest - T2A stats (default) +[0x1415_t2a] +{ +get=base_plate_chest +def=40 +dexadd=-8 +hp=51 65 +str=60 +value=273 136 +weight=1000 +} + +// Leather + +// Leather Sleeves - T2A stats (default) +[0x13c5_t2a] +{ +get=base_leather_sleeves +def=13 +hp=31 37 +str=10 +value=80 40 +weight=200 +} + +// Leather Gloves - T2A stats (default) +[0x13c6_t2a] +{ +get=base_leather_gloves +def=13 +hp=31 37 +str=10 +value=60 30 +weight=100 +} + +// Leather Gorget - T2A stats (default) +[0x13c7_t2a] +{ +get=base_leather_gorget +def=13 +hp=13 37 +str=10 +value=74 37 +weight=200 +} + +// Leather Cap - T2A stats (default) +[0x1db9_t2a] +{ +get=base_leather_cap +def=13 +hp=31 37 +str=15 +value=68 31 +weight=100 +} + +// Leather Leggings - T2A stats (default) +[0x13cb_t2a] +{ +get=base_leather_leggings +def=13 +hp=31 37 +str=10 +value=80 40 +weight=400 +} + +// Leather Tunic - T2A stats (default) +[0x13cc_t2a] +{ +get=base_leather_tunic +def=13 +hp=31 37 +str=15 +value=101 52 +weight=700 +} + +// Leather Shorts (Female) - T2A stats (default) +[0x1c00_t2a] +{ +get=base_leather_shorts +def=13 +hp=31 37 +str=10 +value=86 43 +weight=300 +} + +// Leather Armor (Female) - T2A stats (default) +[0x1c06_t2a] +{ +get=base_leather_armor +def=13 +hp=31 37 +str=15 +value=116 58 +weight=100 +} + +// Leather Skirt (Female) - T2A stats (default) +[0x1c08_t2a] +{ +get=base_leather_skirt +def=13 +hp=31 37 +str=10 +value=87 43 +weight=100 +} + +// Leather Bustier (Female) - T2A stats (default) +[0x1c0a_t2a] +{ +get=base_leather_bustier +def=13 +hp=31 37 +str=10 +value=97 48 +weight=100 +} + +// Studded Leather + +// Studded Sleeves - T2A stats (default) +[0x13d4_t2a] +{ +get=base_studded_sleeves +def=16 +hp=36 44 +str=25 +value=87 43 +weight=400 +} + +// Studded Gloves - T2A stats (default) +[0x13d5_t2a] +{ +get=base_studded_gloves +def=16 +hp=36 44 +str=25 +value=79 39 +weight=100 +} + +// Studded Gorget - T2A stats (default) +[0x13d6_t2a] +{ +get=base_studded_gorget +def=16 +hp=16 44 +str=25 +value=73 36 +weight=100 +} + +// Studded Leggings - T2A stats (default) +[0x13da_t2a] +{ +get=base_studded_leggings +def=16 +hp=36 44 +str=35 +value=103 51 +weight=300 +} + +// Studded Tunic - T2A stats (default) +[0x13db_t2a] +{ +get=base_studded_tunic +def=16 +hp=36 44 +str=35 +value=128 64 +weight=700 +} + +// Studded Armor (Female) - T2A stats (default) +[0x1c02_t2a] +{ +get=base_studded_armor +def=16 +hp=101 115 +str=35 +value=142 71 +weight=600 +} + +// Studded Bustier (Female) - T2A stats (default) +[0x1c0c_t2a] +{ +get=base_studded_bustier +def=16 +hp=101 115 +str=25 +value=120 60 +weight=100 +} + +// Bone Armor + +// Bone Arms - T2A stats (default) +[0x144e_t2a] +{ +get=base_bone_arms +def=30 +dexadd=-2 +hp=26 30 +str=40 +value=156 78 +weight=200 +} + +// Bone Armor - T2A stats (default) +[0x144f_t2a] +{ +get=base_bone_armor +def=30 +dexadd=-6 +hp=26 30 +str=40 +value=234 117 +weight=600 +} + +// Bone Gauntlets - T2A stats (default) +[0x1450_t2a] +{ +get=base_bone_gauntlets +def=30 +dexadd=-1 +hp=26 30 +str=40 +value=133 66 +weight=200 +} + +// Bone Helm - T2A stats (default) +[0x1451_t2a] +{ +get=base_bone_helm +def=30 +hp=26 30 +str=40 +value=157 71 +weight=300 +} + +// Bone Legs - T2A stats (default) +[0x1452_t2a] +{ +get=base_bone_legs +def=30 +dexadd=-4 +hp=26 30 +str=40 +value=179 89 +weight=300 +} + +// Orc Helm - T2A stats (default) +[0x1f0b_t2a] +{ +get=base_orc_helm +def=20 +hp=31 70 +value=105 48 +weight=500 +} + +// Helmets + +// Close Helm - T2A stats (default) +[0x1408_t2a] +{ +get=base_close_helm +def=30 +hp=46 58 +str=40 +value=145 72 +weight=500 +} + +// Helmet - T2A stats (default) +[0x140a_t2a] +{ +get=base_helmet +def=30 +hp=46 58 +str=40 +value=116 58 +weight=500 +} + +// Bascinet - T2A stats (default) +[0x140c_t2a] +{ +get=base_bascinet +def=18 +hp=101 115 +str=10 +value=127 46 +weight=500 +} + +// Norse Helm - T2A stats (default) +[0x140e_t2a] +{ +get=base_norse_helm +def=30 +hp=46 58 +str=40 +value=145 53 +weight=500 +} + +// Plate Helm - T2A stats (default) +[0x1412_t2a] +{ +get=base_plate_helm +def=40 +dexadd=-1 +hp=46 58 +str=40 +value=170 85 +weight=500 +} + +// SE Plate Armor + +// Heavy Platemail Jingasa - T2A stats (default) +[0x2777_t2a] +{ +get=base_heavy_platemail_jingasa +def=50 +dexadd=-1 +hp=59 78 +str=40 +value=555 285 +weight=500 +} + +// Decorative Platemail Kabuto - T2A stats (default) +[0x2778_t2a] +{ +get=base_decorative_platemail_kabuto +def=43 +dexadd=-1 +hp=65 83 +str=50 +value=694 352 +weight=700 +} + +// Platemail Do - T2A stats (default) +[0x277d_t2a] +{ +get=base_platemail_do +def=38 +dexadd=-8 +hp=79 86 +str=55 +value=426 227 +weight=1100 +} + +// Platemail Hiro Sode - T2A stats (default) +[0x2780_t2a] +{ +get=base_platemail_hiro_sode +def=38 +dexadd=-2 +hp=57 76 +str=50 +value=206 103 +weight=200 +} + +// Light Platemail Jingasa - T2A stats (default) +[0x2781_t2a] +{ +get=base_light_platemail_jingasa +def=50 +dexadd=-1 +hp=65 67 +str=51 +value=267 121 +weight=500 +} + +// Small Platemail Jingasa - T2A stats (default) +[0x2784_t2a] +{ +get=base_small_platemail_jingasa +def=50 +dexadd=-1 +hp=65 67 +str=40 +value=267 121 +weight=500 +} + +// Platemail Battle Kabuto - T2A stats (default) +[0x2785_t2a] +{ +get=base_platemail_battle_kabuto +def=43 +dexadd=-1 +hp=71 72 +str=50 +value=225 102 +weight=700 +} + +// Platemail Suneate - T2A stats (default) +[0x2788_t2a] +{ +get=base_platemail_suneate +def=38 +dexadd=-6 +hp=57 67 +str=55 +value=204 90 +weight=700 +} + +// Platemail Kabuto - T2A stats (default) +[0x2789_t2a] +{ +get=base_platemail_kabuto +def=43 +dexadd=-1 +hp=71 72 +str=50 +value=225 102 +weight=700 +} + +// Kabuto - T2A stats (default) +[0x236c_t2a] +{ +get=base_kabuto +def=36 +dexadd=-1 +hp=45 53 +str=55 +value=188 86 +weight=500 +} + +// Platemail Haidate - T2A stats (default) +[0x278d_t2a] +{ +get=base_platemail_haidate +def=38 +dexadd=-6 +hp=57 67 +str=55 +value=214 95 +weight=700 +} + +// Chainmail Hatsuburi - T2A stats (default) +[0x2774_t2a] +{ +get=base_chainmail_hatsuburi +def=36 +hp=65 83 +str=35 +value=555 285 +weight=800 +} + +// Platemail Hatsuburi - T2A stats (default) +[0x2775_t2a] +{ +get=base_platemail_hatsuburi +def=36 +dexadd=-1 +hp=65 83 +str=45 +value=555 285 +weight=500 +} + +// Platemail Mempo - T2A stats (default) +[0x2779_t2a] +{ +get=base_platemail_mempo +def=38 +dexadd=-1 +hp=42 72 +str=40 +value=166 87 +weight=300 +} + +// SE Ninja Leather + +// Leather Ninja Hood - T2A stats (default) +[0x278e_t2a] +{ +get=base_leather_ninja_hood +def=15 +hp=30 50 +str=10 +value=73 33 +weight=200 +} + +// Leather Ninja Belt - T2A stats (default) +[0x2790_t2a] +{ +get=base_leather_ninja_belt +str=10 +value=36 16 +weight=100 +} + +// Leather Ninja Pants - T2A stats (default) +[0x2791_t2a] +{ +get=base_leather_ninja_pants +def=15 +hp=41 51 +str=10 +value=45 20 +weight=300 +} + +// Leather Ninja Mitts - T2A stats (default) +[0x2792_t2a] +{ +get=base_leather_ninja_mitts +def=15 +hp=26 26 +str=10 +value=71 35 +weight=200 +} + +// Leather Ninja Jacket - T2A stats (default) +[0x2793_t2a] +{ +get=base_leather_ninja_jacket +def=15 +hp=40 49 +str=10 +value=70 38 +weight=500 +} + +// SE Samurai Leather + +// Leather Jingasa - T2A stats (default) +[0x2776_t2a] +{ +get=base_leather_jingasa +def=21 +hp=24 33 +str=20 +value=80 37 +weight=300 +} + +// Leather Mempo - T2A stats (default) +[0x277a_t2a] +{ +get=base_leather_mempo +def=15 +hp=25 41 +str=25 +value=64 34 +weight=200 +} + +// Leather Do - T2A stats (default) +[0x277b_t2a] +{ +get=base_leather_do +def=15 +hp=46 55 +str=30 +value=120 62 +weight=600 +} + +// Leather Hiro Sode - T2A stats (default) +[0x277e_t2a] +{ +get=base_leather_hiro_sode +def=15 +hp=41 51 +str=20 +value=45 21 +weight=100 +} + +// Leather Suneate - T2A stats (default) +[0x2786_t2a] +{ +get=base_leather_suneate +def=15 +hp=26 41 +str=15 +value=50 21 +weight=400 +} + +// Leather Haidate - T2A stats (default) +[0x278a_t2a] +{ +get=base_leather_haidate +def=15 +hp=31 41 +str=15 +value=49 23 +weight=400 +} + +// SE Samurai Studded Armor + +// Studded Do - T2A stats (default) +[0x277c_t2a] +{ +get=base_studded_do +def=15 +hp=53 61 +str=35 +value=179 97 +weight=800 +} + +// Studded Hiro Sode - T2A stats (default) +[0x277f_t2a] +{ +get=base_studded_hiro_sode +def=15 +hp=46 56 +str=20 +value=68 30 +weight=100 +} + +// Studded Suneate - T2A stats (default) +[0x2787_t2a] +{ +get=base_studded_suneate +def=15 +hp=36 51 +str=20 +value=71 32 +weight=500 +} + +// Studded Haidate - T2A stats (default) +[0x278b_t2a] +{ +get=base_studded_haidate +def=15 +hp=36 46 +str=20 +value=69 30 +weight=500 +} + +// Studded Mempo - T2A stats (default) +[0x279d_t2a] +{ +get=base_studded_mempo +def=15 +hp=21 41 +str=25 +value=66 32 +weight=200 +} + +// ML Leaf Armor + +// Leaf Arms - T2A stats (default) +[0x2fc8_t2a] +{ +get=base_leaf_arms +def=16 +hp=31 41 +str=10 +value=71 35 +weight=200 +} + +// Leaf Tunic - T2A stats (default) +[0x2fc5_t2a] +{ +get=base_leaf_tunic +def=16 +hp=40 49 +str=15 +value=117 59 +weight=200 +} + +// Leaf Armor (Female) - T2A stats (default) +[0x2fcb_t2a] +{ +get=base_leaf_armor +def=16 +hp=40 49 +str=15 +value=117 59 +weight=200 +} + +// Leaf Gloves - T2A stats (default) +[0x2fc6_t2a] +{ +get=base_leaf_gloves +def=16 +hp=31 39 +str=10 +value=71 35 +weight=200 +} + +// Leaf Gorget - T2A stats (default) +[0x2fc7_t2a] +{ +get=base_leaf_gorget +def=16 +hp=21 41 +str=10 +value=64 34 +weight=200 +} + +// Leaf Leggings - T2A stats (default) +[0x2fc9_t2a] +{ +get=base_leaf_leggings +def=16 +hp=31 41 +str=15 +value=90 45 +weight=200 +} + +// Leaf Tonlet - T2A stats (default) +[0x2fca_t2a] +{ +get=base_leaf_tonlet +def=16 +hp=31 41 +str=10 +value=90 45 +weight=200 +} + +// ML Hide Armor + +// Hide Pauldrons - T2A stats (default) +[0x2b77_t2a] +{ +get=base_hide_pauldrons +def=22 +hp=36 46 +str=15 +value=107 54 +weight=400 +} + +// Hide Tunic - T2A stats (default) +[0x2b74_t2a] +{ +get=base_hide_tunic +def=22 +hp=46 55 +str=20 +value=172 86 +weight=600 +} + +// Hide Armor (Female) - T2A stats (default) +[0x2b79_t2a] +{ +get=base_hide_armor +def=22 +hp=46 55 +str=20 +value=172 86 +weight=600 +} + +// Hide Gloves - T2A stats (default) +[0x2b75_t2a] +{ +get=base_hide_gloves +def=22 +hp=36 44 +str=10 +value=107 53 +weight=200 +} + +// Hide Pants - T2A stats (default) +[0x2b78_t2a] +{ +get=base_hide_pants +def=22 +hp=36 46 +str=20 +value=131 65 +weight=500 +} + +// Hide Gorget - T2A stats (default) +[0x2b76_t2a] +{ +get=base_hide_gorget +def=22 +hp=25 46 +str=15 +value=98 52 +weight=300 +} + +// Dragon Armor + +// Dragon Sleeves - T2A stats (default) +[0x2657_t2a] +{ +get=base_dragon_sleeves +def=22 +dexadd=-1 +hp=57 76 +str=50 +value=98 49 +weight=200 +} + +// Dragon Breastplate - T2A stats (default) +[0x2641_t2a] +{ +get=base_dragon_breastplate +def=22 +dexadd=-5 +hp=73 92 +str=50 +value=172 86 +weight=1100 +} + +// Dragon Gloves - T2A stats (default) +[0x2643_t2a] +{ +get=base_dragon_gloves +def=22 +dexadd=-1 +hp=57 74 +str=50 +value=98 49 +weight=200 +} + +// Dragon Helm - T2A stats (default) +[0x2645_t2a] +{ +get=base_dragon_helm +def=22 +hp=65 83 +str=55 +value=115 52 +weight=500 +} + +// Dragon Leggings - T2A stats (default) +[0x2647_t2a] +{ +get=base_dragon_leggings +def=22 +dexadd=-5 +hp=57 77 +str=50 +value=131 65 +weight=600 +} + +// ML Woodland Armor + +// Woodland Arms - T2A stats (default) +[0x2b6c_t2a] +{ +get=base_woodland_arms +def=40 +dexadd=-2 +hp=51 66 +str=55 +value=179 89 +weight=500 +} + +// Woodland Chest - T2A stats (default) +[0x2b67_t2a] +{ +get=base_woodland_chest +def=40 +dexadd=-4 +hp=66 80 +str=65 +value=313 156 +weight=800 +} + +// Woodland Armor (Female) - T2A stats (default) +[0x2b6d_t2a] +{ +get=base_woodland_armor +def=40 +dexadd=-4 +hp=66 80 +str=65 +value=313 156 +weight=800 +} + +// Woodland Gauntlet - T2A stats (default) +[0x2b6a_t2a] +{ +get=base_woodland_gauntlets +def=40 +dexadd=-2 +hp=51 64 +str=45 +value=178 88 +weight=200 +} + +// Woodland Leggings - T2A stats (default) +[0x2b6b_t2a] +{ +get=base_woodland_leggings +def=40 +dexadd=-4 +hp=51 67 +str=60 +value=239 119 +weight=800 +} + +// Woodland Gorget - T2A stats (default) +[0x2b69_t2a] +{ +get=base_woodland_gorget +def=40 +dexadd=-1 +hp=35 67 +str=40 +value=170 90 +weight=300 +} + +// ML Helmets + +// Circlet - T2A stats (default) +[0x2b6e_t2a] +{ +get=base_circlet +def=7 +hp=59 72 +str=10 +value=37 17 +weight=200 +} + +// Royal Circlet - T2A stats (default) +[0x2b6f_t2a] +{ +get=base_royal_circlet +def=7 +hp=24 39 +str=10 +value=37 17 +weight=200 +} + +// Gemmed Circlet - T2A stats (default) +[0x2b70_t2a] +{ +get=base_gemmed_circlet +def=7 +hp=24 39 +str=10 +value=37 17 +weight=200 +} + +// Raven Helm - T2A stats (default) +[0x2b71_t2a] +{ +get=base_raven_helm +def=36 +hp=36 59 +str=20 +value=188 86 +weight=500 +} + +// Vulture Helm - T2A stats (default) +[0x2b72_t2a] +{ +get=base_vulture_helm +def=36 +hp=59 72 +str=20 +value=188 86 +weight=500 +} + +// Winged Helm - T2A stats (default) +[0x2b73_t2a] +{ +get=base_winged_helm +def=36 +hp=53 61 +str=20 +value=188 86 +weight=500 +} + +// Elven Glasses - T2A stats (default) +[0x2fb8_t2a] +{ +get=base_elven_glasses +def=14 +hp=43 53 +str=35 +value=73 33 +weight=200 +} + +// SA Gargoyle Armor + +// Gargish Cloth Arms - T2A stats (default) +[0x0404_t2a] +{ +get=base_gargish_cloth_arms +def=38 +hp=41 51 +str=15 +value=57 28 +weight=200 +} + +// Gargish Cloth Arms (Female) - T2A stats (default) +[0x0403_t2a] +{ +get=base_female_gargish_cloth_arms +def=38 +hp=41 51 +str=15 +value=57 28 +weight=200 +} + +// Gargish Cloth Chest - T2A stats (default) +[0x0406_t2a] +{ +get=base_gargish_cloth_chest +def=38 +hp=53 61 +str=20 +value=107 62 +weight=200 +} + +// Female Gargish Cloth Chest - T2A stats (default) +[0x0405_t2a] +{ +get=base_female_gargish_cloth_chest +def=38 +hp=53 61 +str=20 +value=114 59 +weight=200 +} + +// Gargish Cloth Leggings - T2A stats (default) +[0x040a_t2a] +{ +get=base_gargish_cloth_leggings +def=38 +hp=41 51 +str=15 +value=60 26 +weight=200 +} + +// Female Gargish Cloth Leggings - T2A stats (default) +[0x0409_t2a] +{ +get=base_female_gargish_cloth_leggings +def=38 +hp=41 51 +str=15 +value=65 24 +weight=200 +} + +// Gargish Cloth Kilt - T2A stats (default) +[0x0408_t2a] +{ +get=base_gargish_cloth_kilt +def=38 +hp=41 58 +str=15 +value=51 26 +weight=200 +} + +// Gargish Cloth Kilt (Female) - T2A stats (default) +[0x0407_t2a] +{ +get=base_female_gargish_cloth_kilt +def=38 +hp=41 51 +str=15 +value=52 24 +weight=200 +} + +// Gargish Cloth Wing Armor - T2A stats (default) +[0x45a4_t2a] +{ +get=base_gargish_cloth_wing_armor +str=10 +weight=200 +} + +// SA Gargish Leather Armor + +// Gargish Leather Arms - T2A stats (default) +[0x0302_t2a] +{ +get=base_gargish_leather_arms +def=40 +hp=31 51 +str=20 +value=74 38 +weight=400 +} + +// Female Gargish Leather Arms - T2A stats (default) +[0x0301_t2a] +{ +get=base_gargish_leather_arms +def=40 +hp=31 51 +str=20 +value=68 39 +weight=400 +} + +// Gargish Leather Chest - T2A stats (default) +[0x0304_t2a] +{ +get=base_gargish_leather_chest +def=40 +hp=40 61 +str=20 +value=106 64 +weight=800 +} + +// Female Gargish Leather Chest - T2A stats (default) +[0x0303_t2a] +{ +get=base_female_gargish_leather_chest +def=40 +hp=40 61 +str=20 +value=106 64 +weight=800 +} + +// Gargish Leather Leggings - T2A stats (default) +[0x0306_t2a] +{ +get=base_gargish_leather_leggings +def=40 +hp=31 51 +str=15 +value=61 27 +weight=500 +} + +// Female Gargish Leather Leggings - T2A stats (default) +[0x0305_t2a] +{ +get=base_female_gargish_leather_leggings +def=40 +hp=31 51 +str=15 +value=61 27 +weight=500 +} + +// Gargish Leather Kilt - T2A stats (default) +[0x0311_t2a] +{ +get=base_gargish_leather_kilt +def=40 +hp=31 51 +str=20 +value=77 39 +weight=500 +} + +// Female Gargish Leather Kilt - T2A stats (default) +[0x0310_t2a] +{ +get=base_female_gargish_leather_kilt +def=40 +hp=31 51 +str=20 +value=84 37 +weight=500 +} + +// Gargish Leather Wing Armor - T2A stats (default) +[0x457e_t2a] +{ +get=base_gargish_leather_wing_armor +str=10 +weight=200 +} + +// SA Gargish Plate Armor + +// Gargish Plate Arms - T2A stats (default) +[0x0308_t2a] +{ +get=base_gargish_plate_arms +def=61 +dexadd=-2 +hp=51 66 +str=55 +value=304 152 +weight=500 +} + +// Female Gargish Plate Arms - T2A stats (default) +[0x0307_t2a] +{ +get=base_female_gargish_plate_arms +def=61 +dexadd=-2 +hp=51 66 +str=55 +value=336 168 +weight=500 +} + +// Gargish Plate Chest - T2A stats (default) +[0x030a_t2a] +{ +get=base_gargish_plate_chest +def=61 +dexadd=-8 +hp=66 80 +str=65 +value=635 338 +weight=1100 +} + +// Female Gargish Plate Chest - T2A stats (default) +[0x0309_t2a] +{ +get=base_female_gargish_plate_chest +def=61 +dexadd=-8 +hp=66 80 +str=65 +value=661 98 +weight=1100 +} + +// Gargish Plate Leggings - T2A stats (default) +[0x030e_t2a] +{ +get=base_gargish_plate_leggings +def=61 +dexadd=-6 +hp=51 67 +str=60 +value=323 143 +weight=700 +} + +// Female Gargish Plate Leggings - T2A stats (default) +[0x030d_t2a] +{ +get=base_female_gargish_plate_leggings +def=61 +dexadd=-6 +hp=51 67 +str=60 +value=338 150 +weight=700 +} + +// Gargish Plate Kilt - T2A stats (default) +[0x030c_t2a] +{ +get=base_gargish_plate_kilt +def=61 +dexadd=-6 +hp=51 67 +str=55 +value=336 149 +weight=500 +} + +// Female Gargish Plate Kilt - T2A stats (default) +[0x030b_t2a] +{ +get=base_female_gargish_plate_kilt +def=61 +dexadd=-6 +hp=51 67 +str=55 +value=307 137 +weight=500 +} + +// SA Gargish Stone Armor + +// Gargish Stone Arms - T2A stats (default) +[0x0284_t2a] +{ +get=base_gargish_stone_arms +def=45 +dexadd=-2 +hp=41 51 +str=30 +value=107 54 +weight=1000 +} + +// Female Gargish Stone Arms - T2A stats (default) +[0x0283_t2a] +{ +get=base_female_gargish_stone_arms +def=45 +dexadd=-2 +hp=41 51 +str=30 +value=107 54 +weight=1000 +} + +// Gargish Stone Chest - T2A stats (default) +[0x0286_t2a] +{ +get=base_gargish_stone_chest +def=45 +dexadd=-8 +hp=53 61 +str=30 +value=195 104 +weight=1600 +} + +// Female Gargish Stone Chest - T2A stats (default) +[0x0285_t2a] +{ +get=base_female_gargish_stone_chest +def=45 +dexadd=-8 +hp=53 61 +str=30 +value=185 98 +weight=1600 +} + +// Gargish Stone Leggings - T2A stats (default) +[0x028a_t2a] +{ +get=base_gargish_stone_leggings +def=45 +dexadd=-8 +hp=41 51 +str=30 +value=103 45 +weight=1600 +} + +// Female Gargish Stone Leggings - T2A stats (default) +[0x0289_t2a] +{ +get=base_female_gargish_stone_leggings +def=45 +dexadd=-8 +hp=41 51 +str=30 +value=105 47 +weight=1600 +} + +// Gargish Stone Kilt - T2A stats (default) +[0x0288_t2a] +{ +get=base_gargish_stone_kilt +def=45 +dexadd=-8 +hp=41 51 +str=30 +value=120 53 +weight=1000 +} + +// Female Gargish Stone Kilt - T2A stats (default) +[0x0287_t2a] +{ +get=base_female_gargish_stone_kilt +def=45 +dexadd=-8 +hp=41 51 +str=30 +value=123 54 +weight=1000 +} + +// ToL Dragon Turtle Hide Armor + +// Dragon Turtle Hide Arms - T2A stats (default) +[0x782e_t2a] +{ +get=base_dragon_turtle_hide_arms +def=30 +hp=36 46 +str=20 +value=134 67 +weight=200 +} + +// Dragon Turtle Hide Chest - T2A stats (default) +[0x782a_t2a] +{ +get=base_dragon_turtle_hide_chest +def=30 +hp=46 55 +str=20 +value=234 117 +weight=800 +} + +// Dragon Turtle Hide Bustier - T2A stats (default) +[0x782b_t2a] +{ +get=base_dragon_turtle_hide_bustier +def=30 +hp=46 55 +str=20 +value=234 117 +weight=600 +} + +// Dragon Turtle Hide Helm - T2A stats (default) +[0x782d_t2a] +{ +get=base_dragon_turtle_hide_helm +def=30 +hp=24 39 +str=25 +value=157 71 +weight=400 +} + +// Dragon Turtle Hide Leggings - T2A stats (default) +[0x782c_t2a] +{ +get=base_dragon_turtle_hide_leggings +def=30 +hp=36 46 +str=20 +value=179 89 +weight=600 +} + +// ToL Tiger Pelt Armor + +// Tiger Pelt Chest - T2A stats (default) +[0x7822_t2a] +{ +get=base_tiger_pelt_chest +def=22 +hp=40 49 +str=20 +value=172 86 +weight=600 +} + +// Tiger Pelt Bustier - T2A stats (default) +[0x7823_t2a] +{ +get=base_tiger_pelt_bustier +def=22 +hp=40 49 +str=20 +value=172 86 +weight=600 +} + +// Tiger Pelt Helm - T2A stats (default) +[0x7828_t2a] +{ +get=base_tiger_pelt_helm +def=22 +hp=36 44 +str=25 +value=115 52 +weight=400 +} + +// Tiger Pelt Leggings - T2A stats (default) +[0x7824_t2a] +{ +get=base_tiger_pelt_leggings +def=22 +hp=31 44 +str=20 +value=131 65 +weight=400 +} + +// Tiger Pelt Shorts - T2A stats (default) +[0x7825_t2a] +{ +get=base_tiger_pelt_shorts +def=22 +hp=31 41 +str=20 +value=131 65 +weight=300 +} + +// Tiger Pelt Long Skirt - T2A stats (default) +[0x7826_t2a] +{ +get=base_tiger_pelt_long_skirt +def=22 +hp=31 41 +str=20 +value=131 65 +weight=100 +} + +// Tiger Pelt Skirt - T2A stats (default) +[0x7827_t2a] +{ +get=base_tiger_pelt_skirt +def=22 +hp=31 41 +str=20 +value=131 65 +weight=100 +} + +// Tiger Pelt Collar - T2A stats (default) +[0x7829_t2a] +{ +get=base_tiger_pelt_collar +def=22 +hp=21 41 +str=25 +value=94 49 +weight=200 +} + +// Shields + +// Bronze Shield - T2A stats (default) +[0x1b72_t2a] +{ +get=base_bronze_shield +def=10 +hp=26 30 +str=20 +value=91 45 +weight=600 +} + +// Buckler - T2A stats (default) +[0x1b73_t2a] +{ +get=base_buckler +def=7 +hp=41 51 +str=15 +value=66 33 +weight=500 +} + +// Metal Kite Shield - T2A stats (default) +[0x1b74_t2a] +{ +get=base_metal_kite_shield +def=16 +hp=101 115 +str=30 +value=135 67 +weight=500 +} + +// Heater Shield - T2A stats (default) +[0x1b76_t2a] +{ +get=base_heater_shield +def=23 +hp=31 37 +str=30 +value=175 87 +weight=800 +} + +// Metal Shield - T2A stats (default) +[0x1b7b_t2a] +{ +get=base_metal_shield +def=9 +hp=36 44 +str=10 +value=98 49 +weight=600 +} + +// Kite Shield (Wooden) - T2A stats (default) +[0x1b78_t2a] +{ +get=base_wooden_kite_shield +def=12 +hp=46 58 +str=15 +value=121 60 +weight=700 +} + +// Wooden Shield - T2A stats (default) +[0x1b7a_t2a] +{ +get=base_wooden_shield +def=8 +hp=21 23 +str=5 +value=62 31 +weight=500 +} + +// Order Shield - T2A stats (default) +[0x1bc4_t2a] +{ +get=base_order_shield +def=30 +hp=101 115 +value=196 98 +weight=600 +} + +// Chaos Shield - T2A stats (default) +[0x1bc3_t2a] +{ +get=base_chaos_shield +def=32 +hp=101 115 +value=209 104 +weight=500 +} + +// Gargish Chaos Shield - T2A stats (default) +[0x4228_t2a] +{ +get=base_gargish_chaos_shield +def=32 +hp=101 115 +value=209 104 +weight=500 +} + +// Gargish Kite Shield - T2A stats (default) +[0x4201_t2a] +{ +get=base_gargish_kite_shield +def=18 +hp=47 62 +str=20 +value=118 59 +weight=700 +} + +// Gargish Order Shield - T2A stats (default) +[0x422a_t2a] +{ +get=base_gargish_order_shield +def=30 +hp=101 115 +value=196 98 +weight=600 +} + +// Large Plate Shield - T2A stats (default) +[0x4204_t2a] +{ +get=base_large_plate_shield +def=32 +hp=53 67 +str=35 +value=209 104 +weight=800 +} + +// Large Stone Shield - T2A stats (default) +[0x4205_t2a] +{ +get=base_large_stone_shield +def=9 +hp=53 67 +str=10 +value=59 29 +weight=700 +} + +// Medium Plate Shield - T2A stats (default) +[0x4203_t2a] +{ +get=base_medium_plate_shield +def=18 +hp=53 67 +str=20 +value=118 59 +weight=600 +} + +// Small Plate Shield - T2A stats (default) +[0x4202_t2a] +{ +get=base_small_plate_shield +def=9 +hp=26 31 +str=10 +value=59 29 +weight=600 +} + +// Gargish Wooden Shield - T2A stats (default) +[0x4200_t2a] +{ +get=base_gargish_wooden_shield +def=8 +hp=21 23 +str=5 +value=62 31 +weight=500 +} \ No newline at end of file diff --git a/data/dfndata/items/gear/armor/gargish_armor/gargish_cloth.dfn b/data/dfndata/items/gear/armor/gargish_armor/gargish_cloth.dfn index c804e7133..564606180 100644 --- a/data/dfndata/items/gear/armor/gargish_armor/gargish_cloth.dfn +++ b/data/dfndata/items/gear/armor/gargish_armor/gargish_cloth.dfn @@ -3,6 +3,7 @@ // Gargish Cloth Arms - E/W [0x0404] { +gett2a=0x0404_t2a getlbr=0x0404_lbr getaos=0x0404_aos gettol=0x0404_tol @@ -25,6 +26,7 @@ get=0x0404 0x4060 // Female Gargish Cloth Arms - E/W [0x0403] { +gett2a=0x0403_t2a getlbr=0x0403_lbr getaos=0x0403_aos gettol=0x0403_tol @@ -49,6 +51,7 @@ get=0x0403 0x405f // Gargish Cloth Chest - E/W [0x0406] { +gett2a=0x0406_t2a getlbr=0x0406_lbr getaos=0x0406_aos gettol=0x0406_tol @@ -71,6 +74,7 @@ get=0x0405 0x4062 // Female Gargish Cloth Chest - E/W [0x0405] { +gett2a=0x0405_t2a getlbr=0x0405_lbr getaos=0x0405_aos gettol=0x0405_tol @@ -95,6 +99,7 @@ get=0x0405 0x4061 // Gargish Cloth Leggings - E/W [0x040a] { +gett2a=0x040a_t2a getlbr=0x040a_lbr getaos=0x040a_aos gettol=0x040a_tol @@ -117,6 +122,7 @@ get=0x040a 0x4066 // Female Gargish Cloth Leggings - E/W [0x0409] { +gett2a=0x0409_t2a getlbr=0x0409_lbr getaos=0x0409_aos gettol=0x0409_tol @@ -139,6 +145,7 @@ get=0x0409 0x4065 // Gargish Cloth Kilt - E/W [0x0408] { +gett2a=0x0408_t2a getlbr=0x0408_lbr getaos=0x0408_aos gettol=0x0408_tol @@ -161,6 +168,7 @@ get=0x0408 0x4064 // Gargish Cloth Kilt (Female) - E/W [0x0407] { +gett2a=0x0407_t2a getlbr=0x0407_lbr getaos=0x0407_aos gettol=0x0407_tol @@ -185,6 +193,7 @@ get=0x0407 0x4063 // Gargish Cloth Wing Armor - N/S [0x45a4] { +gett2a=0x45a4_t2a getlbr=0x45a4_lbr getaos=0x45a4_aos gettol=0x45a4_tol diff --git a/data/dfndata/items/gear/armor/gargish_armor/gargish_leather.dfn b/data/dfndata/items/gear/armor/gargish_armor/gargish_leather.dfn index ad6fefb29..e2853037c 100644 --- a/data/dfndata/items/gear/armor/gargish_armor/gargish_leather.dfn +++ b/data/dfndata/items/gear/armor/gargish_armor/gargish_leather.dfn @@ -3,6 +3,7 @@ // Gargish Leather Arms - N/S [0x0302] { +gett2a=0x0302_t2a getlbr=0x0302_lbr getaos=0x0302_aos gettol=0x0302_tol @@ -25,6 +26,7 @@ get=0x0302 0x4048 // Female Gargish Leather Arms - N/S [0x0301] { +gett2a=0x0301_t2a getlbr=0x0301_lbr getaos=0x0301_aos gettol=0x0301_tol @@ -49,6 +51,7 @@ get=0x0301 0x4047 // Gargish Leather Chest - N/S [0x0304] { +gett2a=0x0304_t2a getlbr=0x0304_lbr getaos=0x0304_aos gettol=0x0304_tol @@ -71,6 +74,7 @@ get=0x0304 0x404a // Female Gargish Leather Chest - N/S [0x0303] { +gett2a=0x0303_t2a getlbr=0x0303_lbr getaos=0x0303_aos gettol=0x0303_tol @@ -95,6 +99,7 @@ get=0x0303 0x4049 // Gargish Leather Leggings - N/S [0x0306] { +gett2a=0x0306_t2a getlbr=0x0306_lbr getaos=0x0306_aos gettol=0x0306_tol @@ -117,6 +122,7 @@ get=0x0306 0x404e // Female Gargish Leather Leggings - N/S [0x0305] { +gett2a=0x0305_t2a getlbr=0x0305_lbr getaos=0x0305_aos gettol=0x0305_tol @@ -139,6 +145,7 @@ get=0x0305 0x404d // Gargish Leather Kilt - E/W [0x0311] { +gett2a=0x0311_t2a getlbr=0x0311_lbr getaos=0x0311_aos gettol=0x0311_tol @@ -161,6 +168,7 @@ get=0x0311 0x404c // Female Gargish Leather Kilt - E/W [0x0310] { +gett2a=0x0310_t2a getlbr=0x0310_lbr getaos=0x0310_aos gettol=0x0310_tol @@ -185,6 +193,7 @@ get=0x0310 0x404b // Gargish Leather Wing Armor - N/S [0x457e] { +gett2a=0x457e_t2a getlbr=0x457e_lbr getaos=0x457e_aos gettol=0x457e_tol diff --git a/data/dfndata/items/gear/armor/gargish_armor/gargish_plate.dfn b/data/dfndata/items/gear/armor/gargish_armor/gargish_plate.dfn index 4254c1e83..a513ae6dc 100644 --- a/data/dfndata/items/gear/armor/gargish_armor/gargish_plate.dfn +++ b/data/dfndata/items/gear/armor/gargish_armor/gargish_plate.dfn @@ -3,6 +3,7 @@ // Gargish Plate Arms - N/S [0x0308] { +gett2a=0x0308_t2a getlbr=0x0308_lbr getaos=0x0308_aos gettol=0x0308_tol @@ -25,6 +26,7 @@ get=0x0308 0x4050 // Female Gargish Plate Arms - N/S [0x0307] { +gett2a=0x0307_t2a getlbr=0x0307_lbr getaos=0x0307_aos gettol=0x0307_tol @@ -49,6 +51,7 @@ get=0x0307 0x404f // Gargish Plate Chest - E/W [0x030a] { +gett2a=0x030a_t2a getlbr=0x030a_lbr getaos=0x030a_aos gettol=0x030a_tol @@ -71,6 +74,7 @@ get=0x030a 0x4052 // Female Gargish Plate Chest - E/W [0x0309] { +gett2a=0x0309_t2a getlbr=0x0309_lbr getaos=0x0309_aos gettol=0x0309_tol @@ -95,6 +99,7 @@ get=0x0309 0x4051 // Gargish Plate Leggings - N/S [0x030e] { +gett2a=0x030e_t2a getlbr=0x030e_lbr getaos=0x030e_aos gettol=0x030e_tol @@ -117,6 +122,7 @@ get=0x030e 0x4056 // Female Gargish Plate Leggings - E/W [0x030d] { +gett2a=0x030d_t2a getlbr=0x030d_lbr getaos=0x030d_aos gettol=0x030d_tol @@ -139,6 +145,7 @@ get=0x030d 0x4055 // Gargish Plate Kilt - E/W [0x030c] { +gett2a=0x030c_t2a getlbr=0x030c_lbr getaos=0x030c_aos gettol=0x030c_tol @@ -161,6 +168,7 @@ get=0x030c 0x4054 // Female Gargish Plate Kilt - E/W [0x030b] { +gett2a=0x030b_t2a getlbr=0x030b_lbr getaos=0x030b_aos gettol=0x030b_tol diff --git a/data/dfndata/items/gear/armor/gargish_armor/gargish_stone.dfn b/data/dfndata/items/gear/armor/gargish_armor/gargish_stone.dfn index 93ee3b45d..5b0059aa3 100644 --- a/data/dfndata/items/gear/armor/gargish_armor/gargish_stone.dfn +++ b/data/dfndata/items/gear/armor/gargish_armor/gargish_stone.dfn @@ -3,6 +3,7 @@ // Gargish Stone Arms - E/W [0x0284] { +gett2a=0x0284_t2a getlbr=0x0284_lbr getaos=0x0284_aos gettol=0x0284_tol @@ -25,6 +26,7 @@ get=0x0284 0x4058 // Female Gargish Stone Arms - E/W [0x0283] { +gett2a=0x0283_t2a getlbr=0x0283_lbr getaos=0x0283_aos gettol=0x0283_tol @@ -49,6 +51,7 @@ get=0x0283 0x4057 // Gargish Stone Chest - E/W [0x0286] { +gett2a=0x0286_t2a getlbr=0x0286_lbr getaos=0x0286_aos gettol=0x0286_tol @@ -71,6 +74,7 @@ get=0x0286 0x405a // Female Gargish Stone Chest - E/W [0x0285] { +gett2a=0x0285_t2a getlbr=0x0285_lbr getaos=0x0285_aos gettol=0x0285_tol @@ -95,6 +99,7 @@ get=0x0285 0x4059 // Gargish Stone Leggings - E/W [0x028a] { +gett2a=0x028a_t2a getlbr=0x028a_lbr getaos=0x028a_aos gettol=0x028a_tol @@ -117,6 +122,7 @@ get=0x028a 0x405e // Female Gargish Stone Leggings - E/W [0x0289] { +gett2a=0x0289_t2a getlbr=0x0289_lbr getaos=0x0289_aos gettol=0x0289_tol @@ -139,6 +145,7 @@ get=0x0289 0x405d // Gargish Stone Kilt - E/W [0x0288] { +gett2a=0x0288_t2a getlbr=0x0288_lbr getaos=0x0288_aos gettol=0x0288_tol @@ -161,6 +168,7 @@ get=0x0288 0x405c // Female Gargish Stone Kilt - E/W [0x0287] { +gett2a=0x0287_t2a getlbr=0x0287_lbr getaos=0x0287_aos gettol=0x0287_tol diff --git a/data/dfndata/items/gear/armor/leather_armor/leather.dfn b/data/dfndata/items/gear/armor/leather_armor/leather.dfn index fbc746d76..91fc03803 100644 --- a/data/dfndata/items/gear/armor/leather_armor/leather.dfn +++ b/data/dfndata/items/gear/armor/leather_armor/leather.dfn @@ -3,6 +3,7 @@ // Leather Sleeves - E/W [0x13c5] { +gett2a=0x13c5_t2a getlbr=0x13c5_lbr getaos=0x13c5_aos gettol=0x13c5_tol @@ -25,6 +26,7 @@ get=0x13c5 0x13cd // Leather Gloves - E/W [0x13c6] { +gett2a=0x13c6_t2a getlbr=0x13c6_lbr getaos=0x13c6_aos gettol=0x13c6_tol @@ -47,6 +49,7 @@ get=0x13c6 0x13ce // Leather Gorget [0x13c7] { +gett2a=0x13c7_t2a getlbr=0x13c7_lbr getaos=0x13c7_aos gettol=0x13c7_tol @@ -62,6 +65,7 @@ get=0x13c7 // Leather Cap - E/W [0x1db9] { +gett2a=0x1db9_t2a getlbr=0x1db9_lbr getaos=0x1db9_aos gettol=0x1db9_tol @@ -84,6 +88,7 @@ get=0x1db9 0x1dba // Leather Leggings - E/W [0x13cb] { +gett2a=0x13cb_t2a getlbr=0x13cb_lbr getaos=0x13cb_aos gettol=0x13cb_tol @@ -106,6 +111,7 @@ get=0x13cb 0x13d2 // Leather Tunic - E/W [0x13cc] { +gett2a=0x13cc_t2a getlbr=0x13cc_lbr getaos=0x13cc_aos gettol=0x13cc_tol @@ -128,6 +134,7 @@ get=0x13cc 0x13d3 // Leather Shorts (Female) - E/W [0x1c00] { +gett2a=0x1c00_t2a getlbr=0x1c00_lbr getaos=0x1c00_aos gettol=0x1c00_tol @@ -150,6 +157,7 @@ get=0x1c00 0x1c01 // Leather Armor (Female) - E/W [0x1c06] { +gett2a=0x1c06_t2a getlbr=0x1c06_lbr getaos=0x1c06_aos gettol=0x1c06_tol @@ -172,6 +180,7 @@ get=0x1c06 0x1c07 // Leather Skirt (Female) - E/W [0x1c08] { +gett2a=0x1c08_t2a getlbr=0x1c08_lbr getaos=0x1c08_aos gettol=0x1c08_tol @@ -194,6 +203,7 @@ get=0x1c08 0x1c09 // Leather Bustier (Female) - E/W [0x1c0a] { +gett2a=0x1c0a_t2a getlbr=0x1c0a_lbr getaos=0x1c0a_aos gettol=0x1c0a_tol diff --git a/data/dfndata/items/gear/armor/leather_armor/ninja_leather.dfn b/data/dfndata/items/gear/armor/leather_armor/ninja_leather.dfn index 95eeefcb9..0e550eaf5 100644 --- a/data/dfndata/items/gear/armor/leather_armor/ninja_leather.dfn +++ b/data/dfndata/items/gear/armor/leather_armor/ninja_leather.dfn @@ -3,6 +3,7 @@ // Leather Ninja Hood - N/S [0x278e] { +gett2a=0x278e_t2a getlbr=0x278e_lbr getaos=0x278e_aos gettol=0x278e_tol @@ -25,6 +26,7 @@ get=0x278e 0x27d9 // Leather Ninja Belt - A [0x2790] { +gett2a=0x2790_t2a getlbr=0x2790_lbr getaos=0x2790_aos gettol=0x2790_tol @@ -47,6 +49,7 @@ get=0x2790 0x27db // Leather Ninja Pants - N/S [0x2791] { +gett2a=0x2791_t2a getlbr=0x2791_lbr getaos=0x2791_aos gettol=0x2791_tol @@ -69,6 +72,7 @@ get=0x2791 0x27dc // Leather Ninja Mitts - E/W [0x2792] { +gett2a=0x2792_t2a getlbr=0x2792_lbr getaos=0x2792_aos gettol=0x2792_tol @@ -91,6 +95,7 @@ get=0x2792 0x27dd // Leather Ninja Jacket - A [0x2793] { +gett2a=0x2793_t2a getlbr=0x2793_lbr getaos=0x2793_aos gettol=0x2793_tol diff --git a/data/dfndata/items/gear/armor/leather_armor/samurai_leather.dfn b/data/dfndata/items/gear/armor/leather_armor/samurai_leather.dfn index 1432cf909..7733307dd 100644 --- a/data/dfndata/items/gear/armor/leather_armor/samurai_leather.dfn +++ b/data/dfndata/items/gear/armor/leather_armor/samurai_leather.dfn @@ -1,6 +1,7 @@ // Leather Jingasa - N/S [0x2776] { +gett2a=0x2776_t2a getlbr=0x2776_lbr getaos=0x2776_aos gettol=0x2776_tol @@ -23,6 +24,7 @@ get=0x2776 0x27c1 // Leather Mempo - N/S [0x277a] { +gett2a=0x277a_t2a getlbr=0x277a_lbr getaos=0x277a_aos gettol=0x277a_tol @@ -45,6 +47,7 @@ get=0x277a 0x27c5 // Leather Do - N/S [0x277b] { +gett2a=0x277b_t2a getlbr=0x277b_lbr getaos=0x277b_aos gettol=0x277b_tol @@ -67,6 +70,7 @@ get=0x277b 0x27c6 // Leather Hiro Sode - E/W [0x277e] { +gett2a=0x277e_t2a getlbr=0x277e_lbr getaos=0x277e_aos gettol=0x277e_tol @@ -89,6 +93,7 @@ get=0x277e 0x27c9 // Leather Suneate - E/W [0x2786] { +gett2a=0x2786_t2a getlbr=0x2786_lbr getaos=0x2786_aos gettol=0x2786_tol @@ -111,6 +116,7 @@ get=0x2786 0x27d1 // Leather Haidate - N/S [0x278a] { +gett2a=0x278a_t2a getlbr=0x278a_lbr getaos=0x278a_aos gettol=0x278a_tol diff --git a/data/dfndata/items/gear/armor/leather_armor/samurai_studded_leather.dfn b/data/dfndata/items/gear/armor/leather_armor/samurai_studded_leather.dfn index 4c2711139..0550cfe84 100644 --- a/data/dfndata/items/gear/armor/leather_armor/samurai_studded_leather.dfn +++ b/data/dfndata/items/gear/armor/leather_armor/samurai_studded_leather.dfn @@ -1,6 +1,7 @@ // Studded Do - E/W [0x277c] { +gett2a=0x277c_t2a getlbr=0x277c_lbr getaos=0x277c_aos gettol=0x277c_tol @@ -23,6 +24,7 @@ get=0x277c 0x27c7 // Studded Hiro Sode - E/W [0x277f] { +gett2a=0x277f_t2a getlbr=0x277f_lbr getaos=0x277f_aos gettol=0x277f_tol @@ -45,6 +47,7 @@ get=0x277f 0x27ca // Studded Suneate - E/W [0x2787] { +gett2a=0x2787_t2a getlbr=0x2787_lbr getaos=0x2787_aos gettol=0x2787_tol @@ -67,6 +70,7 @@ get=0x2787 0x27d2 // Studded Haidate - N/S [0x278b] { +gett2a=0x278b_t2a getlbr=0x278b_lbr getaos=0x278b_aos gettol=0x278b_tol @@ -89,6 +93,7 @@ get=0x278b 0x27d6 // Studded Mempo - N/S [0x279d] { +gett2a=0x279d_t2a getlbr=0x279d_lbr getaos=0x279d_aos gettol=0x279d_tol diff --git a/data/dfndata/items/gear/armor/leather_armor/studded_Leather.dfn b/data/dfndata/items/gear/armor/leather_armor/studded_Leather.dfn index d480fc347..2d25307c3 100644 --- a/data/dfndata/items/gear/armor/leather_armor/studded_Leather.dfn +++ b/data/dfndata/items/gear/armor/leather_armor/studded_Leather.dfn @@ -1,6 +1,7 @@ // Studded Sleeves - E/W [0x13d4] { +gett2a=0x13d4_t2a getlbr=0x13d4_lbr getaos=0x13d4_aos gettol=0x13d4_tol @@ -23,6 +24,7 @@ get=0x13d4 0x13dc // Studded Gloves - E/W [0x13d5] { +gett2a=0x13d5_t2a getlbr=0x13d5_lbr getaos=0x13d5_aos gettol=0x13d5_tol @@ -45,6 +47,7 @@ get=0x13d5 0x13dd // Studded Gorget [0x13d6] { +gett2a=0x13d6_t2a getlbr=0x13d6_lbr getaos=0x13d6_aos gettol=0x13d6_tol @@ -60,6 +63,7 @@ get=0x13d6 // Studded Leggings - E/W [0x13da] { +gett2a=0x13da_t2a getlbr=0x13da_lbr getaos=0x13da_aos gettol=0x13da_tol @@ -82,6 +86,7 @@ get=0x13da 0x13e1 // Studded Tunic - E/W [0x13db] { +gett2a=0x13db_t2a getlbr=0x13db_lbr getaos=0x13db_aos gettol=0x13db_tol @@ -104,6 +109,7 @@ get=0x13db 0x13e2 // Studded Armor (Female) - E/W [0x1c02] { +gett2a=0x1c02_t2a getlbr=0x1c02_lbr getaos=0x1c02_aos gettol=0x1c02_tol @@ -126,6 +132,7 @@ get=0x1c02 0x1c03 // Studded Bustier (Female) - E/W [0x1c0c] { +gett2a=0x1c0c_t2a getlbr=0x1c0c_lbr getaos=0x1c0c_aos gettol=0x1c0c_tol diff --git a/data/dfndata/items/gear/armor/metal_armor/agapite_armor.dfn b/data/dfndata/items/gear/armor/metal_armor/agapite_armor.dfn index d019bc20b..f93e63ded 100644 --- a/data/dfndata/items/gear/armor/metal_armor/agapite_armor.dfn +++ b/data/dfndata/items/gear/armor/metal_armor/agapite_armor.dfn @@ -19,6 +19,7 @@ erbonus=7 2 2 2 // Agapite Ringmail Gloves - N/S [0x13eb-a] { +gett2a=0x13eb_t2a getlbr=0x13eb_lbr getaos=0x13eb_aos gettol=0x13eb_tol @@ -44,6 +45,7 @@ get=0x13eb-a 0x13f2-a // Agapite Ringmail Tunic - N/S [0x13ec-a] { +gett2a=0x13ec_t2a getlbr=0x13ec_lbr getaos=0x13ec_aos gettol=0x13ec_tol @@ -69,6 +71,7 @@ get=0x13ec-a 0x13ed-a // Agapite Ringmail Sleeves - N/S [0x13ee-a] { +gett2a=0x13ee_t2a getlbr=0x13ee_lbr getaos=0x13ee_aos gettol=0x13ee_tol @@ -94,6 +97,7 @@ get=0x13ee-a 0x13ef-a // Agapite Ringmail Leggings - N/S [0x13f0-a] { +gett2a=0x13f0_t2a getlbr=0x13f0_lbr getaos=0x13f0_aos gettol=0x13f0_tol @@ -121,6 +125,7 @@ get=0x13f0-a 0x13f1-a // Agapite Chainmail Coif - N/S [0x13bb-a] { +gett2a=0x13bb_t2a getlbr=0x13bb_lbr getaos=0x13bb_aos gettol=0x13bb_tol @@ -146,6 +151,7 @@ get=0x13bb 0x13c0 // Agapite Chainmail Leggings - N/S [0x13be-a] { +gett2a=0x13be_t2a getlbr=0x13be_lbr getaos=0x13be_aos gettol=0x13be_tol @@ -171,6 +177,7 @@ get=0x13be-a 0x13c3-a // Agapite Chainmail Tunic - N/S [0x13bf-a] { +gett2a=0x13bf_t2a getlbr=0x13bf_lbr getaos=0x13bf_aos gettol=0x13bf_tol @@ -196,6 +203,7 @@ get=0x13bf-a 0x13c4-a // Agapite Female Plate - N/S [0x1c04-a] { +gett2a=0x1c04_t2a getlbr=0x1c04_lbr getaos=0x1c04_aos gettol=0x1c04_tol @@ -223,6 +231,7 @@ get=0x1c04-a 0x1c05-a // Agapite Platemail Arms - E/W [0x1410-a] { +gett2a=0x1410_t2a getlbr=0x1410_lbr getaos=0x1410_aos gettol=0x1410_tol @@ -248,6 +257,7 @@ get=0x1410-a 0x1417-a // Agapite Platemail Leggings - N/S [0x1411-a] { +gett2a=0x1411_t2a getlbr=0x1411_lbr getaos=0x1411_aos gettol=0x1411_tol @@ -273,6 +283,7 @@ get=0x1411-a 0x141a-a // Agapite Platemail Gorget [0x1413-a] { +gett2a=0x1413_t2a getlbr=0x1413_lbr getaos=0x1413_aos gettol=0x1413_tol @@ -291,6 +302,7 @@ get=0x1413-a // Agapite Platemail Gloves - N/S [0x1414-a] { +gett2a=0x1414_t2a getlbr=0x1414_lbr getaos=0x1414_aos gettol=0x1414_tol @@ -316,6 +328,7 @@ get=0x1414-a 0x1418-a // Agapite Platemail Chest - N/S [0x1415-a] { +gett2a=0x1415_t2a getlbr=0x1415_lbr getaos=0x1415_aos gettol=0x1415_tol @@ -343,6 +356,7 @@ get=0x1415-a 0x1416-a // Agapite Heavy Platemail Jingasa - A [0x2777-a] { +gett2a=0x2777_t2a getlbr=0x2777_lbr getaos=0x2777_aos gettol=0x2777_tol @@ -368,6 +382,7 @@ get=0x2777-a 0x27c2-a // Agapite Decorative Platemail Kabuto - A [0x2778-a] { +gett2a=0x2778_t2a getlbr=0x2778_lbr getaos=0x2778_aos gettol=0x2778_tol @@ -393,6 +408,7 @@ get=0x2778-a 0x27c3-a // Agapite Platemail Do - A [0x277d-a] { +gett2a=0x277d_t2a getlbr=0x277d_lbr getaos=0x277d_aos gettol=0x277d_tol @@ -418,6 +434,7 @@ get=0x277d-a 0x27c8-a // Agapite Platemail Hiro Sode - A [0x2780-a] { +gett2a=0x2780_t2a getlbr=0x2780_lbr getaos=0x2780_aos gettol=0x2780_tol @@ -443,6 +460,7 @@ get=0x2780-a 0x27cb-a // Agapite Platemail Jingasa - A [0x2781-a] { +gett2a=0x2781_t2a getlbr=0x2781_lbr getaos=0x2781_aos gettol=0x2781_tol @@ -468,6 +486,7 @@ get=0x2781-a 0x27cc-a // Agapite Small Platemail Jingasa - A [0x2784-a] { +gett2a=0x2784_t2a getlbr=0x2784_lbr getaos=0x2784_aos gettol=0x2784_tol @@ -493,6 +512,7 @@ get=0x2784-a 0x27cf-a // Agapite Platemail Battle Kabuto - A [0x2785-a] { +gett2a=0x2785_t2a getlbr=0x2785_lbr getaos=0x2785_aos gettol=0x2785_tol @@ -518,6 +538,7 @@ get=0x2785-a 0x27d0-a // Agapite Platemail Suneate - A [0x2788-a] { +gett2a=0x2788_t2a getlbr=0x2788_lbr getaos=0x2788_aos gettol=0x2788_tol @@ -543,6 +564,7 @@ get=0x2788-a 0x27d3-a // Agapite Platemail Kabuto - A [0x2789-a] { +gett2a=0x2789_t2a getlbr=0x2789_lbr getaos=0x2789_aos gettol=0x2789_tol @@ -568,6 +590,7 @@ get=0x2789-a 0x27d4-a // Agapite Kabuto - A [0x236c-a] { +gett2a=0x236c_t2a getlbr=0x236c_lbr getaos=0x236c_aos gettol=0x236c_tol @@ -593,6 +616,7 @@ get=0x236c-a 0x236d-a // Agapite Platemail Haidate - A [0x278d-a] { +gett2a=0x278d_t2a getlbr=0x278d_lbr getaos=0x278d_aos gettol=0x278d_tol @@ -618,6 +642,7 @@ get=0x278d-a 0x27d8-a // Agapite Platemail Hatsuburi - A [0x2775-a] { +gett2a=0x2775_t2a getlbr=0x2775_lbr getaos=0x2775_aos gettol=0x2775_tol @@ -643,6 +668,7 @@ get=0x2775-a 0x27c0-a // Agapite Chainmail Hatsuburi - A [0x2774-a] { +gett2a=0x2774_t2a getlbr=0x2774_lbr getaos=0x2774_aos gettol=0x2774_tol @@ -668,6 +694,7 @@ get=0x2774-a 0x27bf-a // Agapite Platemail Mempo - E/W [0x2779-a] { +gett2a=0x2779_t2a getlbr=0x2779_lbr getaos=0x2779_aos gettol=0x2779_tol @@ -695,6 +722,7 @@ get=0x2779-a 0x27c4-a // Agapite Close Helm - E/W [0x1408-a] { +gett2a=0x1408_t2a getlbr=0x1408_lbr getaos=0x1408_aos gettol=0x1408_tol @@ -720,6 +748,7 @@ get=0x1408-a 0x1409-a // Agapite Helmet - E/W [0x140a-a] { +gett2a=0x140a_t2a getlbr=0x140a_lbr getaos=0x140a_aos gettol=0x140a_tol @@ -745,6 +774,7 @@ get=0x140a-a 0x140b-a // Agapite Bascinet - E/W [0x140c-a] { +gett2a=0x140c_t2a getlbr=0x140c_lbr getaos=0x140c_aos gettol=0x140c_tol @@ -770,6 +800,7 @@ get=0x140c-a 0x140d-a // Agapite Norse Helm - E/W [0x140e-a] { +gett2a=0x140e_t2a getlbr=0x140e_lbr getaos=0x140e_aos gettol=0x140e_tol @@ -795,6 +826,7 @@ get=0x140e-a 0x140f-a // Agapite Plate Helm - N/S [0x1412-a] { +gett2a=0x1412_t2a getlbr=0x1412_lbr getaos=0x1412_aos gettol=0x1412_tol @@ -822,6 +854,7 @@ get=0x1412-a 0x1419-a // Agapite Bronze Shield [0x1b72-a] { +gett2a=0x1b72_t2a getlbr=0x1b72_lbr getaos=0x1b72_aos gettol=0x1b72_tol @@ -840,6 +873,7 @@ get=0x1b72-a // Agapite Buckler [0x1b73-a] { +gett2a=0x1b73_t2a getlbr=0x1b73_lbr getaos=0x1b73_aos gettol=0x1b73_tol @@ -858,6 +892,7 @@ get=0x1b73-a // Agapite Kite Shield (Metal) - N/S [0x1b74-a] { +gett2a=0x1b74_t2a getlbr=0x1b74_lbr getaos=0x1b74_aos gettol=0x1b74_tol @@ -870,6 +905,7 @@ sectionid=0x1b74-a // Agapite Heater Shield - N/S [0x1b76-a] { +gett2a=0x1b76_t2a getlbr=0x1b76_lbr getaos=0x1b76_aos gettol=0x1b76_tol @@ -882,6 +918,7 @@ sectionid=0x1b76-a // Agapite Kite Shield (Wood) - N/S [0x1b78-a] { +gett2a=0x1b78_t2a getlbr=0x1b78_lbr getaos=0x1b78_aos gettol=0x1b78_tol @@ -907,6 +944,7 @@ get=0x1b78-a 0x1b79-a // AgapiteWooden Shield [0x1b7a-a] { +gett2a=0x1b7a_t2a getlbr=0x1b7a_lbr getaos=0x1b7a_aos gettol=0x1b7a_tol @@ -925,6 +963,7 @@ get=0x1b7a-a // Agapite Metal Shield [0x1b7b-a] { +gett2a=0x1b7b_t2a getlbr=0x1b7b_lbr getaos=0x1b7b_aos gettol=0x1b7b_tol @@ -943,6 +982,7 @@ get=0x1b7b-a // Agapite Chaos Shield [0x1bc3-a] { +gett2a=0x1bc3_t2a getlbr=0x1bc3_lbr getaos=0x1bc3_aos gettol=0x1bc3_tol @@ -961,6 +1001,7 @@ get=0x1bc3-a // Agapite Order Shield - N/S [0x1bc4-a] { +gett2a=0x1bc4_t2a getlbr=0x1bc4_lbr getaos=0x1bc4_aos gettol=0x1bc4_tol diff --git a/data/dfndata/items/gear/armor/metal_armor/bronze_armor.dfn b/data/dfndata/items/gear/armor/metal_armor/bronze_armor.dfn index 29d3f08c0..a78119b31 100644 --- a/data/dfndata/items/gear/armor/metal_armor/bronze_armor.dfn +++ b/data/dfndata/items/gear/armor/metal_armor/bronze_armor.dfn @@ -19,6 +19,7 @@ erbonus=0 7 2 2 // Bronze Ringmail Gloves - N/S [0x13eb-b] { +gett2a=0x13eb_t2a getlbr=0x13eb_lbr getaos=0x13eb_aos gettol=0x13eb_tol @@ -44,6 +45,7 @@ get=0x13eb-b 0x13f2-b // Bronze Ringmail Tunic - N/S [0x13ec-b] { +gett2a=0x13ec_t2a getlbr=0x13ec_lbr getaos=0x13ec_aos gettol=0x13ec_tol @@ -69,6 +71,7 @@ get=0x13ec-b 0x13ed-b // Bronze Ringmail Sleeves - N/S [0x13ee-b] { +gett2a=0x13ee_t2a getlbr=0x13ee_lbr getaos=0x13ee_aos gettol=0x13ee_tol @@ -94,6 +97,7 @@ get=0x13ee-b 0x13ef-b // Bronze Ringmail Leggings - N/S [0x13f0-b] { +gett2a=0x13f0_t2a getlbr=0x13f0_lbr getaos=0x13f0_aos gettol=0x13f0_tol @@ -121,6 +125,7 @@ get=0x13f0-b 0x13f1-b // Bronze Chainmail Coif - N/S [0x13bb-b] { +gett2a=0x13bb_t2a getlbr=0x13bb_lbr getaos=0x13bb_aos gettol=0x13bb_tol @@ -146,6 +151,7 @@ get=0x13bb 0x13c0 // Bronze Chainmail Leggings - N/S [0x13be-b] { +gett2a=0x13be_t2a getlbr=0x13be_lbr getaos=0x13be_aos gettol=0x13be_tol @@ -171,6 +177,7 @@ get=0x13be-b 0x13c3-b // Bronze Chainmail Tunic - N/S [0x13bf-b] { +gett2a=0x13bf_t2a getlbr=0x13bf_lbr getaos=0x13bf_aos gettol=0x13bf_tol @@ -196,6 +203,7 @@ get=0x13bf-b 0x13c4-b // Bronze Female Plate - N/S [0x1c04-b] { +gett2a=0x1c04_t2a getlbr=0x1c04_lbr getaos=0x1c04_aos gettol=0x1c04_tol @@ -223,6 +231,7 @@ get=0x1c04-b 0x1c05-b // Bronze Platemail Arms - E/W [0x1410-b] { +gett2a=0x1410_t2a getlbr=0x1410_lbr getaos=0x1410_aos gettol=0x1410_tol @@ -248,6 +257,7 @@ get=0x1410-b 0x1417-b // Bronze Platemail Leggings - N/S [0x1411-b] { +gett2a=0x1411_t2a getlbr=0x1411_lbr getaos=0x1411_aos gettol=0x1411_tol @@ -273,6 +283,7 @@ get=0x1411-b 0x141a-b // Bronze Platemail Gorget [0x1413-b] { +gett2a=0x1413_t2a getlbr=0x1413_lbr getaos=0x1413_aos gettol=0x1413_tol @@ -291,6 +302,7 @@ get=0x1413-b // Bronze Platemail Gloves - N/S [0x1414-b] { +gett2a=0x1414_t2a getlbr=0x1414_lbr getaos=0x1414_aos gettol=0x1414_tol @@ -316,6 +328,7 @@ get=0x1414-b 0x1418-b // Bronze Platemail Chest - N/S [0x1415-b] { +gett2a=0x1415_t2a getlbr=0x1415_lbr getaos=0x1415_aos gettol=0x1415_tol @@ -343,6 +356,7 @@ get=0x1415-b 0x1416-b // Bronze Heavy Platemail Jingasa - A [0x2777-b] { +gett2a=0x2777_t2a getlbr=0x2777_lbr getaos=0x2777_aos gettol=0x2777_tol @@ -368,6 +382,7 @@ get=0x2777-b 0x27c2-b // Bronze Decorative Platemail Kabuto - A [0x2778-b] { +gett2a=0x2778_t2a getlbr=0x2778_lbr getaos=0x2778_aos gettol=0x2778_tol @@ -393,6 +408,7 @@ get=0x2778-b 0x27c3-b // Bronze Platemail Do - A [0x277d-b] { +gett2a=0x277d_t2a getlbr=0x277d_lbr getaos=0x277d_aos gettol=0x277d_tol @@ -418,6 +434,7 @@ get=0x277d-b 0x27c8-b // Bronze Platemail Hiro Sode - A [0x2780-b] { +gett2a=0x2780_t2a getlbr=0x2780_lbr getaos=0x2780_aos gettol=0x2780_tol @@ -443,6 +460,7 @@ get=0x2780-b 0x27cb-b // Bronze Platemail Jingasa - A [0x2781-b] { +gett2a=0x2781_t2a getlbr=0x2781_lbr getaos=0x2781_aos gettol=0x2781_tol @@ -468,6 +486,7 @@ get=0x2781-b 0x27cc-b // Bronze Small Platemail Jingasa - A [0x2784-b] { +gett2a=0x2784_t2a getlbr=0x2784_lbr getaos=0x2784_aos gettol=0x2784_tol @@ -493,6 +512,7 @@ get=0x2784-b 0x27cf-b // Bronze Platemail Battle Kabuto - A [0x2785-b] { +gett2a=0x2785_t2a getlbr=0x2785_lbr getaos=0x2785_aos gettol=0x2785_tol @@ -518,6 +538,7 @@ get=0x2785-b 0x27d0-b // Bronze Platemail Suneate - A [0x2788-b] { +gett2a=0x2788_t2a getlbr=0x2788_lbr getaos=0x2788_aos gettol=0x2788_tol @@ -543,6 +564,7 @@ get=0x2788-b 0x27d3-b // Bronze Platemail Kabuto - A [0x2789-b] { +gett2a=0x2789_t2a getlbr=0x2789_lbr getaos=0x2789_aos gettol=0x2789_tol @@ -568,6 +590,7 @@ get=0x2789-b 0x27d4-b // Bronze Kabuto - A [0x236c-b] { +gett2a=0x236c_t2a getlbr=0x236c_lbr getaos=0x236c_aos gettol=0x236c_tol @@ -593,6 +616,7 @@ get=0x236c-b 0x236d-b // Bronze Platemail Haidate - A [0x278d-b] { +gett2a=0x278d_t2a getlbr=0x278d_lbr getaos=0x278d_aos gettol=0x278d_tol @@ -618,6 +642,7 @@ get=0x278d-b 0x27d8-b // Bronze Platemail Hatsuburi - A [0x2775-b] { +gett2a=0x2775_t2a getlbr=0x2775_lbr getaos=0x2775_aos gettol=0x2775_tol @@ -643,6 +668,7 @@ get=0x2775-b 0x27c0-b // Bronze Chainmail Hatsuburi - A [0x2774-b] { +gett2a=0x2774_t2a getlbr=0x2774_lbr getaos=0x2774_aos gettol=0x2774_tol @@ -668,6 +694,7 @@ get=0x2774-b 0x27bf-b // Bronze Platemail Mempo - E/W [0x2779-b] { +gett2a=0x2779_t2a getlbr=0x2779_lbr getaos=0x2779_aos gettol=0x2779_tol @@ -695,6 +722,7 @@ get=0x2779-b 0x27c4-b // Bronze Close Helm - E/W [0x1408-b] { +gett2a=0x1408_t2a getlbr=0x1408_lbr getaos=0x1408_aos gettol=0x1408_tol @@ -720,6 +748,7 @@ get=0x1408-b 0x1409-b // Bronze Helmet - E/W [0x140a-b] { +gett2a=0x140a_t2a getlbr=0x140a_lbr getaos=0x140a_aos gettol=0x140a_tol @@ -745,6 +774,7 @@ get=0x140a-b 0x140b-b // Bronze Bascinet - E/W [0x140c-b] { +gett2a=0x140c_t2a getlbr=0x140c_lbr getaos=0x140c_aos gettol=0x140c_tol @@ -770,6 +800,7 @@ get=0x140c-b 0x140d-b // Bronze Norse Helm - E/W [0x140e-b] { +gett2a=0x140e_t2a getlbr=0x140e_lbr getaos=0x140e_aos gettol=0x140e_tol @@ -795,6 +826,7 @@ get=0x140e-b 0x140f-b // Bronze Plate Helm - N/S [0x1412-b] { +gett2a=0x1412_t2a getlbr=0x1412_lbr getaos=0x1412_aos gettol=0x1412_tol @@ -822,6 +854,7 @@ get=0x1412-b 0x1419-b // Bronze Bronze Shield [0x1b72-b] { +gett2a=0x1b72_t2a getlbr=0x1b72_lbr getaos=0x1b72_aos gettol=0x1b72_tol @@ -840,6 +873,7 @@ get=0x1b72-b // Bronze Buckler [0x1b73-b] { +gett2a=0x1b73_t2a getlbr=0x1b73_lbr getaos=0x1b73_aos gettol=0x1b73_tol @@ -858,6 +892,7 @@ get=0x1b73-b // Bronze Kite Shield (Metal) - N/S [0x1b74-b] { +gett2a=0x1b74_t2a getlbr=0x1b74_lbr getaos=0x1b74_aos gettol=0x1b74_tol @@ -870,6 +905,7 @@ sectionid=0x1b74-b // Bronze Heater Shield - N/S [0x1b76-b] { +gett2a=0x1b76_t2a getlbr=0x1b76_lbr getaos=0x1b76_aos gettol=0x1b76_tol @@ -882,6 +918,7 @@ sectionid=0x1b76-b // Bronze Kite Shield (Wood) - N/S [0x1b78-b] { +gett2a=0x1b78_t2a getlbr=0x1b78_lbr getaos=0x1b78_aos gettol=0x1b78_tol @@ -907,6 +944,7 @@ get=0x1b78-b 0x1b79-b // AgapiteWooden Shield [0x1b7a-b] { +gett2a=0x1b7a_t2a getlbr=0x1b7a_lbr getaos=0x1b7a_aos gettol=0x1b7a_tol @@ -925,6 +963,7 @@ get=0x1b7a-b // Bronze Metal Shield [0x1b7b-b] { +gett2a=0x1b7b_t2a getlbr=0x1b7b_lbr getaos=0x1b7b_aos gettol=0x1b7b_tol @@ -943,6 +982,7 @@ get=0x1b7b-b // Bronze Chaos Shield [0x1bc3-b] { +gett2a=0x1bc3_t2a getlbr=0x1bc3_lbr getaos=0x1bc3_aos gettol=0x1bc3_tol @@ -961,6 +1001,7 @@ get=0x1bc3-b // Bronze Order Shield - N/S [0x1bc4-b] { +gett2a=0x1bc4_t2a getlbr=0x1bc4_lbr getaos=0x1bc4_aos gettol=0x1bc4_tol diff --git a/data/dfndata/items/gear/armor/metal_armor/copper_armor.dfn b/data/dfndata/items/gear/armor/metal_armor/copper_armor.dfn index a9abb3b63..93ceddfd1 100644 --- a/data/dfndata/items/gear/armor/metal_armor/copper_armor.dfn +++ b/data/dfndata/items/gear/armor/metal_armor/copper_armor.dfn @@ -19,6 +19,7 @@ erbonus=2 0 7 2 // Copper Ringmail Gloves - N/S [0x13eb-c] { +gett2a=0x13eb_t2a getlbr=0x13eb_lbr getaos=0x13eb_aos gettol=0x13eb_tol @@ -44,6 +45,7 @@ get=0x13eb-c 0x13f2-c // Copper Ringmail Tunic - N/S [0x13ec-c] { +gett2a=0x13ec_t2a getlbr=0x13ec_lbr getaos=0x13ec_aos gettol=0x13ec_tol @@ -69,6 +71,7 @@ get=0x13ec-c 0x13ed-c // Copper Ringmail Sleeves - N/S [0x13ee-c] { +gett2a=0x13ee_t2a getlbr=0x13ee_lbr getaos=0x13ee_aos gettol=0x13ee_tol @@ -94,6 +97,7 @@ get=0x13ee-c 0x13ef-c // Copper Ringmail Leggings - N/S [0x13f0-c] { +gett2a=0x13f0_t2a getlbr=0x13f0_lbr getaos=0x13f0_aos gettol=0x13f0_tol @@ -121,6 +125,7 @@ get=0x13f0-c 0x13f1-c // Copper Chainmail Coif - N/S [0x13bb-c] { +gett2a=0x13bb_t2a getlbr=0x13bb_lbr getaos=0x13bb_aos gettol=0x13bb_tol @@ -146,6 +151,7 @@ get=0x13bb 0x13c0 // Copper Chainmail Leggings - N/S [0x13be-c] { +gett2a=0x13be_t2a getlbr=0x13be_lbr getaos=0x13be_aos gettol=0x13be_tol @@ -171,6 +177,7 @@ get=0x13be-c 0x13c3-c // Copper Chainmail Tunic - N/S [0x13bf-c] { +gett2a=0x13bf_t2a getlbr=0x13bf_lbr getaos=0x13bf_aos gettol=0x13bf_tol @@ -196,6 +203,7 @@ get=0x13bf-c 0x13c4-c // Copper Female Plate - N/S [0x1c04-c] { +gett2a=0x1c04_t2a getlbr=0x1c04_lbr getaos=0x1c04_aos gettol=0x1c04_tol @@ -223,6 +231,7 @@ get=0x1c04-c 0x1c05-c // Copper Platemail Arms - E/W [0x1410-c] { +gett2a=0x1410_t2a getlbr=0x1410_lbr getaos=0x1410_aos gettol=0x1410_tol @@ -248,6 +257,7 @@ get=0x1410-c 0x1417-c // Copper Platemail Leggings - N/S [0x1411-c] { +gett2a=0x1411_t2a getlbr=0x1411_lbr getaos=0x1411_aos gettol=0x1411_tol @@ -273,6 +283,7 @@ get=0x1411-c 0x141a-c // Copper Platemail Gorget [0x1413-c] { +gett2a=0x1413_t2a getlbr=0x1413_lbr getaos=0x1413_aos gettol=0x1413_tol @@ -291,6 +302,7 @@ get=0x1413-c // Copper Platemail Gloves - N/S [0x1414-c] { +gett2a=0x1414_t2a getlbr=0x1414_lbr getaos=0x1414_aos gettol=0x1414_tol @@ -316,6 +328,7 @@ get=0x1414-c 0x1418-c // Copper Platemail Chest - N/S [0x1415-c] { +gett2a=0x1415_t2a getlbr=0x1415_lbr getaos=0x1415_aos gettol=0x1415_tol @@ -343,6 +356,7 @@ get=0x1415-c 0x1416-c // Copper Heavy Platemail Jingasa - A [0x2777-c] { +gett2a=0x2777_t2a getlbr=0x2777_lbr getaos=0x2777_aos gettol=0x2777_tol @@ -368,6 +382,7 @@ get=0x2777-c 0x27c2-c // Copper Decorative Platemail Kabuto - A [0x2778-c] { +gett2a=0x2778_t2a getlbr=0x2778_lbr getaos=0x2778_aos gettol=0x2778_tol @@ -393,6 +408,7 @@ get=0x2778-c 0x27c3-c // Copper Platemail Do - A [0x277d-c] { +gett2a=0x277d_t2a getlbr=0x277d_lbr getaos=0x277d_aos gettol=0x277d_tol @@ -418,6 +434,7 @@ get=0x277d-c 0x27c8-c // Copper Platemail Hiro Sode - A [0x2780-c] { +gett2a=0x2780_t2a getlbr=0x2780_lbr getaos=0x2780_aos gettol=0x2780_tol @@ -443,6 +460,7 @@ get=0x2780-c 0x27cb-c // Copper Platemail Jingasa - A [0x2781-c] { +gett2a=0x2781_t2a getlbr=0x2781_lbr getaos=0x2781_aos gettol=0x2781_tol @@ -468,6 +486,7 @@ get=0x2781-c 0x27cc-c // Copper Small Platemail Jingasa - A [0x2784-c] { +gett2a=0x2784_t2a getlbr=0x2784_lbr getaos=0x2784_aos gettol=0x2784_tol @@ -493,6 +512,7 @@ get=0x2784-c 0x27cf-c // Copper Platemail Battle Kabuto - A [0x2785-c] { +gett2a=0x2785_t2a getlbr=0x2785_lbr getaos=0x2785_aos gettol=0x2785_tol @@ -518,6 +538,7 @@ get=0x2785-c 0x27d0-c // Copper Platemail Suneate - A [0x2788-c] { +gett2a=0x2788_t2a getlbr=0x2788_lbr getaos=0x2788_aos gettol=0x2788_tol @@ -543,6 +564,7 @@ get=0x2788-c 0x27d3-c // Copper Platemail Kabuto - A [0x2789-c] { +gett2a=0x2789_t2a getlbr=0x2789_lbr getaos=0x2789_aos gettol=0x2789_tol @@ -568,6 +590,7 @@ get=0x2789-c 0x27d4-c // Copper Kabuto - A [0x236c-c] { +gett2a=0x236c_t2a getlbr=0x236c_lbr getaos=0x236c_aos gettol=0x236c_tol @@ -593,6 +616,7 @@ get=0x236c-c 0x236d-c // Copper Platemail Haidate - A [0x278d-c] { +gett2a=0x278d_t2a getlbr=0x278d_lbr getaos=0x278d_aos gettol=0x278d_tol @@ -618,6 +642,7 @@ get=0x278d-c 0x27d8-c // Copper Platemail Hatsuburi - A [0x2775-c] { +gett2a=0x2775_t2a getlbr=0x2775_lbr getaos=0x2775_aos gettol=0x2775_tol @@ -643,6 +668,7 @@ get=0x2775-c 0x27c0-c // Copper Chainmail Hatsuburi - A [0x2774-c] { +gett2a=0x2774_t2a getlbr=0x2774_lbr getaos=0x2774_aos gettol=0x2774_tol @@ -668,6 +694,7 @@ get=0x2774-c 0x27bf-c // Copper Platemail Mempo - E/W [0x2779-c] { +gett2a=0x2779_t2a getlbr=0x2779_lbr getaos=0x2779_aos gettol=0x2779_tol @@ -695,6 +722,7 @@ get=0x2779-c 0x27c4-c // Copper Close Helm - E/W [0x1408-c] { +gett2a=0x1408_t2a getlbr=0x1408_lbr getaos=0x1408_aos gettol=0x1408_tol @@ -720,6 +748,7 @@ get=0x1408-c 0x1409-c // Copper Helmet - E/W [0x140a-c] { +gett2a=0x140a_t2a getlbr=0x140a_lbr getaos=0x140a_aos gettol=0x140a_tol @@ -745,6 +774,7 @@ get=0x140a-c 0x140b-c // Copper Bascinet - E/W [0x140c-c] { +gett2a=0x140c_t2a getlbr=0x140c_lbr getaos=0x140c_aos gettol=0x140c_tol @@ -770,6 +800,7 @@ get=0x140c-c 0x140d-c // Copper Norse Helm - E/W [0x140e-c] { +gett2a=0x140e_t2a getlbr=0x140e_lbr getaos=0x140e_aos gettol=0x140e_tol @@ -795,6 +826,7 @@ get=0x140e-c 0x140f-c // Copper Plate Helm - N/S [0x1412-c] { +gett2a=0x1412_t2a getlbr=0x1412_lbr getaos=0x1412_aos gettol=0x1412_tol @@ -822,6 +854,7 @@ get=0x1412-c 0x1419-c // Copper Copper Shield [0x1b72-c] { +gett2a=0x1b72_t2a getlbr=0x1b72_lbr getaos=0x1b72_aos gettol=0x1b72_tol @@ -840,6 +873,7 @@ get=0x1b72-c // Copper Buckler [0x1b73-c] { +gett2a=0x1b73_t2a getlbr=0x1b73_lbr getaos=0x1b73_aos gettol=0x1b73_tol @@ -858,6 +892,7 @@ get=0x1b73-c // Copper Kite Shield (Metal) - N/S [0x1b74-c] { +gett2a=0x1b74_t2a getlbr=0x1b74_lbr getaos=0x1b74_aos gettol=0x1b74_tol @@ -870,6 +905,7 @@ sectionid=0x1b74-c // Copper Heater Shield - N/S [0x1b76-c] { +gett2a=0x1b76_t2a getlbr=0x1b76_lbr getaos=0x1b76_aos gettol=0x1b76_tol @@ -882,6 +918,7 @@ sectionid=0x1b76-c // Copper Kite Shield (Wood) - N/S [0x1b78-c] { +gett2a=0x1b78_t2a getlbr=0x1b78_lbr getaos=0x1b78_aos gettol=0x1b78_tol @@ -907,6 +944,7 @@ get=0x1b78-c 0x1b79-c // AgapiteWooden Shield [0x1b7a-c] { +gett2a=0x1b7a_t2a getlbr=0x1b7a_lbr getaos=0x1b7a_aos gettol=0x1b7a_tol @@ -925,6 +963,7 @@ get=0x1b7a-c // Copper Metal Shield [0x1b7b-c] { +gett2a=0x1b7b_t2a getlbr=0x1b7b_lbr getaos=0x1b7b_aos gettol=0x1b7b_tol @@ -943,6 +982,7 @@ get=0x1b7b-c // Copper Chaos Shield [0x1bc3-c] { +gett2a=0x1bc3_t2a getlbr=0x1bc3_lbr getaos=0x1bc3_aos gettol=0x1bc3_tol @@ -961,6 +1001,7 @@ get=0x1bc3-c // Copper Order Shield - N/S [0x1bc4-c] { +gett2a=0x1bc4_t2a getlbr=0x1bc4_lbr getaos=0x1bc4_aos gettol=0x1bc4_tol diff --git a/data/dfndata/items/gear/armor/metal_armor/dullcopper_armor.dfn b/data/dfndata/items/gear/armor/metal_armor/dullcopper_armor.dfn index d09684148..5d64e8de4 100644 --- a/data/dfndata/items/gear/armor/metal_armor/dullcopper_armor.dfn +++ b/data/dfndata/items/gear/armor/metal_armor/dullcopper_armor.dfn @@ -19,6 +19,7 @@ hpbonus=50 // Dull Copper Ringmail Gloves - N/S [0x13eb-d] { +gett2a=0x13eb_t2a getlbr=0x13eb_lbr getaos=0x13eb_aos gettol=0x13eb_tol @@ -44,6 +45,7 @@ get=0x13eb-d 0x13f2-d // Dull Copper Ringmail Tunic - N/S [0x13ec-d] { +gett2a=0x13ec_t2a getlbr=0x13ec_lbr getaos=0x13ec_aos gettol=0x13ec_tol @@ -69,6 +71,7 @@ get=0x13ec-d 0x13ed-d // Dull Copper Ringmail Sleeves - N/S [0x13ee-d] { +gett2a=0x13ee_t2a getlbr=0x13ee_lbr getaos=0x13ee_aos gettol=0x13ee_tol @@ -94,6 +97,7 @@ get=0x13ee-d 0x13ef-d // Dull Copper Ringmail Leggings - N/S [0x13f0-d] { +gett2a=0x13f0_t2a getlbr=0x13f0_lbr getaos=0x13f0_aos gettol=0x13f0_tol @@ -121,6 +125,7 @@ get=0x13f0-d 0x13f1-d // Dull Copper Chainmail Coif - N/S [0x13bb-d] { +gett2a=0x13bb_t2a getlbr=0x13bb_lbr getaos=0x13bb_aos gettol=0x13bb_tol @@ -146,6 +151,7 @@ get=0x13bb 0x13c0 // Dull Copper Chainmail Leggings - N/S [0x13be-d] { +gett2a=0x13be_t2a getlbr=0x13be_lbr getaos=0x13be_aos gettol=0x13be_tol @@ -171,6 +177,7 @@ get=0x13be-d 0x13c3-d // Dull Copper Chainmail Tunic - N/S [0x13bf-d] { +gett2a=0x13bf_t2a getlbr=0x13bf_lbr getaos=0x13bf_aos gettol=0x13bf_tol @@ -196,6 +203,7 @@ get=0x13bf-d 0x13c4-d // Dull Copper Female Plate - N/S [0x1c04-d] { +gett2a=0x1c04_t2a getlbr=0x1c04_lbr getaos=0x1c04_aos gettol=0x1c04_tol @@ -223,6 +231,7 @@ get=0x1c04-d 0x1c05-d // Dull Copper Platemail Arms - E/W [0x1410-d] { +gett2a=0x1410_t2a getlbr=0x1410_lbr getaos=0x1410_aos gettol=0x1410_tol @@ -248,6 +257,7 @@ get=0x1410-d 0x1417-d // Dull Copper Platemail Leggings - N/S [0x1411-d] { +gett2a=0x1411_t2a getlbr=0x1411_lbr getaos=0x1411_aos gettol=0x1411_tol @@ -273,6 +283,7 @@ get=0x1411-d 0x141a-d // Dull Copper Platemail Gorget [0x1413-d] { +gett2a=0x1413_t2a getlbr=0x1413_lbr getaos=0x1413_aos gettol=0x1413_tol @@ -291,6 +302,7 @@ get=0x1413-d // Dull Copper Platemail Gloves - N/S [0x1414-d] { +gett2a=0x1414_t2a getlbr=0x1414_lbr getaos=0x1414_aos gettol=0x1414_tol @@ -316,6 +328,7 @@ get=0x1414-d 0x1418-d // Dull Copper Platemail Chest - N/S [0x1415-d] { +gett2a=0x1415_t2a getlbr=0x1415_lbr getaos=0x1415_aos gettol=0x1415_tol @@ -343,6 +356,7 @@ get=0x1415-d 0x1416-d // Dull Copper Heavy Platemail Jingasa - A [0x2777-d] { +gett2a=0x2777_t2a getlbr=0x2777_lbr getaos=0x2777_aos gettol=0x2777_tol @@ -368,6 +382,7 @@ get=0x2777-d 0x27c2-d // Dull Copper Decorative Platemail Kabuto - A [0x2778-d] { +gett2a=0x2778_t2a getlbr=0x2778_lbr getaos=0x2778_aos gettol=0x2778_tol @@ -393,6 +408,7 @@ get=0x2778-d 0x27c3-d // Dull Copper Platemail Do - A [0x277d-d] { +gett2a=0x277d_t2a getlbr=0x277d_lbr getaos=0x277d_aos gettol=0x277d_tol @@ -418,6 +434,7 @@ get=0x277d-d 0x27c8-d // Dull Copper Platemail Hiro Sode - A [0x2780-d] { +gett2a=0x2780_t2a getlbr=0x2780_lbr getaos=0x2780_aos gettol=0x2780_tol @@ -443,6 +460,7 @@ get=0x2780-d 0x27cb-d // Dull Copper Platemail Jingasa - A [0x2781-d] { +gett2a=0x2781_t2a getlbr=0x2781_lbr getaos=0x2781_aos gettol=0x2781_tol @@ -468,6 +486,7 @@ get=0x2781-d 0x27cc-d // Dull Copper Small Platemail Jingasa - A [0x2784-d] { +gett2a=0x2784_t2a getlbr=0x2784_lbr getaos=0x2784_aos gettol=0x2784_tol @@ -493,6 +512,7 @@ get=0x2784-d 0x27cf-d // Dull Copper Platemail Battle Kabuto - A [0x2785-d] { +gett2a=0x2785_t2a getlbr=0x2785_lbr getaos=0x2785_aos gettol=0x2785_tol @@ -518,6 +538,7 @@ get=0x2785-d 0x27d0-d // Dull Copper Platemail Suneate - A [0x2788-d] { +gett2a=0x2788_t2a getlbr=0x2788_lbr getaos=0x2788_aos gettol=0x2788_tol @@ -543,6 +564,7 @@ get=0x2788-d 0x27d3-d // Dull Copper Platemail Kabuto - A [0x2789-d] { +gett2a=0x2789_t2a getlbr=0x2789_lbr getaos=0x2789_aos gettol=0x2789_tol @@ -568,6 +590,7 @@ get=0x2789-d 0x27d4-d // Dull Copper Kabuto - A [0x236c-d] { +gett2a=0x236c_t2a getlbr=0x236c_lbr getaos=0x236c_aos gettol=0x236c_tol @@ -593,6 +616,7 @@ get=0x236c-d 0x236d-d // Dull Copper Platemail Haidate - A [0x278d-d] { +gett2a=0x278d_t2a getlbr=0x278d_lbr getaos=0x278d_aos gettol=0x278d_tol @@ -618,6 +642,7 @@ get=0x278d-d 0x27d8-d // Dull Copper Platemail Hatsuburi - A [0x2775-d] { +gett2a=0x2775_t2a getlbr=0x2775_lbr getaos=0x2775_aos gettol=0x2775_tol @@ -643,6 +668,7 @@ get=0x2775-d 0x27c0-d // Dull Copper Chainmail Hatsuburi - A [0x2774-d] { +gett2a=0x2774_t2a getlbr=0x2774_lbr getaos=0x2774_aos gettol=0x2774_tol @@ -668,6 +694,7 @@ get=0x2774-d 0x27bf-d // Dull Copper Platemail Mempo - E/W [0x2779-d] { +gett2a=0x2779_t2a getlbr=0x2779_lbr getaos=0x2779_aos gettol=0x2779_tol @@ -695,6 +722,7 @@ get=0x2779-d 0x27c4-d // Dull Copper Close Helm - E/W [0x1408-d] { +gett2a=0x1408_t2a getlbr=0x1408_lbr getaos=0x1408_aos gettol=0x1408_tol @@ -720,6 +748,7 @@ get=0x1408-d 0x1409-d // Dull Copper Helmet - E/W [0x140a-d] { +gett2a=0x140a_t2a getlbr=0x140a_lbr getaos=0x140a_aos gettol=0x140a_tol @@ -745,6 +774,7 @@ get=0x140a-d 0x140b-d // Dull Copper Bascinet - E/W [0x140c-d] { +gett2a=0x140c_t2a getlbr=0x140c_lbr getaos=0x140c_aos gettol=0x140c_tol @@ -770,6 +800,7 @@ get=0x140c-d 0x140d-d // Dull Copper Norse Helm - E/W [0x140e-d] { +gett2a=0x140e_t2a getlbr=0x140e_lbr getaos=0x140e_aos gettol=0x140e_tol @@ -795,6 +826,7 @@ get=0x140e-d 0x140f-d // Dull Copper Plate Helm - N/S [0x1412-d] { +gett2a=0x1412_t2a getlbr=0x1412_lbr getaos=0x1412_aos gettol=0x1412_tol @@ -822,6 +854,7 @@ get=0x1412-d 0x1419-d // Dull Copper Dull Copper Shield [0x1b72-d] { +gett2a=0x1b72_t2a getlbr=0x1b72_lbr getaos=0x1b72_aos gettol=0x1b72_tol @@ -840,6 +873,7 @@ get=0x1b72-d // Dull Copper Buckler [0x1b73-d] { +gett2a=0x1b73_t2a getlbr=0x1b73_lbr getaos=0x1b73_aos gettol=0x1b73_tol @@ -858,6 +892,7 @@ get=0x1b73-d // Dull Copper Kite Shield (Metal) - N/S [0x1b74-d] { +gett2a=0x1b74_t2a getlbr=0x1b74_lbr getaos=0x1b74_aos gettol=0x1b74_tol @@ -870,6 +905,7 @@ sectionid=0x1b74-d // Dull Copper Heater Shield - N/S [0x1b76-d] { +gett2a=0x1b76_t2a getlbr=0x1b76_lbr getaos=0x1b76_aos gettol=0x1b76_tol @@ -882,6 +918,7 @@ sectionid=0x1b76-d // Dull Copper Kite Shield (Wood) - N/S [0x1b78-d] { +gett2a=0x1b78_t2a getlbr=0x1b78_lbr getaos=0x1b78_aos gettol=0x1b78_tol @@ -907,6 +944,7 @@ get=0x1b78-d 0x1b79-d // AgapiteWooden Shield [0x1b7a-d] { +gett2a=0x1b7a_t2a getlbr=0x1b7a_lbr getaos=0x1b7a_aos gettol=0x1b7a_tol @@ -925,6 +963,7 @@ get=0x1b7a-d // Dull Copper Metal Shield [0x1b7b-d] { +gett2a=0x1b7b_t2a getlbr=0x1b7b_lbr getaos=0x1b7b_aos gettol=0x1b7b_tol @@ -943,6 +982,7 @@ get=0x1b7b-d // Dull Copper Chaos Shield [0x1bc3-d] { +gett2a=0x1bc3_t2a getlbr=0x1bc3_lbr getaos=0x1bc3_aos gettol=0x1bc3_tol @@ -961,6 +1001,7 @@ get=0x1bc3-d // Dull Copper Order Shield - N/S [0x1bc4-d] { +gett2a=0x1bc4_t2a getlbr=0x1bc4_lbr getaos=0x1bc4_aos gettol=0x1bc4_tol diff --git a/data/dfndata/items/gear/armor/metal_armor/gold_armor.dfn b/data/dfndata/items/gear/armor/metal_armor/gold_armor.dfn index 3276a3274..6f53cab5c 100644 --- a/data/dfndata/items/gear/armor/metal_armor/gold_armor.dfn +++ b/data/dfndata/items/gear/armor/metal_armor/gold_armor.dfn @@ -23,6 +23,7 @@ erbonus=2 3 0 3 // Gold Ringmail Gloves - N/S [0x13eb-g] { +gett2a=0x13eb_t2a getlbr=0x13eb_lbr getaos=0x13eb_aos gettol=0x13eb_tol @@ -48,6 +49,7 @@ get=0x13eb-g 0x13f2-g // Gold Ringmail Tunic - N/S [0x13ec-g] { +gett2a=0x13ec_t2a getlbr=0x13ec_lbr getaos=0x13ec_aos gettol=0x13ec_tol @@ -73,6 +75,7 @@ get=0x13ec-g 0x13ed-g // Gold Ringmail Sleeves - N/S [0x13ee-g] { +gett2a=0x13ee_t2a getlbr=0x13ee_lbr getaos=0x13ee_aos gettol=0x13ee_tol @@ -98,6 +101,7 @@ get=0x13ee-g 0x13ef-g // Gold Ringmail Leggings - N/S [0x13f0-g] { +gett2a=0x13f0_t2a getlbr=0x13f0_lbr getaos=0x13f0_aos gettol=0x13f0_tol @@ -125,6 +129,7 @@ get=0x13f0-g 0x13f1-g // Gold Chainmail Coif - N/S [0x13bb-g] { +gett2a=0x13bb_t2a getlbr=0x13bb_lbr getaos=0x13bb_aos gettol=0x13bb_tol @@ -150,6 +155,7 @@ get=0x13bb 0x13c0 // Gold Chainmail Leggings - N/S [0x13be-g] { +gett2a=0x13be_t2a getlbr=0x13be_lbr getaos=0x13be_aos gettol=0x13be_tol @@ -175,6 +181,7 @@ get=0x13be-g 0x13c3-g // Gold Chainmail Tunic - N/S [0x13bf-g] { +gett2a=0x13bf_t2a getlbr=0x13bf_lbr getaos=0x13bf_aos gettol=0x13bf_tol @@ -200,6 +207,7 @@ get=0x13bf-g 0x13c4-g // Gold Female Plate - N/S [0x1c04-g] { +gett2a=0x1c04_t2a getlbr=0x1c04_lbr getaos=0x1c04_aos gettol=0x1c04_tol @@ -227,6 +235,7 @@ get=0x1c04-g 0x1c05-g // Gold Platemail Arms - E/W [0x1410-g] { +gett2a=0x1410_t2a getlbr=0x1410_lbr getaos=0x1410_aos gettol=0x1410_tol @@ -252,6 +261,7 @@ get=0x1410-g 0x1417-g // Gold Platemail Leggings - N/S [0x1411-g] { +gett2a=0x1411_t2a getlbr=0x1411_lbr getaos=0x1411_aos gettol=0x1411_tol @@ -277,6 +287,7 @@ get=0x1411-g 0x141a-g // Gold Platemail Gorget [0x1413-g] { +gett2a=0x1413_t2a getlbr=0x1413_lbr getaos=0x1413_aos gettol=0x1413_tol @@ -295,6 +306,7 @@ get=0x1413-g // Gold Platemail Gloves - N/S [0x1414-g] { +gett2a=0x1414_t2a getlbr=0x1414_lbr getaos=0x1414_aos gettol=0x1414_tol @@ -320,6 +332,7 @@ get=0x1414-g 0x1418-g // Gold Platemail Chest - N/S [0x1415-g] { +gett2a=0x1415_t2a getlbr=0x1415_lbr getaos=0x1415_aos gettol=0x1415_tol @@ -347,6 +360,7 @@ get=0x1415-g 0x1416-g // Gold Heavy Platemail Jingasa - A [0x2777-g] { +gett2a=0x2777_t2a getlbr=0x2777_lbr getaos=0x2777_aos gettol=0x2777_tol @@ -372,6 +386,7 @@ get=0x2777-g 0x27c2-g // Gold Decorative Platemail Kabuto - A [0x2778-g] { +gett2a=0x2778_t2a getlbr=0x2778_lbr getaos=0x2778_aos gettol=0x2778_tol @@ -397,6 +412,7 @@ get=0x2778-g 0x27c3-g // Gold Platemail Do - A [0x277d-g] { +gett2a=0x277d_t2a getlbr=0x277d_lbr getaos=0x277d_aos gettol=0x277d_tol @@ -422,7 +438,8 @@ get=0x277d-g 0x27c8-g // Gold Platemail Hiro Sode - A [0x2780-g] { -getlbr=0x2780_lbr +gett2a=0x2780_lbr +getlbr=0x2780_t2a getaos=0x2780_aos gettol=0x2780_tol getaos=gold_armor_bonus_aos @@ -447,7 +464,8 @@ get=0x2780-g 0x27cb-g // Gold Platemail Jingasa - A [0x2781-g] { -getlbr=0x2781_lbr +gett2a=0x2781_lbr +getlbr=0x2781_t2a getaos=0x2781_aos gettol=0x2781_tol getaos=gold_armor_bonus_aos @@ -472,7 +490,8 @@ get=0x2781-g 0x27cc-g // Gold Small Platemail Jingasa - A [0x2784-g] { -getlbr=0x2784_lbr +gett2a=0x2784_lbr +getlbr=0x2784_t2a getaos=0x2784_aos gettol=0x2784_tol getaos=gold_armor_bonus_aos @@ -497,7 +516,8 @@ get=0x2784-g 0x27cf-g // Gold Platemail Battle Kabuto - A [0x2785-g] { -getlbr=0x2785_lbr +gett2a=0x2785_lbr +getlbr=0x2785_t2a getaos=0x2785_aos gettol=0x2785_tol getaos=gold_armor_bonus_aos @@ -522,7 +542,8 @@ get=0x2785-g 0x27d0-g // Gold Platemail Suneate - A [0x2788-g] { -getlbr=0x2788_lbr +gett2a=0x2788_lbr +getlbr=0x2788_t2a getaos=0x2788_aos gettol=0x2788_tol getaos=gold_armor_bonus_aos @@ -547,7 +568,8 @@ get=0x2788-g 0x27d3-g // Gold Platemail Kabuto - A [0x2789-g] { -getlbr=0x2789_lbr +gett2a=0x2789_lbr +getlbr=0x2789_t2a getaos=0x2789_aos gettol=0x2789_tol getaos=gold_armor_bonus_aos @@ -572,7 +594,8 @@ get=0x2789-g 0x27d4-g // Gold Kabuto - A [0x236c-g] { -getlbr=0x236c_lbr +gett2a=0x236c_lbr +getlbr=0x236c_t2a getaos=0x236c_aos gettol=0x236c_tol getaos=gold_armor_bonus_aos @@ -597,7 +620,8 @@ get=0x236c-g 0x236d-g // Gold Platemail Haidate - A [0x278d-g] { -getlbr=0x278d_lbr +gett2a=0x278d_lbr +getlbr=0x278d_t2a getaos=0x278d_aos gettol=0x278d_tol getaos=gold_armor_bonus_aos @@ -622,7 +646,8 @@ get=0x278d-g 0x27d8-g // Gold Platemail Hatsuburi - A [0x2775-g] { -getlbr=0x2775_lbr +gett2a=0x2775_lbr +getlbr=0x2775_t2a getaos=0x2775_aos gettol=0x2775_tol getaos=gold_armor_bonus_aos @@ -647,7 +672,8 @@ get=0x2775-g 0x27c0-g // Gold Chainmail Hatsuburi - A [0x2774-g] { -getlbr=0x2774_lbr +gett2a=0x2774_lbr +getlbr=0x2774_t2a getaos=0x2774_aos gettol=0x2774_tol getaos=gold_armor_bonus_aos @@ -672,7 +698,8 @@ get=0x2774-g 0x27bf-g // Gold Platemail Mempo - E/W [0x2779-g] { -getlbr=0x2779_lbr +gett2a=0x2779_lbr +getlbr=0x2779_t2a getaos=0x2779_aos gettol=0x2779_tol getaos=gold_armor_bonus_aos @@ -699,7 +726,8 @@ get=0x2779-g 0x27c4-g // Gold Close Helm - E/W [0x1408-g] { -getlbr=0x1408_lbr +gett2a=0x1408_lbr +getlbr=0x1408_t2a getaos=0x1408_aos gettol=0x1408_tol getaos=gold_armor_bonus_aos @@ -724,7 +752,8 @@ get=0x1408-g 0x1409-g // Gold Helmet - E/W [0x140a-g] { -getlbr=0x140a_lbr +gett2a=0x140a_lbr +getlbr=0x140a_t2a getaos=0x140a_aos gettol=0x140a_tol getaos=gold_armor_bonus_aos @@ -749,6 +778,7 @@ get=0x140a-g 0x140b-g // Gold Bascinet - E/W [0x140c-g] { +gett2a=0x140c_t2a getlbr=0x140c_lbr getaos=0x140c_aos gettol=0x140c_tol @@ -774,6 +804,7 @@ get=0x140c-g 0x140d-g // Gold Norse Helm - E/W [0x140e-g] { +gett2a=0x140e_t2a getlbr=0x140e_lbr getaos=0x140e_aos gettol=0x140e_tol @@ -799,6 +830,7 @@ get=0x140e-g 0x140f-g // Gold Plate Helm - N/S [0x1412-g] { +gett2a=0x1412_t2a getlbr=0x1412_lbr getaos=0x1412_aos gettol=0x1412_tol @@ -826,6 +858,7 @@ get=0x1412-g 0x1419-g // Gold Gold Shield [0x1b72-g] { +gett2a=0x1b72_t2a getlbr=0x1b72_lbr getaos=0x1b72_aos gettol=0x1b72_tol @@ -844,6 +877,7 @@ get=0x1b72-g // Gold Buckler [0x1b73-g] { +gett2a=0x1b73_t2a getlbr=0x1b73_lbr getaos=0x1b73_aos gettol=0x1b73_tol @@ -862,6 +896,7 @@ get=0x1b73-g // Gold Kite Shield (Metal) - N/S [0x1b74-g] { +gett2a=0x1b74_t2a getlbr=0x1b74_lbr getaos=0x1b74_aos gettol=0x1b74_tol @@ -874,6 +909,7 @@ sectionid=0x1b74-g // Gold Heater Shield - N/S [0x1b76-g] { +gett2a=0x1b76_t2a getlbr=0x1b76_lbr getaos=0x1b76_aos gettol=0x1b76_tol @@ -886,6 +922,7 @@ sectionid=0x1b76-g // Gold Kite Shield (Wood) - N/S [0x1b78-g] { +gett2a=0x1b78_t2a getlbr=0x1b78_lbr getaos=0x1b78_aos gettol=0x1b78_tol @@ -911,6 +948,7 @@ get=0x1b78-g 0x1b79-g // AgapiteWooden Shield [0x1b7a-g] { +gett2a=0x1b7a_t2a getlbr=0x1b7a_lbr getaos=0x1b7a_aos gettol=0x1b7a_tol @@ -929,6 +967,7 @@ get=0x1b7a-g // Gold Metal Shield [0x1b7b-g] { +gett2a=0x1b7b_t2a getlbr=0x1b7b_lbr getaos=0x1b7b_aos gettol=0x1b7b_tol @@ -947,6 +986,7 @@ get=0x1b7b-g // Gold Chaos Shield [0x1bc3-g] { +gett2a=0x1bc3_t2a getlbr=0x1bc3_lbr getaos=0x1bc3_aos gettol=0x1bc3_tol @@ -965,6 +1005,7 @@ get=0x1bc3-g // Gold Order Shield - N/S [0x1bc4-g] { +gett2a=0x1bc4_t2a getlbr=0x1bc4_lbr getaos=0x1bc4_aos gettol=0x1bc4_tol diff --git a/data/dfndata/items/gear/armor/metal_armor/iron_armor.dfn b/data/dfndata/items/gear/armor/metal_armor/iron_armor.dfn index 367f8d9a9..1523e0494 100644 --- a/data/dfndata/items/gear/armor/metal_armor/iron_armor.dfn +++ b/data/dfndata/items/gear/armor/metal_armor/iron_armor.dfn @@ -3,6 +3,7 @@ // Ringmail Gloves - N/S [0x13eb] { +gett2a=0x13eb_t2a getlbr=0x13eb_lbr getaos=0x13eb_aos gettol=0x13eb_tol @@ -25,6 +26,7 @@ get=0x13eb 0x13f2 // Ringmail Tunic - N/S [0x13ec] { +gett2a=0x13ec_t2a getlbr=0x13ec_lbr getaos=0x13ec_aos gettol=0x13ec_tol @@ -47,6 +49,7 @@ get=0x13ec 0x13ed // Ringmail Sleeves - N/S [0x13ee] { +gett2a=0x13ee_t2a getlbr=0x13ee_lbr getaos=0x13ee_aos gettol=0x13ee_tol @@ -69,6 +72,7 @@ get=0x13ee 0x13ef // Ringmail Leggings - N/S [0x13f0] { +gett2a=0x13f0_t2a getlbr=0x13f0_lbr getaos=0x13f0_aos gettol=0x13f0_tol @@ -93,6 +97,7 @@ get=0x13f0 0x13f1 // Chainmail Coif - N/S [0x13bb] { +gett2a=0x13bb_t2a getlbr=0x13bb_lbr getaos=0x13bb_aos gettol=0x13bb_tol @@ -115,6 +120,7 @@ get=0x13bb 0x13c0 // Chainmail Leggings - N/S [0x13be] { +gett2a=0x13be_t2a getlbr=0x13be_lbr getaos=0x13be_aos gettol=0x13be_tol @@ -137,6 +143,7 @@ get=0x13be 0x13c3 // Chainmail Tunic - N/S [0x13bf] { +gett2a=0x13bf_t2a getlbr=0x13bf_lbr getaos=0x13bf_aos gettol=0x13bf_tol @@ -161,6 +168,7 @@ get=0x13bf 0x13c4 // Female Plate - N/S [0x1c04] { +gett2a=0x1c04_t2a getlbr=0x1c04_lbr getaos=0x1c04_aos gettol=0x1c04_tol @@ -183,6 +191,7 @@ get=0x1c04 0x1c05 // Platemail Arms - E/W [0x1410] { +gett2a=0x1410_t2a getlbr=0x1410_lbr getaos=0x1410_aos gettol=0x1410_tol @@ -205,6 +214,7 @@ get=0x1410 0x1417 // Platemail Leggings - E/W [0x1411] { +gett2a=0x1411_t2a getlbr=0x1411_lbr getaos=0x1411_aos gettol=0x1411_tol @@ -227,6 +237,7 @@ get=0x1411 0x141a // Platemail Gorget [0x1413] { +gett2a=0x1413_t2a getlbr=0x1413_lbr getaos=0x1413_aos gettol=0x1413_tol @@ -242,6 +253,7 @@ get=0x1413 // Platemail Gloves - E/W [0x1414] { +gett2a=0x1414_t2a getlbr=0x1414_lbr getaos=0x1414_aos gettol=0x1414_tol @@ -264,6 +276,7 @@ get=0x1414 0x1418 // Platemail Chest - E/W [0x1415] { +gett2a=0x1415_t2a getlbr=0x1415_lbr getaos=0x1415_aos gettol=0x1415_tol @@ -288,6 +301,7 @@ get=0x1415 0x1416 // Close Helm(et) - N/S Variant [0x1408] { +gett2a=0x1408_t2a getlbr=0x1408_lbr getaos=0x1408_aos gettol=0x1408_tol @@ -310,6 +324,7 @@ get=0x1408 0x1409 // Helmet - N/S [0x140a] { +gett2a=0x140a_t2a getlbr=0x140a_lbr getaos=0x140a_aos gettol=0x140a_tol @@ -332,6 +347,7 @@ get=0x140a 0x140b // Bascinet - N/S [0x140c] { +gett2a=0x140c_t2a getlbr=0x140c_lbr getaos=0x140c_aos gettol=0x140c_tol @@ -354,6 +370,7 @@ get=0x140c 0x140d // Norse Helm - N/S [0x140e] { +gett2a=0x140e_t2a getlbr=0x140e_lbr getaos=0x140e_aos gettol=0x140e_tol @@ -376,6 +393,7 @@ get=0x140e 0x140f // Plate Helm - E/W [0x1412] { +gett2a=0x1412_t2a getlbr=0x1412_lbr getaos=0x1412_aos gettol=0x1412_tol @@ -400,6 +418,7 @@ get=0x1412 0x1419 // Heavy Platemail Jingasa - A [0x2777] { +gett2a=0x2777_t2a getlbr=0x2777_lbr getaos=0x2777_aos gettol=0x2777_tol @@ -422,6 +441,7 @@ get=0x2777 0x27c2 // Decorative Platemail Kabuto - A [0x2778] { +gett2a=0x2778_t2a getlbr=0x2778_lbr getaos=0x2778_aos gettol=0x2778_tol @@ -444,6 +464,7 @@ get=0x2778 0x27c3 // Platemail Do - A [0x277d] { +gett2a=0x277d_t2a getlbr=0x277d_lbr getaos=0x277d_aos gettol=0x277d_tol @@ -466,6 +487,7 @@ get=0x277d 0x27c8 // Platemail Hiro Sode - A [0x2780] { +gett2a=0x2780_t2a getlbr=0x2780_lbr getaos=0x2780_aos gettol=0x2780_tol @@ -488,6 +510,7 @@ get=0x2780 0x27cb // Platemail Jingasa - A [0x2781] { +gett2a=0x2781_t2a getlbr=0x2781_lbr getaos=0x2781_aos gettol=0x2781_tol @@ -510,6 +533,7 @@ get=0x2781 0x27cc // Small Platemail Jingasa - A [0x2784] { +gett2a=0x2784_t2a getlbr=0x2784_lbr getaos=0x2784_aos gettol=0x2784_tol @@ -532,6 +556,7 @@ get=0x2784 0x27cf // Platemail Battle Kabuto - A [0x2785] { +gett2a=0x2785_t2a getlbr=0x2785_lbr getaos=0x2785_aos gettol=0x2785_tol @@ -554,6 +579,7 @@ get=0x2785 0x27d0 // Platemail Suneate - A [0x2788] { +gett2a=0x2788_t2a getlbr=0x2788_lbr getaos=0x2788_aos gettol=0x2788_tol @@ -576,6 +602,7 @@ get=0x2788 0x27d3 // Platemail Kabuto - A [0x2789] { +gett2a=0x2789_t2a getlbr=0x2789_lbr getaos=0x2789_aos gettol=0x2789_tol @@ -598,6 +625,7 @@ get=0x2789 0x27d4 // Kabuto - A [0x236c] { +gett2a=0x236c_t2a getlbr=0x236c_lbr getaos=0x236c_aos gettol=0x236c_tol @@ -620,6 +648,7 @@ get=0x236c 0x236d // Platemail Haidate - A [0x278d] { +gett2a=0x278d_t2a getlbr=0x278d_lbr getaos=0x278d_aos gettol=0x278d_tol @@ -642,6 +671,7 @@ get=0x278d 0x27d8 // Platemail Hatsuburi - A [0x2775] { +gett2a=0x2775_t2a getlbr=0x2775_lbr getaos=0x2775_aos gettol=0x2775_tol @@ -664,6 +694,7 @@ get=0x2775 0x27c0 // Chainmail Hatsuburi - A [0x2774] { +gett2a=0x2774_t2a getlbr=0x2774_lbr getaos=0x2774_aos gettol=0x2774_tol @@ -686,6 +717,7 @@ get=0x2774 0x27bf // Platemail Mempo - E/W [0x2779] { +gett2a=0x2779_t2a getlbr=0x2779_lbr getaos=0x2779_aos gettol=0x2779_tol @@ -710,6 +742,7 @@ get=0x2779 0x27c4 // Bronze Shield [0x1b72] { +gett2a=0x1b72_t2a getlbr=0x1b72_lbr getaos=0x1b72_aos gettol=0x1b72_tol @@ -725,6 +758,7 @@ get=0x1b72 // Buckler [0x1b73] { +gett2a=0x1b73_t2a getlbr=0x1b73_lbr getaos=0x1b73_aos gettol=0x1b73_tol @@ -740,6 +774,7 @@ get=0x1b73 // Metal Kite Shield - N/S [0x1b74] { +gett2a=0x1b74_t2a getlbr=0x1b74_lbr getaos=0x1b74_aos gettol=0x1b74_tol @@ -762,6 +797,7 @@ get=0x1b74 0x1b75 // Heater Shield - N/S [0x1b76] { +gett2a=0x1b76_t2a getlbr=0x1b76_lbr getaos=0x1b76_aos gettol=0x1b76_tol @@ -784,6 +820,7 @@ get=0x1b76 0x1b77 // Kite Shield (wooden) - N/S [0x1b78] { +gett2a=0x1b78_t2a getlbr=0x1b78_lbr getaos=0x1b78_aos gettol=0x1b78_tol @@ -806,6 +843,7 @@ get=0x1b78 0x1b79 // Wooden Shield [0x1b7a] { +gett2a=0x1b7a_t2a getlbr=0x1b7a_lbr getaos=0x1b7a_aos gettol=0x1b7a_tol @@ -821,6 +859,7 @@ get=0x1b7a // Metal Shield [0x1b7b] { +gett2a=0x1b7b_t2a getlbr=0x1b7b_lbr getaos=0x1b7b_aos gettol=0x1b7b_tol @@ -836,6 +875,7 @@ get=0x1b7b // Chaos Shield [0x1bc3] { +gett2a=0x1bc3_t2a getlbr=0x1bc3_lbr getaos=0x1bc3_aos gettol=0x1bc3_tol @@ -851,6 +891,7 @@ get=0x1bc3 // Order Shield - N/S [0x1bc4] { +gett2a=0x1bc4_t2a getlbr=0x1bc4_lbr getaos=0x1bc4_aos gettol=0x1bc4_tol @@ -875,6 +916,7 @@ get=0x1bc4 0x1bc5 // Gargish Chaos Shield - E/W [0x4228] { +gett2a=0x4228_t2a getlbr=0x4228_lbr getaos=0x4228_aos gettol=0x4228_tol @@ -897,6 +939,7 @@ get=0x4228 0x4229 // Gargish Kite Shield - N/S [0x4201] { +gett2a=0x4201_t2a getlbr=0x4201_lbr getaos=0x4201_aos gettol=0x4201_tol @@ -919,6 +962,7 @@ get=0x4201 0x4206 // Gargish Order Shield - E/W [0x422a] { +gett2a=0x422a_t2a getlbr=0x422a_lbr getaos=0x422a_aos gettol=0x422a_tol @@ -941,6 +985,7 @@ get=0x422a 0x422c // Large Plate Shield - N/S [0x4204] { +gett2a=0x4204_t2a getlbr=0x4204_lbr getaos=0x4204_aos gettol=0x4204_tol @@ -963,6 +1008,7 @@ get=0x4204 0x4208 // Large Stone Shield - N/S [0x4205] { +gett2a=0x4205_t2a getlbr=0x4205_lbr getaos=0x4205_aos gettol=0x4205_tol @@ -985,6 +1031,7 @@ get=0x4205 0x420b // Medium Plate Shield - N/S [0x4203] { +gett2a=0x4203_t2a getlbr=0x4203_lbr getaos=0x4203_aos gettol=0x4203_tol @@ -1007,6 +1054,7 @@ get=0x4203 0x4209 // Small Plate Shield - N/S [0x4202] { +gett2a=0x4202_t2a getlbr=0x4202_lbr getaos=0x4202_aos gettol=0x4202_tol @@ -1029,6 +1077,7 @@ get=0x4202 0x420a // Gargish Wooden Shield - N/S [0x4200] { +gett2a=0x4200_t2a getlbr=0x4200_lbr getaos=0x4200_aos gettol=0x4200_tol @@ -1053,6 +1102,7 @@ get=0x4200 0x4207 // Circlet [0x2b6e] { +gett2a=0x2b6e_t2a getlbr=0x2b6e_lbr getaos=0x2b6e_aos gettol=0x2b6e_tol @@ -1068,6 +1118,7 @@ get=0x2b6e // Royal Circlet [0x2b6f] { +gett2a=0x2b6f_t2a getlbr=0x2b6f_lbr getaos=0x2b6f_aos gettol=0x2b6f_tol @@ -1083,6 +1134,7 @@ get=0x2b6f // Gemmed Circlet [0x2b70] { +gett2a=0x2b70_t2a getlbr=0x2b70_lbr getaos=0x2b70_aos gettol=0x2b70_tol diff --git a/data/dfndata/items/gear/armor/metal_armor/shadow_armor.dfn b/data/dfndata/items/gear/armor/metal_armor/shadow_armor.dfn index 4e1e4354b..8c1c1713b 100644 --- a/data/dfndata/items/gear/armor/metal_armor/shadow_armor.dfn +++ b/data/dfndata/items/gear/armor/metal_armor/shadow_armor.dfn @@ -21,6 +21,7 @@ hpbonus=100 // Shadow Ringmail Gloves - N/S [0x13eb-s] { +getlbr=0x13eb_t2a getlbr=0x13eb_lbr getaos=0x13eb_aos gettol=0x13eb_tol @@ -46,6 +47,7 @@ get=0x13eb-s 0x13f2-s // Shadow Ringmail Tunic - N/S [0x13ec-s] { +getlbr=0x13ec_t2a getlbr=0x13ec_lbr getaos=0x13ec_aos gettol=0x13ec_tol @@ -71,6 +73,7 @@ get=0x13ec-s 0x13ed-s // Shadow Ringmail Sleeves - N/S [0x13ee-s] { +getlbr=0x13ee_t2a getlbr=0x13ee_lbr getaos=0x13ee_aos gettol=0x13ee_tol @@ -96,6 +99,7 @@ get=0x13ee-s 0x13ef-s // Shadow Ringmail Leggings - N/S [0x13f0-s] { +getlbr=0x13f0_t2a getlbr=0x13f0_lbr getaos=0x13f0_aos gettol=0x13f0_tol @@ -123,6 +127,7 @@ get=0x13f0-s 0x13f1-s // Shadow Chainmail Coif - N/S [0x13bb-s] { +getlbr=0x13bb_t2a getlbr=0x13bb_lbr getaos=0x13bb_aos gettol=0x13bb_tol @@ -148,6 +153,7 @@ get=0x13bb 0x13c0 // Shadow Chainmail Leggings - N/S [0x13be-s] { +getlbr=0x13be_t2a getlbr=0x13be_lbr getaos=0x13be_aos gettol=0x13be_tol @@ -173,6 +179,7 @@ get=0x13be-s 0x13c3-s // Shadow Chainmail Tunic - N/S [0x13bf-s] { +getlbr=0x13bf_t2a getlbr=0x13bf_lbr getaos=0x13bf_aos gettol=0x13bf_tol @@ -198,6 +205,7 @@ get=0x13bf-s 0x13c4-s // Shadow Female Plate - N/S [0x1c04-s] { +getlbr=0x1c04_t2a getlbr=0x1c04_lbr getaos=0x1c04_aos gettol=0x1c04_tol @@ -225,6 +233,7 @@ get=0x1c04-s 0x1c05-s // Shadow Platemail Arms - E/W [0x1410-s] { +getlbr=0x1410_t2a getlbr=0x1410_lbr getaos=0x1410_aos gettol=0x1410_tol @@ -250,6 +259,7 @@ get=0x1410-s 0x1417-s // Shadow Platemail Leggings - N/S [0x1411-s] { +getlbr=0x1411_t2a getlbr=0x1411_lbr getaos=0x1411_aos gettol=0x1411_tol @@ -275,6 +285,7 @@ get=0x1411-s 0x141a-s // Shadow Platemail Gorget [0x1413-s] { +getlbr=0x1413_t2a getlbr=0x1413_lbr getaos=0x1413_aos gettol=0x1413_tol @@ -293,6 +304,7 @@ get=0x1413-s // Shadow Platemail Gloves - N/S [0x1414-s] { +getlbr=0x1414_t2a getlbr=0x1414_lbr getaos=0x1414_aos gettol=0x1414_tol @@ -318,6 +330,7 @@ get=0x1414-s 0x1418-s // Shadow Platemail Chest - N/S [0x1415-s] { +getlbr=0x1415_t2a getlbr=0x1415_lbr getaos=0x1415_aos gettol=0x1415_tol @@ -345,6 +358,7 @@ get=0x1415-s 0x1416-s // Shadow Heavy Platemail Jingasa - A [0x2777-s] { +getlbr=0x2777_t2a getlbr=0x2777_lbr getaos=0x2777_aos gettol=0x2777_tol @@ -370,6 +384,7 @@ get=0x2777-s 0x27c2-s // Shadow Decorative Platemail Kabuto - A [0x2778-s] { +getlbr=0x2778_t2a getlbr=0x2778_lbr getaos=0x2778_aos gettol=0x2778_tol @@ -395,6 +410,7 @@ get=0x2778-s 0x27c3-s // Shadow Platemail Do - A [0x277d-s] { +getlbr=0x277d_t2a getlbr=0x277d_lbr getaos=0x277d_aos gettol=0x277d_tol @@ -420,6 +436,7 @@ get=0x277d-s 0x27c8-s // Shadow Platemail Hiro Sode - A [0x2780-s] { +getlbr=0x2780_t2a getlbr=0x2780_lbr getaos=0x2780_aos gettol=0x2780_tol @@ -445,6 +462,7 @@ get=0x2780-s 0x27cb-s // Shadow Platemail Jingasa - A [0x2781-s] { +getlbr=0x2781_t2a getlbr=0x2781_lbr getaos=0x2781_aos gettol=0x2781_tol @@ -470,6 +488,7 @@ get=0x2781-s 0x27cc-s // Shadow Small Platemail Jingasa - A [0x2784-s] { +getlbr=0x2784_t2a getlbr=0x2784_lbr getaos=0x2784_aos gettol=0x2784_tol @@ -495,6 +514,7 @@ get=0x2784-s 0x27cf-s // Shadow Platemail Battle Kabuto - A [0x2785-s] { +getlbr=0x2785_t2a getlbr=0x2785_lbr getaos=0x2785_aos gettol=0x2785_tol @@ -520,6 +540,7 @@ get=0x2785-s 0x27d0-s // Shadow Platemail Suneate - A [0x2788-s] { +getlbr=0x2788_t2a getlbr=0x2788_lbr getaos=0x2788_aos gettol=0x2788_tol @@ -545,6 +566,7 @@ get=0x2788-s 0x27d3-s // Shadow Platemail Kabuto - A [0x2789-s] { +getlbr=0x2789_t2a getlbr=0x2789_lbr getaos=0x2789_aos gettol=0x2789_tol @@ -570,6 +592,7 @@ get=0x2789-s 0x27d4-s // Shadow Kabuto - A [0x236c-s] { +getlbr=0x236c_t2a getlbr=0x236c_lbr getaos=0x236c_aos gettol=0x236c_tol @@ -595,6 +618,7 @@ get=0x236c-s 0x236d-s // Shadow Platemail Haidate - A [0x278d-s] { +getlbr=0x278d_t2a getlbr=0x278d_lbr getaos=0x278d_aos gettol=0x278d_tol @@ -620,6 +644,7 @@ get=0x278d-s 0x27d8-s // Shadow Platemail Hatsuburi - A [0x2775-s] { +getlbr=0x2775_t2a getlbr=0x2775_lbr getaos=0x2775_aos gettol=0x2775_tol @@ -645,6 +670,7 @@ get=0x2775-s 0x27c0-s // Shadow Chainmail Hatsuburi - A [0x2774-s] { +getlbr=0x2774_t2a getlbr=0x2774_lbr getaos=0x2774_aos gettol=0x2774_tol @@ -670,6 +696,7 @@ get=0x2774-s 0x27bf-s // Shadow Platemail Mempo - E/W [0x2779-s] { +getlbr=0x2779_t2a getlbr=0x2779_lbr getaos=0x2779_aos gettol=0x2779_tol @@ -697,6 +724,7 @@ get=0x2779-s 0x27c4-s // Shadow Close Helm - E/W [0x1408-s] { +getlbr=0x1408_t2a getlbr=0x1408_lbr getaos=0x1408_aos gettol=0x1408_tol @@ -722,6 +750,7 @@ get=0x1408-s 0x1409-s // Shadow Helmet - E/W [0x140a-s] { +getlbr=0x140a_t2a getlbr=0x140a_lbr getaos=0x140a_aos gettol=0x140a_tol @@ -747,6 +776,7 @@ get=0x140a-s 0x140b-s // Shadow Bascinet - E/W [0x140c-s] { +getlbr=0x140c_t2a getlbr=0x140c_lbr getaos=0x140c_aos gettol=0x140c_tol @@ -772,6 +802,7 @@ get=0x140c-s 0x140d-s // Shadow Norse Helm - E/W [0x140e-s] { +getlbr=0x140e_t2a getlbr=0x140e_lbr getaos=0x140e_aos gettol=0x140e_tol @@ -797,6 +828,7 @@ get=0x140e-s 0x140f-s // Shadow Plate Helm - N/S [0x1412-s] { +getlbr=0x1412_t2a getlbr=0x1412_lbr getaos=0x1412_aos gettol=0x1412_tol @@ -824,6 +856,7 @@ get=0x1412-s 0x1419-s // Shadow Shadow Shield [0x1b72-s] { +getlbr=0x1b72_t2a getlbr=0x1b72_lbr getaos=0x1b72_aos gettol=0x1b72_tol @@ -842,6 +875,7 @@ get=0x1b72-s // Shadow Buckler [0x1b73-s] { +getlbr=0x1b73_t2a getlbr=0x1b73_lbr getaos=0x1b73_aos gettol=0x1b73_tol @@ -860,6 +894,7 @@ get=0x1b73-s // Shadow Kite Shield (Metal) - N/S [0x1b74-s] { +getlbr=0x1b74_t2a getlbr=0x1b74_lbr getaos=0x1b74_aos gettol=0x1b74_tol @@ -872,6 +907,7 @@ sectionid=0x1b74-s // Shadow Heater Shield - N/S [0x1b76-s] { +getlbr=0x1b76_t2a getlbr=0x1b76_lbr getaos=0x1b76_aos gettol=0x1b76_tol @@ -884,6 +920,7 @@ sectionid=0x1b76-s // Shadow Kite Shield (Wood) - N/S [0x1b78-s] { +getlbr=0x1b78_t2a getlbr=0x1b78_lbr getaos=0x1b78_aos gettol=0x1b78_tol @@ -909,6 +946,7 @@ get=0x1b78-s 0x1b79-s // AgapiteWooden Shield [0x1b7a-s] { +getlbr=0x1b7a_t2a getlbr=0x1b7a_lbr getaos=0x1b7a_aos gettol=0x1b7a_tol @@ -927,6 +965,7 @@ get=0x1b7a-s // Shadow Metal Shield [0x1b7b-s] { +getlbr=0x1b7b_t2a getlbr=0x1b7b_lbr getaos=0x1b7b_aos gettol=0x1b7b_tol @@ -945,6 +984,7 @@ get=0x1b7b-s // Shadow Chaos Shield [0x1bc3-s] { +getlbr=0x1bc3_t2a getlbr=0x1bc3_lbr getaos=0x1bc3_aos gettol=0x1bc3_tol @@ -963,6 +1003,7 @@ get=0x1bc3-s // Shadow Order Shield - N/S [0x1bc4-s] { +getlbr=0x1bc4_t2a getlbr=0x1bc4_lbr getaos=0x1bc4_aos gettol=0x1bc4_tol diff --git a/data/dfndata/items/gear/armor/metal_armor/valorite_armor.dfn b/data/dfndata/items/gear/armor/metal_armor/valorite_armor.dfn index 3fe46fa9a..d211c654a 100644 --- a/data/dfndata/items/gear/armor/metal_armor/valorite_armor.dfn +++ b/data/dfndata/items/gear/armor/metal_armor/valorite_armor.dfn @@ -21,6 +21,7 @@ hpbonus=50 // Valorite Ringmail Gloves - N/S [0x13eb-va] { +gett2a=0x13eb_t2a getlbr=0x13eb_lbr getaos=0x13eb_aos gettol=0x13eb_tol @@ -46,6 +47,7 @@ get=0x13eb-va 0x13f2-va // Valorite Ringmail Tunic - N/S [0x13ec-va] { +gett2a=0x13ec_t2a getlbr=0x13ec_lbr getaos=0x13ec_aos gettol=0x13ec_tol @@ -71,6 +73,7 @@ get=0x13ec-va 0x13ed-va // Valorite Ringmail Sleeves - N/S [0x13ee-va] { +gett2a=0x13ee_t2a getlbr=0x13ee_lbr getaos=0x13ee_aos gettol=0x13ee_tol @@ -96,6 +99,7 @@ get=0x13ee-va 0x13ef-va // Valorite Ringmail Leggings - N/S [0x13f0-va] { +gett2a=0x13f0_t2a getlbr=0x13f0_lbr getaos=0x13f0_aos gettol=0x13f0_tol @@ -123,6 +127,7 @@ get=0x13f0-va 0x13f1-va // Valorite Chainmail Coif - N/S [0x13bb-va] { +gett2a=0x13bb_t2a getlbr=0x13bb_lbr getaos=0x13bb_aos gettol=0x13bb_tol @@ -148,6 +153,7 @@ get=0x13bb 0x13c0 // Valorite Chainmail Leggings - N/S [0x13be-va] { +gett2a=0x13be_t2a getlbr=0x13be_lbr getaos=0x13be_aos gettol=0x13be_tol @@ -173,6 +179,7 @@ get=0x13be-va 0x13c3-va // Valorite Chainmail Tunic - N/S [0x13bf-va] { +gett2a=0x13bf_t2a getlbr=0x13bf_lbr getaos=0x13bf_aos gettol=0x13bf_tol @@ -198,6 +205,7 @@ get=0x13bf-va 0x13c4-va // Valorite Female Plate - N/S [0x1c04-va] { +gett2a=0x1c04_t2a getlbr=0x1c04_lbr getaos=0x1c04_aos gettol=0x1c04_tol @@ -225,6 +233,7 @@ get=0x1c04-va 0x1c05-va // Valorite Platemail Arms - E/W [0x1410-va] { +gett2a=0x1410_t2a getlbr=0x1410_lbr getaos=0x1410_aos gettol=0x1410_tol @@ -250,6 +259,7 @@ get=0x1410-va 0x1417-va // Valorite Platemail Leggings - N/S [0x1411-va] { +gett2a=0x1411_t2a getlbr=0x1411_lbr getaos=0x1411_aos gettol=0x1411_tol @@ -275,6 +285,7 @@ get=0x1411-va 0x141a-va // Valorite Platemail Gorget [0x1413-va] { +gett2a=0x1413_t2a getlbr=0x1413_lbr getaos=0x1413_aos gettol=0x1413_tol @@ -293,6 +304,7 @@ get=0x1413-va // Valorite Platemail Gloves - N/S [0x1414-va] { +gett2a=0x1414_t2a getlbr=0x1414_lbr getaos=0x1414_aos gettol=0x1414_tol @@ -318,6 +330,7 @@ get=0x1414-va 0x1418-va // Valorite Platemail Chest - N/S [0x1415-va] { +gett2a=0x1415_t2a getlbr=0x1415_lbr getaos=0x1415_aos gettol=0x1415_tol @@ -345,6 +358,7 @@ get=0x1415-va 0x1416-va // Valorite Heavy Platemail Jingasa - A [0x2777-va] { +gett2a=0x2777_t2a getlbr=0x2777_lbr getaos=0x2777_aos gettol=0x2777_tol @@ -370,6 +384,7 @@ get=0x2777-va 0x27c2-va // Valorite Decorative Platemail Kabuto - A [0x2778-va] { +gett2a=0x2778_t2a getlbr=0x2778_lbr getaos=0x2778_aos gettol=0x2778_tol @@ -395,6 +410,7 @@ get=0x2778-va 0x27c3-va // Valorite Platemail Do - A [0x277d-va] { +gett2a=0x277d_t2a getlbr=0x277d_lbr getaos=0x277d_aos gettol=0x277d_tol @@ -420,6 +436,7 @@ get=0x277d-va 0x27c8-va // Valorite Platemail Hiro Sode - A [0x2780-va] { +gett2a=0x2780_t2a getlbr=0x2780_lbr getaos=0x2780_aos gettol=0x2780_tol @@ -445,6 +462,7 @@ get=0x2780-va 0x27cb-va // Valorite Platemail Jingasa - A [0x2781-va] { +gett2a=0x2781_t2a getlbr=0x2781_lbr getaos=0x2781_aos gettol=0x2781_tol @@ -470,6 +488,7 @@ get=0x2781-va 0x27cc-va // Valorite Small Platemail Jingasa - A [0x2784-va] { +gett2a=0x2784_t2a getlbr=0x2784_lbr getaos=0x2784_aos gettol=0x2784_tol @@ -495,6 +514,7 @@ get=0x2784-va 0x27cf-va // Valorite Platemail Battle Kabuto - A [0x2785-va] { +gett2a=0x2785_t2a getlbr=0x2785_lbr getaos=0x2785_aos gettol=0x2785_tol @@ -520,6 +540,7 @@ get=0x2785-va 0x27d0-va // Valorite Platemail Suneate - A [0x2788-va] { +gett2a=0x2788_t2a getlbr=0x2788_lbr getaos=0x2788_aos gettol=0x2788_tol @@ -545,6 +566,7 @@ get=0x2788-va 0x27d3-va // Valorite Platemail Kabuto - A [0x2789-va] { +gett2a=0x2789_t2a getlbr=0x2789_lbr getaos=0x2789_aos gettol=0x2789_tol @@ -570,6 +592,7 @@ get=0x2789-va 0x27d4-va // Valorite Kabuto - A [0x236c-va] { +gett2a=0x236c_t2a getlbr=0x236c_lbr getaos=0x236c_aos gettol=0x236c_tol @@ -595,6 +618,7 @@ get=0x236c-va 0x236d-va // Valorite Platemail Haidate - A [0x278d-va] { +gett2a=0x278d_t2a getlbr=0x278d_lbr getaos=0x278d_aos gettol=0x278d_tol @@ -620,6 +644,7 @@ get=0x278d-va 0x27d8-va // Valorite Platemail Hatsuburi - A [0x2775-va] { +gett2a=0x2775_t2a getlbr=0x2775_lbr getaos=0x2775_aos gettol=0x2775_tol @@ -645,6 +670,7 @@ get=0x2775-va 0x27c0-va // Valorite Chainmail Hatsuburi - A [0x2774-va] { +gett2a=0x2774_t2a getlbr=0x2774_lbr getaos=0x2774_aos gettol=0x2774_tol @@ -670,6 +696,7 @@ get=0x2774-va 0x27bf-va // Valorite Platemail Mempo - E/W [0x2779-va] { +gett2a=0x2779_t2a getlbr=0x2779_lbr getaos=0x2779_aos gettol=0x2779_tol @@ -697,6 +724,7 @@ get=0x2779-va 0x27c4-va // Valorite Close Helm - E/W [0x1408-va] { +gett2a=0x1408_t2a getlbr=0x1408_lbr getaos=0x1408_aos gettol=0x1408_tol @@ -722,6 +750,7 @@ get=0x1408-va 0x1409-va // Valorite Helmet - E/W [0x140a-va] { +gett2a=0x140a_t2a getlbr=0x140a_lbr getaos=0x140a_aos gettol=0x140a_tol @@ -747,6 +776,7 @@ get=0x140a-va 0x140b-va // Valorite Bascinet - E/W [0x140c-va] { +gett2a=0x140c_t2a getlbr=0x140c_lbr getaos=0x140c_aos gettol=0x140c_tol @@ -772,6 +802,7 @@ get=0x140c-va 0x140d-va // Valorite Norse Helm - E/W [0x140e-va] { +gett2a=0x140e_t2a getlbr=0x140e_lbr getaos=0x140e_aos gettol=0x140e_tol @@ -797,6 +828,7 @@ get=0x140e-va 0x140f-va // Valorite Plate Helm - N/S [0x1412-va] { +gett2a=0x1412_t2a getlbr=0x1412_lbr getaos=0x1412_aos gettol=0x1412_tol @@ -824,6 +856,7 @@ get=0x1412-va 0x1419-va // Valorite Valorite Shield [0x1b72-va] { +gett2a=0x1b72_t2a getlbr=0x1b72_lbr getaos=0x1b72_aos gettol=0x1b72_tol @@ -842,6 +875,7 @@ get=0x1b72-va // Valorite Buckler [0x1b73-va] { +gett2a=0x1b73_t2a getlbr=0x1b73_lbr getaos=0x1b73_aos gettol=0x1b73_tol @@ -860,6 +894,7 @@ get=0x1b73-va // Valorite Kite Shield (Metal) - N/S [0x1b74-va] { +gett2a=0x1b74_t2a getlbr=0x1b74_lbr getaos=0x1b74_aos gettol=0x1b74_tol @@ -872,6 +907,7 @@ sectionid=0x1b74-va // Valorite Heater Shield - N/S [0x1b76-va] { +gett2a=0x1b76_t2a getlbr=0x1b76_lbr getaos=0x1b76_aos gettol=0x1b76_tol @@ -884,6 +920,7 @@ sectionid=0x1b76-va // Valorite Kite Shield (Wood) - N/S [0x1b78-va] { +gett2a=0x1b78_t2a getlbr=0x1b78_lbr getaos=0x1b78_aos gettol=0x1b78_tol @@ -909,6 +946,7 @@ get=0x1b78-va 0x1b79-va // AgapiteWooden Shield [0x1b7a-va] { +gett2a=0x1b7a_t2a getlbr=0x1b7a_lbr getaos=0x1b7a_aos gettol=0x1b7a_tol @@ -927,6 +965,7 @@ get=0x1b7a-va // Valorite Metal Shield [0x1b7b-va] { +gett2a=0x1b7b_t2a getlbr=0x1b7b_lbr getaos=0x1b7b_aos gettol=0x1b7b_tol @@ -945,6 +984,7 @@ get=0x1b7b-va // Valorite Chaos Shield [0x1bc3-va] { +gett2a=0x1bc3_t2a getlbr=0x1bc3_lbr getaos=0x1bc3_aos gettol=0x1bc3_tol @@ -963,6 +1003,7 @@ get=0x1bc3-va // Valorite Order Shield - N/S [0x1bc4-va] { +gett2a=0x1bc4_t2a getlbr=0x1bc4_lbr getaos=0x1bc4_aos gettol=0x1bc4_tol diff --git a/data/dfndata/items/gear/armor/metal_armor/verite_armor.dfn b/data/dfndata/items/gear/armor/metal_armor/verite_armor.dfn index ee83b2990..9ca697b36 100644 --- a/data/dfndata/items/gear/armor/metal_armor/verite_armor.dfn +++ b/data/dfndata/items/gear/armor/metal_armor/verite_armor.dfn @@ -19,6 +19,7 @@ erbonus=4 3 4 1 // Verite Ringmail Gloves - N/S [0x13eb-ve] { +gett2a=0x13eb_t2a getlbr=0x13eb_lbr getaos=0x13eb_aos gettol=0x13eb_tol @@ -44,6 +45,7 @@ get=0x13eb-ve 0x13f2-ve // Verite Ringmail Tunic - N/S [0x13ec-ve] { +gett2a=0x13ec_t2a getlbr=0x13ec_lbr getaos=0x13ec_aos gettol=0x13ec_tol @@ -69,6 +71,7 @@ get=0x13ec-ve 0x13ed-ve // Verite Ringmail Sleeves - N/S [0x13ee-ve] { +gett2a=0x13ee_t2a getlbr=0x13ee_lbr getaos=0x13ee_aos gettol=0x13ee_tol @@ -94,6 +97,7 @@ get=0x13ee-ve 0x13ef-ve // Verite Ringmail Leggings - N/S [0x13f0-ve] { +gett2a=0x13f0_t2a getlbr=0x13f0_lbr getaos=0x13f0_aos gettol=0x13f0_tol @@ -121,6 +125,7 @@ get=0x13f0-ve 0x13f1-ve // Verite Chainmail Coif - N/S [0x13bb-ve] { +gett2a=0x13bb_t2a getlbr=0x13bb_lbr getaos=0x13bb_aos gettol=0x13bb_tol @@ -146,6 +151,7 @@ get=0x13bb 0x13c0 // Verite Chainmail Leggings - N/S [0x13be-ve] { +gett2a=0x13be_t2a getlbr=0x13be_lbr getaos=0x13be_aos gettol=0x13be_tol @@ -171,6 +177,7 @@ get=0x13be-ve 0x13c3-ve // Verite Chainmail Tunic - N/S [0x13bf-ve] { +gett2a=0x13bf_t2a getlbr=0x13bf_lbr getaos=0x13bf_aos gettol=0x13bf_tol @@ -196,6 +203,7 @@ get=0x13bf-ve 0x13c4-ve // Verite Female Plate - N/S [0x1c04-ve] { +gett2a=0x1c04_t2a getlbr=0x1c04_lbr getaos=0x1c04_aos gettol=0x1c04_tol @@ -223,6 +231,7 @@ get=0x1c04-ve 0x1c05-ve // Verite Platemail Arms - E/W [0x1410-ve] { +gett2a=0x1410_t2a getlbr=0x1410_lbr getaos=0x1410_aos gettol=0x1410_tol @@ -248,6 +257,7 @@ get=0x1410-ve 0x1417-ve // Verite Platemail Leggings - N/S [0x1411-ve] { +gett2a=0x1411_t2a getlbr=0x1411_lbr getaos=0x1411_aos gettol=0x1411_tol @@ -273,6 +283,7 @@ get=0x1411-ve 0x141a-ve // Verite Platemail Gorget [0x1413-ve] { +gett2a=0x1413_t2a getlbr=0x1413_lbr getaos=0x1413_aos gettol=0x1413_tol @@ -291,6 +302,7 @@ get=0x1413-ve // Verite Platemail Gloves - N/S [0x1414-ve] { +gett2a=0x1414_t2a getlbr=0x1414_lbr getaos=0x1414_aos gettol=0x1414_tol @@ -316,6 +328,7 @@ get=0x1414-ve 0x1418-ve // Verite Platemail Chest - N/S [0x1415-ve] { +gett2a=0x1415_t2a getlbr=0x1415_lbr getaos=0x1415_aos gettol=0x1415_tol @@ -343,6 +356,7 @@ get=0x1415-ve 0x1416-ve // Verite Heavy Platemail Jingasa - A [0x2777-ve] { +gett2a=0x2777_t2a getlbr=0x2777_lbr getaos=0x2777_aos gettol=0x2777_tol @@ -368,6 +382,7 @@ get=0x2777-ve 0x27c2-ve // Verite Decorative Platemail Kabuto - A [0x2778-ve] { +gett2a=0x2778_t2a getlbr=0x2778_lbr getaos=0x2778_aos gettol=0x2778_tol @@ -393,6 +408,7 @@ get=0x2778-ve 0x27c3-ve // Verite Platemail Do - A [0x277d-ve] { +gett2a=0x277d_t2a getlbr=0x277d_lbr getaos=0x277d_aos gettol=0x277d_tol @@ -418,6 +434,7 @@ get=0x277d-ve 0x27c8-ve // Verite Platemail Hiro Sode - A [0x2780-ve] { +gett2a=0x2780_t2a getlbr=0x2780_lbr getaos=0x2780_aos gettol=0x2780_tol @@ -443,6 +460,7 @@ get=0x2780-ve 0x27cb-ve // Verite Platemail Jingasa - A [0x2781-ve] { +gett2a=0x2781_t2a getlbr=0x2781_lbr getaos=0x2781_aos gettol=0x2781_tol @@ -468,6 +486,7 @@ get=0x2781-ve 0x27cc-ve // Verite Small Platemail Jingasa - A [0x2784-ve] { +gett2a=0x2784_t2a getlbr=0x2784_lbr getaos=0x2784_aos gettol=0x2784_tol @@ -493,6 +512,7 @@ get=0x2784-ve 0x27cf-ve // Verite Platemail Battle Kabuto - A [0x2785-ve] { +gett2a=0x2785_t2a getlbr=0x2785_lbr getaos=0x2785_aos gettol=0x2785_tol @@ -518,6 +538,7 @@ get=0x2785-ve 0x27d0-ve // Verite Platemail Suneate - A [0x2788-ve] { +gett2a=0x2788_t2a getlbr=0x2788_lbr getaos=0x2788_aos gettol=0x2788_tol @@ -543,6 +564,7 @@ get=0x2788-ve 0x27d3-ve // Verite Platemail Kabuto - A [0x2789-ve] { +gett2a=0x2789_t2a getlbr=0x2789_lbr getaos=0x2789_aos gettol=0x2789_tol @@ -568,6 +590,7 @@ get=0x2789-ve 0x27d4-ve // Verite Kabuto - A [0x236c-ve] { +gett2a=0x236c_t2a getlbr=0x236c_lbr getaos=0x236c_aos gettol=0x236c_tol @@ -593,6 +616,7 @@ get=0x236c-ve 0x236d-ve // Verite Platemail Haidate - A [0x278d-ve] { +gett2a=0x278d_t2a getlbr=0x278d_lbr getaos=0x278d_aos gettol=0x278d_tol @@ -618,6 +642,7 @@ get=0x278d-ve 0x27d8-ve // Verite Platemail Hatsuburi - A [0x2775-ve] { +gett2a=0x2775_t2a getlbr=0x2775_lbr getaos=0x2775_aos gettol=0x2775_tol @@ -643,6 +668,7 @@ get=0x2775-ve 0x27c0-ve // Verite Chainmail Hatsuburi - A [0x2774-ve] { +gett2a=0x2774_t2a getlbr=0x2774_lbr getaos=0x2774_aos gettol=0x2774_tol @@ -668,6 +694,7 @@ get=0x2774-ve 0x27bf-ve // Verite Platemail Mempo - E/W [0x2779-ve] { +gett2a=0x2779_t2a getlbr=0x2779_lbr getaos=0x2779_aos gettol=0x2779_tol @@ -695,6 +722,7 @@ get=0x2779-ve 0x27c4-ve // Verite Close Helm - E/W [0x1408-ve] { +gett2a=0x1408_t2a getlbr=0x1408_lbr getaos=0x1408_aos gettol=0x1408_tol @@ -720,6 +748,7 @@ get=0x1408-ve 0x1409-ve // Verite Helmet - E/W [0x140a-ve] { +gett2a=0x140a_t2a getlbr=0x140a_lbr getaos=0x140a_aos gettol=0x140a_tol @@ -745,6 +774,7 @@ get=0x140a-ve 0x140b-ve // Verite Bascinet - E/W [0x140c-ve] { +gett2a=0x140c_t2a getlbr=0x140c_lbr getaos=0x140c_aos gettol=0x140c_tol @@ -770,6 +800,7 @@ get=0x140c-ve 0x140d-ve // Verite Norse Helm - E/W [0x140e-ve] { +gett2a=0x140e_t2a getlbr=0x140e_lbr getaos=0x140e_aos gettol=0x140e_tol @@ -795,6 +826,7 @@ get=0x140e-ve 0x140f-ve // Verite Plate Helm - N/S [0x1412-ve] { +gett2a=0x1412_t2a getlbr=0x1412_lbr getaos=0x1412_aos gettol=0x1412_tol @@ -822,6 +854,7 @@ get=0x1412-ve 0x1419-ve // Verite Verite Shield [0x1b72-ve] { +gett2a=0x1b72_t2a getlbr=0x1b72_lbr getaos=0x1b72_aos gettol=0x1b72_tol @@ -840,6 +873,7 @@ get=0x1b72-ve // Verite Buckler [0x1b73-ve] { +gett2a=0x1b73_t2a getlbr=0x1b73_lbr getaos=0x1b73_aos gettol=0x1b73_tol @@ -858,6 +892,7 @@ get=0x1b73-ve // Verite Kite Shield (Metal) - N/S [0x1b74-ve] { +gett2a=0x1b74_t2a getlbr=0x1b74_lbr getaos=0x1b74_aos gettol=0x1b74_tol @@ -870,6 +905,7 @@ sectionid=0x1b74-ve // Verite Heater Shield - N/S [0x1b76-ve] { +gett2a=0x1b76_t2a getlbr=0x1b76_lbr getaos=0x1b76_aos gettol=0x1b76_tol @@ -882,6 +918,7 @@ sectionid=0x1b76-ve // Verite Kite Shield (Wood) - N/S [0x1b78-ve] { +gett2a=0x1b78_t2a getlbr=0x1b78_lbr getaos=0x1b78_aos gettol=0x1b78_tol @@ -907,6 +944,7 @@ get=0x1b78-ve 0x1b79-ve // AgapiteWooden Shield [0x1b7a-ve] { +gett2a=0x1b7a_t2a getlbr=0x1b7a_lbr getaos=0x1b7a_aos gettol=0x1b7a_tol @@ -925,6 +963,7 @@ get=0x1b7a-ve // Verite Metal Shield [0x1b7b-ve] { +gett2a=0x1b7b_t2a getlbr=0x1b7b_lbr getaos=0x1b7b_aos gettol=0x1b7b_tol @@ -943,6 +982,7 @@ get=0x1b7b-ve // Verite Chaos Shield [0x1bc3-ve] { +gett2a=0x1bc3_t2a getlbr=0x1bc3_lbr getaos=0x1bc3_aos gettol=0x1bc3_tol @@ -961,6 +1001,7 @@ get=0x1bc3-ve // Verite Order Shield - N/S [0x1bc4-ve] { +gett2a=0x1bc4_t2a getlbr=0x1bc4_lbr getaos=0x1bc4_aos gettol=0x1bc4_tol diff --git a/data/dfndata/items/gear/armor/other_armor/bone.dfn b/data/dfndata/items/gear/armor/other_armor/bone.dfn index febc49fa5..f03966632 100644 --- a/data/dfndata/items/gear/armor/other_armor/bone.dfn +++ b/data/dfndata/items/gear/armor/other_armor/bone.dfn @@ -2,6 +2,7 @@ // Bone Arms - E/W [0x144e] { +gett2a=0x144e_t2a getlbr=0x144e_lbr getaos=0x144e_aos gettol=0x144e_tol @@ -25,6 +26,7 @@ get=0x144e 0x1453 // Bone Armor - E/W [0x144f] { +gett2a=0x144f_t2a getlbr=0x144f_lbr getaos=0x144f_aos gettol=0x144f_tol @@ -48,6 +50,7 @@ get=0x144f 0x1454 // Bone Gauntlets - E/W [0x1450] { +gett2a=0x1450_t2a getlbr=0x1450_lbr getaos=0x1450_aos gettol=0x1450_tol @@ -71,6 +74,7 @@ get=0x1450 0x1455 // Bone Helm - E/W [0x1451] { +gett2a=0x1451_t2a getlbr=0x1451_lbr getaos=0x1451_aos gettol=0x1451_tol @@ -94,6 +98,7 @@ get=0x1451 0x1456 // Bone Leggings - E/W [0x1452] { +gett2a=0x1452_t2a getlbr=0x1452_lbr getaos=0x1452_aos gettol=0x1452_tol @@ -117,6 +122,7 @@ get=0x1452 0x1457 // Orc Helm [0x1f0b] { +gett2a=0x1f0b_t2a getlbr=0x1f0b_lbr getaos=0x1f0b_aos gettol=0x1f0b_tol diff --git a/data/dfndata/items/gear/armor/other_armor/dragon.dfn b/data/dfndata/items/gear/armor/other_armor/dragon.dfn index de8cb4567..cbcac5f9f 100644 --- a/data/dfndata/items/gear/armor/other_armor/dragon.dfn +++ b/data/dfndata/items/gear/armor/other_armor/dragon.dfn @@ -2,6 +2,7 @@ // Dragon Sleeves - E/W [0x2657] { +gett2a=0x2657_t2a getlbr=0x2657_lbr getaos=0x2657_aos gettol=0x2657_tol @@ -25,6 +26,7 @@ get=0x2657 0x2658 // Dragon Breastplate - E/W [0x2641] { +gett2a=0x2641_t2a getlbr=0x2641_lbr getaos=0x2641_aos gettol=0x2641_tol @@ -48,6 +50,7 @@ get=0x2641 0x2642 // Dragon Gloves - E/W [0x2643] { +gett2a=0x2643_t2a getlbr=0x2643_lbr getaos=0x2643_aos gettol=0x2643_tol @@ -71,6 +74,7 @@ get=0x2643 0x2644 // Dragon Helm - N/S [0x2645] { +gett2a=0x2645_t2a getlbr=0x2645_lbr getaos=0x2645_aos gettol=0x2645_tol @@ -94,6 +98,7 @@ get=0x2645 0x2646 // Dragon Leggings - E/W [0x2647] { +gett2a=0x2647_t2a getlbr=0x2647_lbr getaos=0x2647_aos gettol=0x2647_tol diff --git a/data/dfndata/items/gear/armor/other_armor/glass.dfn b/data/dfndata/items/gear/armor/other_armor/glass.dfn index 6f72570b1..e0d233b6b 100644 --- a/data/dfndata/items/gear/armor/other_armor/glass.dfn +++ b/data/dfndata/items/gear/armor/other_armor/glass.dfn @@ -1,6 +1,7 @@ // Elven Glasses - E/W [0x2fb8] { +gett2a=0x2fb8_t2a getlbr=0x2fb8_lbr getaos=0x2fb8_aos gettol=0x2fb8_tol diff --git a/data/dfndata/items/gear/armor/other_armor/hide.dfn b/data/dfndata/items/gear/armor/other_armor/hide.dfn index a554061a7..dad214ef8 100644 --- a/data/dfndata/items/gear/armor/other_armor/hide.dfn +++ b/data/dfndata/items/gear/armor/other_armor/hide.dfn @@ -2,6 +2,7 @@ // Hide Pauldrons - N/S [0x2b77] { +gett2a=0x2b77_t2a getlbr=0x2b77_lbr getaos=0x2b77_aos gettol=0x2b77_tol @@ -25,6 +26,7 @@ get=0x2b77 0x316e // Hide Tunic - E/W [0x2b74] { +gett2a=0x2b74_t2a getlbr=0x2b74_lbr getaos=0x2b74_aos gettol=0x2b74_tol @@ -48,6 +50,7 @@ get=0x2b74 0x316b // Hide Armor (Female) - E/W [0x2b79] { +gett2a=0x2b79_t2a getlbr=0x2b79_lbr getaos=0x2b79_aos gettol=0x2b79_tol @@ -71,6 +74,7 @@ get=0x2b79 0x3170 // Hide Gloves - E/W [0x2b75] { +gett2a=0x2b75_t2a getlbr=0x2b75_lbr getaos=0x2b75_aos gettol=0x2b75_tol @@ -94,6 +98,7 @@ get=0x2b75 0x316c // Hide Pants - N/S [0x2b78] { +gett2a=0x2b78_t2a getlbr=0x2b78_lbr getaos=0x2b78_aos gettol=0x2b78_tol @@ -117,6 +122,7 @@ get=0x2b78 0x316f // Hide Gorget - E/W [0x2b76] { +gett2a=0x2b76_t2a getlbr=0x2b76_lbr getaos=0x2b76_aos gettol=0x2b76_tol @@ -142,6 +148,7 @@ get=0x2b76 0x316d // Dragon Turtle Hide Arms [0x782e] { +gett2a=0x782e_t2a getlbr=0x782e_lbr getaos=0x782e_aos gettol=0x782e_tol @@ -158,6 +165,7 @@ get=0x782e // Dragon Turtle Hide Chest [0x782a] { +gett2a=0x782a_t2a getlbr=0x782a_lbr getaos=0x782a_aos gettol=0x782a_tol @@ -173,6 +181,7 @@ get=0x782a // Dragon Turtle Hide Bustier [0x782b] { +gett2a=0x782b_t2a getlbr=0x782b_lbr getaos=0x782b_aos gettol=0x782b_tol @@ -189,6 +198,7 @@ get=0x782b // Dragon Turtle Hide Helm [0x782d] { +gett2a=0x782d_t2a getlbr=0x782d_lbr getaos=0x782d_aos gettol=0x782d_tol @@ -206,6 +216,7 @@ get=0x782d // Dragon Turtle Hide Leggings [0x782c] { +gett2a=0x782c_t2a getlbr=0x782c_lbr getaos=0x782c_aos gettol=0x782c_tol diff --git a/data/dfndata/items/gear/armor/other_armor/leaf.dfn b/data/dfndata/items/gear/armor/other_armor/leaf.dfn index 8712ef9a9..920473ea5 100644 --- a/data/dfndata/items/gear/armor/other_armor/leaf.dfn +++ b/data/dfndata/items/gear/armor/other_armor/leaf.dfn @@ -2,6 +2,7 @@ // Leaf Arms - N/S [0x2fc8] { +gett2a=0x2fc8_t2a getlbr=0x2fc8_lbr getaos=0x2fc8_aos gettol=0x2fc8_tol @@ -25,6 +26,7 @@ get=0x2fc8 0x317e // Leaf Tunic - E/W [0x2fc5] { +gett2a=0x2fc5_t2a getlbr=0x2fc5_lbr getaos=0x2fc5_aos gettol=0x2fc5_tol @@ -48,6 +50,7 @@ get=0x2fc5 0x317b // Leaf Armor (Female) - E/W [0x2fcb] { +gett2a=0x2fcb_t2a getlbr=0x2fcb_lbr getaos=0x2fcb_aos gettol=0x2fcb_tol @@ -71,6 +74,7 @@ get=0x2fcb 0x3181 // Leaf Gloves - E/W [0x2fc6] { +gett2a=0x2fc6_t2a getlbr=0x2fc6_lbr getaos=0x2fc6_aos gettol=0x2fc6_tol @@ -94,6 +98,7 @@ get=0x2fc6 0x317c // Leaf Gorget - E/W [0x2fc7] { +gett2a=0x2fc7_t2a getlbr=0x2fc7_lbr getaos=0x2fc7_aos gettol=0x2fc7_tol @@ -117,6 +122,7 @@ get=0x2fc7 0x317d // Leaf Leggings - N/S [0x2fc9] { +gett2a=0x2fc9_t2a getlbr=0x2fc9_lbr getaos=0x2fc9_aos gettol=0x2fc9_tol @@ -140,6 +146,7 @@ get=0x2fc9 0x317f // Leaf Tonlet - N/S [0x2fca] { +gett2a=0x2fca_t2a getlbr=0x2fca_lbr getaos=0x2fca_aos gettol=0x2fca_tol diff --git a/data/dfndata/items/gear/armor/other_armor/pelt.dfn b/data/dfndata/items/gear/armor/other_armor/pelt.dfn index 122972341..a0fb2b3be 100644 --- a/data/dfndata/items/gear/armor/other_armor/pelt.dfn +++ b/data/dfndata/items/gear/armor/other_armor/pelt.dfn @@ -2,6 +2,7 @@ // Tiger Pelt Chest [0x7822] { +gett2a=0x7822_t2a getlbr=0x7822_lbr getaos=0x7822_aos gettol=0x7822_tol @@ -18,6 +19,7 @@ get=0x7822 // Tiger Pelt Bustier [0x7823] { +gett2a=0x7823_t2a getlbr=0x7823_lbr getaos=0x7823_aos gettol=0x7823_tol @@ -34,6 +36,7 @@ get=0x7823 // Tiger Pelt Helm [0x7828] { +gett2a=0x7828_t2a getlbr=0x7828_lbr getaos=0x7828_aos gettol=0x7828_tol @@ -50,6 +53,7 @@ get=0x7828 // Tiger Pelt Leggings [0x7824] { +gett2a=0x7824_t2a getlbr=0x7824_lbr getaos=0x7824_aos gettol=0x7824_tol @@ -66,6 +70,7 @@ get=0x7824 // Tiger Pelt Shorts [0x7825] { +gett2a=0x7825_t2a getlbr=0x7825_lbr getaos=0x7825_aos gettol=0x7825_tol @@ -82,6 +87,7 @@ get=0x7825 // Tiger Pelt Long Skirt [0x7826] { +gett2a=0x7826_t2a getlbr=0x7826_lbr getaos=0x7826_aos gettol=0x7826_tol @@ -98,6 +104,7 @@ get=0x7826 // Tiger Pelt Skirt [0x7827] { +gett2a=0x7827_t2a getlbr=0x7827_lbr getaos=0x7827_aos gettol=0x7827_tol @@ -114,6 +121,7 @@ get=0x7827 // Tiger Pelt Collar [0x7829] { +gett2a=0x7829_t2a getlbr=0x7829_lbr getaos=0x7829_aos gettol=0x7829_tol diff --git a/data/dfndata/items/gear/armor/other_armor/wood.dfn b/data/dfndata/items/gear/armor/other_armor/wood.dfn index 1068491f3..df2f8178f 100644 --- a/data/dfndata/items/gear/armor/other_armor/wood.dfn +++ b/data/dfndata/items/gear/armor/other_armor/wood.dfn @@ -2,6 +2,7 @@ // Woodland Arms - N/S [0x2b6c] { +gett2a=0x2b6c_t2a getlbr=0x2b6c_lbr getaos=0x2b6c_aos gettol=0x2b6c_tol @@ -25,6 +26,7 @@ get=0x2b6c 0x3163 // Woodland Chest - E/W [0x2b67] { +gett2a=0x2b67_t2a getlbr=0x2b67_lbr getaos=0x2b67_aos gettol=0x2b67_tol @@ -48,6 +50,7 @@ get=0x2b67 0x315e // Woodland Armor (Female) - E/W [0x2b6d] { +gett2a=0x2b6d_t2a getlbr=0x2b6d_lbr getaos=0x2b6d_aos gettol=0x2b6d_tol @@ -71,6 +74,7 @@ get=0x2b6d 0x3164 // Woodland Gauntlet - E/W [0x2b6a] { +gett2a=0x2b6a_t2a getlbr=0x2b6a_lbr getaos=0x2b6a_aos gettol=0x2b6a_tol @@ -94,6 +98,7 @@ get=0x2b6a 0x3161 // Woodland Leggings - E/W [0x2b6b] { +gett2a=0x2b6b_t2a getlbr=0x2b6b_lbr getaos=0x2b6b_aos gettol=0x2b6b_tol @@ -118,6 +123,7 @@ get=0x2b6b 0x3162 // Woodland Gorget - E/W [0x2b69] { +gett2a=0x2b69_t2a getlbr=0x2b69_lbr getaos=0x2b69_aos gettol=0x2b69_tol @@ -142,6 +148,7 @@ get=0x2b69 0x3160 // Raven Helm - N/S [0x2b71] { +gett2a=0x2b71_t2a getlbr=0x2b71_lbr getaos=0x2b71_aos gettol=0x2b71_tol @@ -165,6 +172,7 @@ get=0x2b71 0x3168 // Vulture Helm - N/S [0x2b72] { +gett2a=0x2b72_t2a getlbr=0x2b72_lbr getaos=0x2b72_aos gettol=0x2b72_tol @@ -188,6 +196,7 @@ get=0x2b72 0x3169 // Winged Helm - N/S [0x2b73] { +gett2a=0x2b73_t2a getlbr=0x2b73_lbr getaos=0x2b73_aos gettol=0x2b73_tol diff --git a/data/dfndata/items/gear/weapons/archery.dfn b/data/dfndata/items/gear/weapons/archery.dfn index be2e97cc9..6ccf8ff6c 100644 --- a/data/dfndata/items/gear/weapons/archery.dfn +++ b/data/dfndata/items/gear/weapons/archery.dfn @@ -20,6 +20,7 @@ maxrange=8 // Crossbow - N/S [0x0f4f] { +gett2a=0x0f4f_t2a getlbr=0x0f4f_lbr getaos=0x0f4f_aos gettol=0x0f4f_tol @@ -58,6 +59,7 @@ maxrange=8 // Heavy Crossbow - E/W [0x13fc] { +gett2a=0x13fc_t2a getlbr=0x13fc_lbr getaos=0x13fc_aos gettol=0x13fc_tol @@ -96,6 +98,7 @@ maxrange=10 // Bow - N/S [0x13b1] { +gett2a=0x13b1_t2a getlbr=0x13b1_lbr getaos=0x13b1_aos gettol=0x13b1_tol @@ -138,6 +141,7 @@ origin=aos // Composite Bow - E/W [0x26c2] { +gett2a=0x26c2_t2a getlbr=0x26c2_lbr getaos=0x26c2_aos gettol=0x26c2_tol @@ -178,6 +182,7 @@ origin=aos // Repeating Crossbow - E/W [0x26c3] { +gett2a=0x26c3_t2a getlbr=0x26c3_lbr getaos=0x26c3_aos gettol=0x26c3_tol @@ -220,6 +225,7 @@ origin=se // Yumi - E/W [0x27a5] { +gett2a=0x27a5_t2a getlbr=0x27a5_lbr getaos=0x27a5_aos gettol=0x27a5_tol @@ -262,6 +268,7 @@ origin=ml // Elven Composite Longbow - E/W [0x2d1e] { +gett2a=0x2d1e_t2a getlbr=0x2d1e_lbr getaos=0x2d1e_aos gettol=0x2d1e_tol @@ -301,6 +308,7 @@ origin=ml // Magical Shortbow - E/W [0x2d2b] { +gett2a=0x2d2b_t2a getlbr=0x2d2b_lbr getaos=0x2d2b_aos gettol=0x2d2b_tol diff --git a/data/dfndata/items/gear/weapons/axes.dfn b/data/dfndata/items/gear/weapons/axes.dfn index 2f401c800..fe30922b6 100644 --- a/data/dfndata/items/gear/weapons/axes.dfn +++ b/data/dfndata/items/gear/weapons/axes.dfn @@ -20,6 +20,7 @@ movable=1 // Large Battle Axe - E/W [0x13fa] { +gett2a=0x13fa_t2a getlbr=0x13fa_lbr getaos=0x13fa_aos gettol=0x13fa_tol @@ -56,6 +57,7 @@ movable=1 // Two Handed Axe - E/W [0x1442] { +gett2a=0x1442_t2a getlbr=0x1442_lbr getaos=0x1442_aos gettol=0x1442_tol @@ -92,6 +94,7 @@ movable=1 // Hatchet - N/S [0x0f43] { +gett2a=0x0f43_t2a getlbr=0x0f43_lbr getaos=0x0f43_aos gettol=0x0f43_tol @@ -128,6 +131,7 @@ movable=1 // Executioner's Axe - N/S [0x0f45] { +gett2a=0x0f45_t2a getlbr=0x0f45_lbr getaos=0x0f45_aos gettol=0x0f45_tol @@ -164,6 +168,7 @@ movable=1 // Battle Axe - N/S [0x0f47] { +gett2a=0x0f47_t2a getlbr=0x0f47_lbr getaos=0x0f47_aos gettol=0x0f47_tol @@ -200,6 +205,7 @@ movable=1 // Axe - N/S [0x0f49] { +gett2a=0x0f49_t2a getlbr=0x0f49_lbr getaos=0x0f49_aos gettol=0x0f49_tol @@ -236,6 +242,7 @@ movable=1 // Double Axe - N/S [0x0f4b] { +gett2a=0x0f4b_t2a getlbr=0x0f4b_lbr getaos=0x0f4b_aos gettol=0x0f4b_tol @@ -276,6 +283,7 @@ type=216 // Ornate Axe - N/S [0x2d28] { +gett2a=0x2d28_t2a getlbr=0x2d28_lbr getaos=0x2d28_aos gettol=0x2d28_tol @@ -316,6 +324,7 @@ type=216 // Gargish Battle Axe - N/S [0x48b0] { +gett2a=0x48b0_t2a getlbr=0x48b0_lbr getaos=0x48b0_aos gettol=0x48b0_tol @@ -352,6 +361,7 @@ restock=10 // Dual Short Axes - N/S [0x08fd] { +gett2a=0x08fd_t2a getlbr=0x08fd_lbr getaos=0x08fd_aos gettol=0x08fd_tol @@ -388,6 +398,7 @@ restock=10 // Gargish Axe - N/S [0x48b2] { +gett2a=0x48b2_t2a getlbr=0x48b2_lbr getaos=0x48b2_aos gettol=0x48b2_tol diff --git a/data/dfndata/items/gear/weapons/fencing.dfn b/data/dfndata/items/gear/weapons/fencing.dfn index de6e50abe..39d060cf2 100644 --- a/data/dfndata/items/gear/weapons/fencing.dfn +++ b/data/dfndata/items/gear/weapons/fencing.dfn @@ -17,6 +17,7 @@ restock=10 // Spear - N/S [0x0f62] { +gett2a=0x0f62_t2a getlbr=0x0f62_lbr getaos=0x0f62_aos gettol=0x0f62_tol @@ -39,6 +40,7 @@ get=0x0f62 0x0f63 // Tribal Spear [tribalspear] { +gett2a=tribalspear_t2a getlbr=tribalspear_lbr getaos=tribalspear_aos gettol=tribalspear_tol @@ -64,6 +66,7 @@ restock=10 // Kryss - E/W [0x1400] { +gett2a=0x1400_t2a getlbr=0x1400_lbr getaos=0x1400_aos gettol=0x1400_tol @@ -99,6 +102,7 @@ restock=10 // Short Spear - E/W [0x1402] { +gett2a=0x1402_t2a getlbr=0x1402_lbr getaos=0x1402_aos gettol=0x1402_tol @@ -134,6 +138,7 @@ restock=10 // War Fork - E/W [0x1404] { +gett2a=0x1404_t2a getlbr=0x1404_lbr getaos=0x1404_aos gettol=0x1404_tol @@ -169,6 +174,7 @@ restock=10 // Pitchfork - N/S [0x0e87] { +gett2a=0x0e87_t2a getlbr=0x0e87_lbr getaos=0x0e87_aos gettol=0x0e87_tol @@ -208,6 +214,7 @@ restock=10 // Pike - E/W [0x26be] { +gett2a=0x26be_t2a getlbr=0x26be_lbr getaos=0x26be_aos gettol=0x26be_tol @@ -244,6 +251,7 @@ restock=10 // Lance - E/W [0x26c0] { +gett2a=0x26c0_t2a getlbr=0x26c0_lbr getaos=0x26c0_aos gettol=0x26c0_tol @@ -282,6 +290,7 @@ restock=10 // Lajatang - E/W [0x27a7] { +gett2a=0x27a7_t2a getlbr=0x27a7_lbr getaos=0x27a7_aos gettol=0x27a7_tol @@ -318,6 +327,7 @@ restock=10 // Tekagi - E/W [0x27ab] { +gett2a=0x27ab_t2a getlbr=0x27ab_lbr getaos=0x27ab_aos gettol=0x27ab_tol @@ -354,6 +364,7 @@ restock=10 // Kama - E/W [0x27ad] { +gett2a=0x27ad_t2a getlbr=0x27ad_lbr getaos=0x27ad_aos gettol=0x27ad_tol @@ -390,6 +401,7 @@ restock=10 // Sai - E/W [0x27af] { +gett2a=0x27af_t2a getlbr=0x27af_lbr getaos=0x27af_aos gettol=0x27af_tol @@ -429,6 +441,7 @@ restock=10 // War Cleaver - N/S [0x2d23] { +gett2a=0x2d23_t2a getlbr=0x2d23_lbr getaos=0x2d23_aos gettol=0x2d23_tol @@ -465,6 +478,7 @@ restock=10 // Elven Spellblade - N/S [0x2d20] { +gett2a=0x2d20_t2a getlbr=0x2d20_lbr getaos=0x2d20_aos gettol=0x2d20_tol @@ -504,6 +518,7 @@ restock=10 // Gargish War Fork - N/S [0x48be] { +gett2a=0x48be_t2a getlbr=0x48be_lbr getaos=0x48be_aos gettol=0x48be_tol @@ -540,6 +555,7 @@ restock=10 // Shortblade - N/S [0x0907] { +gett2a=0x0907_t2a getlbr=0x0907_lbr getaos=0x0907_aos gettol=0x0907_tol @@ -576,6 +592,7 @@ restock=10 // Bloodblade - N/S [0x08fe] { +gett2a=0x08fe_t2a getlbr=0x08fe_lbr getaos=0x08fe_aos gettol=0x08fe_tol @@ -612,6 +629,7 @@ restock=10 // Gargish Kryss - N/S [0x48bc] { +gett2a=0x48bc_t2a getlbr=0x48bc_lbr getaos=0x48bc_aos gettol=0x48bc_tol @@ -648,6 +666,7 @@ restock=10 // Spiked Whip - N/S [0xa28a] { +gett2a=0xa28a_t2a getlbr=0xa28a_lbr getaos=0xa28a_aos gettol=0xa28a_tol @@ -684,6 +703,7 @@ restock=10 // Gargish Lance - N/S [0x48ca] { +gett2a=0x48ca_t2a getlbr=0x48ca_lbr getaos=0x48ca_aos gettol=0x48ca_tol @@ -720,6 +740,7 @@ restock=10 // Gargish Pike - N/S [0x48c8] { +gett2a=0x48c8_t2a getlbr=0x48c8_lbr getaos=0x48c8_aos gettol=0x48c8_tol @@ -756,6 +777,7 @@ restock=10 // Dual Pointed Spear - N/S [0x0904] { +gett2a=0x0904_t2a getlbr=0x0904_lbr getaos=0x0904_aos gettol=0x0904_tol @@ -792,6 +814,7 @@ restock=10 // Gargish Tekagi - N/S [0x48ce] { +gett2a=0x48ce_t2a getlbr=0x48ce_lbr getaos=0x48ce_aos gettol=0x48ce_tol diff --git a/data/dfndata/items/gear/weapons/knives_daggers.dfn b/data/dfndata/items/gear/weapons/knives_daggers.dfn index ce49feaaa..a5f30c550 100644 --- a/data/dfndata/items/gear/weapons/knives_daggers.dfn +++ b/data/dfndata/items/gear/weapons/knives_daggers.dfn @@ -17,6 +17,7 @@ restock=10 // Cleaver - E/W [0x0ec2] { +gett2a=0x0ec2_t2a getlbr=0x0ec2_lbr getaos=0x0ec2_aos gettol=0x0ec2_tol @@ -52,6 +53,7 @@ restock=10 // Skinning Knife - N/S [0x0ec4] { +gett2a=0x0ec4_t2a getlbr=0x0ec4_lbr getaos=0x0ec4_aos gettol=0x0ec4_tol @@ -87,6 +89,7 @@ restock=10 // Dagger - N/S [0x0f51] { +gett2a=0x0f51_t2a getlbr=0x0f51_lbr getaos=0x0f51_aos gettol=0x0f51_tol @@ -122,6 +125,7 @@ restock=10 // Butcher Knife - N/S [0x13f6] { +gett2a=0x13f6_t2a getlbr=0x13f6_lbr getaos=0x13f6_aos gettol=0x13f6_tol @@ -161,6 +165,7 @@ restock=10 // Leafblade - N/S [0x2d22] { +gett2a=0x2d22_t2a getlbr=0x2d22_lbr getaos=0x2d22_aos gettol=0x2d22_tol @@ -197,6 +202,7 @@ restock=10 // Assassin Spike - N/S [0x2d21] { +gett2a=0x2d21_t2a getlbr=0x2d21_lbr getaos=0x2d21_aos gettol=0x2d21_tol @@ -236,6 +242,7 @@ restock=10 // Gargish Dagger - N/S [0x0902] { +gett2a=0x0902_t2a getlbr=0x0902_lbr getaos=0x0902_aos gettol=0x0902_tol diff --git a/data/dfndata/items/gear/weapons/maces_hammers.dfn b/data/dfndata/items/gear/weapons/maces_hammers.dfn index 012a96730..2e6543fea 100644 --- a/data/dfndata/items/gear/weapons/maces_hammers.dfn +++ b/data/dfndata/items/gear/weapons/maces_hammers.dfn @@ -17,6 +17,7 @@ restock=10 // War Axe - E/W [0x13af] { +gett2a=0x13af_t2a getlbr=0x13af_lbr getaos=0x13af_aos gettol=0x13af_tol @@ -55,6 +56,7 @@ script=2200// uses left tooltip // Smith's Hammer - E/W [0x13e3] { +gett2a=0x13e3_t2a getlbr=0x13e3_lbr getaos=0x13e3_aos gettol=0x13e3_tol @@ -90,6 +92,7 @@ restock=10 // Club - E/W [0x13b3] { +gett2a=0x13b3_t2a getlbr=0x13b3_lbr getaos=0x13b3_aos gettol=0x13b3_tol @@ -125,6 +128,7 @@ restock=10 // Sledge Hammer - E/W [0x0fb4] { +gett2a=0x0fb4_t2a getlbr=0x0fb4_lbr getaos=0x0fb4_aos gettol=0x0fb4_tol @@ -160,6 +164,7 @@ restock=10 // Mace - N/S [0x0f5c] { +gett2a=0x0f5c_t2a getlbr=0x0f5c_lbr getaos=0x0f5c_aos gettol=0x0f5c_tol @@ -195,6 +200,7 @@ restock=10 // War Mace - E/W [0x1406] { +gett2a=0x1406_t2a getlbr=0x1406_lbr getaos=0x1406_aos gettol=0x1406_tol @@ -230,6 +236,7 @@ restock=10 // War Hammer - E/W [0x1438] { +gett2a=0x1438_t2a getlbr=0x1438_lbr getaos=0x1438_aos gettol=0x1438_tol @@ -265,6 +272,7 @@ restock=10 // Maul - E/W [0x143a] { +gett2a=0x143a_t2a getlbr=0x143a_lbr getaos=0x143a_aos gettol=0x143a_tol @@ -300,6 +308,7 @@ restock=10 // Hammer Pick - E/W [0x143c] { +gett2a=0x143c_t2a getlbr=0x143c_lbr getaos=0x143c_aos gettol=0x143c_tol @@ -339,6 +348,7 @@ restock=10 // Scepter - E/W [0x26bc] { +gett2a=0x26bc_t2a getlbr=0x26bc_lbr getaos=0x26bc_aos gettol=0x26bc_tol @@ -378,6 +388,7 @@ restock=10 // Tessen - E/W [0x27a3] { +gett2a=0x27a3_t2a getlbr=0x27a3_lbr getaos=0x27a3_aos gettol=0x27a3_tol @@ -414,6 +425,7 @@ restock=10 // Tetsubo - E/W [0x27a6] { +gett2a=0x27a6_t2a getlbr=0x27a6_lbr getaos=0x27a6_aos gettol=0x27a6_tol @@ -450,6 +462,7 @@ restock=10 // Nunchaku - E/W [0x27ae] { +gett2a=0x27ae_t2a getlbr=0x27ae_lbr getaos=0x27ae_aos gettol=0x27ae_tol @@ -489,6 +502,7 @@ restock=10 // Diamond Mace - E/W [0x2d24] { +gett2a=0x2d24_t2a getlbr=0x2d24_lbr getaos=0x2d24_aos gettol=0x2d24_tol @@ -528,6 +542,7 @@ restock=10 // Gargish Maul - N/S [0x48c2] { +gett2a=0x48c2_t2a getlbr=0x48c2_lbr getaos=0x48c2_aos gettol=0x48c2_tol @@ -564,6 +579,7 @@ restock=10 // Disc Mace - N/S [0x0903] { +gett2a=0x0903_t2a getlbr=0x0903_lbr getaos=0x0903_aos gettol=0x0903_tol @@ -600,6 +616,7 @@ restock=10 // Gargish War Hammer - N/S [0x48c0] { +gett2a=0x48c0_t2a getlbr=0x48c0_lbr getaos=0x48c0_aos gettol=0x48c0_tol @@ -636,6 +653,7 @@ restock=10 // Gargish Tessen - N/S [0x48cc] { +gett2a=0x48cc_t2a getlbr=0x48cc_lbr getaos=0x48cc_aos gettol=0x48cc_tol @@ -675,6 +693,7 @@ restock=10 // Barbed Whip - N/S [0xa289] { +gett2a=0xa289_t2a getlbr=0xa289_lbr getaos=0xa289_aos gettol=0xa289_tol diff --git a/data/dfndata/items/gear/weapons/missile_weapons.dfn b/data/dfndata/items/gear/weapons/missile_weapons.dfn index c1a2b3e2d..6ef3dc749 100644 --- a/data/dfndata/items/gear/weapons/missile_weapons.dfn +++ b/data/dfndata/items/gear/weapons/missile_weapons.dfn @@ -35,6 +35,7 @@ restock=10 // Fukiya - E/W [0x27aa] { +gett2a=0x27aa_t2a getlbr=0x27aa_lbr getaos=0x27aa_aos gettol=0x27aa_tol diff --git a/data/dfndata/items/gear/weapons/staves_polearms.dfn b/data/dfndata/items/gear/weapons/staves_polearms.dfn index dc1d738e9..91b3f54d7 100644 --- a/data/dfndata/items/gear/weapons/staves_polearms.dfn +++ b/data/dfndata/items/gear/weapons/staves_polearms.dfn @@ -21,6 +21,7 @@ script=4015// herding skill // Crook - E/W [0x13f4] { +gett2a=0x13f4_t2a getlbr=0x13f4_lbr getaos=0x13f4_aos gettol=0x13f4_tol @@ -60,6 +61,7 @@ script=4015// herding skill // Shepherd's Crook - E/W [0x0e81] { +gett2a=0x0e81_t2a getlbr=0x0e81_lbr getaos=0x0e81_aos gettol=0x0e81_tol @@ -95,6 +97,7 @@ restock=10 // Gnarled Staff - N/S [0x13f8] { +gett2a=0x13f8_t2a getlbr=0x13f8_lbr getaos=0x13f8_aos gettol=0x13f8_tol @@ -130,6 +133,7 @@ restock=10 // Black Staff - E/W [0x0df0] { +gett2a=0x0df0_t2a getlbr=0x0df0_lbr getaos=0x0df0_aos gettol=0x0df0_tol @@ -165,6 +169,7 @@ restock=10 // Quarter Staff - N/S [0x0e89] { +gett2a=0x0e89_t2a getlbr=0x0e89_lbr getaos=0x0e89_aos gettol=0x0e89_tol @@ -200,6 +205,7 @@ restock=10 // Halberd - E/W [0x143e] { +gett2a=0x143e_t2a getlbr=0x143e_lbr getaos=0x143e_aos gettol=0x143e_tol @@ -254,6 +260,7 @@ restock=10 // Bardiche - N/S [0x0f4d] { +gett2a=0x0f4d_t2a getlbr=0x0f4d_lbr getaos=0x0f4d_aos gettol=0x0f4d_tol @@ -293,6 +300,7 @@ restock=10 // Scythe - E/W [0x26ba] { +gett2a=0x26ba_t2a getlbr=0x26ba_lbr getaos=0x26ba_aos gettol=0x26ba_tol @@ -329,6 +337,7 @@ restock=10 // Bladed Staff - E/W [0x26bd] { +gett2a=0x26bd_t2a getlbr=0x26bd_lbr getaos=0x26bd_aos gettol=0x26bd_tol @@ -365,6 +374,7 @@ restock=10 // Double Bladed Staff - E/W [0x26bf] { +gett2a=0x26bf_t2a getlbr=0x26bf_lbr getaos=0x26bf_aos gettol=0x26bf_tol @@ -404,6 +414,7 @@ restock=10 // Wild Staff - N/S [0x2d25] { +gett2a=0x2d25_t2a getlbr=0x2d25_lbr getaos=0x2d25_aos gettol=0x2d25_tol @@ -443,6 +454,7 @@ restock=10 // Gargish Bardiche - N/W [0x48b4] { +gett2a=0x48b4_t2a getlbr=0x48b4_lbr getaos=0x48b4_aos gettol=0x48b4_tol @@ -479,6 +491,7 @@ restock=10 // Gargish Scythe - N/S [0x48c4] { +gett2a=0x48c4_t2a getlbr=0x48c4_lbr getaos=0x48c4_aos gettol=0x48c4_tol @@ -515,6 +528,7 @@ restock=10 // Serpentstone Staff - N/S [0x0906] { +gett2a=0x0906_t2a getlbr=0x0906_lbr getaos=0x0906_aos gettol=0x0906_tol @@ -551,6 +565,7 @@ restock=10 // Gargish Gnarled Staff - N/S [0x48b8] { +gett2a=0x48b8_t2a getlbr=0x48b8_lbr getaos=0x48b8_aos gettol=0x48b8_tol @@ -587,6 +602,7 @@ restock=10 // Glass Staff - N/S [0x0905] { +gett2a=0x0905_t2a getlbr=0x0905_lbr getaos=0x0905_aos gettol=0x0905_tol diff --git a/data/dfndata/items/gear/weapons/swords.dfn b/data/dfndata/items/gear/weapons/swords.dfn index 06064759e..f75ed7464 100644 --- a/data/dfndata/items/gear/weapons/swords.dfn +++ b/data/dfndata/items/gear/weapons/swords.dfn @@ -17,6 +17,7 @@ restock=10 // Cutlass - E/W [0x1440] { +gett2a=0x1440_t2a getlbr=0x1440_lbr getaos=0x1440_aos gettol=0x1440_tol @@ -51,6 +52,7 @@ restock=10 // Katana - E/W [0x13fe] { +gett2a=0x13fe_t2a getlbr=0x13fe_lbr getaos=0x13fe_aos gettol=0x13fe_tol @@ -85,6 +87,7 @@ restock=10 // Broadsword - N/S [0x0f5e] { +gett2a=0x0f5e_t2a getlbr=0x0f5e_lbr getaos=0x0f5e_aos gettol=0x0f5e_tol @@ -119,6 +122,7 @@ restock=10 // Longsword - E/W [0x0f60] { +gett2a=0x0f60_t2a getlbr=0x0f60_lbr getaos=0x0f60_aos gettol=0x0f60_tol @@ -153,6 +157,7 @@ restock=10 // Long Sword (thin) - E/W [0x13b7] { +gett2a=0x13b7_t2a getlbr=0x13b7_lbr getaos=0x13b7_aos gettol=0x13b7_tol @@ -187,6 +192,7 @@ restock=10 // Scimitar - E/W [0x13b5] { +gett2a=0x13b5_t2a getlbr=0x13b5_lbr getaos=0x13b5_aos gettol=0x13b5_tol @@ -221,6 +227,7 @@ restock=10 // Viking Sword - N/S [0x13b9] { +gett2a=0x13b9_t2a getlbr=0x13b9_lbr getaos=0x13b9_aos gettol=0x13b9_tol @@ -260,6 +267,7 @@ restock=10 // Bone Harvester - E/W [0x26bb] { +gett2a=0x26bb_t2a getlbr=0x26bb_lbr getaos=0x26bb_aos gettol=0x26bb_tol @@ -296,6 +304,7 @@ restock=10 // Crescent Blade - E/W [0x26c1] { +gett2a=0x26c1_t2a getlbr=0x26c1_lbr getaos=0x26c1_aos gettol=0x26c1_tol @@ -332,6 +341,7 @@ restock=10 // Paladin Sword - E/W [0x26ce] { +gett2a=0x26ce_t2a getlbr=0x26ce_lbr getaos=0x26ce_aos gettol=0x26ce_tol @@ -371,6 +381,7 @@ restock=10 // No-Dachi - E/W [0x27a2] { +gett2a=0x27a2_t2a getlbr=0x27a2_lbr getaos=0x27a2_aos gettol=0x27a2_tol @@ -407,6 +418,7 @@ restock=10 // Wakizashi - E/W [0x27a4] { +gett2a=0x27a4_t2a getlbr=0x27a4_lbr getaos=0x27a4_aos gettol=0x27a4_tol @@ -443,6 +455,7 @@ restock=10 // Bokuto - E/W [0x27a8] { +gett2a=0x27a8_t2a getlbr=0x27a8_lbr getaos=0x27a8_aos gettol=0x27a8_tol @@ -479,6 +492,7 @@ restock=10 // Daisho - E/W [0x27a9] { +gett2a=0x27a9_t2a getlbr=0x27a9_lbr getaos=0x27a9_aos gettol=0x27a9_tol @@ -519,6 +533,7 @@ restock=10 // Elven Machete - N/S [0x2d29] { +gett2a=0x2d29_t2a getlbr=0x2d29_lbr getaos=0x2d29_aos gettol=0x2d29_tol @@ -555,6 +570,7 @@ restock=10 // Radiant Scimitar - N/S [0x2d29] { +gett2a=0x2d29_t2a getlbr=0x2d29_lbr getaos=0x2d29_aos gettol=0x2d29_tol @@ -591,6 +607,7 @@ restock=10 // Rune Blade - N/S [0x2d26] { +gett2a=0x2d26_t2a getlbr=0x2d26_lbr getaos=0x2d26_aos gettol=0x2d26_tol @@ -630,6 +647,7 @@ restock=10 // Dread Sword - N/S [0x090b] { +gett2a=0x090b_t2a getlbr=0x090b_lbr getaos=0x090b_aos gettol=0x090b_tol @@ -666,6 +684,7 @@ restock=10 // Gargish Bone Harvester - N/S [0x48c6] { +gett2a=0x48c6_t2a getlbr=0x48c6_lbr getaos=0x48c6_aos gettol=0x48c6_tol @@ -702,6 +721,7 @@ restock=10 // Glass Sword - N/S [0x090c] { +gett2a=0x090c_t2a getlbr=0x090c_lbr getaos=0x090c_aos gettol=0x090c_tol @@ -738,6 +758,7 @@ restock=10 // Gargish Cleaver - N/S [0x48ae] { +gett2a=0x48ae_t2a getlbr=0x48ae_lbr getaos=0x48ae_aos gettol=0x48ae_tol @@ -774,6 +795,7 @@ restock=10 // Gargish Katana - N/S [0x48ba] { +gett2a=0x48ba_t2a getlbr=0x48ba_lbr getaos=0x48ba_aos gettol=0x48ba_tol @@ -810,6 +832,7 @@ restock=10 // Gargish Butcher Knife - N/S [0x48b6] { +gett2a=0x48b6_t2a getlbr=0x48b6_lbr getaos=0x48b6_aos gettol=0x48b6_tol @@ -846,6 +869,7 @@ restock=10 // Stone War Sword - N/S [0x0900] { +gett2a=0x0900_t2a getlbr=0x0900_lbr getaos=0x0900_aos gettol=0x0900_tol @@ -882,6 +906,7 @@ restock=10 // Gargish Talwar - N/S [0x0908] { +gett2a=0x0908_t2a getlbr=0x0908_lbr getaos=0x0908_aos gettol=0x0908_tol @@ -918,6 +943,7 @@ restock=10 // Gargish Daisho - N/S [0x48d0] { +gett2a=0x48d0_t2a getlbr=0x48d0_lbr getaos=0x48d0_aos gettol=0x48d0_tol @@ -957,6 +983,7 @@ restock=10 // Bladed Whip - N/S [0xa28b] { +gett2a=0xa28b_t2a getlbr=0xa28b_lbr getaos=0xa28b_aos gettol=0xa28b_tol diff --git a/data/dfndata/items/gear/weapons/throwing.dfn b/data/dfndata/items/gear/weapons/throwing.dfn index 6bfd1c6b2..d1efa20a9 100644 --- a/data/dfndata/items/gear/weapons/throwing.dfn +++ b/data/dfndata/items/gear/weapons/throwing.dfn @@ -19,6 +19,7 @@ origin=sa // Soul Glaives - E/W [0x090a] { +gett2a=0x090a_t2a getlbr=0x090a_lbr getaos=0x090a_aos gettol=0x090a_tol @@ -56,6 +57,7 @@ origin=sa // Boomerang - E/W [0x08ff] { +gett2a=0x08ff_t2a getlbr=0x08ff_lbr getaos=0x08ff_aos gettol=0x08ff_tol @@ -95,6 +97,7 @@ origin=sa // Cyclone - N/S [0x0901] { +gett2a=0x0901_t2a getlbr=0x0901_lbr getaos=0x0901_aos gettol=0x0901_tol diff --git a/data/dfndata/items/gear/weapons/wands.dfn b/data/dfndata/items/gear/weapons/wands.dfn index 184a41d14..969a04e0f 100644 --- a/data/dfndata/items/gear/weapons/wands.dfn +++ b/data/dfndata/items/gear/weapons/wands.dfn @@ -13,6 +13,7 @@ good=27 // Wand [0x0df2] { +gett2a=0x0df2_t2a getlbr=0x0df2_lbr getaos=0x0df2_aos gettol=0x0df2_tol diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/archery_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/archery_t2a.dfn new file mode 100644 index 000000000..57daa5989 --- /dev/null +++ b/data/dfndata/items/gear/weapons/weapons_t2a/archery_t2a.dfn @@ -0,0 +1,101 @@ +// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// +// Items in this file are generally not added or referenced directly. +// Reference instead, the corresponding entries in the root weapons folder, which then +// picks the correct sub-entry based on the active NPC ruleset on the server + +// Crossbow - T2A stats (default) +[0x0f4f_t2a] +{ +get=base_crossbow +weight=700 +value=46 23 +damage=8 43 +hp=31 80 +spd=18 +str=30 +} + +// Heavy Crossbow - T2A stats (default) +[0x13fc_t2a] +{ +get=base_heavy_crossbow +weight=900 +value=56 28 +damage=11 56 +hp=31 100 +spd=10 +str=40 +} + +// Bow - T2A stats (default) +[0x13b1_t2a] +{ +get=base_bow +weight=700 +value=46 23 +damage=8 41 +hp=31 60 +spd=20 +str=20 +} + +// Composite Bow - T2A stats (default) +[0x26c2_t2a] +{ +get=base_composite_bow +weight=500 +value=57 29 +damage=8 39 +hp=31 70 +spd=21 +str=35 +} + +// Repeating Crossbow - T2A stats (default) +[0x26c3_t2a] +{ +get=base_repeating_crossbow +weight=600 +value=65 32 +damage=5 29 +hp=31 70 +spd=30 +str=25 +} + +// Yumi - T2A stats (default) +[0x27a5_t2a] +{ +get=base_yumi +weight=900 +value=60 30 +damage=6 33 +hp=31 70 +spd=26 +str=30 +} + +// Elven Composite Longbow - T2A stats (default) +[0x2d1e_t2a] +{ +get=base_elven_composite_longbow +weight=900 +value=52 26 +damage=7 37 +hp=31 70 +spd=22 +str=35 +} + +// Magical Shortbow - T2A stats (default) +[0x2d2b_t2a] +{ +get=base_magical_shortbow +weight=600 +value=51 26 +damage=6 31 +hp=31 70 +spd=28 +str=35 +} diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/axes_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/axes_t2a.dfn new file mode 100644 index 000000000..194ae1176 --- /dev/null +++ b/data/dfndata/items/gear/weapons/weapons_t2a/axes_t2a.dfn @@ -0,0 +1,143 @@ +// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// +// Items in this file are generally not added or referenced directly. +// Reference instead, the corresponding entries in the root weapons folder, which then +// picks the correct sub-entry based on the active NPC ruleset on the server + +// Large Battle Axe - T2A stats (default) +[0x13fa_t2a] +{ +get=base_large_battle_axe +weight=600 +value=43 21 +damage=6 38 +hp=31 110 +spd=30 +str=40 +} + +// Two Handed Axe - T2A stats (default) +[0x1442_t2a] +{ +get=base_two_handed_axe +weight=800 +value=42 21 +damage=5 39 +hp=31 70 +spd=30 +str=35 +} + +// Hatchet T2A stats (default) +[0x0f43_t2a] +{ +get=base_hatchet +weight=400 +value=30 15 +damage=2 17 +hp=31 80 +spd=40 +str=15 +} + +// Executioner's Axe - T2A stats (default) +[0x0f45_t2a] +{ +get=base_executioners_axe +weight=800 +value=38 33 +damage=6 33 +hp=31 90 +spd=37 +str=35 +} + +// Battle Axe - T2A stats (default) +[0x0f47_t2a] +{ +get=base_battle_axe +weight=400 +value=38 36 +damage=6 38 +hp=31 80 +spd=30 +str=40 +} + +// Axe - T2A stats (default) +[0x0f49_t2a] +{ +get=base_axe +weight=400 +value=48 24 +damage=6 33 +hp=31 100 +spd=37 +str=35 +} + +// Double Axe - T2A stats (default) +[0x0f4b_t2a] +{ +get=base_double_axe +weight=800 +value=32 16 +damage=5 35 +hp=31 110 +spd=37 +str=45 +} + +//------------------------------------------------------------------------------------------------// + +// MONDAIN'S LEGACY +// Ornate Axe - T2A stats (default) +[0x2d28_t2a] +{ +get=base_ornate_axe +weight=1200 +value=48 24 +damage=5 36 +hp=30 65 +spd=29 +str=40 +} + +//------------------------------------------------------------------------------------------------// + +// STYGIAN ABYSS +// Gargish Battle Axe - T2A stats (default) +[0x48b0_t2a] +{ +get=base_gargish_battle_axe +weight=400 +value=38 36 +damage=6 38 +hp=31 80 +spd=30 +str=40 +} + +// Dual Short Axes - T2A stats (default) +[0x08fd_t2a] +{ +get=base_dual_short_axes +weight=400 +value=92 50 +damage=4 31 +hp=31 115 +spd=36 +str=30 +} + +// Gargish Axe - T2A stats (default) +[0x48b2_t2a] +{ +get=base_gargish_axe +weight=400 +value=48 24 +damage=6 33 +hp=31 100 +spd=37 +str=35 +} diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/fencing_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/fencing_t2a.dfn new file mode 100644 index 000000000..1b7b8ae83 --- /dev/null +++ b/data/dfndata/items/gear/weapons/weapons_t2a/fencing_t2a.dfn @@ -0,0 +1,305 @@ +// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// +// Items in this file are generally not added or referenced directly. +// Reference instead, the corresponding entries in the root weapons folder, which then +// picks the correct sub-entry based on the active NPC ruleset on the server + +// Spear - T2A stats (default) +[0x0f62_t2a] +{ +get=base_spear +weight=700 +value=38 36 +damage=2 36 +hp=31 80 +spd=46 +str=30 +script=5050//weapon_abilties.js +} + +// Tribal Spear - T2A stats (default) +[tribalspear_t2a] +{ +get=base_spear +weight=700 +value=38 36 +damage=4 40 +hp=31 80 +spd=46 +str=30 +script=5050//weapon_abilties.js +} + +// Kryss - T2A stats (default) +[0x1400_t2a] +{ +get=base_kryss +weight=100 +value=42 21 +damage=3 28 +hp=31 90 +spd=53 +str=10 +} + +// Short Spear - T2A stats (default) +[0x1402_t2a] +{ +get=base_short_spear +weight=400 +value=32 16 +damage=4 32 +hp=31 70 +spd=50 +str=15 +} + +// War Fork - T2A stats (default) +[0x1404_t2a] +{ +get=base_war_fork +weight=900 +value=30 15 +damage=4 32 +hp=31 110 +spd=45 +str=35 +} + +// Pitchfork - T2A stats (default) +[0x0e87_t2a] +{ +get=base_pitchfork +weight=1000 +value=25 12 +damage=4 16 +hp=31 60 +spd=45 +str=15 +script=5050//weapon_abilties.js +} + +// Age of Shadows + +// Pike - T2A stats (default) +[0x26be_t2a] +{ +get=base_pike +weight=800 +value=51 31 +damage=4 28 +hp=31 110 +spd=37 +str=20 +script=5050//weapon_abilties.js +} + +// Lance - T2A stats (default) +[0x26c0_t2a] +{ +get=base_lance +weight=1200 +value=44 27 +damage=5 37 +hp=31 110 +spd=26 +str=40 +} + +// Samurai Empire + +// Lajatang - T2A stats (default) +[0x27a7_t2a] +{ +get=base_lajatang +weight=1200 +value=141 87 +damage=4 32 +hp=90 95 +spd=32 +str=30 +script=5050//weapon_abilties.js +} + +// Tekagi - T2A stats (default) +[0x27ab_t2a] +{ +get=base_tekagi +weight=500 +value=72 35 +damage=3 22 +hp=35 60 +spd=56 +str=5 +} + +// Kama - T2A stats (default) +[0x27ad_t2a] +{ +get=base_kama +weight=700 +value=80 48 +damage=3 22 +hp=35 60 +spd=56 +str=10 +script=5050//weapon_abilties.js +} + +// Sai - T2A stats (default) +[0x27af_t2a] +{ +get=base_sai +weight=700 +value=73 45 +damage=3 22 +hp=55 60 +spd=56 +str=10 +script=5050//weapon_abilties.js +} + +//------------------------------------------------------------------------------------------------// + +// MONDAIN'S LEGACY +// War Cleaver - T2A stats (default) +[0x2d23_t2a] +{ +get=base_war_cleaver +weight=500 +value=39 20 +damage=3 22 +hp=30 60 +spd=50 +str=10 +script=5050//weapon_abilties.js +} + +// Elven Spellblade - T2A stats (default) +[0x2d20_t2a] +{ +get=base_elven_spellblade +weight=500 +value=73 37 +damage=3 25 +hp=30 60 +spd=45 +str=15 +} + +//------------------------------------------------------------------------------------------------// + +// STYGIAN ABYSS +// Gargish War Fork - T2A stats (default) +[0x48be_t2a] +{ +get=base_gargish_war_fork +weight=900 +value=30 15 +damage=4 32 +hp=31 110 +spd=45 +str=35 +} + +// Shortblade - T2A stats (default) +[0x0907_t2a] +{ +get=base_shortblade +weight=700 +value=77 41 +damage=3 23 +hp=31 120 +spd=49 +str=5 +} + +// Bloodblade - T2A stats (default) +[0x08fe_t2a] +{ +get=base_bloodblade +weight=300 +value=63 34 +damage=3 15 +hp=31 95 +spd=55 +str=5 +} + +// Gargish Kryss - T2A stats (default) +[0x48bc_t2a] +{ +get=base_gargish_kryss +weight=100 +value=42 21 +damage=3 28 +hp=31 90 +spd=53 +str=10 +} + +// Gargish Lance - T2A stats (default) +[0x48ca_t2a] +{ +get=base_gargish_lance +weight=1200 +value=44 27 +damage=5 37 +hp=31 110 +spd=26 +str=40 +} + +// Gargish Pike - T2A stats (default) +[0x48c8_t2a] +{ +get=base_gargish_pike +weight=800 +value=51 31 +damage=4 28 +hp=31 110 +spd=37 +str=20 +script=5050//weapon_abilties.js +} + +// Dual Pointed Spear - T2A stats (default) +[0x0904_t2a] +{ +get=base_dual_pointed_spear +weight=700 +value=70 35 +damage=3 23 +hp=31 80 +spd=50 +str=20 +script=5050//weapon_abilties.js +} + +// Gargish Tekagi - T2A stats (default) +[0x48ce_t2a] +{ +get=base_gargish_tekagi +weight=500 +value=72 35 +damage=3 22 +hp=35 60 +spd=56 +str=5 +script=5050//weapon_abilties.js +} + +//------------------------------------------------------------------------------------------------// + +// TIME OF LEGENDS +// Spiked Whip - T2A stats (default) +[0xa28a_t2a] +{ +get=base_spiked_whip +weight=600 +value=27 14 +damage=4 27 +hp=36 50 +spd=40 +str=5 +} diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/knives_daggers_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/knives_daggers_t2a.dfn new file mode 100644 index 000000000..f170c2a32 --- /dev/null +++ b/data/dfndata/items/gear/weapons/weapons_t2a/knives_daggers_t2a.dfn @@ -0,0 +1,95 @@ +// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// +// Items in this file are generally not added or referenced directly. +// Reference instead, the corresponding entries in the root weapons folder, which then +// picks the correct sub-entry based on the active NPC ruleset on the server + +// Cleaver - T2A stats (default) +[0x0ec2_t2a] +{ +get=base_cleaver +weight=100 +value=24 12 +damage=2 13 +hp=31 50 +spd=40 +str=10 +} + +// Skinning Knife - T2A stats (default) +[0x0ec4_t2a] +{ +get=base_skinning_knife +weight=100 +value=26 13 +damage=1 10 +hp=31 40 +spd=40 +str=5 +} + +// Dagger - T2A stats (default) +[0x0f51_t2a] +{ +get=base_dagger +weight=100 +value=33 21 +damage=3 15 +hp=31 50 +spd=55 +str=1 +} + +// Butcher Knife - T2A stats (default) +[0x13f6_t2a] +{ +get=base_butcher_knife +weight=100 +value=21 10 +damage=2 14 +hp=31 40 +spd=40 +str=5 +} + +//------------------------------------------------------------------------------------------------// + +// MONDAIN'S LEGACY +// Leafblade - T2A stats (default) +[0x2d22_t2a] +{ +get=base_leafblade +damage=4 27 +hp=30 65 +spd=40 +str=5 +value=27 14 +weight=600 +} + +// Assassin Spike - T2A stats (default) +[0x2d21_t2a] +{ +get=base_assassin_spike +damage=3 15 +hp=30 65 +spd=55 +str=5 +value=27 14 +weight=300 +} + +//------------------------------------------------------------------------------------------------// + +// STYGIAN ABYSS +// Gargish Dagger - T2A stats (default) +[0x0902_t2a] +{ +get=base_gargish_dagger +damage=3 15 +hp=31 50 +spd=55 +str=1 +value=33 21 +weight=100 +} diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/maces_hammers_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/maces_hammers_t2a.dfn new file mode 100644 index 000000000..1655a92f9 --- /dev/null +++ b/data/dfndata/items/gear/weapons/weapons_t2a/maces_hammers_t2a.dfn @@ -0,0 +1,255 @@ +// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// +// Items in this file are generally not added or referenced directly. +// Reference instead, the corresponding entries in the root weapons folder, which then +// picks the correct sub-entry based on the active NPC ruleset on the server + +// War Axe - T2A stats (default) +[0x13af_t2a] +{ +get=base_war_axe +weight=800 +value=38 19 +damage=9 27 +hp=31 80 +spd=40 +str=35 +} + +// Smith's Hammer - T2A stats (default) +[0x13e3_t2a] +{ +get=base_smiths_hammer +weight=800 +value=36 18 +damage=6 18 +hp=31 60 +spd=30 +str=30 +} + +// Club - T2A stats (default) +[0x13b3_t2a] +{ +get=base_club +weight=900 +value=27 13 +damage=8 24 +hp=31 40 +spd=40 +str=10 +} + +// Sledge Hammer - T2A stats (default) +[0x0fb4_t2a] +{ +get=base_sledge_hammer +weight=900 +value=32 16 +damage=12 38 +hp=31 60 +spd=15 +str=30 +} + +// Mace - T2A stats (default) +[0x0f5c_t2a] +{ +get=base_mace +weight=1400 +value=38 30 +damage=8 32 +hp=31 70 +spd=30 +str=20 +} + +// War Mace - T2A stats (default) +[0x1406_t2a] +{ +get=base_war_mace +weight=1700 +value=37 18 +damage=10 30 +hp=31 110 +spd=32 +str=30 +} + +// War Hammer - T2A stats (default) +[0x1438_t2a] +{ +get=base_war_hammer +weight=1000 +value=27 13 +damage=8 36 +hp=31 110 +spd=31 +str=40 +script=5050//weapon_abilties.js +} + +// Maul - T2A stats (default) +[0x143a_t2a] +{ +get=base_maul +weight=1400 +value=31 15 +damage=10 30 +hp=31 70 +spd=30 +str=20 +} + +// Hammer Pick - T2A stats (default) +[0x143c_t2a] +{ +get=base_hammer_pick +weight=900 +value=31 15 +damage=6 33 +hp=31 70 +spd=30 +str=35 +} + +//------------------------------------------------------------------------------------------------// + +// AGE OF SHADOWS + +// Scepter - T2A stats (default) +[0x26bc_t2a] +{ +get=base_scepter +weight=800 +value=48 26 +damage=10 31 +hp=31 110 +spd=28 +str=20 +} + +//------------------------------------------------------------------------------------------------// + +// SAMURAI EMPIRE +// Tessen - T2A stats (default) +[0x27a3_t2a] +{ +get=base_tessen +weight=500 +value=124 68 +damage=6 23 +hp=55 60 +spd=54 +str=25 +script=5050//weapon_abilties.js +} + +// Tetsubo - T2A stats (default) +[0x27a6_t2a] +{ +get=base_tetsubo +weight=700 +value=64 35 +damage=7 27 +hp=60 65 +spd=43 +str=25 +script=5050//weapon_abilties.js +} + +// Nunchaku - T2A stats (default) +[0x27ae_t2a] +{ +get=base_nunchaku +weight=400 +value=52 28 +damage=7 27 +hp=40 55 +spd=43 +str=15 +script=5050//weapon_abilties.js +} + +//------------------------------------------------------------------------------------------------// + +// MONDAIN'S LEGACY +// Diamond Mace - T2A stats (default) +[0x2d24_t2a] +{ +get=base_diamond_mace +damage=9 29 +hp=30 60 +spd=30 +str=20 +value=28 14 +weight=1000 +} + +//------------------------------------------------------------------------------------------------// + +// STYGIAN ABYSS +// Gargish Maul - T2A stats (default) +[0x48c2_t2a] +{ +get=base_gargish_maul +damage=10 30 +hp=31 70 +spd=30 +str=20 +value=31 15 +weight=1400 +} + +// Disc Mace - T2A stats (default) +[0x0903_t2a] +{ +get=base_disc_mace +damage=8 25 +hp=31 110 +spd=35 +str=20 +value=76 42 +weight=1400 +} + +// Gargish War Hammer - T2A stats (default) +[0x48c0_t2a] +{ +get=base_gargish_war_hammer +damage=8 36 +hp=31 110 +spd=31 +str=40 +value=27 13 +weight=1000 +script=5050//weapon_abilties.js +} + +// Gargish Tessen - T2A stats (default) +[0x48cc_t2a] +{ +get=base_gargish_tessen +damage=6 23 +hp=55 60 +spd=54 +str=25 +value=124 68 +weight=500 +script=5050//weapon_abilties.js +} + +//------------------------------------------------------------------------------------------------// + +// TIME OF LEGENDS +// Barbed Whip - T2A stats (default) +[0xa289_t2a] +{ +get=base_barbed_whip +damage=9 29 +hp=36 50 +spd=30 +str=10 +value=28 14 +weight=500 +} diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/missile_weapons_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/missile_weapons_t2a.dfn new file mode 100644 index 000000000..72330d8d6 --- /dev/null +++ b/data/dfndata/items/gear/weapons/weapons_t2a/missile_weapons_t2a.dfn @@ -0,0 +1,9 @@ + +// Fukiya - T2A stats (default) +[0x27aa_t2a] +{ +get=base_fukiya +damage=2 12 +value=58 41 +weight=400 +} diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/staves_polearms_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/staves_polearms_t2a.dfn new file mode 100644 index 000000000..a0c94aad2 --- /dev/null +++ b/data/dfndata/items/gear/weapons/weapons_t2a/staves_polearms_t2a.dfn @@ -0,0 +1,209 @@ +// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// +// Items in this file are generally not added or referenced directly. +// Reference instead, the corresponding entries in the root weapons folder, which then +// picks the correct sub-entry based on the active NPC ruleset on the server + +// Crook - T2A stats (default) +[0x13f4_t2a] +{ +get=base_crook +weight=200 +value=33 24 +damage=3 12 +hp=31 50 +spd=30 +str=10 +} + +// Shepherd's Crook - T2A stats (default) +[0x0e81_t2a] +{ +get=base_shepherds_crook +weight=200 +value=33 24 +damage=3 12 +hp=31 50 +spd=30 +str=10 +} + +// Gnarled Staff - T2A stats (default) +[0x13f8_t2a] +{ +get=base_gnarled_staff +weight=300 +value=24 12 +damage=10 30 +hp=31 50 +spd=33 +str=20 +} + +// Black Staff - T2A stats (default) +[0x0df0_t2a] +{ +get=base_black_staff +weight=600 +value=27 24 +damage=8 33 +hp=31 70 +spd=35 +str=35 +} + +// Quarter Staff - T2A stats (default) +[0x0e89_t2a] +{ +get=base_quarter_staff +weight=400 +value=30 15 +damage=8 28 +hp=31 60 +spd=48 +str=30 +} + +// Halberd - T2A stats (default) +[0x143e_t2a] +{ +get=base_halberd +weight=1600 +value=50 25 +damage=5 49 +hp=31 100 +spd=25 +str=45 +} + +// Bardiche - T2A stats (default) +[0x0f4d_t2a] +{ +get=base_bardiche +weight=700 +value=68 34 +damage=5 43 +hp=31 100 +spd=26 +str=40 +script=5050//weapon_abilties.js +} + +// Age of Shadows + +// Scythe - T2A stats (default) +[0x26ba_t2a] +{ +get=base_scythe +weight=500 +value=43 23 +damage=5 35 +hp=31 105 +spd=31 +str=40 +script=5050//weapon_abilties.js +} + +// Bladed Staff - T2A stats (default) +[0x26bd_t2a] +{ +get=base_bladed_staff +weight=400 +value=45 25 +damage=4 31 +hp=21 115 +spd=36 +str=35 +script=5050//weapon_abilties.js +} + +// Double Bladed Staff - T2A stats (default) +[0x26bf_t2a] +{ +get=base_double_bladed_staff +weight=200 +value=46 27 +damage=3 23 +hp=31 80 +spd=50 +str=20 +} + +//------------------------------------------------------------------------------------------------// + +// MONDAIN'S LEGACY + +// Wild Staff - T2A stats (default) +[0x2d25_t2a] +{ +get=base_wild_staff +damage=6 23 +hp=30 60 +spd=48 +str=15 +value=29 15 +weight=700 +} + +//------------------------------------------------------------------------------------------------// + +// STYGIAN ABYSS +// Gargish Bardiche - T2A stats (default) +[0x48b4_t2a] +{ +get=base_gargish_bardiche +damage=5 43 +hp=31 100 +spd=26 +str=40 +value=68 34 +weight=700 +} + +// Gargish Scythe - T2A stats (default) +[0x48c4_t2a] +{ +get=base_gargish_scythe +damage=5 35 +hp=31 105 +spd=31 +str=40 +value=43 23 +weight=500 +} + +// Serpentstone Staff - T2A stats (default) +[0x0906_t2a] +{ +get=base_serpentstone_staff +damage=11 32 +hp=31 50 +spd=31 +str=25 +value=45 25 +weight=300 +} + +// Gargish Gnarled Staff - T2A stats (default) +[0x48b8_t2a] +{ +get=base_gargish_gnarled_staff +damage=10 30 +hp=31 50 +spd=33 +str=20 +value=24 12 +weight=300 +} + +// Glass Staff - T2A stats (default) +[0x0905_t2a] +{ +get=base_glass_staff +damage=7 25 +hp=31 70 +spd=48 +str=15 +value=16 8 +weight=300 +} diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/swords_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/swords_t2a.dfn new file mode 100644 index 000000000..77165a7d1 --- /dev/null +++ b/data/dfndata/items/gear/weapons/weapons_t2a/swords_t2a.dfn @@ -0,0 +1,348 @@ +// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// +// Items in this file are generally not added or referenced directly. +// Reference instead, the corresponding entries in the root weapons folder, which then +// picks the correct sub-entry based on the active NPC ruleset on the server + +// Cutlass - T2A stats (default) +[0x1440_t2a] +{ +get=base_cutlass +weight=800 +value=32 27 +damage=6 28 +hp=31 70 +spd=45 +str=10 +} + +// Katana - T2A stats (default) +[0x13fe_t2a] +{ +get=base_katana +weight=600 +value=42 21 +damage=5 26 +hp=31 90 +spd=58 +str=10 +} + +// Broadsword - T2A stats (default) +[0x0f5e_t2a] +{ +get=base_broadsword +weight=600 +value=44 22 +damage=5 29 +hp=31 100 +spd=45 +str=25 +} + +// Longsword - T2A stats (default) +[0x0f60_t2a] +{ +get=base_longsword +weight=700 +value=60 30 +damage=5 33 +hp=31 90 +spd=35 +str=25 +} + +// Long Sword (thin) - T2A stats (default) +[0x13b7_t2a] +{ +get=base_long_sword +weight=100 +value=33 33 +damage=5 33 +hp=31 90 +spd=35 +str=25 +} + +// Scimitar - T2A stats (default) +[0x13b5_t2a] +{ +get=base_scimitar +weight=500 +value=43 21 +damage=4 30 +hp=31 90 +spd=43 +str=10 +} + +// Viking Sword - T2A stats (default) +[0x13b9_t2a] +{ +get=base_viking_sword +weight=600 +value=66 33 +damage=6 34 +hp=31 90 +spd=30 +str=40 +} + +// Age of Shadows + +// Bone Harvester - T2A stats (default) +[0x26bb_t2a] +{ +get=base_bone_harvester +weight=300 +value=44 21 +damage=4 29 +hp=31 70 +spd=39 +str=20 +} + +// Crescent Blade - T2A stats (default) +[0x26c1_t2a] +{ +get=base_crescent_blade +weight=100 +value=49 25 +damage=4 27 +hp=51 85 +spd=43 +str=45 +} + +// Paladin Sword - T2A stats (default) +[0x26ce_t2a] +{ +get=base_paladin_sword +weight=600 +value=45 23 +damage=6 44 +hp=36 50 +spd=22 +str=70 +script=5050//weapon_abilties.js +} + +// Samurai Empire + +// No-Dachi - T2A stats (default) +[0x27a2_t2a] +{ +get=base_no-dachi +weight=1000 +value=91 50 +damage=5 35 +hp=31 95 +spd=31 +str=35 +script=5050//weapon_abilties.js +} + +// Wakizashi - T2A stats (default) +[0x27a4_t2a] +{ +get=base_wakizashi +weight=500 +value=48 24 +damage=3 25 +hp=45 50 +spd=47 +str=15 +} + +// Bokuto - T2A stats (default) +[0x27a8_t2a] +{ +get=base_bokuto +weight=700 +value=26 13 +damage=3 22 +hp=25 50 +spd=59 +str=15 +} + +// Daisho - T2A stats +[0x27a9_t2a] +{ +get=base_daisho +weight=800 +value=74 41 +damage=4 29 +hp=45 70 +spd=39 +str=35 +script=5050//weapon_abilties.js +} + +//------------------------------------------------------------------------------------------------// + +// MONDAIN'S LEGACY + +// Elven Machete - T2A stats (default) +[0x2d29_t2a] +{ +get=base_elven_machete +damage=4 27 +hp=30 60 +spd=43 +str=15 +value=24 12 +weight=600 +} + +// Radiant Scimitar - T2A stats (default) +[0x2d29_t2a] +{ +get=base_radiant_scimitar +damage=4 25 +hp=30 60 +spd=47 +str=15 +value=24 12 +weight=900 +} + +// Rune Blade - T2A stats (default) +[0x2d26_t2a] +{ +get=base_rune_blade +damage=4 31 +hp=30 65 +spd=36 +str=25 +value=49 25 +weight=700 +script=5050//weapon_abilties.js +} + +//------------------------------------------------------------------------------------------------// + +// STYGIAN ABYSS +// Dread Sword - T2A stats (default) +[0x090b_t2a] +{ +get=base_dread_sword +damage=5 32 +hp=31 110 +spd=34 +str=25 +value=24 12 +weight=700 +} + +// Gargish Bone Harvester - T2A stats (default) +[0x48c6_t2a] +{ +get=base_gargish_bone_harvester +damage=4 29 +hp=31 70 +spd=39 +str=20 +value=44 21 +weight=300 +} + +// Glass Sword - T2A stats (default) +[0x090c_t2a] +{ +get=base_glass_sword +damage=4 27 +hp=31 90 +spd=43 +str=15 +value=35 18 +weight=600 +} + +// Gargish Cleaver - T2A stats (default) +[0x48ae_t2a] +{ +get=base_gargish_cleaver +damage=2 13 +hp=31 50 +spd=40 +str=10 +value=24 12 +weight=100 +} + +// Gargish Katana - T2A stats (default) +[0x48ba_t2a] +{ +get=base_gargish_katana +damage=5 26 +hp=31 90 +spd=58 +str=10 +value=42 21 +weight=600 +} + +// Gargish Butcher Knife - T2A stats (default) +[0x48b6_t2a] +{ +get=base_gargish_butcher_knife +damage=2 14 +hp=31 40 +spd=40 +str=5 +value=21 10 +weight=100 +} + +// Stone War Sword - T2A stats (default) +[0x0900_t2a] +{ +get=base_stone_war_sword +damage=5 34 +hp=31 100 +spd=31 +str=30 +value=24 12 +weight=600 +} + +// Gargish Talwar - T2A stats (default) +[0x0908_t2a] +{ +get=base_gargish_talwar +damage=5 35 +hp=31 85 +spd=31 +str=35 +value=70 38 +weight=1600 +} + +// Gargish Daisho - T2A stats (default) +[0x48d0_t2a] +{ +get=base_gargish_daisho +damage=4 29 +hp=45 70 +spd=39 +str=35 +value=74 41 +weight=800 +script=5050//weapon_abilties.js +} + +//------------------------------------------------------------------------------------------------// + +// TIME OF LEGENDS +// Bladed Whip - T2A stats (default) +[0xa28b_t2a] +{ +get=base_bladed_whip +damage=4 31 +hp=36 50 +spd=36 +str=15 +value=24 12 +weight=500 +} diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/throwing_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/throwing_t2a.dfn new file mode 100644 index 000000000..9d2d52791 --- /dev/null +++ b/data/dfndata/items/gear/weapons/weapons_t2a/throwing_t2a.dfn @@ -0,0 +1,45 @@ +// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// +// Items in this file are generally not added or referenced directly. +// Reference instead, the corresponding entries in the root weapons folder, which then +// picks the correct sub-entry based on the active NPC ruleset on the server + +// Soul Glaives - T2A stats (default) +[0x090a_t2a] +{ +get=base_soul_glaive +weight=900 +value=77 39 +damage=8 39 +hp=27 95 +spd=21 +str=45 +baserange=8 +maxrange=11 +} + +// Boomerang - T2A stats (default) +[0x08ff_t2a] +{ +get=base_boomerang +baserange=4 +damage=5 29 +hp=27 85 +maxrange=7 +spd=30 +str=20 +value=32 16 +weight=400 +} + +// Cyclone - T2A stats (default) +[0x0901_t2a] +{ +get=base_cyclone +weight=600 +value=53 26 +damage=6 33 +hp=27 85 +spd=26 +str=30 +} diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/wands_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/wands_t2a.dfn new file mode 100644 index 000000000..3ebf7c259 --- /dev/null +++ b/data/dfndata/items/gear/weapons/weapons_t2a/wands_t2a.dfn @@ -0,0 +1,17 @@ +// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// +// Items in this file are generally not added or referenced directly. +// Reference instead, the corresponding entries in the root weapons folder, which then +// picks the correct sub-entry based on the active NPC ruleset on the server + +// Wand - T2A stats (default) +[0x0df2_t2a] +{ +get=base_wand +weight=200 +value=30 15 +damage=2 6 +hp=31 70 +spd=35 +str=1 +} From 72a2e2b545b206988394c41a5c1dbf5ba4c31627 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Fri, 10 Nov 2023 09:13:38 -0600 Subject: [PATCH 11/37] Fixed information --- data/dfndata/items/gear/weapons/weapons_t2a/archery_t2a.dfn | 2 +- data/dfndata/items/gear/weapons/weapons_t2a/axes_t2a.dfn | 2 +- data/dfndata/items/gear/weapons/weapons_t2a/fencing_t2a.dfn | 2 +- .../items/gear/weapons/weapons_t2a/knives_daggers_t2a.dfn | 2 +- .../items/gear/weapons/weapons_t2a/maces_hammers_t2a.dfn | 2 +- .../items/gear/weapons/weapons_t2a/staves_polearms_t2a.dfn | 2 +- data/dfndata/items/gear/weapons/weapons_t2a/swords_t2a.dfn | 2 +- data/dfndata/items/gear/weapons/weapons_t2a/throwing_t2a.dfn | 2 +- data/dfndata/items/gear/weapons/weapons_t2a/wands_t2a.dfn | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/archery_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/archery_t2a.dfn index 57daa5989..45f143ac4 100644 --- a/data/dfndata/items/gear/weapons/weapons_t2a/archery_t2a.dfn +++ b/data/dfndata/items/gear/weapons/weapons_t2a/archery_t2a.dfn @@ -1,4 +1,4 @@ -// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// Weapon Stats matching up april 8 publish 4 // // Items in this file are generally not added or referenced directly. // Reference instead, the corresponding entries in the root weapons folder, which then diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/axes_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/axes_t2a.dfn index 194ae1176..e2f07736b 100644 --- a/data/dfndata/items/gear/weapons/weapons_t2a/axes_t2a.dfn +++ b/data/dfndata/items/gear/weapons/weapons_t2a/axes_t2a.dfn @@ -1,4 +1,4 @@ -// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// Weapon Stats matching up april 8 publish 4 // // Items in this file are generally not added or referenced directly. // Reference instead, the corresponding entries in the root weapons folder, which then diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/fencing_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/fencing_t2a.dfn index 1b7b8ae83..0b625f106 100644 --- a/data/dfndata/items/gear/weapons/weapons_t2a/fencing_t2a.dfn +++ b/data/dfndata/items/gear/weapons/weapons_t2a/fencing_t2a.dfn @@ -1,4 +1,4 @@ -// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// Weapon Stats matching up april 8 publish 4 // // Items in this file are generally not added or referenced directly. // Reference instead, the corresponding entries in the root weapons folder, which then diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/knives_daggers_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/knives_daggers_t2a.dfn index f170c2a32..8378d85fa 100644 --- a/data/dfndata/items/gear/weapons/weapons_t2a/knives_daggers_t2a.dfn +++ b/data/dfndata/items/gear/weapons/weapons_t2a/knives_daggers_t2a.dfn @@ -1,4 +1,4 @@ -// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// Weapon Stats matching up april 8 publish 4 // // Items in this file are generally not added or referenced directly. // Reference instead, the corresponding entries in the root weapons folder, which then diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/maces_hammers_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/maces_hammers_t2a.dfn index 1655a92f9..531cd5343 100644 --- a/data/dfndata/items/gear/weapons/weapons_t2a/maces_hammers_t2a.dfn +++ b/data/dfndata/items/gear/weapons/weapons_t2a/maces_hammers_t2a.dfn @@ -1,4 +1,4 @@ -// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// Weapon Stats matching up april 8 publish 4 // // Items in this file are generally not added or referenced directly. // Reference instead, the corresponding entries in the root weapons folder, which then diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/staves_polearms_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/staves_polearms_t2a.dfn index a0c94aad2..f78af4b2d 100644 --- a/data/dfndata/items/gear/weapons/weapons_t2a/staves_polearms_t2a.dfn +++ b/data/dfndata/items/gear/weapons/weapons_t2a/staves_polearms_t2a.dfn @@ -1,4 +1,4 @@ -// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// Weapon Stats matching up april 8 publish 4 // // Items in this file are generally not added or referenced directly. // Reference instead, the corresponding entries in the root weapons folder, which then diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/swords_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/swords_t2a.dfn index 77165a7d1..62ac65ed0 100644 --- a/data/dfndata/items/gear/weapons/weapons_t2a/swords_t2a.dfn +++ b/data/dfndata/items/gear/weapons/weapons_t2a/swords_t2a.dfn @@ -1,4 +1,4 @@ -// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// Weapon Stats matching up april 8 publish 4 // // Items in this file are generally not added or referenced directly. // Reference instead, the corresponding entries in the root weapons folder, which then diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/throwing_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/throwing_t2a.dfn index 9d2d52791..e1795f583 100644 --- a/data/dfndata/items/gear/weapons/weapons_t2a/throwing_t2a.dfn +++ b/data/dfndata/items/gear/weapons/weapons_t2a/throwing_t2a.dfn @@ -1,4 +1,4 @@ -// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// Weapon Stats matching up april 8 publish 4 // // Items in this file are generally not added or referenced directly. // Reference instead, the corresponding entries in the root weapons folder, which then diff --git a/data/dfndata/items/gear/weapons/weapons_t2a/wands_t2a.dfn b/data/dfndata/items/gear/weapons/weapons_t2a/wands_t2a.dfn index 3ebf7c259..01ea2be26 100644 --- a/data/dfndata/items/gear/weapons/weapons_t2a/wands_t2a.dfn +++ b/data/dfndata/items/gear/weapons/weapons_t2a/wands_t2a.dfn @@ -1,4 +1,4 @@ -// Weapon Stats matching up with Lord Blackthorn's Revenge (Publish 15) +// Weapon Stats matching up april 8 publish 4 // // Items in this file are generally not added or referenced directly. // Reference instead, the corresponding entries in the root weapons folder, which then From ab51fcd8418a393a66e7b9e762de4750e85603c3 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Fri, 10 Nov 2023 09:20:18 -0600 Subject: [PATCH 12/37] Update Js spells Update JS spells with spell channeling and runebook. --- data/js/item/runebook.js | 2 +- data/js/magic/clumsy.js | 2 +- data/js/magic/createfood.js | 2 +- data/js/magic/level1targ.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/js/item/runebook.js b/data/js/item/runebook.js index 813743c7e..6b1d1a5dd 100644 --- a/data/js/item/runebook.js +++ b/data/js/item/runebook.js @@ -690,7 +690,7 @@ function CastSpell( pSocket, pUser, spellNum, checkReagentReq ) // Is the player casting recall holding any objects? var itemRHand = pUser.FindItemLayer( 0x01 ); var itemLHand = pUser.FindItemLayer( 0x02 ); - if( ValidateObject( itemLHand ) || ( ValidateObject( itemRHand ) && itemRHand.type != 9 )) // Spellbook + if( ValidateObject( itemLHand ) && itemLHand.type != 119 || ( ValidateObject( itemRHand ) && itemRHand.type != 9 || itemRHand.type != 119 )) // Spellbook //spell channeling { pSocket.SysMessage( GetDictionaryEntry( 708, pSocket.language )); // You cannot cast with a weapon equipped. return; diff --git a/data/js/magic/clumsy.js b/data/js/magic/clumsy.js index 0588924d2..4904bb2f2 100644 --- a/data/js/magic/clumsy.js +++ b/data/js/magic/clumsy.js @@ -110,7 +110,7 @@ function onSpellCast( mSock, mChar, directCast, spellNum ) { var itemRHand = mChar.FindItemLayer( 0x01 ); var itemLHand = mChar.FindItemLayer( 0x02 ); - if( itemLHand || ( itemRHand && itemRHand.type != 9 )) // Spellbook + if(( itemLHand && itemLHand.type != 119 ) || (itemRHand && itemRHand.type != 9 || itemRHand.type != 119 )) // Spellbook { if( mSock != null ) { diff --git a/data/js/magic/createfood.js b/data/js/magic/createfood.js index 62e9f1dbe..b3226ef64 100644 --- a/data/js/magic/createfood.js +++ b/data/js/magic/createfood.js @@ -83,7 +83,7 @@ function onSpellCast( mSock, mChar, directCast, spellNum ) { var itemRHand = mChar.FindItemLayer( 0x01 ); var itemLHand = mChar.FindItemLayer( 0x02 ); - if( itemLHand || ( itemRHand && itemRHand.type != 9 )) // Spellbook + if(( itemLHand && itemLHand.type != 119 ) || ( itemRHand && itemRHand.type != 9 || itemRHand.type != 119 )) // Spellbook { if( mSock ) { diff --git a/data/js/magic/level1targ.js b/data/js/magic/level1targ.js index 28d627698..2d958cd64 100644 --- a/data/js/magic/level1targ.js +++ b/data/js/magic/level1targ.js @@ -67,7 +67,7 @@ function ItemInHandCheck( mChar, mSock, spellType ) { var itemRHand = mChar.FindItemLayer( 0x01 ); var itemLHand = mChar.FindItemLayer( 0x02 ); - if( itemLHand || ( itemRHand && itemRHand.type != 9 )) // Spellbook + if(( itemLHand && itemLHand.type != 119 ) || ( itemRHand && itemRHand.type != 9 || itemRHand.type != 119 )) // Spellbook { if( mSock ) { From 9effa8e662bf33f3816ef5093146935f2b4168af Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Fri, 10 Nov 2023 12:12:52 -0600 Subject: [PATCH 13/37] Missing Item IDs for Gumps The Stocking IDs was missing for the items.cpp file for the gumps --- source/Changelog.txt | 3 +++ source/items.cpp | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/source/Changelog.txt b/source/Changelog.txt index 9e375d49e..fd3c9956d 100644 --- a/source/Changelog.txt +++ b/source/Changelog.txt @@ -1,3 +1,6 @@ +10/11/2023 - Dragon Slayer + Added Stocking IDs to items.cpp (cpp items) + 28/10/2023 - Dragon Slayer (0.99.6a) Added DFN entries for hallow pumpkins, jack o lanterns and halloween decorations. (dfn item/misc/halloween) Added DFN entrie for killerpumpkin in daemons.dfn. (dfn daemons) diff --git a/source/items.cpp b/source/items.cpp index 71c8b964e..af8462584 100644 --- a/source/items.cpp +++ b/source/items.cpp @@ -1518,6 +1518,12 @@ PackTypes cItem::GetPackType( CItem *i ) packType = PT_PACK2; } break; + case 0x2bd9: + case 0x2BDA: + case 0x2BDB: + case 0x2BDC: + packType = PT_STOCKING; + break; case 0x232A: // giftbox case 0x232B: // giftbox packType = PT_GIFTBOX1; From b7fe9555a5a93a56f8e77c7ca20c08ca973bf101 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Fri, 10 Nov 2023 20:16:23 -0700 Subject: [PATCH 14/37] Improvements to BOD GUMP UX. - Multiple items can now be added in a row. - The cursor will automatically stop being a target at the BOD max. - The GUMP no longer closes after first clicking 'Combine...' - (Backend Only) Target clicking empty space no longer throws an error. --- data/js/item/smallbod.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/data/js/item/smallbod.js b/data/js/item/smallbod.js index cfc7c4081..62b16d0ab 100644 --- a/data/js/item/smallbod.js +++ b/data/js/item/smallbod.js @@ -43,9 +43,6 @@ function onUseChecked( pUser, smallBOD ) } else { - // Store iUsed as a custom property on pUser - pUser.bodItem = smallBOD; - var init = smallBOD.GetTag( "init" ) // just to make sure we dont set the bod over if( init == false ) // Keep from resetting the amount needed. { @@ -91,6 +88,8 @@ function SmallBODGump( pUser, smallBOD ) var socket = pUser.socket; var bodGump = new Gump; + pUser.bodItem = smallBOD; // Store BOD on the user for access in callbacks. + bodGump.AddPage( 0 ); bodGump.AddBackground( 50, 10, 455, 260, 5054 ); @@ -201,6 +200,7 @@ function onGumpPress( socket, pButton, gumpData ) delete pUser.bodItem; // Remove bodItem as a temporary property on pUser break; case 1: + SmallBODGump(pUser, smallBOD); CombineItemWithBod( pUser, smallBOD ); break; } @@ -238,10 +238,13 @@ function onCallback0( socket, myTarget ) var bodItemID = smallBOD.GetTag( "graphicID" ); delete pUser.bodItem; // Remove bodItem as a temporary property on pUser - // Abort if player cancels target cursor + // Abort if player cancels target cursor or clicks empty space. var cancelCheck = parseInt( socket.GetByte( 11 )); - if( cancelCheck == 255 ) + if( cancelCheck == 255 || !myTarget) + { + SmallBODGump(pUser, smallBOD); return; + } if( !socket.GetWord( 1 ) && myTarget.isItem && ( myTarget.sectionID == bodSectionID ) || ( myTarget.id == bodItemID && myTarget.name == bodItemName )) { @@ -352,11 +355,11 @@ function onCallback0( socket, myTarget ) myTarget.Delete(); pUser.TextMessage( GetDictionaryEntry( 17263, socket.language ), false, 0x3b2, 0, pUser.serial ); // The item has been combined with the deed. - if( amountCur < amountMax ) + if( amountCur + 1 < amountMax ) { pUser.CustomTarget( 0 ); - SmallBODGump( pUser, smallBOD ); } + SmallBODGump( pUser, smallBOD ); } } } From 058418a8a807b187b540ca7aa73377aaee924607 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Fri, 10 Nov 2023 20:18:58 -0700 Subject: [PATCH 15/37] Formatting fixes. --- data/js/item/smallbod.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/js/item/smallbod.js b/data/js/item/smallbod.js index 62b16d0ab..8b37f39bc 100644 --- a/data/js/item/smallbod.js +++ b/data/js/item/smallbod.js @@ -240,9 +240,9 @@ function onCallback0( socket, myTarget ) // Abort if player cancels target cursor or clicks empty space. var cancelCheck = parseInt( socket.GetByte( 11 )); - if( cancelCheck == 255 || !myTarget) + if( cancelCheck == 255 || !myTarget ) { - SmallBODGump(pUser, smallBOD); + SmallBODGump( pUser, smallBOD ); return; } From 60686e04ea208629bf80075eb5080b38fe1894ec Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Fri, 10 Nov 2023 22:13:12 -0700 Subject: [PATCH 16/37] Rename smallbod DFN item to smallbod_blacksmith. Create smallbod_tailer DFN item. --- data/dfndata/items/deeds/misc_deeds.dfn | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/data/dfndata/items/deeds/misc_deeds.dfn b/data/dfndata/items/deeds/misc_deeds.dfn index 653db24ca..1031f9492 100644 --- a/data/dfndata/items/deeds/misc_deeds.dfn +++ b/data/dfndata/items/deeds/misc_deeds.dfn @@ -39,13 +39,24 @@ id=0x14ef id=0x2258 } -[smallbod] +[smallbod_blacksmith] { get=base_item name=a bulk order deed -colour=0x44E//Blacksmith: 0x44E; Tailoring: 0x483 +colour=0x44E weight=100 script=5042 getlbr=smallbod_lbr getaos=smallbod_aos } + +[smallbod_tailor] +{ +get=base_item +name=a bulk order deed +colour=0x483 +weight=100 +script=5042 +getlbr=smallbod_lbr +getaos=smallbod_aos +} \ No newline at end of file From 4912172349bcd882703e8f17d11b03054241e754 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 01:31:48 -0700 Subject: [PATCH 17/37] Add bodSubtype to blacksmith BOD vendor DFNs. Change all blacksmith BOD vendor bodTypes to 1. Set up vendor_bdo_dispenser for tailoring BODs. --- data/dfndata/npc/femalevendors.dfn | 10 +- data/dfndata/npc/malevendors.dfn | 10 +- data/js/npc/ai/vendor_bdo_dispenser.js | 788 ++++++++----------------- 3 files changed, 274 insertions(+), 534 deletions(-) diff --git a/data/dfndata/npc/femalevendors.dfn b/data/dfndata/npc/femalevendors.dfn index de28780bd..57de8a31d 100644 --- a/data/dfndata/npc/femalevendors.dfn +++ b/data/dfndata/npc/femalevendors.dfn @@ -79,6 +79,7 @@ TACTICS=360 680 SHOPLIST=WeaponsmithShopping SCRIPT=3214 CUSTOMINTTAG=bodType 1 +CUSTOMINTTAG=bodSubtype 1 } [f_baker] @@ -394,7 +395,8 @@ ARMSLORE=640 1000 BLACKSMITHING=600 830 SHOPLIST=ArmorShopping SCRIPT=3214 -CUSTOMINTTAG=bodType 2 +CUSTOMINTTAG=bodType 1 +CUSTOMINTTAG=bodSubtype 2 } [f_blacksmith] @@ -424,7 +426,8 @@ SWORDSMANSHIP=600 830 TACTICS=600 830 SHOPLIST=BlacksmithShopping SCRIPT=3214 -CUSTOMINTTAG=bodType 3 +CUSTOMINTTAG=bodType 1 +CUSTOMINTTAG=bodSubtype 3 } [f_architect] @@ -1072,5 +1075,6 @@ SWORDSMANSHIP=600 830 TACTICS=600 830 SHOPLIST=BlacksmithShopping SCRIPT=3214 -CUSTOMINTTAG=bodType 3 +CUSTOMINTTAG=bodType 1 +CUSTOMINTTAG=bodSubtype 3 } \ No newline at end of file diff --git a/data/dfndata/npc/malevendors.dfn b/data/dfndata/npc/malevendors.dfn index 055f377a9..9d4d2a6a5 100644 --- a/data/dfndata/npc/malevendors.dfn +++ b/data/dfndata/npc/malevendors.dfn @@ -99,6 +99,7 @@ TACTICS=360 680 SHOPLIST=WeaponsmithShopping SCRIPT=3214 CUSTOMINTTAG=bodType 1 +CUSTOMINTTAG=bodSubtype 1 } [m_baker] @@ -447,7 +448,8 @@ ARMSLORE=640 1000 BLACKSMITHING=600 830 SHOPLIST=ArmorShopping SCRIPT=3214 -CUSTOMINTTAG=bodType 2 +CUSTOMINTTAG=bodType 1 +CUSTOMINTTAG=bodSubtype 2 } [m_blacksmith] @@ -479,7 +481,8 @@ SWORDSMANSHIP=600 830 TACTICS=600 830 SHOPLIST=BlacksmithShopping SCRIPT=3214 -CUSTOMINTTAG=bodType 3 +CUSTOMINTTAG=bodType 1 +CUSTOMINTTAG=bodSubtype 3 } [m_architect] @@ -1119,5 +1122,6 @@ SWORDSMANSHIP=600 830 TACTICS=600 830 SHOPLIST=BlacksmithShopping SCRIPT=3214 -CUSTOMINTTAG=bodType 3 +CUSTOMINTTAG=bodType 1 +CUSTOMINTTAG=bodSubtype 3 } \ No newline at end of file diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index 79e849be9..5c926de65 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -71,10 +71,183 @@ const armorCreateEntries = [ [49, 523, 623, 723, 823, 923, 1223, 1023, 1123] // Plate Helm ]; +const clothCreateEntries = [ + [130], + [131], + [132], + [133], + [134], + [135], + [136], + [137], + [138], + [139], + [140], + [141], + [142], + [143], + [144], + [145], + [146], + [147], + [148], + [149], + [150], + [151], + [152], + [153], + [154], + [155], + [156], + [157], + [158], + [160] +]; + +const BODTypes = { + Blacksmithing: 1, + Tailoring: 2 +}; + +const BODSubtypes = { + [BODTypes.Blacksmithing]: { + Weapon: 1, + Armor: 2, + WeaponOrArmor: 3 + }, + [BODTypes.Tailoring]: { + Cloth: 1 + } +} + +const BODTypesToSkillNames = { + [BODTypes.Blacksmithing]: 'blacksmithing', + [BODTypes.Tailoring]: 'tailoring' +}; + +const BODTypesToCreateEntries = { + [BODTypes.Blacksmithing]: { + [BODSubtypes[BODTypes.Blacksmithing].Weapon]: weaponCreateEntries, + [BODSubtypes[BODTypes.Blacksmithing].Armor]: armorCreateEntries, + [BODSubtypes[BODTypes.Blacksmithing].WeaponOrArmor]: weaponCreateEntries.concat(armorCreateEntries), + }, + [BODTypes.Tailoring]: { + [BODSubtypes[BODTypes.Tailoring].Cloth]: clothCreateEntries + } +}; + +const BlacksmithRewardTiersToItems = [ + { + items: [ + { itemName: "sturdy_pickaxe", props: [['maxUses', 200], ['usesLeft', 200]] }, + { itemName: "sturdy_shovel", props: [['maxUses', 200], ['usesLeft', 200]] }, + { itemName: "sturdy_pickaxe", props: [['maxUses', 150], ['usesLeft', 150]] }, + { itemName: "sturdy_shovel", props: [['maxUses', 150], ['usesLeft', 150]] }, + ], + selectionFunction: RandomNumber, + }, + { items: [{ itemName: "mining_gloves_1" }] }, + { items: [{ itemName: "mining_gloves_3" }] }, + { items: [{ itemName: "mining_gloves_5" }] }, + { items: [{ itemName: "dull_copper_runic_hammer" }] }, + { items: [{ itemName: "shadow_iron_runic_hammer" }] }, + { + items: [ + { itemName: "dc_anvil_deed" }, + { itemName: "si_anvil_deed" }, + { itemName: "c_anvil_deed" }, + { itemName: "b_anvil_deed" }, + { itemName: "g_anvil_deed" }, + { itemName: "a_anvil_deed" }, + { itemName: "v_anvil_deed" }, + { itemName: "v_anvil_deed" } + ], + selectionFunction: WeightedRandom + }, + { items: [{ itemName: "copper_runic_hammer" }] }, + { items: [{ itemName: "bronze_runic_hammer" }] }, + { items: [{ itemName: "ancient_smithy_hammer_10" }] }, + { items: [{ itemName: "ancient_smithy_hammer_15" }] }, + { items: [{ itemName: "gold_runic_hammer" }] }, + { items: [{ itemName: "ancient_smithy_hammer_30" }] }, + { items: [{ itemName: "agapite_runic_hammer" }] }, + { items: [{ itemName: "ancient_smithy_hammer_60" }] }, + { items: [{ itemName: "verite_runic_hammer" }] }, + { items: [{ itemName: "valorite_runic_hammer" }] } +]; + +const TailorRewardTiersToItems = [ + { + items: [ + { itemName: "sewing_kit", props: [['maxUses', 250], ['usesLeft', 250]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] } + ], + selectionFunction: RandomNumber + }, + { + items: [ + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] } + ], + selectionFunction: RandomNumber + }, + { + items: [ + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] } + ], + selectionFunction: RandomNumber + }, + { + items: [ + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'sandals', props: [['colour', 123]] }, + { itemName: 'sandals', props: [['colour', 123]] }, + { itemName: 'sandals', props: [['colour', 123]] }, + { itemName: 'sandals', props: [['colour', 123]] }, + { itemName: 'sandals', props: [['colour', 123]] }, + { itemName: 'sandals', props: [['colour', 123]] }, + { itemName: 'sandals', props: [['colour', 123]] }, + { itemName: 'sandals', props: [['colour', 123]] } + + ], + selectionFunction: RandomNumber + }, + { + items: [ + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['colour', 123]] } + ], + selectionFunction: RandomNumber + }, + { items: [{ itemName: "spined_runic_sewing_kit" }] }, + { items: [{ itemName: "clothing_bless_deed" }] }, + { items: [{ itemName: "horned_runic_sewing_kit" }] }, + { items: [{ itemName: "barbed_runic_sewing_kit" }] }, + +]; + +const BODTypesToRewards = { + [BODTypes.Blacksmithing]: BlacksmithRewardTiersToItems, + [BODTypes.Tailoring]: TailorRewardTiersToItems +}; + function onSoldToVendor( pSock, npcVendor, iSold ) { var pUser = pSock.currentChar; - if( offerBodsFromItemSales && CheckBodTimers( pUser )) + if( offerBodsFromItemSales && CheckBodTimers( pUser, npcVendor.getTag( 'bodType' ) )) { if( !onlyOfferBodsFromCraftedItems || iSold.madeWith != -1 ) // what is madeWith property for non-crafted items? { @@ -90,9 +263,9 @@ function onSoldToVendor( pSock, npcVendor, iSold ) return false; } -function CheckBodTimers( pUser ) +function CheckBodTimers( pUser, bodType ) { - var bodOfferCD = pUser.GetJSTimer( 1, 3214 ); // Fetch timer for BOD offer cooldown + var bodOfferCD = pUser.GetJSTimer( bodType, 3214 ); // Fetch timer for BOD offer cooldown if( bodOfferCD != 0 ) { // BOD cooldown still in effect - let's check the timer @@ -130,7 +303,7 @@ function onSpeech( myString, pUser, myNPC ) { case 0x5000: // Bulk Order Info - TW_BODINFO, custom UOX3 triggerword triggered via context menu { - if( CheckBodTimers( pUser )) + if( CheckBodTimers( pUser, myNPC.getTag( "bodType" ) )) { if( EraStringToNum( GetServerSetting( "CoreShardEra" )) <= EraStringToNum( "lbr" )) { @@ -149,14 +322,14 @@ function onSpeech( myString, pUser, myNPC ) function SmallBODAcceptGump( pUser, myNPC ) { - var socket = pUser.socket; - var bodType = myNPC.GetTag( "bodType" ); - var bodEntry = SelectBodEntry( pUser, true, bodType ); - var itemName = bodEntry.name; // name of the create entry - var graphicID = bodEntry.id; // graphical ID of item to craft - var sectionID = bodEntry.addItem; // section ID of item to craft - var materialColor = bodEntry.resources[0][1]; // colour of primary resource required to craft item - var weaponType = TriggerEvent( 2500, "GetWeaponType", null, bodEntry.id ); + const socket = pUser.socket; + const bodType = myNPC.GetTag( "bodType" ); + const bodSubtype = myNPC.GetTag( "bodSubtype" ); + const pSkill = pUser.skills[BODTypesToSkillNames[bodType]]; + const bodEntry = SelectBodEntry( bodType, bodSubtype, true, pSkill ); + const itemName = bodEntry.name; // name of the create entry + const graphicID = bodEntry.id; // graphical ID of item to craft + const materialColor = bodEntry.resources[0][1]; // colour of primary resource required to craft item // Store bodEntry as custom object property on pUser pUser.bodEntry = bodEntry; @@ -168,9 +341,9 @@ function SmallBODAcceptGump( pUser, myNPC ) var init = bodEntry.tempInit; if( init != 1 ) // Keep from resetting the amount needed. { - if( pUser.skills.blacksmithing >= 700 ) + if( pSkill >= 700 ) { - if((( pUser.skills.blacksmithing + 800 ) / 2 ) > RandomNumber( 0, 1000 )) + if((( pSkill + 800 ) / 2 ) > RandomNumber( 0, 1000 )) { reqExceptional = false; } @@ -178,7 +351,7 @@ function SmallBODAcceptGump( pUser, myNPC ) let values = [ 10, 15, 20, 20 ]; amountMax = values[Math.floor( Math.random() * values.length )]; } - else if( pUser.skills.blacksmithing >= 500 ) + else if( pSkill >= 500 ) { let values = [ 10, 15, 15, 20 ]; amountMax = values[Math.floor( Math.random() * values.length )]; @@ -191,12 +364,16 @@ function SmallBODAcceptGump( pUser, myNPC ) pUser.bodEntry.tempReqExceptional = reqExceptional; pUser.bodEntry.tempAmountMax = amountMax; + pUser.bodEntry.tempBodType = bodType; + pUser.bodEntry.tempBodSubtype = bodSubtype; pUser.bodEntry.tempInit = true; } else { amountMax = pUser.bodEntry.tempAmountMax; reqExceptional = pUser.bodEntry.tempReqExceptional; + pUser.bodEntry.tempBodType = bodType; + pUser.bodEntry.tempBodSubtype = bodSubtype; } var bodGump = new Gump; @@ -313,6 +490,7 @@ function onGumpPress( socket, pButton, gumpData ) var amountMax = bodEntry.tempAmountMax; var reqExceptional = bodEntry.tempReqExceptional; var bodType = bodEntry.tempBodType; + var bodSubtype = bodEntry.tempBodSubtype; var graphicID = bodEntry.id; var itemName = bodEntry.name; var materialColor = bodEntry.resources[0][1]; @@ -347,6 +525,7 @@ function onGumpPress( socket, pButton, gumpData ) smallBOD.SetTag( "materialColor", materialColor ); smallBOD.SetTag( "bodSectionID", bodSectionID ); smallBOD.SetTag( "bodType", bodType ); + smallBOD.SetTag( "bodSubtype", bodSubtype ); smallBOD.SetTag( "init", true ); pUser.TextMessage( GetDictionaryEntry( 17274, socket.language ), false, 0x3b2, 0, pUser.serial ); // The bulk order deed has been placed in your backpack. @@ -362,18 +541,20 @@ function onGumpPress( socket, pButton, gumpData ) // Regardless of whether player accepts or declines the BOD, apply cooldown until next time // they can get an offer for another BOD - SetBODAcceptanceCooldown( pUser ); + SetBODAcceptanceCooldown( pUser, bodType ); } -function SetBODAcceptanceCooldown( pUser ) +function SetBODAcceptanceCooldown( pUser, bodType ) { + const pSkill = pUser.skills[BODTypesToSkillNames[bodType]]; + // Set BOD cooldown timer for next time player can accept a BOD var bodTimer = 0; - if( pUser.skills.blacksmithing >= 700 ) + if( pSkill >= 700 ) { bodTimer = 21600000; // 1000 * 60 * 60 * 6 = 6 hours if over or equal to 70.0 skill } - else if( pUser.skills.blacksmithing >= 501 ) + else if( pSkill >= 501 ) { bodTimer = 7200000; // 1000 * 60 * 60 * 2 = 2 hours if over 50.1 and under 70.0 skill } @@ -382,166 +563,48 @@ function SetBODAcceptanceCooldown( pUser ) bodTimer = 3600000; // 1000 * 60 * 60 = 1 hour if under or equal to 50.0 skill } - pUser.StartTimer( bodTimer, 1, true ); + pUser.SetJSTimer( bodTimer, bodType, 3214 ); } -function SelectBodEntry( pUser, considerPlayerSkill, bodType ) +function SelectBodEntry( bodType, bodSubtype, considerPlayerSkill, pSkill ) { - var pSkill = considerPlayerSkill ? pUser.skills.blacksmithing : 0; - - // First, determine if the BOD should contain requests for weapons, or armors - // bodType is generally supplied by a tag on the NPC shopkeeper - // weaponsmith = bodyType 1, armorsmith = bodType 2, blacksmith = bodType 3 - // These are also used to determine which NPCs accept completed BODs - var rndItemType = -1; - switch( bodType ) - { - case 1: // Weapon BODs only - rnditemType = 1; - break; - case 2: // Armor BODs only - rndItemType = 2; - break; - case 3: // Either weapon or armor BODs - rndItemType = RandomNumber( 1, 2 ); - break; - // Add additional BOD types here if/when implemented - default: - break; - } + const bodItemEntries = BODTypesToCreateEntries[bodType][bodSubtype]; + const maxMaterialIndex = bodItemEntries[0].length - 1; // Assumes all entries can be made from the same resources. - if( rndItemType == 1 ) // 1 - Weapon + let materialIndex = 0; + if( canCraftColouredWeapons ) { - var materialIndex = 0; - if( canCraftColouredWeapons ) - { - materialIndex = RandomNumber( 0, 8 ); - if( considerPlayerSkill ) - { - switch( materialIndex ) - { - case 0: // Iron - break; - case 1: // Dull Copper - materialIndex = ( pUser.skills.blacksmithing >= 650 ? materialIndex : 0 ); - break; - case 2: // Shadow Iron - materialIndex = ( pUser.skills.blacksmithing >= 700 ? materialIndex : 0 ); - break; - case 3: // Copper - materialIndex = ( pUser.skills.blacksmithing >= 750 ? materialIndex : 0 ); - break; - case 4: // Bronze - materialIndex = ( pUser.skills.blacksmithing >= 800 ? materialIndex : 0 ); - break; - case 5: // Gold - materialIndex = ( pUser.skills.blacksmithing >= 850 ? materialIndex : 0 ); - break; - case 6: // Agapite - materialIndex = ( pUser.skills.blacksmithing >= 900 ? materialIndex : 0 ); - break; - case 7: // Verite - materialIndex = ( pUser.skills.blacksmithing >= 950 ? materialIndex : 0 ); - break; - case 8: // Valorite - materialIndex = ( pUser.skills.blacksmithing >= 1000 ? materialIndex : 0 ); - break; - default: - break; - } - } - } - - // Find all valid create entries for player's current skill level - var validWeapons = []; - for( var i = 0; i < weaponCreateEntries.length; i++ ) + materialIndex = RandomNumber( 0, maxMaterialIndex ); + if( considerPlayerSkill && pSkill >= ( 1000 - ( 50 * ( maxMaterialIndex - materialIndex ) ) ) ) { - var item = weaponCreateEntries[i]; - if( considerPlayerSkill && pSkill < 700 ) - { - // Only select items which player can gain skill from if skill is below 70.0 - var createEntry = CreateEntries[item[materialIndex]]; - if( createEntry.avgMinSkill <= pSkill && pSkill <= createEntry.avgMaxSkill ) - { - validWeapons.push( item[materialIndex] ); - } - } - else - { - // All weapon create entries are valid if player's skill is above or equal to 70.0 - validWeapons.push( item[materialIndex] ); - } + materialIndex = 0; } - - // Select a random create entry from array of valid entries - var rndCreateIndex = Math.floor( Math.random() * validWeapons.length ); - return CreateEntries[validWeapons[rndCreateIndex]]; } - else // 0 - Armor + + // Find all valid create entries for player's current skill level + const validItems = []; + for( let i = 0; i < bodItemEntries.length; i++ ) { - // First, select material type - var materialIndex = RandomNumber( 0, 8 ); - if( considerPlayerSkill ) + const item = bodItemEntries[i]; + if( considerPlayerSkill && pSkill < 700 ) { - switch( materialIndex ) + // Only select items which player can gain skill from if skill is below 70.0 + const createEntry = CreateEntries[item[materialIndex]]; + if( createEntry.avgMinSkill <= pSkill && pSkill <= createEntry.avgMaxSkill ) { - case 0: // Iron - break; - case 1: // Dull Copper - materialIndex = ( pUser.skills.blacksmithing >= 650 ? materialIndex : 0 ); - break; - case 2: // Shadow Iron - materialIndex = ( pUser.skills.blacksmithing >= 700 ? materialIndex : 0 ); - break; - case 3: // Copper - materialIndex = ( pUser.skills.blacksmithing >= 750 ? materialIndex : 0 ); - break; - case 4: // Bronze - materialIndex = ( pUser.skills.blacksmithing >= 800 ? materialIndex : 0 ); - break; - case 5: // Gold - materialIndex = ( pUser.skills.blacksmithing >= 850 ? materialIndex : 0 ); - break; - case 6: // Agapite - materialIndex = ( pUser.skills.blacksmithing >= 900 ? materialIndex : 0 ); - break; - case 7: // Verite - materialIndex = ( pUser.skills.blacksmithing >= 950 ? materialIndex : 0 ); - break; - case 8: // Valorite - materialIndex = ( pUser.skills.blacksmithing >= 1000 ? materialIndex : 0 ); - break; - default: - break; + validItems.push( item[materialIndex] ); } } - - // Find all valid armor create entries for player's current skill level, and of chosen material color - // If player's skill is below 70.0, make sure they get a BOD with items they can gain skill from crafting - var validArmors = []; - for( var j = 0; j < armorCreateEntries.length; j++ ) + else { - var item = armorCreateEntries[j]; - if( considerPlayerSkill && pSkill < 700 ) - { - // Only select items which player can gain skill from if skill is below 70.0 - var createEntry = CreateEntries[item[materialIndex]]; - if( createEntry.avgMinSkill <= pSkill && pSkill <= createEntry.avgMaxSkill ) - { - validArmors.push( item[materialIndex] ); - } - } - else - { - // Select from all armors - validArmors.push( item[materialIndex] ); - } + // All weapon create entries are valid if player's skill is above or equal to 70.0 + validItems.push( item[materialIndex] ); } - - // Select a random create entry from array of valid entries - var rndCreateIndex = Math.floor( Math.random() * validArmors.length ); - return CreateEntries[validArmors[rndCreateIndex]]; } + + // Select a random create entry from array of valid entries + const rndCreateIndex = Math.floor( Math.random() * validItems.length ); + return CreateEntries[validItems[rndCreateIndex]]; } function onTimer( pUser, timerID ) @@ -571,13 +634,15 @@ function onDropItemOnNpc( pDropper, npcDroppedOn, iDropped ) var amountMax = iDropped.GetTag( "amountMax" ); // amount you have to make of the item var amountCur = iDropped.GetTag( "amountCur" ); // amount you have combined var iBodType = iDropped.GetTag( "bodType" ); // BOD type of the BOD itself + var iBodSubtype = iDropped.GetTag( "bodSubtype" ); var pBodType = npcDroppedOn.GetTag( "bodType" ); // BOD type of the NPC BOD is dropped on, if any + var pBodSubtype = npcDroppedOn.GetTag( "bodSubtype" ); - if( iDropped.sectionID == "smallbod" && pBodType > 0 ) + if( iDropped.sectionID.split("_")[0] == "smallbod" && pBodType > 0 ) { // Check if NPC accepts the type of BOD being dropped on them // Weaponsmith only accepts weapon BODs, armorsmith only accepts armor BODs, blacksmith accepts either - if(( iBodType == 1 || iBodType == 2 ) && ( pBodType != iBodType && pBodType != 3 )) + if(iBodType != pBodType || iBodSubtype != pBodSubtype) { // That order is for some other shopkeeper. npcDroppedOn.TextMessage( GetDictionaryEntry( 17272, socket.language ), false, 0x3b2, 0, pDropper.serial ); // That order is for some other shopkeeper. @@ -591,7 +656,7 @@ function onDropItemOnNpc( pDropper, npcDroppedOn, iDropped ) } // Check if enough time has passed since last time player handed in a BOD - var bodRewardCD = pDropper.GetJSTimer( 2, 3214 ); // Fetch timer for BOD reward cooldown + var bodRewardCD = pDropper.GetJSTimer( iBodType * 10, 3214 ); // Fetch timer for BOD reward cooldown if( bodRewardCD != 0 ) { npcDroppedOn.TextMessage( GetDictionaryEntry( 17273, socket.language ), false, 0x3b2, 0, pDropper.serial ); // You'll have to wait a few seconds while I inspect the last order. @@ -608,11 +673,13 @@ function onDropItemOnNpc( pDropper, npcDroppedOn, iDropped ) if( DispenseBODRewards( pDropper, npcDroppedOn, iDropped )) { + // Make the player wait 5 seconds before turning in another BOD. + pDropper.SetJSTimer( iBodType * 10, 10000, 3214); // On delivery of a completed BOD, kill cooldown timer to get another BOD offer - var bodOfferCD = pDropper.GetJSTimer( 1, 3214 ); // Fetch timer for BOD offer cooldown - if( bodRewardCD != 0 ) + var bodOfferCD = pDropper.GetJSTimer( iBodType, 3214 ); // Fetch timer for BOD offer cooldown + if( bodOfferCD != 0 ) { - pDropper.KillJSTimer( 1, 3214 ); + pDropper.KillJSTimer( iBodType, 3214 ); } iDropped.Delete(); @@ -688,179 +755,27 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) // Get modifiers to min / max rewards based on properties of the BOD itself var minMaxMod = MinMaxRewardModifiers( iDropped ); var bodRewardItem = null; - if( EraStringToNum( GetServerSetting( "CoreShardEra" )) <= EraStringToNum( "lbr" )) - { - // Apply reward modifiers - minReward = 0 + minMaxMod[0]; - maxReward = 16 + minMaxMod[1]; - switch( WeightedRandom( minReward, maxReward, weightVal ) ) - { - case 0: // Sturdy Pickaxe / Sturdy Shovel (equal chance) - switch( RandomNumber( 0, 1 ) ) - { - case 0: // Sturdy Pickaxe - bodRewardItem = CreateBODReward( 0, socket, pDropper, 0 ); - break; - case 1: // Sturdy Shovel - bodRewardItem = CreateBODReward( 1, socket, pDropper, 0 ); - break; - default: - break; - } - break; - case 1: // Leather Gloves of Mining +1 - bodRewardItem = CreateBODReward( 2, socket, pDropper, 0 ); - break; - case 2: // Studded Leather Gloves of Mining +3 - bodRewardItem = CreateBODReward( 3, socket, pDropper, 0 ); - break; - case 3: // Ringmail Gloves of mining +5 - bodRewardItem = CreateBODReward( 4, socket, pDropper, 0 ); - break; - case 4: // Dull Copper Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x973 ); - break; - case 5: // Shadow Iron Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x966 ); - break; - case 6: // Colored Anvil - bodRewardItem = CreateBODReward( 6, socket, pDropper, WeightedRandom( 0, 7, weightVal )); - break; - case 7: // Copper Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x96E ); - break; - case 8: // Bronze Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x6D6 ); - break; - case 9: // +10 Ancient Smithy Hammer - bodRewardItem = CreateBODReward( 7, socket, pDropper, 100 ); - break; - case 10: // +15 Ancient Smithy Hammer - bodRewardItem = CreateBODReward( 7, socket, pDropper, 150 ); - break; - case 11: // Gold Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x8A5 ); - break; - case 12: // +30 Ancient Smithy Hammer - bodRewardItem = CreateBODReward( 7, socket, pDropper, 300 ); - break; - case 13: // Agapite Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x979 ); - break; - case 14: // +60 Ancient Smithy Hammer - bodRewardItem = CreateBODReward( 7, socket, pDropper, 600 ); - break; - case 15: // Verite Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x89F ); - break; - case 16: // Valorite Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x8AB ); - break; - default: - break; - } + const rewards = BODTypesToRewards[iDropped.getTag( "bodType" )]; + const minReward = minMaxMod[0]; + const maxReward = rewards.length + minMaxMod[1]; + + const rewardTier = rewards[WeightedRandom( minReward, maxReward, weightVal )]; + let rewardItemIndex = 0; + if (rewardTier.items.length > 1) { + rewardItemIndex = rewardTier.selectionFunction(0, rewardTier.items.length, weightVal); } - else + const rewardItem = rewardTier.items[rewardItemIndex]; + const rewardDFNItem = CreateDFNItem( socket, pDropper, rewardItemIndex, 1, "ITEM", false ); + if (rewardItem.props && rewardDFNItem) { - // Apply reward modifiers - minReward = 0 + minMaxMod[0]; - maxReward = 22 + minMaxMod[1]; - - // AoS and beyond has 4 additional item rewards (equal chance for two of them) - switch( WeightedRandom( minReward, maxReward, weightVal )) + for( let i = 0; i < rewardItem.props.length; i++ ) { - case 0: // Sturdy Pickaxe / Sturdy Shovel (equal chance) - switch( RandomNumber( 0, 1 )) - { - case 0: // Sturdy Pickaxe - bodRewardItem = CreateBODReward( 0, socket, pDropper, 0 ); - break; - case 1: // Sturdy Shovel - break; - bodRewardItem = CreateBODReward( 1, socket, pDropper, 0 ); - default: - break; - } - break; - case 1: // Leather Gloves of Mining +1 - bodRewardItem = CreateBODReward( 2, socket, pDropper, 0 ); - break; - case 2: // Gargoyle's Pickaxe / Prospector's Tool (equal chance) - switch( RandomNumber( 0, 1 )) - { - case 0: // Gargoyle's Pickaxe - bodRewardItem = CreateBODReward( 8, socket, pDropper, 0 ); - break; - case 1: // Prospector's Tool - bodRewardItem = CreateBODReward( 9, socket, pDropper, 0 ); - break; - default: - break; - } - break; - case 3: // Studded Leather Gloves of Mining +3 - bodRewardItem = CreateBODReward( 3, socket, pDropper, 0 ); - break; - case 4: // Powder of Temperament - bodRewardItem = CreateBODReward( 10, socket, pDropper, 0 ); - break; - case 5: // Ringmail Gloves of mining +5 - bodRewardItem = CreateBODReward( 4, socket, pDropper, 0 ); - break; - case 6: // Dull Copper Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x973 ); - break; - case 7: // Shadow Iron Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x966 ); - break; - case 8: // Blacksmith Scroll of Power + 5 - bodRewardItem = CreateBODReward( 11, socket, pDropper, 50 ); - break; - case 9: // Copper Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x96E ); - break; - case 10: // Colored Anvil - bodRewardItem = CreateBODReward( 6, socket, pDropper, WeightedRandom( 0, 7, weightVal )); - break; - case 11: // Blacksmith Scroll of Power + 10 - bodRewardItem = CreateBODReward( 11, socket, pDropper, 100 ); - break; - case 12: // Bronze Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x6D6 ); - break; - case 13: // +10 Ancient Smithy Hammer - bodRewardItem = CreateBODReward( 7, socket, pDropper, 100 ); - break; - case 14: // Blacksmith Scroll of Power + 15 - bodRewardItem = CreateBODReward( 11, socket, pDropper, 150 ); - break; - case 15: // +15 Ancient Smithy Hammer - bodRewardItem = CreateBODReward( 7, socket, pDropper, 150 ); - break; - case 16: // Blacksmith Scroll of Power + 20 - bodRewardItem = CreateBODReward( 11, socket, pDropper, 200 ); - break; - case 17: // Gold Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x8A5 ); - break; - case 18: // +30 Ancient Smithy Hammer - bodRewardItem = CreateBODReward( 7, socket, pDropper, 300 ); - break; - case 19: // Agapite Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x979 ); - break; - case 20: // +60 Ancient Smithy Hammer - bodRewardItem = CreateBODReward( 7, socket, pDropper, 600 ); - break; - case 21: // Verite Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x89F ); - break; - case 22: // Valorite Runic Hammer - bodRewardItem = CreateBODReward( 5, socket, pDropper, 0x8AB ); - break; - default: - break; + const propModifier = rewardItem.props[i]; + const propToModify = propModifier[0]; + const propValue = propModifier[1]; + + rewardDFNItem[propToModify] = propValue; } } @@ -875,9 +790,9 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) if( !errorFound ) { // Can player's pack hold weight of the special reward item AND the gold/check? - if( playerPack.weight + bodRewardItem.weight + goldWeight > playerPack.maxWeight ) // special item + gold + if( playerPack.weight + rewardDFNItem.weight + goldWeight > playerPack.maxWeight ) // special item + gold { - if( playerPack.weight + bodRewardItem.weight + 100 > playerPack.maxWeight ) // special item + check + if( playerPack.weight + rewardDFNItem.weight + 100 > playerPack.maxWeight ) // special item + check { socket.SysMessage( GetDictionaryEntry( 1385, socket.language )); // That pack cannot hold any more weight errorFound = true; @@ -895,11 +810,11 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) { // All good! Hand out the rewards: // SPECIAL ITEM - bodRewardItem.container = pDropper.pack; - bodRewardItem.PlaceInPack(); + rewardDFNItem.container = pDropper.pack; + rewardDFNItem.PlaceInPack(); // Log creation of gold in server logs - Console.Log( "[BOD Reward] Special item reward (" + bodRewardItem.name + " - " + bodRewardItem.serial + ") given to player (" + pDropper.name + " - " + pDropper.serial + ")." ); + Console.Log( "[BOD Reward] Special item reward (" + rewardDFNItem.name + " - " + rewardDFNItem.serial + ") given to player (" + pDropper.name + " - " + pDropper.serial + ")." ); // FAME // Ensure player's fame doesn't exceed the default cap of 10k @@ -961,9 +876,9 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) } // Cleanup potential item reward - if( ValidateObject( bodRewardItem )) + if( ValidateObject( rewardDFNItem )) { - bodRewardItem.Delete(); + rewardDFNItem.Delete(); } return false; } @@ -971,189 +886,6 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) return true; } -function CreateBODReward( rewardNum, socket, pDropper, extraInfo ) -{ - if( !ValidateObject( pDropper ) || socket == null ) - return null; - - var rewardItem = null; - switch( rewardNum ) - { - case 0: // Sturdy Pickaxe - // Allows you to mine either 150 or 200 ore before breaking. Number of uses is determined randomly at the time the reward is given. - rewardItem = CreateDFNItem( socket, pDropper, "sturdy_pickaxe", 1, "ITEM", false ); - if( ValidateObject( rewardItem )) - { - rewardItem.maxUses = RandomNumber( 0, 1 ) ? 150 : 200; - rewardItem.usesLeft = rewardItem.maxUses; - } - break; - case 1: // Sturdy Shovel - // Allows you to mine at least 180 ore with one shovel before it breaks. - rewardItem = CreateDFNItem( socket, pDropper, "sturdy_shovel", 1, "ITEM", false ); - if( ValidateObject( rewardItem )) - { - rewardItem.maxUses = WeightedRandom( 0, 1, 3, true ) ? 150 : 200; - rewardItem.usesLeft = rewardItem.maxUses; - } - break; - case 2: // Leather Gloves of Mining +1 - // Increases mining skill by 1 point. Dyeable using a leather dyetub. - rewardItem = CreateDFNItem( socket, pDropper, "mining_gloves_1", 1, "ITEM", false ); - rewardItem.SetTag( "skillBonusID", 45 ); // Mining - rewardItem.SetTag( "skillBonusVal", 10 ); // +1.0 - break; - case 3: // Studded Leather Gloves of Mining +3 - // Increases mining skill by 3 points. Dyeable using a leather dyetub. - rewardItem = CreateDFNItem( socket, pDropper, "mining_gloves_3", 1, "ITEM", false ); - rewardItem.SetTag( "skillBonusID", 45 ); // Mining - rewardItem.SetTag( "skillBonusVal", 30 ); // +3.0 - break; - case 4: // Ringmail Gloves of mining +5 - // Increases mining skill by 5 points. - rewardItem = CreateDFNItem( socket, pDropper, "mining_gloves_5", 1, "ITEM", false ); - rewardItem.SetTag( "skillBonusID", 45 ); // Mining - rewardItem.SetTag( "skillBonusVal", 50 ); // +5.0 - break; - case 5: // Runic Smithing Hammer - // Allows you to make weapons of the same color as the hammer. Comes in all different - // ore colors. Weapons have magic modifiers based on the type of hammer used/ - switch( extraInfo ) - { - case 0x973: // Dull Copper - Durable/Accurate - rewardItem = CreateDFNItem( socket, pDropper, "dull_copper_runic_hammer", 1, "ITEM", false ); - break; - case 0x966: // Shadow Iron - Durable/Ruin - rewardItem = CreateDFNItem( socket, pDropper, "shadow_iron_runic_hammer", 1, "ITEM", false ); - break; - case 0x96E: // Copper - Fortified/Ruin/Surpassingly Accurate - rewardItem = CreateDFNItem( socket, pDropper, "copper_runic_hammer", 1, "ITEM", false ); - break; - case 0x6D6: // Bronze - Fortified/Might/Surpassingly Accurate - rewardItem = CreateDFNItem( socket, pDropper, "bronze_runic_hammer", 1, "ITEM", false ); - break; - case 0x8A5: // Gold - Indestructible/Force/Emminently Accurate - rewardItem = CreateDFNItem( socket, pDropper, "gold_runic_hammer", 1, "ITEM", false ); - break; - case 0x979: // Agapite - Indestructible/Power/Emminently Accurate - rewardItem = CreateDFNItem( socket, pDropper, "agapite_runic_hammer", 1, "ITEM", false ); - break; - case 0x89F: // Verite - Indestructible/Power/Exceedingly Accurate - rewardItem = CreateDFNItem( socket, pDropper, "verite_runic_hammer", 1, "ITEM", false ); - break; - case 0x8AB: // Valorite - Indestructible/Vanquishing/Supremely Accurate - rewardItem = CreateDFNItem( socket, pDropper, "valorite_runic_hammer", 1, "ITEM", false ); - break; - default: - break; - } - break; - case 6: // Colored Anvil - // Other than looking cool, no special abilities. - switch( extraInfo ) - { - case 0: // Dull Copper Anvil Deed - rewardItem = CreateDFNItem( socket, pDropper, "dc_anvil_deed", 1, "ITEM", false ); - break; - case 1: // Shadow Iron Anvil Deed - rewardItem = CreateDFNItem( socket, pDropper, "si_anvil_deed", 1, "ITEM", false ); - break; - case 2: // Copper Anvil Deed - rewardItem = CreateDFNItem( socket, pDropper, "c_anvil_deed", 1, "ITEM", false ); - break; - case 3: // Bronze Anvil Deed - rewardItem = CreateDFNItem( socket, pDropper, "b_anvil_deed", 1, "ITEM", false ); - break; - case 4: // Gold Anvil Deed - rewardItem = CreateDFNItem( socket, pDropper, "g_anvil_deed", 1, "ITEM", false ); - break; - case 5: // Agapite Anvil Deed - rewardItem = CreateDFNItem( socket, pDropper, "a_anvil_deed", 1, "ITEM", false ); - break; - case 6: // Verite Anvil Deed - rewardItem = CreateDFNItem( socket, pDropper, "v_anvil_deed", 1, "ITEM", false ); - break; - case 7: // Valorite Anvil Deed - rewardItem = CreateDFNItem( socket, pDropper, "v_anvil_deed", 1, "ITEM", false ); - break; - default: - break; - } - break; - case 7: // Ancient Smithing Hammer - // Increase blacksmithing skill by 10, 15, 30 or 60 points when equipped - switch( extraInfo ) - { - case 100: // +10 - rewardItem = CreateDFNItem( socket, pDropper, "ancient_smithy_hammer_10", 1, "ITEM", false ); - break; - case 150: // +15 - rewardItem = CreateDFNItem( socket, pDropper, "ancient_smithy_hammer_15", 1, "ITEM", false ); - break; - case 300: // +30 - rewardItem = CreateDFNItem( socket, pDropper, "ancient_smithy_hammer_30", 1, "ITEM", false ); - break; - case 600: // +60 - rewardItem = CreateDFNItem( socket, pDropper, "ancient_smithy_hammer_60", 1, "ITEM", false ); - break; - default: - break; - } - break; - case 8: // Gargoyle's Pickaxe - // 100 uses, can summon elemental corresponding to the material being mined - rewardItem = CreateDFNItem( socket, pDropper, "gargoyles_pickaxe", 1, "ITEM", false ); - if( ValidateObject( rewardItem )) - { - rewardItem.maxUses = 100; - rewardItem.usesLeft = 100; - } - break; - case 9: // Prospector's Tool - // 50 uses, used to raise one level of a mineral vein - rewardItem = CreateDFNItem( socket, pDropper, "prospectors_tool", 1, "ITEM", false ); - if( ValidateObject( rewardItem )) - { - rewardItem.maxUses = 50; - rewardItem.usesLeft = 50; - } - break; - case 10: // Powder of Temperament - // 10 uses, increases durability of metallic armor - rewardItem = CreateDFNItem( socket, pDropper, "powder_of_temperament", 1, "ITEM", false ); - if( ValidateObject( rewardItem )) - { - rewardItem.maxUses = 10; - rewardItem.usesLeft = 10; - } - break; - case 11: // Blacksmith Scrolls of Power - // Power scroll to increase blacksmithing skill by +5, +10, +15 or +20 - switch( extraInfo ) - { - case 50: // Blacksmithing +5 - rewardItem = CreateDFNItem( socket, pDropper, "power_scroll_smith_5", 1, "ITEM", false ); - break; - case 100: // Blacksmithing +10 - rewardItem = CreateDFNItem( socket, pDropper, "power_scroll_smith_10", 1, "ITEM", false ); - break; - case 150: // Blacksmithing +15 - rewardItem = CreateDFNItem( socket, pDropper, "power_scroll_smith_15", 1, "ITEM", false ); - break; - case 200: // Blacksmithing +20 - rewardItem = CreateDFNItem( socket, pDropper, "power_scroll_smith_20", 1, "ITEM", false ); - break; - default: - break; - } - break; - default: - break; - } - - return rewardItem; -} - function MinMaxRewardModifiers( iDropped ) { var minMod = 0; From 78dd79e82715993caa23bf8709995807ec20bca8 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 02:19:12 -0700 Subject: [PATCH 18/37] Add bodType tag to deed DFNs. Fix creation of BODs via commands. Fix bugs in previous updates to vendor_bdo_dispenser. --- data/dfndata/items/deeds/misc_deeds.dfn | 2 + data/js/item/smallbod.js | 17 ++++-- data/js/npc/ai/vendor_bdo_dispenser.js | 77 ++++++++++++------------- 3 files changed, 52 insertions(+), 44 deletions(-) diff --git a/data/dfndata/items/deeds/misc_deeds.dfn b/data/dfndata/items/deeds/misc_deeds.dfn index 1031f9492..33ae7bf1e 100644 --- a/data/dfndata/items/deeds/misc_deeds.dfn +++ b/data/dfndata/items/deeds/misc_deeds.dfn @@ -48,6 +48,7 @@ weight=100 script=5042 getlbr=smallbod_lbr getaos=smallbod_aos +CUSTOMINTTAG=bodType 1 } [smallbod_tailor] @@ -59,4 +60,5 @@ weight=100 script=5042 getlbr=smallbod_lbr getaos=smallbod_aos +CUSTOMINTTAG=bodType 2 } \ No newline at end of file diff --git a/data/js/item/smallbod.js b/data/js/item/smallbod.js index 8b37f39bc..7e2c7404c 100644 --- a/data/js/item/smallbod.js +++ b/data/js/item/smallbod.js @@ -1,10 +1,16 @@ +const BODTypesToSkillNames = { + 1: 'blacksmithing', + 2: 'tailoring' +}; + // Can also be triggered by creating BOD from admin menu or add command: 'add item smallbod function onCreateDFN( objMade, objType ) { if( !ValidateObject( objMade )) return; - var bodEntry = TriggerEvent( 3214, "SelectBodEntry", null, false, 3 ); // 1 - weapon BODs, 2 - armor BODs, 3 - Either + var bodType = objMade.GetTag( "bodType" ); + var bodEntry = TriggerEvent( 3214, "SelectBodEntry", bodType, 1, false, 0 ); var itemName = bodEntry.name; // name of the create entry var graphicID = bodEntry.id; // graphical id of item to craft var sectionID = bodEntry.addItem; // section ID of item to craft @@ -17,6 +23,7 @@ function onCreateDFN( objMade, objType ) objMade.SetTag( "graphicID", graphicID ); objMade.SetTag( "sectionID", sectionID ); objMade.SetTag( "materialColor", materialColor ); + objMade.SetTag( "bodSubtype", 1 ); objMade.Refresh(); } } @@ -46,10 +53,12 @@ function onUseChecked( pUser, smallBOD ) var init = smallBOD.GetTag( "init" ) // just to make sure we dont set the bod over if( init == false ) // Keep from resetting the amount needed. { + const pSkill = pUser.skills[BODTypesToSkillNames[smallBOD.GetTag( "bodType" )]]; + var amountMax = 0; - if( pUser.skills.blacksmithing >= 701 ) + if( pSkill >= 701 ) { - if((( pUser.skills.blacksmithing + 800 ) / 2 ) > RandomNumber( 0, 1000 )) + if((( pSkill + 800 ) / 2 ) > RandomNumber( 0, 1000 )) { smallBOD.SetTag( "reqExceptional", true ); } @@ -57,7 +66,7 @@ function onUseChecked( pUser, smallBOD ) var values = [ 10, 15, 20, 20 ]; amountMax = values[Math.floor( Math.random() * values.length )]; } - else if( pUser.skills.blacksmithing >= 501 ) + else if( pSkill >= 501 ) { var values = [ 10, 15, 15, 20 ]; amountMax = values[Math.floor( Math.random() * values.length )]; diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index 5c926de65..ab548a45a 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -104,35 +104,24 @@ const clothCreateEntries = [ [160] ]; -const BODTypes = { - Blacksmithing: 1, - Tailoring: 2 -}; - -const BODSubtypes = { - [BODTypes.Blacksmithing]: { - Weapon: 1, - Armor: 2, - WeaponOrArmor: 3 - }, - [BODTypes.Tailoring]: { - Cloth: 1 - } +const BODTypeToDFNSectionID = { + 1: "smallbod_blacksmith", + 2: "smallbod_tailor" } const BODTypesToSkillNames = { - [BODTypes.Blacksmithing]: 'blacksmithing', - [BODTypes.Tailoring]: 'tailoring' + 1: 'blacksmithing', + 2: 'tailoring' }; const BODTypesToCreateEntries = { - [BODTypes.Blacksmithing]: { - [BODSubtypes[BODTypes.Blacksmithing].Weapon]: weaponCreateEntries, - [BODSubtypes[BODTypes.Blacksmithing].Armor]: armorCreateEntries, - [BODSubtypes[BODTypes.Blacksmithing].WeaponOrArmor]: weaponCreateEntries.concat(armorCreateEntries), + 1: { + 1: weaponCreateEntries, + 2: armorCreateEntries, + 3: weaponCreateEntries.concat(armorCreateEntries), }, - [BODTypes.Tailoring]: { - [BODSubtypes[BODTypes.Tailoring].Cloth]: clothCreateEntries + 2: { + 1: clothCreateEntries } }; @@ -144,7 +133,7 @@ const BlacksmithRewardTiersToItems = [ { itemName: "sturdy_pickaxe", props: [['maxUses', 150], ['usesLeft', 150]] }, { itemName: "sturdy_shovel", props: [['maxUses', 150], ['usesLeft', 150]] }, ], - selectionFunction: RandomNumber, + selectType: 'random', }, { items: [{ itemName: "mining_gloves_1" }] }, { items: [{ itemName: "mining_gloves_3" }] }, @@ -162,7 +151,7 @@ const BlacksmithRewardTiersToItems = [ { itemName: "v_anvil_deed" }, { itemName: "v_anvil_deed" } ], - selectionFunction: WeightedRandom + selectType: 'weighted' }, { items: [{ itemName: "copper_runic_hammer" }] }, { items: [{ itemName: "bronze_runic_hammer" }] }, @@ -185,7 +174,7 @@ const TailorRewardTiersToItems = [ { itemName: 'cloth', props: [['colour', 123]] }, { itemName: 'cloth', props: [['colour', 123]] } ], - selectionFunction: RandomNumber + selectType: 'random' }, { items: [ @@ -194,7 +183,7 @@ const TailorRewardTiersToItems = [ { itemName: 'cloth', props: [['colour', 123]] }, { itemName: 'cloth', props: [['colour', 123]] } ], - selectionFunction: RandomNumber + selectType: 'random' }, { items: [ @@ -203,7 +192,7 @@ const TailorRewardTiersToItems = [ { itemName: 'cloth', props: [['colour', 123]] }, { itemName: 'cloth', props: [['colour', 123]] } ], - selectionFunction: RandomNumber + selectType: 'random' }, { items: [ @@ -221,7 +210,7 @@ const TailorRewardTiersToItems = [ { itemName: 'sandals', props: [['colour', 123]] } ], - selectionFunction: RandomNumber + selectType: 'random' }, { items: [ @@ -230,7 +219,7 @@ const TailorRewardTiersToItems = [ { itemName: 'cloth', props: [['colour', 123]] }, { itemName: 'cloth', props: [['colour', 123]] } ], - selectionFunction: RandomNumber + selectType: 'random' }, { items: [{ itemName: "spined_runic_sewing_kit" }] }, { items: [{ itemName: "clothing_bless_deed" }] }, @@ -240,14 +229,14 @@ const TailorRewardTiersToItems = [ ]; const BODTypesToRewards = { - [BODTypes.Blacksmithing]: BlacksmithRewardTiersToItems, - [BODTypes.Tailoring]: TailorRewardTiersToItems + 1: BlacksmithRewardTiersToItems, + 2: TailorRewardTiersToItems }; function onSoldToVendor( pSock, npcVendor, iSold ) { var pUser = pSock.currentChar; - if( offerBodsFromItemSales && CheckBodTimers( pUser, npcVendor.getTag( 'bodType' ) )) + if( offerBodsFromItemSales && CheckBodTimers( pUser, npcVendor.GetTag( 'bodType' ) )) { if( !onlyOfferBodsFromCraftedItems || iSold.madeWith != -1 ) // what is madeWith property for non-crafted items? { @@ -303,7 +292,7 @@ function onSpeech( myString, pUser, myNPC ) { case 0x5000: // Bulk Order Info - TW_BODINFO, custom UOX3 triggerword triggered via context menu { - if( CheckBodTimers( pUser, myNPC.getTag( "bodType" ) )) + if( CheckBodTimers( pUser, myNPC.GetTag( "bodType" ) )) { if( EraStringToNum( GetServerSetting( "CoreShardEra" )) <= EraStringToNum( "lbr" )) { @@ -514,7 +503,7 @@ function onGumpPress( socket, pButton, gumpData ) } else { - var smallBOD = CreateDFNItem( pUser.socket, pUser, "smallbod", 1, "ITEM", true ); + var smallBOD = CreateDFNItem( pUser.socket, pUser, BODTypeToDFNSectionID[bodType], 1, "ITEM", true ); if( ValidateObject( smallBOD )) { // Store the BOD properties as permanent tags on the BOD deed @@ -524,7 +513,6 @@ function onGumpPress( socket, pButton, gumpData ) smallBOD.SetTag( "reqExceptional", reqExceptional ); smallBOD.SetTag( "materialColor", materialColor ); smallBOD.SetTag( "bodSectionID", bodSectionID ); - smallBOD.SetTag( "bodType", bodType ); smallBOD.SetTag( "bodSubtype", bodSubtype ); smallBOD.SetTag( "init", true ); @@ -754,19 +742,28 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) // Get modifiers to min / max rewards based on properties of the BOD itself var minMaxMod = MinMaxRewardModifiers( iDropped ); - var bodRewardItem = null; - const rewards = BODTypesToRewards[iDropped.getTag( "bodType" )]; + const rewards = BODTypesToRewards[iDropped.GetTag( "bodType" )]; const minReward = minMaxMod[0]; const maxReward = rewards.length + minMaxMod[1]; const rewardTier = rewards[WeightedRandom( minReward, maxReward, weightVal )]; let rewardItemIndex = 0; if (rewardTier.items.length > 1) { - rewardItemIndex = rewardTier.selectionFunction(0, rewardTier.items.length, weightVal); + let rewardItemIndex; + switch ( rewardTier.selectType ) { + case 'random': + rewardItemIndex = RandomNumber(0, rewardTier.items.length); + break; + case 'weighted': + rewardItemIndex = WeightedRandom(0, rewardTier.items.length, weightVal); + break; + default: + break; + } } const rewardItem = rewardTier.items[rewardItemIndex]; - const rewardDFNItem = CreateDFNItem( socket, pDropper, rewardItemIndex, 1, "ITEM", false ); + const rewardDFNItem = CreateDFNItem( socket, pDropper, rewardItem.itemName, 1, "ITEM", false ); if (rewardItem.props && rewardDFNItem) { for( let i = 0; i < rewardItem.props.length; i++ ) @@ -780,7 +777,7 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) } var errorFound = false; - if( !ValidateObject( bodRewardItem )) + if( !ValidateObject( rewardDFNItem )) { socket.SysMessage( "An error occurred while attempting to dispense rewards for BOD. Please contact a GM/Admin for assistance!" ); Console.Error( "Error occured when attempting to create BOD item reward for player with serial " + pDropper.serial + "!" ); From 3d56a33819ebc71b75dbf684a98514b6b3fea081 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 02:29:56 -0700 Subject: [PATCH 19/37] Add amount prop to cloth rewards. --- data/js/npc/ai/vendor_bdo_dispenser.js | 40 +++++++++++++------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index ab548a45a..ffe680c7f 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -169,37 +169,37 @@ const TailorRewardTiersToItems = [ { items: [ { itemName: "sewing_kit", props: [['maxUses', 250], ['usesLeft', 250]] }, - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] } + { itemName: 'cloth', props: [['amount', 100], ['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] } ], selectType: 'random' }, { items: [ - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] } + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] } ], selectType: 'random' }, { items: [ - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] } + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] } ], selectType: 'random' }, { items: [ - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, { itemName: 'sandals', props: [['colour', 123]] }, { itemName: 'sandals', props: [['colour', 123]] }, { itemName: 'sandals', props: [['colour', 123]] }, @@ -214,10 +214,10 @@ const TailorRewardTiersToItems = [ }, { items: [ - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] }, - { itemName: 'cloth', props: [['colour', 123]] } + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: 'cloth', props: [['amount', 100],['colour', 123]] } ], selectType: 'random' }, From 5e9acea232f158e245db42b1bb1e7ea07036aefe Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 03:13:14 -0700 Subject: [PATCH 20/37] Add BOD related properties to tailor DFNs. Add named DFNs for tailor BOD reward items. Make BOD min/max reward modifiers percentage based. --- data/dfndata/items/gear/clothing/footwear.dfn | 4 + .../items/skills/resources/tailoring.dfn | 4 + data/dfndata/items/skills/tools/tailoring.dfn | 4 + data/dfndata/npc/femalevendors.dfn | 3 + data/dfndata/npc/malevendors.dfn | 3 + data/js/npc/ai/vendor_bdo_dispenser.js | 150 +++++++++--------- 6 files changed, 89 insertions(+), 79 deletions(-) diff --git a/data/dfndata/items/gear/clothing/footwear.dfn b/data/dfndata/items/gear/clothing/footwear.dfn index c25a30130..64bf468d2 100644 --- a/data/dfndata/items/gear/clothing/footwear.dfn +++ b/data/dfndata/items/gear/clothing/footwear.dfn @@ -52,6 +52,10 @@ decay=1 good=19 sectionid=0x170d } +[sandals] +{ +get=0x170d +} // Sandals [0x170e] diff --git a/data/dfndata/items/skills/resources/tailoring.dfn b/data/dfndata/items/skills/resources/tailoring.dfn index a090cf478..94af23d58 100644 --- a/data/dfndata/items/skills/resources/tailoring.dfn +++ b/data/dfndata/items/skills/resources/tailoring.dfn @@ -365,6 +365,10 @@ dyeable=1 decay=1 good=49 } +[folded_cloth] +{ +get=0x1763 +} [0x1764] { diff --git a/data/dfndata/items/skills/tools/tailoring.dfn b/data/dfndata/items/skills/tools/tailoring.dfn index 42de0e871..630b122b9 100644 --- a/data/dfndata/items/skills/tools/tailoring.dfn +++ b/data/dfndata/items/skills/tools/tailoring.dfn @@ -12,6 +12,10 @@ maxuses=75 usesleft=25 script=2200// uses left tooltip } +[sewing_kit] +{ +get=0x0f9d +} [0x0f9e] { diff --git a/data/dfndata/npc/femalevendors.dfn b/data/dfndata/npc/femalevendors.dfn index 57de8a31d..1f2aefbf2 100644 --- a/data/dfndata/npc/femalevendors.dfn +++ b/data/dfndata/npc/femalevendors.dfn @@ -232,6 +232,9 @@ EQUIPITEM=listobject54 COLORLIST=11 TAILORING=640 1000 SHOPLIST=TailorShopping +SCRIPT=3214 +CUSTOMINTTAG=bodType 2 +CUSTOMINTTAG=bodSubtype 1 } [f_bowyer] diff --git a/data/dfndata/npc/malevendors.dfn b/data/dfndata/npc/malevendors.dfn index 9d4d2a6a5..e72080c78 100644 --- a/data/dfndata/npc/malevendors.dfn +++ b/data/dfndata/npc/malevendors.dfn @@ -269,6 +269,9 @@ EQUIPITEM=listobject46 COLORLIST=11 TAILORING=640 1000 SHOPLIST=TailorShopping +SCRIPT=3214 +CUSTOMINTTAG=bodType 2 +CUSTOMINTTAG=bodSubtype 1 } [m_bowyer] diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index ffe680c7f..343987fa5 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -169,37 +169,37 @@ const TailorRewardTiersToItems = [ { items: [ { itemName: "sewing_kit", props: [['maxUses', 250], ['usesLeft', 250]] }, - { itemName: 'cloth', props: [['amount', 100], ['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] } + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] } ], selectType: 'random' }, { items: [ - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] } + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] } ], selectType: 'random' }, { items: [ - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] } + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] } ], selectType: 'random' }, { items: [ - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, { itemName: 'sandals', props: [['colour', 123]] }, { itemName: 'sandals', props: [['colour', 123]] }, { itemName: 'sandals', props: [['colour', 123]] }, @@ -214,18 +214,17 @@ const TailorRewardTiersToItems = [ }, { items: [ - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] }, - { itemName: 'cloth', props: [['amount', 100],['colour', 123]] } + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, + { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] } ], selectType: 'random' }, - { items: [{ itemName: "spined_runic_sewing_kit" }] }, - { items: [{ itemName: "clothing_bless_deed" }] }, - { items: [{ itemName: "horned_runic_sewing_kit" }] }, - { items: [{ itemName: "barbed_runic_sewing_kit" }] }, - + // { items: [{ itemName: "spined_runic_sewing_kit" }] }, + // { items: [{ itemName: "clothing_bless_deed" }] }, + // { items: [{ itemName: "horned_runic_sewing_kit" }] }, + // { items: [{ itemName: "barbed_runic_sewing_kit" }] } ]; const BODTypesToRewards = { @@ -740,12 +739,13 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) var avgBodItemQuality = Math.round( iDropped.GetTag( "qualityValue" ) / iDropped.GetTag( "amountCur" )); var weightVal = ( 4 - (( avgBodItemQuality / 10 ) * 3.0 )); + const rewards = BODTypesToRewards[iDropped.GetTag( "bodType" )]; + // Get modifiers to min / max rewards based on properties of the BOD itself - var minMaxMod = MinMaxRewardModifiers( iDropped ); + var minMaxMod = MinMaxRewardModifiers( iDropped, iDropped.GetTag( "bodType" ), rewards.length); - const rewards = BODTypesToRewards[iDropped.GetTag( "bodType" )]; const minReward = minMaxMod[0]; - const maxReward = rewards.length + minMaxMod[1]; + const maxReward = rewards.length - 1 + minMaxMod[1]; const rewardTier = rewards[WeightedRandom( minReward, maxReward, weightVal )]; let rewardItemIndex = 0; @@ -753,10 +753,10 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) let rewardItemIndex; switch ( rewardTier.selectType ) { case 'random': - rewardItemIndex = RandomNumber(0, rewardTier.items.length); + rewardItemIndex = RandomNumber(0, rewardTier.items.length - 1); break; case 'weighted': - rewardItemIndex = WeightedRandom(0, rewardTier.items.length, weightVal); + rewardItemIndex = WeightedRandom(0, rewardTier.items.length - 1, weightVal); break; default: break; @@ -883,32 +883,22 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) return true; } -function MinMaxRewardModifiers( iDropped ) +function MinMaxRewardModifiers( iDropped, bodType, numTiers ) { - var minMod = 0; - var maxMod = 0; - - // Apply bonus to min if it's large BOD, penalty to max if small BOD - if( iDropped.GetTag( "largeBOD" )) - { - minMod += 2; - } - else - { - maxMod -= 2; - } + let minModPercent = 0; + let maxModPercent = 0; // Apply bonus to min or penalty to max reward based on amount of items in BOD var amountMax = iDropped.GetTag( "amountMax" ); switch( amountMax ) { case 10: - maxMod -= 2; + maxModPercent -= 0.125; break; case 15: // No change break; case 20: - minMod++; + minModPercent += 0.0625; break; } @@ -916,47 +906,49 @@ function MinMaxRewardModifiers( iDropped ) var reqExceptional = iDropped.GetTag( "reqExceptional" ); if( reqExceptional ) { - minMod++; + minModPercent += 0.0625; } else { - maxMod -= 2; + maxModPercent -= 0.125; } // Apply bonus/penalty if special material required by BOD (replace with bonus/penalty based on specific color rarities?) - var materialColor = iDropped.GetTag( "materialColor" ); - switch( materialColor ) + if( bodType == 1 ) { - case 0: // Iron - maxMod -= 4; - break; - case 0x973: // Dull Copper - maxMod -= 3; - break; - case 0x966: // Shadow Iron - maxMod -= 2; - break; - case 0x96E: // Copper - maxMod -= 1; - break; - case 0x6D6: // Bronze - // No change - break; - case 0x8A5: // Gold - minMod += 1; - break; - case 0x979: // Agapite - minMod += 2; - break; - case 0x89F: // Verite - minMod += 3; - break; - case 0x8AB: // Valorite - minMod += 4; - break; - default: // Iron - break; + var materialColor = iDropped.GetTag("materialColor"); + switch (materialColor) { + case 0: // Iron + maxModPercent -= 0.25; + break; + case 0x973: // Dull Copper + maxModPercent -= 0.1875; + break; + case 0x966: // Shadow Iron + maxModPercent -= 0.125; + break; + case 0x96E: // Copper + maxModPercent -= 0.0625; + break; + case 0x6D6: // Bronze + // No change + break; + case 0x8A5: // Gold + minModPercent += 0.0625; + break; + case 0x979: // Agapite + minModPercent += 0.125; + break; + case 0x89F: // Verite + minModPercent += 0.1875; + break; + case 0x8AB: // Valorite + minModPercent += 0.25; + break; + default: + break; + } } - return [minMod, maxMod]; + return [Math.floor(minModPercent * numTiers), Math.floor(maxModPercent * numTiers)]; } From 96fba4a4a177b28103248c7c277ebe8bbcdcbb0d Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 03:27:59 -0700 Subject: [PATCH 21/37] Add colors for cloth and sandal BOD rewards. --- data/js/npc/ai/vendor_bdo_dispenser.js | 57 +++++++++++++------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index 343987fa5..0e573910f 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -169,55 +169,55 @@ const TailorRewardTiersToItems = [ { items: [ { itemName: "sewing_kit", props: [['maxUses', 250], ['usesLeft', 250]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] } + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x483]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48C]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x488]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48A]] } ], selectType: 'random' }, { items: [ - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] } + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x495]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48B]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x486]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x485]] } ], selectType: 'random' }, { items: [ - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] } + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48D]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x490]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48E]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x491]] } ], selectType: 'random' }, { items: [ - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: 'sandals', props: [['colour', 123]] }, - { itemName: 'sandals', props: [['colour', 123]] }, - { itemName: 'sandals', props: [['colour', 123]] }, - { itemName: 'sandals', props: [['colour', 123]] }, - { itemName: 'sandals', props: [['colour', 123]] }, - { itemName: 'sandals', props: [['colour', 123]] }, - { itemName: 'sandals', props: [['colour', 123]] }, - { itemName: 'sandals', props: [['colour', 123]] } + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48F]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x494]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x484]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x497]] }, + { itemName: 'sandals', props: [['colour', 0x489]] }, + { itemName: 'sandals', props: [['colour', 0x47F]] }, + { itemName: 'sandals', props: [['colour', 0x482]] }, + { itemName: 'sandals', props: [['colour', 0x47E]] }, + { itemName: 'sandals', props: [['colour', 0x48F]] }, + { itemName: 'sandals', props: [['colour', 0x494]] }, + { itemName: 'sandals', props: [['colour', 0x484]] }, + { itemName: 'sandals', props: [['colour', 0x497]] } ], selectType: 'random' }, { items: [ - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] }, - { itemName: "folded_cloth", props: [['amount', 100],['colour', 123]] } + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x489]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x47F]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x482]] }, + { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x47E]] } ], selectType: 'random' }, @@ -750,7 +750,6 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) const rewardTier = rewards[WeightedRandom( minReward, maxReward, weightVal )]; let rewardItemIndex = 0; if (rewardTier.items.length > 1) { - let rewardItemIndex; switch ( rewardTier.selectType ) { case 'random': rewardItemIndex = RandomNumber(0, rewardTier.items.length - 1); From 4f8085aac9a7324252fc66a9a9fa856a7b3cdb71 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 03:41:41 -0700 Subject: [PATCH 22/37] Fix bug that prevents BODs from requiring exceptional items. --- data/js/npc/ai/vendor_bdo_dispenser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index 0e573910f..029f15c58 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -333,7 +333,7 @@ function SmallBODAcceptGump( pUser, myNPC ) { if((( pSkill + 800 ) / 2 ) > RandomNumber( 0, 1000 )) { - reqExceptional = false; + reqExceptional = true; } let values = [ 10, 15, 20, 20 ]; From 4c392b64f327fcd2110035aac6edff24e4222960 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 03:41:56 -0700 Subject: [PATCH 23/37] Reorder params of SetJSTimer. --- data/js/npc/ai/vendor_bdo_dispenser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index 029f15c58..78cdc89a7 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -550,7 +550,7 @@ function SetBODAcceptanceCooldown( pUser, bodType ) bodTimer = 3600000; // 1000 * 60 * 60 = 1 hour if under or equal to 50.0 skill } - pUser.SetJSTimer( bodTimer, bodType, 3214 ); + pUser.SetJSTimer( bodType, bodTimer, 3214 ); } function SelectBodEntry( bodType, bodSubtype, considerPlayerSkill, pSkill ) From bb63d09c8c802099266a26ef97634e72d9dd4ca0 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 10:01:54 -0700 Subject: [PATCH 24/37] Updates to comments and formatting. --- data/js/npc/ai/vendor_bdo_dispenser.js | 146 ++++++++++++------------- 1 file changed, 68 insertions(+), 78 deletions(-) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index 78cdc89a7..c42224204 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -72,38 +72,51 @@ const armorCreateEntries = [ ]; const clothCreateEntries = [ - [130], - [131], - [132], - [133], - [134], - [135], - [136], - [137], - [138], - [139], - [140], - [141], - [142], - [143], - [144], - [145], - [146], - [147], - [148], - [149], - [150], - [151], - [152], - [153], - [154], - [155], - [156], - [157], - [158], - [160] + [130], // Skullcap + [131], // Bandana + [132], // Floppy Hat + [133], // Wide Brim Hat + [134], // Cap + [135], // Tall Straw Hat + [136], // Straw Hat + [137], // Wizard's Hat + [138], // Bonnet + [139], // Feathered Hat + [140], // Tricorne Hat + [141], // Jester Hat + [142], // Doublet + [143], // Shirt + [144], // Fancy Shirt + [145], // Tunic + [146], // Surcoat + [147], // Plain Dress + [148], // Fancy Dress + [149], // Cloak + [150], // Robe + [151], // Jester Suit + [152], // Long Pants + [153], // Kilt + [154], // Skirt + [155], // Body Sash + [156], // Half Apron + [157], // Full Apron + [158], // Oil Cloth + [160] // Shoes ]; +// Outer properties correspond to bodType tag. +// Inner properties correspond to bodSubtype tag. +const BODTypesToCreateEntries = { + 1: { // Blacksmithing + 1: weaponCreateEntries, + 2: armorCreateEntries, + 3: weaponCreateEntries.concat(armorCreateEntries), + }, + 2: { // Tailoring + 1: clothCreateEntries + } +}; + const BODTypeToDFNSectionID = { 1: "smallbod_blacksmith", 2: "smallbod_tailor" @@ -114,17 +127,12 @@ const BODTypesToSkillNames = { 2: 'tailoring' }; -const BODTypesToCreateEntries = { - 1: { - 1: weaponCreateEntries, - 2: armorCreateEntries, - 3: weaponCreateEntries.concat(armorCreateEntries), - }, - 2: { - 1: clothCreateEntries - } -}; - +// A higher index in this list means the reward is less likely to be given. +// Each tier may have an `items` property listing the items that may be given when it is rolled +// and a `selectType` property that may either be "random" or "weighted" determining how an +// item is chosen, if there is more than one. Objects in the `items` list MUST have an +// `itemName` property and may optionally have a `props` property specifying modifications +// to be made to the item's props. const BlacksmithRewardTiersToItems = [ { items: [ @@ -165,6 +173,7 @@ const BlacksmithRewardTiersToItems = [ { items: [{ itemName: "valorite_runic_hammer" }] } ]; +// See comment above BlacksmithRewardTiersToItems for explanation of object properties. const TailorRewardTiersToItems = [ { items: [ @@ -310,14 +319,14 @@ function onSpeech( myString, pUser, myNPC ) function SmallBODAcceptGump( pUser, myNPC ) { - const socket = pUser.socket; - const bodType = myNPC.GetTag( "bodType" ); - const bodSubtype = myNPC.GetTag( "bodSubtype" ); - const pSkill = pUser.skills[BODTypesToSkillNames[bodType]]; - const bodEntry = SelectBodEntry( bodType, bodSubtype, true, pSkill ); - const itemName = bodEntry.name; // name of the create entry - const graphicID = bodEntry.id; // graphical ID of item to craft - const materialColor = bodEntry.resources[0][1]; // colour of primary resource required to craft item + var socket = pUser.socket; + var bodType = myNPC.GetTag( "bodType" ); + const bodSubtype = myNPC.GetTag( "bodSubtype" ); + const pSkill = pUser.skills[BODTypesToSkillNames[bodType]]; // The player's level of the BOD's relevant skill. + var bodEntry = SelectBodEntry( bodType, bodSubtype, true, pSkill ); + var itemName = bodEntry.name; // name of the create entry + var graphicID = bodEntry.id; // graphical ID of item to craft + var materialColor = bodEntry.resources[0][1]; // colour of primary resource required to craft item // Store bodEntry as custom object property on pUser pUser.bodEntry = bodEntry; @@ -478,7 +487,7 @@ function onGumpPress( socket, pButton, gumpData ) var amountMax = bodEntry.tempAmountMax; var reqExceptional = bodEntry.tempReqExceptional; var bodType = bodEntry.tempBodType; - var bodSubtype = bodEntry.tempBodSubtype; + const bodSubtype = bodEntry.tempBodSubtype; var graphicID = bodEntry.id; var itemName = bodEntry.name; var materialColor = bodEntry.resources[0][1]; @@ -584,7 +593,7 @@ function SelectBodEntry( bodType, bodSubtype, considerPlayerSkill, pSkill ) } else { - // All weapon create entries are valid if player's skill is above or equal to 70.0 + // All create entries are valid if player's skill is above or equal to 70.0 validItems.push( item[materialIndex] ); } } @@ -594,41 +603,22 @@ function SelectBodEntry( bodType, bodSubtype, considerPlayerSkill, pSkill ) return CreateEntries[validItems[rndCreateIndex]]; } -function onTimer( pUser, timerID ) -{ - // When Timer Expires set these flags on player false so he can get another BOD - switch ( timerID ) - { - case 1: // BOD cooldown timer elapsed - { - //pUser.SetTag( "bodOfferCD", null ); - break; - } - case 2: // BOD Hand-in Cooldown timer elapsed - { - //pUser.SetTag( "bodHandinCooldown", null ); - break; - } - } -} - function onDropItemOnNpc( pDropper, npcDroppedOn, iDropped ) { var socket = pDropper.socket; if( socket == null ) return false; - var amountMax = iDropped.GetTag( "amountMax" ); // amount you have to make of the item - var amountCur = iDropped.GetTag( "amountCur" ); // amount you have combined - var iBodType = iDropped.GetTag( "bodType" ); // BOD type of the BOD itself - var iBodSubtype = iDropped.GetTag( "bodSubtype" ); - var pBodType = npcDroppedOn.GetTag( "bodType" ); // BOD type of the NPC BOD is dropped on, if any - var pBodSubtype = npcDroppedOn.GetTag( "bodSubtype" ); + var amountMax = iDropped.GetTag( "amountMax" ); // amount you have to make of the item + var amountCur = iDropped.GetTag( "amountCur" ); // amount you have combined + var iBodType = iDropped.GetTag( "bodType" ); // BOD type of the BOD itself + const iBodSubtype = iDropped.GetTag( "bodSubtype" ); // BOD subtype of the BOD itself + var pBodType = npcDroppedOn.GetTag( "bodType" ); // BOD type of the NPC BOD is dropped on, if any + const pBodSubtype = npcDroppedOn.GetTag( "bodSubtype" ); // BOD subtype of the NPC BOD is dropped on, if any if( iDropped.sectionID.split("_")[0] == "smallbod" && pBodType > 0 ) { - // Check if NPC accepts the type of BOD being dropped on them - // Weaponsmith only accepts weapon BODs, armorsmith only accepts armor BODs, blacksmith accepts either + // Check if NPC accepts the type and subtype of BOD being dropped on them if(iBodType != pBodType || iBodSubtype != pBodSubtype) { // That order is for some other shopkeeper. @@ -660,7 +650,7 @@ function onDropItemOnNpc( pDropper, npcDroppedOn, iDropped ) if( DispenseBODRewards( pDropper, npcDroppedOn, iDropped )) { - // Make the player wait 5 seconds before turning in another BOD. + // Make the player wait 10 seconds before turning in another BOD. pDropper.SetJSTimer( iBodType * 10, 10000, 3214); // On delivery of a completed BOD, kill cooldown timer to get another BOD offer var bodOfferCD = pDropper.GetJSTimer( iBodType, 3214 ); // Fetch timer for BOD offer cooldown From cd68f4bf33b10f601a4d05be95b83a49037ccc63 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 10:04:09 -0700 Subject: [PATCH 25/37] Change all single quote strings to double quotes. --- data/js/item/smallbod.js | 4 +- data/js/npc/ai/vendor_bdo_dispenser.js | 90 +++++++++++++------------- 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/data/js/item/smallbod.js b/data/js/item/smallbod.js index 7e2c7404c..fcac516d9 100644 --- a/data/js/item/smallbod.js +++ b/data/js/item/smallbod.js @@ -1,6 +1,6 @@ const BODTypesToSkillNames = { - 1: 'blacksmithing', - 2: 'tailoring' + 1: "blacksmithing", + 2: "tailoring" }; // Can also be triggered by creating BOD from admin menu or add command: 'add item smallbod diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index c42224204..7d524705b 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -123,8 +123,8 @@ const BODTypeToDFNSectionID = { } const BODTypesToSkillNames = { - 1: 'blacksmithing', - 2: 'tailoring' + 1: "blacksmithing", + 2: "tailoring" }; // A higher index in this list means the reward is less likely to be given. @@ -136,12 +136,12 @@ const BODTypesToSkillNames = { const BlacksmithRewardTiersToItems = [ { items: [ - { itemName: "sturdy_pickaxe", props: [['maxUses', 200], ['usesLeft', 200]] }, - { itemName: "sturdy_shovel", props: [['maxUses', 200], ['usesLeft', 200]] }, - { itemName: "sturdy_pickaxe", props: [['maxUses', 150], ['usesLeft', 150]] }, - { itemName: "sturdy_shovel", props: [['maxUses', 150], ['usesLeft', 150]] }, + { itemName: "sturdy_pickaxe", props: [["maxUses", 200], ["usesLeft", 200]] }, + { itemName: "sturdy_shovel", props: [["maxUses", 200], ["usesLeft", 200]] }, + { itemName: "sturdy_pickaxe", props: [["maxUses", 150], ["usesLeft", 150]] }, + { itemName: "sturdy_shovel", props: [["maxUses", 150], ["usesLeft", 150]] }, ], - selectType: 'random', + selectType: "random", }, { items: [{ itemName: "mining_gloves_1" }] }, { items: [{ itemName: "mining_gloves_3" }] }, @@ -159,7 +159,7 @@ const BlacksmithRewardTiersToItems = [ { itemName: "v_anvil_deed" }, { itemName: "v_anvil_deed" } ], - selectType: 'weighted' + selectType: "weighted" }, { items: [{ itemName: "copper_runic_hammer" }] }, { items: [{ itemName: "bronze_runic_hammer" }] }, @@ -177,58 +177,58 @@ const BlacksmithRewardTiersToItems = [ const TailorRewardTiersToItems = [ { items: [ - { itemName: "sewing_kit", props: [['maxUses', 250], ['usesLeft', 250]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x483]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48C]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x488]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48A]] } + { itemName: "sewing_kit", props: [["maxUses", 250], ["usesLeft", 250]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x483]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x48C]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x488]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x48A]] } ], - selectType: 'random' + selectType: "random" }, { items: [ - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x495]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48B]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x486]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x485]] } + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x495]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x48B]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x486]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x485]] } ], - selectType: 'random' + selectType: "random" }, { items: [ - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48D]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x490]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48E]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x491]] } + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x48D]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x490]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x48E]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x491]] } ], - selectType: 'random' + selectType: "random" }, { items: [ - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x48F]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x494]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x484]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x497]] }, - { itemName: 'sandals', props: [['colour', 0x489]] }, - { itemName: 'sandals', props: [['colour', 0x47F]] }, - { itemName: 'sandals', props: [['colour', 0x482]] }, - { itemName: 'sandals', props: [['colour', 0x47E]] }, - { itemName: 'sandals', props: [['colour', 0x48F]] }, - { itemName: 'sandals', props: [['colour', 0x494]] }, - { itemName: 'sandals', props: [['colour', 0x484]] }, - { itemName: 'sandals', props: [['colour', 0x497]] } + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x48F]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x494]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x484]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x497]] }, + { itemName: "sandals", props: [["colour", 0x489]] }, + { itemName: "sandals", props: [["colour", 0x47F]] }, + { itemName: "sandals", props: [["colour", 0x482]] }, + { itemName: "sandals", props: [["colour", 0x47E]] }, + { itemName: "sandals", props: [["colour", 0x48F]] }, + { itemName: "sandals", props: [["colour", 0x494]] }, + { itemName: "sandals", props: [["colour", 0x484]] }, + { itemName: "sandals", props: [["colour", 0x497]] } ], - selectType: 'random' + selectType: "random" }, { items: [ - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x489]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x47F]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x482]] }, - { itemName: "folded_cloth", props: [['amount', 100], ['colour', 0x47E]] } + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x489]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x47F]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x482]] }, + { itemName: "folded_cloth", props: [["amount", 100], ["colour", 0x47E]] } ], - selectType: 'random' + selectType: "random" }, // { items: [{ itemName: "spined_runic_sewing_kit" }] }, // { items: [{ itemName: "clothing_bless_deed" }] }, @@ -244,7 +244,7 @@ const BODTypesToRewards = { function onSoldToVendor( pSock, npcVendor, iSold ) { var pUser = pSock.currentChar; - if( offerBodsFromItemSales && CheckBodTimers( pUser, npcVendor.GetTag( 'bodType' ) )) + if( offerBodsFromItemSales && CheckBodTimers( pUser, npcVendor.GetTag( "bodType" ) )) { if( !onlyOfferBodsFromCraftedItems || iSold.madeWith != -1 ) // what is madeWith property for non-crafted items? { @@ -741,10 +741,10 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) let rewardItemIndex = 0; if (rewardTier.items.length > 1) { switch ( rewardTier.selectType ) { - case 'random': + case "random": rewardItemIndex = RandomNumber(0, rewardTier.items.length - 1); break; - case 'weighted': + case "weighted": rewardItemIndex = WeightedRandom(0, rewardTier.items.length - 1, weightVal); break; default: From ce6e5f4241abb8e635c0d97155887afa0b35e9c4 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 10:08:06 -0700 Subject: [PATCH 26/37] Allow any NPC that vendors a BOD type to accept that BOD type. --- data/js/npc/ai/vendor_bdo_dispenser.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index 7d524705b..148a69cdf 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -612,14 +612,12 @@ function onDropItemOnNpc( pDropper, npcDroppedOn, iDropped ) var amountMax = iDropped.GetTag( "amountMax" ); // amount you have to make of the item var amountCur = iDropped.GetTag( "amountCur" ); // amount you have combined var iBodType = iDropped.GetTag( "bodType" ); // BOD type of the BOD itself - const iBodSubtype = iDropped.GetTag( "bodSubtype" ); // BOD subtype of the BOD itself var pBodType = npcDroppedOn.GetTag( "bodType" ); // BOD type of the NPC BOD is dropped on, if any - const pBodSubtype = npcDroppedOn.GetTag( "bodSubtype" ); // BOD subtype of the NPC BOD is dropped on, if any if( iDropped.sectionID.split("_")[0] == "smallbod" && pBodType > 0 ) { - // Check if NPC accepts the type and subtype of BOD being dropped on them - if(iBodType != pBodType || iBodSubtype != pBodSubtype) + // Check if NPC accepts the type of BOD being dropped on them + if( iBodType != pBodType ) { // That order is for some other shopkeeper. npcDroppedOn.TextMessage( GetDictionaryEntry( 17272, socket.language ), false, 0x3b2, 0, pDropper.serial ); // That order is for some other shopkeeper. From f44d680792769d2bb820b9c22f345f83a1eb5128 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 10:12:33 -0700 Subject: [PATCH 27/37] Formatting fixes. --- data/js/npc/ai/vendor_bdo_dispenser.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index 148a69cdf..cdc335246 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -244,7 +244,7 @@ const BODTypesToRewards = { function onSoldToVendor( pSock, npcVendor, iSold ) { var pUser = pSock.currentChar; - if( offerBodsFromItemSales && CheckBodTimers( pUser, npcVendor.GetTag( "bodType" ) )) + if( offerBodsFromItemSales && CheckBodTimers( pUser, npcVendor.GetTag( "bodType" ) ) ) { if( !onlyOfferBodsFromCraftedItems || iSold.madeWith != -1 ) // what is madeWith property for non-crafted items? { @@ -319,7 +319,7 @@ function onSpeech( myString, pUser, myNPC ) function SmallBODAcceptGump( pUser, myNPC ) { - var socket = pUser.socket; + var socket = pUser.socket; var bodType = myNPC.GetTag( "bodType" ); const bodSubtype = myNPC.GetTag( "bodSubtype" ); const pSkill = pUser.skills[BODTypesToSkillNames[bodType]]; // The player's level of the BOD's relevant skill. @@ -737,7 +737,7 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) const rewardTier = rewards[WeightedRandom( minReward, maxReward, weightVal )]; let rewardItemIndex = 0; - if (rewardTier.items.length > 1) { + if ( rewardTier.items.length > 1 ) { switch ( rewardTier.selectType ) { case "random": rewardItemIndex = RandomNumber(0, rewardTier.items.length - 1); @@ -751,7 +751,7 @@ function DispenseBODRewards( pDropper, npcDroppedOn, iDropped ) } const rewardItem = rewardTier.items[rewardItemIndex]; const rewardDFNItem = CreateDFNItem( socket, pDropper, rewardItem.itemName, 1, "ITEM", false ); - if (rewardItem.props && rewardDFNItem) + if ( rewardItem.props && rewardDFNItem ) { for( let i = 0; i < rewardItem.props.length; i++ ) { @@ -903,7 +903,7 @@ function MinMaxRewardModifiers( iDropped, bodType, numTiers ) // Apply bonus/penalty if special material required by BOD (replace with bonus/penalty based on specific color rarities?) if( bodType == 1 ) { - var materialColor = iDropped.GetTag("materialColor"); + var materialColor = iDropped.GetTag( "materialColor" ); switch (materialColor) { case 0: // Iron maxModPercent -= 0.25; @@ -937,5 +937,5 @@ function MinMaxRewardModifiers( iDropped, bodType, numTiers ) } } - return [Math.floor(minModPercent * numTiers), Math.floor(maxModPercent * numTiers)]; + return [Math.floor( minModPercent * numTiers ), Math.floor( maxModPercent * numTiers )]; } From 6e2905ca77ee8f46890edb96f4e4d65fa884a506 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sat, 11 Nov 2023 11:40:46 -0600 Subject: [PATCH 28/37] Update Changelog.txt --- source/Changelog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/Changelog.txt b/source/Changelog.txt index fd3c9956d..c42f7ed94 100644 --- a/source/Changelog.txt +++ b/source/Changelog.txt @@ -1,5 +1,5 @@ 10/11/2023 - Dragon Slayer - Added Stocking IDs to items.cpp (cpp items) + Added IDs for stocking items to cItem::GetPackType() in items.cpp, so they can be used as containers 28/10/2023 - Dragon Slayer (0.99.6a) Added DFN entries for hallow pumpkins, jack o lanterns and halloween decorations. (dfn item/misc/halloween) From 24e1c5ea6aa0ac5262d7c6e67fc2406033fa2037 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sat, 11 Nov 2023 11:44:58 -0600 Subject: [PATCH 29/37] Spellbook line changes --- data/js/item/runebook.js | 2 +- data/js/magic/clumsy.js | 2 +- data/js/magic/createfood.js | 2 +- data/js/magic/level1targ.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/js/item/runebook.js b/data/js/item/runebook.js index 6b1d1a5dd..1716c9730 100644 --- a/data/js/item/runebook.js +++ b/data/js/item/runebook.js @@ -690,7 +690,7 @@ function CastSpell( pSocket, pUser, spellNum, checkReagentReq ) // Is the player casting recall holding any objects? var itemRHand = pUser.FindItemLayer( 0x01 ); var itemLHand = pUser.FindItemLayer( 0x02 ); - if( ValidateObject( itemLHand ) && itemLHand.type != 119 || ( ValidateObject( itemRHand ) && itemRHand.type != 9 || itemRHand.type != 119 )) // Spellbook //spell channeling + if( ValidateObject( itemLHand ) && itemLHand.type != 119 || ( ValidateObject( itemRHand ) && ( itemRHand.type != 9 || itemRHand.type != 119 ))) // Spellbook //spell channeling { pSocket.SysMessage( GetDictionaryEntry( 708, pSocket.language )); // You cannot cast with a weapon equipped. return; diff --git a/data/js/magic/clumsy.js b/data/js/magic/clumsy.js index 4904bb2f2..5eb21c8cb 100644 --- a/data/js/magic/clumsy.js +++ b/data/js/magic/clumsy.js @@ -110,7 +110,7 @@ function onSpellCast( mSock, mChar, directCast, spellNum ) { var itemRHand = mChar.FindItemLayer( 0x01 ); var itemLHand = mChar.FindItemLayer( 0x02 ); - if(( itemLHand && itemLHand.type != 119 ) || (itemRHand && itemRHand.type != 9 || itemRHand.type != 119 )) // Spellbook + if(( itemLHand && itemLHand.type != 119 ) || ( itemRHand && ( itemRHand.type != 9 || itemRHand.type != 119 ))) // Spellbook { if( mSock != null ) { diff --git a/data/js/magic/createfood.js b/data/js/magic/createfood.js index b3226ef64..5dcfa06eb 100644 --- a/data/js/magic/createfood.js +++ b/data/js/magic/createfood.js @@ -83,7 +83,7 @@ function onSpellCast( mSock, mChar, directCast, spellNum ) { var itemRHand = mChar.FindItemLayer( 0x01 ); var itemLHand = mChar.FindItemLayer( 0x02 ); - if(( itemLHand && itemLHand.type != 119 ) || ( itemRHand && itemRHand.type != 9 || itemRHand.type != 119 )) // Spellbook + if(( itemLHand && itemLHand.type != 119 ) || ( itemRHand && ( itemRHand.type != 9 || itemRHand.type != 119 ))) // Spellbook { if( mSock ) { diff --git a/data/js/magic/level1targ.js b/data/js/magic/level1targ.js index 2d958cd64..e33beacc9 100644 --- a/data/js/magic/level1targ.js +++ b/data/js/magic/level1targ.js @@ -67,7 +67,7 @@ function ItemInHandCheck( mChar, mSock, spellType ) { var itemRHand = mChar.FindItemLayer( 0x01 ); var itemLHand = mChar.FindItemLayer( 0x02 ); - if(( itemLHand && itemLHand.type != 119 ) || ( itemRHand && itemRHand.type != 9 || itemRHand.type != 119 )) // Spellbook + if(( itemLHand && itemLHand.type != 119 ) || ( itemRHand && ( itemRHand.type != 9 || itemRHand.type != 119 ))) // Spellbook { if( mSock ) { From affa97cad7d475e0b3fc24afc9f20dea55a13380 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 11:11:29 -0700 Subject: [PATCH 30/37] Fix timers. --- data/js/npc/ai/vendor_bdo_dispenser.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index cdc335246..e80d608c8 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -559,7 +559,7 @@ function SetBODAcceptanceCooldown( pUser, bodType ) bodTimer = 3600000; // 1000 * 60 * 60 = 1 hour if under or equal to 50.0 skill } - pUser.SetJSTimer( bodType, bodTimer, 3214 ); + pUser.StartTimer( bodTimer, bodType, true ); } function SelectBodEntry( bodType, bodSubtype, considerPlayerSkill, pSkill ) @@ -649,7 +649,7 @@ function onDropItemOnNpc( pDropper, npcDroppedOn, iDropped ) if( DispenseBODRewards( pDropper, npcDroppedOn, iDropped )) { // Make the player wait 10 seconds before turning in another BOD. - pDropper.SetJSTimer( iBodType * 10, 10000, 3214); + pDropper.StartTimer( 10000, iBodType * 10, true ); // On delivery of a completed BOD, kill cooldown timer to get another BOD offer var bodOfferCD = pDropper.GetJSTimer( iBodType, 3214 ); // Fetch timer for BOD offer cooldown if( bodOfferCD != 0 ) From 79d995185f2f33d348b94de4afd83d0ce41d45a8 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 11:21:31 -0700 Subject: [PATCH 31/37] Fix condition causing onSpeech to trigger for all vendors in radius. --- data/js/npc/ai/vendor_bdo_dispenser.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index e80d608c8..f4e613f03 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -287,11 +287,11 @@ function onSpeech( myString, pUser, myNPC ) // See if a vendor serial was stored via hard-coded context menu, to exclude other NPCs reaction to speech trigger var targetShopkeeper = CalcCharFromSer( parseInt( pUser.GetTempTag( "bodShopkeeperSerial" ))); - pUser.SetTempTag( "bodShopkeeperSerial", null ); - if( ValidateObject( targetShopkeeper ) && targetShopkeeper != myNPC ) + if( !ValidateObject( targetShopkeeper ) || targetShopkeeper != myNPC ) { return false; } + pUser.SetTempTag( "bodShopkeeperSerial", null ); // Check the trigger words to see if the Bulk Order Info trigger word was sent for( var trigWord = socket.FirstTriggerWord(); !socket.FinishedTriggerWords(); trigWord = socket.NextTriggerWord() ) From 108da9a9cfc64ec93ed2d29e6f205a797bfd6ebd Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 11:24:34 -0700 Subject: [PATCH 32/37] Add comment above unimplemented rewards. --- data/js/npc/ai/vendor_bdo_dispenser.js | 1 + 1 file changed, 1 insertion(+) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index f4e613f03..b2d85405c 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -230,6 +230,7 @@ const TailorRewardTiersToItems = [ ], selectType: "random" }, + // The following items are not yet implemented. // { items: [{ itemName: "spined_runic_sewing_kit" }] }, // { items: [{ itemName: "clothing_bless_deed" }] }, // { items: [{ itemName: "horned_runic_sewing_kit" }] }, From 11f3c48e4332e71edaad7ab2c368a91edcd389df Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 11:33:49 -0700 Subject: [PATCH 33/37] Select random BOD subtype when adding via commands. --- data/js/item/smallbod.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/data/js/item/smallbod.js b/data/js/item/smallbod.js index fcac516d9..4f66a9f05 100644 --- a/data/js/item/smallbod.js +++ b/data/js/item/smallbod.js @@ -3,14 +3,22 @@ const BODTypesToSkillNames = { 2: "tailoring" }; +const BODSubtypeMinMax = { + 1: [1, 3], + 2: [1, 1] +} + // Can also be triggered by creating BOD from admin menu or add command: 'add item smallbod function onCreateDFN( objMade, objType ) { if( !ValidateObject( objMade )) return; - var bodType = objMade.GetTag( "bodType" ); - var bodEntry = TriggerEvent( 3214, "SelectBodEntry", bodType, 1, false, 0 ); + var bodType = objMade.GetTag( "bodType" ); + const bodSubtypeMinMax = BODSubtypeMinMax[bodType]; + const bodSubtype = RandomNumber(bodSubtypeMinMax[0], bodSubtypeMinMax[1]); + + var bodEntry = TriggerEvent( 3214, "SelectBodEntry", bodType, bodSubtype, false, 0 ); var itemName = bodEntry.name; // name of the create entry var graphicID = bodEntry.id; // graphical id of item to craft var sectionID = bodEntry.addItem; // section ID of item to craft From f368d760fb7dfd61443587e90530f19f87ee013f Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 11:36:31 -0700 Subject: [PATCH 34/37] Formatting fixes. --- data/js/item/smallbod.js | 2 +- data/js/npc/ai/vendor_bdo_dispenser.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/js/item/smallbod.js b/data/js/item/smallbod.js index 4f66a9f05..6f6940baf 100644 --- a/data/js/item/smallbod.js +++ b/data/js/item/smallbod.js @@ -6,7 +6,7 @@ const BODTypesToSkillNames = { const BODSubtypeMinMax = { 1: [1, 3], 2: [1, 1] -} +}; // Can also be triggered by creating BOD from admin menu or add command: 'add item smallbod function onCreateDFN( objMade, objType ) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index b2d85405c..47003974a 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -120,7 +120,7 @@ const BODTypesToCreateEntries = { const BODTypeToDFNSectionID = { 1: "smallbod_blacksmith", 2: "smallbod_tailor" -} +}; const BODTypesToSkillNames = { 1: "blacksmithing", From 9f165e56841838b278a68bccb685a7f279bb540d Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 14:18:28 -0700 Subject: [PATCH 35/37] Update Changelog.txt --- source/Changelog.txt | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/source/Changelog.txt b/source/Changelog.txt index 17a26f886..072e0cb1e 100644 --- a/source/Changelog.txt +++ b/source/Changelog.txt @@ -1,3 +1,31 @@ +11/11/2023 - Danny S. + Implemented tailoring BODs. + Blacksmiths, armorers, weaponsmiths, and ironworkers have had their bodType custom tag value changed to 1. (malevendors.dfn, femalevendors.dfn) + Tailors are now associated to the vendor_bdo_dispenser.js script and have a bodType customTag with a value of 2. (malevendors.dfn, femalevendors.dfn) + A new custom tag, bodSubtype, with different values depending on the vendor DFN (malevendors.dfn, femalevendors.dfn): + Weaponsmith - 1 + Armorer - 2 + Blacksmith - 3 + Ironworkers - 3 + The item DFN smallbod has been renamed to smallbod_blacksmith and it has a new bodType custom tag with a value of 1. (misc_deeds.dfn) + Added a new item DFN, smallbod_tailor, having a bodType custom tag with a value of 2. (misc_deeds.dfn) + The smallbod script has been updated to handle creation and initialization of either type of BOD. (smallbod.js) + The vendor BOD script has been updated to handle interactions for either type of BOD. (vendor_bdo_dispenser.js) + Fixed an issue making it impossible for BODs to require exceptional items. (vendor_bdo_dispenser.js) + Fixed an issue where the BOD reward dispensing cooldown timer was not actually being set. (vendor bdo_dispenser.js) + Fixed an issue where the vendor BOD script's onSpeech callback would trigger to completion for all BOD dispensing NPCs within the player's radius. (vendor_bdo_dispenser.js) + Removed AOS era BOD reward items, as the item DFNs do not yet exist. (vendor_bdo_dispenser.js) + Removed maximum reward penalty for small BODs, as large BODs do not yet exist. (vendor_bdo_dispenser.js) + +10/11/2023 - Danny S. + Fixed an issue in the vendor BOD script that prevented vendors from accepting BODs. (vendor_bdo_dispenser.js) + Fixed an issue in the vender BOD script that caused an error to be thrown when attempting to dispense a sturdy shovel reward. (vendor_bdo_dispenser.js) + Changed skill boosting equipment script to modify effective skills instead of base skills. (skill_boosting_equipment.js) + Fixed an issue in the BOD item GUMP that prevented adding multiple items in a row. (smallbod.js) + Changed the BOD item GUMP to no longer close in between clicking "Combine..." and targeting an item. (smallbod.js) + Changed the BOD item targeting cursor to automatically stop targeting after the BOD's item requirements are met. (smallbod.js) + Fixed an issue where an error would be thrown when clicking empty space with a BOD item targeting cursor. (smallbod.js) + 10/11/2023 - Dragon Slayer Added IDs for stocking items to cItem::GetPackType() in items.cpp, so they can be used as containers From b4c0aab09f6f6c5b614aabcd040e2eb13c17f543 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 14:29:30 -0700 Subject: [PATCH 36/37] Fix mistakes in Changelog updates. --- source/Changelog.txt | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/source/Changelog.txt b/source/Changelog.txt index 072e0cb1e..d4c4f3900 100644 --- a/source/Changelog.txt +++ b/source/Changelog.txt @@ -2,24 +2,25 @@ Implemented tailoring BODs. Blacksmiths, armorers, weaponsmiths, and ironworkers have had their bodType custom tag value changed to 1. (malevendors.dfn, femalevendors.dfn) Tailors are now associated to the vendor_bdo_dispenser.js script and have a bodType customTag with a value of 2. (malevendors.dfn, femalevendors.dfn) - A new custom tag, bodSubtype, with different values depending on the vendor DFN (malevendors.dfn, femalevendors.dfn): + A new custom tag, bodSubtype, has been added with different values depending on the vendor DFN (malevendors.dfn, femalevendors.dfn): Weaponsmith - 1 Armorer - 2 Blacksmith - 3 - Ironworkers - 3 + Ironworker - 3 + Tailor - 1 The item DFN smallbod has been renamed to smallbod_blacksmith and it has a new bodType custom tag with a value of 1. (misc_deeds.dfn) Added a new item DFN, smallbod_tailor, having a bodType custom tag with a value of 2. (misc_deeds.dfn) The smallbod script has been updated to handle creation and initialization of either type of BOD. (smallbod.js) The vendor BOD script has been updated to handle interactions for either type of BOD. (vendor_bdo_dispenser.js) - Fixed an issue making it impossible for BODs to require exceptional items. (vendor_bdo_dispenser.js) - Fixed an issue where the BOD reward dispensing cooldown timer was not actually being set. (vendor bdo_dispenser.js) - Fixed an issue where the vendor BOD script's onSpeech callback would trigger to completion for all BOD dispensing NPCs within the player's radius. (vendor_bdo_dispenser.js) - Removed AOS era BOD reward items, as the item DFNs do not yet exist. (vendor_bdo_dispenser.js) - Removed maximum reward penalty for small BODs, as large BODs do not yet exist. (vendor_bdo_dispenser.js) + Fixed an issue making it impossible for BODs to require exceptional items. (vendor_bdo_dispenser.js) + Fixed an issue where the BOD reward dispensing cooldown timer was not actually being set. (vendor bdo_dispenser.js) + Fixed an issue where the vendor BOD script's onSpeech callback would trigger to completion for all BOD dispensing NPCs within the player's radius. (vendor_bdo_dispenser.js) + Removed AOS era BOD reward items, as the item DFNs do not yet exist. (vendor_bdo_dispenser.js) + Removed maximum reward penalty for small BODs, as large BODs do not yet exist. (vendor_bdo_dispenser.js) 10/11/2023 - Danny S. Fixed an issue in the vendor BOD script that prevented vendors from accepting BODs. (vendor_bdo_dispenser.js) - Fixed an issue in the vender BOD script that caused an error to be thrown when attempting to dispense a sturdy shovel reward. (vendor_bdo_dispenser.js) + Fixed an issue in the vendor BOD script that caused an error to be thrown when attempting to dispense a sturdy shovel reward. (vendor_bdo_dispenser.js) Changed skill boosting equipment script to modify effective skills instead of base skills. (skill_boosting_equipment.js) Fixed an issue in the BOD item GUMP that prevented adding multiple items in a row. (smallbod.js) Changed the BOD item GUMP to no longer close in between clicking "Combine..." and targeting an item. (smallbod.js) From d2a7ea3b3ef84c387857b81a09e6df5211fc1c37 Mon Sep 17 00:00:00 2001 From: Danny Shoun Date: Sat, 11 Nov 2023 20:07:29 -0700 Subject: [PATCH 37/37] Fix anvil item names in blacksmith BOD reward list. Fix typo in Changelog.txt. --- data/js/npc/ai/vendor_bdo_dispenser.js | 4 ++-- source/Changelog.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/js/npc/ai/vendor_bdo_dispenser.js b/data/js/npc/ai/vendor_bdo_dispenser.js index 47003974a..3d8f3e8e7 100644 --- a/data/js/npc/ai/vendor_bdo_dispenser.js +++ b/data/js/npc/ai/vendor_bdo_dispenser.js @@ -156,8 +156,8 @@ const BlacksmithRewardTiersToItems = [ { itemName: "b_anvil_deed" }, { itemName: "g_anvil_deed" }, { itemName: "a_anvil_deed" }, - { itemName: "v_anvil_deed" }, - { itemName: "v_anvil_deed" } + { itemName: "ve_anvil_deed" }, + { itemName: "va_anvil_deed" } ], selectType: "weighted" }, diff --git a/source/Changelog.txt b/source/Changelog.txt index d4c4f3900..cbe169780 100644 --- a/source/Changelog.txt +++ b/source/Changelog.txt @@ -1,7 +1,7 @@ 11/11/2023 - Danny S. Implemented tailoring BODs. Blacksmiths, armorers, weaponsmiths, and ironworkers have had their bodType custom tag value changed to 1. (malevendors.dfn, femalevendors.dfn) - Tailors are now associated to the vendor_bdo_dispenser.js script and have a bodType customTag with a value of 2. (malevendors.dfn, femalevendors.dfn) + Tailors are now associated to the vendor_bdo_dispenser.js script and have a bodType custom tag with a value of 2. (malevendors.dfn, femalevendors.dfn) A new custom tag, bodSubtype, has been added with different values depending on the vendor DFN (malevendors.dfn, femalevendors.dfn): Weaponsmith - 1 Armorer - 2