From 141650db4efa2247cf7d2f563181a8e3a1744473 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Fri, 10 Nov 2023 18:45:47 +0900 Subject: [PATCH 01/70] Remove GetValue() usage --- .Lib9c.Tests/Model/State/LazyStateTest.cs | 6 +++--- Lib9c/Action/ValidatorSetOperate.cs | 4 ++-- Lib9c/Model/Coupons/Coupon.cs | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.Lib9c.Tests/Model/State/LazyStateTest.cs b/.Lib9c.Tests/Model/State/LazyStateTest.cs index ca77f5fbf3..d02660c797 100644 --- a/.Lib9c.Tests/Model/State/LazyStateTest.cs +++ b/.Lib9c.Tests/Model/State/LazyStateTest.cs @@ -55,7 +55,7 @@ public void Serialize() _unloaded.State.Foo = 456L; Assert.Equal( 456L, - (long)((Dictionary)_unloaded.Serialize()).GetValue("foo") + (long)(Integer)((Dictionary)_unloaded.Serialize())["foo"] ); Assert.True(_unloaded.GetStateOrSerializedEncoding(out _, out _)); } @@ -107,8 +107,8 @@ public SampleState(Address address, long foo, string bar) public SampleState(Dictionary serialized) : base(serialized) { - Foo = serialized.GetValue("foo"); - Bar = serialized.GetValue("bar"); + Foo = (Integer)serialized["foo"]; + Bar = (Text)serialized["bar"]; } public SampleState(IValue iValue) diff --git a/Lib9c/Action/ValidatorSetOperate.cs b/Lib9c/Action/ValidatorSetOperate.cs index 987b734a17..f64cf3ca23 100644 --- a/Lib9c/Action/ValidatorSetOperate.cs +++ b/Lib9c/Action/ValidatorSetOperate.cs @@ -163,9 +163,9 @@ private Validator BackwardCompatibility(Bencodex.Types.Dictionary dict) catch (Exception) { BigInteger power = - new BigInteger(dict.GetValue(PowerKey).ToByteArray()); + new BigInteger(((Binary)dict[PowerKey]).ToByteArray()); PublicKey publicKey = - new PublicKey(dict.GetValue(PublicKeyKey).ToByteArray()); + new PublicKey(((Binary)dict[PublicKeyKey]).ToByteArray()); return new Validator(publicKey, power); } diff --git a/Lib9c/Model/Coupons/Coupon.cs b/Lib9c/Model/Coupons/Coupon.cs index 80b9f97da6..24e6178579 100644 --- a/Lib9c/Model/Coupons/Coupon.cs +++ b/Lib9c/Model/Coupons/Coupon.cs @@ -40,7 +40,7 @@ public Coupon(IValue serialized) ); } - Id = new Guid(dict.GetValue("id")); + Id = new Guid((Binary)dict["id"]); Rewards = new RewardSet((Bencodex.Types.Dictionary)dict["rewards"]); } From 51dec40b7a7589b590bdd973d6aab3737c60c08f Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Fri, 10 Nov 2023 18:52:23 +0900 Subject: [PATCH 02/70] Use bencodability of Address --- .Lib9c.Miner.Tests/CustomActionsDeserializableValidatorTest.cs | 2 +- Lib9c.MessagePack/AccountStateDelta.cs | 2 +- Lib9c/CurrencyExtensions.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.Lib9c.Miner.Tests/CustomActionsDeserializableValidatorTest.cs b/.Lib9c.Miner.Tests/CustomActionsDeserializableValidatorTest.cs index 0b3d82745a..2383770db8 100644 --- a/.Lib9c.Miner.Tests/CustomActionsDeserializableValidatorTest.cs +++ b/.Lib9c.Miner.Tests/CustomActionsDeserializableValidatorTest.cs @@ -44,7 +44,7 @@ private class DailyReward : IAction public void LoadPlainValue(IValue plainValue) { - AvatarAddress = new Address(((Binary)((Dictionary)plainValue)["a"]).ByteArray); + AvatarAddress = new Address(((Dictionary)plainValue)["a"]); } public IAccount Execute(IActionContext context) diff --git a/Lib9c.MessagePack/AccountStateDelta.cs b/Lib9c.MessagePack/AccountStateDelta.cs index 864d8eea5a..ff556a3f95 100644 --- a/Lib9c.MessagePack/AccountStateDelta.cs +++ b/Lib9c.MessagePack/AccountStateDelta.cs @@ -42,7 +42,7 @@ public AccountStateDelta(Dictionary states, List balances, Dictionary totalSuppl kv => new Address(kv.Key), kv => kv.Value), balances.Cast().ToImmutableDictionary( - record => (new Address(((Binary)record["address"]).ByteArray), new Currency((Dictionary)record["currency"])), + record => (new Address(record["address"]), new Currency((Dictionary)record["currency"])), record => (BigInteger)(Integer)record["amount"]), totalSupplies.ToImmutableDictionary( kv => new Currency(new Codec().Decode((Binary)kv.Key)), diff --git a/Lib9c/CurrencyExtensions.cs b/Lib9c/CurrencyExtensions.cs index 79180e14ad..3a7ba36f08 100644 --- a/Lib9c/CurrencyExtensions.cs +++ b/Lib9c/CurrencyExtensions.cs @@ -40,7 +40,7 @@ public static Currency Deserialize(Bencodex.Types.Dictionary serialized) IImmutableSet
minters = null; if (serialized["minters"] is Bencodex.Types.List mintersAsList) { - minters = mintersAsList.Select(b => new Address(((Binary) b).ByteArray)).ToImmutableHashSet(); + minters = mintersAsList.Select(b => new Address(b)).ToImmutableHashSet(); } if (serialized.ContainsKey("totalSupplyTrackable")) From 20773488a3416e36d530f8f72b5c5317447181d7 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Fri, 10 Nov 2023 18:57:59 +0900 Subject: [PATCH 03/70] Remove forced rehearsal extension method --- .../Action/ActionBaseExtensionsTest.cs | 55 ----- Lib9c/Action/ActionBaseExtensions.cs | 192 ------------------ 2 files changed, 247 deletions(-) delete mode 100644 .Lib9c.Tests/Action/ActionBaseExtensionsTest.cs delete mode 100644 Lib9c/Action/ActionBaseExtensions.cs diff --git a/.Lib9c.Tests/Action/ActionBaseExtensionsTest.cs b/.Lib9c.Tests/Action/ActionBaseExtensionsTest.cs deleted file mode 100644 index f40a828fef..0000000000 --- a/.Lib9c.Tests/Action/ActionBaseExtensionsTest.cs +++ /dev/null @@ -1,55 +0,0 @@ -namespace Lib9c.Tests.Action -{ - using System.Collections.Immutable; - using Libplanet.Crypto; - using Nekoyume.Action; - using Xunit; - - public class ActionBaseExtensionsTest - { - [Fact] - public void CalculateUpdateAddresses() - { - var actions = new ActionBase[] - { - new TransferAsset( - sender: default, - recipient: default, - amount: Currencies.DailyRewardRune * 1 - ), - }; - - IImmutableSet
actual = actions.CalculateUpdateAddresses(); - Assert.Equal( - new Address[] - { - default, - }, - actual - ); - } - - [Fact] - public void CalculateUpdateAddressesWithIncompatibles() - { - var actions = new ActionBase[] - { - new TransferAsset( - sender: default, - recipient: default, - amount: Currencies.DailyRewardRune * 1 - ), - new HackAndSlashRandomBuff(), - }; - - IImmutableSet
actual = actions.CalculateUpdateAddresses(); - Assert.Equal( - new Address[] - { - default, - }, - actual - ); - } - } -} diff --git a/Lib9c/Action/ActionBaseExtensions.cs b/Lib9c/Action/ActionBaseExtensions.cs deleted file mode 100644 index 1eae92aaec..0000000000 --- a/Lib9c/Action/ActionBaseExtensions.cs +++ /dev/null @@ -1,192 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Numerics; -using System.Security.Cryptography; -using Bencodex.Types; -using Libplanet.Action; -using Libplanet.Action.State; -using Libplanet.Common; -using Libplanet.Crypto; -using Libplanet.Store.Trie; -using Libplanet.Types.Assets; -using Libplanet.Types.Blocks; -using Libplanet.Types.Consensus; -using Libplanet.Types.Tx; - -namespace Nekoyume.Action -{ - public static class ActionBaseExtensions - { - public static IImmutableSet
CalculateUpdateAddresses(this IEnumerable actions) - { - IImmutableSet
addresses = ImmutableHashSet
.Empty; - IActionContext rehearsalContext = new RehearsalActionContext(); - - foreach (ActionBase action in actions) - { - try - { - IAccount nextStates = action.Execute(rehearsalContext); - addresses = addresses.Union(nextStates.Delta.UpdatedAddresses); - } - catch (NotSupportedException) - { - // Ignore updated addresses from incompatible actions - } - } - - return addresses; - } - - private class RehearsalActionContext : IActionContext - { - public BlockHash? GenesisHash => default; - - public Address Signer => default; - - public TxId? TxId => default; - - public Address Miner => default; - - public long BlockIndex => default; - - public int BlockProtocolVersion => default; - - public bool Rehearsal => true; - - public IAccount PreviousState => new AddressTraceStateDelta(); - - public int RandomSeed => default; - - public HashDigest? PreviousStateRootHash => default; - - public bool BlockAction => default; - - public void UseGas(long gas) - { - // pass - } - - public IRandom GetRandom() => null; - - public long GasUsed() => 0; - - public long GasLimit() => 0; - } - - private class AddressTraceStateDelta : IAccount - { - private AddressTraceDelta _delta; - - public AddressTraceStateDelta() - : this(new AddressTraceDelta()) - { - } - - public AddressTraceStateDelta(AddressTraceDelta delta) - { - _delta = delta; - } - - public ITrie Trie => throw new NotSupportedException(); - - public IAccountDelta Delta => _delta; - - public IImmutableSet
UpdatedAddresses => _delta.UpdatedAddresses; - - public IImmutableSet
StateUpdatedAddresses => _delta.StateUpdatedAddresses; - - public IImmutableSet<(Address, Currency)> UpdatedFungibleAssets => - Delta.UpdatedFungibleAssets; - - public IImmutableSet<(Address, Currency)> TotalUpdatedFungibleAssets => - throw new NotSupportedException(); - - public IImmutableSet UpdatedTotalSupplyCurrencies - => Delta.UpdatedTotalSupplyCurrencies; - - public IAccount BurnAsset(IActionContext context, Address owner, FungibleAssetValue value) - { - return new AddressTraceStateDelta( - new AddressTraceDelta(Delta.UpdatedAddresses.Union(new [] { owner }))); - } - - public FungibleAssetValue GetBalance(Address address, Currency currency) - { - throw new NotSupportedException(); - } - - public IValue GetState(Address address) - { - throw new NotSupportedException(); - } - - public IReadOnlyList GetStates(IReadOnlyList
addresses) - { - throw new NotSupportedException(); - } - - public FungibleAssetValue GetTotalSupply(Currency currency) - { - throw new NotSupportedException(); - } - - public IAccount MintAsset(IActionContext context, Address recipient, FungibleAssetValue value) - { - return new AddressTraceStateDelta( - new AddressTraceDelta(Delta.UpdatedAddresses.Union(new[] { recipient }))); - } - - public IAccount SetState(Address address, IValue state) - { - return new AddressTraceStateDelta( - new AddressTraceDelta(Delta.UpdatedAddresses.Union(new[] { address }))); - } - - public IAccount TransferAsset( - IActionContext context, - Address sender, - Address recipient, - FungibleAssetValue value, - bool allowNegativeBalance = false - ) - { - return new AddressTraceStateDelta( - new AddressTraceDelta(Delta.UpdatedAddresses.Union(new[] { sender, recipient }))); - } - - public ValidatorSet GetValidatorSet() => throw new NotSupportedException(); - - public IAccount SetValidator(Validator validator) - { - throw new NotSupportedException(); - } - - public class AddressTraceDelta : IAccountDelta - { - private IImmutableSet
_updatedAddresses; - - public AddressTraceDelta() - : this(ImmutableHashSet
.Empty) - { - } - - public AddressTraceDelta(IImmutableSet
updatedAddresses) - { - _updatedAddresses = updatedAddresses; - } - - public IImmutableSet
UpdatedAddresses => _updatedAddresses; - public IImmutableSet
StateUpdatedAddresses => _updatedAddresses; - public IImmutableDictionary States => throw new NotSupportedException(); - public IImmutableSet
FungibleUpdatedAddresses => _updatedAddresses; - public IImmutableSet<(Address, Currency)> UpdatedFungibleAssets => throw new NotSupportedException(); - public IImmutableDictionary<(Address, Currency), BigInteger> Fungibles => throw new NotSupportedException(); - public IImmutableSet UpdatedTotalSupplyCurrencies => throw new NotSupportedException(); - public IImmutableDictionary TotalSupplies => throw new NotSupportedException(); - public ValidatorSet ValidatorSet => throw new NotSupportedException(); - } - } - } -} From 374ff35f4050c7d6f33fdd11603ff5f8501cc405 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Sat, 11 Nov 2023 09:17:23 +0900 Subject: [PATCH 04/70] Remove unnecessary testing --- .Lib9c.Tests/Action/ActivateAccount0Test.cs | 26 ------- .Lib9c.Tests/Action/ActivateAccountTest.cs | 27 -------- .../Action/AddActivatedAccount0Test.cs | 29 -------- .../Action/AddActivatedAccountTest.cs | 28 -------- .Lib9c.Tests/Action/Buy10Test.cs | 49 ------------- .Lib9c.Tests/Action/Buy11Test.cs | 49 ------------- .Lib9c.Tests/Action/Buy8Test.cs | 49 ------------- .Lib9c.Tests/Action/Buy9Test.cs | 49 ------------- .Lib9c.Tests/Action/CreateAvatar0Test.cs | 58 ---------------- .Lib9c.Tests/Action/CreateAvatar10Test.cs | 65 ----------------- .Lib9c.Tests/Action/CreateAvatar2Test.cs | 66 ------------------ .Lib9c.Tests/Action/CreateAvatar3Test.cs | 69 ------------------- .Lib9c.Tests/Action/CreateAvatar6Test.cs | 69 ------------------- .Lib9c.Tests/Action/CreateAvatar7Test.cs | 65 ----------------- .Lib9c.Tests/Action/CreateAvatar8Test.cs | 65 ----------------- .Lib9c.Tests/Action/CreateAvatar9Test.cs | 65 ----------------- .Lib9c.Tests/Action/DailyReward4Test.cs | 28 -------- .Lib9c.Tests/Action/DailyReward5Test.cs | 25 ------- .Lib9c.Tests/Action/DailyReward6Test.cs | 28 -------- .Lib9c.Tests/Action/DailyRewardTest.cs | 21 ------ .Lib9c.Tests/Action/HackAndSlash0Test.cs | 36 ---------- .Lib9c.Tests/Action/HackAndSlash10Test.cs | 38 ---------- .Lib9c.Tests/Action/HackAndSlash11Test.cs | 36 ---------- .Lib9c.Tests/Action/HackAndSlash12Test.cs | 36 ---------- .Lib9c.Tests/Action/HackAndSlash13Test.cs | 35 ---------- .Lib9c.Tests/Action/HackAndSlash2Test.cs | 36 ---------- .Lib9c.Tests/Action/HackAndSlash6Test.cs | 39 ----------- .Lib9c.Tests/Action/HackAndSlash7Test.cs | 39 ----------- .Lib9c.Tests/Action/HackAndSlash8Test.cs | 37 ---------- .Lib9c.Tests/Action/HackAndSlash9Test.cs | 38 ---------- .Lib9c.Tests/Action/ItemEnhancement0Test.cs | 44 ------------ .Lib9c.Tests/Action/ItemEnhancement10Test.cs | 42 ----------- .Lib9c.Tests/Action/ItemEnhancement2Test.cs | 44 ------------ .Lib9c.Tests/Action/ItemEnhancement7Test.cs | 42 ----------- .Lib9c.Tests/Action/ItemEnhancement8Test.cs | 42 ----------- .Lib9c.Tests/Action/ItemEnhancement9Test.cs | 42 ----------- .Lib9c.Tests/Action/RankingBattle10Test.cs | 34 --------- .Lib9c.Tests/Action/RankingBattle11Test.cs | 34 --------- .Lib9c.Tests/Action/RankingBattle5Test.cs | 35 ---------- .Lib9c.Tests/Action/RankingBattle6Test.cs | 35 ---------- .Lib9c.Tests/Action/RankingBattle7Test.cs | 35 ---------- .Lib9c.Tests/Action/RankingBattle8Test.cs | 35 ---------- .Lib9c.Tests/Action/RankingBattle9Test.cs | 35 ---------- .Lib9c.Tests/Action/Sell10Test.cs | 41 ----------- .Lib9c.Tests/Action/Sell11Test.cs | 41 ----------- .Lib9c.Tests/Action/Sell7Test.cs | 41 ----------- .Lib9c.Tests/Action/Sell8Test.cs | 41 ----------- .Lib9c.Tests/Action/Sell9Test.cs | 41 ----------- .Lib9c.Tests/Action/SellCancellation7Test.cs | 35 ---------- .Lib9c.Tests/Action/SellCancellation8Test.cs | 35 ---------- .Lib9c.Tests/Action/SellCancellationTest.cs | 35 ---------- .Lib9c.Tests/Action/SellTest.cs | 41 ----------- .Lib9c.Tests/Action/TransferAsset2Test.cs | 29 -------- .Lib9c.Tests/Action/TransferAsset3Test.cs | 29 -------- .Lib9c.Tests/Action/TransferAsset4Test.cs | 30 -------- .Lib9c.Tests/Action/TransferAssetTest.cs | 30 -------- .Lib9c.Tests/Action/TransferAssetTest0.cs | 29 -------- .Lib9c.Tests/Action/TransferAssets0Test.cs | 31 --------- .Lib9c.Tests/Action/TransferAssets2Test.cs | 31 --------- .Lib9c.Tests/Action/TransferAssetsTest.cs | 31 --------- 60 files changed, 2390 deletions(-) diff --git a/.Lib9c.Tests/Action/ActivateAccount0Test.cs b/.Lib9c.Tests/Action/ActivateAccount0Test.cs index 5157ab2676..ff1904bb6b 100644 --- a/.Lib9c.Tests/Action/ActivateAccount0Test.cs +++ b/.Lib9c.Tests/Action/ActivateAccount0Test.cs @@ -39,32 +39,6 @@ public void Execute() activatedAccounts.Accounts); } - [Fact] - public void Rehearsal() - { - var nonce = new byte[] { 0x00, 0x01, 0x02, 0x03 }; - var privateKey = new PrivateKey(); - (ActivationKey activationKey, PendingActivationState pendingActivation) = - ActivationKey.Create(privateKey, nonce); - - ActivateAccount0 action = activationKey.CreateActivateAccount0(nonce); - IAccount nextState = action.Execute(new ActionContext() - { - PreviousState = new Account(MockState.Empty), - Signer = default, - Rehearsal = true, - BlockIndex = 1, - }); - - Assert.Equal( - ImmutableHashSet.Create( - ActivatedAccountsState.Address, - pendingActivation.address - ), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void ExecuteWithInvalidSignature() { diff --git a/.Lib9c.Tests/Action/ActivateAccountTest.cs b/.Lib9c.Tests/Action/ActivateAccountTest.cs index 4006fe3059..33bf593c7d 100644 --- a/.Lib9c.Tests/Action/ActivateAccountTest.cs +++ b/.Lib9c.Tests/Action/ActivateAccountTest.cs @@ -62,33 +62,6 @@ public void Execute(bool invalid, bool pendingExist, bool alreadyActivated, Type } } - [Fact] - public void Rehearsal() - { - var nonce = new byte[] { 0x00, 0x01, 0x02, 0x03 }; - var privateKey = new PrivateKey(); - (ActivationKey activationKey, PendingActivationState pendingActivation) = - ActivationKey.Create(privateKey, nonce); - - ActivateAccount action = activationKey.CreateActivateAccount(nonce); - Address activatedAddress = default(Address).Derive(ActivationKey.DeriveKey); - IAccount nextState = action.Execute(new ActionContext() - { - PreviousState = new Account(MockState.Empty), - Signer = default, - Rehearsal = true, - BlockIndex = 1, - }); - - Assert.Equal( - ImmutableHashSet.Create( - activatedAddress, - pendingActivation.address - ), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void PlainValue() { diff --git a/.Lib9c.Tests/Action/AddActivatedAccount0Test.cs b/.Lib9c.Tests/Action/AddActivatedAccount0Test.cs index 051ba4fad3..50f35b07e3 100644 --- a/.Lib9c.Tests/Action/AddActivatedAccount0Test.cs +++ b/.Lib9c.Tests/Action/AddActivatedAccount0Test.cs @@ -39,35 +39,6 @@ public void Execute() ); } - [Fact] - public void Rehearsal() - { - var admin = new Address("8d9f76aF8Dc5A812aCeA15d8bf56E2F790F47fd7"); - var state = new Account( - MockState.Empty - .SetState(AdminState.Address, new AdminState(admin, 100).Serialize()) - .SetState(ActivatedAccountsState.Address, new ActivatedAccountsState().Serialize())); - var newComer = new Address("399bddF9F7B6d902ea27037B907B2486C9910730"); - var action = new AddActivatedAccount0(newComer); - - IAccount nextState = action.Execute(new ActionContext() - { - BlockIndex = 1, - Miner = default, - PreviousState = state, - Signer = admin, - Rehearsal = true, - }); - - Assert.Equal( - new[] - { - ActivatedAccountsState.Address, - }.ToImmutableHashSet(), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void ExecuteWithNonExistsAccounts() { diff --git a/.Lib9c.Tests/Action/AddActivatedAccountTest.cs b/.Lib9c.Tests/Action/AddActivatedAccountTest.cs index a9ca6661ea..081d6622a4 100644 --- a/.Lib9c.Tests/Action/AddActivatedAccountTest.cs +++ b/.Lib9c.Tests/Action/AddActivatedAccountTest.cs @@ -55,34 +55,6 @@ public void Execute(bool isAdmin, long blockIndex, bool alreadyActivated, Type e } } - [Fact] - public void Rehearsal() - { - var admin = new Address("8d9f76aF8Dc5A812aCeA15d8bf56E2F790F47fd7"); - var state = new Account( - MockState.Empty - .SetState(AdminState.Address, new AdminState(admin, 100).Serialize())); - var newComer = new Address("399bddF9F7B6d902ea27037B907B2486C9910730"); - var action = new AddActivatedAccount(newComer); - - IAccount nextState = action.Execute(new ActionContext() - { - BlockIndex = 1, - Miner = default, - PreviousState = state, - Signer = admin, - Rehearsal = true, - }); - - Assert.Equal( - new[] - { - newComer.Derive(ActivationKey.DeriveKey), - }.ToImmutableHashSet(), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void PlainValue() { diff --git a/.Lib9c.Tests/Action/Buy10Test.cs b/.Lib9c.Tests/Action/Buy10Test.cs index b8a156412b..3a3f550419 100644 --- a/.Lib9c.Tests/Action/Buy10Test.cs +++ b/.Lib9c.Tests/Action/Buy10Test.cs @@ -768,55 +768,6 @@ public void Execute_ReconfigureFungibleItem(params OrderData[] orderDataList) } } - [Fact] - public void Rehearsal() - { - PurchaseInfo purchaseInfo = new PurchaseInfo( - _orderId, - default, - _sellerAgentAddress, - _sellerAvatarAddress, - ItemSubType.Weapon, - new FungibleAssetValue(_goldCurrencyState.Currency, 10, 0) - ); - - var action = new Buy10 - { - buyerAvatarAddress = _buyerAvatarAddress, - purchaseInfos = new[] { purchaseInfo }, - }; - - var updatedAddresses = new List
() - { - _sellerAgentAddress, - _sellerAvatarAddress, - _sellerAvatarAddress.Derive(LegacyInventoryKey), - _sellerAvatarAddress.Derive(LegacyWorldInformationKey), - _sellerAvatarAddress.Derive(LegacyQuestListKey), - OrderDigestListState.DeriveAddress(_sellerAvatarAddress), - _buyerAgentAddress, - _buyerAvatarAddress, - _buyerAvatarAddress.Derive(LegacyInventoryKey), - _buyerAvatarAddress.Derive(LegacyWorldInformationKey), - _buyerAvatarAddress.Derive(LegacyQuestListKey), - Addresses.GoldCurrency, - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, _orderId), - OrderReceipt.DeriveAddress(_orderId), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _buyerAgentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void Execute_With_Testbed() { diff --git a/.Lib9c.Tests/Action/Buy11Test.cs b/.Lib9c.Tests/Action/Buy11Test.cs index 9ff4dfe34c..6a68862fb3 100644 --- a/.Lib9c.Tests/Action/Buy11Test.cs +++ b/.Lib9c.Tests/Action/Buy11Test.cs @@ -774,55 +774,6 @@ public void Execute_ReconfigureFungibleItem(params OrderData[] orderDataList) } } - [Fact] - public void Rehearsal() - { - PurchaseInfo purchaseInfo = new PurchaseInfo( - _orderId, - default, - _sellerAgentAddress, - _sellerAvatarAddress, - ItemSubType.Weapon, - new FungibleAssetValue(_goldCurrencyState.Currency, 10, 0) - ); - - var action = new Buy11 - { - buyerAvatarAddress = _buyerAvatarAddress, - purchaseInfos = new[] { purchaseInfo }, - }; - - var updatedAddresses = new List
() - { - _sellerAgentAddress, - _sellerAvatarAddress, - _sellerAvatarAddress.Derive(LegacyInventoryKey), - _sellerAvatarAddress.Derive(LegacyWorldInformationKey), - _sellerAvatarAddress.Derive(LegacyQuestListKey), - OrderDigestListState.DeriveAddress(_sellerAvatarAddress), - _buyerAgentAddress, - _buyerAvatarAddress, - _buyerAvatarAddress.Derive(LegacyInventoryKey), - _buyerAvatarAddress.Derive(LegacyWorldInformationKey), - _buyerAvatarAddress.Derive(LegacyQuestListKey), - Buy11.GetFeeStoreAddress(), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, _orderId), - OrderReceipt.DeriveAddress(_orderId), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _buyerAgentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void Execute_With_Testbed() { diff --git a/.Lib9c.Tests/Action/Buy8Test.cs b/.Lib9c.Tests/Action/Buy8Test.cs index fe13fbaad9..f968b3815b 100644 --- a/.Lib9c.Tests/Action/Buy8Test.cs +++ b/.Lib9c.Tests/Action/Buy8Test.cs @@ -550,55 +550,6 @@ public void Execute_ErrorCode(ErrorCodeMember errorCodeMember) } } - [Fact] - public void Rehearsal() - { - PurchaseInfo purchaseInfo = new PurchaseInfo( - _orderId, - default, - _sellerAgentAddress, - _sellerAvatarAddress, - ItemSubType.Weapon, - new FungibleAssetValue(_goldCurrencyState.Currency, 10, 0) - ); - - var action = new Buy8 - { - buyerAvatarAddress = _buyerAvatarAddress, - purchaseInfos = new[] { purchaseInfo }, - }; - - var updatedAddresses = new List
() - { - _sellerAgentAddress, - _sellerAvatarAddress, - _sellerAvatarAddress.Derive(LegacyInventoryKey), - _sellerAvatarAddress.Derive(LegacyWorldInformationKey), - _sellerAvatarAddress.Derive(LegacyQuestListKey), - OrderDigestListState.DeriveAddress(_sellerAvatarAddress), - _buyerAgentAddress, - _buyerAvatarAddress, - _buyerAvatarAddress.Derive(LegacyInventoryKey), - _buyerAvatarAddress.Derive(LegacyWorldInformationKey), - _buyerAvatarAddress.Derive(LegacyQuestListKey), - Addresses.GoldCurrency, - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, _orderId), - OrderReceipt.DeriveAddress(_orderId), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _buyerAgentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private (AvatarState AvatarState, AgentState AgentState) CreateAvatarState( Address agentAddress, Address avatarAddress) { diff --git a/.Lib9c.Tests/Action/Buy9Test.cs b/.Lib9c.Tests/Action/Buy9Test.cs index 9a11cefffc..b0da320384 100644 --- a/.Lib9c.Tests/Action/Buy9Test.cs +++ b/.Lib9c.Tests/Action/Buy9Test.cs @@ -649,55 +649,6 @@ public void Execute_ErrorCode(ErrorCodeMember errorCodeMember) } } - [Fact] - public void Rehearsal() - { - PurchaseInfo purchaseInfo = new PurchaseInfo( - _orderId, - default, - _sellerAgentAddress, - _sellerAvatarAddress, - ItemSubType.Weapon, - new FungibleAssetValue(_goldCurrencyState.Currency, 10, 0) - ); - - var action = new Buy9 - { - buyerAvatarAddress = _buyerAvatarAddress, - purchaseInfos = new[] { purchaseInfo }, - }; - - var updatedAddresses = new List
() - { - _sellerAgentAddress, - _sellerAvatarAddress, - _sellerAvatarAddress.Derive(LegacyInventoryKey), - _sellerAvatarAddress.Derive(LegacyWorldInformationKey), - _sellerAvatarAddress.Derive(LegacyQuestListKey), - OrderDigestListState.DeriveAddress(_sellerAvatarAddress), - _buyerAgentAddress, - _buyerAvatarAddress, - _buyerAvatarAddress.Derive(LegacyInventoryKey), - _buyerAvatarAddress.Derive(LegacyWorldInformationKey), - _buyerAvatarAddress.Derive(LegacyQuestListKey), - Addresses.GoldCurrency, - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, _orderId), - OrderReceipt.DeriveAddress(_orderId), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _buyerAgentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private (AvatarState AvatarState, AgentState AgentState) CreateAvatarState( Address agentAddress, Address avatarAddress) { diff --git a/.Lib9c.Tests/Action/CreateAvatar0Test.cs b/.Lib9c.Tests/Action/CreateAvatar0Test.cs index 7251dd2169..28ba4f4b14 100644 --- a/.Lib9c.Tests/Action/CreateAvatar0Test.cs +++ b/.Lib9c.Tests/Action/CreateAvatar0Test.cs @@ -215,64 +215,6 @@ public void ExecuteThrowAvatarIndexAlreadyUsedException(int index) ); } - [Fact] - public void Rehearsal() - { - var agentAddress = default(Address); - var avatarAddress = agentAddress.Derive("avatar"); - - var action = new CreateAvatar0() - { - avatarAddress = avatarAddress, - index = 0, - hair = 0, - ear = 0, - lens = 0, - tail = 0, - name = "test", - }; - -#pragma warning disable CS0618 - // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var gold = new GoldCurrencyState(Currency.Legacy("NCG", 2, null)); -#pragma warning restore CS0618 - var updatedAddresses = new List
() - { - agentAddress, - avatarAddress, - Addresses.GoldCurrency, - Addresses.Ranking, - }; - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - updatedAddresses.Add(slotAddress); - } - - var state = new Account(MockState.Empty) - .SetState(Addresses.Ranking, new RankingState0().Serialize()) - .SetState(GoldCurrencyState.Address, gold.Serialize()); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal( - updatedAddresses.ToImmutableHashSet(), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void SerializeWithDotnetAPI() { diff --git a/.Lib9c.Tests/Action/CreateAvatar10Test.cs b/.Lib9c.Tests/Action/CreateAvatar10Test.cs index 49a3b0f64d..2ee2d5cb53 100644 --- a/.Lib9c.Tests/Action/CreateAvatar10Test.cs +++ b/.Lib9c.Tests/Action/CreateAvatar10Test.cs @@ -230,71 +230,6 @@ public void ExecuteThrowAvatarIndexAlreadyUsedException(int index) ); } - [Theory] - [InlineData(0)] - [InlineData(1)] - [InlineData(2)] - public void Rehearsal(int index) - { - var agentAddress = default(Address); - var avatarAddress = _agentAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CreateAvatar2.DeriveFormat, - index - ) - ); - - var action = new CreateAvatar10() - { - index = index, - hair = 0, - ear = 0, - lens = 0, - tail = 0, - name = "test", - }; - -#pragma warning disable CS0618 - // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var gold = new GoldCurrencyState(Currency.Legacy("NCG", 2, null)); -#pragma warning restore CS0618 - var updatedAddresses = new List
() - { - agentAddress, - avatarAddress, - avatarAddress.Derive(LegacyInventoryKey), - avatarAddress.Derive(LegacyQuestListKey), - avatarAddress.Derive(LegacyWorldInformationKey), - }; - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - updatedAddresses.Add(slotAddress); - } - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal( - updatedAddresses.ToImmutableHashSet(), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void Serialize_With_DotnetAPI() { diff --git a/.Lib9c.Tests/Action/CreateAvatar2Test.cs b/.Lib9c.Tests/Action/CreateAvatar2Test.cs index 639b71e0a8..91ccc15972 100644 --- a/.Lib9c.Tests/Action/CreateAvatar2Test.cs +++ b/.Lib9c.Tests/Action/CreateAvatar2Test.cs @@ -230,72 +230,6 @@ public void ExecuteThrowAvatarIndexAlreadyUsedException(int index) ); } - [Theory] - [InlineData(0)] - [InlineData(1)] - [InlineData(2)] - public void Rehearsal(int index) - { - var agentAddress = default(Address); - var avatarAddress = _agentAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CreateAvatar2.DeriveFormat, - index - ) - ); - - var action = new CreateAvatar2() - { - index = index, - hair = 0, - ear = 0, - lens = 0, - tail = 0, - name = "test", - }; - -#pragma warning disable CS0618 - // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var gold = new GoldCurrencyState(Currency.Legacy("NCG", 2, null)); -#pragma warning restore CS0618 - var updatedAddresses = new List
() - { - agentAddress, - avatarAddress, - Addresses.GoldCurrency, - Addresses.Ranking, - }; - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - updatedAddresses.Add(slotAddress); - } - - var state = new Account(MockState.Empty) - .SetState(Addresses.Ranking, new RankingState0().Serialize()) - .SetState(GoldCurrencyState.Address, gold.Serialize()); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal( - updatedAddresses.ToImmutableHashSet(), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void SerializeWithDotnetAPI() { diff --git a/.Lib9c.Tests/Action/CreateAvatar3Test.cs b/.Lib9c.Tests/Action/CreateAvatar3Test.cs index 974cedc017..b136d04258 100644 --- a/.Lib9c.Tests/Action/CreateAvatar3Test.cs +++ b/.Lib9c.Tests/Action/CreateAvatar3Test.cs @@ -232,75 +232,6 @@ public void ExecuteThrowAvatarIndexAlreadyUsedException(int index) ); } - [Theory] - [InlineData(0)] - [InlineData(1)] - [InlineData(2)] - public void Rehearsal(int index) - { - var agentAddress = default(Address); - var avatarAddress = _agentAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CreateAvatar3.DeriveFormat, - index - ) - ); - - var action = new CreateAvatar3() - { - index = index, - hair = 0, - ear = 0, - lens = 0, - tail = 0, - name = "test", - }; - -#pragma warning disable CS0618 - // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var gold = new GoldCurrencyState(Currency.Legacy("NCG", 2, null)); -#pragma warning restore CS0618 - var updatedAddresses = new List
() - { - agentAddress, - avatarAddress, - Addresses.GoldCurrency, - Addresses.Ranking, - avatarAddress.Derive(LegacyInventoryKey), - avatarAddress.Derive(LegacyQuestListKey), - avatarAddress.Derive(LegacyWorldInformationKey), - }; - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - updatedAddresses.Add(slotAddress); - } - - var state = new Account(MockState.Empty) - .SetState(Addresses.Ranking, new RankingState0().Serialize()) - .SetState(GoldCurrencyState.Address, gold.Serialize()); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal( - updatedAddresses.ToImmutableHashSet(), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void Serialize_With_DotnetAPI() { diff --git a/.Lib9c.Tests/Action/CreateAvatar6Test.cs b/.Lib9c.Tests/Action/CreateAvatar6Test.cs index 97c1c04029..5909bfca91 100644 --- a/.Lib9c.Tests/Action/CreateAvatar6Test.cs +++ b/.Lib9c.Tests/Action/CreateAvatar6Test.cs @@ -232,75 +232,6 @@ public void ExecuteThrowAvatarIndexAlreadyUsedException(int index) ); } - [Theory] - [InlineData(0)] - [InlineData(1)] - [InlineData(2)] - public void Rehearsal(int index) - { - var agentAddress = default(Address); - var avatarAddress = _agentAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CreateAvatar2.DeriveFormat, - index - ) - ); - - var action = new CreateAvatar6() - { - index = index, - hair = 0, - ear = 0, - lens = 0, - tail = 0, - name = "test", - }; - -#pragma warning disable CS0618 - // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var gold = new GoldCurrencyState(Currency.Legacy("NCG", 2, null)); -#pragma warning restore CS0618 - var updatedAddresses = new List
() - { - agentAddress, - avatarAddress, - Addresses.GoldCurrency, - Addresses.Ranking, - avatarAddress.Derive(LegacyInventoryKey), - avatarAddress.Derive(LegacyQuestListKey), - avatarAddress.Derive(LegacyWorldInformationKey), - }; - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - updatedAddresses.Add(slotAddress); - } - - var state = new Account(MockState.Empty) - .SetState(Addresses.Ranking, new RankingState0().Serialize()) - .SetState(GoldCurrencyState.Address, gold.Serialize()); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal( - updatedAddresses.ToImmutableHashSet(), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void Serialize_With_DotnetAPI() { diff --git a/.Lib9c.Tests/Action/CreateAvatar7Test.cs b/.Lib9c.Tests/Action/CreateAvatar7Test.cs index a0f92fdf6d..39fb3a2277 100644 --- a/.Lib9c.Tests/Action/CreateAvatar7Test.cs +++ b/.Lib9c.Tests/Action/CreateAvatar7Test.cs @@ -213,71 +213,6 @@ public void ExecuteThrowAvatarIndexAlreadyUsedException(int index) ); } - [Theory] - [InlineData(0)] - [InlineData(1)] - [InlineData(2)] - public void Rehearsal(int index) - { - var agentAddress = default(Address); - var avatarAddress = _agentAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CreateAvatar2.DeriveFormat, - index - ) - ); - - var action = new CreateAvatar7() - { - index = index, - hair = 0, - ear = 0, - lens = 0, - tail = 0, - name = "test", - }; - -#pragma warning disable CS0618 - // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var gold = new GoldCurrencyState(Currency.Legacy("NCG", 2, null)); -#pragma warning restore CS0618 - var updatedAddresses = new List
() - { - agentAddress, - avatarAddress, - avatarAddress.Derive(LegacyInventoryKey), - avatarAddress.Derive(LegacyQuestListKey), - avatarAddress.Derive(LegacyWorldInformationKey), - }; - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - updatedAddresses.Add(slotAddress); - } - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal( - updatedAddresses.ToImmutableHashSet(), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void Serialize_With_DotnetAPI() { diff --git a/.Lib9c.Tests/Action/CreateAvatar8Test.cs b/.Lib9c.Tests/Action/CreateAvatar8Test.cs index c8d8fba49c..4d484beeb0 100644 --- a/.Lib9c.Tests/Action/CreateAvatar8Test.cs +++ b/.Lib9c.Tests/Action/CreateAvatar8Test.cs @@ -212,71 +212,6 @@ public void ExecuteThrowAvatarIndexAlreadyUsedException(int index) ); } - [Theory] - [InlineData(0)] - [InlineData(1)] - [InlineData(2)] - public void Rehearsal(int index) - { - var agentAddress = default(Address); - var avatarAddress = _agentAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CreateAvatar2.DeriveFormat, - index - ) - ); - - var action = new CreateAvatar8() - { - index = index, - hair = 0, - ear = 0, - lens = 0, - tail = 0, - name = "test", - }; - -#pragma warning disable CS0618 - // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var gold = new GoldCurrencyState(Currency.Legacy("NCG", 2, null)); -#pragma warning restore CS0618 - var updatedAddresses = new List
() - { - agentAddress, - avatarAddress, - avatarAddress.Derive(LegacyInventoryKey), - avatarAddress.Derive(LegacyQuestListKey), - avatarAddress.Derive(LegacyWorldInformationKey), - }; - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - updatedAddresses.Add(slotAddress); - } - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal( - updatedAddresses.ToImmutableHashSet(), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void Serialize_With_DotnetAPI() { diff --git a/.Lib9c.Tests/Action/CreateAvatar9Test.cs b/.Lib9c.Tests/Action/CreateAvatar9Test.cs index 32e9d10dc8..fb2da04642 100644 --- a/.Lib9c.Tests/Action/CreateAvatar9Test.cs +++ b/.Lib9c.Tests/Action/CreateAvatar9Test.cs @@ -239,71 +239,6 @@ public void ExecuteThrowAvatarIndexAlreadyUsedException(int index) ); } - [Theory] - [InlineData(0)] - [InlineData(1)] - [InlineData(2)] - public void Rehearsal(int index) - { - var agentAddress = default(Address); - var avatarAddress = _agentAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CreateAvatar2.DeriveFormat, - index - ) - ); - - var action = new CreateAvatar9() - { - index = index, - hair = 0, - ear = 0, - lens = 0, - tail = 0, - name = "test", - }; - -#pragma warning disable CS0618 - // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var gold = new GoldCurrencyState(Currency.Legacy("NCG", 2, null)); -#pragma warning restore CS0618 - var updatedAddresses = new List
() - { - agentAddress, - avatarAddress, - avatarAddress.Derive(LegacyInventoryKey), - avatarAddress.Derive(LegacyQuestListKey), - avatarAddress.Derive(LegacyWorldInformationKey), - }; - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - updatedAddresses.Add(slotAddress); - } - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal( - updatedAddresses.ToImmutableHashSet(), - nextState.Delta.UpdatedAddresses - ); - } - [Fact] public void Serialize_With_DotnetAPI() { diff --git a/.Lib9c.Tests/Action/DailyReward4Test.cs b/.Lib9c.Tests/Action/DailyReward4Test.cs index b428880f4e..4fa13eb6e7 100644 --- a/.Lib9c.Tests/Action/DailyReward4Test.cs +++ b/.Lib9c.Tests/Action/DailyReward4Test.cs @@ -118,33 +118,5 @@ public void ExecuteThrowFailedLoadStateException() }) ); } - - [Fact] - public void Rehearsal() - { - var action = new DailyReward4 - { - avatarAddress = _avatarAddress, - }; - - var nextState = action.Execute(new ActionContext - { - BlockIndex = 0, - PreviousState = new Account(MockState.Empty), - RandomSeed = 0, - Rehearsal = true, - Signer = _agentAddress, - }); - - var updatedAddresses = new List
() - { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/DailyReward5Test.cs b/.Lib9c.Tests/Action/DailyReward5Test.cs index 2a43430b37..0fdd70f9ea 100644 --- a/.Lib9c.Tests/Action/DailyReward5Test.cs +++ b/.Lib9c.Tests/Action/DailyReward5Test.cs @@ -58,31 +58,6 @@ public DailyReward5Test(ITestOutputHelper outputHelper) .SetState(_avatarAddress, avatarState.Serialize()); } - [Fact] - public void Rehearsal() - { - var action = new DailyReward5 - { - avatarAddress = _avatarAddress, - }; - - var nextState = action.Execute(new ActionContext - { - BlockIndex = 0, - PreviousState = new Account(MockState.Empty), - RandomSeed = 0, - Rehearsal = true, - Signer = _agentAddress, - }); - - var updatedAddresses = new List
- { - _avatarAddress, - }; - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(1)] [InlineData(2)] diff --git a/.Lib9c.Tests/Action/DailyReward6Test.cs b/.Lib9c.Tests/Action/DailyReward6Test.cs index 97bd465914..1b344d4d82 100644 --- a/.Lib9c.Tests/Action/DailyReward6Test.cs +++ b/.Lib9c.Tests/Action/DailyReward6Test.cs @@ -60,34 +60,6 @@ public DailyReward6Test(ITestOutputHelper outputHelper) .SetState(_avatarAddress, avatarState.Serialize()); } - [Fact] - public void Rehearsal() - { - var action = new DailyReward6 - { - avatarAddress = _avatarAddress, - }; - - var nextState = action.Execute(new ActionContext - { - BlockIndex = 0, - PreviousState = new Account(MockState.Empty), - RandomSeed = 0, - Rehearsal = true, - Signer = _agentAddress, - }); - - var updatedAddresses = new List
- { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(1)] [InlineData(2)] diff --git a/.Lib9c.Tests/Action/DailyRewardTest.cs b/.Lib9c.Tests/Action/DailyRewardTest.cs index 8c00f14f11..d07eac4d56 100644 --- a/.Lib9c.Tests/Action/DailyRewardTest.cs +++ b/.Lib9c.Tests/Action/DailyRewardTest.cs @@ -58,27 +58,6 @@ public DailyRewardTest(ITestOutputHelper outputHelper) .SetState(_avatarAddress, avatarState.Serialize()); } - [Fact] - public void Rehearsal() - { - var action = new DailyReward - { - avatarAddress = _avatarAddress, - }; - - var nextState = action.Execute(new ActionContext - { - BlockIndex = 0, - PreviousState = new Account(MockState.Empty), - RandomSeed = 0, - Rehearsal = true, - Signer = _agentAddress, - }); - - var updatedAddress = Assert.Single(nextState.Delta.UpdatedAddresses); - Assert.Equal(_avatarAddress, updatedAddress); - } - [Theory] [InlineData(true)] [InlineData(false)] diff --git a/.Lib9c.Tests/Action/HackAndSlash0Test.cs b/.Lib9c.Tests/Action/HackAndSlash0Test.cs index 76da9db97e..6c64e632a4 100644 --- a/.Lib9c.Tests/Action/HackAndSlash0Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash0Test.cs @@ -567,42 +567,6 @@ public void ExecuteThrowNotEnoughActionPointException() SerializeException(exec); } - [Fact] - public void Rehearsal() - { - var action = new HackAndSlash0() - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - avatarAddress = _avatarAddress, - WeeklyArenaAddress = _weeklyArenaState.address, - RankingMapAddress = _rankingMapAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _weeklyArenaState.address, - _rankingMapAddress, - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void SerializeWithDotnetAPI() { diff --git a/.Lib9c.Tests/Action/HackAndSlash10Test.cs b/.Lib9c.Tests/Action/HackAndSlash10Test.cs index 6e8f371f6b..a05f433b14 100644 --- a/.Lib9c.Tests/Action/HackAndSlash10Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash10Test.cs @@ -1102,44 +1102,6 @@ x.item is IFungibleItem ownedFungibleItem && Assert.InRange(totalCount, totalMin, totalMax); } - [Fact] - public void Rehearsal() - { - var action = new HackAndSlash10 - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - playCount = 1, - avatarAddress = _avatarAddress, - rankingMapAddress = _rankingMapAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _rankingMapAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private static void SerializeException(Exception exec) where T : Exception { diff --git a/.Lib9c.Tests/Action/HackAndSlash11Test.cs b/.Lib9c.Tests/Action/HackAndSlash11Test.cs index 9887b3cf9b..136de735b0 100644 --- a/.Lib9c.Tests/Action/HackAndSlash11Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash11Test.cs @@ -1048,42 +1048,6 @@ x.item is IFungibleItem ownedFungibleItem && Assert.InRange(totalCount, totalMin, totalMax); } - [Fact] - public void Rehearsal() - { - var action = new HackAndSlash11 - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - playCount = 1, - avatarAddress = _avatarAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private static void SerializeException(Exception exec) where T : Exception { diff --git a/.Lib9c.Tests/Action/HackAndSlash12Test.cs b/.Lib9c.Tests/Action/HackAndSlash12Test.cs index 0b81fb66c6..95c9fe5f39 100644 --- a/.Lib9c.Tests/Action/HackAndSlash12Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash12Test.cs @@ -1044,42 +1044,6 @@ x.item is IFungibleItem ownedFungibleItem && Assert.InRange(totalCount, totalMin, totalMax); } - [Fact] - public void Rehearsal() - { - var action = new HackAndSlash12 - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - playCount = 1, - avatarAddress = _avatarAddress, - }; - - var updatedAddresses = new List
- { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private static void SerializeException(Exception exec) where T : Exception { diff --git a/.Lib9c.Tests/Action/HackAndSlash13Test.cs b/.Lib9c.Tests/Action/HackAndSlash13Test.cs index 049c39f8a1..1194844368 100644 --- a/.Lib9c.Tests/Action/HackAndSlash13Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash13Test.cs @@ -1083,41 +1083,6 @@ x.item is IFungibleItem ownedFungibleItem && Assert.InRange(totalCount, totalMin, totalMax); } - [Fact] - public void Rehearsal() - { - var action = new HackAndSlash13 - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - avatarAddress = _avatarAddress, - }; - - var updatedAddresses = new List
- { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private static void SerializeException(Exception exec) where T : Exception { diff --git a/.Lib9c.Tests/Action/HackAndSlash2Test.cs b/.Lib9c.Tests/Action/HackAndSlash2Test.cs index b3a70bd2cf..cc18f27730 100644 --- a/.Lib9c.Tests/Action/HackAndSlash2Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash2Test.cs @@ -576,42 +576,6 @@ public void ExecuteThrowNotEnoughActionPointException() SerializeException(exec); } - [Fact] - public void Rehearsal() - { - var action = new HackAndSlash2() - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - avatarAddress = _avatarAddress, - WeeklyArenaAddress = _weeklyArenaState.address, - RankingMapAddress = _rankingMapAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _weeklyArenaState.address, - _rankingMapAddress, - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void SerializeWithDotnetAPI() { diff --git a/.Lib9c.Tests/Action/HackAndSlash6Test.cs b/.Lib9c.Tests/Action/HackAndSlash6Test.cs index fc05276a55..b104abcfd7 100644 --- a/.Lib9c.Tests/Action/HackAndSlash6Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash6Test.cs @@ -786,45 +786,6 @@ public void ExecuteThrowNotEnoughActionPointException() SerializeException(exec); } - [Fact] - public void Rehearsal() - { - var action = new HackAndSlash6 - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - avatarAddress = _avatarAddress, - WeeklyArenaAddress = _weeklyArenaState.address, - RankingMapAddress = _rankingMapAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _weeklyArenaState.address, - _rankingMapAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private static void SerializeException(Exception exec) where T : Exception { diff --git a/.Lib9c.Tests/Action/HackAndSlash7Test.cs b/.Lib9c.Tests/Action/HackAndSlash7Test.cs index cf656faddc..0250496732 100644 --- a/.Lib9c.Tests/Action/HackAndSlash7Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash7Test.cs @@ -849,45 +849,6 @@ public void ExecuteThrowNotEnoughActionPointException() SerializeException(exec); } - [Fact] - public void Rehearsal() - { - var action = new HackAndSlash7 - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - avatarAddress = _avatarAddress, - WeeklyArenaAddress = _weeklyArenaState.address, - RankingMapAddress = _rankingMapAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _weeklyArenaState.address, - _rankingMapAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private static void SerializeException(Exception exec) where T : Exception { diff --git a/.Lib9c.Tests/Action/HackAndSlash8Test.cs b/.Lib9c.Tests/Action/HackAndSlash8Test.cs index 38ff5fcae7..034c6e71db 100644 --- a/.Lib9c.Tests/Action/HackAndSlash8Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash8Test.cs @@ -832,43 +832,6 @@ public void ExecuteThrowNotEnoughActionPointException() SerializeException(exec); } - [Fact] - public void Rehearsal() - { - var action = new HackAndSlash8 - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - avatarAddress = _avatarAddress, - rankingMapAddress = _rankingMapAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _rankingMapAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private static void SerializeException(Exception exec) where T : Exception { diff --git a/.Lib9c.Tests/Action/HackAndSlash9Test.cs b/.Lib9c.Tests/Action/HackAndSlash9Test.cs index 4081e2deea..18ba2738db 100644 --- a/.Lib9c.Tests/Action/HackAndSlash9Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash9Test.cs @@ -1125,44 +1125,6 @@ x.item is IFungibleItem ownedFungibleItem && Assert.InRange(totalCount, totalMin, totalMax); } - [Fact] - public void Rehearsal() - { - var action = new HackAndSlash9 - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - playCount = 1, - avatarAddress = _avatarAddress, - rankingMapAddress = _rankingMapAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _rankingMapAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private static void SerializeException(Exception exec) where T : Exception { diff --git a/.Lib9c.Tests/Action/ItemEnhancement0Test.cs b/.Lib9c.Tests/Action/ItemEnhancement0Test.cs index 0a984a61df..c727b0d247 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement0Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement0Test.cs @@ -473,49 +473,5 @@ public void ResultModelDeterministic() Assert.Equal(result.Serialize(), result2.Serialize()); } - - [Fact] - public void Rehearsal() - { - var agentAddress = default(Address); - var avatarAddress = agentAddress.Derive("avatar"); - var slotAddress = - avatarAddress.Derive(string.Format(CultureInfo.InvariantCulture, CombinationSlotState.DeriveFormat, 0)); - - var action = new ItemEnhancement0() - { - itemId = default, - materialIds = new[] { Guid.NewGuid() }, - avatarAddress = avatarAddress, - slotIndex = 0, - }; - -#pragma warning disable CS0618 - // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var gold = new GoldCurrencyState(Currency.Legacy("NCG", 2, null)); -#pragma warning restore CS0618 - - var updatedAddresses = new List
() - { - agentAddress, - avatarAddress, - slotAddress, - Addresses.GoldCurrency, - Addresses.Blacksmith, - }; - - var state = new Account(MockState.Empty) - .SetState(GoldCurrencyState.Address, gold.Serialize()); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/ItemEnhancement10Test.cs b/.Lib9c.Tests/Action/ItemEnhancement10Test.cs index fa4858986d..7b99927584 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement10Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement10Test.cs @@ -197,48 +197,6 @@ public void Execute(int level, int expectedGold, bool backward) Assert.Equal(costRow.Cost, slotResult.gold); } - [Fact] - public void Rehearsal() - { - var action = new ItemEnhancement10() - { - itemId = default, - materialId = default, - avatarAddress = _avatarAddress, - slotIndex = 0, - }; - - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - slotAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - ItemEnhancement10.GetFeeStoreAddress(), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void Execute_ActionObsoletedException() { diff --git a/.Lib9c.Tests/Action/ItemEnhancement2Test.cs b/.Lib9c.Tests/Action/ItemEnhancement2Test.cs index 6fb8fd0268..d7f6c9864d 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement2Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement2Test.cs @@ -438,49 +438,5 @@ public void ResultModelDeterministic() Assert.Equal(result.Serialize(), result2.Serialize()); } - - [Fact] - public void Rehearsal() - { - var agentAddress = default(Address); - var avatarAddress = agentAddress.Derive("avatar"); - var slotAddress = - avatarAddress.Derive(string.Format(CultureInfo.InvariantCulture, CombinationSlotState.DeriveFormat, 0)); - - var action = new ItemEnhancement2() - { - itemId = default, - materialId = Guid.NewGuid(), - avatarAddress = avatarAddress, - slotIndex = 0, - }; - -#pragma warning disable CS0618 - // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var gold = new GoldCurrencyState(Currency.Legacy("NCG", 2, null)); -#pragma warning restore CS0618 - - var updatedAddresses = new List
() - { - agentAddress, - avatarAddress, - slotAddress, - Addresses.GoldCurrency, - Addresses.Blacksmith, - }; - - var state = new Account(MockState.Empty) - .SetState(GoldCurrencyState.Address, gold.Serialize()); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/ItemEnhancement7Test.cs b/.Lib9c.Tests/Action/ItemEnhancement7Test.cs index 54c3426fca..ba9891dc3d 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement7Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement7Test.cs @@ -165,47 +165,5 @@ public void Execute(int level, int expectedLevel, int expectedGold, bool backwar Assert.Equal(costRow.Cost, slotResult.gold); } - - [Fact] - public void Rehearsal() - { - var action = new ItemEnhancement7() - { - itemId = default, - materialId = default, - avatarAddress = _avatarAddress, - slotIndex = 0, - }; - - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - slotAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.Blacksmith, - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/ItemEnhancement8Test.cs b/.Lib9c.Tests/Action/ItemEnhancement8Test.cs index f46c0044b2..a6dea2ac17 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement8Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement8Test.cs @@ -165,47 +165,5 @@ public void Execute(int level, int expectedLevel, int expectedGold, bool backwar Assert.Equal(costRow.Cost, slotResult.gold); } - - [Fact] - public void Rehearsal() - { - var action = new ItemEnhancement8 - { - itemId = default, - materialId = default, - avatarAddress = _avatarAddress, - slotIndex = 0, - }; - - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - slotAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.Blacksmith, - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/ItemEnhancement9Test.cs b/.Lib9c.Tests/Action/ItemEnhancement9Test.cs index 70c29fdd2c..a6005c80eb 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement9Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement9Test.cs @@ -190,47 +190,5 @@ public void Execute(int level, int expectedGold, bool backward) Assert.Equal(preItemUsable.ItemId, resultEquipment.ItemId); Assert.Equal(costRow.Cost, slotResult.gold); } - - [Fact] - public void Rehearsal() - { - var action = new ItemEnhancement9() - { - itemId = default, - materialId = default, - avatarAddress = _avatarAddress, - slotIndex = 0, - }; - - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - slotAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.Blacksmith, - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/RankingBattle10Test.cs b/.Lib9c.Tests/Action/RankingBattle10Test.cs index 0a9b613ae2..e142848af9 100644 --- a/.Lib9c.Tests/Action/RankingBattle10Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle10Test.cs @@ -456,40 +456,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() }); } - [Fact] - public void Rehearsal() - { - var action = new RankingBattle10 - { - avatarAddress = _avatar1Address, - enemyAddress = _avatar2Address, - weeklyArenaAddress = _weeklyArenaAddress, - costumeIds = new List(), - equipmentIds = new List(), - }; - - var updatedAddresses = new List
- { - _avatar1Address, - _weeklyArenaAddress, - _avatar1Address.Derive(LegacyInventoryKey), - _avatar1Address.Derive(LegacyWorldInformationKey), - _avatar1Address.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext - { - PreviousState = state, - Signer = _agent1Address, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(ItemSubType.Weapon, GameConfig.MaxEquipmentSlotCount.Weapon)] [InlineData(ItemSubType.Armor, GameConfig.MaxEquipmentSlotCount.Armor)] diff --git a/.Lib9c.Tests/Action/RankingBattle11Test.cs b/.Lib9c.Tests/Action/RankingBattle11Test.cs index 05930913ec..112d594f6f 100644 --- a/.Lib9c.Tests/Action/RankingBattle11Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle11Test.cs @@ -658,40 +658,6 @@ public void Execute_Throw_NotEnoughAvatarLevelException(int avatarLevel) } } - [Fact] - public void Rehearsal() - { - var action = new RankingBattle11 - { - avatarAddress = _avatar1Address, - enemyAddress = _avatar2Address, - weeklyArenaAddress = _weeklyArenaAddress, - costumeIds = new List(), - equipmentIds = new List(), - }; - - var updatedAddresses = new List
- { - _avatar1Address, - _weeklyArenaAddress, - _avatar1Address.Derive(LegacyInventoryKey), - _avatar1Address.Derive(LegacyWorldInformationKey), - _avatar1Address.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext - { - PreviousState = state, - Signer = _agent1Address, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(ItemSubType.Weapon, GameConfig.MaxEquipmentSlotCount.Weapon)] [InlineData(ItemSubType.Armor, GameConfig.MaxEquipmentSlotCount.Armor)] diff --git a/.Lib9c.Tests/Action/RankingBattle5Test.cs b/.Lib9c.Tests/Action/RankingBattle5Test.cs index 3dc4255b8b..31eb8a4b63 100644 --- a/.Lib9c.Tests/Action/RankingBattle5Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle5Test.cs @@ -420,41 +420,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() }); } - [Fact] - public void Rehearsal() - { - var action = new RankingBattle5 - { - AvatarAddress = _avatar1Address, - EnemyAddress = _avatar2Address, - WeeklyArenaAddress = _weeklyArenaAddress, - costumeIds = new List(), - equipmentIds = new List(), - consumableIds = new List(), - }; - - var updatedAddresses = new List
() - { - _avatar1Address, - _weeklyArenaAddress, - _avatar1Address.Derive(LegacyInventoryKey), - _avatar1Address.Derive(LegacyWorldInformationKey), - _avatar1Address.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agent1Address, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void SerializeWithDotnetAPI() { diff --git a/.Lib9c.Tests/Action/RankingBattle6Test.cs b/.Lib9c.Tests/Action/RankingBattle6Test.cs index 6cefff07b3..870870629d 100644 --- a/.Lib9c.Tests/Action/RankingBattle6Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle6Test.cs @@ -420,41 +420,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() }); } - [Fact] - public void Rehearsal() - { - var action = new RankingBattle6 - { - avatarAddress = _avatar1Address, - enemyAddress = _avatar2Address, - weeklyArenaAddress = _weeklyArenaAddress, - costumeIds = new List(), - equipmentIds = new List(), - consumableIds = new List(), - }; - - var updatedAddresses = new List
() - { - _avatar1Address, - _weeklyArenaAddress, - _avatar1Address.Derive(LegacyInventoryKey), - _avatar1Address.Derive(LegacyWorldInformationKey), - _avatar1Address.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agent1Address, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void SerializeWithDotnetAPI() { diff --git a/.Lib9c.Tests/Action/RankingBattle7Test.cs b/.Lib9c.Tests/Action/RankingBattle7Test.cs index f893b4deed..6a28b39206 100644 --- a/.Lib9c.Tests/Action/RankingBattle7Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle7Test.cs @@ -420,41 +420,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() }); } - [Fact] - public void Rehearsal() - { - var action = new RankingBattle7 - { - avatarAddress = _avatar1Address, - enemyAddress = _avatar2Address, - weeklyArenaAddress = _weeklyArenaAddress, - costumeIds = new List(), - equipmentIds = new List(), - consumableIds = new List(), - }; - - var updatedAddresses = new List
() - { - _avatar1Address, - _weeklyArenaAddress, - _avatar1Address.Derive(LegacyInventoryKey), - _avatar1Address.Derive(LegacyWorldInformationKey), - _avatar1Address.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agent1Address, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void SerializeWithDotnetAPI() { diff --git a/.Lib9c.Tests/Action/RankingBattle8Test.cs b/.Lib9c.Tests/Action/RankingBattle8Test.cs index aa01036a0f..f8c710ad08 100644 --- a/.Lib9c.Tests/Action/RankingBattle8Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle8Test.cs @@ -457,41 +457,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() }); } - [Fact] - public void Rehearsal() - { - var action = new RankingBattle8 - { - avatarAddress = _avatar1Address, - enemyAddress = _avatar2Address, - weeklyArenaAddress = _weeklyArenaAddress, - costumeIds = new List(), - equipmentIds = new List(), - consumableIds = new List(), - }; - - var updatedAddresses = new List
() - { - _avatar1Address, - _weeklyArenaAddress, - _avatar1Address.Derive(LegacyInventoryKey), - _avatar1Address.Derive(LegacyWorldInformationKey), - _avatar1Address.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agent1Address, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(ItemSubType.Weapon, GameConfig.MaxEquipmentSlotCount.Weapon)] [InlineData(ItemSubType.Armor, GameConfig.MaxEquipmentSlotCount.Armor)] diff --git a/.Lib9c.Tests/Action/RankingBattle9Test.cs b/.Lib9c.Tests/Action/RankingBattle9Test.cs index 28ab7acfba..181bf157ce 100644 --- a/.Lib9c.Tests/Action/RankingBattle9Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle9Test.cs @@ -457,41 +457,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() }); } - [Fact] - public void Rehearsal() - { - var action = new RankingBattle9 - { - avatarAddress = _avatar1Address, - enemyAddress = _avatar2Address, - weeklyArenaAddress = _weeklyArenaAddress, - costumeIds = new List(), - equipmentIds = new List(), - consumableIds = new List(), - }; - - var updatedAddresses = new List
() - { - _avatar1Address, - _weeklyArenaAddress, - _avatar1Address.Derive(LegacyInventoryKey), - _avatar1Address.Derive(LegacyWorldInformationKey), - _avatar1Address.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agent1Address, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(ItemSubType.Weapon, GameConfig.MaxEquipmentSlotCount.Weapon)] [InlineData(ItemSubType.Armor, GameConfig.MaxEquipmentSlotCount.Armor)] diff --git a/.Lib9c.Tests/Action/Sell10Test.cs b/.Lib9c.Tests/Action/Sell10Test.cs index a52c45926e..16819ff046 100644 --- a/.Lib9c.Tests/Action/Sell10Test.cs +++ b/.Lib9c.Tests/Action/Sell10Test.cs @@ -413,46 +413,5 @@ public void Execute_Throw_DuplicateOrderIdException() RandomSeed = 0, })); } - - [Fact] - public void Rehearsal() - { - Guid tradableId = Guid.NewGuid(); - Guid orderId = Guid.NewGuid(); - var action = new Sell10 - { - sellerAvatarAddress = _avatarAddress, - tradableId = tradableId, - count = 1, - price = _currency * ProductPrice, - itemSubType = ItemSubType.Weapon, - orderId = orderId, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.GetItemAddress(tradableId), - Order.DeriveAddress(orderId), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, orderId), - OrderDigestListState.DeriveAddress(_avatarAddress), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/Sell11Test.cs b/.Lib9c.Tests/Action/Sell11Test.cs index b6dba51038..3fa8503515 100644 --- a/.Lib9c.Tests/Action/Sell11Test.cs +++ b/.Lib9c.Tests/Action/Sell11Test.cs @@ -461,46 +461,5 @@ public void Execute_Throw_DuplicateOrderIdException() RandomSeed = 0, })); } - - [Fact] - public void Rehearsal() - { - Guid tradableId = Guid.NewGuid(); - Guid orderId = Guid.NewGuid(); - var action = new Sell11 - { - sellerAvatarAddress = _avatarAddress, - tradableId = tradableId, - count = 1, - price = _currency * ProductPrice, - itemSubType = ItemSubType.Weapon, - orderId = orderId, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.GetItemAddress(tradableId), - Order.DeriveAddress(orderId), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, orderId), - OrderDigestListState.DeriveAddress(_avatarAddress), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/Sell7Test.cs b/.Lib9c.Tests/Action/Sell7Test.cs index 35dc1b1eb5..8db0beadec 100644 --- a/.Lib9c.Tests/Action/Sell7Test.cs +++ b/.Lib9c.Tests/Action/Sell7Test.cs @@ -436,46 +436,5 @@ public void Execute_Throw_DuplicateOrderIdException() RandomSeed = 0, })); } - - [Fact] - public void Rehearsal() - { - Guid tradableId = Guid.NewGuid(); - Guid orderId = Guid.NewGuid(); - var action = new Sell7 - { - sellerAvatarAddress = _avatarAddress, - tradableId = tradableId, - count = 1, - price = _currency * ProductPrice, - itemSubType = ItemSubType.Weapon, - orderId = orderId, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.GetItemAddress(tradableId), - Order.DeriveAddress(orderId), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, orderId), - OrderDigestListState.DeriveAddress(_avatarAddress), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/Sell8Test.cs b/.Lib9c.Tests/Action/Sell8Test.cs index 3d7b876a14..04299495e2 100644 --- a/.Lib9c.Tests/Action/Sell8Test.cs +++ b/.Lib9c.Tests/Action/Sell8Test.cs @@ -429,46 +429,5 @@ public void Execute_Throw_DuplicateOrderIdException() RandomSeed = 0, })); } - - [Fact] - public void Rehearsal() - { - Guid tradableId = Guid.NewGuid(); - Guid orderId = Guid.NewGuid(); - var action = new Sell8 - { - sellerAvatarAddress = _avatarAddress, - tradableId = tradableId, - count = 1, - price = _currency * ProductPrice, - itemSubType = ItemSubType.Weapon, - orderId = orderId, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.GetItemAddress(tradableId), - Order.DeriveAddress(orderId), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, orderId), - OrderDigestListState.DeriveAddress(_avatarAddress), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/Sell9Test.cs b/.Lib9c.Tests/Action/Sell9Test.cs index ffd3f315e6..295387c8d3 100644 --- a/.Lib9c.Tests/Action/Sell9Test.cs +++ b/.Lib9c.Tests/Action/Sell9Test.cs @@ -413,46 +413,5 @@ public void Execute_Throw_DuplicateOrderIdException() RandomSeed = 0, })); } - - [Fact] - public void Rehearsal() - { - Guid tradableId = Guid.NewGuid(); - Guid orderId = Guid.NewGuid(); - var action = new Sell9 - { - sellerAvatarAddress = _avatarAddress, - tradableId = tradableId, - count = 1, - price = _currency * ProductPrice, - itemSubType = ItemSubType.Weapon, - orderId = orderId, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.GetItemAddress(tradableId), - Order.DeriveAddress(orderId), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, orderId), - OrderDigestListState.DeriveAddress(_avatarAddress), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/SellCancellation7Test.cs b/.Lib9c.Tests/Action/SellCancellation7Test.cs index bc8ea89e6a..e7ff546836 100644 --- a/.Lib9c.Tests/Action/SellCancellation7Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation7Test.cs @@ -452,41 +452,6 @@ public void Execute_Throw_InvalidAddressException(bool useAgentAddress, bool use ); } - [Fact] - public void Rehearsal() - { - var action = new SellCancellation7() - { - sellerAvatarAddress = _avatarAddress, - orderId = default, - itemSubType = ItemSubType.Weapon, - tradableId = default, - }; - - var updatedAddresses = new List
() - { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, default(Guid)), - OrderDigestListState.DeriveAddress(_avatarAddress), - Addresses.GetItemAddress(default), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void PlainValue() { diff --git a/.Lib9c.Tests/Action/SellCancellation8Test.cs b/.Lib9c.Tests/Action/SellCancellation8Test.cs index ac2c937697..f44991a04d 100644 --- a/.Lib9c.Tests/Action/SellCancellation8Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation8Test.cs @@ -473,41 +473,6 @@ public void Execute_Throw_InvalidAddressException(bool useAgentAddress, bool use ); } - [Fact] - public void Rehearsal() - { - var action = new SellCancellation8() - { - sellerAvatarAddress = _avatarAddress, - orderId = default, - itemSubType = ItemSubType.Weapon, - tradableId = default, - }; - - var updatedAddresses = new List
() - { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, default(Guid)), - OrderDigestListState.DeriveAddress(_avatarAddress), - Addresses.GetItemAddress(default), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void PlainValue() { diff --git a/.Lib9c.Tests/Action/SellCancellationTest.cs b/.Lib9c.Tests/Action/SellCancellationTest.cs index 8d78836f14..97c76c6170 100644 --- a/.Lib9c.Tests/Action/SellCancellationTest.cs +++ b/.Lib9c.Tests/Action/SellCancellationTest.cs @@ -508,41 +508,6 @@ public void Execute_Throw_InvalidAddressException(bool useAgentAddress, bool use ); } - [Fact] - public void Rehearsal() - { - var action = new SellCancellation() - { - sellerAvatarAddress = _avatarAddress, - orderId = default, - itemSubType = ItemSubType.Weapon, - tradableId = default, - }; - - var updatedAddresses = new List
() - { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, default(Guid)), - OrderDigestListState.DeriveAddress(_avatarAddress), - Addresses.GetItemAddress(default), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void PlainValue() { diff --git a/.Lib9c.Tests/Action/SellTest.cs b/.Lib9c.Tests/Action/SellTest.cs index 7aaea10de4..22255b68fd 100644 --- a/.Lib9c.Tests/Action/SellTest.cs +++ b/.Lib9c.Tests/Action/SellTest.cs @@ -460,46 +460,5 @@ public void Execute_Throw_DuplicateOrderIdException() RandomSeed = 0, })); } - - [Fact] - public void Rehearsal() - { - Guid tradableId = Guid.NewGuid(); - Guid orderId = Guid.NewGuid(); - var action = new Sell - { - sellerAvatarAddress = _avatarAddress, - tradableId = tradableId, - count = 1, - price = _currency * ProductPrice, - itemSubType = ItemSubType.Weapon, - orderId = orderId, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.GetItemAddress(tradableId), - Order.DeriveAddress(orderId), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, orderId), - OrderDigestListState.DeriveAddress(_avatarAddress), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/TransferAsset2Test.cs b/.Lib9c.Tests/Action/TransferAsset2Test.cs index b72d090c97..e3257f6ce7 100644 --- a/.Lib9c.Tests/Action/TransferAsset2Test.cs +++ b/.Lib9c.Tests/Action/TransferAsset2Test.cs @@ -254,35 +254,6 @@ public void ExecuteWithUnactivatedRecipient() Assert.Equal(_recipient, ex.Recipient); } - [Fact] - public void Rehearsal() - { - var action = new TransferAsset2( - sender: _sender, - recipient: _recipient, - amount: _currency * 100 - ); - - IAccount nextState = action.Execute(new ActionContext() - { - PreviousState = new Account(MockState.Empty), - Signer = default, - Rehearsal = true, - BlockIndex = 1, - }); - - Assert.Equal( - ImmutableHashSet.Create( - _sender, - _recipient - ), - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item1).ToImmutableHashSet() - ); - Assert.Equal( - new[] { _currency }, - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item2).ToImmutableHashSet()); - } - [Theory] [InlineData(null)] [InlineData("Nine Chronicles")] diff --git a/.Lib9c.Tests/Action/TransferAsset3Test.cs b/.Lib9c.Tests/Action/TransferAsset3Test.cs index 8ee2eed304..00e49e17d9 100644 --- a/.Lib9c.Tests/Action/TransferAsset3Test.cs +++ b/.Lib9c.Tests/Action/TransferAsset3Test.cs @@ -277,35 +277,6 @@ public void ExecuteWithUnactivatedRecipient() Assert.Equal(_recipient, ex.Recipient); } - [Fact] - public void Rehearsal() - { - var action = new TransferAsset3( - sender: _sender, - recipient: _recipient, - amount: _currency * 100 - ); - - IAccount nextState = action.Execute(new ActionContext() - { - PreviousState = new Account(MockState.Empty), - Signer = default, - Rehearsal = true, - BlockIndex = 1, - }); - - Assert.Equal( - ImmutableHashSet.Create( - _sender, - _recipient - ), - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item1).ToImmutableHashSet() - ); - Assert.Equal( - new[] { _currency }, - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item2).ToImmutableHashSet()); - } - [Theory] [InlineData(null)] [InlineData("Nine Chronicles")] diff --git a/.Lib9c.Tests/Action/TransferAsset4Test.cs b/.Lib9c.Tests/Action/TransferAsset4Test.cs index 528bac61bc..089638deef 100644 --- a/.Lib9c.Tests/Action/TransferAsset4Test.cs +++ b/.Lib9c.Tests/Action/TransferAsset4Test.cs @@ -197,36 +197,6 @@ public void Execute_Throw_InvalidTransferMinterException(bool minterAsSender) Assert.Equal(_recipient, ex.Recipient); } - [Fact] - public void Rehearsal() - { - var action = new TransferAsset4( - sender: _sender, - recipient: _recipient, - amount: _currency * 100 - ); - - var context = new ActionContext(); - IAccount nextState = action.Execute(new ActionContext() - { - PreviousState = new Account(MockState.Empty).MintAsset(context, _sender, Currencies.Mead * 1), - Signer = default, - Rehearsal = true, - BlockIndex = 1, - }); - - Assert.Equal( - ImmutableHashSet.Create( - _sender, - _recipient - ), - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item1).ToImmutableHashSet() - ); - Assert.Equal( - new[] { _currency, Currencies.Mead, }.ToImmutableHashSet(), - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item2).ToImmutableHashSet()); - } - [Theory] [InlineData(null)] [InlineData("Nine Chronicles")] diff --git a/.Lib9c.Tests/Action/TransferAssetTest.cs b/.Lib9c.Tests/Action/TransferAssetTest.cs index b2a2a52f87..9b8ed9a1f1 100644 --- a/.Lib9c.Tests/Action/TransferAssetTest.cs +++ b/.Lib9c.Tests/Action/TransferAssetTest.cs @@ -200,36 +200,6 @@ public void Execute_Throw_InvalidTransferMinterException(bool minterAsSender) Assert.Equal(_recipient, ex.Recipient); } - [Fact] - public void Rehearsal() - { - var action = new TransferAsset( - sender: _sender, - recipient: _recipient, - amount: _currency * 100 - ); - - var context = new ActionContext(); - IAccount nextState = action.Execute(new ActionContext() - { - PreviousState = new Account(MockState.Empty).MintAsset(context, _sender, Currencies.Mead * 1), - Signer = default, - Rehearsal = true, - BlockIndex = 1, - }); - - Assert.Equal( - ImmutableHashSet.Create( - _sender, - _recipient - ), - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item1).ToImmutableHashSet() - ); - Assert.Equal( - new[] { _currency, Currencies.Mead, }.ToImmutableHashSet(), - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item2).ToImmutableHashSet()); - } - [Theory] [InlineData(null)] [InlineData("Nine Chronicles")] diff --git a/.Lib9c.Tests/Action/TransferAssetTest0.cs b/.Lib9c.Tests/Action/TransferAssetTest0.cs index 049a7b5682..791fd24ff2 100644 --- a/.Lib9c.Tests/Action/TransferAssetTest0.cs +++ b/.Lib9c.Tests/Action/TransferAssetTest0.cs @@ -223,35 +223,6 @@ public void ExecuteWithMinterAsRecipient() Assert.Equal(_recipient, ex.Recipient); } - [Fact] - public void Rehearsal() - { - var action = new TransferAsset0( - sender: _sender, - recipient: _recipient, - amount: _currency * 100 - ); - - IAccount nextState = action.Execute(new ActionContext() - { - PreviousState = new Account(MockState.Empty), - Signer = default, - Rehearsal = true, - BlockIndex = 1, - }); - - Assert.Equal( - ImmutableHashSet.Create( - _sender, - _recipient - ), - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item1).ToImmutableHashSet() - ); - Assert.Equal( - new[] { _currency }, - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item2).ToImmutableHashSet()); - } - [Theory] [InlineData(null)] [InlineData("Nine Chronicles")] diff --git a/.Lib9c.Tests/Action/TransferAssets0Test.cs b/.Lib9c.Tests/Action/TransferAssets0Test.cs index 12b0268ed7..66d9189372 100644 --- a/.Lib9c.Tests/Action/TransferAssets0Test.cs +++ b/.Lib9c.Tests/Action/TransferAssets0Test.cs @@ -311,37 +311,6 @@ public void ExecuteWithUnactivatedRecipient() Assert.Equal(_recipient, ex.Recipient); } - [Fact] - public void Rehearsal() - { - var action = new TransferAssets0( - sender: _sender, - new List<(Address, FungibleAssetValue)> - { - (_recipient, _currency * 100), - } - ); - - IAccount nextState = action.Execute(new ActionContext() - { - PreviousState = new Account(MockState.Empty), - Signer = default, - Rehearsal = true, - BlockIndex = 1, - }); - - Assert.Equal( - ImmutableHashSet.Create( - _sender, - _recipient - ), - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item1).ToImmutableHashSet() - ); - Assert.Equal( - new[] { _currency }, - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item2).ToImmutableHashSet()); - } - [Theory] [InlineData(null)] [InlineData("Nine Chronicles")] diff --git a/.Lib9c.Tests/Action/TransferAssets2Test.cs b/.Lib9c.Tests/Action/TransferAssets2Test.cs index f8a55370be..0573f40501 100644 --- a/.Lib9c.Tests/Action/TransferAssets2Test.cs +++ b/.Lib9c.Tests/Action/TransferAssets2Test.cs @@ -221,37 +221,6 @@ public void Execute_Throw_InvalidTransferMinterException() Assert.Equal(_recipient, ex.Recipient); } - [Fact] - public void Rehearsal() - { - var action = new TransferAssets2( - sender: _sender, - new List<(Address, FungibleAssetValue)> - { - (_recipient, _currency * 100), - } - ); - - IAccount nextState = action.Execute(new ActionContext() - { - PreviousState = new Account(MockState.Empty), - Signer = default, - Rehearsal = true, - BlockIndex = 1, - }); - - Assert.Equal( - ImmutableHashSet.Create( - _sender, - _recipient - ), - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item1).ToImmutableHashSet() - ); - Assert.Equal( - new[] { _currency }, - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item2).ToImmutableHashSet()); - } - [Theory] [InlineData(null)] [InlineData("Nine Chronicles")] diff --git a/.Lib9c.Tests/Action/TransferAssetsTest.cs b/.Lib9c.Tests/Action/TransferAssetsTest.cs index 9387ea87be..89757df3de 100644 --- a/.Lib9c.Tests/Action/TransferAssetsTest.cs +++ b/.Lib9c.Tests/Action/TransferAssetsTest.cs @@ -223,37 +223,6 @@ public void Execute_Throw_InvalidTransferMinterException() Assert.Equal(_recipient, ex.Recipient); } - [Fact] - public void Rehearsal() - { - var action = new TransferAssets( - sender: _sender, - new List<(Address, FungibleAssetValue)> - { - (_recipient, _currency * 100), - } - ); - - IAccount nextState = action.Execute(new ActionContext() - { - PreviousState = new Account(MockState.Empty), - Signer = default, - Rehearsal = true, - BlockIndex = 1, - }); - - Assert.Equal( - ImmutableHashSet.Create( - _sender, - _recipient - ), - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item1).ToImmutableHashSet() - ); - Assert.Equal( - new[] { _currency }, - nextState.Delta.UpdatedFungibleAssets.Select(pair => pair.Item2).ToImmutableHashSet()); - } - [Theory] [InlineData(null)] [InlineData("Nine Chronicles")] From 12687670467439ca3f9fd4e5fa86b472270ac21f Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Sat, 11 Nov 2023 09:30:56 +0900 Subject: [PATCH 05/70] Partial removal of rehearsal from actions --- Lib9c/Action/ActivateAccount.cs | 6 ----- Lib9c/Action/ActivateAccount0.cs | 7 ------ Lib9c/Action/AddActivatedAccount.cs | 6 ----- Lib9c/Action/AddActivatedAccount0.cs | 6 ----- Lib9c/Action/Buy.cs | 5 ---- Lib9c/Action/Buy0.cs | 14 ----------- Lib9c/Action/Buy10.cs | 35 ---------------------------- Lib9c/Action/Buy11.cs | 35 ---------------------------- Lib9c/Action/Buy2.cs | 14 ----------- Lib9c/Action/Buy3.cs | 14 ----------- Lib9c/Action/Buy4.cs | 14 ----------- Lib9c/Action/Buy5.cs | 21 ----------------- Lib9c/Action/Buy6.cs | 21 ----------------- Lib9c/Action/Buy7.cs | 21 ----------------- Lib9c/Action/Buy8.cs | 35 ---------------------------- Lib9c/Action/Buy9.cs | 35 ---------------------------- Lib9c/Action/CreateAvatar.cs | 22 ----------------- Lib9c/Action/CreateAvatar0.cs | 20 ---------------- Lib9c/Action/CreateAvatar10.cs | 22 ----------------- Lib9c/Action/CreateAvatar2.cs | 20 ---------------- Lib9c/Action/CreateAvatar3.cs | 23 ------------------ Lib9c/Action/CreateAvatar4.cs | 23 ------------------ Lib9c/Action/CreateAvatar5.cs | 23 ------------------ Lib9c/Action/CreateAvatar6.cs | 23 ------------------ Lib9c/Action/CreateAvatar7.cs | 21 ----------------- Lib9c/Action/CreateAvatar8.cs | 22 ----------------- Lib9c/Action/CreateAvatar9.cs | 22 ----------------- Lib9c/Action/DailyReward0.cs | 4 ---- Lib9c/Action/DailyReward2.cs | 4 ---- Lib9c/Action/DailyReward3.cs | 4 ---- Lib9c/Action/DailyReward4.cs | 8 ------- Lib9c/Action/HackAndSlash.cs | 5 ---- Lib9c/Action/HackAndSlash0.cs | 7 ------ Lib9c/Action/HackAndSlash10.cs | 10 -------- Lib9c/Action/HackAndSlash11.cs | 9 ------- Lib9c/Action/HackAndSlash12.cs | 9 ------- Lib9c/Action/HackAndSlash13.cs | 9 ------- Lib9c/Action/HackAndSlash14.cs | 4 ---- Lib9c/Action/HackAndSlash16.cs | 5 ---- Lib9c/Action/HackAndSlash17.cs | 4 ---- Lib9c/Action/HackAndSlash18.cs | 4 ---- Lib9c/Action/HackAndSlash19.cs | 4 ---- Lib9c/Action/HackAndSlash2.cs | 7 ------ Lib9c/Action/HackAndSlash20.cs | 4 ---- Lib9c/Action/HackAndSlash21.cs | 4 ---- Lib9c/Action/HackAndSlash3.cs | 7 ------ Lib9c/Action/HackAndSlash4.cs | 7 ------ Lib9c/Action/HackAndSlash5.cs | 7 ------ Lib9c/Action/HackAndSlash6.cs | 11 --------- Lib9c/Action/HackAndSlash7.cs | 11 --------- Lib9c/Action/HackAndSlash8.cs | 10 -------- Lib9c/Action/HackAndSlash9.cs | 10 -------- Lib9c/Action/ItemEnhancement.cs | 5 ---- Lib9c/Action/ItemEnhancement0.cs | 7 ------ Lib9c/Action/ItemEnhancement10.cs | 10 -------- Lib9c/Action/ItemEnhancement11.cs | 5 ---- Lib9c/Action/ItemEnhancement12.cs | 5 ---- Lib9c/Action/ItemEnhancement13.cs | 5 ---- Lib9c/Action/ItemEnhancement2.cs | 7 ------ Lib9c/Action/ItemEnhancement3.cs | 7 ------ Lib9c/Action/ItemEnhancement4.cs | 7 ------ Lib9c/Action/ItemEnhancement5.cs | 7 ------ Lib9c/Action/ItemEnhancement6.cs | 7 ------ Lib9c/Action/ItemEnhancement7.cs | 10 -------- Lib9c/Action/ItemEnhancement8.cs | 10 -------- Lib9c/Action/ItemEnhancement9.cs | 10 -------- Lib9c/Action/Sell.cs | 13 ----------- Lib9c/Action/Sell0.cs | 6 ----- Lib9c/Action/Sell10.cs | 13 ----------- Lib9c/Action/Sell11.cs | 13 ----------- Lib9c/Action/Sell2.cs | 6 ----- Lib9c/Action/Sell3.cs | 6 ----- Lib9c/Action/Sell4.cs | 9 ------- Lib9c/Action/Sell5.cs | 10 -------- Lib9c/Action/Sell6.cs | 10 -------- Lib9c/Action/Sell7.cs | 13 ----------- Lib9c/Action/Sell8.cs | 13 ----------- Lib9c/Action/Sell9.cs | 13 ----------- Lib9c/Action/SellCancellation0.cs | 5 ---- Lib9c/Action/SellCancellation2.cs | 5 ---- Lib9c/Action/SellCancellation3.cs | 5 ---- Lib9c/Action/SellCancellation4.cs | 5 ---- Lib9c/Action/SellCancellation5.cs | 7 ------ Lib9c/Action/TransferAsset.cs | 5 ---- Lib9c/Action/TransferAsset0.cs | 4 ---- Lib9c/Action/TransferAsset2.cs | 4 ---- Lib9c/Action/TransferAsset3.cs | 4 ---- Lib9c/Action/TransferAsset4.cs | 4 ---- Lib9c/Action/TransferAssets.cs | 4 ---- Lib9c/Action/TransferAssets0.cs | 4 ---- Lib9c/Action/TransferAssets2.cs | 4 ---- 91 files changed, 985 deletions(-) diff --git a/Lib9c/Action/ActivateAccount.cs b/Lib9c/Action/ActivateAccount.cs index d9e16e98a7..9e916e403e 100644 --- a/Lib9c/Action/ActivateAccount.cs +++ b/Lib9c/Action/ActivateAccount.cs @@ -49,12 +49,6 @@ public override IAccount Execute(IActionContext context) IAccount state = context.PreviousState; Address activatedAddress = context.Signer.Derive(ActivationKey.DeriveKey); - if (context.Rehearsal) - { - return state - .SetState(activatedAddress, MarkChanged) - .SetState(PendingAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); if (!(state.GetState(activatedAddress) is null)) diff --git a/Lib9c/Action/ActivateAccount0.cs b/Lib9c/Action/ActivateAccount0.cs index c43341b823..9f2640a22d 100644 --- a/Lib9c/Action/ActivateAccount0.cs +++ b/Lib9c/Action/ActivateAccount0.cs @@ -47,13 +47,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IAccount state = context.PreviousState; - if (context.Rehearsal) - { - return state - .SetState(ActivatedAccountsState.Address, MarkChanged) - .SetState(PendingAddress, MarkChanged); - } - CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); if (!state.TryGetState(ActivatedAccountsState.Address, out Dictionary accountsAsDict)) diff --git a/Lib9c/Action/AddActivatedAccount.cs b/Lib9c/Action/AddActivatedAccount.cs index 962866ab9c..cc71cfca8b 100644 --- a/Lib9c/Action/AddActivatedAccount.cs +++ b/Lib9c/Action/AddActivatedAccount.cs @@ -43,12 +43,6 @@ public override IAccount Execute(IActionContext context) IAccount state = context.PreviousState; var address = Address.Derive(ActivationKey.DeriveKey); - if (context.Rehearsal) - { - return state - .SetState(address, MarkChanged); - } - CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); if (!(state.GetState(address) is null)) { diff --git a/Lib9c/Action/AddActivatedAccount0.cs b/Lib9c/Action/AddActivatedAccount0.cs index 3bb8a12e80..161e857687 100644 --- a/Lib9c/Action/AddActivatedAccount0.cs +++ b/Lib9c/Action/AddActivatedAccount0.cs @@ -41,12 +41,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IAccount state = context.PreviousState; - if (context.Rehearsal) - { - return state - .SetState(ActivatedAccountsState.Address, MarkChanged); - } - if (!state.TryGetState(ActivatedAccountsState.Address, out Dictionary accountsAsDict)) { throw new ActivatedAccountsDoesNotExistsException(); diff --git a/Lib9c/Action/Buy.cs b/Lib9c/Action/Buy.cs index 74718f5c5e..633c171c00 100644 --- a/Lib9c/Action/Buy.cs +++ b/Lib9c/Action/Buy.cs @@ -72,11 +72,6 @@ public override IAccount Execute(IActionContext context) var buyerInventoryAddress = buyerAvatarAddress.Derive(LegacyInventoryKey); var buyerWorldInformationAddress = buyerAvatarAddress.Derive(LegacyWorldInformationKey); var buyerQuestListAddress = buyerAvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, buyerAvatarAddress); var sw = new Stopwatch(); diff --git a/Lib9c/Action/Buy0.cs b/Lib9c/Action/Buy0.cs index b3cc8865ee..81f3c6cb5e 100644 --- a/Lib9c/Action/Buy0.cs +++ b/Lib9c/Action/Buy0.cs @@ -56,20 +56,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - sellerAgentAddress, - GoldCurrencyState.Address); - return states.SetState(ShopState.Address, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Buy10.cs b/Lib9c/Action/Buy10.cs index b3671edbb5..ff9132eecf 100644 --- a/Lib9c/Action/Buy10.cs +++ b/Lib9c/Action/Buy10.cs @@ -67,41 +67,6 @@ public override IAccount Execute(IActionContext context) var buyerInventoryAddress = buyerAvatarAddress.Derive(LegacyInventoryKey); var buyerWorldInformationAddress = buyerAvatarAddress.Derive(LegacyWorldInformationKey); var buyerQuestListAddress = buyerAvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - foreach (var purchaseInfo in purchaseInfos) - { - var sellerAvatarAddress = purchaseInfo.SellerAvatarAddress; - var sellerInventoryAddress = sellerAvatarAddress.Derive(LegacyInventoryKey); - var sellerWorldInformationAddress = sellerAvatarAddress.Derive(LegacyWorldInformationKey); - var sellerQuestListAddress = sellerAvatarAddress.Derive(LegacyQuestListKey); - Address shardedShopAddress = - ShardedShopStateV2.DeriveAddress(purchaseInfo.ItemSubType, purchaseInfo.OrderId); - Address orderReceiptAddress = OrderReceipt.DeriveAddress(purchaseInfo.OrderId); - Address digestListAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - states = states - .SetState(shardedShopAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged) - .SetState(sellerInventoryAddress, MarkChanged) - .SetState(sellerWorldInformationAddress, MarkChanged) - .SetState(sellerQuestListAddress, MarkChanged) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(digestListAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - purchaseInfo.SellerAgentAddress, - GoldCurrencyState.Address); - } - - return states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(buyerInventoryAddress, MarkChanged) - .SetState(buyerWorldInformationAddress, MarkChanged) - .SetState(buyerQuestListAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100220ObsoleteIndex, context); diff --git a/Lib9c/Action/Buy11.cs b/Lib9c/Action/Buy11.cs index 594d830a75..b93382a654 100644 --- a/Lib9c/Action/Buy11.cs +++ b/Lib9c/Action/Buy11.cs @@ -72,41 +72,6 @@ public override IAccount Execute(IActionContext context) var buyerInventoryAddress = buyerAvatarAddress.Derive(LegacyInventoryKey); var buyerWorldInformationAddress = buyerAvatarAddress.Derive(LegacyWorldInformationKey); var buyerQuestListAddress = buyerAvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - foreach (var purchaseInfo in purchaseInfos) - { - var sellerAvatarAddress = purchaseInfo.SellerAvatarAddress; - var sellerInventoryAddress = sellerAvatarAddress.Derive(LegacyInventoryKey); - var sellerWorldInformationAddress = sellerAvatarAddress.Derive(LegacyWorldInformationKey); - var sellerQuestListAddress = sellerAvatarAddress.Derive(LegacyQuestListKey); - Address shardedShopAddress = - ShardedShopStateV2.DeriveAddress(purchaseInfo.ItemSubType, purchaseInfo.OrderId); - Address orderReceiptAddress = OrderReceipt.DeriveAddress(purchaseInfo.OrderId); - Address digestListAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - states = states - .SetState(shardedShopAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged) - .SetState(sellerInventoryAddress, MarkChanged) - .SetState(sellerWorldInformationAddress, MarkChanged) - .SetState(sellerQuestListAddress, MarkChanged) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(digestListAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - purchaseInfo.SellerAgentAddress, - GetFeeStoreAddress()); - } - - return states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(buyerInventoryAddress, MarkChanged) - .SetState(buyerWorldInformationAddress, MarkChanged) - .SetState(buyerQuestListAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var arenaSheetAddress = Addresses.GetSheetAddress(); diff --git a/Lib9c/Action/Buy2.cs b/Lib9c/Action/Buy2.cs index 5d5d7431f6..1ea99d5a0f 100644 --- a/Lib9c/Action/Buy2.cs +++ b/Lib9c/Action/Buy2.cs @@ -57,20 +57,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - sellerAgentAddress, - GoldCurrencyState.Address); - return states.SetState(ShopState.Address, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Buy3.cs b/Lib9c/Action/Buy3.cs index 4b56538971..043e7c2d38 100644 --- a/Lib9c/Action/Buy3.cs +++ b/Lib9c/Action/Buy3.cs @@ -55,20 +55,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - sellerAgentAddress, - GoldCurrencyState.Address); - return states.SetState(ShopState.Address, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Buy4.cs b/Lib9c/Action/Buy4.cs index 8d9330e420..03f032a7c4 100644 --- a/Lib9c/Action/Buy4.cs +++ b/Lib9c/Action/Buy4.cs @@ -55,20 +55,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - sellerAgentAddress, - GoldCurrencyState.Address); - return states.SetState(ShopState.Address, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Buy5.cs b/Lib9c/Action/Buy5.cs index 82ffe31310..c3629de24d 100644 --- a/Lib9c/Action/Buy5.cs +++ b/Lib9c/Action/Buy5.cs @@ -60,27 +60,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - foreach (var purchaseInfo in purchaseInfos) - { - Address shardedShopAddress = - ShardedShopState.DeriveAddress(purchaseInfo.itemSubType, purchaseInfo.productId); - states = states - .SetState(shardedShopAddress, MarkChanged) - .SetState(purchaseInfo.sellerAvatarAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - purchaseInfo.sellerAgentAddress, - GoldCurrencyState.Address); - } - return states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(Addresses.Shop, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Buy6.cs b/Lib9c/Action/Buy6.cs index d9bdcf7969..09ac72ca49 100644 --- a/Lib9c/Action/Buy6.cs +++ b/Lib9c/Action/Buy6.cs @@ -60,27 +60,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - foreach (var purchaseInfo in purchaseInfos) - { - Address shardedShopAddress = - ShardedShopState.DeriveAddress(purchaseInfo.itemSubType, purchaseInfo.productId); - states = states - .SetState(shardedShopAddress, MarkChanged) - .SetState(purchaseInfo.sellerAvatarAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - purchaseInfo.sellerAgentAddress, - GoldCurrencyState.Address); - } - return states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(Addresses.Shop, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Buy7.cs b/Lib9c/Action/Buy7.cs index b61f3b955b..f7269e9afc 100644 --- a/Lib9c/Action/Buy7.cs +++ b/Lib9c/Action/Buy7.cs @@ -199,27 +199,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - foreach (var purchaseInfo in purchaseInfos) - { - Address shardedShopAddress = - ShardedShopState.DeriveAddress(purchaseInfo.itemSubType, purchaseInfo.productId); - states = states - .SetState(shardedShopAddress, MarkChanged) - .SetState(purchaseInfo.sellerAvatarAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - purchaseInfo.sellerAgentAddress, - GoldCurrencyState.Address); - } - return states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(Addresses.Shop, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Buy8.cs b/Lib9c/Action/Buy8.cs index e007b2a3d8..d3342bbd83 100644 --- a/Lib9c/Action/Buy8.cs +++ b/Lib9c/Action/Buy8.cs @@ -68,41 +68,6 @@ public override IAccount Execute(IActionContext context) var buyerInventoryAddress = buyerAvatarAddress.Derive(LegacyInventoryKey); var buyerWorldInformationAddress = buyerAvatarAddress.Derive(LegacyWorldInformationKey); var buyerQuestListAddress = buyerAvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - foreach (var purchaseInfo in purchaseInfos) - { - var sellerAvatarAddress = purchaseInfo.SellerAvatarAddress; - var sellerInventoryAddress = sellerAvatarAddress.Derive(LegacyInventoryKey); - var sellerWorldInformationAddress = sellerAvatarAddress.Derive(LegacyWorldInformationKey); - var sellerQuestListAddress = sellerAvatarAddress.Derive(LegacyQuestListKey); - Address shardedShopAddress = - ShardedShopStateV2.DeriveAddress(purchaseInfo.ItemSubType, purchaseInfo.OrderId); - Address orderReceiptAddress = OrderReceipt.DeriveAddress(purchaseInfo.OrderId); - Address digestListAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - states = states - .SetState(shardedShopAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged) - .SetState(sellerInventoryAddress, MarkChanged) - .SetState(sellerWorldInformationAddress, MarkChanged) - .SetState(sellerQuestListAddress, MarkChanged) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(digestListAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - purchaseInfo.SellerAgentAddress, - GoldCurrencyState.Address); - } - - return states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(buyerInventoryAddress, MarkChanged) - .SetState(buyerWorldInformationAddress, MarkChanged) - .SetState(buyerQuestListAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Buy9.cs b/Lib9c/Action/Buy9.cs index adfde17cab..73aee18888 100644 --- a/Lib9c/Action/Buy9.cs +++ b/Lib9c/Action/Buy9.cs @@ -68,41 +68,6 @@ public override IAccount Execute(IActionContext context) var buyerInventoryAddress = buyerAvatarAddress.Derive(LegacyInventoryKey); var buyerWorldInformationAddress = buyerAvatarAddress.Derive(LegacyWorldInformationKey); var buyerQuestListAddress = buyerAvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - foreach (var purchaseInfo in purchaseInfos) - { - var sellerAvatarAddress = purchaseInfo.SellerAvatarAddress; - var sellerInventoryAddress = sellerAvatarAddress.Derive(LegacyInventoryKey); - var sellerWorldInformationAddress = sellerAvatarAddress.Derive(LegacyWorldInformationKey); - var sellerQuestListAddress = sellerAvatarAddress.Derive(LegacyQuestListKey); - Address shardedShopAddress = - ShardedShopStateV2.DeriveAddress(purchaseInfo.ItemSubType, purchaseInfo.OrderId); - Address orderReceiptAddress = OrderReceipt.DeriveAddress(purchaseInfo.OrderId); - Address digestListAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - states = states - .SetState(shardedShopAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged) - .SetState(sellerInventoryAddress, MarkChanged) - .SetState(sellerWorldInformationAddress, MarkChanged) - .SetState(sellerQuestListAddress, MarkChanged) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(digestListAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - purchaseInfo.SellerAgentAddress, - GoldCurrencyState.Address); - } - - return states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(buyerInventoryAddress, MarkChanged) - .SetState(buyerWorldInformationAddress, MarkChanged) - .SetState(buyerQuestListAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CreateAvatar.cs b/Lib9c/Action/CreateAvatar.cs index ade2861fdb..e49ff608e6 100644 --- a/Lib9c/Action/CreateAvatar.cs +++ b/Lib9c/Action/CreateAvatar.cs @@ -81,28 +81,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(signer, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - states = states.SetState(slotAddress, MarkChanged); - } - - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, signer); - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/CreateAvatar0.cs b/Lib9c/Action/CreateAvatar0.cs index b5528a7dfa..38a38f44a1 100644 --- a/Lib9c/Action/CreateAvatar0.cs +++ b/Lib9c/Action/CreateAvatar0.cs @@ -75,26 +75,6 @@ public override IAccount Execute(IActionContext context) IActionContext ctx = context; var random = ctx.GetRandom(); var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(ctx.Signer, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - states = states.SetState(slotAddress, MarkChanged); - } - - return states - .SetState(avatarAddress, MarkChanged) - .SetState(Addresses.Ranking, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, GoldCurrencyState.Address, context.Signer); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CreateAvatar10.cs b/Lib9c/Action/CreateAvatar10.cs index f9ab62f43b..92da416a38 100644 --- a/Lib9c/Action/CreateAvatar10.cs +++ b/Lib9c/Action/CreateAvatar10.cs @@ -82,28 +82,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(signer, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - states = states.SetState(slotAddress, MarkChanged); - } - - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, signer); - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/CreateAvatar2.cs b/Lib9c/Action/CreateAvatar2.cs index fa03444c08..7e53d31c4c 100644 --- a/Lib9c/Action/CreateAvatar2.cs +++ b/Lib9c/Action/CreateAvatar2.cs @@ -72,26 +72,6 @@ public override IAccount Execute(IActionContext context) index ) ); - if (ctx.Rehearsal) - { - states = states.SetState(ctx.Signer, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - states = states.SetState(slotAddress, MarkChanged); - } - - return states - .SetState(avatarAddress, MarkChanged) - .SetState(Addresses.Ranking, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, GoldCurrencyState.Address, context.Signer); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CreateAvatar3.cs b/Lib9c/Action/CreateAvatar3.cs index 76ed5c3504..8fe7191b0f 100644 --- a/Lib9c/Action/CreateAvatar3.cs +++ b/Lib9c/Action/CreateAvatar3.cs @@ -71,29 +71,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(ctx.Signer, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - states = states.SetState(slotAddress, MarkChanged); - } - - return states - .SetState(avatarAddress, MarkChanged) - .SetState(Addresses.Ranking, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, GoldCurrencyState.Address, context.Signer); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CreateAvatar4.cs b/Lib9c/Action/CreateAvatar4.cs index c76e613825..01520dd17e 100644 --- a/Lib9c/Action/CreateAvatar4.cs +++ b/Lib9c/Action/CreateAvatar4.cs @@ -71,29 +71,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(ctx.Signer, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - states = states.SetState(slotAddress, MarkChanged); - } - - return states - .SetState(avatarAddress, MarkChanged) - .SetState(Addresses.Ranking, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, GoldCurrencyState.Address, context.Signer); - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/CreateAvatar5.cs b/Lib9c/Action/CreateAvatar5.cs index d86a825077..a5773f4f66 100644 --- a/Lib9c/Action/CreateAvatar5.cs +++ b/Lib9c/Action/CreateAvatar5.cs @@ -71,29 +71,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(ctx.Signer, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - states = states.SetState(slotAddress, MarkChanged); - } - - return states - .SetState(avatarAddress, MarkChanged) - .SetState(Addresses.Ranking, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, GoldCurrencyState.Address, context.Signer); - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/CreateAvatar6.cs b/Lib9c/Action/CreateAvatar6.cs index 819f00185e..78371b4432 100644 --- a/Lib9c/Action/CreateAvatar6.cs +++ b/Lib9c/Action/CreateAvatar6.cs @@ -71,29 +71,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(ctx.Signer, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - states = states.SetState(slotAddress, MarkChanged); - } - - return states - .SetState(avatarAddress, MarkChanged) - .SetState(Addresses.Ranking, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, GoldCurrencyState.Address, context.Signer); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/CreateAvatar7.cs b/Lib9c/Action/CreateAvatar7.cs index 1abcab2862..502ec936e9 100644 --- a/Lib9c/Action/CreateAvatar7.cs +++ b/Lib9c/Action/CreateAvatar7.cs @@ -75,27 +75,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(ctx.Signer, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - states = states.SetState(slotAddress, MarkChanged); - } - - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/CreateAvatar8.cs b/Lib9c/Action/CreateAvatar8.cs index 1fb99849ad..54c5f87237 100644 --- a/Lib9c/Action/CreateAvatar8.cs +++ b/Lib9c/Action/CreateAvatar8.cs @@ -83,28 +83,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(signer, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - states = states.SetState(slotAddress, MarkChanged); - } - - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, signer); - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/CreateAvatar9.cs b/Lib9c/Action/CreateAvatar9.cs index 0ce97c4b6b..9c8ebda7e9 100644 --- a/Lib9c/Action/CreateAvatar9.cs +++ b/Lib9c/Action/CreateAvatar9.cs @@ -82,28 +82,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(signer, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - i - ) - ); - states = states.SetState(slotAddress, MarkChanged); - } - - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, signer); - } var itemSheetAddress = Addresses.GetSheetAddress(); var favSheetAddress = Addresses.GetSheetAddress(); diff --git a/Lib9c/Action/DailyReward0.cs b/Lib9c/Action/DailyReward0.cs index 857329972c..7c0bd82384 100644 --- a/Lib9c/Action/DailyReward0.cs +++ b/Lib9c/Action/DailyReward0.cs @@ -25,10 +25,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - return states.SetState(avatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/DailyReward2.cs b/Lib9c/Action/DailyReward2.cs index 2297d8b718..ab85458936 100644 --- a/Lib9c/Action/DailyReward2.cs +++ b/Lib9c/Action/DailyReward2.cs @@ -32,10 +32,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - return states.SetState(avatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/DailyReward3.cs b/Lib9c/Action/DailyReward3.cs index ccf4f5c7c4..dc11297689 100644 --- a/Lib9c/Action/DailyReward3.cs +++ b/Lib9c/Action/DailyReward3.cs @@ -31,10 +31,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - return states.SetState(avatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/DailyReward4.cs b/Lib9c/Action/DailyReward4.cs index 824c6014e2..606a88db92 100644 --- a/Lib9c/Action/DailyReward4.cs +++ b/Lib9c/Action/DailyReward4.cs @@ -35,14 +35,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(avatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash.cs b/Lib9c/Action/HackAndSlash.cs index 50e87a35fc..c5323c991f 100644 --- a/Lib9c/Action/HackAndSlash.cs +++ b/Lib9c/Action/HackAndSlash.cs @@ -99,11 +99,6 @@ protected override void LoadPlainValueInternal( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var random = context.GetRandom(); return Execute( context.PreviousState, diff --git a/Lib9c/Action/HackAndSlash0.cs b/Lib9c/Action/HackAndSlash0.cs index bcee7219d9..2d3999cb6b 100644 --- a/Lib9c/Action/HackAndSlash0.cs +++ b/Lib9c/Action/HackAndSlash0.cs @@ -75,13 +75,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(RankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states.SetState(WeeklyArenaAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash10.cs b/Lib9c/Action/HackAndSlash10.cs index 86a08916f4..e3af1088a5 100644 --- a/Lib9c/Action/HackAndSlash10.cs +++ b/Lib9c/Action/HackAndSlash10.cs @@ -76,16 +76,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(rankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100170ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash11.cs b/Lib9c/Action/HackAndSlash11.cs index 914717cb5b..606c2e4496 100644 --- a/Lib9c/Action/HackAndSlash11.cs +++ b/Lib9c/Action/HackAndSlash11.cs @@ -71,15 +71,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(avatarAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100190ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash12.cs b/Lib9c/Action/HackAndSlash12.cs index 061e1ed3d6..f34d2784b0 100644 --- a/Lib9c/Action/HackAndSlash12.cs +++ b/Lib9c/Action/HackAndSlash12.cs @@ -71,15 +71,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(avatarAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100260ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash13.cs b/Lib9c/Action/HackAndSlash13.cs index 55c41f5407..ef9f37c91c 100644 --- a/Lib9c/Action/HackAndSlash13.cs +++ b/Lib9c/Action/HackAndSlash13.cs @@ -75,15 +75,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(avatarAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ObsoletedBlockIndex, context); diff --git a/Lib9c/Action/HackAndSlash14.cs b/Lib9c/Action/HackAndSlash14.cs index 29f8334625..ba8561c01a 100644 --- a/Lib9c/Action/HackAndSlash14.cs +++ b/Lib9c/Action/HackAndSlash14.cs @@ -93,10 +93,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states; - } CheckObsolete(ObsoletedBlockIndex, context); diff --git a/Lib9c/Action/HackAndSlash16.cs b/Lib9c/Action/HackAndSlash16.cs index b74e061ddc..f5f07c092a 100644 --- a/Lib9c/Action/HackAndSlash16.cs +++ b/Lib9c/Action/HackAndSlash16.cs @@ -91,11 +91,6 @@ protected override void LoadPlainValueInternal( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var random = context.GetRandom(); diff --git a/Lib9c/Action/HackAndSlash17.cs b/Lib9c/Action/HackAndSlash17.cs index c610ee7777..a8c6a0391a 100644 --- a/Lib9c/Action/HackAndSlash17.cs +++ b/Lib9c/Action/HackAndSlash17.cs @@ -89,10 +89,6 @@ protected override void LoadPlainValueInternal( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var random = context.GetRandom(); diff --git a/Lib9c/Action/HackAndSlash18.cs b/Lib9c/Action/HackAndSlash18.cs index 03ffcaf9ad..ff7dc42b6a 100644 --- a/Lib9c/Action/HackAndSlash18.cs +++ b/Lib9c/Action/HackAndSlash18.cs @@ -89,10 +89,6 @@ protected override void LoadPlainValueInternal( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } CheckObsolete(ActionObsoleteConfig.V100340ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash19.cs b/Lib9c/Action/HackAndSlash19.cs index c319f24f40..e8f7c6944a 100644 --- a/Lib9c/Action/HackAndSlash19.cs +++ b/Lib9c/Action/HackAndSlash19.cs @@ -94,10 +94,6 @@ protected override void LoadPlainValueInternal( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } CheckObsolete(ActionObsoleteConfig.V100360ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash2.cs b/Lib9c/Action/HackAndSlash2.cs index 5152fdcf57..7212d8cfc6 100644 --- a/Lib9c/Action/HackAndSlash2.cs +++ b/Lib9c/Action/HackAndSlash2.cs @@ -73,13 +73,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(RankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states.SetState(WeeklyArenaAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash20.cs b/Lib9c/Action/HackAndSlash20.cs index 1e72e7ce0b..c159e321d5 100644 --- a/Lib9c/Action/HackAndSlash20.cs +++ b/Lib9c/Action/HackAndSlash20.cs @@ -101,10 +101,6 @@ protected override void LoadPlainValueInternal( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } var random = context.GetRandom(); return Execute( diff --git a/Lib9c/Action/HackAndSlash21.cs b/Lib9c/Action/HackAndSlash21.cs index 9926128ec6..53f142d4ec 100644 --- a/Lib9c/Action/HackAndSlash21.cs +++ b/Lib9c/Action/HackAndSlash21.cs @@ -101,10 +101,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var random = context.GetRandom(); - if (context.Rehearsal) - { - return context.PreviousState; - } return Execute( context.PreviousState, diff --git a/Lib9c/Action/HackAndSlash3.cs b/Lib9c/Action/HackAndSlash3.cs index 32e7b58125..c2e9eb94f8 100644 --- a/Lib9c/Action/HackAndSlash3.cs +++ b/Lib9c/Action/HackAndSlash3.cs @@ -73,13 +73,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(RankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states.SetState(WeeklyArenaAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash4.cs b/Lib9c/Action/HackAndSlash4.cs index 4b8804d496..35a1ab97ea 100644 --- a/Lib9c/Action/HackAndSlash4.cs +++ b/Lib9c/Action/HackAndSlash4.cs @@ -73,13 +73,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(RankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states.SetState(WeeklyArenaAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash5.cs b/Lib9c/Action/HackAndSlash5.cs index 49e2d1efed..ed94cf05f7 100644 --- a/Lib9c/Action/HackAndSlash5.cs +++ b/Lib9c/Action/HackAndSlash5.cs @@ -73,13 +73,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(RankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states.SetState(WeeklyArenaAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash6.cs b/Lib9c/Action/HackAndSlash6.cs index 6de84e4658..e32933b2fd 100644 --- a/Lib9c/Action/HackAndSlash6.cs +++ b/Lib9c/Action/HackAndSlash6.cs @@ -77,17 +77,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(RankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states.SetState(WeeklyArenaAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash7.cs b/Lib9c/Action/HackAndSlash7.cs index 92a0ac6e21..bed7b64ed0 100644 --- a/Lib9c/Action/HackAndSlash7.cs +++ b/Lib9c/Action/HackAndSlash7.cs @@ -76,17 +76,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(RankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states.SetState(WeeklyArenaAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash8.cs b/Lib9c/Action/HackAndSlash8.cs index e01238e463..7310211c6d 100644 --- a/Lib9c/Action/HackAndSlash8.cs +++ b/Lib9c/Action/HackAndSlash8.cs @@ -72,16 +72,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(rankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100081ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlash9.cs b/Lib9c/Action/HackAndSlash9.cs index 11f7b0daf9..2801e507cb 100644 --- a/Lib9c/Action/HackAndSlash9.cs +++ b/Lib9c/Action/HackAndSlash9.cs @@ -76,16 +76,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(rankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100086ObsoleteIndex, context); diff --git a/Lib9c/Action/ItemEnhancement.cs b/Lib9c/Action/ItemEnhancement.cs index da9d121dd8..0b042ca014 100644 --- a/Lib9c/Action/ItemEnhancement.cs +++ b/Lib9c/Action/ItemEnhancement.cs @@ -77,11 +77,6 @@ public override IAccount Execute(IActionContext context) var ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - return states; - } - // Collect addresses var slotAddress = avatarAddress.Derive( string.Format( diff --git a/Lib9c/Action/ItemEnhancement0.cs b/Lib9c/Action/ItemEnhancement0.cs index dd9550daa4..42f91ff032 100644 --- a/Lib9c/Action/ItemEnhancement0.cs +++ b/Lib9c/Action/ItemEnhancement0.cs @@ -50,13 +50,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (ctx.Rehearsal) - { - return states - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress) - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/ItemEnhancement10.cs b/Lib9c/Action/ItemEnhancement10.cs index d6662e3cb7..b217ccb292 100644 --- a/Lib9c/Action/ItemEnhancement10.cs +++ b/Lib9c/Action/ItemEnhancement10.cs @@ -134,16 +134,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, GetFeeStoreAddress()) - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var arenaSheetAddress = Addresses.GetSheetAddress(); diff --git a/Lib9c/Action/ItemEnhancement11.cs b/Lib9c/Action/ItemEnhancement11.cs index 689689254c..af87fa08e5 100644 --- a/Lib9c/Action/ItemEnhancement11.cs +++ b/Lib9c/Action/ItemEnhancement11.cs @@ -137,11 +137,6 @@ public override IAccount Execute(IActionContext context) var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states; - } - var costSheetV3Address = Addresses.GetSheetAddress(); var sheetState = states.GetState(costSheetV3Address); if (sheetState != null) diff --git a/Lib9c/Action/ItemEnhancement12.cs b/Lib9c/Action/ItemEnhancement12.cs index 56c18f4e26..f7d6416439 100644 --- a/Lib9c/Action/ItemEnhancement12.cs +++ b/Lib9c/Action/ItemEnhancement12.cs @@ -133,11 +133,6 @@ public override IAccount Execute(IActionContext context) var ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - return states; - } - // Collect addresses var slotAddress = avatarAddress.Derive( string.Format( diff --git a/Lib9c/Action/ItemEnhancement13.cs b/Lib9c/Action/ItemEnhancement13.cs index 241e3347bb..9d7fa89cbb 100644 --- a/Lib9c/Action/ItemEnhancement13.cs +++ b/Lib9c/Action/ItemEnhancement13.cs @@ -134,11 +134,6 @@ public override IAccount Execute(IActionContext context) var states = ctx.PreviousState; var random = context.GetRandom(); - if (ctx.Rehearsal) - { - return states; - } - // Collect addresses var slotAddress = avatarAddress.Derive( string.Format( diff --git a/Lib9c/Action/ItemEnhancement2.cs b/Lib9c/Action/ItemEnhancement2.cs index d92288eeb3..4f51c54830 100644 --- a/Lib9c/Action/ItemEnhancement2.cs +++ b/Lib9c/Action/ItemEnhancement2.cs @@ -50,13 +50,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (ctx.Rehearsal) - { - return states - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress) - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/ItemEnhancement3.cs b/Lib9c/Action/ItemEnhancement3.cs index a97526733f..5835b47fdb 100644 --- a/Lib9c/Action/ItemEnhancement3.cs +++ b/Lib9c/Action/ItemEnhancement3.cs @@ -50,13 +50,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (ctx.Rehearsal) - { - return states - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress) - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/ItemEnhancement4.cs b/Lib9c/Action/ItemEnhancement4.cs index c3178a55a3..a348531873 100644 --- a/Lib9c/Action/ItemEnhancement4.cs +++ b/Lib9c/Action/ItemEnhancement4.cs @@ -48,13 +48,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (ctx.Rehearsal) - { - return states - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress) - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/ItemEnhancement5.cs b/Lib9c/Action/ItemEnhancement5.cs index 490943c600..746bc49b33 100644 --- a/Lib9c/Action/ItemEnhancement5.cs +++ b/Lib9c/Action/ItemEnhancement5.cs @@ -48,13 +48,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (ctx.Rehearsal) - { - return states - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress) - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/ItemEnhancement6.cs b/Lib9c/Action/ItemEnhancement6.cs index aa294d28e5..74c25a2240 100644 --- a/Lib9c/Action/ItemEnhancement6.cs +++ b/Lib9c/Action/ItemEnhancement6.cs @@ -50,13 +50,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (ctx.Rehearsal) - { - return states - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress) - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/ItemEnhancement7.cs b/Lib9c/Action/ItemEnhancement7.cs index c11a28d4b1..0281b0fde1 100644 --- a/Lib9c/Action/ItemEnhancement7.cs +++ b/Lib9c/Action/ItemEnhancement7.cs @@ -90,16 +90,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress) - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/ItemEnhancement8.cs b/Lib9c/Action/ItemEnhancement8.cs index 1013261922..33c89d53aa 100644 --- a/Lib9c/Action/ItemEnhancement8.cs +++ b/Lib9c/Action/ItemEnhancement8.cs @@ -54,16 +54,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress) - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/ItemEnhancement9.cs b/Lib9c/Action/ItemEnhancement9.cs index 838a87d8e2..d0caf06bfc 100644 --- a/Lib9c/Action/ItemEnhancement9.cs +++ b/Lib9c/Action/ItemEnhancement9.cs @@ -130,16 +130,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress) - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100220ObsoleteIndex, context); diff --git a/Lib9c/Action/Sell.cs b/Lib9c/Action/Sell.cs index f157183821..cbc68e523a 100644 --- a/Lib9c/Action/Sell.cs +++ b/Lib9c/Action/Sell.cs @@ -72,19 +72,6 @@ public override IAccount Execute(IActionContext context) Address itemAddress = Addresses.GetItemAddress(tradableId); Address orderAddress = Order.DeriveAddress(orderId); Address orderReceiptAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - if (context.Rehearsal) - { - return states - .SetState(context.Signer, MarkChanged) - .SetState(shopAddress, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(orderAddress, MarkChanged) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); if (!(states.GetState(Addresses.Market) is null)) diff --git a/Lib9c/Action/Sell0.cs b/Lib9c/Action/Sell0.cs index e5e3365376..9b39a0c8ec 100644 --- a/Lib9c/Action/Sell0.cs +++ b/Lib9c/Action/Sell0.cs @@ -46,12 +46,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(ShopState.Address, MarkChanged); - states = states.SetState(sellerAvatarAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Sell10.cs b/Lib9c/Action/Sell10.cs index 3045d3bbda..6302f25cbf 100644 --- a/Lib9c/Action/Sell10.cs +++ b/Lib9c/Action/Sell10.cs @@ -73,19 +73,6 @@ public override IAccount Execute(IActionContext context) Address itemAddress = Addresses.GetItemAddress(tradableId); Address orderAddress = Order.DeriveAddress(orderId); Address orderReceiptAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - if (context.Rehearsal) - { - return states - .SetState(context.Signer, MarkChanged) - .SetState(shopAddress, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(orderAddress, MarkChanged) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100300ObsoleteIndex, context); diff --git a/Lib9c/Action/Sell11.cs b/Lib9c/Action/Sell11.cs index 8b1772d06a..982abaa0d2 100644 --- a/Lib9c/Action/Sell11.cs +++ b/Lib9c/Action/Sell11.cs @@ -72,19 +72,6 @@ public override IAccount Execute(IActionContext context) Address itemAddress = Addresses.GetItemAddress(tradableId); Address orderAddress = Order.DeriveAddress(orderId); Address orderReceiptAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - if (context.Rehearsal) - { - return states - .SetState(context.Signer, MarkChanged) - .SetState(shopAddress, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(orderAddress, MarkChanged) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100351ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, sellerAvatarAddress); diff --git a/Lib9c/Action/Sell2.cs b/Lib9c/Action/Sell2.cs index a803364f52..39c042bb4a 100644 --- a/Lib9c/Action/Sell2.cs +++ b/Lib9c/Action/Sell2.cs @@ -47,12 +47,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(ShopState.Address, MarkChanged); - states = states.SetState(sellerAvatarAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Sell3.cs b/Lib9c/Action/Sell3.cs index 915cf54eb3..bd5344c30a 100644 --- a/Lib9c/Action/Sell3.cs +++ b/Lib9c/Action/Sell3.cs @@ -47,12 +47,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(ShopState.Address, MarkChanged); - states = states.SetState(sellerAvatarAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Sell4.cs b/Lib9c/Action/Sell4.cs index aed2c6dcab..bac95c98a8 100644 --- a/Lib9c/Action/Sell4.cs +++ b/Lib9c/Action/Sell4.cs @@ -54,15 +54,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(sellerAvatarAddress, MarkChanged); - states = ShardedShopState.AddressKeys.Aggregate(states, - (current, addressKey) => - current.SetState(ShardedShopState.DeriveAddress(itemSubType, addressKey), MarkChanged)); - return states - .SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Sell5.cs b/Lib9c/Action/Sell5.cs index 8522389158..d6825f5594 100644 --- a/Lib9c/Action/Sell5.cs +++ b/Lib9c/Action/Sell5.cs @@ -63,16 +63,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - states = states.SetState(sellerAvatarAddress, MarkChanged); - states = ShardedShopState.AddressKeys.Aggregate( - states, - (current, addressKey) => current.SetState( - ShardedShopState.DeriveAddress(itemSubType, addressKey), - MarkChanged)); - return states.SetState(context.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Sell6.cs b/Lib9c/Action/Sell6.cs index c277ca8642..bd6c2f22da 100644 --- a/Lib9c/Action/Sell6.cs +++ b/Lib9c/Action/Sell6.cs @@ -62,16 +62,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - states = states.SetState(sellerAvatarAddress, MarkChanged); - states = ShardedShopState.AddressKeys.Aggregate( - states, - (current, addressKey) => current.SetState( - ShardedShopState.DeriveAddress(itemSubType, addressKey), - MarkChanged)); - return states.SetState(context.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Sell7.cs b/Lib9c/Action/Sell7.cs index d872721e5b..f438a90489 100644 --- a/Lib9c/Action/Sell7.cs +++ b/Lib9c/Action/Sell7.cs @@ -70,19 +70,6 @@ public override IAccount Execute(IActionContext context) Address itemAddress = Addresses.GetItemAddress(tradableId); Address orderAddress = Order.DeriveAddress(orderId); Address orderReceiptAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - if (context.Rehearsal) - { - return states - .SetState(context.Signer, MarkChanged) - .SetState(shopAddress, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(orderAddress, MarkChanged) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Sell8.cs b/Lib9c/Action/Sell8.cs index fc682aadf1..eb45c4b79c 100644 --- a/Lib9c/Action/Sell8.cs +++ b/Lib9c/Action/Sell8.cs @@ -70,19 +70,6 @@ public override IAccount Execute(IActionContext context) Address itemAddress = Addresses.GetItemAddress(tradableId); Address orderAddress = Order.DeriveAddress(orderId); Address orderReceiptAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - if (context.Rehearsal) - { - return states - .SetState(context.Signer, MarkChanged) - .SetState(shopAddress, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(orderAddress, MarkChanged) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Sell9.cs b/Lib9c/Action/Sell9.cs index 64a270e0c6..69c0cc4ad6 100644 --- a/Lib9c/Action/Sell9.cs +++ b/Lib9c/Action/Sell9.cs @@ -69,19 +69,6 @@ public override IAccount Execute(IActionContext context) Address itemAddress = Addresses.GetItemAddress(tradableId); Address orderAddress = Order.DeriveAddress(orderId); Address orderReceiptAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - if (context.Rehearsal) - { - return states - .SetState(context.Signer, MarkChanged) - .SetState(shopAddress, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(orderAddress, MarkChanged) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/SellCancellation0.cs b/Lib9c/Action/SellCancellation0.cs index 9a28038895..7414dd1a54 100644 --- a/Lib9c/Action/SellCancellation0.cs +++ b/Lib9c/Action/SellCancellation0.cs @@ -44,11 +44,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(ShopState.Address, MarkChanged); - return states.SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/SellCancellation2.cs b/Lib9c/Action/SellCancellation2.cs index befb7a492f..ea0782bf68 100644 --- a/Lib9c/Action/SellCancellation2.cs +++ b/Lib9c/Action/SellCancellation2.cs @@ -44,11 +44,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(ShopState.Address, MarkChanged); - return states.SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/SellCancellation3.cs b/Lib9c/Action/SellCancellation3.cs index 8bd5e03a9b..f15ca9adda 100644 --- a/Lib9c/Action/SellCancellation3.cs +++ b/Lib9c/Action/SellCancellation3.cs @@ -44,11 +44,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(ShopState.Address, MarkChanged); - return states.SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/SellCancellation4.cs b/Lib9c/Action/SellCancellation4.cs index 11d93e4f16..9dbb415d27 100644 --- a/Lib9c/Action/SellCancellation4.cs +++ b/Lib9c/Action/SellCancellation4.cs @@ -44,11 +44,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(ShopState.Address, MarkChanged); - return states.SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/SellCancellation5.cs b/Lib9c/Action/SellCancellation5.cs index 710a3a4b74..80928c2188 100644 --- a/Lib9c/Action/SellCancellation5.cs +++ b/Lib9c/Action/SellCancellation5.cs @@ -51,13 +51,6 @@ public override IAccount Execute(IActionContext context) IActionContext ctx = context; var states = ctx.PreviousState; Address shardedShopAddress = ShardedShopState.DeriveAddress(itemSubType, productId); - if (ctx.Rehearsal) - { - states = states.SetState(shardedShopAddress, MarkChanged); - return states - .SetState(Addresses.Shop, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/TransferAsset.cs b/Lib9c/Action/TransferAsset.cs index 2859eaa862..b6b4212d1d 100644 --- a/Lib9c/Action/TransferAsset.cs +++ b/Lib9c/Action/TransferAsset.cs @@ -88,11 +88,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(4); Address signer = context.Signer; var state = context.PreviousState; - if (context.Rehearsal) - { - return state.MarkBalanceChanged(context, Amount.Currency, new[] {Sender, Recipient}); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, signer); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}TransferAsset5 exec started", addressesHex); diff --git a/Lib9c/Action/TransferAsset0.cs b/Lib9c/Action/TransferAsset0.cs index 6c4bbc29c0..3c6b0e7248 100644 --- a/Lib9c/Action/TransferAsset0.cs +++ b/Lib9c/Action/TransferAsset0.cs @@ -78,10 +78,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(4); var state = context.PreviousState; - if (context.Rehearsal) - { - return state.MarkBalanceChanged(context, Amount.Currency, new[] { Sender, Recipient }); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/TransferAsset2.cs b/Lib9c/Action/TransferAsset2.cs index bf465ccf50..8ccdf99b7e 100644 --- a/Lib9c/Action/TransferAsset2.cs +++ b/Lib9c/Action/TransferAsset2.cs @@ -84,10 +84,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(4); var state = context.PreviousState; - if (context.Rehearsal) - { - return state.MarkBalanceChanged(context, Amount.Currency, new[] { Sender, Recipient }); - } CheckObsolete(TransferAsset3.CrystalTransferringRestrictionStartIndex - 1, context); var addressesHex = GetSignerAndOtherAddressesHex(context, context.Signer); diff --git a/Lib9c/Action/TransferAsset3.cs b/Lib9c/Action/TransferAsset3.cs index a679bcec1c..1f43d17c0f 100644 --- a/Lib9c/Action/TransferAsset3.cs +++ b/Lib9c/Action/TransferAsset3.cs @@ -97,10 +97,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(4); var state = context.PreviousState; - if (context.Rehearsal) - { - return state.MarkBalanceChanged(context, Amount.Currency, new[] { Sender, Recipient }); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, context.Signer); diff --git a/Lib9c/Action/TransferAsset4.cs b/Lib9c/Action/TransferAsset4.cs index 18cf7feeb5..0f8bc34a4f 100644 --- a/Lib9c/Action/TransferAsset4.cs +++ b/Lib9c/Action/TransferAsset4.cs @@ -89,10 +89,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(4); Address signer = context.Signer; var state = context.PreviousState; - if (context.Rehearsal) - { - return state.MarkBalanceChanged(context, Amount.Currency, new[] {Sender, Recipient}); - } var addressesHex = GetSignerAndOtherAddressesHex(context, signer); var started = DateTimeOffset.UtcNow; diff --git a/Lib9c/Action/TransferAssets.cs b/Lib9c/Action/TransferAssets.cs index 5247d35e27..15ea73cd00 100644 --- a/Lib9c/Action/TransferAssets.cs +++ b/Lib9c/Action/TransferAssets.cs @@ -83,10 +83,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(4); var state = context.PreviousState; - if (context.Rehearsal) - { - return Recipients.Aggregate(state, (current, t) => current.MarkBalanceChanged(context, t.amount.Currency, new[] {Sender, t.recipient})); - } if (Recipients.Count > RecipientsCapacity) { diff --git a/Lib9c/Action/TransferAssets0.cs b/Lib9c/Action/TransferAssets0.cs index e3fb49f138..641c1070d5 100644 --- a/Lib9c/Action/TransferAssets0.cs +++ b/Lib9c/Action/TransferAssets0.cs @@ -83,10 +83,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(4); var state = context.PreviousState; - if (context.Rehearsal) - { - return Recipients.Aggregate(state, (current, t) => current.MarkBalanceChanged(context, t.amount.Currency, new[] {Sender, t.recipient})); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); if (Recipients.Count > RecipientsCapacity) diff --git a/Lib9c/Action/TransferAssets2.cs b/Lib9c/Action/TransferAssets2.cs index 2fac24362d..b86c6a137c 100644 --- a/Lib9c/Action/TransferAssets2.cs +++ b/Lib9c/Action/TransferAssets2.cs @@ -85,10 +85,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(4); var state = context.PreviousState; CheckObsolete(ActionObsoleteConfig.V200090ObsoleteIndex, context); - if (context.Rehearsal) - { - return Recipients.Aggregate(state, (current, t) => current.MarkBalanceChanged(context, t.amount.Currency, new[] {Sender, t.recipient})); - } if (Recipients.Count > RecipientsCapacity) { From e210c10b23114f66397e308eff58484f2d822f67 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Sat, 11 Nov 2023 12:51:11 +0900 Subject: [PATCH 06/70] More test scrubbing --- .../ClaimMonsterCollectionReward2Test.cs | 31 ------------- .../ClaimMonsterCollectionRewardTest.cs | 26 ----------- .../Action/CombinationEquipment10Test.cs | 42 ------------------ .../Action/CombinationEquipment11Test.cs | 42 ------------------ .../Action/CombinationEquipment6Test.cs | 42 ------------------ .../Action/CombinationEquipment7Test.cs | 42 ------------------ .../Action/CombinationEquipment8Test.cs | 42 ------------------ .../Action/CombinationEquipment9Test.cs | 42 ------------------ .Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs | 38 ---------------- .Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs | 37 ---------------- .Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs | 38 ---------------- .Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs | 38 ---------------- .Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs | 36 --------------- .Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs | 36 --------------- .Lib9c.Tests/Action/MonsterCollect0Test.cs | 25 ----------- .Lib9c.Tests/Action/MonsterCollect2Test.cs | 26 ----------- .Lib9c.Tests/Action/MonsterCollectTest.cs | 26 ----------- .Lib9c.Tests/Action/RapidCombination4Test.cs | 39 ---------------- .Lib9c.Tests/Action/RapidCombination5Test.cs | 39 ---------------- .Lib9c.Tests/Action/RapidCombination6Test.cs | 39 ---------------- .Lib9c.Tests/Action/RapidCombination7Test.cs | 39 ---------------- .Lib9c.Tests/Action/RapidCombination8Test.cs | 39 ---------------- .Lib9c.Tests/Action/RapidCombination9Test.cs | 39 ---------------- .Lib9c.Tests/Action/UpdateSell0Test.cs | 44 ------------------- .Lib9c.Tests/Action/UpdateSell2Test.cs | 44 ------------------- 25 files changed, 931 deletions(-) diff --git a/.Lib9c.Tests/Action/ClaimMonsterCollectionReward2Test.cs b/.Lib9c.Tests/Action/ClaimMonsterCollectionReward2Test.cs index 537170a477..84de887a55 100644 --- a/.Lib9c.Tests/Action/ClaimMonsterCollectionReward2Test.cs +++ b/.Lib9c.Tests/Action/ClaimMonsterCollectionReward2Test.cs @@ -200,37 +200,6 @@ public void Execute_Throw_RequiredBlockIndexException() ); } - [Fact] - public void Rehearsal() - { - ClaimMonsterCollectionReward2 action = new ClaimMonsterCollectionReward2 - { - avatarAddress = _avatarAddress, - }; - - IAccount nextState = action.Execute(new ActionContext - { - PreviousState = new Account(MockState.Empty), - Signer = _signer, - BlockIndex = 0, - Rehearsal = true, - } - ); - - List
updatedAddresses = new List
- { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - MonsterCollectionState.DeriveAddress(_signer, 0), - MonsterCollectionState.DeriveAddress(_signer, 1), - MonsterCollectionState.DeriveAddress(_signer, 2), - MonsterCollectionState.DeriveAddress(_signer, 3), - }; - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private class ExecuteFixture : IEnumerable { private readonly List _data = new List diff --git a/.Lib9c.Tests/Action/ClaimMonsterCollectionRewardTest.cs b/.Lib9c.Tests/Action/ClaimMonsterCollectionRewardTest.cs index 010c600443..69a0eee019 100644 --- a/.Lib9c.Tests/Action/ClaimMonsterCollectionRewardTest.cs +++ b/.Lib9c.Tests/Action/ClaimMonsterCollectionRewardTest.cs @@ -182,32 +182,6 @@ public void Execute_Throw_RequiredBlockIndexException() ); } - [Fact] - public void Rehearsal() - { - IAccount nextState = _action.Execute(new ActionContext - { - PreviousState = new Account(MockState.Empty), - Signer = _signer, - BlockIndex = 0, - Rehearsal = true, - } - ); - - List
updatedAddresses = new List
- { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - MonsterCollectionState.DeriveAddress(_signer, 0), - MonsterCollectionState.DeriveAddress(_signer, 1), - MonsterCollectionState.DeriveAddress(_signer, 2), - MonsterCollectionState.DeriveAddress(_signer, 3), - }; - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - private class ExecuteFixture : IEnumerable { private readonly List _data = new List diff --git a/.Lib9c.Tests/Action/CombinationEquipment10Test.cs b/.Lib9c.Tests/Action/CombinationEquipment10Test.cs index c5707b6c44..b354f207bc 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment10Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment10Test.cs @@ -115,48 +115,6 @@ public void Execute_Throw_InsufficientBalanceException(bool backward) backward, recipeId, subRecipeId, 0)); } - [Fact] - public void Rehearsal() - { - var action = new CombinationEquipment10 - { - avatarAddress = _avatarAddress, - slotIndex = 0, - recipeId = 1, - subRecipeId = 255, - }; - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
- { - _agentAddress, - _avatarAddress, - slotAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.Blacksmith, - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void AddAndUnlockOption() { diff --git a/.Lib9c.Tests/Action/CombinationEquipment11Test.cs b/.Lib9c.Tests/Action/CombinationEquipment11Test.cs index 90f766e707..ce86353acf 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment11Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment11Test.cs @@ -121,48 +121,6 @@ public void Execute_Throw_InsufficientBalanceException(bool backward) backward, recipeId, subRecipeId, 0)); } - [Fact] - public void Rehearsal() - { - var action = new CombinationEquipment11 - { - avatarAddress = _avatarAddress, - slotIndex = 0, - recipeId = 1, - subRecipeId = 255, - }; - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
- { - _agentAddress, - _avatarAddress, - slotAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - ItemEnhancement10.GetFeeStoreAddress(), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void AddAndUnlockOption() { diff --git a/.Lib9c.Tests/Action/CombinationEquipment6Test.cs b/.Lib9c.Tests/Action/CombinationEquipment6Test.cs index 58ae9a58d0..502efe37f1 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment6Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment6Test.cs @@ -229,48 +229,6 @@ public void ExecuteThrowInsufficientBalanceException() })); } - [Fact] - public void Rehearsal() - { - var action = new CombinationEquipment6 - { - AvatarAddress = _avatarAddress, - RecipeId = 1, - SlotIndex = 0, - SubRecipeId = 255, - }; - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
- { - _agentAddress, - _avatarAddress, - slotAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.Blacksmith, - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void SelectOption() { diff --git a/.Lib9c.Tests/Action/CombinationEquipment7Test.cs b/.Lib9c.Tests/Action/CombinationEquipment7Test.cs index 6a075dd6bf..7952588831 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment7Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment7Test.cs @@ -228,48 +228,6 @@ public void ExecuteThrowInsufficientBalanceException() })); } - [Fact] - public void Rehearsal() - { - var action = new CombinationEquipment7 - { - AvatarAddress = _avatarAddress, - RecipeId = 1, - SlotIndex = 0, - SubRecipeId = 255, - }; - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
- { - _agentAddress, - _avatarAddress, - slotAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.Blacksmith, - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void SelectOption() { diff --git a/.Lib9c.Tests/Action/CombinationEquipment8Test.cs b/.Lib9c.Tests/Action/CombinationEquipment8Test.cs index 17fe93c6a5..5479610e2f 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment8Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment8Test.cs @@ -114,48 +114,6 @@ public void Execute_Throw_InsufficientBalanceException(bool backward) backward, recipeId, subRecipeId, 0)); } - [Fact] - public void Rehearsal() - { - var action = new CombinationEquipment8 - { - avatarAddress = _avatarAddress, - slotIndex = 0, - recipeId = 1, - subRecipeId = 255, - }; - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
- { - _agentAddress, - _avatarAddress, - slotAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.Blacksmith, - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void AddAndUnlockOption() { diff --git a/.Lib9c.Tests/Action/CombinationEquipment9Test.cs b/.Lib9c.Tests/Action/CombinationEquipment9Test.cs index cc975e9369..3f4c19220b 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment9Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment9Test.cs @@ -114,48 +114,6 @@ public void Execute_Throw_InsufficientBalanceException(bool backward) backward, recipeId, subRecipeId, 0)); } - [Fact] - public void Rehearsal() - { - var action = new CombinationEquipment9 - { - avatarAddress = _avatarAddress, - slotIndex = 0, - recipeId = 1, - subRecipeId = 255, - }; - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
- { - _agentAddress, - _avatarAddress, - slotAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.Blacksmith, - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Fact] public void AddAndUnlockOption() { diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs index 6e0f8333ba..16dbecae07 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs @@ -585,43 +585,5 @@ public void ExecuteEquippableItemValidation() RandomSeed = 0, }); } - - [Fact] - public void Rehearsal() - { - var action = new MimisbrunnrBattle4() - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - avatarAddress = _avatarAddress, - WeeklyArenaAddress = _weeklyArenaState.address, - RankingMapAddress = _rankingMapAddress, - }; - - var updatedAddresses = new List
() - { - _avatarAddress, - _weeklyArenaState.address, - _rankingMapAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs index 813f264458..1e0dbf0ad9 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs @@ -570,42 +570,5 @@ public void ExecuteEquippableItemValidation() RandomSeed = 0, }); } - - [Fact] - public void Rehearsal() - { - var action = new MimisbrunnrBattle5() - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - avatarAddress = _avatarAddress, - rankingMapAddress = _rankingMapAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _rankingMapAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs index 6888047b80..0a07bcdcb9 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs @@ -728,43 +728,5 @@ x.item is IFungibleItem ownedFungibleItem && var totalCount = rewardItem.Sum(x => x.count); Assert.InRange(totalCount, totalMin, totalMax); } - - [Fact] - public void Rehearsal() - { - var action = new MimisbrunnrBattle6() - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - playCount = 1, - avatarAddress = _avatarAddress, - rankingMapAddress = _rankingMapAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _rankingMapAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs index 1ca49ae271..1eae59601a 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs @@ -728,43 +728,5 @@ x.item is IFungibleItem ownedFungibleItem && var totalCount = rewardItem.Sum(x => x.count); Assert.InRange(totalCount, totalMin, totalMax); } - - [Fact] - public void Rehearsal() - { - var action = new MimisbrunnrBattle7() - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - playCount = 1, - avatarAddress = _avatarAddress, - rankingMapAddress = _rankingMapAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _rankingMapAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs index 1f4b48fb8d..5f1a32d5d4 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs @@ -679,41 +679,5 @@ x.item is IFungibleItem ownedFungibleItem && var totalCount = rewardItem.Sum(x => x.count); Assert.InRange(totalCount, totalMin, totalMax); } - - [Fact] - public void Rehearsal() - { - var action = new MimisbrunnrBattle8() - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - playCount = 1, - avatarAddress = _avatarAddress, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs index 7dd4502673..519be580bf 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs @@ -730,41 +730,5 @@ x.item is IFungibleItem && var totalCount = rewardItem.Sum(x => x.count); Assert.InRange(totalCount, totalMin, totalMax); } - - [Fact] - public void Rehearsal() - { - var action = new MimisbrunnrBattle9 - { - costumes = new List(), - equipments = new List(), - foods = new List(), - worldId = 1, - stageId = 1, - playCount = 1, - avatarAddress = _avatarAddress, - }; - - var updatedAddresses = new List
- { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/MonsterCollect0Test.cs b/.Lib9c.Tests/Action/MonsterCollect0Test.cs index f342f3ac91..77adb0f4ed 100644 --- a/.Lib9c.Tests/Action/MonsterCollect0Test.cs +++ b/.Lib9c.Tests/Action/MonsterCollect0Test.cs @@ -226,30 +226,5 @@ public void Execute_Throw_InvalidLevelException(int prevLevel, int level) BlockIndex = 1, })); } - - [Fact] - public void Rehearsal() - { - Address collectionAddress = MonsterCollectionState0.DeriveAddress(_signer, 1); - MonsterCollect0 action = new MonsterCollect0 - { - level = 1, - collectionRound = 1, - }; - IAccount nextState = action.Execute(new ActionContext - { - PreviousState = new Account(MockState.Empty), - Signer = _signer, - Rehearsal = true, - }); - - List
updatedAddresses = new List
() - { - _signer, - collectionAddress, - }; - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/MonsterCollect2Test.cs b/.Lib9c.Tests/Action/MonsterCollect2Test.cs index cd752b522f..66626e5a27 100644 --- a/.Lib9c.Tests/Action/MonsterCollect2Test.cs +++ b/.Lib9c.Tests/Action/MonsterCollect2Test.cs @@ -154,31 +154,5 @@ public void Execute_Throw_InsufficientBalanceException() BlockIndex = 1, })); } - - [Fact] - public void Rehearsal() - { - var action = new MonsterCollect2 - { - level = 1, - }; - IAccount nextState = action.Execute(new ActionContext - { - PreviousState = new Account(MockState.Empty), - Signer = _signer, - Rehearsal = true, - }); - - List
updatedAddresses = new List
() - { - _signer, - MonsterCollectionState.DeriveAddress(_signer, 0), - MonsterCollectionState.DeriveAddress(_signer, 1), - MonsterCollectionState.DeriveAddress(_signer, 2), - MonsterCollectionState.DeriveAddress(_signer, 3), - }; - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/MonsterCollectTest.cs b/.Lib9c.Tests/Action/MonsterCollectTest.cs index be48e0f9a6..d728a49419 100644 --- a/.Lib9c.Tests/Action/MonsterCollectTest.cs +++ b/.Lib9c.Tests/Action/MonsterCollectTest.cs @@ -175,31 +175,5 @@ public void Execute_Throw_InvalidOperationException() BlockIndex = 1, })); } - - [Fact] - public void Rehearsal() - { - MonsterCollect action = new MonsterCollect - { - level = 1, - }; - IAccount nextState = action.Execute(new ActionContext - { - PreviousState = new Account(MockState.Empty), - Signer = _signer, - Rehearsal = true, - }); - - List
updatedAddresses = new List
() - { - _signer, - MonsterCollectionState.DeriveAddress(_signer, 0), - MonsterCollectionState.DeriveAddress(_signer, 1), - MonsterCollectionState.DeriveAddress(_signer, 2), - MonsterCollectionState.DeriveAddress(_signer, 3), - }; - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/RapidCombination4Test.cs b/.Lib9c.Tests/Action/RapidCombination4Test.cs index 674c12439b..ad00e974e8 100644 --- a/.Lib9c.Tests/Action/RapidCombination4Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination4Test.cs @@ -362,45 +362,6 @@ public void Execute_Throw_NotEnoughMaterialException(int materialCount, int trad })); } - [Fact] - public void Rehearsal() - { - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
() - { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - slotAddress, - }; - - var state = new Account(MockState.Empty); - - var action = new RapidCombination4 - { - avatarAddress = _avatarAddress, - slotIndex = 0, - }; - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(null)] [InlineData(1)] diff --git a/.Lib9c.Tests/Action/RapidCombination5Test.cs b/.Lib9c.Tests/Action/RapidCombination5Test.cs index 8fdf14d652..74d435df67 100644 --- a/.Lib9c.Tests/Action/RapidCombination5Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination5Test.cs @@ -362,45 +362,6 @@ public void Execute_Throw_NotEnoughMaterialException(int materialCount, int trad })); } - [Fact] - public void Rehearsal() - { - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
() - { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - slotAddress, - }; - - var state = new Account(MockState.Empty); - - var action = new RapidCombination5 - { - avatarAddress = _avatarAddress, - slotIndex = 0, - }; - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(null)] [InlineData(1)] diff --git a/.Lib9c.Tests/Action/RapidCombination6Test.cs b/.Lib9c.Tests/Action/RapidCombination6Test.cs index 104a8efa28..8661ecc2ae 100644 --- a/.Lib9c.Tests/Action/RapidCombination6Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination6Test.cs @@ -364,45 +364,6 @@ public void Execute_Throw_NotEnoughMaterialException(int materialCount, int trad })); } - [Fact] - public void Rehearsal() - { - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
() - { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - slotAddress, - }; - - var state = new Account(MockState.Empty); - - var action = new RapidCombination6 - { - avatarAddress = _avatarAddress, - slotIndex = 0, - }; - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(null)] [InlineData(1)] diff --git a/.Lib9c.Tests/Action/RapidCombination7Test.cs b/.Lib9c.Tests/Action/RapidCombination7Test.cs index 3af440cf51..4b3e410f8f 100644 --- a/.Lib9c.Tests/Action/RapidCombination7Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination7Test.cs @@ -364,45 +364,6 @@ public void Execute_Throw_NotEnoughMaterialException(int materialCount, int trad })); } - [Fact] - public void Rehearsal() - { - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
() - { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - slotAddress, - }; - - var state = new Account(MockState.Empty); - - var action = new RapidCombination7 - { - avatarAddress = _avatarAddress, - slotIndex = 0, - }; - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(null)] [InlineData(1)] diff --git a/.Lib9c.Tests/Action/RapidCombination8Test.cs b/.Lib9c.Tests/Action/RapidCombination8Test.cs index a7a1a1545c..e7b0bf69c5 100644 --- a/.Lib9c.Tests/Action/RapidCombination8Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination8Test.cs @@ -366,45 +366,6 @@ public void Execute_Throw_NotEnoughMaterialException(int materialCount, int trad })); } - [Fact] - public void Rehearsal() - { - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
() - { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - slotAddress, - }; - - var state = new Account(MockState.Empty); - - var action = new RapidCombination8 - { - avatarAddress = _avatarAddress, - slotIndex = 0, - }; - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(null)] [InlineData(1)] diff --git a/.Lib9c.Tests/Action/RapidCombination9Test.cs b/.Lib9c.Tests/Action/RapidCombination9Test.cs index 23be0d5426..feed6308f1 100644 --- a/.Lib9c.Tests/Action/RapidCombination9Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination9Test.cs @@ -381,45 +381,6 @@ public void Execute_Throw_NotEnoughMaterialException(int materialCount, int trad })); } - [Fact] - public void Rehearsal() - { - var slotAddress = _avatarAddress.Derive( - string.Format( - CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, - 0 - ) - ); - - var updatedAddresses = new List
() - { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - slotAddress, - }; - - var state = new Account(MockState.Empty); - - var action = new RapidCombination9 - { - avatarAddress = _avatarAddress, - slotIndex = 0, - }; - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } - [Theory] [InlineData(null)] [InlineData(1)] diff --git a/.Lib9c.Tests/Action/UpdateSell0Test.cs b/.Lib9c.Tests/Action/UpdateSell0Test.cs index 56f4be7baf..e3f2e64780 100644 --- a/.Lib9c.Tests/Action/UpdateSell0Test.cs +++ b/.Lib9c.Tests/Action/UpdateSell0Test.cs @@ -334,49 +334,5 @@ public void Execute_Throw_NotEnoughClearedStageLevelException() Signer = _agentAddress, })); } - - [Fact] - public void Rehearsal() - { - var tradableId = Guid.NewGuid(); - var orderId = Guid.NewGuid(); - var updateSellOrderId = Guid.NewGuid(); - var action = new UpdateSell0 - { - orderId = orderId, - updateSellOrderId = updateSellOrderId, - tradableId = tradableId, - sellerAvatarAddress = _avatarAddress, - itemSubType = ItemSubType.Weapon, - price = _currency * ProductPrice, - count = 1, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.GetItemAddress(tradableId), - Order.DeriveAddress(updateSellOrderId), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, orderId), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, updateSellOrderId), - OrderDigestListState.DeriveAddress(_avatarAddress), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/UpdateSell2Test.cs b/.Lib9c.Tests/Action/UpdateSell2Test.cs index 6c4103521a..d6161ae5e9 100644 --- a/.Lib9c.Tests/Action/UpdateSell2Test.cs +++ b/.Lib9c.Tests/Action/UpdateSell2Test.cs @@ -315,49 +315,5 @@ public void Execute_Throw_NotEnoughClearedStageLevelException() Signer = _agentAddress, })); } - - [Fact] - public void Rehearsal() - { - var tradableId = Guid.NewGuid(); - var orderId = Guid.NewGuid(); - var updateSellOrderId = Guid.NewGuid(); - var action = new UpdateSell2 - { - orderId = orderId, - updateSellOrderId = updateSellOrderId, - tradableId = tradableId, - sellerAvatarAddress = _avatarAddress, - itemSubType = ItemSubType.Weapon, - price = _currency * ProductPrice, - count = 1, - }; - - var updatedAddresses = new List
() - { - _agentAddress, - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - Addresses.GetItemAddress(tradableId), - Order.DeriveAddress(updateSellOrderId), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, orderId), - ShardedShopStateV2.DeriveAddress(ItemSubType.Weapon, updateSellOrderId), - OrderDigestListState.DeriveAddress(_avatarAddress), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } From ccf07b944216c5317e65bfd41ebc4cb19a8c642a Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Sat, 11 Nov 2023 13:08:21 +0900 Subject: [PATCH 07/70] More action scrubbing --- Lib9c/Action/BattleArena.cs | 5 ----- Lib9c/Action/BattleArena1.cs | 4 ---- Lib9c/Action/BattleArena10.cs | 5 ----- Lib9c/Action/BattleArena11.cs | 5 ----- Lib9c/Action/BattleArena12.cs | 4 ---- Lib9c/Action/BattleArena13.cs | 5 ----- Lib9c/Action/BattleArena2.cs | 4 ---- Lib9c/Action/BattleArena3.cs | 4 ---- Lib9c/Action/BattleArena4.cs | 4 ---- Lib9c/Action/BattleArena5.cs | 4 ---- Lib9c/Action/BattleArena6.cs | 4 ---- Lib9c/Action/BattleArena7.cs | 4 ---- Lib9c/Action/BattleArena8.cs | 4 ---- Lib9c/Action/BattleArena9.cs | 4 ---- Lib9c/Action/BuyProduct.cs | 4 ---- Lib9c/Action/BuyProduct0.cs | 4 ---- Lib9c/Action/BuyProduct2.cs | 4 ---- Lib9c/Action/ClaimMonsterCollectionReward.cs | 13 ------------- Lib9c/Action/ClaimMonsterCollectionReward0.cs | 8 -------- Lib9c/Action/ClaimMonsterCollectionReward2.cs | 13 ------------- Lib9c/Action/ClaimStakeReward.cs | 5 ----- Lib9c/Action/ClaimStakeReward2.cs | 4 ---- Lib9c/Action/ClaimStakeReward3.cs | 4 ---- Lib9c/Action/ClaimStakeReward4.cs | 5 ----- Lib9c/Action/ClaimStakeReward5.cs | 5 ----- Lib9c/Action/ClaimStakeReward6.cs | 5 ----- Lib9c/Action/ClaimStakeReward7.cs | 5 ----- Lib9c/Action/ClaimStakeReward8.cs | 5 ----- Lib9c/Action/CombinationConsumable.cs | 10 ---------- Lib9c/Action/CombinationConsumable0.cs | 7 ------- Lib9c/Action/CombinationConsumable2.cs | 7 ------- Lib9c/Action/CombinationConsumable3.cs | 7 ------- Lib9c/Action/CombinationConsumable4.cs | 7 ------- Lib9c/Action/CombinationConsumable5.cs | 7 ------- Lib9c/Action/CombinationConsumable6.cs | 10 ---------- Lib9c/Action/CombinationConsumable7.cs | 10 ---------- Lib9c/Action/CombinationConsumable8.cs | 10 ---------- Lib9c/Action/CombinationEquipment.cs | 4 ---- Lib9c/Action/CombinationEquipment0.cs | 8 -------- Lib9c/Action/CombinationEquipment10.cs | 11 ----------- Lib9c/Action/CombinationEquipment11.cs | 11 ----------- Lib9c/Action/CombinationEquipment12.cs | 4 ---- Lib9c/Action/CombinationEquipment13.cs | 4 ---- Lib9c/Action/CombinationEquipment14.cs | 4 ---- Lib9c/Action/CombinationEquipment15.cs | 4 ---- Lib9c/Action/CombinationEquipment16.cs | 4 ---- Lib9c/Action/CombinationEquipment2.cs | 8 -------- Lib9c/Action/CombinationEquipment3.cs | 8 -------- Lib9c/Action/CombinationEquipment4.cs | 8 -------- Lib9c/Action/CombinationEquipment5.cs | 8 -------- Lib9c/Action/CombinationEquipment6.cs | 11 ----------- Lib9c/Action/CombinationEquipment7.cs | 11 ----------- Lib9c/Action/CombinationEquipment8.cs | 11 ----------- Lib9c/Action/CombinationEquipment9.cs | 11 ----------- Lib9c/Action/DailyReward.cs | 7 ------- Lib9c/Action/DailyReward5.cs | 4 ---- Lib9c/Action/DailyReward6.cs | 9 --------- Lib9c/Action/EventConsumableItemCrafts.cs | 5 ----- Lib9c/Action/EventConsumableItemCrafts0.cs | 5 ----- Lib9c/Action/EventDungeonBattle.cs | 5 ----- Lib9c/Action/EventDungeonBattleV1.cs | 4 ---- Lib9c/Action/EventDungeonBattleV2.cs | 4 ---- Lib9c/Action/EventDungeonBattleV3.cs | 4 ---- Lib9c/Action/EventDungeonBattleV4.cs | 5 ----- Lib9c/Action/EventDungeonBattleV5.cs | 5 ----- Lib9c/Action/EventMaterialItemCrafts.cs | 5 ----- Lib9c/Action/EventMaterialItemCrafts0.cs | 5 ----- Lib9c/Action/HackAndSlashSweep.cs | 5 ----- Lib9c/Action/HackAndSlashSweep1.cs | 8 -------- Lib9c/Action/HackAndSlashSweep2.cs | 8 -------- Lib9c/Action/HackAndSlashSweep3.cs | 8 -------- Lib9c/Action/HackAndSlashSweep4.cs | 8 -------- Lib9c/Action/HackAndSlashSweep5.cs | 4 ---- Lib9c/Action/HackAndSlashSweep6.cs | 4 ---- Lib9c/Action/HackAndSlashSweep7.cs | 4 ---- Lib9c/Action/HackAndSlashSweep8.cs | 4 ---- Lib9c/Action/HackAndSlashSweep9.cs | 4 ---- Lib9c/Action/JoinArena.cs | 5 ----- Lib9c/Action/JoinArena1.cs | 4 ---- Lib9c/Action/JoinArena2.cs | 4 ---- Lib9c/Action/JoinArena3.cs | 5 ----- Lib9c/Action/MimisbrunnrBattle.cs | 4 ---- Lib9c/Action/MimisbrunnrBattle0.cs | 6 ------ Lib9c/Action/MimisbrunnrBattle10.cs | 4 ---- Lib9c/Action/MimisbrunnrBattle11.cs | 4 ---- Lib9c/Action/MimisbrunnrBattle12.cs | 4 ---- Lib9c/Action/MimisbrunnrBattle2.cs | 6 ------ Lib9c/Action/MimisbrunnrBattle3.cs | 6 ------ Lib9c/Action/MimisbrunnrBattle4.cs | 10 ---------- Lib9c/Action/MimisbrunnrBattle5.cs | 10 ---------- Lib9c/Action/MimisbrunnrBattle6.cs | 10 ---------- Lib9c/Action/MimisbrunnrBattle7.cs | 10 ---------- Lib9c/Action/MimisbrunnrBattle8.cs | 9 --------- Lib9c/Action/MimisbrunnrBattle9.cs | 9 --------- Lib9c/Action/MonsterCollect.cs | 14 -------------- Lib9c/Action/MonsterCollect0.cs | 7 ------- Lib9c/Action/MonsterCollect2.cs | 13 ------------- Lib9c/Action/Raid.cs | 5 ----- Lib9c/Action/Raid1.cs | 4 ---- Lib9c/Action/Raid2.cs | 4 ---- Lib9c/Action/Raid3.cs | 4 ---- Lib9c/Action/Raid4.cs | 5 ----- Lib9c/Action/Raid5.cs | 5 ----- Lib9c/Action/Raid6.cs | 5 ----- Lib9c/Action/RankingBattle.cs | 9 --------- Lib9c/Action/RankingBattle0.cs | 8 -------- Lib9c/Action/RankingBattle10.cs | 9 --------- Lib9c/Action/RankingBattle11.cs | 9 --------- Lib9c/Action/RankingBattle2.cs | 8 -------- Lib9c/Action/RankingBattle3.cs | 8 -------- Lib9c/Action/RankingBattle4.cs | 8 -------- Lib9c/Action/RankingBattle5.cs | 9 --------- Lib9c/Action/RankingBattle6.cs | 9 --------- Lib9c/Action/RankingBattle7.cs | 9 --------- Lib9c/Action/RankingBattle8.cs | 9 --------- Lib9c/Action/RankingBattle9.cs | 9 --------- Lib9c/Action/RapidCombination.cs | 10 ---------- Lib9c/Action/RapidCombination0.cs | 6 ------ Lib9c/Action/RapidCombination2.cs | 6 ------ Lib9c/Action/RapidCombination3.cs | 6 ------ Lib9c/Action/RapidCombination4.cs | 9 --------- Lib9c/Action/RapidCombination5.cs | 9 --------- Lib9c/Action/RapidCombination6.cs | 10 +--------- Lib9c/Action/RapidCombination7.cs | 10 +--------- Lib9c/Action/RapidCombination8.cs | 9 --------- Lib9c/Action/RapidCombination9.cs | 9 --------- Lib9c/Action/RegisterProduct.cs | 4 ---- Lib9c/Action/RegisterProduct0.cs | 4 ---- Lib9c/Action/RegisterProduct2.cs | 4 ---- Lib9c/Action/SellCancellation.cs | 12 ------------ Lib9c/Action/SellCancellation6.cs | 7 ------- Lib9c/Action/SellCancellation7.cs | 11 ----------- Lib9c/Action/SellCancellation8.cs | 11 ----------- Lib9c/Action/Stake.cs | 10 ---------- Lib9c/Action/Stake0.cs | 10 ---------- Lib9c/Action/Stake2.cs | 10 ---------- Lib9c/Action/UpdateSell.cs | 4 ---- Lib9c/Action/UpdateSell0.cs | 14 -------------- Lib9c/Action/UpdateSell2.cs | 14 -------------- Lib9c/Action/UpdateSell3.cs | 4 ---- Lib9c/Action/UpdateSell4.cs | 4 ---- 141 files changed, 2 insertions(+), 958 deletions(-) diff --git a/Lib9c/Action/BattleArena.cs b/Lib9c/Action/BattleArena.cs index 442af4d66b..fafb8d0409 100644 --- a/Lib9c/Action/BattleArena.cs +++ b/Lib9c/Action/BattleArena.cs @@ -90,11 +90,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex( context, myAvatarAddress, diff --git a/Lib9c/Action/BattleArena1.cs b/Lib9c/Action/BattleArena1.cs index 1a80652e7e..2259256f26 100644 --- a/Lib9c/Action/BattleArena1.cs +++ b/Lib9c/Action/BattleArena1.cs @@ -88,10 +88,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100290ObsoleteIndex, context); diff --git a/Lib9c/Action/BattleArena10.cs b/Lib9c/Action/BattleArena10.cs index 9c40c0467b..082f8a71cc 100644 --- a/Lib9c/Action/BattleArena10.cs +++ b/Lib9c/Action/BattleArena10.cs @@ -93,11 +93,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex( context, myAvatarAddress, diff --git a/Lib9c/Action/BattleArena11.cs b/Lib9c/Action/BattleArena11.cs index 817bf1c288..aa5a7182a0 100644 --- a/Lib9c/Action/BattleArena11.cs +++ b/Lib9c/Action/BattleArena11.cs @@ -91,11 +91,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex( context, myAvatarAddress, diff --git a/Lib9c/Action/BattleArena12.cs b/Lib9c/Action/BattleArena12.cs index 6c74329779..14ff41e2bd 100644 --- a/Lib9c/Action/BattleArena12.cs +++ b/Lib9c/Action/BattleArena12.cs @@ -91,10 +91,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V200070ObsoleteIndex, context); if (championshipId == 6 && round >= 2 || championshipId > 6) diff --git a/Lib9c/Action/BattleArena13.cs b/Lib9c/Action/BattleArena13.cs index 544b9e0b8f..0349f968cf 100644 --- a/Lib9c/Action/BattleArena13.cs +++ b/Lib9c/Action/BattleArena13.cs @@ -92,11 +92,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); var states = context.PreviousState; var random = context.GetRandom(); - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex( context, myAvatarAddress, diff --git a/Lib9c/Action/BattleArena2.cs b/Lib9c/Action/BattleArena2.cs index 7e2bb48e2c..6d690bbacd 100644 --- a/Lib9c/Action/BattleArena2.cs +++ b/Lib9c/Action/BattleArena2.cs @@ -87,10 +87,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100290ObsoleteIndex, context); diff --git a/Lib9c/Action/BattleArena3.cs b/Lib9c/Action/BattleArena3.cs index b0898715c7..df8ddb80d3 100644 --- a/Lib9c/Action/BattleArena3.cs +++ b/Lib9c/Action/BattleArena3.cs @@ -87,10 +87,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100290ObsoleteIndex, context); diff --git a/Lib9c/Action/BattleArena4.cs b/Lib9c/Action/BattleArena4.cs index 905012c8f9..1d6e9b1433 100644 --- a/Lib9c/Action/BattleArena4.cs +++ b/Lib9c/Action/BattleArena4.cs @@ -87,10 +87,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100320ObsoleteIndex, context); diff --git a/Lib9c/Action/BattleArena5.cs b/Lib9c/Action/BattleArena5.cs index b68211ba8c..a36ffd61a0 100644 --- a/Lib9c/Action/BattleArena5.cs +++ b/Lib9c/Action/BattleArena5.cs @@ -88,10 +88,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100320ObsoleteIndex, context); diff --git a/Lib9c/Action/BattleArena6.cs b/Lib9c/Action/BattleArena6.cs index 5aecca6594..35ca737097 100644 --- a/Lib9c/Action/BattleArena6.cs +++ b/Lib9c/Action/BattleArena6.cs @@ -89,10 +89,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } if (championshipId > 2) { diff --git a/Lib9c/Action/BattleArena7.cs b/Lib9c/Action/BattleArena7.cs index bc048bfea6..3ce8849245 100644 --- a/Lib9c/Action/BattleArena7.cs +++ b/Lib9c/Action/BattleArena7.cs @@ -95,10 +95,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100360ObsoleteIndex, context); diff --git a/Lib9c/Action/BattleArena8.cs b/Lib9c/Action/BattleArena8.cs index 0ce0b28816..a60080b5cf 100644 --- a/Lib9c/Action/BattleArena8.cs +++ b/Lib9c/Action/BattleArena8.cs @@ -97,10 +97,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex( diff --git a/Lib9c/Action/BattleArena9.cs b/Lib9c/Action/BattleArena9.cs index 4c92f0fe30..02b9d6171a 100644 --- a/Lib9c/Action/BattleArena9.cs +++ b/Lib9c/Action/BattleArena9.cs @@ -96,10 +96,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } var addressesHex = GetSignerAndOtherAddressesHex( context, diff --git a/Lib9c/Action/BuyProduct.cs b/Lib9c/Action/BuyProduct.cs index 0793833d55..3ee300f256 100644 --- a/Lib9c/Action/BuyProduct.cs +++ b/Lib9c/Action/BuyProduct.cs @@ -34,10 +34,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } var sw = new Stopwatch(); sw.Start(); diff --git a/Lib9c/Action/BuyProduct0.cs b/Lib9c/Action/BuyProduct0.cs index 45c17f03ab..5a660d1ebe 100644 --- a/Lib9c/Action/BuyProduct0.cs +++ b/Lib9c/Action/BuyProduct0.cs @@ -35,10 +35,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } var sw = new Stopwatch(); sw.Start(); diff --git a/Lib9c/Action/BuyProduct2.cs b/Lib9c/Action/BuyProduct2.cs index 49fede92b3..0031ed0d08 100644 --- a/Lib9c/Action/BuyProduct2.cs +++ b/Lib9c/Action/BuyProduct2.cs @@ -35,10 +35,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } var sw = new Stopwatch(); sw.Start(); diff --git a/Lib9c/Action/ClaimMonsterCollectionReward.cs b/Lib9c/Action/ClaimMonsterCollectionReward.cs index 85bfb70c3c..7abf842e7b 100644 --- a/Lib9c/Action/ClaimMonsterCollectionReward.cs +++ b/Lib9c/Action/ClaimMonsterCollectionReward.cs @@ -47,19 +47,6 @@ public static IAccount Claim(IActionContext context, Address avatarAddress, stri var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}ClaimMonsterCollection exec started", addressesHex); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 0), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 1), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 2), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 3), MarkChanged); - } - if (!states.TryGetAgentAvatarStatesV2(context.Signer, avatarAddress, out AgentState agentState, out AvatarState avatarState, out _)) { throw new FailedLoadStateException($"Aborted as the avatar state of the signer failed to load."); diff --git a/Lib9c/Action/ClaimMonsterCollectionReward0.cs b/Lib9c/Action/ClaimMonsterCollectionReward0.cs index b82cfd089f..52692d5a4b 100644 --- a/Lib9c/Action/ClaimMonsterCollectionReward0.cs +++ b/Lib9c/Action/ClaimMonsterCollectionReward0.cs @@ -32,14 +32,6 @@ public override IAccount Execute(IActionContext context) IAccount states = context.PreviousState; Address collectionAddress = MonsterCollectionState0.DeriveAddress(context.Signer, collectionRound); - if (context.Rehearsal) - { - return states - .SetState(context.Signer, MarkChanged) - .SetState(avatarAddress, MarkChanged) - .SetState(collectionAddress, MarkChanged); - } - CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); if (!states.TryGetAgentAvatarStates(context.Signer, avatarAddress, out AgentState agentState, out AvatarState avatarState)) diff --git a/Lib9c/Action/ClaimMonsterCollectionReward2.cs b/Lib9c/Action/ClaimMonsterCollectionReward2.cs index fbe7ba910a..00d2ef3603 100644 --- a/Lib9c/Action/ClaimMonsterCollectionReward2.cs +++ b/Lib9c/Action/ClaimMonsterCollectionReward2.cs @@ -33,19 +33,6 @@ public override IAccount Execute(IActionContext context) Address worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); Address questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 0), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 1), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 2), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 3), MarkChanged); - } - CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); if (!states.TryGetAgentAvatarStatesV2(context.Signer, avatarAddress, out AgentState agentState, out AvatarState avatarState, out _)) diff --git a/Lib9c/Action/ClaimStakeReward.cs b/Lib9c/Action/ClaimStakeReward.cs index 6cff524dd7..84b8d3bb50 100644 --- a/Lib9c/Action/ClaimStakeReward.cs +++ b/Lib9c/Action/ClaimStakeReward.cs @@ -53,11 +53,6 @@ protected override void LoadPlainValueInternal( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var states = context.PreviousState; var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var stakeStateAddr = StakeState.DeriveAddress(context.Signer); diff --git a/Lib9c/Action/ClaimStakeReward2.cs b/Lib9c/Action/ClaimStakeReward2.cs index 4f1478a6cd..53dc346a1f 100644 --- a/Lib9c/Action/ClaimStakeReward2.cs +++ b/Lib9c/Action/ClaimStakeReward2.cs @@ -38,10 +38,6 @@ public ClaimStakeReward2() public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } var states = context.PreviousState; CheckObsolete(ObsoletedIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); diff --git a/Lib9c/Action/ClaimStakeReward3.cs b/Lib9c/Action/ClaimStakeReward3.cs index 8f4e22c109..d70517af59 100644 --- a/Lib9c/Action/ClaimStakeReward3.cs +++ b/Lib9c/Action/ClaimStakeReward3.cs @@ -169,10 +169,6 @@ private IAccount ProcessReward( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } CheckActionAvailable(ClaimStakeReward2.ObsoletedIndex, context); CheckObsolete(ObsoleteBlockIndex, context); diff --git a/Lib9c/Action/ClaimStakeReward4.cs b/Lib9c/Action/ClaimStakeReward4.cs index fc3b176b45..b308bfe3d2 100644 --- a/Lib9c/Action/ClaimStakeReward4.cs +++ b/Lib9c/Action/ClaimStakeReward4.cs @@ -127,11 +127,6 @@ public override IAccount Execute(IActionContext context) { CheckObsolete(ObsoleteBlockIndex, context); context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var states = context.PreviousState; var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); if (!states.TryGetStakeState(context.Signer, out var stakeState)) diff --git a/Lib9c/Action/ClaimStakeReward5.cs b/Lib9c/Action/ClaimStakeReward5.cs index 7b067813c1..e9c25f8303 100644 --- a/Lib9c/Action/ClaimStakeReward5.cs +++ b/Lib9c/Action/ClaimStakeReward5.cs @@ -127,11 +127,6 @@ public override IAccount Execute(IActionContext context) { CheckObsolete(ObsoleteBlockIndex, context); context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var states = context.PreviousState; var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); if (!states.TryGetStakeState(context.Signer, out var stakeState)) diff --git a/Lib9c/Action/ClaimStakeReward6.cs b/Lib9c/Action/ClaimStakeReward6.cs index 01138a3d4a..0cd05be353 100644 --- a/Lib9c/Action/ClaimStakeReward6.cs +++ b/Lib9c/Action/ClaimStakeReward6.cs @@ -202,11 +202,6 @@ protected override void LoadPlainValueInternal( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var states = context.PreviousState; var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); if (!states.TryGetStakeState(context.Signer, out var stakeState)) diff --git a/Lib9c/Action/ClaimStakeReward7.cs b/Lib9c/Action/ClaimStakeReward7.cs index c14f31636e..a69f215ab7 100644 --- a/Lib9c/Action/ClaimStakeReward7.cs +++ b/Lib9c/Action/ClaimStakeReward7.cs @@ -203,11 +203,6 @@ public override IAccount Execute(IActionContext context) { CheckObsolete(ObsoleteBlockIndex, context); context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var states = context.PreviousState; var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); if (!states.TryGetStakeState(context.Signer, out var stakeState)) diff --git a/Lib9c/Action/ClaimStakeReward8.cs b/Lib9c/Action/ClaimStakeReward8.cs index 335d4065fd..3c8f08503a 100644 --- a/Lib9c/Action/ClaimStakeReward8.cs +++ b/Lib9c/Action/ClaimStakeReward8.cs @@ -202,11 +202,6 @@ protected override void LoadPlainValueInternal( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var states = context.PreviousState; var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); if (!states.TryGetStakeState(context.Signer, out var stakeState)) diff --git a/Lib9c/Action/CombinationConsumable.cs b/Lib9c/Action/CombinationConsumable.cs index 37d1a1ba96..f272ff0ff2 100644 --- a/Lib9c/Action/CombinationConsumable.cs +++ b/Lib9c/Action/CombinationConsumable.cs @@ -70,16 +70,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(context.Signer, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; diff --git a/Lib9c/Action/CombinationConsumable0.cs b/Lib9c/Action/CombinationConsumable0.cs index 9ef362b126..8e0af591f1 100644 --- a/Lib9c/Action/CombinationConsumable0.cs +++ b/Lib9c/Action/CombinationConsumable0.cs @@ -79,13 +79,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationConsumable2.cs b/Lib9c/Action/CombinationConsumable2.cs index e8b9f65501..a05ee7422d 100644 --- a/Lib9c/Action/CombinationConsumable2.cs +++ b/Lib9c/Action/CombinationConsumable2.cs @@ -79,13 +79,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationConsumable3.cs b/Lib9c/Action/CombinationConsumable3.cs index 01d4b2d35f..9a86b85513 100644 --- a/Lib9c/Action/CombinationConsumable3.cs +++ b/Lib9c/Action/CombinationConsumable3.cs @@ -79,13 +79,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationConsumable4.cs b/Lib9c/Action/CombinationConsumable4.cs index e1b9e2823e..41eb8191ba 100644 --- a/Lib9c/Action/CombinationConsumable4.cs +++ b/Lib9c/Action/CombinationConsumable4.cs @@ -79,13 +79,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationConsumable5.cs b/Lib9c/Action/CombinationConsumable5.cs index c74b8e0481..114633f3fe 100644 --- a/Lib9c/Action/CombinationConsumable5.cs +++ b/Lib9c/Action/CombinationConsumable5.cs @@ -117,13 +117,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationConsumable6.cs b/Lib9c/Action/CombinationConsumable6.cs index 2335e58417..3ce1493bf5 100644 --- a/Lib9c/Action/CombinationConsumable6.cs +++ b/Lib9c/Action/CombinationConsumable6.cs @@ -78,16 +78,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationConsumable7.cs b/Lib9c/Action/CombinationConsumable7.cs index f5d7cd8569..faeaae310f 100644 --- a/Lib9c/Action/CombinationConsumable7.cs +++ b/Lib9c/Action/CombinationConsumable7.cs @@ -79,16 +79,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationConsumable8.cs b/Lib9c/Action/CombinationConsumable8.cs index dbe673e17b..3260fc4228 100644 --- a/Lib9c/Action/CombinationConsumable8.cs +++ b/Lib9c/Action/CombinationConsumable8.cs @@ -74,16 +74,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(context.Signer, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; diff --git a/Lib9c/Action/CombinationEquipment.cs b/Lib9c/Action/CombinationEquipment.cs index 1812f35b0e..c9053fbd0f 100644 --- a/Lib9c/Action/CombinationEquipment.cs +++ b/Lib9c/Action/CombinationEquipment.cs @@ -97,10 +97,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; diff --git a/Lib9c/Action/CombinationEquipment0.cs b/Lib9c/Action/CombinationEquipment0.cs index 34d430919a..a02f40ca6b 100644 --- a/Lib9c/Action/CombinationEquipment0.cs +++ b/Lib9c/Action/CombinationEquipment0.cs @@ -49,14 +49,6 @@ public override IAccount Execute(IActionContext context) SlotIndex ) ); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment10.cs b/Lib9c/Action/CombinationEquipment10.cs index 6e863121f6..4793570328 100644 --- a/Lib9c/Action/CombinationEquipment10.cs +++ b/Lib9c/Action/CombinationEquipment10.cs @@ -74,17 +74,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged) - .SetState(context.Signer, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, BlacksmithAddress); - } CheckObsolete(ActionObsoleteConfig.V100220ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment11.cs b/Lib9c/Action/CombinationEquipment11.cs index 60f7355f8e..e8a7f0b0c1 100644 --- a/Lib9c/Action/CombinationEquipment11.cs +++ b/Lib9c/Action/CombinationEquipment11.cs @@ -75,17 +75,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged) - .SetState(context.Signer, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, ItemEnhancement10.GetFeeStoreAddress()); - } CheckObsolete(ActionObsoleteConfig.V100270ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment12.cs b/Lib9c/Action/CombinationEquipment12.cs index 7c95e62fe6..bb72fb2b85 100644 --- a/Lib9c/Action/CombinationEquipment12.cs +++ b/Lib9c/Action/CombinationEquipment12.cs @@ -83,10 +83,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment13.cs b/Lib9c/Action/CombinationEquipment13.cs index 4d0210aa40..ea4eaeb514 100644 --- a/Lib9c/Action/CombinationEquipment13.cs +++ b/Lib9c/Action/CombinationEquipment13.cs @@ -91,10 +91,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100282ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment14.cs b/Lib9c/Action/CombinationEquipment14.cs index b38d35b5b2..51d248b6fa 100644 --- a/Lib9c/Action/CombinationEquipment14.cs +++ b/Lib9c/Action/CombinationEquipment14.cs @@ -92,10 +92,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/CombinationEquipment15.cs b/Lib9c/Action/CombinationEquipment15.cs index 1ffa368155..cc626d5296 100644 --- a/Lib9c/Action/CombinationEquipment15.cs +++ b/Lib9c/Action/CombinationEquipment15.cs @@ -92,10 +92,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/CombinationEquipment16.cs b/Lib9c/Action/CombinationEquipment16.cs index a2068fd7bf..31ac61e9e7 100644 --- a/Lib9c/Action/CombinationEquipment16.cs +++ b/Lib9c/Action/CombinationEquipment16.cs @@ -99,10 +99,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; diff --git a/Lib9c/Action/CombinationEquipment2.cs b/Lib9c/Action/CombinationEquipment2.cs index 2c18b7c1c4..c8c343ab23 100644 --- a/Lib9c/Action/CombinationEquipment2.cs +++ b/Lib9c/Action/CombinationEquipment2.cs @@ -49,14 +49,6 @@ public override IAccount Execute(IActionContext context) SlotIndex ) ); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment3.cs b/Lib9c/Action/CombinationEquipment3.cs index 3d02d22744..f50da4718f 100644 --- a/Lib9c/Action/CombinationEquipment3.cs +++ b/Lib9c/Action/CombinationEquipment3.cs @@ -49,14 +49,6 @@ public override IAccount Execute(IActionContext context) SlotIndex ) ); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment4.cs b/Lib9c/Action/CombinationEquipment4.cs index cccb637d86..de5a1f8ef1 100644 --- a/Lib9c/Action/CombinationEquipment4.cs +++ b/Lib9c/Action/CombinationEquipment4.cs @@ -49,14 +49,6 @@ public override IAccount Execute(IActionContext context) SlotIndex ) ); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment5.cs b/Lib9c/Action/CombinationEquipment5.cs index 076e0ff05e..c7dff1e535 100644 --- a/Lib9c/Action/CombinationEquipment5.cs +++ b/Lib9c/Action/CombinationEquipment5.cs @@ -49,14 +49,6 @@ public override IAccount Execute(IActionContext context) SlotIndex ) ); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment6.cs b/Lib9c/Action/CombinationEquipment6.cs index d9a9c952cf..f564c99f32 100644 --- a/Lib9c/Action/CombinationEquipment6.cs +++ b/Lib9c/Action/CombinationEquipment6.cs @@ -53,17 +53,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment7.cs b/Lib9c/Action/CombinationEquipment7.cs index e3cdf12901..98dd8b4c91 100644 --- a/Lib9c/Action/CombinationEquipment7.cs +++ b/Lib9c/Action/CombinationEquipment7.cs @@ -52,17 +52,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, BlacksmithAddress); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment8.cs b/Lib9c/Action/CombinationEquipment8.cs index 0844814a03..226f11ac49 100644 --- a/Lib9c/Action/CombinationEquipment8.cs +++ b/Lib9c/Action/CombinationEquipment8.cs @@ -74,17 +74,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged) - .SetState(context.Signer, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, BlacksmithAddress); - } CheckObsolete(ActionObsoleteConfig.V100086ObsoleteIndex, context); diff --git a/Lib9c/Action/CombinationEquipment9.cs b/Lib9c/Action/CombinationEquipment9.cs index 79cd08f4f7..54e2d682dc 100644 --- a/Lib9c/Action/CombinationEquipment9.cs +++ b/Lib9c/Action/CombinationEquipment9.cs @@ -74,17 +74,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged) - .SetState(context.Signer, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, BlacksmithAddress); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/DailyReward.cs b/Lib9c/Action/DailyReward.cs index 3e43a88758..3a3513a9e4 100644 --- a/Lib9c/Action/DailyReward.cs +++ b/Lib9c/Action/DailyReward.cs @@ -32,13 +32,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, avatarAddress); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}DailyReward exec started", addressesHex); diff --git a/Lib9c/Action/DailyReward5.cs b/Lib9c/Action/DailyReward5.cs index 2b2fd9e7e8..b060069188 100644 --- a/Lib9c/Action/DailyReward5.cs +++ b/Lib9c/Action/DailyReward5.cs @@ -26,10 +26,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states.SetState(avatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/DailyReward6.cs b/Lib9c/Action/DailyReward6.cs index 7fad85616d..37cef1a0eb 100644 --- a/Lib9c/Action/DailyReward6.cs +++ b/Lib9c/Action/DailyReward6.cs @@ -36,15 +36,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, avatarAddress); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/EventConsumableItemCrafts.cs b/Lib9c/Action/EventConsumableItemCrafts.cs index 3be87289a3..d07f8e07f4 100644 --- a/Lib9c/Action/EventConsumableItemCrafts.cs +++ b/Lib9c/Action/EventConsumableItemCrafts.cs @@ -83,11 +83,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Verbose( diff --git a/Lib9c/Action/EventConsumableItemCrafts0.cs b/Lib9c/Action/EventConsumableItemCrafts0.cs index c8d86ac9f9..dbc6987ebe 100644 --- a/Lib9c/Action/EventConsumableItemCrafts0.cs +++ b/Lib9c/Action/EventConsumableItemCrafts0.cs @@ -82,11 +82,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); var states = context.PreviousState; var random = context.GetRandom(); - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Verbose( diff --git a/Lib9c/Action/EventDungeonBattle.cs b/Lib9c/Action/EventDungeonBattle.cs index ec984be138..ddb71e8348 100644 --- a/Lib9c/Action/EventDungeonBattle.cs +++ b/Lib9c/Action/EventDungeonBattle.cs @@ -119,11 +119,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Verbose( diff --git a/Lib9c/Action/EventDungeonBattleV1.cs b/Lib9c/Action/EventDungeonBattleV1.cs index e63f5ba983..1cc9401927 100644 --- a/Lib9c/Action/EventDungeonBattleV1.cs +++ b/Lib9c/Action/EventDungeonBattleV1.cs @@ -113,10 +113,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); diff --git a/Lib9c/Action/EventDungeonBattleV2.cs b/Lib9c/Action/EventDungeonBattleV2.cs index 447e9a17ba..6e459479f6 100644 --- a/Lib9c/Action/EventDungeonBattleV2.cs +++ b/Lib9c/Action/EventDungeonBattleV2.cs @@ -113,10 +113,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100340ObsoleteIndex, context); diff --git a/Lib9c/Action/EventDungeonBattleV3.cs b/Lib9c/Action/EventDungeonBattleV3.cs index cb355470db..df14159656 100644 --- a/Lib9c/Action/EventDungeonBattleV3.cs +++ b/Lib9c/Action/EventDungeonBattleV3.cs @@ -121,10 +121,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100360ObsoleteIndex, context); diff --git a/Lib9c/Action/EventDungeonBattleV4.cs b/Lib9c/Action/EventDungeonBattleV4.cs index 369657190f..b852a2cbb9 100644 --- a/Lib9c/Action/EventDungeonBattleV4.cs +++ b/Lib9c/Action/EventDungeonBattleV4.cs @@ -120,11 +120,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Verbose( diff --git a/Lib9c/Action/EventDungeonBattleV5.cs b/Lib9c/Action/EventDungeonBattleV5.cs index 5065a78dde..58bb32109c 100644 --- a/Lib9c/Action/EventDungeonBattleV5.cs +++ b/Lib9c/Action/EventDungeonBattleV5.cs @@ -121,11 +121,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); var states = context.PreviousState; var random = context.GetRandom(); - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Verbose( diff --git a/Lib9c/Action/EventMaterialItemCrafts.cs b/Lib9c/Action/EventMaterialItemCrafts.cs index 0e39c381a7..882e21a887 100644 --- a/Lib9c/Action/EventMaterialItemCrafts.cs +++ b/Lib9c/Action/EventMaterialItemCrafts.cs @@ -91,11 +91,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug( diff --git a/Lib9c/Action/EventMaterialItemCrafts0.cs b/Lib9c/Action/EventMaterialItemCrafts0.cs index e703804145..89092de361 100644 --- a/Lib9c/Action/EventMaterialItemCrafts0.cs +++ b/Lib9c/Action/EventMaterialItemCrafts0.cs @@ -89,11 +89,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug( diff --git a/Lib9c/Action/HackAndSlashSweep.cs b/Lib9c/Action/HackAndSlashSweep.cs index 5bc3c94ef4..a9834e1471 100644 --- a/Lib9c/Action/HackAndSlashSweep.cs +++ b/Lib9c/Action/HackAndSlashSweep.cs @@ -78,11 +78,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}HackAndSlashSweep exec started", addressesHex); diff --git a/Lib9c/Action/HackAndSlashSweep1.cs b/Lib9c/Action/HackAndSlashSweep1.cs index bea3a829c5..7e1b94bcde 100644 --- a/Lib9c/Action/HackAndSlashSweep1.cs +++ b/Lib9c/Action/HackAndSlashSweep1.cs @@ -59,14 +59,6 @@ public override IAccount Execute(IActionContext context) var states = context.PreviousState; var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(inventoryAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(avatarAddress, MarkChanged) - .SetState(context.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100193ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlashSweep2.cs b/Lib9c/Action/HackAndSlashSweep2.cs index f44a11bedc..f8b1268d96 100644 --- a/Lib9c/Action/HackAndSlashSweep2.cs +++ b/Lib9c/Action/HackAndSlashSweep2.cs @@ -59,14 +59,6 @@ public override IAccount Execute(IActionContext context) var states = context.PreviousState; var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(inventoryAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(avatarAddress, MarkChanged) - .SetState(context.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100200ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlashSweep3.cs b/Lib9c/Action/HackAndSlashSweep3.cs index 4b7f9b81a8..b6a50937c1 100644 --- a/Lib9c/Action/HackAndSlashSweep3.cs +++ b/Lib9c/Action/HackAndSlashSweep3.cs @@ -75,14 +75,6 @@ public override IAccount Execute(IActionContext context) var states = context.PreviousState; var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(inventoryAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(avatarAddress, MarkChanged) - .SetState(context.Signer, MarkChanged); - } var arenaSheetAddress = Addresses.GetSheetAddress(); var arenaSheetState = states.GetState(arenaSheetAddress); diff --git a/Lib9c/Action/HackAndSlashSweep4.cs b/Lib9c/Action/HackAndSlashSweep4.cs index 5df83a6ba5..4607ef7f24 100644 --- a/Lib9c/Action/HackAndSlashSweep4.cs +++ b/Lib9c/Action/HackAndSlashSweep4.cs @@ -75,14 +75,6 @@ public override IAccount Execute(IActionContext context) var states = context.PreviousState; var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(inventoryAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(avatarAddress, MarkChanged) - .SetState(context.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100300ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlashSweep5.cs b/Lib9c/Action/HackAndSlashSweep5.cs index d609659613..9a5fc2a81a 100644 --- a/Lib9c/Action/HackAndSlashSweep5.cs +++ b/Lib9c/Action/HackAndSlashSweep5.cs @@ -74,10 +74,6 @@ public override IAccount Execute(IActionContext context) var states = context.PreviousState; var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100300ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlashSweep6.cs b/Lib9c/Action/HackAndSlashSweep6.cs index fdfbb7b7c6..ed76cbea25 100644 --- a/Lib9c/Action/HackAndSlashSweep6.cs +++ b/Lib9c/Action/HackAndSlashSweep6.cs @@ -74,10 +74,6 @@ public override IAccount Execute(IActionContext context) var states = context.PreviousState; var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/HackAndSlashSweep7.cs b/Lib9c/Action/HackAndSlashSweep7.cs index 9815e6af14..f243f8a141 100644 --- a/Lib9c/Action/HackAndSlashSweep7.cs +++ b/Lib9c/Action/HackAndSlashSweep7.cs @@ -73,10 +73,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100340ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlashSweep8.cs b/Lib9c/Action/HackAndSlashSweep8.cs index e089d21416..db7a93bfa1 100644 --- a/Lib9c/Action/HackAndSlashSweep8.cs +++ b/Lib9c/Action/HackAndSlashSweep8.cs @@ -79,10 +79,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100360ObsoleteIndex, context); diff --git a/Lib9c/Action/HackAndSlashSweep9.cs b/Lib9c/Action/HackAndSlashSweep9.cs index 1edec10011..963b806db0 100644 --- a/Lib9c/Action/HackAndSlashSweep9.cs +++ b/Lib9c/Action/HackAndSlashSweep9.cs @@ -80,10 +80,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); var states = context.PreviousState; var random = context.GetRandom(); - if (context.Rehearsal) - { - return states; - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; diff --git a/Lib9c/Action/JoinArena.cs b/Lib9c/Action/JoinArena.cs index 9be265d12d..fa03c5726c 100644 --- a/Lib9c/Action/JoinArena.cs +++ b/Lib9c/Action/JoinArena.cs @@ -70,11 +70,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}JoinArena exec started", addressesHex); diff --git a/Lib9c/Action/JoinArena1.cs b/Lib9c/Action/JoinArena1.cs index 3e6228a7d1..0b27ba1fb9 100644 --- a/Lib9c/Action/JoinArena1.cs +++ b/Lib9c/Action/JoinArena1.cs @@ -65,10 +65,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } if (championshipId > 2) { diff --git a/Lib9c/Action/JoinArena2.cs b/Lib9c/Action/JoinArena2.cs index 6f4b7ec28d..f7eae1b27d 100644 --- a/Lib9c/Action/JoinArena2.cs +++ b/Lib9c/Action/JoinArena2.cs @@ -71,10 +71,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100360ObsoleteIndex, context); diff --git a/Lib9c/Action/JoinArena3.cs b/Lib9c/Action/JoinArena3.cs index 6616e27cd2..5e5184d610 100644 --- a/Lib9c/Action/JoinArena3.cs +++ b/Lib9c/Action/JoinArena3.cs @@ -71,11 +71,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}JoinArena exec started", addressesHex); diff --git a/Lib9c/Action/MimisbrunnrBattle.cs b/Lib9c/Action/MimisbrunnrBattle.cs index 131262f6c5..1569effa05 100644 --- a/Lib9c/Action/MimisbrunnrBattle.cs +++ b/Lib9c/Action/MimisbrunnrBattle.cs @@ -85,10 +85,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); diff --git a/Lib9c/Action/MimisbrunnrBattle0.cs b/Lib9c/Action/MimisbrunnrBattle0.cs index fad076b425..49ecdfe3cc 100644 --- a/Lib9c/Action/MimisbrunnrBattle0.cs +++ b/Lib9c/Action/MimisbrunnrBattle0.cs @@ -74,12 +74,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(RankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - return states.SetState(WeeklyArenaAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/MimisbrunnrBattle10.cs b/Lib9c/Action/MimisbrunnrBattle10.cs index c56c05227b..a534172660 100644 --- a/Lib9c/Action/MimisbrunnrBattle10.cs +++ b/Lib9c/Action/MimisbrunnrBattle10.cs @@ -76,10 +76,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/MimisbrunnrBattle11.cs b/Lib9c/Action/MimisbrunnrBattle11.cs index 17253ea84a..dcfede31df 100644 --- a/Lib9c/Action/MimisbrunnrBattle11.cs +++ b/Lib9c/Action/MimisbrunnrBattle11.cs @@ -85,10 +85,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100360ObsoleteIndex, context); diff --git a/Lib9c/Action/MimisbrunnrBattle12.cs b/Lib9c/Action/MimisbrunnrBattle12.cs index 2c22b0b86e..1aa7d4f081 100644 --- a/Lib9c/Action/MimisbrunnrBattle12.cs +++ b/Lib9c/Action/MimisbrunnrBattle12.cs @@ -86,10 +86,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var sw = new Stopwatch(); diff --git a/Lib9c/Action/MimisbrunnrBattle2.cs b/Lib9c/Action/MimisbrunnrBattle2.cs index 66bbb6241e..1c5f70dd7a 100644 --- a/Lib9c/Action/MimisbrunnrBattle2.cs +++ b/Lib9c/Action/MimisbrunnrBattle2.cs @@ -74,12 +74,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(RankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - return states.SetState(WeeklyArenaAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/MimisbrunnrBattle3.cs b/Lib9c/Action/MimisbrunnrBattle3.cs index b9e4f0bae6..28e4a7ee30 100644 --- a/Lib9c/Action/MimisbrunnrBattle3.cs +++ b/Lib9c/Action/MimisbrunnrBattle3.cs @@ -74,12 +74,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states.SetState(RankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - return states.SetState(WeeklyArenaAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/MimisbrunnrBattle4.cs b/Lib9c/Action/MimisbrunnrBattle4.cs index 9ca20fb513..495fbcf1b6 100644 --- a/Lib9c/Action/MimisbrunnrBattle4.cs +++ b/Lib9c/Action/MimisbrunnrBattle4.cs @@ -76,16 +76,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(RankingMapAddress, MarkChanged); - states = states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(WeeklyArenaAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/MimisbrunnrBattle5.cs b/Lib9c/Action/MimisbrunnrBattle5.cs index 4179f76609..030a7d058a 100644 --- a/Lib9c/Action/MimisbrunnrBattle5.cs +++ b/Lib9c/Action/MimisbrunnrBattle5.cs @@ -70,16 +70,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(rankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100083ObsoleteIndex, context); diff --git a/Lib9c/Action/MimisbrunnrBattle6.cs b/Lib9c/Action/MimisbrunnrBattle6.cs index fbbb9d8e2a..9792d22ff3 100644 --- a/Lib9c/Action/MimisbrunnrBattle6.cs +++ b/Lib9c/Action/MimisbrunnrBattle6.cs @@ -74,16 +74,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(rankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100086ObsoleteIndex, context); diff --git a/Lib9c/Action/MimisbrunnrBattle7.cs b/Lib9c/Action/MimisbrunnrBattle7.cs index 366b51f1d7..d5fbba984d 100644 --- a/Lib9c/Action/MimisbrunnrBattle7.cs +++ b/Lib9c/Action/MimisbrunnrBattle7.cs @@ -74,16 +74,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(rankingMapAddress, MarkChanged); - states = states.SetState(avatarAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100170ObsoleteIndex, context); diff --git a/Lib9c/Action/MimisbrunnrBattle8.cs b/Lib9c/Action/MimisbrunnrBattle8.cs index e11a3f7965..aa9f3f16d1 100644 --- a/Lib9c/Action/MimisbrunnrBattle8.cs +++ b/Lib9c/Action/MimisbrunnrBattle8.cs @@ -76,15 +76,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(avatarAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ObsoletedBlockIndex, context); diff --git a/Lib9c/Action/MimisbrunnrBattle9.cs b/Lib9c/Action/MimisbrunnrBattle9.cs index 17fb1a5a48..3e6cc2a210 100644 --- a/Lib9c/Action/MimisbrunnrBattle9.cs +++ b/Lib9c/Action/MimisbrunnrBattle9.cs @@ -75,15 +75,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = states.SetState(avatarAddress, MarkChanged); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - return states.SetState(ctx.Signer, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100340ObsoleteIndex, context); diff --git a/Lib9c/Action/MonsterCollect.cs b/Lib9c/Action/MonsterCollect.cs index 5ebf4d83c9..3f5235a166 100644 --- a/Lib9c/Action/MonsterCollect.cs +++ b/Lib9c/Action/MonsterCollect.cs @@ -31,20 +31,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 0), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 1), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 2), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 3), MarkChanged) - .SetState(context.Signer, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, MonsterCollectionState.DeriveAddress(context.Signer, 0)) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, MonsterCollectionState.DeriveAddress(context.Signer, 1)) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, MonsterCollectionState.DeriveAddress(context.Signer, 2)) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, MonsterCollectionState.DeriveAddress(context.Signer, 3)); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, context.Signer); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}MonsterCollect exec started", addressesHex); diff --git a/Lib9c/Action/MonsterCollect0.cs b/Lib9c/Action/MonsterCollect0.cs index 9e5ac8b2d8..a0c57dd037 100644 --- a/Lib9c/Action/MonsterCollect0.cs +++ b/Lib9c/Action/MonsterCollect0.cs @@ -29,13 +29,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IAccount states = context.PreviousState; Address monsterCollectionAddress = MonsterCollectionState0.DeriveAddress(context.Signer, collectionRound); - if (context.Rehearsal) - { - return states - .SetState(monsterCollectionAddress, MarkChanged) - .SetState(context.Signer, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, monsterCollectionAddress); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/MonsterCollect2.cs b/Lib9c/Action/MonsterCollect2.cs index a1765fb60f..999df1ad86 100644 --- a/Lib9c/Action/MonsterCollect2.cs +++ b/Lib9c/Action/MonsterCollect2.cs @@ -26,19 +26,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 0), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 1), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 2), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 3), MarkChanged) - .SetState(context.Signer, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, MonsterCollectionState.DeriveAddress(context.Signer, 0)) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, MonsterCollectionState.DeriveAddress(context.Signer, 1)) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, MonsterCollectionState.DeriveAddress(context.Signer, 2)) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, MonsterCollectionState.DeriveAddress(context.Signer, 3)); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Raid.cs b/Lib9c/Action/Raid.cs index 097252d1b3..f28daa0ca6 100644 --- a/Lib9c/Action/Raid.cs +++ b/Lib9c/Action/Raid.cs @@ -46,11 +46,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressHex}Raid exec started", addressHex); diff --git a/Lib9c/Action/Raid1.cs b/Lib9c/Action/Raid1.cs index d141be667b..6bc5454a27 100644 --- a/Lib9c/Action/Raid1.cs +++ b/Lib9c/Action/Raid1.cs @@ -39,10 +39,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100360ObsoleteIndex, context); diff --git a/Lib9c/Action/Raid2.cs b/Lib9c/Action/Raid2.cs index 93be5d8925..ca7d54e13c 100644 --- a/Lib9c/Action/Raid2.cs +++ b/Lib9c/Action/Raid2.cs @@ -43,10 +43,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100340ObsoleteIndex, context); diff --git a/Lib9c/Action/Raid3.cs b/Lib9c/Action/Raid3.cs index 147a32495e..5cd945daa0 100644 --- a/Lib9c/Action/Raid3.cs +++ b/Lib9c/Action/Raid3.cs @@ -47,10 +47,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100360ObsoleteIndex, context); diff --git a/Lib9c/Action/Raid4.cs b/Lib9c/Action/Raid4.cs index d39f221364..beb72d1b19 100644 --- a/Lib9c/Action/Raid4.cs +++ b/Lib9c/Action/Raid4.cs @@ -48,11 +48,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressHex}Raid exec started", addressHex); diff --git a/Lib9c/Action/Raid5.cs b/Lib9c/Action/Raid5.cs index 53277bd859..04b6f16c6f 100644 --- a/Lib9c/Action/Raid5.cs +++ b/Lib9c/Action/Raid5.cs @@ -47,11 +47,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressHex}Raid exec started", addressHex); diff --git a/Lib9c/Action/Raid6.cs b/Lib9c/Action/Raid6.cs index 9085c3fe0d..a98e1af7ab 100644 --- a/Lib9c/Action/Raid6.cs +++ b/Lib9c/Action/Raid6.cs @@ -48,11 +48,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IAccount states = context.PreviousState; var random = context.GetRandom(); - if (context.Rehearsal) - { - return states; - } - var addressHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressHex}Raid exec started", addressHex); diff --git a/Lib9c/Action/RankingBattle.cs b/Lib9c/Action/RankingBattle.cs index d443c944db..c8d73f7fcb 100644 --- a/Lib9c/Action/RankingBattle.cs +++ b/Lib9c/Action/RankingBattle.cs @@ -52,15 +52,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(weeklyArenaAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress, enemyAddress); diff --git a/Lib9c/Action/RankingBattle0.cs b/Lib9c/Action/RankingBattle0.cs index c84b9ea7b2..2775bc6f9f 100644 --- a/Lib9c/Action/RankingBattle0.cs +++ b/Lib9c/Action/RankingBattle0.cs @@ -44,14 +44,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - return states.SetState(ctx.Signer, MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .SetState(WeeklyArenaAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, WeeklyArenaAddress); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/RankingBattle10.cs b/Lib9c/Action/RankingBattle10.cs index 3322a0f565..f8fcd863d7 100644 --- a/Lib9c/Action/RankingBattle10.cs +++ b/Lib9c/Action/RankingBattle10.cs @@ -50,15 +50,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(weeklyArenaAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100190ObsoleteIndex, ctx); diff --git a/Lib9c/Action/RankingBattle11.cs b/Lib9c/Action/RankingBattle11.cs index 693cd025c2..0f9c0b8989 100644 --- a/Lib9c/Action/RankingBattle11.cs +++ b/Lib9c/Action/RankingBattle11.cs @@ -58,15 +58,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(weeklyArenaAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); // Avoid InvalidBlockStateRootHashException diff --git a/Lib9c/Action/RankingBattle2.cs b/Lib9c/Action/RankingBattle2.cs index 81e1d2d3a8..06bca02454 100644 --- a/Lib9c/Action/RankingBattle2.cs +++ b/Lib9c/Action/RankingBattle2.cs @@ -45,14 +45,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - return states.SetState(ctx.Signer, MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .SetState(WeeklyArenaAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, WeeklyArenaAddress); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/RankingBattle3.cs b/Lib9c/Action/RankingBattle3.cs index 2089d594cd..d70f189e8c 100644 --- a/Lib9c/Action/RankingBattle3.cs +++ b/Lib9c/Action/RankingBattle3.cs @@ -45,14 +45,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - return states.SetState(ctx.Signer, MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .SetState(WeeklyArenaAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, WeeklyArenaAddress); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/RankingBattle4.cs b/Lib9c/Action/RankingBattle4.cs index 33662ffcd8..39525b5566 100644 --- a/Lib9c/Action/RankingBattle4.cs +++ b/Lib9c/Action/RankingBattle4.cs @@ -45,14 +45,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - return states.SetState(ctx.Signer, MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .SetState(WeeklyArenaAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged) - .MarkBalanceChanged(ctx, GoldCurrencyMock, ctx.Signer, WeeklyArenaAddress); - } // Avoid InvalidBlockStateRootHashException if (ctx.BlockIndex == 680341 && Id.Equals(new Guid("df37dbd8-5703-4dff-918b-ad22ee4c34c6"))) diff --git a/Lib9c/Action/RankingBattle5.cs b/Lib9c/Action/RankingBattle5.cs index c8d2f3d5f8..9288cd2a29 100644 --- a/Lib9c/Action/RankingBattle5.cs +++ b/Lib9c/Action/RankingBattle5.cs @@ -49,15 +49,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(WeeklyArenaAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/RankingBattle6.cs b/Lib9c/Action/RankingBattle6.cs index 9f6d911485..e77fa29109 100644 --- a/Lib9c/Action/RankingBattle6.cs +++ b/Lib9c/Action/RankingBattle6.cs @@ -48,15 +48,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(weeklyArenaAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, ctx); diff --git a/Lib9c/Action/RankingBattle7.cs b/Lib9c/Action/RankingBattle7.cs index 4714ba87c5..1cf7a51d75 100644 --- a/Lib9c/Action/RankingBattle7.cs +++ b/Lib9c/Action/RankingBattle7.cs @@ -48,15 +48,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(weeklyArenaAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100086ObsoleteIndex, context); diff --git a/Lib9c/Action/RankingBattle8.cs b/Lib9c/Action/RankingBattle8.cs index 12d6385148..b29e5df390 100644 --- a/Lib9c/Action/RankingBattle8.cs +++ b/Lib9c/Action/RankingBattle8.cs @@ -51,15 +51,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(weeklyArenaAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100089ObsoleteIndex, context); diff --git a/Lib9c/Action/RankingBattle9.cs b/Lib9c/Action/RankingBattle9.cs index ed91901c47..91c840b2ac 100644 --- a/Lib9c/Action/RankingBattle9.cs +++ b/Lib9c/Action/RankingBattle9.cs @@ -51,15 +51,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(weeklyArenaAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100093ObsoleteIndex, context); diff --git a/Lib9c/Action/RapidCombination.cs b/Lib9c/Action/RapidCombination.cs index e24a3a3a31..35006d2cba 100644 --- a/Lib9c/Action/RapidCombination.cs +++ b/Lib9c/Action/RapidCombination.cs @@ -46,16 +46,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}RapidCombination exec started", addressesHex); diff --git a/Lib9c/Action/RapidCombination0.cs b/Lib9c/Action/RapidCombination0.cs index 69963e53b1..59f3ee5e07 100644 --- a/Lib9c/Action/RapidCombination0.cs +++ b/Lib9c/Action/RapidCombination0.cs @@ -61,12 +61,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/RapidCombination2.cs b/Lib9c/Action/RapidCombination2.cs index 88a618347e..4c9b8f57a6 100644 --- a/Lib9c/Action/RapidCombination2.cs +++ b/Lib9c/Action/RapidCombination2.cs @@ -36,12 +36,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/RapidCombination3.cs b/Lib9c/Action/RapidCombination3.cs index 1240e5b05a..f851ab8036 100644 --- a/Lib9c/Action/RapidCombination3.cs +++ b/Lib9c/Action/RapidCombination3.cs @@ -36,12 +36,6 @@ public override IAccount Execute(IActionContext context) slotIndex ) ); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/RapidCombination4.cs b/Lib9c/Action/RapidCombination4.cs index db5dacf778..f968fe7c6f 100644 --- a/Lib9c/Action/RapidCombination4.cs +++ b/Lib9c/Action/RapidCombination4.cs @@ -40,15 +40,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/RapidCombination5.cs b/Lib9c/Action/RapidCombination5.cs index 151c244022..02122248cd 100644 --- a/Lib9c/Action/RapidCombination5.cs +++ b/Lib9c/Action/RapidCombination5.cs @@ -67,15 +67,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100083ObsoleteIndex, context); diff --git a/Lib9c/Action/RapidCombination6.cs b/Lib9c/Action/RapidCombination6.cs index 3ef020308c..b2edda19ca 100644 --- a/Lib9c/Action/RapidCombination6.cs +++ b/Lib9c/Action/RapidCombination6.cs @@ -46,15 +46,7 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } + CheckObsolete(ActionObsoleteConfig.V100310ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/RapidCombination7.cs b/Lib9c/Action/RapidCombination7.cs index 664be118ce..0d1e4bcc09 100644 --- a/Lib9c/Action/RapidCombination7.cs +++ b/Lib9c/Action/RapidCombination7.cs @@ -44,15 +44,7 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } + CheckObsolete(ActionObsoleteConfig.V100310ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/RapidCombination8.cs b/Lib9c/Action/RapidCombination8.cs index b8fb61d388..f8a5b90441 100644 --- a/Lib9c/Action/RapidCombination8.cs +++ b/Lib9c/Action/RapidCombination8.cs @@ -45,15 +45,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); diff --git a/Lib9c/Action/RapidCombination9.cs b/Lib9c/Action/RapidCombination9.cs index 478a81dbd3..07950d0f94 100644 --- a/Lib9c/Action/RapidCombination9.cs +++ b/Lib9c/Action/RapidCombination9.cs @@ -47,15 +47,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(slotAddress, MarkChanged); - } var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; diff --git a/Lib9c/Action/RegisterProduct.cs b/Lib9c/Action/RegisterProduct.cs index 6dd795c756..b07b51ee66 100644 --- a/Lib9c/Action/RegisterProduct.cs +++ b/Lib9c/Action/RegisterProduct.cs @@ -33,10 +33,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } sw.Start(); if (!RegisterInfos.Any()) diff --git a/Lib9c/Action/RegisterProduct0.cs b/Lib9c/Action/RegisterProduct0.cs index 5734a367db..72c3e028c8 100644 --- a/Lib9c/Action/RegisterProduct0.cs +++ b/Lib9c/Action/RegisterProduct0.cs @@ -30,10 +30,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } if (!RegisterInfos.Any()) { diff --git a/Lib9c/Action/RegisterProduct2.cs b/Lib9c/Action/RegisterProduct2.cs index 4e54a44bc2..d349536579 100644 --- a/Lib9c/Action/RegisterProduct2.cs +++ b/Lib9c/Action/RegisterProduct2.cs @@ -31,10 +31,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); var states = context.PreviousState; var random = context.GetRandom(); - if (context.Rehearsal) - { - return states; - } if (!RegisterInfos.Any()) { diff --git a/Lib9c/Action/SellCancellation.cs b/Lib9c/Action/SellCancellation.cs index b8f85edc11..39681828b9 100644 --- a/Lib9c/Action/SellCancellation.cs +++ b/Lib9c/Action/SellCancellation.cs @@ -98,18 +98,6 @@ public override IAccount Execute(IActionContext context) var questListAddress = sellerAvatarAddress.Derive(LegacyQuestListKey); var digestListAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); var itemAddress = Addresses.GetItemAddress(tradableId); - if (context.Rehearsal) - { - states = states.SetState(shardedShopAddress, MarkChanged); - return states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(digestListAddress, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, sellerAvatarAddress); if (!states.TryGetAvatarStateV2(context.Signer, sellerAvatarAddress, out var avatarState, out _)) diff --git a/Lib9c/Action/SellCancellation6.cs b/Lib9c/Action/SellCancellation6.cs index c275c47dff..c9593a1399 100644 --- a/Lib9c/Action/SellCancellation6.cs +++ b/Lib9c/Action/SellCancellation6.cs @@ -52,13 +52,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); var states = context.PreviousState; var shardedShopAddress = ShardedShopState.DeriveAddress(itemSubType, productId); - if (context.Rehearsal) - { - states = states.SetState(shardedShopAddress, MarkChanged); - return states - .SetState(Addresses.Shop, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/SellCancellation7.cs b/Lib9c/Action/SellCancellation7.cs index 748591269a..7132bf3aa2 100644 --- a/Lib9c/Action/SellCancellation7.cs +++ b/Lib9c/Action/SellCancellation7.cs @@ -92,17 +92,6 @@ public override IAccount Execute(IActionContext context) var questListAddress = sellerAvatarAddress.Derive(LegacyQuestListKey); var orderDigestListAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); var itemAddress = Addresses.GetItemAddress(tradableId); - if (context.Rehearsal) - { - states = states.SetState(shardedShopAddress, MarkChanged); - return states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(orderDigestListAddress, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/SellCancellation8.cs b/Lib9c/Action/SellCancellation8.cs index e9205ca963..3aeed53427 100644 --- a/Lib9c/Action/SellCancellation8.cs +++ b/Lib9c/Action/SellCancellation8.cs @@ -92,17 +92,6 @@ public override IAccount Execute(IActionContext context) var questListAddress = sellerAvatarAddress.Derive(LegacyQuestListKey); var digestListAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); var itemAddress = Addresses.GetItemAddress(tradableId); - if (context.Rehearsal) - { - states = states.SetState(shardedShopAddress, MarkChanged); - return states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(digestListAddress, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/Stake.cs b/Lib9c/Action/Stake.cs index 03598da395..731a96ac60 100644 --- a/Lib9c/Action/Stake.cs +++ b/Lib9c/Action/Stake.cs @@ -60,16 +60,6 @@ public override IAccount Execute(IActionContext context) throw new MonsterCollectionExistingException(); } - if (context.Rehearsal) - { - return states.SetState(StakeState.DeriveAddress(context.Signer), MarkChanged) - .MarkBalanceChanged( - context, - GoldCurrencyMock, - context.Signer, - StakeState.DeriveAddress(context.Signer)); - } - // NOTE: When the amount is less than 0. if (Amount < 0) { diff --git a/Lib9c/Action/Stake0.cs b/Lib9c/Action/Stake0.cs index 9ef4eac687..145a5b49ba 100644 --- a/Lib9c/Action/Stake0.cs +++ b/Lib9c/Action/Stake0.cs @@ -57,16 +57,6 @@ public override IAccount Execute(IActionContext context) throw new MonsterCollectionExistingException(); } - if (context.Rehearsal) - { - return states.SetState(StakeState.DeriveAddress(context.Signer), MarkChanged) - .MarkBalanceChanged( - context, - GoldCurrencyMock, - context.Signer, - StakeState.DeriveAddress(context.Signer)); - } - CheckObsolete(ObsoleteIndex, context); if (Amount < 0) diff --git a/Lib9c/Action/Stake2.cs b/Lib9c/Action/Stake2.cs index 60764a53a0..8165a4a7a8 100644 --- a/Lib9c/Action/Stake2.cs +++ b/Lib9c/Action/Stake2.cs @@ -57,16 +57,6 @@ public override IAccount Execute(IActionContext context) throw new MonsterCollectionExistingException(); } - if (context.Rehearsal) - { - return states.SetState(StakeState.DeriveAddress(context.Signer), MarkChanged) - .MarkBalanceChanged( - context, - GoldCurrencyMock, - context.Signer, - StakeState.DeriveAddress(context.Signer)); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, context.Signer); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}Stake exec started", addressesHex); diff --git a/Lib9c/Action/UpdateSell.cs b/Lib9c/Action/UpdateSell.cs index 3acb49c6fc..c0d7852701 100644 --- a/Lib9c/Action/UpdateSell.cs +++ b/Lib9c/Action/UpdateSell.cs @@ -59,10 +59,6 @@ public override IAccount Execute(IActionContext context) var worldInformationAddress = sellerAvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = sellerAvatarAddress.Derive(LegacyQuestListKey); var digestListAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); if (!(states.GetState(Addresses.Market) is null)) diff --git a/Lib9c/Action/UpdateSell0.cs b/Lib9c/Action/UpdateSell0.cs index 4b53ccff82..74ecaa4fa6 100644 --- a/Lib9c/Action/UpdateSell0.cs +++ b/Lib9c/Action/UpdateSell0.cs @@ -77,20 +77,6 @@ public override IAccount Execute(IActionContext context) var updateSellOrderAddress = Order.DeriveAddress(updateSellOrderId); var itemAddress = Addresses.GetItemAddress(tradableId); var orderReceiptAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - if (context.Rehearsal) - { - return states - .SetState(context.Signer, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(shopAddress, MarkChanged) - .SetState(updateSellShopAddress, MarkChanged) - .SetState(updateSellOrderAddress, MarkChanged) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/UpdateSell2.cs b/Lib9c/Action/UpdateSell2.cs index 7bae25a70b..49e45acde4 100644 --- a/Lib9c/Action/UpdateSell2.cs +++ b/Lib9c/Action/UpdateSell2.cs @@ -81,20 +81,6 @@ public override IAccount Execute(IActionContext context) var updateSellOrderAddress = Order.DeriveAddress(updateSellOrderId); var itemAddress = Addresses.GetItemAddress(tradableId); var digestListAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - if (context.Rehearsal) - { - return states - .SetState(context.Signer, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(digestListAddress, MarkChanged) - .SetState(shopAddress, MarkChanged) - .SetState(updateSellShopAddress, MarkChanged) - .SetState(updateSellOrderAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(sellerAvatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100270ObsoleteIndex, context); diff --git a/Lib9c/Action/UpdateSell3.cs b/Lib9c/Action/UpdateSell3.cs index 31d4fcacb1..036caa0c55 100644 --- a/Lib9c/Action/UpdateSell3.cs +++ b/Lib9c/Action/UpdateSell3.cs @@ -60,10 +60,6 @@ public override IAccount Execute(IActionContext context) var worldInformationAddress = sellerAvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = sellerAvatarAddress.Derive(LegacyQuestListKey); var digestListAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100320ObsoleteIndex, context); diff --git a/Lib9c/Action/UpdateSell4.cs b/Lib9c/Action/UpdateSell4.cs index 2b615c8569..1b6ccb1014 100644 --- a/Lib9c/Action/UpdateSell4.cs +++ b/Lib9c/Action/UpdateSell4.cs @@ -61,10 +61,6 @@ public override IAccount Execute(IActionContext context) var worldInformationAddress = sellerAvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = sellerAvatarAddress.Derive(LegacyQuestListKey); var digestListAddress = OrderDigestListState.DeriveAddress(sellerAvatarAddress); - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100351ObsoleteIndex, context); From d589ee56bfd92ab8139e5928b9b9750b8be6761d Mon Sep 17 00:00:00 2001 From: area363 Date: Fri, 10 Nov 2023 19:15:33 +0900 Subject: [PATCH 08/70] Revert "fix RewardGoldTest" This reverts commit fefa24749fe4815233da217b4f563c8d2f2befb9. --- .Lib9c.Tests/Action/RewardGoldTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.Lib9c.Tests/Action/RewardGoldTest.cs b/.Lib9c.Tests/Action/RewardGoldTest.cs index 9e1dc27504..dd515ca590 100644 --- a/.Lib9c.Tests/Action/RewardGoldTest.cs +++ b/.Lib9c.Tests/Action/RewardGoldTest.cs @@ -482,7 +482,7 @@ void AssertMinerReward(int blockIndex, string expected) public async Task Genesis_StateRootHash(bool mainnet) { BlockPolicySource blockPolicySource = new BlockPolicySource(); - IStagePolicy stagePolicy = new VolatileStagePolicy(); + NCStagePolicy stagePolicy = new NCStagePolicy(default, 2); IBlockPolicy policy = blockPolicySource.GetPolicy(); Block genesis; if (mainnet) From 91265c269688ef7c9dcc82a9c9e3acc22a6b688b Mon Sep 17 00:00:00 2001 From: area363 Date: Fri, 10 Nov 2023 19:15:44 +0900 Subject: [PATCH 09/70] Revert "remove unused test" This reverts commit e5b1772eefa05947348b98a8eadfef5491e2bbb4. --- .Lib9c.Tests/StagePolicyTest.cs | 257 ++++++++++++++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 .Lib9c.Tests/StagePolicyTest.cs diff --git a/.Lib9c.Tests/StagePolicyTest.cs b/.Lib9c.Tests/StagePolicyTest.cs new file mode 100644 index 0000000000..506b134d7a --- /dev/null +++ b/.Lib9c.Tests/StagePolicyTest.cs @@ -0,0 +1,257 @@ +namespace Lib9c.Tests +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Threading.Tasks; + using Lib9c.Renderers; + using Lib9c.Tests.TestHelper; + using Libplanet.Action; + using Libplanet.Blockchain; + using Libplanet.Blockchain.Policies; + using Libplanet.Crypto; + using Libplanet.Types.Tx; + using Nekoyume.Action; + using Nekoyume.Blockchain; + using Nekoyume.Blockchain.Policy; + using Serilog.Core; + using Xunit; + + public class StagePolicyTest + { + private readonly PrivateKey[] _accounts; + + private readonly Dictionary _txs; + + public StagePolicyTest() + { + _accounts = new[] + { + new PrivateKey(), + new PrivateKey(), + new PrivateKey(), + new PrivateKey(), + }; + _txs = _accounts.ToDictionary( + acc => acc.ToAddress(), + acc => Enumerable + .Range(0, 10) + .Select( + n => Transaction.Create( + n, + acc, + default, + new ActionBase[0].ToPlainValues() + ) + ) + .ToArray() + ); + } + + [Fact] + public void Stage() + { + NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); + BlockChain chain = MakeChainWithStagePolicy(stagePolicy); + + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][0]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][1]); + stagePolicy.Stage(chain, _txs[_accounts[1].ToAddress()][0]); + stagePolicy.Stage(chain, _txs[_accounts[2].ToAddress()][0]); + + AssertTxs( + chain, + stagePolicy, + _txs[_accounts[0].ToAddress()][0], + _txs[_accounts[0].ToAddress()][1], + _txs[_accounts[1].ToAddress()][0], + _txs[_accounts[2].ToAddress()][0] + ); + } + + [Fact] + public void StageOverQuota() + { + NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); + BlockChain chain = MakeChainWithStagePolicy(stagePolicy); + + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][0]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][1]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][2]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][3]); + + AssertTxs( + chain, + stagePolicy, + _txs[_accounts[0].ToAddress()][0], + _txs[_accounts[0].ToAddress()][1] + ); + } + + [Fact] + public void StageOverQuotaInverseOrder() + { + NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); + BlockChain chain = MakeChainWithStagePolicy(stagePolicy); + + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][3]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][2]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][1]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][0]); + + AssertTxs( + chain, + stagePolicy, + _txs[_accounts[0].ToAddress()][0], + _txs[_accounts[0].ToAddress()][1] + ); + } + + [Fact] + public void StageOverQuotaOutOfOrder() + { + NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); + BlockChain chain = MakeChainWithStagePolicy(stagePolicy); + + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][2]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][1]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][3]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][0]); + + AssertTxs( + chain, + stagePolicy, + _txs[_accounts[0].ToAddress()][0], + _txs[_accounts[0].ToAddress()][1] + ); + } + + [Fact] + public void StageSameNonce() + { + NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); + BlockChain chain = MakeChainWithStagePolicy(stagePolicy); + var txA = Transaction.Create(0, _accounts[0], default, new ActionBase[0].ToPlainValues()); + var txB = Transaction.Create(0, _accounts[0], default, new ActionBase[0].ToPlainValues()); + var txC = Transaction.Create(0, _accounts[0], default, new ActionBase[0].ToPlainValues()); + + stagePolicy.Stage(chain, txA); + stagePolicy.Stage(chain, txB); + stagePolicy.Stage(chain, txC); + + AssertTxs(chain, stagePolicy, txA, txB); + } + + [Fact] + public async Task StateFromMultiThread() + { + NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); + BlockChain chain = MakeChainWithStagePolicy(stagePolicy); + + await Task.WhenAll( + Enumerable + .Range(0, 40) + .Select(i => Task.Run(() => + { + stagePolicy.Stage(chain, _txs[_accounts[i / 10].ToAddress()][i % 10]); + })) + ); + AssertTxs( + chain, + stagePolicy, + _txs[_accounts[0].ToAddress()][0], + _txs[_accounts[0].ToAddress()][1], + _txs[_accounts[1].ToAddress()][0], + _txs[_accounts[1].ToAddress()][1], + _txs[_accounts[2].ToAddress()][0], + _txs[_accounts[2].ToAddress()][1], + _txs[_accounts[3].ToAddress()][0], + _txs[_accounts[3].ToAddress()][1] + ); + } + + [Fact] + public void IterateAfterUnstage() + { + NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); + BlockChain chain = MakeChainWithStagePolicy(stagePolicy); + + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][0]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][1]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][2]); + stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][3]); + + AssertTxs( + chain, + stagePolicy, + _txs[_accounts[0].ToAddress()][0], + _txs[_accounts[0].ToAddress()][1] + ); + + stagePolicy.Unstage(chain, _txs[_accounts[0].ToAddress()][0].Id); + + AssertTxs( + chain, + stagePolicy, + _txs[_accounts[0].ToAddress()][1], + _txs[_accounts[0].ToAddress()][2] + ); + } + + [Fact] + public void CalculateNextTxNonceCorrectWhenTxOverQuota() + { + NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); + BlockChain chain = MakeChainWithStagePolicy(stagePolicy); + + long nextTxNonce = chain.GetNextTxNonce(_accounts[0].ToAddress()); + Assert.Equal(0, nextTxNonce); + var txA = Transaction.Create(nextTxNonce, _accounts[0], default, new ActionBase[0].ToPlainValues()); + stagePolicy.Stage(chain, txA); + + nextTxNonce = chain.GetNextTxNonce(_accounts[0].ToAddress()); + Assert.Equal(1, nextTxNonce); + var txB = Transaction.Create(nextTxNonce, _accounts[0], default, new ActionBase[0].ToPlainValues()); + stagePolicy.Stage(chain, txB); + + nextTxNonce = chain.GetNextTxNonce(_accounts[0].ToAddress()); + Assert.Equal(2, nextTxNonce); + var txC = Transaction.Create(nextTxNonce, _accounts[0], default, new ActionBase[0].ToPlainValues()); + stagePolicy.Stage(chain, txC); + + nextTxNonce = chain.GetNextTxNonce(_accounts[0].ToAddress()); + Assert.Equal(3, nextTxNonce); + + AssertTxs( + chain, + stagePolicy, + txA, + txB); + } + + private void AssertTxs(BlockChain blockChain, NCStagePolicy policy, params Transaction[] txs) + { + foreach (Transaction tx in txs) + { + Assert.Equal(tx, policy.Get(blockChain, tx.Id, filtered: true)); + } + + Assert.Equal( + txs.ToHashSet(), + policy.Iterate(blockChain, filtered: true).ToHashSet() + ); + } + + private BlockChain MakeChainWithStagePolicy(NCStagePolicy stagePolicy) + { + BlockPolicySource blockPolicySource = new BlockPolicySource(); + IBlockPolicy policy = blockPolicySource.GetPolicy(); + BlockChain chain = + BlockChainHelper.MakeBlockChain( + blockRenderers: new[] { new BlockRenderer() }, + policy: policy, + stagePolicy: stagePolicy); + return chain; + } + } +} From 76ceee1d2f725a4d909067cc9380328060a0c850 Mon Sep 17 00:00:00 2001 From: area363 Date: Fri, 10 Nov 2023 19:15:53 +0900 Subject: [PATCH 10/70] Revert "move NCStagePolicy and IAccessControlService to headless" This reverts commit 92bb173f9c4852dfc841734a14fdeb43f872cb7c. --- .../IAccessControlService.cs | 9 ++ Lib9c.Policy/NCStagePolicy.cs | 140 ++++++++++++++++++ 2 files changed, 149 insertions(+) create mode 100644 Lib9c.Policy/AccessControlService/IAccessControlService.cs create mode 100644 Lib9c.Policy/NCStagePolicy.cs diff --git a/Lib9c.Policy/AccessControlService/IAccessControlService.cs b/Lib9c.Policy/AccessControlService/IAccessControlService.cs new file mode 100644 index 0000000000..42e7dc1208 --- /dev/null +++ b/Lib9c.Policy/AccessControlService/IAccessControlService.cs @@ -0,0 +1,9 @@ +using Libplanet.Crypto; + +namespace Nekoyume.Blockchain +{ + public interface IAccessControlService + { + public int? GetTxQuota(Address address); + } +} diff --git a/Lib9c.Policy/NCStagePolicy.cs b/Lib9c.Policy/NCStagePolicy.cs new file mode 100644 index 0000000000..0dbd00c1f5 --- /dev/null +++ b/Lib9c.Policy/NCStagePolicy.cs @@ -0,0 +1,140 @@ +namespace Nekoyume.Blockchain +{ + using System; + using System.Collections.Concurrent; + using System.Collections.Generic; + using System.Collections.Immutable; + using System.Linq; + using Libplanet.Blockchain; + using Libplanet.Blockchain.Policies; + using Libplanet.Crypto; + using Libplanet.Types.Tx; + + public class NCStagePolicy : IStagePolicy + { + private readonly VolatileStagePolicy _impl; + private readonly ConcurrentDictionary> _txs; + private readonly int _quotaPerSigner; + private IAccessControlService? _accessControlService; + + public NCStagePolicy(TimeSpan txLifeTime, int quotaPerSigner, IAccessControlService? accessControlService = null) + { + if (quotaPerSigner < 1) + { + throw new ArgumentOutOfRangeException( + $"{nameof(quotaPerSigner)} must be positive: ${quotaPerSigner}"); + } + + _txs = new ConcurrentDictionary>(); + _quotaPerSigner = quotaPerSigner; + _impl = (txLifeTime == default) + ? new VolatileStagePolicy() + : new VolatileStagePolicy(txLifeTime); + + _accessControlService = accessControlService; + } + + public Transaction Get(BlockChain blockChain, TxId id, bool filtered = true) + => _impl.Get(blockChain, id, filtered); + + public long GetNextTxNonce(BlockChain blockChain, Address address) + => _impl.GetNextTxNonce(blockChain, address); + + public void Ignore(BlockChain blockChain, TxId id) + => _impl.Ignore(blockChain, id); + + public bool Ignores(BlockChain blockChain, TxId id) + => _impl.Ignores(blockChain, id); + + public IEnumerable Iterate(BlockChain blockChain, bool filtered = true) + { + if (filtered) + { + var txsPerSigner = new Dictionary>(); + foreach (Transaction tx in _impl.Iterate(blockChain, filtered)) + { + if (!txsPerSigner.TryGetValue(tx.Signer, out var s)) + { + txsPerSigner[tx.Signer] = s = new SortedSet(new TxComparer()); + } + + s.Add(tx); + int txQuotaPerSigner = _quotaPerSigner; + + // update txQuotaPerSigner if ACS returns a value for the signer. + if (_accessControlService?.GetTxQuota(tx.Signer) is { } acsTxQuota) + { + txQuotaPerSigner = acsTxQuota; + } + + + if (s.Count > txQuotaPerSigner) + { + s.Remove(s.Max); + } + } + +#pragma warning disable LAA1002 // DictionariesOrSetsShouldBeOrderedToEnumerate + return txsPerSigner.Values.SelectMany(i => i); +#pragma warning restore LAA1002 // DictionariesOrSetsShouldBeOrderedToEnumerate + } + else + { + return _impl.Iterate(blockChain, filtered); + } + } + + public bool Stage(BlockChain blockChain, Transaction transaction) + { + if (_accessControlService?.GetTxQuota(transaction.Signer) is { } acsTxQuota + && acsTxQuota == 0) + { + return false; + } + + var deniedTxs = new[] + { + // CreatePledge Transaction with 50000 addresses + TxId.FromHex("300826da62b595d8cd663dadf04995a7411534d1cdc17dac75ce88754472f774"), + // CreatePledge Transaction with 5000 addresses + TxId.FromHex("210d1374d8f068de657de6b991e63888da9cadbc68e505ac917b35568b5340f8"), + }; + if (deniedTxs.Contains(transaction.Id)) + { + return false; + } + + return _impl.Stage(blockChain, transaction); + } + + public bool Unstage(BlockChain blockChain, TxId id) + => _impl.Unstage(blockChain, id); + + private class TxComparer : IComparer + { + public int Compare(Transaction x, Transaction y) + { + if (x.Nonce < y.Nonce) + { + return -1; + } + else if (x.Nonce > y.Nonce) + { + return 1; + } + else if (x.Timestamp < y.Timestamp) + { + return -1; + } + else if (x.Timestamp > y.Timestamp) + { + return 1; + } + else + { + return 0; + } + } + } + } +} From 1f4c33a75420569e23f943c4c2343b18bf867e26 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Mon, 13 Nov 2023 13:55:30 +0900 Subject: [PATCH 11/70] Remove leftover rehearsal related code --- .Lib9c.Tests/Action/AddRedeemCodeTest.cs | 21 ---------- .Lib9c.Tests/Action/ChargeActionPointTest.cs | 29 ------------- .../Action/Coupons/IssueCouponsTest.cs | 18 -------- .../Action/Coupons/RedeemCouponTest.cs | 38 ----------------- .../Action/Coupons/TransferCouponsTest.cs | 41 ------------------- .../Action/CreatePendingActivationTest.cs | 24 ----------- .Lib9c.Tests/Action/RedeemCode0Test.cs | 23 ----------- .Lib9c.Tests/Action/RedeemCodeTest.cs | 32 --------------- .../Action/Craft/UnlockCraftAction.cs | 5 --- .../Action/Craft/UnlockRecipe.cs | 5 --- .../Action/CreateArenaDummy.cs | 4 -- .../Action/CreateOrReplaceAvatar.cs | 5 --- Lib9c.DevExtensions/Action/CreateTestbed.cs | 37 ----------------- Lib9c.DevExtensions/Action/FaucetCurrency.cs | 5 --- Lib9c.DevExtensions/Action/FaucetRune.cs | 5 --- Lib9c.DevExtensions/Action/ManipulateState.cs | 5 --- .../Action/Stage/ClearStage.cs | 5 --- Lib9c/Action/AddRedeemCode.cs | 5 --- Lib9c/Action/AuraSummon.cs | 5 --- Lib9c/Action/BattleGrandFinale.cs | 5 --- Lib9c/Action/BattleGrandFinale1.cs | 4 -- Lib9c/Action/BattleGrandFinale2.cs | 5 --- Lib9c/Action/BuyMultiple.cs | 23 ----------- Lib9c/Action/CancelMonsterCollect.cs | 6 --- Lib9c/Action/CancelProductRegistration.cs | 4 -- Lib9c/Action/CancelProductRegistration0.cs | 4 -- Lib9c/Action/ChargeActionPoint.cs | 10 ----- Lib9c/Action/ChargeActionPoint0.cs | 4 -- Lib9c/Action/ChargeActionPoint2.cs | 4 -- Lib9c/Action/ClaimRaidReward.cs | 4 -- Lib9c/Action/ClaimWordBossKillReward.cs | 4 -- Lib9c/Action/Coupons/IssueCoupons.cs | 7 ---- Lib9c/Action/Coupons/RedeemCoupon.cs | 12 ------ Lib9c/Action/CreatePendingActivation.cs | 4 -- .../Action/Garages/DeliverToOthersGarages.cs | 5 --- Lib9c/Action/Garages/LoadIntoMyGarages.cs | 5 --- Lib9c/Action/Garages/UnloadFromMyGarages.cs | 5 --- Lib9c/Action/Grinding.cs | 17 -------- Lib9c/Action/Grinding0.cs | 17 -------- Lib9c/Action/InitializeStates.cs | 31 -------------- .../Action/MigrationActivatedAccountsState.cs | 4 -- Lib9c/Action/MigrationAvatarState.cs | 4 -- Lib9c/Action/MigrationLegacyShop.cs | 13 ------ Lib9c/Action/MigrationLegacyShop0.cs | 8 ---- Lib9c/Action/PatchTableSheet.cs | 7 ---- Lib9c/Action/PetEnhancement.cs | 5 --- Lib9c/Action/PrepareRewardAssets.cs | 7 ---- Lib9c/Action/ReRegisterProduct.cs | 4 -- Lib9c/Action/ReRegisterProduct0.cs | 4 -- Lib9c/Action/RedeemCode.cs | 13 ------ Lib9c/Action/RedeemCode0.cs | 9 ---- Lib9c/Action/RedeemCode2.cs | 12 ------ Lib9c/Action/RenewAdminState.cs | 5 --- Lib9c/Action/RuneEnhancement.cs | 4 -- Lib9c/Action/RuneEnhancement0.cs | 4 -- Lib9c/Action/SecureMiningReward.cs | 8 ---- Lib9c/Action/UnlockEquipmentRecipe.cs | 11 ----- Lib9c/Action/UnlockEquipmentRecipe1.cs | 10 ----- Lib9c/Action/UnlockRuneSlot.cs | 5 --- Lib9c/Action/UnlockWorld.cs | 10 ----- Lib9c/Action/UnlockWorld1.cs | 9 ---- 61 files changed, 648 deletions(-) diff --git a/.Lib9c.Tests/Action/AddRedeemCodeTest.cs b/.Lib9c.Tests/Action/AddRedeemCodeTest.cs index 95dd080a1c..f527e8beec 100644 --- a/.Lib9c.Tests/Action/AddRedeemCodeTest.cs +++ b/.Lib9c.Tests/Action/AddRedeemCodeTest.cs @@ -105,26 +105,5 @@ public void ExecuteThrowSheetRowValidateException() }) ); } - - [Fact] - public void Rehearsal() - { - var action = new AddRedeemCode - { - redeemCsv = "test", - }; - - var nextState = action.Execute(new ActionContext - { - BlockIndex = 0, - PreviousState = new Account(MockState.Empty), - Rehearsal = true, - }); - - Assert.Equal( - nextState.Delta.UpdatedAddresses, - new[] { Addresses.RedeemCode }.ToImmutableHashSet() - ); - } } } diff --git a/.Lib9c.Tests/Action/ChargeActionPointTest.cs b/.Lib9c.Tests/Action/ChargeActionPointTest.cs index 37a8326ab0..c02d549f7f 100644 --- a/.Lib9c.Tests/Action/ChargeActionPointTest.cs +++ b/.Lib9c.Tests/Action/ChargeActionPointTest.cs @@ -168,34 +168,5 @@ public void Execute_Throw_Exception(bool useAvatarAddress, bool useTradable, boo }) ); } - - [Fact] - public void Rehearsal() - { - var action = new ChargeActionPoint - { - avatarAddress = _avatarAddress, - }; - - var updatedAddresses = new List
() - { - _avatarAddress, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }; - - var state = new Account(MockState.Empty); - - var nextState = action.Execute(new ActionContext() - { - PreviousState = state, - Signer = _agentAddress, - BlockIndex = 0, - Rehearsal = true, - }); - - Assert.Equal(updatedAddresses.ToImmutableHashSet(), nextState.Delta.UpdatedAddresses); - } } } diff --git a/.Lib9c.Tests/Action/Coupons/IssueCouponsTest.cs b/.Lib9c.Tests/Action/Coupons/IssueCouponsTest.cs index 6d24341603..4a2f2a5060 100644 --- a/.Lib9c.Tests/Action/Coupons/IssueCouponsTest.cs +++ b/.Lib9c.Tests/Action/Coupons/IssueCouponsTest.cs @@ -69,24 +69,6 @@ public void Execute() }) .GetCouponWallet(CouponsFixture.AgentAddress1)); - Assert.Equal( - Bencodex.Types.Null.Value, - new IssueCoupons( - ImmutableDictionary.Empty - .Add(CouponsFixture.RewardSet1, 1) - .Add(CouponsFixture.RewardSet2, 2), - CouponsFixture.AgentAddress1) - .Execute( - new ActionContext - { - PreviousState = state, - Rehearsal = true, - RandomSeed = random.Seed, - BlockIndex = 0, - Signer = CouponsFixture.AgentAddress1, - }) - .GetState(CouponsFixture.AgentAddress1.Derive(SerializeKeys.CouponWalletKey))); - state = new IssueCoupons( ImmutableDictionary.Empty .Add(CouponsFixture.RewardSet1, 1) diff --git a/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs b/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs index 5133261171..1c1d0d6336 100644 --- a/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs +++ b/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs @@ -137,44 +137,6 @@ public void Execute() CouponsFixture.Guid3, new Coupon(CouponsFixture.Guid3, CouponsFixture.RewardSet3)); - state = state - .SetCouponWallet(CouponsFixture.AgentAddress1, agent1CouponWallet) - .SetCouponWallet(CouponsFixture.AgentAddress2, agent2CouponWallet); - - var rehearsedState = new RedeemCoupon(CouponsFixture.Guid1, agent1Avatar0Address) - .Execute( - new ActionContext - { - PreviousState = state, - Rehearsal = true, - Signer = CouponsFixture.AgentAddress1, - RandomSeed = random.Seed, - }); - - Assert.Equal( - ActionBase.MarkChanged, - rehearsedState.GetState(agent1Avatar0Address)); - - Assert.Equal( - ActionBase.MarkChanged, - rehearsedState.GetState( - agent1Avatar0Address.Derive(SerializeKeys.LegacyInventoryKey))); - - Assert.Equal( - ActionBase.MarkChanged, - rehearsedState.GetState( - agent1Avatar0Address.Derive(SerializeKeys.LegacyWorldInformationKey))); - - Assert.Equal( - ActionBase.MarkChanged, - rehearsedState.GetState( - agent1Avatar0Address.Derive(SerializeKeys.LegacyQuestListKey))); - - Assert.Equal( - ActionBase.MarkChanged, - rehearsedState.GetState( - CouponsFixture.AgentAddress1.Derive(SerializeKeys.CouponWalletKey))); - // can't redeem other person's coupon var expected = state.GetAvatarStateV2(agent1Avatar0Address); state = new RedeemCoupon(CouponsFixture.Guid3, agent1Avatar0Address) diff --git a/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs b/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs index fab6b8e805..c97dbe6b6b 100644 --- a/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs +++ b/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs @@ -135,47 +135,6 @@ public void Execute() Rehearsal = false, })); - state = state - .SetCouponWallet( - CouponsFixture.AgentAddress1, - ImmutableDictionary.Empty - .Add(CouponsFixture.Guid1, coupon1) - .Add(CouponsFixture.Guid2, coupon2) - .Add(CouponsFixture.Guid3, coupon3)) - .SetCouponWallet( - CouponsFixture.AgentAddress2, - ImmutableDictionary.Empty) - .SetCouponWallet( - CouponsFixture.AgentAddress3, - ImmutableDictionary.Empty); - - var rehearsedState = new TransferCoupons( - ImmutableDictionary>.Empty - .Add(CouponsFixture.AgentAddress2, ImmutableHashSet.Empty - .Add(CouponsFixture.Guid1) - .Add(CouponsFixture.Guid2)) - .Add(CouponsFixture.AgentAddress3, ImmutableHashSet.Empty - .Add(CouponsFixture.Guid3))) - .Execute( - new ActionContext - { - PreviousState = state, - Signer = CouponsFixture.AgentAddress1, - Rehearsal = true, - }); - Assert.Equal( - ActionBase.MarkChanged, - rehearsedState.GetState( - CouponsFixture.AgentAddress1.Derive(SerializeKeys.CouponWalletKey))); - Assert.Equal( - ActionBase.MarkChanged, - rehearsedState.GetState( - CouponsFixture.AgentAddress2.Derive(SerializeKeys.CouponWalletKey))); - Assert.Equal( - ActionBase.MarkChanged, - rehearsedState.GetState( - CouponsFixture.AgentAddress3.Derive(SerializeKeys.CouponWalletKey))); - // multiple transfer state = new TransferCoupons( ImmutableDictionary>.Empty diff --git a/.Lib9c.Tests/Action/CreatePendingActivationTest.cs b/.Lib9c.Tests/Action/CreatePendingActivationTest.cs index df64cc87dc..9ae2a4f868 100644 --- a/.Lib9c.Tests/Action/CreatePendingActivationTest.cs +++ b/.Lib9c.Tests/Action/CreatePendingActivationTest.cs @@ -71,29 +71,5 @@ public void CheckPermission() }) ); } - - [Fact] - public void Rehearsal() - { - var nonce = new byte[] { 0x00, 0x01, 0x02, 0x03 }; - var pubKey = new PublicKey( - ByteUtil.ParseHex("02ed49dbe0f2c34d9dff8335d6dd9097f7a3ef17dfb5f048382eebc7f451a50aa1") - ); - var pendingActivation = new PendingActivationState(nonce, pubKey); - var action = new CreatePendingActivation(pendingActivation); - IAccount nextState = action.Execute( - new ActionContext() - { - BlockIndex = 101, - Signer = default, - Rehearsal = true, - PreviousState = new Account(MockState.Empty), - } - ); - Assert.Equal( - ImmutableHashSet.Create(pendingActivation.address), - nextState.Delta.UpdatedAddresses - ); - } } } diff --git a/.Lib9c.Tests/Action/RedeemCode0Test.cs b/.Lib9c.Tests/Action/RedeemCode0Test.cs index 366fea6497..1e3cb7bb37 100644 --- a/.Lib9c.Tests/Action/RedeemCode0Test.cs +++ b/.Lib9c.Tests/Action/RedeemCode0Test.cs @@ -112,28 +112,5 @@ public void Execute() nextRedeemCodeState.Redeem(redeemCode.Code, redeemCode.AvatarAddress); }); } - - [Fact] - public void Rehearsal() - { - var redeemCode = new RedeemCode0( - string.Empty, - _avatarAddress - ); - - IAccount nextState = redeemCode.Execute(new ActionContext() - { - BlockIndex = 1, - Miner = default, - PreviousState = new Account(MockState.Empty), - Rehearsal = true, - Signer = _agentAddress, - }); - - Assert.Equal( - nextState.Delta.UpdatedAddresses, - new[] { _avatarAddress, _agentAddress, RedeemCodeState.Address, GoldCurrencyState.Address }.ToImmutableHashSet() - ); - } } } diff --git a/.Lib9c.Tests/Action/RedeemCodeTest.cs b/.Lib9c.Tests/Action/RedeemCodeTest.cs index f3efda7057..63a732fa1e 100644 --- a/.Lib9c.Tests/Action/RedeemCodeTest.cs +++ b/.Lib9c.Tests/Action/RedeemCodeTest.cs @@ -127,37 +127,5 @@ public void Execute(bool backward) nextRedeemCodeState.Redeem(redeemCode.Code, redeemCode.AvatarAddress); }); } - - [Fact] - public void Rehearsal() - { - var redeemCode = new RedeemCode( - string.Empty, - _avatarAddress - ); - - IAccount nextState = redeemCode.Execute(new ActionContext() - { - BlockIndex = 1, - Miner = default, - PreviousState = new Account(MockState.Empty), - Rehearsal = true, - Signer = _agentAddress, - }); - - Assert.Equal( - new[] - { - _avatarAddress, - _agentAddress, - RedeemCodeState.Address, - GoldCurrencyState.Address, - _avatarAddress.Derive(LegacyInventoryKey), - _avatarAddress.Derive(LegacyWorldInformationKey), - _avatarAddress.Derive(LegacyQuestListKey), - }.ToImmutableHashSet(), - nextState.Delta.UpdatedAddresses - ); - } } } diff --git a/Lib9c.DevExtensions/Action/Craft/UnlockCraftAction.cs b/Lib9c.DevExtensions/Action/Craft/UnlockCraftAction.cs index 8adf7f651a..9e37655d7a 100644 --- a/Lib9c.DevExtensions/Action/Craft/UnlockCraftAction.cs +++ b/Lib9c.DevExtensions/Action/Craft/UnlockCraftAction.cs @@ -26,11 +26,6 @@ public class UnlockCraftAction : GameAction public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var states = context.PreviousState; int targetStage; diff --git a/Lib9c.DevExtensions/Action/Craft/UnlockRecipe.cs b/Lib9c.DevExtensions/Action/Craft/UnlockRecipe.cs index e02549225d..b00bb21735 100644 --- a/Lib9c.DevExtensions/Action/Craft/UnlockRecipe.cs +++ b/Lib9c.DevExtensions/Action/Craft/UnlockRecipe.cs @@ -21,11 +21,6 @@ public class UnlockRecipe : GameAction public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var states = context.PreviousState; var recipeIdList = List.Empty; for (var i = 1; i <= TargetStage; i++) diff --git a/Lib9c.DevExtensions/Action/CreateArenaDummy.cs b/Lib9c.DevExtensions/Action/CreateArenaDummy.cs index ea46bcccaf..ef74b1a783 100644 --- a/Lib9c.DevExtensions/Action/CreateArenaDummy.cs +++ b/Lib9c.DevExtensions/Action/CreateArenaDummy.cs @@ -57,10 +57,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } for (var i = 0; i < accountCount; i++) { diff --git a/Lib9c.DevExtensions/Action/CreateOrReplaceAvatar.cs b/Lib9c.DevExtensions/Action/CreateOrReplaceAvatar.cs index 40036f080a..0b6e8df3c9 100644 --- a/Lib9c.DevExtensions/Action/CreateOrReplaceAvatar.cs +++ b/Lib9c.DevExtensions/Action/CreateOrReplaceAvatar.cs @@ -367,11 +367,6 @@ public CreateOrReplaceAvatar( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var random = context.GetRandom(); return Execute( context.PreviousState, diff --git a/Lib9c.DevExtensions/Action/CreateTestbed.cs b/Lib9c.DevExtensions/Action/CreateTestbed.cs index 36b9540021..da77b7f942 100644 --- a/Lib9c.DevExtensions/Action/CreateTestbed.cs +++ b/Lib9c.DevExtensions/Action/CreateTestbed.cs @@ -94,43 +94,6 @@ public override IAccount Execute(IActionContext context) var questListAddress = avatarAddress.Derive(LegacyQuestListKey); var orderReceiptAddress = OrderDigestListState.DeriveAddress(avatarAddress); - if (context.Rehearsal) - { - states = states.SetState(agentAddress, MarkChanged); - for (var i = 0; i < AvatarState.CombinationSlotCapacity; i++) - { - var slotAddress = avatarAddress.Derive( - string.Format(CultureInfo.InvariantCulture, - CombinationSlotState.DeriveFormat, i)); - states = states.SetState(slotAddress, MarkChanged); - } - - states = states.SetState(avatarAddress, MarkChanged) - .SetState(Addresses.Ranking, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged); - - for (var i = 0; i < sellData.Items.Length; i++) - { - var itemAddress = Addresses.GetItemAddress(addedItemInfos[i].TradableId); - var orderAddress = Order.DeriveAddress(addedItemInfos[i].OrderId); - var shopAddress = ShardedShopStateV2.DeriveAddress( - sellData.Items[i].ItemSubType, - addedItemInfos[i].OrderId); - - states = states.SetState(avatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .MarkBalanceChanged( - context, GoldCurrencyMock, agentAddress, GoldCurrencyState.Address) - .SetState(orderReceiptAddress, MarkChanged) - .SetState(itemAddress, MarkChanged) - .SetState(orderAddress, MarkChanged) - .SetState(shopAddress, MarkChanged); - } - return states; - } - // Create Agent and avatar var existingAgentState = states.GetAgentState(agentAddress); var agentState = existingAgentState ?? new AgentState(agentAddress); diff --git a/Lib9c.DevExtensions/Action/FaucetCurrency.cs b/Lib9c.DevExtensions/Action/FaucetCurrency.cs index f3fe300fa5..06331a9983 100644 --- a/Lib9c.DevExtensions/Action/FaucetCurrency.cs +++ b/Lib9c.DevExtensions/Action/FaucetCurrency.cs @@ -23,11 +23,6 @@ public class FaucetCurrency : GameAction, IFaucetCurrency public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var states = context.PreviousState; if (FaucetNcg > 0) { diff --git a/Lib9c.DevExtensions/Action/FaucetRune.cs b/Lib9c.DevExtensions/Action/FaucetRune.cs index c913d0d38f..ad90cf1331 100644 --- a/Lib9c.DevExtensions/Action/FaucetRune.cs +++ b/Lib9c.DevExtensions/Action/FaucetRune.cs @@ -25,11 +25,6 @@ public class FaucetRune : GameAction, IFaucetRune public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var states = context.PreviousState; if (!(FaucetRuneInfos is null)) { diff --git a/Lib9c.DevExtensions/Action/ManipulateState.cs b/Lib9c.DevExtensions/Action/ManipulateState.cs index b746bf4ccf..5388497127 100644 --- a/Lib9c.DevExtensions/Action/ManipulateState.cs +++ b/Lib9c.DevExtensions/Action/ManipulateState.cs @@ -47,11 +47,6 @@ protected override void LoadPlainValueInternal( public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - return Execute(context, context.PreviousState, StateList, BalanceList); } diff --git a/Lib9c.DevExtensions/Action/Stage/ClearStage.cs b/Lib9c.DevExtensions/Action/Stage/ClearStage.cs index 62d68b2365..41b8f7dfc5 100644 --- a/Lib9c.DevExtensions/Action/Stage/ClearStage.cs +++ b/Lib9c.DevExtensions/Action/Stage/ClearStage.cs @@ -23,11 +23,6 @@ public class ClearStage : GameAction public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState; - } - var states = context.PreviousState; var worldInformation = new WorldInformation( context.BlockIndex, diff --git a/Lib9c/Action/AddRedeemCode.cs b/Lib9c/Action/AddRedeemCode.cs index 6c4a0ae816..1e81fcc3b7 100644 --- a/Lib9c/Action/AddRedeemCode.cs +++ b/Lib9c/Action/AddRedeemCode.cs @@ -21,11 +21,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states - .SetState(Addresses.RedeemCode, MarkChanged); - } CheckPermission(context); diff --git a/Lib9c/Action/AuraSummon.cs b/Lib9c/Action/AuraSummon.cs index f1e6fb614d..3146614dc4 100644 --- a/Lib9c/Action/AuraSummon.cs +++ b/Lib9c/Action/AuraSummon.cs @@ -181,11 +181,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug($"{addressesHex} AuraSummon Exec. Started."); diff --git a/Lib9c/Action/BattleGrandFinale.cs b/Lib9c/Action/BattleGrandFinale.cs index db1abd02d9..56e5ae31ee 100644 --- a/Lib9c/Action/BattleGrandFinale.cs +++ b/Lib9c/Action/BattleGrandFinale.cs @@ -81,11 +81,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex( context, myAvatarAddress, diff --git a/Lib9c/Action/BattleGrandFinale1.cs b/Lib9c/Action/BattleGrandFinale1.cs index fb300d663d..bc94a48bb1 100644 --- a/Lib9c/Action/BattleGrandFinale1.cs +++ b/Lib9c/Action/BattleGrandFinale1.cs @@ -80,10 +80,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex( diff --git a/Lib9c/Action/BattleGrandFinale2.cs b/Lib9c/Action/BattleGrandFinale2.cs index 524c890776..17214b3fb0 100644 --- a/Lib9c/Action/BattleGrandFinale2.cs +++ b/Lib9c/Action/BattleGrandFinale2.cs @@ -81,11 +81,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addressesHex = GetSignerAndOtherAddressesHex( context, myAvatarAddress, diff --git a/Lib9c/Action/BuyMultiple.cs b/Lib9c/Action/BuyMultiple.cs index cbcdcec2bb..a60001c882 100644 --- a/Lib9c/Action/BuyMultiple.cs +++ b/Lib9c/Action/BuyMultiple.cs @@ -222,29 +222,6 @@ public override IAccount Execute(IActionContext context) IActionContext ctx = context; var states = ctx.PreviousState; - if (ctx.Rehearsal) - { - states = states - .SetState(buyerAvatarAddress, MarkChanged) - .SetState(ctx.Signer, MarkChanged); - - foreach (var info in purchaseInfos) - { - var sellerAgentAddress = info.sellerAgentAddress; - var sellerAvatarAddress = info.sellerAvatarAddress; - - states = states.SetState(sellerAvatarAddress, MarkChanged) - .MarkBalanceChanged( - ctx, - GoldCurrencyMock, - ctx.Signer, - sellerAgentAddress, - GoldCurrencyState.Address); - } - - return states.SetState(ShopState.Address, MarkChanged); - } - CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); var availableInfos = purchaseInfos.Where(p => !(p is null)); diff --git a/Lib9c/Action/CancelMonsterCollect.cs b/Lib9c/Action/CancelMonsterCollect.cs index 8f22c04ad2..519582874f 100644 --- a/Lib9c/Action/CancelMonsterCollect.cs +++ b/Lib9c/Action/CancelMonsterCollect.cs @@ -37,12 +37,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); IAccount states = context.PreviousState; Address collectionAddress = MonsterCollectionState0.DeriveAddress(context.Signer, collectRound); - if (context.Rehearsal) - { - return states - .SetState(collectionAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, collectionAddress, context.Signer); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/CancelProductRegistration.cs b/Lib9c/Action/CancelProductRegistration.cs index f16ce8d2bd..5462cc6ea2 100644 --- a/Lib9c/Action/CancelProductRegistration.cs +++ b/Lib9c/Action/CancelProductRegistration.cs @@ -29,10 +29,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } if (!ProductInfos.Any()) { diff --git a/Lib9c/Action/CancelProductRegistration0.cs b/Lib9c/Action/CancelProductRegistration0.cs index 62dc761cbb..e913e91e94 100644 --- a/Lib9c/Action/CancelProductRegistration0.cs +++ b/Lib9c/Action/CancelProductRegistration0.cs @@ -30,10 +30,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } if (!ProductInfos.Any()) { diff --git a/Lib9c/Action/ChargeActionPoint.cs b/Lib9c/Action/ChargeActionPoint.cs index fb9b92f5bb..49e8811d3b 100644 --- a/Lib9c/Action/ChargeActionPoint.cs +++ b/Lib9c/Action/ChargeActionPoint.cs @@ -38,16 +38,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); - - if (context.Rehearsal) - { - return states - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(avatarAddress, MarkChanged); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, avatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}ChargeActionPoint exec started", addressesHex); diff --git a/Lib9c/Action/ChargeActionPoint0.cs b/Lib9c/Action/ChargeActionPoint0.cs index 736a5a9be5..2b1be05e6b 100644 --- a/Lib9c/Action/ChargeActionPoint0.cs +++ b/Lib9c/Action/ChargeActionPoint0.cs @@ -28,10 +28,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states.SetState(avatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/ChargeActionPoint2.cs b/Lib9c/Action/ChargeActionPoint2.cs index 9c27aa9b09..3bfceed128 100644 --- a/Lib9c/Action/ChargeActionPoint2.cs +++ b/Lib9c/Action/ChargeActionPoint2.cs @@ -27,10 +27,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states.SetState(avatarAddress, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/ClaimRaidReward.cs b/Lib9c/Action/ClaimRaidReward.cs index 0df5dee0e8..eca6152364 100644 --- a/Lib9c/Action/ClaimRaidReward.cs +++ b/Lib9c/Action/ClaimRaidReward.cs @@ -37,10 +37,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; diff --git a/Lib9c/Action/ClaimWordBossKillReward.cs b/Lib9c/Action/ClaimWordBossKillReward.cs index 3fb56aa21e..8e1e3df28f 100644 --- a/Lib9c/Action/ClaimWordBossKillReward.cs +++ b/Lib9c/Action/ClaimWordBossKillReward.cs @@ -27,10 +27,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } Dictionary sheets = states.GetSheets(sheetTypes: new [] { typeof(WorldBossCharacterSheet), diff --git a/Lib9c/Action/Coupons/IssueCoupons.cs b/Lib9c/Action/Coupons/IssueCoupons.cs index e3c8aca247..1e26c9014b 100644 --- a/Lib9c/Action/Coupons/IssueCoupons.cs +++ b/Lib9c/Action/Coupons/IssueCoupons.cs @@ -31,13 +31,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states.SetCouponWallet( - Recipient, - ImmutableDictionary.Create(), - rehearsal: true); - } CheckPermission(context); diff --git a/Lib9c/Action/Coupons/RedeemCoupon.cs b/Lib9c/Action/Coupons/RedeemCoupon.cs index 334fffe076..9e10145015 100644 --- a/Lib9c/Action/Coupons/RedeemCoupon.cs +++ b/Lib9c/Action/Coupons/RedeemCoupon.cs @@ -36,18 +36,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(AvatarAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetCouponWallet( - context.Signer, - ImmutableDictionary.Create(), - rehearsal: true); - } if (!states.TryGetAvatarStateV2( context.Signer, diff --git a/Lib9c/Action/CreatePendingActivation.cs b/Lib9c/Action/CreatePendingActivation.cs index 1d9c3d3f65..efd4617853 100644 --- a/Lib9c/Action/CreatePendingActivation.cs +++ b/Lib9c/Action/CreatePendingActivation.cs @@ -45,10 +45,6 @@ public CreatePendingActivation(PendingActivationState activationKey) public override IAccount Execute(IActionContext context) { context.UseGas(1); - if (context.Rehearsal) - { - return context.PreviousState.SetState(PendingActivation.address, MarkChanged); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); CheckPermission(context); diff --git a/Lib9c/Action/Garages/DeliverToOthersGarages.cs b/Lib9c/Action/Garages/DeliverToOthersGarages.cs index 28787beaff..32b830ac63 100644 --- a/Lib9c/Action/Garages/DeliverToOthersGarages.cs +++ b/Lib9c/Action/Garages/DeliverToOthersGarages.cs @@ -165,11 +165,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var state = context.PreviousState; - if (context.Rehearsal) - { - return state; - } - var addressesHex = GetSignerAndOtherAddressesHex(context); ValidateFields(addressesHex); state = SendBalances(context, state); diff --git a/Lib9c/Action/Garages/LoadIntoMyGarages.cs b/Lib9c/Action/Garages/LoadIntoMyGarages.cs index 7c61522a31..71d68511c7 100644 --- a/Lib9c/Action/Garages/LoadIntoMyGarages.cs +++ b/Lib9c/Action/Garages/LoadIntoMyGarages.cs @@ -127,11 +127,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var state = context.PreviousState; - if (context.Rehearsal) - { - return state; - } - var addressesHex = GetSignerAndOtherAddressesHex(context); ValidateFields(context.Signer, addressesHex); diff --git a/Lib9c/Action/Garages/UnloadFromMyGarages.cs b/Lib9c/Action/Garages/UnloadFromMyGarages.cs index 2c1ca799ab..961967afa0 100644 --- a/Lib9c/Action/Garages/UnloadFromMyGarages.cs +++ b/Lib9c/Action/Garages/UnloadFromMyGarages.cs @@ -122,11 +122,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var state = context.PreviousState; - if (context.Rehearsal) - { - return state; - } - var addressesHex = GetSignerAndOtherAddressesHex(context); ValidateFields(addressesHex); state = TransferFungibleAssetValues(context, state); diff --git a/Lib9c/Action/Grinding.cs b/Lib9c/Action/Grinding.cs index 39d994b088..61c68d73a2 100644 --- a/Lib9c/Action/Grinding.cs +++ b/Lib9c/Action/Grinding.cs @@ -41,23 +41,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = EquipmentIds.Aggregate(states, - (current, guid) => - current.SetState(Addresses.GetItemAddress(guid), MarkChanged)); - return states - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 0), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 1), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 2), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 3), MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}Grinding exec started", addressesHex); diff --git a/Lib9c/Action/Grinding0.cs b/Lib9c/Action/Grinding0.cs index f698652313..37a8233d3e 100644 --- a/Lib9c/Action/Grinding0.cs +++ b/Lib9c/Action/Grinding0.cs @@ -41,23 +41,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (ctx.Rehearsal) - { - states = EquipmentIds.Aggregate(states, - (current, guid) => - current.SetState(Addresses.GetItemAddress(guid), MarkChanged)); - return states - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 0), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 1), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 2), MarkChanged) - .SetState(MonsterCollectionState.DeriveAddress(context.Signer, 3), MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}Grinding exec started", addressesHex); diff --git a/Lib9c/Action/InitializeStates.cs b/Lib9c/Action/InitializeStates.cs index 3cc1c5c7e6..b59799c76a 100644 --- a/Lib9c/Action/InitializeStates.cs +++ b/Lib9c/Action/InitializeStates.cs @@ -114,37 +114,6 @@ public override IAccount Execute(IActionContext context) var weeklyArenaState = new WeeklyArenaState(0); var rankingState = new RankingState0(Ranking); - if (ctx.Rehearsal) - { - states = states.SetState(RankingState0.Address, MarkChanged); - states = states.SetState(ShopState.Address, MarkChanged); -#pragma warning disable LAA1002 - states = TableSheets - .Aggregate(states, (current, pair) => - current.SetState(Addresses.TableSheet.Derive(pair.Key), MarkChanged)); - states = rankingState.RankingMap - .Aggregate(states, (current, pair) => - current.SetState(pair.Key, MarkChanged)); -#pragma warning restore LAA1002 - states = states.SetState(weeklyArenaState.address, MarkChanged); - states = states.SetState(GameConfigState.Address, MarkChanged); - states = states.SetState(RedeemCodeState.Address, MarkChanged); - states = states.SetState(AdminState.Address, MarkChanged); - states = states.SetState(ActivatedAccountsState.Address, MarkChanged); - states = states.SetState(GoldCurrencyState.Address, MarkChanged); - states = states.SetState(Addresses.GoldDistribution, MarkChanged); - foreach (var rawPending in PendingActivations) - { - states = states.SetState( - new PendingActivationState((Dictionary)rawPending).address, - MarkChanged - ); - } - - states = states.SetState(AuthorizedMinersState.Address, MarkChanged); - states = states.SetState(CreditsState.Address, MarkChanged); - return states; - } if (ctx.BlockIndex != 0) { diff --git a/Lib9c/Action/MigrationActivatedAccountsState.cs b/Lib9c/Action/MigrationActivatedAccountsState.cs index df6739e5e4..98ee40e5a9 100644 --- a/Lib9c/Action/MigrationActivatedAccountsState.cs +++ b/Lib9c/Action/MigrationActivatedAccountsState.cs @@ -22,10 +22,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states.SetState(Nekoyume.Addresses.ActivatedAccount, MarkChanged); - } CheckPermission(context); diff --git a/Lib9c/Action/MigrationAvatarState.cs b/Lib9c/Action/MigrationAvatarState.cs index 2e4a45474c..33c969ebb2 100644 --- a/Lib9c/Action/MigrationAvatarState.cs +++ b/Lib9c/Action/MigrationAvatarState.cs @@ -26,10 +26,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckPermission(context); diff --git a/Lib9c/Action/MigrationLegacyShop.cs b/Lib9c/Action/MigrationLegacyShop.cs index 74ecbc303d..81a4a20d92 100644 --- a/Lib9c/Action/MigrationLegacyShop.cs +++ b/Lib9c/Action/MigrationLegacyShop.cs @@ -30,19 +30,6 @@ public override IAccount Execute(IActionContext context) var states = context.PreviousState; var sellerAvatarAddresses = _avatarAddressesHex.Select(a => new Address(a)).ToList(); - if (context.Rehearsal) - { - foreach (var avatarAddress in sellerAvatarAddresses) - { - var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); - states = states - .SetState(inventoryAddress, MarkChanged) - .SetState(avatarAddress, MarkChanged); - } - - return states.SetState(Addresses.Shop, MarkChanged); - } - CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); CheckPermission(context); diff --git a/Lib9c/Action/MigrationLegacyShop0.cs b/Lib9c/Action/MigrationLegacyShop0.cs index a38fa660a4..283ff9a8eb 100644 --- a/Lib9c/Action/MigrationLegacyShop0.cs +++ b/Lib9c/Action/MigrationLegacyShop0.cs @@ -23,14 +23,6 @@ public override IAccount Execute(IActionContext context) var states = context.PreviousState; var sellerAvatarAddresses = _avatarAddressesHex.Select(a => new Address(a)).ToList(); - if (context.Rehearsal) - { - states = sellerAvatarAddresses.Aggregate(states, - (current, sellerAvatarAddress) => current.SetState(sellerAvatarAddress, MarkChanged)); - - return states.SetState(Addresses.Shop, MarkChanged); - } - CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); CheckPermission(context); diff --git a/Lib9c/Action/PatchTableSheet.cs b/Lib9c/Action/PatchTableSheet.cs index 4ac1a61c44..4b6a187fde 100644 --- a/Lib9c/Action/PatchTableSheet.cs +++ b/Lib9c/Action/PatchTableSheet.cs @@ -43,13 +43,6 @@ public override IAccount Execute(IActionContext context) IActionContext ctx = context; var states = ctx.PreviousState; var sheetAddress = Addresses.TableSheet.Derive(TableName); - if (ctx.Rehearsal) - { - return states - .SetState(sheetAddress, MarkChanged) - .SetState(GameConfigState.Address, MarkChanged); - } - var addressesHex = GetSignerAndOtherAddressesHex(context); #if !LIB9C_DEV_EXTENSIONS && !UNITY_EDITOR diff --git a/Lib9c/Action/PetEnhancement.cs b/Lib9c/Action/PetEnhancement.cs index 4299ef0d2b..d82e4d841f 100644 --- a/Lib9c/Action/PetEnhancement.cs +++ b/Lib9c/Action/PetEnhancement.cs @@ -43,11 +43,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var addresses = GetSignerAndOtherAddressesHex(context, AvatarAddress); // NOTE: The `AvatarAddress` must contained in `Signer`'s `AgentState.avatarAddresses`. if (!Addresses.CheckAvatarAddrIsContainedInAgent(context.Signer, AvatarAddress)) diff --git a/Lib9c/Action/PrepareRewardAssets.cs b/Lib9c/Action/PrepareRewardAssets.cs index c5d2499cbd..017e94e633 100644 --- a/Lib9c/Action/PrepareRewardAssets.cs +++ b/Lib9c/Action/PrepareRewardAssets.cs @@ -46,13 +46,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - foreach (var asset in Assets) - { - return states.MarkBalanceChanged(context, asset.Currency, RewardPoolAddress); - } - } CheckPermission(context); diff --git a/Lib9c/Action/ReRegisterProduct.cs b/Lib9c/Action/ReRegisterProduct.cs index 83413d4d99..833dc24f91 100644 --- a/Lib9c/Action/ReRegisterProduct.cs +++ b/Lib9c/Action/ReRegisterProduct.cs @@ -28,10 +28,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } if (!ReRegisterInfos.Any()) { diff --git a/Lib9c/Action/ReRegisterProduct0.cs b/Lib9c/Action/ReRegisterProduct0.cs index 310a0f43c7..dabd435e5b 100644 --- a/Lib9c/Action/ReRegisterProduct0.cs +++ b/Lib9c/Action/ReRegisterProduct0.cs @@ -28,10 +28,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } if (!ReRegisterInfos.Any()) { diff --git a/Lib9c/Action/RedeemCode.cs b/Lib9c/Action/RedeemCode.cs index d9eb122206..c1ea1bddc2 100644 --- a/Lib9c/Action/RedeemCode.cs +++ b/Lib9c/Action/RedeemCode.cs @@ -48,19 +48,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(RedeemCodeState.Address, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .SetState(context.Signer, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, GoldCurrencyState.Address) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}RedeemCode exec started", addressesHex); diff --git a/Lib9c/Action/RedeemCode0.cs b/Lib9c/Action/RedeemCode0.cs index 1976866c3e..3cbea4423d 100644 --- a/Lib9c/Action/RedeemCode0.cs +++ b/Lib9c/Action/RedeemCode0.cs @@ -40,15 +40,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - states = states.SetState(RedeemCodeState.Address, MarkChanged); - states = states.SetState(AvatarAddress, MarkChanged); - states = states.SetState(context.Signer, MarkChanged); - states = states.MarkBalanceChanged(context, GoldCurrencyMock, GoldCurrencyState.Address); - states = states.MarkBalanceChanged(context, GoldCurrencyMock, context.Signer); - return states; - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/RedeemCode2.cs b/Lib9c/Action/RedeemCode2.cs index 8342167040..35a64cabe0 100644 --- a/Lib9c/Action/RedeemCode2.cs +++ b/Lib9c/Action/RedeemCode2.cs @@ -44,18 +44,6 @@ public override IAccount Execute(IActionContext context) var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = AvatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); - if (context.Rehearsal) - { - return states - .SetState(RedeemCodeState.Address, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .SetState(context.Signer, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, GoldCurrencyState.Address) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer); - } CheckObsolete(ActionObsoleteConfig.V100080ObsoleteIndex, context); diff --git a/Lib9c/Action/RenewAdminState.cs b/Lib9c/Action/RenewAdminState.cs index 47bb6c69fc..fdc0833b54 100644 --- a/Lib9c/Action/RenewAdminState.cs +++ b/Lib9c/Action/RenewAdminState.cs @@ -36,11 +36,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states - .SetState(Addresses.Admin, MarkChanged); - } if (TryGetAdminState(context, out AdminState adminState)) { diff --git a/Lib9c/Action/RuneEnhancement.cs b/Lib9c/Action/RuneEnhancement.cs index 232eaba627..966ff2c803 100644 --- a/Lib9c/Action/RuneEnhancement.cs +++ b/Lib9c/Action/RuneEnhancement.cs @@ -47,10 +47,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } if (!states.TryGetAvatarStateV2(context.Signer, AvatarAddress, out _, out _)) { diff --git a/Lib9c/Action/RuneEnhancement0.cs b/Lib9c/Action/RuneEnhancement0.cs index b6ffcf007a..d0bddcbb9a 100644 --- a/Lib9c/Action/RuneEnhancement0.cs +++ b/Lib9c/Action/RuneEnhancement0.cs @@ -48,10 +48,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } CheckObsolete(ActionObsoleteConfig.V100360ObsoleteIndex, context); diff --git a/Lib9c/Action/SecureMiningReward.cs b/Lib9c/Action/SecureMiningReward.cs index 7d6ffd8463..8ad9a82bcc 100644 --- a/Lib9c/Action/SecureMiningReward.cs +++ b/Lib9c/Action/SecureMiningReward.cs @@ -59,14 +59,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); IAccount state = context.PreviousState; - if (context.Rehearsal) - { - return state.MarkBalanceChanged( - context, - NCG, - AuthorizedMiners.Add(Recipient).Add(Treasury).ToArray() - ); - } CheckPermission(context); diff --git a/Lib9c/Action/UnlockEquipmentRecipe.cs b/Lib9c/Action/UnlockEquipmentRecipe.cs index 6035f025e0..cc7fab4ddb 100644 --- a/Lib9c/Action/UnlockEquipmentRecipe.cs +++ b/Lib9c/Action/UnlockEquipmentRecipe.cs @@ -36,17 +36,6 @@ public override IAccount Execute(IActionContext context) var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var unlockedRecipeIdsAddress = AvatarAddress.Derive("recipe_ids"); - if (context.Rehearsal) - { - return states - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .SetState(unlockedRecipeIdsAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, Addresses.UnlockEquipmentRecipe); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}UnlockEquipmentRecipe exec started", addressesHex); diff --git a/Lib9c/Action/UnlockEquipmentRecipe1.cs b/Lib9c/Action/UnlockEquipmentRecipe1.cs index 95ff4993a7..140822a7f6 100644 --- a/Lib9c/Action/UnlockEquipmentRecipe1.cs +++ b/Lib9c/Action/UnlockEquipmentRecipe1.cs @@ -37,16 +37,6 @@ public override IAccount Execute(IActionContext context) var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var unlockedRecipeIdsAddress = AvatarAddress.Derive("recipe_ids"); - if (context.Rehearsal) - { - return states - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .SetState(unlockedRecipeIdsAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, Addresses.UnlockEquipmentRecipe); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); diff --git a/Lib9c/Action/UnlockRuneSlot.cs b/Lib9c/Action/UnlockRuneSlot.cs index 679503b3c3..1350193de3 100644 --- a/Lib9c/Action/UnlockRuneSlot.cs +++ b/Lib9c/Action/UnlockRuneSlot.cs @@ -44,11 +44,6 @@ public override IAccount Execute(IActionContext context) { context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) - { - return states; - } - var sheets = states.GetSheets( sheetTypes: new[] { diff --git a/Lib9c/Action/UnlockWorld.cs b/Lib9c/Action/UnlockWorld.cs index f99b815c30..050c4db174 100644 --- a/Lib9c/Action/UnlockWorld.cs +++ b/Lib9c/Action/UnlockWorld.cs @@ -37,16 +37,6 @@ public override IAccount Execute(IActionContext context) var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var unlockedWorldIdsAddress = AvatarAddress.Derive("world_ids"); - if (context.Rehearsal) - { - return states - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, Addresses.UnlockWorld); - } - var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); var started = DateTimeOffset.UtcNow; Log.Debug("{AddressesHex}UnlockWorld exec started", addressesHex); diff --git a/Lib9c/Action/UnlockWorld1.cs b/Lib9c/Action/UnlockWorld1.cs index f53f2a1233..0aa816c5a3 100644 --- a/Lib9c/Action/UnlockWorld1.cs +++ b/Lib9c/Action/UnlockWorld1.cs @@ -33,15 +33,6 @@ public override IAccount Execute(IActionContext context) var questListAddress = AvatarAddress.Derive(LegacyQuestListKey); var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); var unlockedWorldIdsAddress = AvatarAddress.Derive("world_ids"); - if (context.Rehearsal) - { - return states - .SetState(worldInformationAddress, MarkChanged) - .SetState(questListAddress, MarkChanged) - .SetState(inventoryAddress, MarkChanged) - .SetState(AvatarAddress, MarkChanged) - .MarkBalanceChanged(context, GoldCurrencyMock, context.Signer, Addresses.UnlockWorld); - } CheckObsolete(ActionObsoleteConfig.V200030ObsoleteIndex, context); if (!WorldIds.Any() || WorldIds.Any(i => i < 2 || i == GameConfig.MimisbrunnrWorldId)) From f0b95164a84f121ce5e0a8a765a6cc77d3fedb62 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Mon, 13 Nov 2023 13:57:26 +0900 Subject: [PATCH 12/70] Remove unnecessary method; fix test --- .../Action/AccountStateDeltaExtensionsTest.cs | 9 +---- .../Action/Coupons/RedeemCouponTest.cs | 4 +++ .../Action/Coupons/TransferCouponsTest.cs | 14 ++++++++ Lib9c/Action/AccountStateDeltaExtensions.cs | 33 +------------------ Lib9c/Action/ActionBase.cs | 2 -- Lib9c/Action/Coupons/TransferCoupons.cs | 4 +-- 6 files changed, 22 insertions(+), 44 deletions(-) diff --git a/.Lib9c.Tests/Action/AccountStateDeltaExtensionsTest.cs b/.Lib9c.Tests/Action/AccountStateDeltaExtensionsTest.cs index f8fcc75dfa..83fb2917c1 100644 --- a/.Lib9c.Tests/Action/AccountStateDeltaExtensionsTest.cs +++ b/.Lib9c.Tests/Action/AccountStateDeltaExtensionsTest.cs @@ -115,18 +115,11 @@ public void SetCouponWallet() var agentAddress1 = new Address("0000000000000000000000000000000000000000"); var agentAddress2 = new Address("0000000000000000000000000000000000000001"); - states = states.SetCouponWallet( - agentAddress1, - ImmutableDictionary.Empty - .Add(guid1, coupon1) - .Add(guid2, coupon2), true); - states = states.SetCouponWallet( agentAddress2, ImmutableDictionary.Empty); - Assert.Equal( - ActionBase.MarkChanged, + Assert.Null( states.GetState(agentAddress1.Derive(SerializeKeys.CouponWalletKey))); Assert.Equal( Bencodex.Types.List.Empty, diff --git a/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs b/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs index 1c1d0d6336..812a174853 100644 --- a/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs +++ b/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs @@ -137,6 +137,10 @@ public void Execute() CouponsFixture.Guid3, new Coupon(CouponsFixture.Guid3, CouponsFixture.RewardSet3)); + state = state + .SetCouponWallet(CouponsFixture.AgentAddress1, agent1CouponWallet) + .SetCouponWallet(CouponsFixture.AgentAddress2, agent2CouponWallet); + // can't redeem other person's coupon var expected = state.GetAvatarStateV2(agent1Avatar0Address); state = new RedeemCoupon(CouponsFixture.Guid3, agent1Avatar0Address) diff --git a/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs b/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs index c97dbe6b6b..741ce778aa 100644 --- a/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs +++ b/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs @@ -136,6 +136,20 @@ public void Execute() })); // multiple transfer + state = state + .SetCouponWallet( + CouponsFixture.AgentAddress1, + ImmutableDictionary.Empty + .Add(CouponsFixture.Guid1, coupon1) + .Add(CouponsFixture.Guid2, coupon2) + .Add(CouponsFixture.Guid3, coupon3)) + .SetCouponWallet( + CouponsFixture.AgentAddress2, + ImmutableDictionary.Empty) + .SetCouponWallet( + CouponsFixture.AgentAddress3, + ImmutableDictionary.Empty); + state = new TransferCoupons( ImmutableDictionary>.Empty .Add(CouponsFixture.AgentAddress2, ImmutableHashSet.Empty diff --git a/Lib9c/Action/AccountStateDeltaExtensions.cs b/Lib9c/Action/AccountStateDeltaExtensions.cs index 3d1b9c7be7..a60aff3966 100644 --- a/Lib9c/Action/AccountStateDeltaExtensions.cs +++ b/Lib9c/Action/AccountStateDeltaExtensions.cs @@ -19,31 +19,6 @@ namespace Nekoyume.Action { public static class AccountStateDeltaExtensions { - public static IAccount MarkBalanceChanged( - this IAccount states, - IActionContext context, - Currency currency, - params Address[] accounts - ) - { - if (accounts.Length == 1) - { - return states.MintAsset(context, accounts[0], currency * 1); - } - else if (accounts.Length < 1) - { - return states; - } - - for (int i = 1; i < accounts.Length; i++) - { - states = states.TransferAsset(context, accounts[i - 1], accounts[i], currency * 1, true); - } - - return states; - } - - public static IAccount SetWorldBossKillReward( this IAccount states, IActionContext context, @@ -99,15 +74,9 @@ public static IAccount SetWorldBossKillReward( public static IAccount SetCouponWallet( this IAccount states, Address agentAddress, - IImmutableDictionary couponWallet, - bool rehearsal = false) + IImmutableDictionary couponWallet) { Address walletAddress = agentAddress.Derive(CouponWalletKey); - if (rehearsal) - { - return states.SetState(walletAddress, ActionBase.MarkChanged); - } - IValue serializedWallet = new Bencodex.Types.List( couponWallet.Values.OrderBy(c => c.Id).Select(v => v.Serialize()) ); diff --git a/Lib9c/Action/ActionBase.cs b/Lib9c/Action/ActionBase.cs index 2c7a6206e3..abb671d5ae 100644 --- a/Lib9c/Action/ActionBase.cs +++ b/Lib9c/Action/ActionBase.cs @@ -22,8 +22,6 @@ namespace Nekoyume.Action [Serializable] public abstract class ActionBase : IAction { - public static readonly IValue MarkChanged = Null.Value; - // FIXME GoldCurrencyState 에 정의된 것과 다른데 괜찮을지 점검해봐야 합니다. protected static readonly Currency GoldCurrencyMock = new Currency(); diff --git a/Lib9c/Action/Coupons/TransferCoupons.cs b/Lib9c/Action/Coupons/TransferCoupons.cs index d51f35f328..9771f666ef 100644 --- a/Lib9c/Action/Coupons/TransferCoupons.cs +++ b/Lib9c/Action/Coupons/TransferCoupons.cs @@ -55,10 +55,10 @@ public override IAccount Execute(IActionContext context) recipientWallet = recipientWallet.Add(id, coupon); } - states = states.SetCouponWallet(recipient, recipientWallet, context.Rehearsal); + states = states.SetCouponWallet(recipient, recipientWallet); } - states = states.SetCouponWallet(context.Signer, signerWallet, context.Rehearsal); + states = states.SetCouponWallet(context.Signer, signerWallet); return states; } From f7da4019066d9ea6b0f7e47c7042b5f1cfec9684 Mon Sep 17 00:00:00 2001 From: Syu Date: Tue, 14 Nov 2023 18:15:04 +0900 Subject: [PATCH 13/70] Update Costume Item Add --- Lib9c/TableCSV/Item/CostumeItemSheet.csv | 23 +++++++- Lib9c/TableCSV/Item/CostumeStatSheet.csv | 73 ++++++++++++------------ 2 files changed, 59 insertions(+), 37 deletions(-) diff --git a/Lib9c/TableCSV/Item/CostumeItemSheet.csv b/Lib9c/TableCSV/Item/CostumeItemSheet.csv index c37c84bbf2..ce4d97d8fa 100644 --- a/Lib9c/TableCSV/Item/CostumeItemSheet.csv +++ b/Lib9c/TableCSV/Item/CostumeItemSheet.csv @@ -40,6 +40,16 @@ _spine_resource_path,`Title`: ``,,,, 40300008,흰털 파란색 귀,EarCostume,1,Normal, 40300009,흰털 회색 귀,EarCostume,1,Normal, 40300010,흰털 파란 유령 귀,EarCostume,1,Normal, +40300011,사바나 무늬 귀,EarCostume,1,Normal, +40300012,얼룩 무늬 귀,EarCostume,1,Normal, +40300013,야광 분홍 귀,EarCostume,1,Normal, +40300014,야광 청색 귀,EarCostume,1,Normal, +40300015,야광 노랑 귀,EarCostume,1,Normal, +40300016,야광 흰색 귀,EarCostume,1,Normal, +40300017,야광 녹색 귀,EarCostume,1,Normal, +40300018,야광 보라 귀,EarCostume,1,Normal, +40300019,검은 털 귀,EarCostume,1,Normal, +40300020,어두운 보라색 귀,EarCostume,1,Normal, 40400001,빨간색 눈,EyeCostume,1,Normal, 40400002,파란색 눈,EyeCostume,1,Normal, 40400003,초록색 눈,EyeCostume,1,Normal, @@ -56,6 +66,16 @@ _spine_resource_path,`Title`: ``,,,, 40500008,파란색 꼬리,TailCostume,1,Normal, 40500009,회색 꼬리,TailCostume,1,Normal, 40500010,파란 유령 꼬리,TailCostume,1,Normal, +40500011,사바나 무늬 꼬리,TailCostume,1,Normal, +40500012,얼룩 무늬 꼬리,TailCostume,1,Normal, +40500013,야광 분홍 꼬리,TailCostume,1,Normal, +40500014,야광 청색 꼬리,TailCostume,1,Normal, +40500015,야광 노랑 꼬리,TailCostume,1,Normal, +40500016,야광 흰색 꼬리,TailCostume,1,Normal, +40500017,야광 녹색 꼬리,TailCostume,1,Normal, +40500018,야광 보라 꼬리,TailCostume,1,Normal, +40500019,검은 털 꼬리,TailCostume,1,Normal, +40500020,어두운 보라색 꼬리,TailCostume,1,Normal, 49900001,전설의 모험가,Title,4,Normal, 49900002,최초의 전사,Title,5,Normal, 49900003,Yggdrasil Champion,Title,5,Normal, @@ -66,4 +86,5 @@ _spine_resource_path,`Title`: ``,,,, 49900008,Championship 2 Ranker,Title,5,Normal, 49900009,2022 Grand Finale,Title,3,Normal, 49900010,Championship 4 Ranker,Title,5,Normal, -49900011,Great Adventurer 1,Title,5,Normal, \ No newline at end of file +49900011,Great Adventurer 1,Title,5,Normal, +49900012,Championship 6 Ranker,Title,5,Normal, \ No newline at end of file diff --git a/Lib9c/TableCSV/Item/CostumeStatSheet.csv b/Lib9c/TableCSV/Item/CostumeStatSheet.csv index 51973ce915..8cec7718b2 100644 --- a/Lib9c/TableCSV/Item/CostumeStatSheet.csv +++ b/Lib9c/TableCSV/Item/CostumeStatSheet.csv @@ -1,40 +1,41 @@ id,costume_id,stat_type,stat -1,40100000,ATK,30 -2,40100001,DEF,15 -3,40100002,HIT,135 -4,40100003,ATK,60 -5,40100003,HIT,135 -6,40100005,ATK,35 -7,40100006,ATK,55 -8,40100006,SPD,100 -9,49900001,HP,300 -10,49900002,HP,450 -11,49900003,HP,450 -12,49900003,DEF,20 -13,49900004,ATK,40 -14,49900005,ATK,80 -15,49900005,HIT,150 -16,49900006,HIT,120 -17,40100007,DEF,10 -18,40100007,HIT,150 -19,40100009,SPD,80 -20,40100009,ATK,65 -21,40100008,ATK,35 -22,49900007,HP,5000 -23,49900008,DEF,320 -24,40100010,ATK,530 -25,49900009,HIT,1210 -26,40100011,HP,8550 -27,49900010,ATK,500 -28,40100013,ATK,150 -29,40100013,HIT,490 -30,40100014,ATK,150 -31,40100014,SPD,465 -32,40100015,SPD,400 -33,40100015,ATK,105 -34,40100016,HIT,730 -35,40100017,DEF,300 -36,40100017,ATK,105 +1,40100000,ATK,1829 +2,40100001,DEF,1205 +3,40100002,HIT,3009 +4,40100003,ATK,1019 +5,40100003,HIT,1504 +6,40100005,ATK,1829 +7,40100006,ATK,1121 +8,40100006,SPD,1399 +9,49900001,HP,26990 +10,49900002,HP,31041 +11,49900003,HP,15520 +12,49900003,DEF,596 +13,49900004,ATK,1394 +14,49900005,ATK,802 +15,49900005,HIT,1183 +16,49900006,HIT,874 +17,40100007,DEF,910 +18,40100007,HIT,1203 +19,40100009,SPD,1223 +20,40100009,ATK,1244 +21,40100008,ATK,1829 +22,49900007,HP,31041 +23,49900008,DEF,1193 +24,40100010,ATK,2039 +25,49900009,HIT,1749 +26,40100011,HP,39456 +27,49900010,ATK,2367 +28,40100013,ATK,972 +29,40100013,HIT,956 +30,40100014,ATK,972 +31,40100014,SPD,988 +32,40100015,SPD,1482 +33,40100015,ATK,648 +34,40100016,HIT,2391 +35,40100017,DEF,680 +36,40100017,ATK,914 37,40100019,HP,26040 38,40100019,SPD,1368 39,49900011,DEF,1908 +40,49900012,HP,34145 \ No newline at end of file From 76c742452a5926dcd18df7ffc790422685e41985 Mon Sep 17 00:00:00 2001 From: Yang Chun Ung Date: Tue, 14 Nov 2023 19:35:27 +0900 Subject: [PATCH 14/70] Fix test --- .Lib9c.Tests/Model/PlayerTest.cs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.Lib9c.Tests/Model/PlayerTest.cs b/.Lib9c.Tests/Model/PlayerTest.cs index ed7ad2c100..efc7e0a631 100644 --- a/.Lib9c.Tests/Model/PlayerTest.cs +++ b/.Lib9c.Tests/Model/PlayerTest.cs @@ -303,23 +303,24 @@ public void GetExp() _tableSheets.CharacterLevelSheet, _tableSheets.EquipmentItemSetEffectSheet ); + var baseHp = player.HP; player.SetCostumeStat(_tableSheets.CostumeStatSheet); - - Assert.Equal(600, player.HP); - Assert.Equal(600, player.CurrentHP); + var expectedHp = baseHp + row.Stat; + Assert.Equal(expectedHp, player.HP); + Assert.Equal(expectedHp, player.CurrentHP); Assert.Equal(1, player.Level); player.CurrentHP -= 10; - - Assert.Equal(590, player.CurrentHP); + var expectedCurrentHp = expectedHp - 10; + Assert.Equal(expectedCurrentHp, player.CurrentHP); var requiredExp = _tableSheets.CharacterLevelSheet[1].ExpNeed; player.GetExp2(requiredExp); - + var characterRow = _tableSheets.CharacterSheet[player.CharacterId]; Assert.Equal(2, player.Level); - Assert.Equal(612, player.HP); - Assert.Equal(590, player.CurrentHP); + Assert.Equal(expectedHp + characterRow.LvHP, player.HP); + Assert.Equal(expectedCurrentHp, player.CurrentHP); } [Theory] From 7da5241f0a1f7d22d3e841af9e1d8f14675eabd7 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Wed, 15 Nov 2023 17:27:35 +0900 Subject: [PATCH 15/70] Bump libplanet to 3.7.0 --- .Libplanet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.Libplanet b/.Libplanet index b13ef31553..630d3e5a28 160000 --- a/.Libplanet +++ b/.Libplanet @@ -1 +1 @@ -Subproject commit b13ef3155389100c218a045fbdc3051e23e3c669 +Subproject commit 630d3e5a289c2ac575750f4fd85df62a6da710f1 From cf3132d3eed709194d81e303639a760f04c1f795 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Wed, 15 Nov 2023 17:56:44 +0900 Subject: [PATCH 16/70] Accommodate API changes --- .../TransactionMarshaller.cs | 2 +- Lib9c.MessagePack/AccountStateDelta.cs | 2 +- Lib9c/Action/ActivateAccount.cs | 2 +- Lib9c/Action/ActivateAccount0.cs | 2 +- Lib9c/Action/Coupons/RedeemCoupon.cs | 2 +- Lib9c/Action/Coupons/TransferCoupons.cs | 2 +- Lib9c/Action/CreatePendingActivations.cs | 5 ++--- Lib9c/Model/Coupons/Coupon.cs | 2 +- Lib9c/Model/State/PendingActivationState.cs | 2 +- Lib9c/Model/State/RedeemCodeState.cs | 16 ++++++++-------- Lib9c/TableData/RedeemCodeListSheet.cs | 2 +- 11 files changed, 19 insertions(+), 20 deletions(-) diff --git a/.Libplanet.Extensions.ActionEvaluatorCommonComponents/TransactionMarshaller.cs b/.Libplanet.Extensions.ActionEvaluatorCommonComponents/TransactionMarshaller.cs index a203f523d8..06dfbcb5e9 100644 --- a/.Libplanet.Extensions.ActionEvaluatorCommonComponents/TransactionMarshaller.cs +++ b/.Libplanet.Extensions.ActionEvaluatorCommonComponents/TransactionMarshaller.cs @@ -9,7 +9,7 @@ public static class TransactionMarshaller private static readonly Codec Codec = new Codec(); // Copied from Libplanet/Tx/TxMarshaler.cs - private static readonly Binary SignatureKey = new byte[] { 0x53 }; // 'S' + private static readonly Binary SignatureKey = new Binary(new byte[] { 0x53 }); // 'S' public static Dictionary Marshal(this ITransaction transaction) { diff --git a/Lib9c.MessagePack/AccountStateDelta.cs b/Lib9c.MessagePack/AccountStateDelta.cs index ff556a3f95..14bb3cda23 100644 --- a/Lib9c.MessagePack/AccountStateDelta.cs +++ b/Lib9c.MessagePack/AccountStateDelta.cs @@ -45,7 +45,7 @@ public AccountStateDelta(Dictionary states, List balances, Dictionary totalSuppl record => (new Address(record["address"]), new Currency((Dictionary)record["currency"])), record => (BigInteger)(Integer)record["amount"]), totalSupplies.ToImmutableDictionary( - kv => new Currency(new Codec().Decode((Binary)kv.Key)), + kv => new Currency(new Codec().Decode(((Binary)kv.Key).ToByteArray())), kv => (BigInteger)(Integer)kv.Value)) { } diff --git a/Lib9c/Action/ActivateAccount.cs b/Lib9c/Action/ActivateAccount.cs index 9e916e403e..c92c5ce4db 100644 --- a/Lib9c/Action/ActivateAccount.cs +++ b/Lib9c/Action/ActivateAccount.cs @@ -81,7 +81,7 @@ public override void LoadPlainValue(IValue plainValue) { var asDict = (Dictionary)((Dictionary)plainValue)["values"]; PendingAddress = asDict["pa"].ToAddress(); - Signature = (Binary) asDict["s"]; + Signature = ((Binary)asDict["s"]).ToByteArray(); } public Address GetPendingAddress() => PendingAddress; diff --git a/Lib9c/Action/ActivateAccount0.cs b/Lib9c/Action/ActivateAccount0.cs index 9f2640a22d..287a8479de 100644 --- a/Lib9c/Action/ActivateAccount0.cs +++ b/Lib9c/Action/ActivateAccount0.cs @@ -84,7 +84,7 @@ public override void LoadPlainValue(IValue plainValue) { var asDict = (Dictionary)((Dictionary)plainValue)["values"]; PendingAddress = asDict["pending_address"].ToAddress(); - Signature = (Binary) asDict["signature"]; + Signature = ((Binary)asDict["signature"]).ToByteArray(); } public Address GetPendingAddress() => PendingAddress; diff --git a/Lib9c/Action/Coupons/RedeemCoupon.cs b/Lib9c/Action/Coupons/RedeemCoupon.cs index 9e10145015..99423b8595 100644 --- a/Lib9c/Action/Coupons/RedeemCoupon.cs +++ b/Lib9c/Action/Coupons/RedeemCoupon.cs @@ -81,7 +81,7 @@ public override IAccount Execute(IActionContext context) protected override void LoadPlainValueInternal(IImmutableDictionary plainValue) { - CouponId = new Guid((Binary)plainValue["coupon_id"]); + CouponId = new Guid(((Binary)plainValue["coupon_id"]).ToByteArray()); AvatarAddress = new Address(plainValue["avatar_address"]); } } diff --git a/Lib9c/Action/Coupons/TransferCoupons.cs b/Lib9c/Action/Coupons/TransferCoupons.cs index 9771f666ef..5771137396 100644 --- a/Lib9c/Action/Coupons/TransferCoupons.cs +++ b/Lib9c/Action/Coupons/TransferCoupons.cs @@ -77,7 +77,7 @@ protected override void LoadPlainValueInternal(IImmutableDictionary new Address(pair.Key), pair => (IImmutableSet)((Bencodex.Types.List)pair.Value).Select( - value => new Guid((Binary)value) + value => new Guid(((Binary)value).ToByteArray()) ).ToImmutableHashSet() ); } diff --git a/Lib9c/Action/CreatePendingActivations.cs b/Lib9c/Action/CreatePendingActivations.cs index 988a274124..c83358b22b 100644 --- a/Lib9c/Action/CreatePendingActivations.cs +++ b/Lib9c/Action/CreatePendingActivations.cs @@ -24,13 +24,12 @@ public class CreatePendingActivations : ActionBase, ICreatePendingActivationsV1 public IList<(byte[] Address, byte[] Nonce, byte[] PublicKey)> PendingActivations { get; internal set; } IEnumerable ICreatePendingActivationsV1.PendingActivations => - PendingActivations.Select(t => - new List(new Binary[] { t.Address, t.Nonce, t.PublicKey }.Cast())); + PendingActivations.Select(t => new List(new[] { t.Address, t.Nonce, t.PublicKey })); public override IValue PlainValue => Dictionary.Empty .Add("type_id", "create_pending_activations") .Add("values", PendingActivations - .Select(t => new List(new Binary[] { t.Address, t.Nonce, t.PublicKey }.Cast())) + .Select(t => new List(new[] { t.Address, t.Nonce, t.PublicKey })) .Serialize()); public CreatePendingActivations() diff --git a/Lib9c/Model/Coupons/Coupon.cs b/Lib9c/Model/Coupons/Coupon.cs index 24e6178579..be985599f7 100644 --- a/Lib9c/Model/Coupons/Coupon.cs +++ b/Lib9c/Model/Coupons/Coupon.cs @@ -40,7 +40,7 @@ public Coupon(IValue serialized) ); } - Id = new Guid((Binary)dict["id"]); + Id = new Guid(((Binary)dict["id"]).ToByteArray()); Rewards = new RewardSet((Bencodex.Types.Dictionary)dict["rewards"]); } diff --git a/Lib9c/Model/State/PendingActivationState.cs b/Lib9c/Model/State/PendingActivationState.cs index f10ced760d..ce1e601284 100644 --- a/Lib9c/Model/State/PendingActivationState.cs +++ b/Lib9c/Model/State/PendingActivationState.cs @@ -33,7 +33,7 @@ internal static Address DeriveAddress(byte[] nonce, PublicKey publicKey) public PendingActivationState(Dictionary serialized) : base(serialized) { - Nonce = (Binary)serialized["nonce"]; + Nonce = ((Binary)serialized["nonce"]).ToByteArray(); PublicKey = serialized["public_key"].ToPublicKey(); } diff --git a/Lib9c/Model/State/RedeemCodeState.cs b/Lib9c/Model/State/RedeemCodeState.cs index ca62beb5b8..758c3213f2 100644 --- a/Lib9c/Model/State/RedeemCodeState.cs +++ b/Lib9c/Model/State/RedeemCodeState.cs @@ -104,7 +104,7 @@ public int Redeem(string code, Address userAddress) } result.UserAddress = userAddress; - _map[publicKey.Format(true)] = result; + _map[new Binary(publicKey.Format(true))] = result; return result.RewardId; } @@ -114,7 +114,7 @@ public void Update(RedeemCodeListSheet sheet) { if (!Map.ContainsKey(row.PublicKey)) { - _map[row.PublicKey.Format(true)] = new Reward(row.RewardId); + _map[new Binary(row.PublicKey.Format(true))] = new Reward(row.RewardId); } else { @@ -175,12 +175,12 @@ public RedeemCodeMap(IReadOnlyDictionary map) => public int Count => _map.Count; public bool ContainsKey(PublicKey key) => - _map.ContainsKey(key.Format(true)) || - _map.ContainsKey(key.Format(false)); + _map.ContainsKey(new Binary(key.Format(true))) || + _map.ContainsKey(new Binary(key.Format(false))); public bool TryGetValue(PublicKey key, out RedeemCodeState.Reward value) => - _map.TryGetValue(key.Format(true), out value) || - _map.TryGetValue(key.Format(false), out value); + _map.TryGetValue(new Binary(key.Format(true)), out value) || + _map.TryGetValue(new Binary(key.Format(false)), out value); public RedeemCodeState.Reward this[PublicKey key] { @@ -188,11 +188,11 @@ public RedeemCodeState.Reward this[PublicKey key] { try { - return _map[key.Format(true)]; + return _map[new Binary(key.Format(true))]; } catch (KeyNotFoundException) { - return _map[key.Format(false)]; + return _map[new Binary(key.Format(false))]; } } } diff --git a/Lib9c/TableData/RedeemCodeListSheet.cs b/Lib9c/TableData/RedeemCodeListSheet.cs index b7f95fd124..e09143418c 100644 --- a/Lib9c/TableData/RedeemCodeListSheet.cs +++ b/Lib9c/TableData/RedeemCodeListSheet.cs @@ -24,7 +24,7 @@ public override void Set(IReadOnlyList fields) { Id = ParseInt(fields[0]); RewardId = ParseInt(fields[1]); - PublicKeyBinary = ByteUtil.ParseHex(fields[2]); + PublicKeyBinary = new Binary(ByteUtil.ParseHex(fields[2])); } } From 6a92c74bb1bb2fc7ea67382a0962500e17014a8d Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Wed, 15 Nov 2023 18:50:21 +0900 Subject: [PATCH 17/70] Cleanup --- .../transfer_asset.PlainValue.verified.txt | 42 +------------------ .../ActionContextMarshaller.cs | 2 +- .../ActionEvaluationMarshaller.cs | 2 +- Lib9c/Model/State/StateExtensions.cs | 2 +- 4 files changed, 4 insertions(+), 44 deletions(-) diff --git a/.Lib9c.Tests/Action/Snapshot/transfer_asset.PlainValue.verified.txt b/.Lib9c.Tests/Action/Snapshot/transfer_asset.PlainValue.verified.txt index 3694f6213a..9aee256842 100644 --- a/.Lib9c.Tests/Action/Snapshot/transfer_asset.PlainValue.verified.txt +++ b/.Lib9c.Tests/Action/Snapshot/transfer_asset.PlainValue.verified.txt @@ -1,26 +1,6 @@ { Bencodex.Types.Text "type_id": { EncodingLength: 18, - Fingerprint: { - Digest: [ - 116, - 114, - 97, - 110, - 115, - 102, - 101, - 114, - 95, - 97, - 115, - 115, - 101, - 116 - ], - EncodingLength: 18, - Kind: Text - }, Kind: Text, Value: transfer_asset }, @@ -31,36 +11,16 @@ 2 ], Bencodex.Types.Text "minters": { - EncodingLength: 1, - Fingerprint: { - EncodingLength: 1 - } + EncodingLength: 1 }, Bencodex.Types.Text "ticker": { EncodingLength: 6, - Fingerprint: { - Digest: [ - 78, - 78, - 78 - ], - EncodingLength: 6, - Kind: Text - }, Kind: Text, Value: NNN } }, { EncodingLength: 7, - Fingerprint: { - Digest: [ - 16, - 39 - ], - EncodingLength: 7, - Kind: Integer - }, Kind: Integer, Value: 10000 } diff --git a/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionContextMarshaller.cs b/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionContextMarshaller.cs index d9cf9b6ea3..a75201cbb7 100644 --- a/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionContextMarshaller.cs +++ b/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionContextMarshaller.cs @@ -51,7 +51,7 @@ txIdValue is Binary txIdBinaryValue blockIndex: (Integer)dictionary["block_index"], blockProtocolVersion: (Integer)dictionary["block_protocol_version"], rehearsal: (Boolean)dictionary["rehearsal"], - previousState: new HashDigest(((Binary)dictionary["previous_states"]).ByteArray), + previousState: new HashDigest(dictionary["previous_states"]), randomSeed: (Integer)dictionary["random_seed"], blockAction: (Boolean)dictionary["block_action"] ); diff --git a/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionEvaluationMarshaller.cs b/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionEvaluationMarshaller.cs index 79be7c239a..408843b61e 100644 --- a/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionEvaluationMarshaller.cs +++ b/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionEvaluationMarshaller.cs @@ -32,7 +32,7 @@ public static ICommittedActionEvaluation Unmarshal(IValue value) return new CommittedActionEvaluation( dictionary["action"], ActionContextMarshaller.Unmarshal((Dictionary)dictionary["input_context"]), - new HashDigest((Binary)dictionary["output_states"]), + new HashDigest(dictionary["output_states"]), dictionary["exception"] is Text typeName ? new Exception(typeName) : null ); } diff --git a/Lib9c/Model/State/StateExtensions.cs b/Lib9c/Model/State/StateExtensions.cs index bfd5697c14..01d159f792 100644 --- a/Lib9c/Model/State/StateExtensions.cs +++ b/Lib9c/Model/State/StateExtensions.cs @@ -421,7 +421,7 @@ public static IValue Serialize(this HashDigest hashDigest) => public static HashDigest ToItemId(this IValue serialized) { - return new HashDigest(((Binary)serialized).ByteArray); + return new HashDigest(serialized); } #endregion From 62ac4227b80806b31b0caa0ea506a69b42e14373 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Tue, 21 Nov 2023 13:09:56 +0900 Subject: [PATCH 18/70] Bump libplanet to 3.7.1 --- .Libplanet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.Libplanet b/.Libplanet index 630d3e5a28..24331ea2f3 160000 --- a/.Libplanet +++ b/.Libplanet @@ -1 +1 @@ -Subproject commit 630d3e5a289c2ac575750f4fd85df62a6da710f1 +Subproject commit 24331ea2f37f2d3f6d7352f8dc0f7ddf93fabb5d From b4555f15510a1d8126ce50ef00dde055d40a73d7 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Tue, 21 Nov 2023 16:48:12 +0900 Subject: [PATCH 19/70] Completely remove rehearsal --- .../Action/CreateOrReplaceAvatarTest.cs | 1 - .Lib9c.Tests/Action/ActionContext.cs | 2 +- .Lib9c.Tests/Action/BattleArena10Test.cs | 3 --- .Lib9c.Tests/Action/BattleArena11Test.cs | 3 --- .Lib9c.Tests/Action/BattleArena12Test.cs | 3 --- .Lib9c.Tests/Action/BattleArena13Test.cs | 3 --- .Lib9c.Tests/Action/BattleArena1Test.cs | 2 -- .Lib9c.Tests/Action/BattleArena2Test.cs | 2 -- .Lib9c.Tests/Action/BattleArena3Test.cs | 2 -- .Lib9c.Tests/Action/BattleArena4Test.cs | 3 --- .Lib9c.Tests/Action/BattleArena5Test.cs | 2 -- .Lib9c.Tests/Action/BattleArena6Test.cs | 2 -- .Lib9c.Tests/Action/BattleArena7Test.cs | 2 -- .Lib9c.Tests/Action/BattleArena8Test.cs | 3 --- .Lib9c.Tests/Action/BattleArena9Test.cs | 3 --- .Lib9c.Tests/Action/Buy10Test.cs | 3 --- .Lib9c.Tests/Action/Buy11Test.cs | 4 ---- .Lib9c.Tests/Action/Buy2Test.cs | 1 - .Lib9c.Tests/Action/Buy3Test.cs | 1 - .Lib9c.Tests/Action/Buy4Test.cs | 1 - .Lib9c.Tests/Action/Buy5Test.cs | 1 - .Lib9c.Tests/Action/Buy6Test.cs | 1 - .Lib9c.Tests/Action/Buy7Test.cs | 1 - .Lib9c.Tests/Action/Buy8Test.cs | 1 - .Lib9c.Tests/Action/Buy9Test.cs | 1 - .Lib9c.Tests/Action/BuyMultipleTest.cs | 1 - .Lib9c.Tests/Action/BuyTest.cs | 4 ---- .Lib9c.Tests/Action/ChargeActionPoint0Test.cs | 1 - .Lib9c.Tests/Action/ChargeActionPoint2Test.cs | 2 -- .Lib9c.Tests/Action/ChargeActionPointTest.cs | 2 -- .Lib9c.Tests/Action/Coupons/IssueCouponsTest.cs | 5 ----- .Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs | 10 ---------- .Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs | 8 -------- .Lib9c.Tests/Action/DailyReward0Test.cs | 1 - .Lib9c.Tests/Action/DailyReward2Test.cs | 1 - .Lib9c.Tests/Action/DailyReward3Test.cs | 1 - .Lib9c.Tests/Action/DailyReward4Test.cs | 1 - .Lib9c.Tests/Action/DailyReward5Test.cs | 1 - .Lib9c.Tests/Action/DailyReward6Test.cs | 1 - .Lib9c.Tests/Action/DailyRewardTest.cs | 1 - .Lib9c.Tests/Action/EventConsumableItemCrafts0Test.cs | 1 - .Lib9c.Tests/Action/EventDungeonBattleV1Test.cs | 1 - .Lib9c.Tests/Action/EventDungeonBattleV2Test.cs | 1 - .Lib9c.Tests/Action/EventDungeonBattleV3Test.cs | 1 - .Lib9c.Tests/Action/EventDungeonBattleV4Test.cs | 1 - .Lib9c.Tests/Action/EventDungeonBattleV5Test.cs | 1 - .Lib9c.Tests/Action/EventMaterialItemCrafts0Test.cs | 1 - .../Action/Garages/DeliverToOthersGaragesTest.cs | 1 - .Lib9c.Tests/Action/Garages/LoadIntoMyGaragesTest.cs | 1 - .../Action/Garages/UnloadFromMyGaragesTest.cs | 1 - .Lib9c.Tests/Action/HackAndSlash0Test.cs | 3 --- .Lib9c.Tests/Action/HackAndSlash10Test.cs | 6 ------ .Lib9c.Tests/Action/HackAndSlash11Test.cs | 5 ----- .Lib9c.Tests/Action/HackAndSlash12Test.cs | 5 ----- .Lib9c.Tests/Action/HackAndSlash13Test.cs | 5 ----- .Lib9c.Tests/Action/HackAndSlash15Test.cs | 6 ------ .Lib9c.Tests/Action/HackAndSlash16Test.cs | 6 ------ .Lib9c.Tests/Action/HackAndSlash17Test.cs | 6 ------ .Lib9c.Tests/Action/HackAndSlash18Test.cs | 8 -------- .Lib9c.Tests/Action/HackAndSlash19Test.cs | 7 ------- .Lib9c.Tests/Action/HackAndSlash20Test.cs | 10 ---------- .Lib9c.Tests/Action/HackAndSlash21Test.cs | 10 ---------- .Lib9c.Tests/Action/HackAndSlash2Test.cs | 3 --- .Lib9c.Tests/Action/HackAndSlash3Test.cs | 1 - .Lib9c.Tests/Action/HackAndSlash4Test.cs | 4 ---- .Lib9c.Tests/Action/HackAndSlash5Test.cs | 4 ---- .Lib9c.Tests/Action/HackAndSlash6Test.cs | 4 ---- .Lib9c.Tests/Action/HackAndSlash7Test.cs | 4 ---- .Lib9c.Tests/Action/HackAndSlash8Test.cs | 4 ---- .Lib9c.Tests/Action/HackAndSlash9Test.cs | 6 ------ .Lib9c.Tests/Action/HackAndSlashTest14.cs | 6 ------ .Lib9c.Tests/Action/JoinArena1Test.cs | 2 -- .Lib9c.Tests/Action/JoinArena2Test.cs | 2 -- .Lib9c.Tests/Action/JoinArena3Test.cs | 2 -- .Lib9c.Tests/Action/MimisbrunnrBattle0Test.cs | 5 +---- .Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs | 7 +------ .Lib9c.Tests/Action/MimisbrunnrBattle11Test.cs | 6 +----- .Lib9c.Tests/Action/MimisbrunnrBattle12Test.cs | 7 +------ .Lib9c.Tests/Action/MimisbrunnrBattle13Test.cs | 7 +------ .Lib9c.Tests/Action/MimisbrunnrBattle2Test.cs | 5 +---- .Lib9c.Tests/Action/MimisbrunnrBattle3Test.cs | 5 +---- .Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs | 5 +---- .Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs | 5 +---- .Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs | 6 +----- .Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs | 6 +----- .Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs | 6 +----- .Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs | 6 +----- .Lib9c.Tests/Action/PatchTableSheetTest.cs | 2 -- .Lib9c.Tests/Action/PetEnhancement0Test.cs | 1 - .Lib9c.Tests/Action/Raid1Test.cs | 4 ---- .Lib9c.Tests/Action/Raid2Test.cs | 3 --- .Lib9c.Tests/Action/Raid3Test.cs | 3 --- .Lib9c.Tests/Action/Raid4Test.cs | 4 ---- .Lib9c.Tests/Action/Raid5Test.cs | 4 ---- .Lib9c.Tests/Action/Raid6Test.cs | 4 ---- .Lib9c.Tests/Action/RankingBattle0Test.cs | 8 -------- .Lib9c.Tests/Action/RankingBattle10Test.cs | 8 -------- .Lib9c.Tests/Action/RankingBattle11Test.cs | 10 ---------- .Lib9c.Tests/Action/RankingBattle2Test.cs | 8 -------- .Lib9c.Tests/Action/RankingBattle3Test.cs | 9 --------- .Lib9c.Tests/Action/RankingBattle4Test.cs | 9 --------- .Lib9c.Tests/Action/RankingBattle5Test.cs | 9 --------- .Lib9c.Tests/Action/RankingBattle6Test.cs | 9 --------- .Lib9c.Tests/Action/RankingBattle7Test.cs | 9 --------- .Lib9c.Tests/Action/RankingBattle8Test.cs | 8 -------- .Lib9c.Tests/Action/RankingBattle9Test.cs | 8 -------- .Lib9c.Tests/Action/RankingBattleTest.cs | 1 - .Lib9c.Tests/Action/ReRegisterProduct0Test.cs | 2 -- .Lib9c.Tests/Action/ReRegisterProductTest.cs | 2 -- .Lib9c.Tests/Action/RedeemCode0Test.cs | 1 - .Lib9c.Tests/Action/RedeemCodeTest.cs | 1 - .Lib9c.Tests/Action/RuneEnhancement0Test.cs | 2 -- .Lib9c.Tests/Action/RuneEnhancementTest.cs | 2 -- .Lib9c.Tests/Action/Scenario/ArenaScenarioTest.cs | 2 -- .../Action/Scenario/SellAndCancellationAndSellTest.cs | 3 --- .../Action/Scenario/StakeAndClaimScenarioTest.cs | 4 ---- .../Action/Scenario/WorldUnlockScenarioTest.cs | 6 ------ .Lib9c.Tests/Action/SecureMiningRewardTest.cs | 2 -- .Lib9c.Tests/Action/Sell0Test.cs | 1 - .Lib9c.Tests/Action/Sell10Test.cs | 1 - .Lib9c.Tests/Action/Sell11Test.cs | 1 - .Lib9c.Tests/Action/Sell2Test.cs | 1 - .Lib9c.Tests/Action/Sell3Test.cs | 1 - .Lib9c.Tests/Action/Sell4Test.cs | 1 - .Lib9c.Tests/Action/Sell5Test.cs | 1 - .Lib9c.Tests/Action/Sell6Test.cs | 2 -- .Lib9c.Tests/Action/Sell7Test.cs | 1 - .Lib9c.Tests/Action/Sell8Test.cs | 1 - .Lib9c.Tests/Action/Sell9Test.cs | 1 - .Lib9c.Tests/Action/SellCancellation0Test.cs | 1 - .Lib9c.Tests/Action/SellCancellation2Test.cs | 1 - .Lib9c.Tests/Action/SellCancellation3Test.cs | 2 -- .Lib9c.Tests/Action/SellCancellation4Test.cs | 2 -- .Lib9c.Tests/Action/SellCancellation5Test.cs | 1 - .Lib9c.Tests/Action/SellCancellation6Test.cs | 1 - .Lib9c.Tests/Action/SellCancellation7Test.cs | 1 - .Lib9c.Tests/Action/SellCancellation8Test.cs | 2 -- .Lib9c.Tests/Action/SellCancellationTest.cs | 3 --- .Lib9c.Tests/Action/SellTest.cs | 1 - .Lib9c.Tests/Action/StakeTest.cs | 1 - .Lib9c.Tests/Action/TransferAsset2Test.cs | 9 --------- .Lib9c.Tests/Action/TransferAsset3Test.cs | 8 -------- .Lib9c.Tests/Action/TransferAsset4Test.cs | 6 ------ .Lib9c.Tests/Action/TransferAssetTest.cs | 10 ---------- .Lib9c.Tests/Action/TransferAssetTest0.cs | 7 ------- .Lib9c.Tests/Action/TransferAssets0Test.cs | 9 --------- .Lib9c.Tests/Action/TransferAssets2Test.cs | 7 ------- .Lib9c.Tests/Action/TransferAssetsTest.cs | 11 ----------- .Lib9c.Tests/Action/UnlockRuneSlotTest.cs | 5 ----- .Lib9c.Tests/Action/UpdateSell0Test.cs | 1 - .Lib9c.Tests/Action/UpdateSell2Test.cs | 1 - .Lib9c.Tests/Action/UpdateSell3Test.cs | 1 - .Lib9c.Tests/Action/UpdateSell4Test.cs | 1 - .Lib9c.Tests/Action/UpdateSellTest.cs | 1 - .Lib9c.Tests/TestHelper/BlockChainHelper.cs | 1 - 155 files changed, 14 insertions(+), 536 deletions(-) diff --git a/.Lib9c.DevExtensions.Tests/Action/CreateOrReplaceAvatarTest.cs b/.Lib9c.DevExtensions.Tests/Action/CreateOrReplaceAvatarTest.cs index 0ab36e8230..75a07d981e 100644 --- a/.Lib9c.DevExtensions.Tests/Action/CreateOrReplaceAvatarTest.cs +++ b/.Lib9c.DevExtensions.Tests/Action/CreateOrReplaceAvatarTest.cs @@ -460,7 +460,6 @@ private static void Execute( PreviousState = previousStates, Signer = agentAddr, RandomSeed = 0, - Rehearsal = false, BlockIndex = blockIndex, }); var agent = new AgentState((Dictionary)nextStates.GetState(agentAddr)!); diff --git a/.Lib9c.Tests/Action/ActionContext.cs b/.Lib9c.Tests/Action/ActionContext.cs index 62ba8ded68..a4e6e1610d 100644 --- a/.Lib9c.Tests/Action/ActionContext.cs +++ b/.Lib9c.Tests/Action/ActionContext.cs @@ -27,7 +27,7 @@ public class ActionContext : IActionContext public int BlockProtocolVersion { get; set; } - public bool Rehearsal { get; set; } + public bool Rehearsal => false; public IAccount PreviousState { get; set; } diff --git a/.Lib9c.Tests/Action/BattleArena10Test.cs b/.Lib9c.Tests/Action/BattleArena10Test.cs index 734030b98a..9bbf5ca6f7 100644 --- a/.Lib9c.Tests/Action/BattleArena10Test.cs +++ b/.Lib9c.Tests/Action/BattleArena10Test.cs @@ -973,7 +973,6 @@ public void ExecuteDuplicatedException(int slotIndex, int runeId, int slotIndex2 PreviousState = previousStates, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, })); } @@ -1205,7 +1204,6 @@ private void Execute( PreviousState = previousStates, Signer = myAgentAddress, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -1310,7 +1308,6 @@ private IAccount JoinArena( PreviousState = states, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return states; diff --git a/.Lib9c.Tests/Action/BattleArena11Test.cs b/.Lib9c.Tests/Action/BattleArena11Test.cs index ef11262ce3..76a7849e59 100644 --- a/.Lib9c.Tests/Action/BattleArena11Test.cs +++ b/.Lib9c.Tests/Action/BattleArena11Test.cs @@ -973,7 +973,6 @@ public void ExecuteDuplicatedException(int slotIndex, int runeId, int slotIndex2 PreviousState = previousStates, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, })); } @@ -1205,7 +1204,6 @@ private void Execute( PreviousState = previousStates, Signer = myAgentAddress, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -1310,7 +1308,6 @@ private IAccount JoinArena( PreviousState = states, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return states; diff --git a/.Lib9c.Tests/Action/BattleArena12Test.cs b/.Lib9c.Tests/Action/BattleArena12Test.cs index e478c53e27..151753f012 100644 --- a/.Lib9c.Tests/Action/BattleArena12Test.cs +++ b/.Lib9c.Tests/Action/BattleArena12Test.cs @@ -973,7 +973,6 @@ public void ExecuteDuplicatedException(int slotIndex, int runeId, int slotIndex2 PreviousState = previousStates, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, })); } @@ -1244,7 +1243,6 @@ private void Execute( PreviousState = previousStates, Signer = myAgentAddress, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -1349,7 +1347,6 @@ private IAccount JoinArena( PreviousState = states, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return states; diff --git a/.Lib9c.Tests/Action/BattleArena13Test.cs b/.Lib9c.Tests/Action/BattleArena13Test.cs index a74780bb27..9c98b560a7 100644 --- a/.Lib9c.Tests/Action/BattleArena13Test.cs +++ b/.Lib9c.Tests/Action/BattleArena13Test.cs @@ -973,7 +973,6 @@ public void ExecuteDuplicatedException(int slotIndex, int runeId, int slotIndex2 PreviousState = previousStates, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, })); } @@ -1205,7 +1204,6 @@ private void Execute( PreviousState = previousStates, Signer = myAgentAddress, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -1310,7 +1308,6 @@ private IAccount JoinArena( PreviousState = states, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return states; diff --git a/.Lib9c.Tests/Action/BattleArena1Test.cs b/.Lib9c.Tests/Action/BattleArena1Test.cs index f7065a2d85..c1f9bc277c 100644 --- a/.Lib9c.Tests/Action/BattleArena1Test.cs +++ b/.Lib9c.Tests/Action/BattleArena1Test.cs @@ -209,7 +209,6 @@ public IAccount JoinArena(IActionContext context, Address signer, Address avatar PreviousState = _state, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return _state; @@ -293,7 +292,6 @@ public void Execute(long nextBlockIndex, int championshipId, int round, int tick PreviousState = _state, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); diff --git a/.Lib9c.Tests/Action/BattleArena2Test.cs b/.Lib9c.Tests/Action/BattleArena2Test.cs index 93a9ea9293..a9c5a9fe96 100644 --- a/.Lib9c.Tests/Action/BattleArena2Test.cs +++ b/.Lib9c.Tests/Action/BattleArena2Test.cs @@ -213,7 +213,6 @@ public IAccount JoinArena(IActionContext context, Address signer, Address avatar PreviousState = _state, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return _state; @@ -308,7 +307,6 @@ public void Execute( PreviousState = _state, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); diff --git a/.Lib9c.Tests/Action/BattleArena3Test.cs b/.Lib9c.Tests/Action/BattleArena3Test.cs index 18dd8ef071..8b17bc5fa5 100644 --- a/.Lib9c.Tests/Action/BattleArena3Test.cs +++ b/.Lib9c.Tests/Action/BattleArena3Test.cs @@ -213,7 +213,6 @@ public IAccount JoinArena(IActionContext context, Address signer, Address avatar PreviousState = _state, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return _state; @@ -308,7 +307,6 @@ public void Execute( PreviousState = _state, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); diff --git a/.Lib9c.Tests/Action/BattleArena4Test.cs b/.Lib9c.Tests/Action/BattleArena4Test.cs index b78894e10d..c49f29830b 100644 --- a/.Lib9c.Tests/Action/BattleArena4Test.cs +++ b/.Lib9c.Tests/Action/BattleArena4Test.cs @@ -213,7 +213,6 @@ public IAccount JoinArena(IActionContext context, Address signer, Address avatar PreviousState = _state, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return _state; @@ -308,7 +307,6 @@ public void Execute( PreviousState = _state, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -927,7 +925,6 @@ public void Execute_v100291() PreviousState = _state, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); diff --git a/.Lib9c.Tests/Action/BattleArena5Test.cs b/.Lib9c.Tests/Action/BattleArena5Test.cs index 8b2f9aab84..f30765fae8 100644 --- a/.Lib9c.Tests/Action/BattleArena5Test.cs +++ b/.Lib9c.Tests/Action/BattleArena5Test.cs @@ -896,7 +896,6 @@ private void Execute( PreviousState = previousStates, Signer = myAgentAddress, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -1001,7 +1000,6 @@ private IAccount JoinArena( PreviousState = states, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return states; diff --git a/.Lib9c.Tests/Action/BattleArena6Test.cs b/.Lib9c.Tests/Action/BattleArena6Test.cs index 7067a0b31f..59ccc0d8ae 100644 --- a/.Lib9c.Tests/Action/BattleArena6Test.cs +++ b/.Lib9c.Tests/Action/BattleArena6Test.cs @@ -982,7 +982,6 @@ private void Execute( PreviousState = previousStates, Signer = myAgentAddress, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -1087,7 +1086,6 @@ private IAccount JoinArena( PreviousState = states, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return states; diff --git a/.Lib9c.Tests/Action/BattleArena7Test.cs b/.Lib9c.Tests/Action/BattleArena7Test.cs index 523a5626f7..2847662dcd 100644 --- a/.Lib9c.Tests/Action/BattleArena7Test.cs +++ b/.Lib9c.Tests/Action/BattleArena7Test.cs @@ -995,7 +995,6 @@ private void Execute( PreviousState = previousStates, Signer = myAgentAddress, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -1100,7 +1099,6 @@ private IAccount JoinArena( PreviousState = states, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return states; diff --git a/.Lib9c.Tests/Action/BattleArena8Test.cs b/.Lib9c.Tests/Action/BattleArena8Test.cs index 41779f3cf7..3814ffddcb 100644 --- a/.Lib9c.Tests/Action/BattleArena8Test.cs +++ b/.Lib9c.Tests/Action/BattleArena8Test.cs @@ -973,7 +973,6 @@ public void ExecuteDuplicatedException(int slotIndex, int runeId, int slotIndex2 PreviousState = previousStates, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, })); } @@ -1205,7 +1204,6 @@ private void Execute( PreviousState = previousStates, Signer = myAgentAddress, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -1310,7 +1308,6 @@ private IAccount JoinArena( PreviousState = states, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return states; diff --git a/.Lib9c.Tests/Action/BattleArena9Test.cs b/.Lib9c.Tests/Action/BattleArena9Test.cs index e79f7a291e..ab3554db6c 100644 --- a/.Lib9c.Tests/Action/BattleArena9Test.cs +++ b/.Lib9c.Tests/Action/BattleArena9Test.cs @@ -973,7 +973,6 @@ public void ExecuteDuplicatedException(int slotIndex, int runeId, int slotIndex2 PreviousState = previousStates, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, })); } @@ -1205,7 +1204,6 @@ private void Execute( PreviousState = previousStates, Signer = myAgentAddress, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -1310,7 +1308,6 @@ private IAccount JoinArena( PreviousState = states, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return states; diff --git a/.Lib9c.Tests/Action/Buy10Test.cs b/.Lib9c.Tests/Action/Buy10Test.cs index 3a3f550419..bddb360d9d 100644 --- a/.Lib9c.Tests/Action/Buy10Test.cs +++ b/.Lib9c.Tests/Action/Buy10Test.cs @@ -332,7 +332,6 @@ public void Execute(params OrderData[] orderDataList) BlockIndex = 100, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); @@ -701,7 +700,6 @@ public void Execute_ReconfigureFungibleItem(params OrderData[] orderDataList) BlockIndex = 100, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); @@ -809,7 +807,6 @@ public void Execute_With_Testbed() BlockIndex = 100, PreviousState = nextState, RandomSeed = 0, - Rehearsal = false, Signer = result.GetAgentState().address, }); diff --git a/.Lib9c.Tests/Action/Buy11Test.cs b/.Lib9c.Tests/Action/Buy11Test.cs index 6a68862fb3..30e0275d23 100644 --- a/.Lib9c.Tests/Action/Buy11Test.cs +++ b/.Lib9c.Tests/Action/Buy11Test.cs @@ -338,7 +338,6 @@ public void Execute(params OrderData[] orderDataList) BlockIndex = 100, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); @@ -707,7 +706,6 @@ public void Execute_ReconfigureFungibleItem(params OrderData[] orderDataList) BlockIndex = 100, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); @@ -818,7 +816,6 @@ public void Execute_With_Testbed() BlockIndex = 100, PreviousState = nextState, RandomSeed = 0, - Rehearsal = false, Signer = result.GetAgentState().address, }); @@ -937,7 +934,6 @@ public void Execute_ActionObsoletedException() BlockIndex = 100, PreviousState = nextState, RandomSeed = 0, - Rehearsal = false, Signer = result.GetAgentState().address, }); }); diff --git a/.Lib9c.Tests/Action/Buy2Test.cs b/.Lib9c.Tests/Action/Buy2Test.cs index 4efc953256..da5b9ea375 100644 --- a/.Lib9c.Tests/Action/Buy2Test.cs +++ b/.Lib9c.Tests/Action/Buy2Test.cs @@ -151,7 +151,6 @@ public void Execute() BlockIndex = 0, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); diff --git a/.Lib9c.Tests/Action/Buy3Test.cs b/.Lib9c.Tests/Action/Buy3Test.cs index 499bb94572..d6b72c532b 100644 --- a/.Lib9c.Tests/Action/Buy3Test.cs +++ b/.Lib9c.Tests/Action/Buy3Test.cs @@ -165,7 +165,6 @@ public void Execute() BlockIndex = 0, PreviousState = previousStates, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); diff --git a/.Lib9c.Tests/Action/Buy4Test.cs b/.Lib9c.Tests/Action/Buy4Test.cs index 6ad35d7fb6..072ece0228 100644 --- a/.Lib9c.Tests/Action/Buy4Test.cs +++ b/.Lib9c.Tests/Action/Buy4Test.cs @@ -184,7 +184,6 @@ public void Execute() BlockIndex = 0, PreviousState = previousStates, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); diff --git a/.Lib9c.Tests/Action/Buy5Test.cs b/.Lib9c.Tests/Action/Buy5Test.cs index 18e7413aa4..f17caa6b54 100644 --- a/.Lib9c.Tests/Action/Buy5Test.cs +++ b/.Lib9c.Tests/Action/Buy5Test.cs @@ -260,7 +260,6 @@ public void Execute(params ShopItemData[] shopItemMembers) BlockIndex = 1, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); diff --git a/.Lib9c.Tests/Action/Buy6Test.cs b/.Lib9c.Tests/Action/Buy6Test.cs index 6d61fa7104..79507ddd07 100644 --- a/.Lib9c.Tests/Action/Buy6Test.cs +++ b/.Lib9c.Tests/Action/Buy6Test.cs @@ -320,7 +320,6 @@ out _ BlockIndex = 1, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); diff --git a/.Lib9c.Tests/Action/Buy7Test.cs b/.Lib9c.Tests/Action/Buy7Test.cs index 7f77c8a1de..dc5468be03 100644 --- a/.Lib9c.Tests/Action/Buy7Test.cs +++ b/.Lib9c.Tests/Action/Buy7Test.cs @@ -321,7 +321,6 @@ out _ BlockIndex = 1, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); diff --git a/.Lib9c.Tests/Action/Buy8Test.cs b/.Lib9c.Tests/Action/Buy8Test.cs index f968b3815b..f5f899e048 100644 --- a/.Lib9c.Tests/Action/Buy8Test.cs +++ b/.Lib9c.Tests/Action/Buy8Test.cs @@ -306,7 +306,6 @@ out _ BlockIndex = 100, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); diff --git a/.Lib9c.Tests/Action/Buy9Test.cs b/.Lib9c.Tests/Action/Buy9Test.cs index b0da320384..5f8b67d0aa 100644 --- a/.Lib9c.Tests/Action/Buy9Test.cs +++ b/.Lib9c.Tests/Action/Buy9Test.cs @@ -404,7 +404,6 @@ out _ BlockIndex = 100, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); diff --git a/.Lib9c.Tests/Action/BuyMultipleTest.cs b/.Lib9c.Tests/Action/BuyMultipleTest.cs index 50a56ce6d3..83f9da09f9 100644 --- a/.Lib9c.Tests/Action/BuyMultipleTest.cs +++ b/.Lib9c.Tests/Action/BuyMultipleTest.cs @@ -335,7 +335,6 @@ public void Execute(params ShopItemData[] productDatas) BlockIndex = 1, PreviousState = previousStates, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); diff --git a/.Lib9c.Tests/Action/BuyTest.cs b/.Lib9c.Tests/Action/BuyTest.cs index dd26c09de8..fb6b6a14e6 100644 --- a/.Lib9c.Tests/Action/BuyTest.cs +++ b/.Lib9c.Tests/Action/BuyTest.cs @@ -347,7 +347,6 @@ public void Execute(params OrderData[] orderDataList) BlockIndex = 100, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); @@ -361,7 +360,6 @@ public void Execute(params OrderData[] orderDataList) BlockIndex = 100, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); @@ -776,7 +774,6 @@ public void Execute_ReconfigureFungibleItem(params OrderData[] orderDataList) BlockIndex = 100, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _buyerAgentAddress, }); @@ -884,7 +881,6 @@ public void Execute_With_Testbed() BlockIndex = 100, PreviousState = nextState, RandomSeed = 0, - Rehearsal = false, Signer = result.GetAgentState().address, }); diff --git a/.Lib9c.Tests/Action/ChargeActionPoint0Test.cs b/.Lib9c.Tests/Action/ChargeActionPoint0Test.cs index 48cd7890fc..7d95a4c606 100644 --- a/.Lib9c.Tests/Action/ChargeActionPoint0Test.cs +++ b/.Lib9c.Tests/Action/ChargeActionPoint0Test.cs @@ -73,7 +73,6 @@ public void Execute() PreviousState = state, Signer = agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarState(avatarAddress); diff --git a/.Lib9c.Tests/Action/ChargeActionPoint2Test.cs b/.Lib9c.Tests/Action/ChargeActionPoint2Test.cs index 2b38a15601..f15b2ab401 100644 --- a/.Lib9c.Tests/Action/ChargeActionPoint2Test.cs +++ b/.Lib9c.Tests/Action/ChargeActionPoint2Test.cs @@ -91,7 +91,6 @@ public void Execute(bool useTradable) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarState(_avatarAddress); @@ -146,7 +145,6 @@ public void Execute_Throw_NotEnoughMaterialException(bool useTradable) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }) ); } diff --git a/.Lib9c.Tests/Action/ChargeActionPointTest.cs b/.Lib9c.Tests/Action/ChargeActionPointTest.cs index c02d549f7f..7a78f06e33 100644 --- a/.Lib9c.Tests/Action/ChargeActionPointTest.cs +++ b/.Lib9c.Tests/Action/ChargeActionPointTest.cs @@ -108,7 +108,6 @@ public void Execute(bool useTradable, bool backward) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -164,7 +163,6 @@ public void Execute_Throw_Exception(bool useAvatarAddress, bool useTradable, boo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }) ); } diff --git a/.Lib9c.Tests/Action/Coupons/IssueCouponsTest.cs b/.Lib9c.Tests/Action/Coupons/IssueCouponsTest.cs index 4a2f2a5060..712254c8fd 100644 --- a/.Lib9c.Tests/Action/Coupons/IssueCouponsTest.cs +++ b/.Lib9c.Tests/Action/Coupons/IssueCouponsTest.cs @@ -33,7 +33,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, RandomSeed = random.Seed, BlockIndex = long.MaxValue, Signer = CouponsFixture.AgentAddress1, @@ -47,7 +46,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, RandomSeed = random.Seed, BlockIndex = 0, Signer = CouponsFixture.AgentAddress2, @@ -62,7 +60,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, RandomSeed = random.Seed, BlockIndex = 0, Signer = CouponsFixture.AgentAddress1, @@ -78,7 +75,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, RandomSeed = random.Seed, BlockIndex = 0, Signer = CouponsFixture.AgentAddress1, @@ -92,7 +88,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, RandomSeed = random.Seed, BlockIndex = 0, Signer = CouponsFixture.AgentAddress1, diff --git a/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs b/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs index 812a174853..dc7d2bd104 100644 --- a/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs +++ b/.Lib9c.Tests/Action/Coupons/RedeemCouponTest.cs @@ -117,7 +117,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, Signer = CouponsFixture.AgentAddress1, RandomSeed = random.Seed, })); @@ -148,7 +147,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, Signer = CouponsFixture.AgentAddress1, RandomSeed = random.Seed, }); @@ -164,7 +162,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, Signer = CouponsFixture.AgentAddress1, RandomSeed = random.Seed, }); @@ -183,7 +180,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, Signer = CouponsFixture.AgentAddress1, RandomSeed = random.Seed, }); @@ -203,7 +199,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, Signer = CouponsFixture.AgentAddress1, RandomSeed = random.Seed, }); @@ -221,7 +216,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, Signer = CouponsFixture.AgentAddress1, RandomSeed = random.Seed, }); @@ -243,7 +237,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, Signer = CouponsFixture.AgentAddress1, RandomSeed = random.Seed, }); @@ -260,7 +253,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, Signer = CouponsFixture.AgentAddress1, RandomSeed = random.Seed, }); @@ -280,7 +272,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, Signer = CouponsFixture.AgentAddress2, RandomSeed = random.Seed, }); @@ -302,7 +293,6 @@ public void Execute() new ActionContext { PreviousState = state, - Rehearsal = false, Signer = CouponsFixture.AgentAddress1, RandomSeed = random.Seed, }); diff --git a/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs b/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs index 741ce778aa..19671779c3 100644 --- a/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs +++ b/.Lib9c.Tests/Action/Coupons/TransferCouponsTest.cs @@ -42,7 +42,6 @@ public void Execute() { PreviousState = state, Signer = CouponsFixture.AgentAddress1, - Rehearsal = false, })); // can't transfer coupon that's not mine @@ -55,7 +54,6 @@ public void Execute() { PreviousState = state, Signer = CouponsFixture.AgentAddress2, - Rehearsal = false, })); // can't transfer a coupon to two different people @@ -70,7 +68,6 @@ public void Execute() { PreviousState = state, Signer = CouponsFixture.AgentAddress1, - Rehearsal = false, })); // transfer to self @@ -84,7 +81,6 @@ public void Execute() { PreviousState = state, Signer = CouponsFixture.AgentAddress1, - Rehearsal = false, }); Assert.Equal(expected, state.GetCouponWallet(CouponsFixture.AgentAddress1)); @@ -97,7 +93,6 @@ public void Execute() { PreviousState = state, Signer = CouponsFixture.AgentAddress1, - Rehearsal = false, }); Assert.Equal(expected, state.GetCouponWallet(CouponsFixture.AgentAddress1)); @@ -112,7 +107,6 @@ public void Execute() { PreviousState = state, Signer = CouponsFixture.AgentAddress1, - Rehearsal = false, }); Assert.Equal( expected.Remove(CouponsFixture.Guid1), @@ -132,7 +126,6 @@ public void Execute() { PreviousState = state, Signer = CouponsFixture.AgentAddress1, - Rehearsal = false, })); // multiple transfer @@ -162,7 +155,6 @@ public void Execute() { PreviousState = state, Signer = CouponsFixture.AgentAddress1, - Rehearsal = false, }); Assert.Equal( ImmutableDictionary.Empty, diff --git a/.Lib9c.Tests/Action/DailyReward0Test.cs b/.Lib9c.Tests/Action/DailyReward0Test.cs index 8ee7adf08b..28b3fac50b 100644 --- a/.Lib9c.Tests/Action/DailyReward0Test.cs +++ b/.Lib9c.Tests/Action/DailyReward0Test.cs @@ -65,7 +65,6 @@ public void Execute() { BlockIndex = 0, PreviousState = _initialState, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/DailyReward2Test.cs b/.Lib9c.Tests/Action/DailyReward2Test.cs index aae8b3ccaa..d9fa11a272 100644 --- a/.Lib9c.Tests/Action/DailyReward2Test.cs +++ b/.Lib9c.Tests/Action/DailyReward2Test.cs @@ -68,7 +68,6 @@ public void Execute() BlockIndex = 0, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/DailyReward3Test.cs b/.Lib9c.Tests/Action/DailyReward3Test.cs index 0a299a2594..f107300ff8 100644 --- a/.Lib9c.Tests/Action/DailyReward3Test.cs +++ b/.Lib9c.Tests/Action/DailyReward3Test.cs @@ -68,7 +68,6 @@ public void Execute() BlockIndex = 0, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/DailyReward4Test.cs b/.Lib9c.Tests/Action/DailyReward4Test.cs index 4fa13eb6e7..1ea3a98d08 100644 --- a/.Lib9c.Tests/Action/DailyReward4Test.cs +++ b/.Lib9c.Tests/Action/DailyReward4Test.cs @@ -83,7 +83,6 @@ public void Execute(bool backward) BlockIndex = 0, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/DailyReward5Test.cs b/.Lib9c.Tests/Action/DailyReward5Test.cs index 0fdd70f9ea..0bfc80f725 100644 --- a/.Lib9c.Tests/Action/DailyReward5Test.cs +++ b/.Lib9c.Tests/Action/DailyReward5Test.cs @@ -139,7 +139,6 @@ private IAccount ExecuteInternal(IAccount previousStates, long blockIndex = 0) BlockIndex = blockIndex, PreviousState = previousStates, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); } diff --git a/.Lib9c.Tests/Action/DailyReward6Test.cs b/.Lib9c.Tests/Action/DailyReward6Test.cs index 1b344d4d82..6835f4054e 100644 --- a/.Lib9c.Tests/Action/DailyReward6Test.cs +++ b/.Lib9c.Tests/Action/DailyReward6Test.cs @@ -164,7 +164,6 @@ private IAccount ExecuteInternal(IAccount previousStates, long blockIndex = 0) BlockIndex = blockIndex, PreviousState = previousStates, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); } diff --git a/.Lib9c.Tests/Action/DailyRewardTest.cs b/.Lib9c.Tests/Action/DailyRewardTest.cs index d07eac4d56..bbcc161752 100644 --- a/.Lib9c.Tests/Action/DailyRewardTest.cs +++ b/.Lib9c.Tests/Action/DailyRewardTest.cs @@ -163,7 +163,6 @@ private IAccount ExecuteInternal(IAccount previousStates, long blockIndex = 0) BlockIndex = blockIndex, PreviousState = previousStates, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); } diff --git a/.Lib9c.Tests/Action/EventConsumableItemCrafts0Test.cs b/.Lib9c.Tests/Action/EventConsumableItemCrafts0Test.cs index f3dfd1c6a7..8c9e06f59a 100644 --- a/.Lib9c.Tests/Action/EventConsumableItemCrafts0Test.cs +++ b/.Lib9c.Tests/Action/EventConsumableItemCrafts0Test.cs @@ -156,7 +156,6 @@ private void Execute( PreviousState = previousStates, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = blockIndex, }); diff --git a/.Lib9c.Tests/Action/EventDungeonBattleV1Test.cs b/.Lib9c.Tests/Action/EventDungeonBattleV1Test.cs index 4c1204ece2..6ae643a3c0 100644 --- a/.Lib9c.Tests/Action/EventDungeonBattleV1Test.cs +++ b/.Lib9c.Tests/Action/EventDungeonBattleV1Test.cs @@ -418,7 +418,6 @@ private IAccount Execute( PreviousState = previousStates, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = blockIndex, }); diff --git a/.Lib9c.Tests/Action/EventDungeonBattleV2Test.cs b/.Lib9c.Tests/Action/EventDungeonBattleV2Test.cs index 685463ec8d..1ce14efbb4 100644 --- a/.Lib9c.Tests/Action/EventDungeonBattleV2Test.cs +++ b/.Lib9c.Tests/Action/EventDungeonBattleV2Test.cs @@ -432,7 +432,6 @@ private IAccount Execute( PreviousState = previousStates, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = blockIndex, }); diff --git a/.Lib9c.Tests/Action/EventDungeonBattleV3Test.cs b/.Lib9c.Tests/Action/EventDungeonBattleV3Test.cs index 80969c7e0b..c60a9b1bb0 100644 --- a/.Lib9c.Tests/Action/EventDungeonBattleV3Test.cs +++ b/.Lib9c.Tests/Action/EventDungeonBattleV3Test.cs @@ -431,7 +431,6 @@ private IAccount Execute( PreviousState = previousStates, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = blockIndex, }); diff --git a/.Lib9c.Tests/Action/EventDungeonBattleV4Test.cs b/.Lib9c.Tests/Action/EventDungeonBattleV4Test.cs index d19a701981..dcc3ffa847 100644 --- a/.Lib9c.Tests/Action/EventDungeonBattleV4Test.cs +++ b/.Lib9c.Tests/Action/EventDungeonBattleV4Test.cs @@ -479,7 +479,6 @@ private IAccount Execute( PreviousState = previousStates, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = blockIndex, }); diff --git a/.Lib9c.Tests/Action/EventDungeonBattleV5Test.cs b/.Lib9c.Tests/Action/EventDungeonBattleV5Test.cs index 9db984f2c1..cfb0c9bd6c 100644 --- a/.Lib9c.Tests/Action/EventDungeonBattleV5Test.cs +++ b/.Lib9c.Tests/Action/EventDungeonBattleV5Test.cs @@ -480,7 +480,6 @@ private IAccount Execute( PreviousState = previousStates, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = blockIndex, }); diff --git a/.Lib9c.Tests/Action/EventMaterialItemCrafts0Test.cs b/.Lib9c.Tests/Action/EventMaterialItemCrafts0Test.cs index 3dbd1a3c75..73b093e7ec 100644 --- a/.Lib9c.Tests/Action/EventMaterialItemCrafts0Test.cs +++ b/.Lib9c.Tests/Action/EventMaterialItemCrafts0Test.cs @@ -250,7 +250,6 @@ private void Execute( PreviousState = previousStates, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = blockIndex, }); diff --git a/.Lib9c.Tests/Action/Garages/DeliverToOthersGaragesTest.cs b/.Lib9c.Tests/Action/Garages/DeliverToOthersGaragesTest.cs index fcc560bd4c..f302680934 100644 --- a/.Lib9c.Tests/Action/Garages/DeliverToOthersGaragesTest.cs +++ b/.Lib9c.Tests/Action/Garages/DeliverToOthersGaragesTest.cs @@ -336,7 +336,6 @@ private static (DeliverToOthersGarages action, IAccount nextStates) Execute( { Signer = signer, BlockIndex = blockIndex, - Rehearsal = false, PreviousState = previousState, RandomSeed = random.Seed, })); diff --git a/.Lib9c.Tests/Action/Garages/LoadIntoMyGaragesTest.cs b/.Lib9c.Tests/Action/Garages/LoadIntoMyGaragesTest.cs index 244a09035a..afa3f56fd6 100644 --- a/.Lib9c.Tests/Action/Garages/LoadIntoMyGaragesTest.cs +++ b/.Lib9c.Tests/Action/Garages/LoadIntoMyGaragesTest.cs @@ -415,7 +415,6 @@ private static (LoadIntoMyGarages action, IAccount nextStates) Execute( { Signer = signer, BlockIndex = blockIndex, - Rehearsal = false, PreviousState = previousState, RandomSeed = random.Seed, }; diff --git a/.Lib9c.Tests/Action/Garages/UnloadFromMyGaragesTest.cs b/.Lib9c.Tests/Action/Garages/UnloadFromMyGaragesTest.cs index 13625c7a9f..f6db803197 100644 --- a/.Lib9c.Tests/Action/Garages/UnloadFromMyGaragesTest.cs +++ b/.Lib9c.Tests/Action/Garages/UnloadFromMyGaragesTest.cs @@ -344,7 +344,6 @@ private static (UnloadFromMyGarages action, IAccount nextStates) Execute( { Signer = signer, BlockIndex = blockIndex, - Rehearsal = false, PreviousState = previousState, RandomSeed = random.Seed, })); diff --git a/.Lib9c.Tests/Action/HackAndSlash0Test.cs b/.Lib9c.Tests/Action/HackAndSlash0Test.cs index 6c64e632a4..4f5099e874 100644 --- a/.Lib9c.Tests/Action/HackAndSlash0Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash0Test.cs @@ -118,7 +118,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool contains) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarState(_avatarAddress); @@ -163,7 +162,6 @@ public void ExecuteThrowInvalidRankingMapAddress() PreviousState = _initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }) ); @@ -587,7 +585,6 @@ public void SerializeWithDotnetAPI() PreviousState = _initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var formatter = new BinaryFormatter(); diff --git a/.Lib9c.Tests/Action/HackAndSlash10Test.cs b/.Lib9c.Tests/Action/HackAndSlash10Test.cs index a05f433b14..cc3cfa3a3b 100644 --- a/.Lib9c.Tests/Action/HackAndSlash10Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash10Test.cs @@ -232,7 +232,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -373,7 +372,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -436,7 +434,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -463,7 +460,6 @@ public void ExecuteThrowInvalidRankingMapAddress() PreviousState = _initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }) ); @@ -892,7 +888,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1056,7 +1051,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId, int playCo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/HackAndSlash11Test.cs b/.Lib9c.Tests/Action/HackAndSlash11Test.cs index 136de735b0..e4ee28fcb7 100644 --- a/.Lib9c.Tests/Action/HackAndSlash11Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash11Test.cs @@ -230,7 +230,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -360,7 +359,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -422,7 +420,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -839,7 +836,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1002,7 +998,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId, int playCo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/HackAndSlash12Test.cs b/.Lib9c.Tests/Action/HackAndSlash12Test.cs index 95c9fe5f39..9c892f5e8e 100644 --- a/.Lib9c.Tests/Action/HackAndSlash12Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash12Test.cs @@ -204,7 +204,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -344,7 +343,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -406,7 +404,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -823,7 +820,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -998,7 +994,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId, int playCo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/HackAndSlash13Test.cs b/.Lib9c.Tests/Action/HackAndSlash13Test.cs index 1194844368..63f71388f0 100644 --- a/.Lib9c.Tests/Action/HackAndSlash13Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash13Test.cs @@ -210,7 +210,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool backward, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -352,7 +351,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -413,7 +411,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -832,7 +829,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1039,7 +1035,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/HackAndSlash15Test.cs b/.Lib9c.Tests/Action/HackAndSlash15Test.cs index 83f66fe53f..444e561047 100644 --- a/.Lib9c.Tests/Action/HackAndSlash15Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash15Test.cs @@ -206,7 +206,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool backward, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -348,7 +347,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -409,7 +407,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -804,7 +801,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -980,7 +976,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1130,7 +1125,6 @@ public void CheckCrystalRandomSkillState(bool forceClear, bool skillStateExist, PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); diff --git a/.Lib9c.Tests/Action/HackAndSlash16Test.cs b/.Lib9c.Tests/Action/HackAndSlash16Test.cs index ed94d53d1a..fbcf6f1092 100644 --- a/.Lib9c.Tests/Action/HackAndSlash16Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash16Test.cs @@ -207,7 +207,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool backward, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -349,7 +348,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -410,7 +408,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -815,7 +812,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1025,7 +1021,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1175,7 +1170,6 @@ public void CheckCrystalRandomSkillState(bool forceClear, bool skillStateExist, PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); diff --git a/.Lib9c.Tests/Action/HackAndSlash17Test.cs b/.Lib9c.Tests/Action/HackAndSlash17Test.cs index 5098b6b8ca..5edba40101 100644 --- a/.Lib9c.Tests/Action/HackAndSlash17Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash17Test.cs @@ -207,7 +207,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool backward, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -349,7 +348,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -410,7 +408,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -815,7 +812,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1025,7 +1021,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1175,7 +1170,6 @@ public void CheckCrystalRandomSkillState(bool forceClear, bool skillStateExist, PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); diff --git a/.Lib9c.Tests/Action/HackAndSlash18Test.cs b/.Lib9c.Tests/Action/HackAndSlash18Test.cs index 2c7913f005..a21d3551c0 100644 --- a/.Lib9c.Tests/Action/HackAndSlash18Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash18Test.cs @@ -205,7 +205,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool backward, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); @@ -347,7 +346,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -408,7 +406,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -813,7 +810,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1010,7 +1006,6 @@ public void Execute_V100291() PreviousState = initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1119,7 +1114,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1289,7 +1283,6 @@ public void CheckCrystalRandomSkillState( PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); @@ -1409,7 +1402,6 @@ public void CheckUsedApByStaking(int level, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); diff --git a/.Lib9c.Tests/Action/HackAndSlash19Test.cs b/.Lib9c.Tests/Action/HackAndSlash19Test.cs index b55ba76a8f..7cbcf25b2a 100644 --- a/.Lib9c.Tests/Action/HackAndSlash19Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash19Test.cs @@ -205,7 +205,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool backward, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); @@ -349,7 +348,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -411,7 +409,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -827,7 +824,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1040,7 +1036,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1211,7 +1206,6 @@ public void CheckCrystalRandomSkillState( PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); @@ -1333,7 +1327,6 @@ public void CheckUsedApByStaking(int level, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); diff --git a/.Lib9c.Tests/Action/HackAndSlash20Test.cs b/.Lib9c.Tests/Action/HackAndSlash20Test.cs index e2d29ceadd..154f5d533a 100644 --- a/.Lib9c.Tests/Action/HackAndSlash20Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash20Test.cs @@ -206,7 +206,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool backward, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); @@ -350,7 +349,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -412,7 +410,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -828,7 +825,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1130,7 +1126,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1301,7 +1296,6 @@ public void CheckCrystalRandomSkillState( PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); @@ -1423,7 +1417,6 @@ public void CheckUsedApByStaking(int level, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); @@ -1503,7 +1496,6 @@ public void CheckUsingApStoneWithStaking(int level, int apStoneCount, int totalR PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); @@ -1650,7 +1642,6 @@ public void ExecuteTwoRepetitions() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); @@ -1674,7 +1665,6 @@ public void ExecuteTwoRepetitions() PreviousState = nextState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); } diff --git a/.Lib9c.Tests/Action/HackAndSlash21Test.cs b/.Lib9c.Tests/Action/HackAndSlash21Test.cs index a742a65683..15db05f4fc 100644 --- a/.Lib9c.Tests/Action/HackAndSlash21Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash21Test.cs @@ -207,7 +207,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool backward, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); @@ -351,7 +350,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -413,7 +411,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -829,7 +826,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1131,7 +1127,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1302,7 +1297,6 @@ public void CheckCrystalRandomSkillState( PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); @@ -1424,7 +1418,6 @@ public void CheckUsedApByStaking(int level, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); @@ -1504,7 +1497,6 @@ public void CheckUsingApStoneWithStaking(int level, int apStoneCount, int totalR PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); @@ -1651,7 +1643,6 @@ public void ExecuteTwoRepetitions() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); @@ -1675,7 +1666,6 @@ public void ExecuteTwoRepetitions() PreviousState = nextState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); } diff --git a/.Lib9c.Tests/Action/HackAndSlash2Test.cs b/.Lib9c.Tests/Action/HackAndSlash2Test.cs index cc18f27730..8852574dd7 100644 --- a/.Lib9c.Tests/Action/HackAndSlash2Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash2Test.cs @@ -120,7 +120,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool contains) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarState(_avatarAddress); @@ -172,7 +171,6 @@ public void ExecuteThrowInvalidRankingMapAddress() PreviousState = _initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }) ); @@ -596,7 +594,6 @@ public void SerializeWithDotnetAPI() PreviousState = _initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var formatter = new BinaryFormatter(); diff --git a/.Lib9c.Tests/Action/HackAndSlash3Test.cs b/.Lib9c.Tests/Action/HackAndSlash3Test.cs index a9087c4b87..5803ddeb06 100644 --- a/.Lib9c.Tests/Action/HackAndSlash3Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash3Test.cs @@ -134,7 +134,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool contains) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarState(_avatarAddress); diff --git a/.Lib9c.Tests/Action/HackAndSlash4Test.cs b/.Lib9c.Tests/Action/HackAndSlash4Test.cs index b38c565904..d2e5150168 100644 --- a/.Lib9c.Tests/Action/HackAndSlash4Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash4Test.cs @@ -182,7 +182,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool contains) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarState(_avatarAddress); @@ -261,7 +260,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarState(_avatarAddress); @@ -324,7 +322,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -353,7 +350,6 @@ public void ExecuteThrowInvalidRankingMapAddress() PreviousState = _initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }) ); diff --git a/.Lib9c.Tests/Action/HackAndSlash5Test.cs b/.Lib9c.Tests/Action/HackAndSlash5Test.cs index c17382bf6b..928e98228d 100644 --- a/.Lib9c.Tests/Action/HackAndSlash5Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash5Test.cs @@ -182,7 +182,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool contains) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -262,7 +261,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarState(_avatarAddress); @@ -325,7 +323,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -354,7 +351,6 @@ public void ExecuteThrowInvalidRankingMapAddress() PreviousState = _initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }) ); diff --git a/.Lib9c.Tests/Action/HackAndSlash6Test.cs b/.Lib9c.Tests/Action/HackAndSlash6Test.cs index b104abcfd7..f25c495e63 100644 --- a/.Lib9c.Tests/Action/HackAndSlash6Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash6Test.cs @@ -198,7 +198,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool contains, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -278,7 +277,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarState(_avatarAddress); @@ -341,7 +339,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -370,7 +367,6 @@ public void ExecuteThrowInvalidRankingMapAddress() PreviousState = _initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }) ); diff --git a/.Lib9c.Tests/Action/HackAndSlash7Test.cs b/.Lib9c.Tests/Action/HackAndSlash7Test.cs index 0250496732..ff19531cd7 100644 --- a/.Lib9c.Tests/Action/HackAndSlash7Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash7Test.cs @@ -224,7 +224,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool contains, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -383,7 +382,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -446,7 +444,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -473,7 +470,6 @@ public void ExecuteThrowInvalidRankingMapAddress() PreviousState = _initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }) ); diff --git a/.Lib9c.Tests/Action/HackAndSlash8Test.cs b/.Lib9c.Tests/Action/HackAndSlash8Test.cs index 034c6e71db..c5720fd0d8 100644 --- a/.Lib9c.Tests/Action/HackAndSlash8Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash8Test.cs @@ -230,7 +230,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool backward, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -379,7 +378,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -441,7 +439,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -467,7 +464,6 @@ public void ExecuteThrowInvalidRankingMapAddress() PreviousState = _initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }) ); diff --git a/.Lib9c.Tests/Action/HackAndSlash9Test.cs b/.Lib9c.Tests/Action/HackAndSlash9Test.cs index 18ba2738db..eddd1289dc 100644 --- a/.Lib9c.Tests/Action/HackAndSlash9Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash9Test.cs @@ -232,7 +232,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -396,7 +395,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -459,7 +457,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -486,7 +483,6 @@ public void ExecuteThrowInvalidRankingMapAddress() PreviousState = _initialState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }) ); @@ -915,7 +911,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1079,7 +1074,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId, int playCo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/HackAndSlashTest14.cs b/.Lib9c.Tests/Action/HackAndSlashTest14.cs index af79f5af6b..81af3850c0 100644 --- a/.Lib9c.Tests/Action/HackAndSlashTest14.cs +++ b/.Lib9c.Tests/Action/HackAndSlashTest14.cs @@ -197,7 +197,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, bool backward, bo PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -339,7 +338,6 @@ public void MaxLevelTest() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarStateV2(_avatarAddress); @@ -400,7 +398,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, })); SerializeException(exec); @@ -795,7 +792,6 @@ public void ExecuteWithoutPlayCount() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -971,7 +967,6 @@ public void CheckRewardItems(bool backward, int worldId, int stageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -1121,7 +1116,6 @@ public void CheckCrystalRandomSkillState(bool forceClear, bool skillStateExist, PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }; var nextState = action.Execute(ctx); diff --git a/.Lib9c.Tests/Action/JoinArena1Test.cs b/.Lib9c.Tests/Action/JoinArena1Test.cs index f197955dd5..a721dca2ce 100644 --- a/.Lib9c.Tests/Action/JoinArena1Test.cs +++ b/.Lib9c.Tests/Action/JoinArena1Test.cs @@ -221,7 +221,6 @@ public void Execute(long blockIndex, int championshipId, int round, string balan PreviousState = state, Signer = _signer, RandomSeed = _random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -403,7 +402,6 @@ public void Execute_ArenaScoreAlreadyContainsException() PreviousState = state, Signer = _signer, RandomSeed = _random.Seed, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/JoinArena2Test.cs b/.Lib9c.Tests/Action/JoinArena2Test.cs index 8d622408ac..6be17483a0 100644 --- a/.Lib9c.Tests/Action/JoinArena2Test.cs +++ b/.Lib9c.Tests/Action/JoinArena2Test.cs @@ -222,7 +222,6 @@ public void Execute(long blockIndex, int championshipId, int round, string balan PreviousState = state, Signer = _signer, RandomSeed = _random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -409,7 +408,6 @@ public void Execute_ArenaScoreAlreadyContainsException() PreviousState = state, Signer = _signer, RandomSeed = _random.Seed, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/JoinArena3Test.cs b/.Lib9c.Tests/Action/JoinArena3Test.cs index b0b21fde97..1785f2d33d 100644 --- a/.Lib9c.Tests/Action/JoinArena3Test.cs +++ b/.Lib9c.Tests/Action/JoinArena3Test.cs @@ -225,7 +225,6 @@ public void Execute(long blockIndex, int championshipId, int round, string balan PreviousState = state, Signer = _signer, RandomSeed = _random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -412,7 +411,6 @@ public void Execute_ArenaScoreAlreadyContainsException() PreviousState = state, Signer = _signer, RandomSeed = _random.Seed, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle0Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle0Test.cs index dfd998d6be..79bb52f22c 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle0Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle0Test.cs @@ -169,7 +169,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int clearStageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarState(_avatarAddress); @@ -259,7 +258,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -494,7 +492,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext() { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -584,7 +582,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs index f4f5c22988..5259f6eaf1 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs @@ -159,7 +159,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, in PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); @@ -233,7 +232,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -429,7 +427,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -512,7 +510,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); } @@ -711,7 +708,6 @@ public void Execute_v100291() PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -821,7 +817,6 @@ public void CheckRewardItems(bool backward, int stageIndex, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle11Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle11Test.cs index 82b62d5d05..f826103bd5 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle11Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle11Test.cs @@ -158,7 +158,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, in PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); @@ -233,7 +232,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -434,7 +432,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -519,7 +517,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); } @@ -717,7 +714,6 @@ public void CheckRewardItems(bool backward, int stageIndex, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle12Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle12Test.cs index 55c0a813d6..e5e9e5d7e0 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle12Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle12Test.cs @@ -165,7 +165,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, in PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); @@ -240,7 +239,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -441,7 +439,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -526,7 +524,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); } @@ -724,7 +721,6 @@ public void CheckRewardItems(bool backward, int stageIndex, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -854,7 +850,6 @@ public void ExecuteDuplicatedException(int slotIndex, int runeId, int slotIndex2 PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, })); } diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle13Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle13Test.cs index 100cc6a8dd..f0bb910580 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle13Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle13Test.cs @@ -166,7 +166,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, in PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, }); @@ -241,7 +240,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -442,7 +440,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -527,7 +525,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); } @@ -725,7 +722,6 @@ public void CheckRewardItems(bool backward, int stageIndex, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -855,7 +851,6 @@ public void ExecuteDuplicatedException(int slotIndex, int runeId, int slotIndex2 PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = ActionObsoleteConfig.V100301ExecutedBlockIndex, })); } diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle2Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle2Test.cs index 38cafdaf2d..7445e75fd2 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle2Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle2Test.cs @@ -169,7 +169,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int clearStageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); var nextAvatarState = nextState.GetAvatarState(_avatarAddress); @@ -259,7 +258,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -494,7 +492,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext() { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -584,7 +582,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle3Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle3Test.cs index b136b3f99b..ea89b64de1 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle3Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle3Test.cs @@ -169,7 +169,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int clearStageId) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -260,7 +259,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -495,7 +493,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext() { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -585,7 +583,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs index 16dbecae07..9a25271149 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs @@ -182,7 +182,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int clearStageId, PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -269,7 +268,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -495,7 +493,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext() { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -581,7 +579,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); } diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs index 1e0dbf0ad9..3f17b2f013 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs @@ -177,7 +177,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int clearStageId, PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -262,7 +261,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -482,7 +480,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext() { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -566,7 +564,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); } diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs index 0a07bcdcb9..dd10fb4a00 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs @@ -187,7 +187,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, in PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -273,7 +272,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -499,7 +497,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext() { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -584,7 +582,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); } @@ -706,7 +703,6 @@ public void CheckRewardItems(bool backward, int stageIndex, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs index 1eae59601a..a0c3eff931 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs @@ -187,7 +187,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, in PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -273,7 +272,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -499,7 +497,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext() { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -584,7 +582,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); } @@ -706,7 +703,6 @@ public void CheckRewardItems(bool backward, int stageIndex, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs index 5f1a32d5d4..570019c5d1 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs @@ -182,7 +182,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, in PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -257,7 +256,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -453,7 +451,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext() { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -536,7 +534,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); } @@ -657,7 +654,6 @@ public void CheckRewardItems(bool backward, int stageIndex, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs index 519be580bf..75ec852eaf 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs @@ -158,7 +158,6 @@ public void Execute(int avatarLevel, int worldId, int stageId, int playCount, in PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); @@ -232,7 +231,6 @@ public void ExecuteThrowInvalidStageException() PreviousState = previousState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -428,7 +426,7 @@ public void ExecuteThrowInvalidWorld(int avatarLevel, int worldId, int stageId, { action.Execute(new ActionContext { - PreviousState = state, Signer = _agentAddress, RandomSeed = 0, Rehearsal = false, + PreviousState = state, Signer = _agentAddress, RandomSeed = 0, }); }); } @@ -511,7 +509,6 @@ public void ExecuteEquippableItemValidation() { PreviousState = nextState, Signer = _agentAddress, - Rehearsal = false, RandomSeed = 0, }); } @@ -707,7 +704,6 @@ public void CheckRewardItems(bool backward, int stageIndex, int playCount) PreviousState = state, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, BlockIndex = 1, }); diff --git a/.Lib9c.Tests/Action/PatchTableSheetTest.cs b/.Lib9c.Tests/Action/PatchTableSheetTest.cs index 4da2f7e2b5..e202d047d8 100644 --- a/.Lib9c.Tests/Action/PatchTableSheetTest.cs +++ b/.Lib9c.Tests/Action/PatchTableSheetTest.cs @@ -54,7 +54,6 @@ public void Execute() { BlockIndex = 0, PreviousState = _initialState, - Rehearsal = false, }); var nextWorldSheetCsv = nextState.GetSheetCsv(); @@ -73,7 +72,6 @@ public void Execute() { BlockIndex = 0, PreviousState = _initialState, - Rehearsal = false, }); nextWorldSheet = nextState.GetSheet(); diff --git a/.Lib9c.Tests/Action/PetEnhancement0Test.cs b/.Lib9c.Tests/Action/PetEnhancement0Test.cs index ad523b8783..02cdca6cfa 100644 --- a/.Lib9c.Tests/Action/PetEnhancement0Test.cs +++ b/.Lib9c.Tests/Action/PetEnhancement0Test.cs @@ -379,7 +379,6 @@ private static IAccount Execute( BlockIndex = blockIndex, PreviousState = prevStates, RandomSeed = 0, - Rehearsal = false, Signer = agentAddr, }); var nextNcgBal = nextStates.GetBalance(agentAddr, ncgCurrency); diff --git a/.Lib9c.Tests/Action/Raid1Test.cs b/.Lib9c.Tests/Action/Raid1Test.cs index ed7e5c58bb..f59273bdec 100644 --- a/.Lib9c.Tests/Action/Raid1Test.cs +++ b/.Lib9c.Tests/Action/Raid1Test.cs @@ -213,7 +213,6 @@ long executeOffset BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }; @@ -350,7 +349,6 @@ Dictionary rewardMap BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, })); } @@ -463,7 +461,6 @@ Dictionary rewardMap BlockIndex = worldBossRow.StartedBlockIndex + Raid4.RequiredInterval, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }); @@ -561,7 +558,6 @@ public void Execute_Throw_ActionObsoletedException() BlockIndex = blockIndex, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, })); } diff --git a/.Lib9c.Tests/Action/Raid2Test.cs b/.Lib9c.Tests/Action/Raid2Test.cs index 87bc1af9a8..d3fc73659d 100644 --- a/.Lib9c.Tests/Action/Raid2Test.cs +++ b/.Lib9c.Tests/Action/Raid2Test.cs @@ -225,7 +225,6 @@ bool raiderListExist BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }; @@ -368,7 +367,6 @@ Dictionary rewardMap BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, })); } @@ -482,7 +480,6 @@ Dictionary rewardMap BlockIndex = worldBossRow.StartedBlockIndex + Raid4.RequiredInterval, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/Raid3Test.cs b/.Lib9c.Tests/Action/Raid3Test.cs index d136b07503..8dab740d7e 100644 --- a/.Lib9c.Tests/Action/Raid3Test.cs +++ b/.Lib9c.Tests/Action/Raid3Test.cs @@ -226,7 +226,6 @@ bool raiderListExist BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }; @@ -369,7 +368,6 @@ Dictionary rewardMap BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, })); } @@ -484,7 +482,6 @@ Dictionary rewardMap BlockIndex = worldBossRow.StartedBlockIndex + Raid4.RequiredInterval, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/Raid4Test.cs b/.Lib9c.Tests/Action/Raid4Test.cs index ff3c6d6ec6..919fbecd72 100644 --- a/.Lib9c.Tests/Action/Raid4Test.cs +++ b/.Lib9c.Tests/Action/Raid4Test.cs @@ -247,7 +247,6 @@ int runeId2 BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }; @@ -410,7 +409,6 @@ Dictionary rewardMap BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, })); } @@ -525,7 +523,6 @@ Dictionary rewardMap BlockIndex = worldBossRow.StartedBlockIndex + Raid4.RequiredInterval, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }); @@ -626,7 +623,6 @@ public void Execute_With_Free_Crystal_Fee() BlockIndex = blockIndex, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }; diff --git a/.Lib9c.Tests/Action/Raid5Test.cs b/.Lib9c.Tests/Action/Raid5Test.cs index 9edb82739d..21fdc1fb65 100644 --- a/.Lib9c.Tests/Action/Raid5Test.cs +++ b/.Lib9c.Tests/Action/Raid5Test.cs @@ -247,7 +247,6 @@ int runeId2 BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }; @@ -410,7 +409,6 @@ Dictionary rewardMap BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, })); } @@ -527,7 +525,6 @@ Dictionary rewardMap BlockIndex = worldBossRow.StartedBlockIndex + gameConfigState.WorldBossRequiredInterval, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }); @@ -628,7 +625,6 @@ public void Execute_With_Free_Crystal_Fee() BlockIndex = blockIndex, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }; diff --git a/.Lib9c.Tests/Action/Raid6Test.cs b/.Lib9c.Tests/Action/Raid6Test.cs index 50c1cba896..9752e2d93e 100644 --- a/.Lib9c.Tests/Action/Raid6Test.cs +++ b/.Lib9c.Tests/Action/Raid6Test.cs @@ -247,7 +247,6 @@ int runeId2 BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }; @@ -410,7 +409,6 @@ Dictionary rewardMap BlockIndex = blockIndex + executeOffset, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, })); } @@ -527,7 +525,6 @@ Dictionary rewardMap BlockIndex = worldBossRow.StartedBlockIndex + gameConfigState.WorldBossRequiredInterval, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }); @@ -628,7 +625,6 @@ public void Execute_With_Free_Crystal_Fee() BlockIndex = blockIndex, PreviousState = state, RandomSeed = randomSeed, - Rehearsal = false, Signer = _agentAddress, }; diff --git a/.Lib9c.Tests/Action/RankingBattle0Test.cs b/.Lib9c.Tests/Action/RankingBattle0Test.cs index 553780f326..55f862cb46 100644 --- a/.Lib9c.Tests/Action/RankingBattle0Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle0Test.cs @@ -135,7 +135,6 @@ public void Execute() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarState(_avatar1Address); @@ -169,7 +168,6 @@ public void ExecuteThrowInvalidAddressException() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -214,7 +212,6 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) PreviousState = _initialState, Signer = signer, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -249,7 +246,6 @@ public void ExecuteThrowNotEnoughClearedStageLevelException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -281,7 +277,6 @@ public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -327,7 +322,6 @@ public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException( PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -368,7 +362,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -419,7 +412,6 @@ public void ExecuteThrowNotEnoughFungibleAssetValueException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } diff --git a/.Lib9c.Tests/Action/RankingBattle10Test.cs b/.Lib9c.Tests/Action/RankingBattle10Test.cs index e142848af9..119863a3c9 100644 --- a/.Lib9c.Tests/Action/RankingBattle10Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle10Test.cs @@ -215,7 +215,6 @@ public void Execute(bool isNew, bool avatarBackward, bool enemyBackward) PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarStateV2(_avatar1Address); @@ -269,7 +268,6 @@ public void ExecuteThrowInvalidAddressException() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -313,7 +311,6 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) PreviousState = _initialState, Signer = signer, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -347,7 +344,6 @@ public void ExecuteThrowNotEnoughClearedStageLevelException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -378,7 +374,6 @@ public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -411,7 +406,6 @@ public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -451,7 +445,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -506,7 +499,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, })); } } diff --git a/.Lib9c.Tests/Action/RankingBattle11Test.cs b/.Lib9c.Tests/Action/RankingBattle11Test.cs index 112d594f6f..d7697f8676 100644 --- a/.Lib9c.Tests/Action/RankingBattle11Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle11Test.cs @@ -198,7 +198,6 @@ public void Execute() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, BlockIndex = RankingBattle11.UpdateTargetBlockIndex, }); @@ -340,7 +339,6 @@ public void Execute_Backward_Compatible(bool isNew, bool avatarBackward, bool en PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, BlockIndex = RankingBattle11.UpdateTargetBlockIndex - 1, }); @@ -395,7 +393,6 @@ public void ExecuteThrowInvalidAddressException() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -439,7 +436,6 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) PreviousState = _initialState, Signer = signer, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -473,7 +469,6 @@ public void ExecuteThrowNotEnoughClearedStageLevelException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -504,7 +499,6 @@ public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -537,7 +531,6 @@ public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -577,7 +570,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -708,7 +700,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, })); } @@ -744,7 +735,6 @@ public void Execute_ActionObsoletedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } diff --git a/.Lib9c.Tests/Action/RankingBattle2Test.cs b/.Lib9c.Tests/Action/RankingBattle2Test.cs index 72e673c4db..9ce0b1ee24 100644 --- a/.Lib9c.Tests/Action/RankingBattle2Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle2Test.cs @@ -128,7 +128,6 @@ public void Execute() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarState(_avatar1Address); @@ -162,7 +161,6 @@ public void ExecuteThrowInvalidAddressException() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -207,7 +205,6 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) PreviousState = _initialState, Signer = signer, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -242,7 +239,6 @@ public void ExecuteThrowNotEnoughClearedStageLevelException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -274,7 +270,6 @@ public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -320,7 +315,6 @@ public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException( PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -361,7 +355,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -383,7 +376,6 @@ public void SerializeWithDotnetAPI() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var formatter = new BinaryFormatter(); diff --git a/.Lib9c.Tests/Action/RankingBattle3Test.cs b/.Lib9c.Tests/Action/RankingBattle3Test.cs index c408f0ba18..22a1762d14 100644 --- a/.Lib9c.Tests/Action/RankingBattle3Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle3Test.cs @@ -128,7 +128,6 @@ public void Execute() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarState(_avatar1Address); @@ -162,7 +161,6 @@ public void ExecuteThrowInvalidAddressException() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -207,7 +205,6 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) PreviousState = _initialState, Signer = signer, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -242,7 +239,6 @@ public void ExecuteThrowNotEnoughClearedStageLevelException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -274,7 +270,6 @@ public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -320,7 +315,6 @@ public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException( PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -361,7 +355,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -383,7 +376,6 @@ public void SerializeWithDotnetAPI() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var formatter = new BinaryFormatter(); @@ -448,7 +440,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, })); } } diff --git a/.Lib9c.Tests/Action/RankingBattle4Test.cs b/.Lib9c.Tests/Action/RankingBattle4Test.cs index 3a1946b652..0dc6e03d9e 100644 --- a/.Lib9c.Tests/Action/RankingBattle4Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle4Test.cs @@ -165,7 +165,6 @@ public void Execute(bool isNew) PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarState(_avatar1Address); @@ -198,7 +197,6 @@ public void ExecuteThrowInvalidAddressException() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -243,7 +241,6 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) PreviousState = _initialState, Signer = signer, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -278,7 +275,6 @@ public void ExecuteThrowNotEnoughClearedStageLevelException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -310,7 +306,6 @@ public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -344,7 +339,6 @@ public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -385,7 +379,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -407,7 +400,6 @@ public void SerializeWithDotnetAPI() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var formatter = new BinaryFormatter(); @@ -472,7 +464,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, })); } } diff --git a/.Lib9c.Tests/Action/RankingBattle5Test.cs b/.Lib9c.Tests/Action/RankingBattle5Test.cs index 31eb8a4b63..dd5c069bfd 100644 --- a/.Lib9c.Tests/Action/RankingBattle5Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle5Test.cs @@ -195,7 +195,6 @@ public void Execute(bool isNew, bool avatarBackward, bool enemyBackward) PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarStateV2(_avatar1Address); @@ -228,7 +227,6 @@ public void ExecuteThrowInvalidAddressException() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -273,7 +271,6 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) PreviousState = _initialState, Signer = signer, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -308,7 +305,6 @@ public void ExecuteThrowNotEnoughClearedStageLevelException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -340,7 +336,6 @@ public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -374,7 +369,6 @@ public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -415,7 +409,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -437,7 +430,6 @@ public void SerializeWithDotnetAPI() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var formatter = new BinaryFormatter(); @@ -502,7 +494,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, })); } } diff --git a/.Lib9c.Tests/Action/RankingBattle6Test.cs b/.Lib9c.Tests/Action/RankingBattle6Test.cs index 870870629d..201e7d5817 100644 --- a/.Lib9c.Tests/Action/RankingBattle6Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle6Test.cs @@ -195,7 +195,6 @@ public void Execute(bool isNew, bool avatarBackward, bool enemyBackward) PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarStateV2(_avatar1Address); @@ -228,7 +227,6 @@ public void ExecuteThrowInvalidAddressException() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -273,7 +271,6 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) PreviousState = _initialState, Signer = signer, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -308,7 +305,6 @@ public void ExecuteThrowNotEnoughClearedStageLevelException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -340,7 +336,6 @@ public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -374,7 +369,6 @@ public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -415,7 +409,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -437,7 +430,6 @@ public void SerializeWithDotnetAPI() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var formatter = new BinaryFormatter(); @@ -502,7 +494,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, })); } } diff --git a/.Lib9c.Tests/Action/RankingBattle7Test.cs b/.Lib9c.Tests/Action/RankingBattle7Test.cs index 6a28b39206..c546d71d8b 100644 --- a/.Lib9c.Tests/Action/RankingBattle7Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle7Test.cs @@ -195,7 +195,6 @@ public void Execute(bool isNew, bool avatarBackward, bool enemyBackward) PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarStateV2(_avatar1Address); @@ -228,7 +227,6 @@ public void ExecuteThrowInvalidAddressException() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -273,7 +271,6 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) PreviousState = _initialState, Signer = signer, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -308,7 +305,6 @@ public void ExecuteThrowNotEnoughClearedStageLevelException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -340,7 +336,6 @@ public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -374,7 +369,6 @@ public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -415,7 +409,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -437,7 +430,6 @@ public void SerializeWithDotnetAPI() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var formatter = new BinaryFormatter(); @@ -502,7 +494,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, })); } } diff --git a/.Lib9c.Tests/Action/RankingBattle8Test.cs b/.Lib9c.Tests/Action/RankingBattle8Test.cs index f8c710ad08..bd13678a09 100644 --- a/.Lib9c.Tests/Action/RankingBattle8Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle8Test.cs @@ -210,7 +210,6 @@ public void Execute(bool isNew, bool avatarBackward, bool enemyBackward) PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarStateV2(_avatar1Address); @@ -265,7 +264,6 @@ public void ExecuteThrowInvalidAddressException() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -310,7 +308,6 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) PreviousState = _initialState, Signer = signer, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -345,7 +342,6 @@ public void ExecuteThrowNotEnoughClearedStageLevelException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -377,7 +373,6 @@ public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -411,7 +406,6 @@ public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -452,7 +446,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -510,7 +503,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, })); } } diff --git a/.Lib9c.Tests/Action/RankingBattle9Test.cs b/.Lib9c.Tests/Action/RankingBattle9Test.cs index 181bf157ce..93a53b6678 100644 --- a/.Lib9c.Tests/Action/RankingBattle9Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle9Test.cs @@ -210,7 +210,6 @@ public void Execute(bool isNew, bool avatarBackward, bool enemyBackward) PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarStateV2(_avatar1Address); @@ -265,7 +264,6 @@ public void ExecuteThrowInvalidAddressException() PreviousState = _initialState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -310,7 +308,6 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) PreviousState = _initialState, Signer = signer, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -345,7 +342,6 @@ public void ExecuteThrowNotEnoughClearedStageLevelException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -377,7 +373,6 @@ public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -411,7 +406,6 @@ public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -452,7 +446,6 @@ public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } @@ -510,7 +503,6 @@ public void MultipleEquipmentTest(ItemSubType type, int maxCount) PreviousState = state, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, })); } } diff --git a/.Lib9c.Tests/Action/RankingBattleTest.cs b/.Lib9c.Tests/Action/RankingBattleTest.cs index 9ad2abc37a..febeefe51f 100644 --- a/.Lib9c.Tests/Action/RankingBattleTest.cs +++ b/.Lib9c.Tests/Action/RankingBattleTest.cs @@ -170,7 +170,6 @@ public void ExecuteActionObsoletedException() PreviousState = previousState, Signer = _agent1Address, RandomSeed = 0, - Rehearsal = false, }); }); } diff --git a/.Lib9c.Tests/Action/ReRegisterProduct0Test.cs b/.Lib9c.Tests/Action/ReRegisterProduct0Test.cs index 65d5c1566d..6b47b8b1c0 100644 --- a/.Lib9c.Tests/Action/ReRegisterProduct0Test.cs +++ b/.Lib9c.Tests/Action/ReRegisterProduct0Test.cs @@ -236,7 +236,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); @@ -283,7 +282,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/ReRegisterProductTest.cs b/.Lib9c.Tests/Action/ReRegisterProductTest.cs index f240de2b79..b6c24e1f35 100644 --- a/.Lib9c.Tests/Action/ReRegisterProductTest.cs +++ b/.Lib9c.Tests/Action/ReRegisterProductTest.cs @@ -236,7 +236,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); @@ -283,7 +282,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/RedeemCode0Test.cs b/.Lib9c.Tests/Action/RedeemCode0Test.cs index 1e3cb7bb37..55bc786645 100644 --- a/.Lib9c.Tests/Action/RedeemCode0Test.cs +++ b/.Lib9c.Tests/Action/RedeemCode0Test.cs @@ -93,7 +93,6 @@ public void Execute() BlockIndex = 1, Miner = default, PreviousState = initialState, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/RedeemCodeTest.cs b/.Lib9c.Tests/Action/RedeemCodeTest.cs index 63a732fa1e..d84c25057f 100644 --- a/.Lib9c.Tests/Action/RedeemCodeTest.cs +++ b/.Lib9c.Tests/Action/RedeemCodeTest.cs @@ -108,7 +108,6 @@ public void Execute(bool backward) BlockIndex = 1, Miner = default, PreviousState = initialState, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/RuneEnhancement0Test.cs b/.Lib9c.Tests/Action/RuneEnhancement0Test.cs index 70db188fcc..47055e7b09 100644 --- a/.Lib9c.Tests/Action/RuneEnhancement0Test.cs +++ b/.Lib9c.Tests/Action/RuneEnhancement0Test.cs @@ -120,7 +120,6 @@ public void Execute(int seed) BlockIndex = blockIndex, PreviousState = state, RandomSeed = rand.Seed, - Rehearsal = false, Signer = agentAddress, }; @@ -384,7 +383,6 @@ public void Execute_NotEnoughFungibleAssetValueException(bool ncg, bool crystal, BlockIndex = blockIndex, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = agentAddress, }; diff --git a/.Lib9c.Tests/Action/RuneEnhancementTest.cs b/.Lib9c.Tests/Action/RuneEnhancementTest.cs index 48bdd085f4..5da3892af3 100644 --- a/.Lib9c.Tests/Action/RuneEnhancementTest.cs +++ b/.Lib9c.Tests/Action/RuneEnhancementTest.cs @@ -130,7 +130,6 @@ public void Execute(int seed) BlockIndex = blockIndex, PreviousState = state, RandomSeed = rand.Seed, - Rehearsal = false, Signer = agentAddress, }; @@ -421,7 +420,6 @@ public void Execute_NotEnoughFungibleAssetValueException(bool ncg, bool crystal, BlockIndex = blockIndex, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = agentAddress, }; diff --git a/.Lib9c.Tests/Action/Scenario/ArenaScenarioTest.cs b/.Lib9c.Tests/Action/Scenario/ArenaScenarioTest.cs index 4ba7592809..3124435899 100644 --- a/.Lib9c.Tests/Action/Scenario/ArenaScenarioTest.cs +++ b/.Lib9c.Tests/Action/Scenario/ArenaScenarioTest.cs @@ -116,7 +116,6 @@ public IAccount JoinArena( PreviousState = _state, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = roundData.StartBlockIndex, }); return _state; @@ -147,7 +146,6 @@ public IAccount BattleArena( PreviousState = _state, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return _state; diff --git a/.Lib9c.Tests/Action/Scenario/SellAndCancellationAndSellTest.cs b/.Lib9c.Tests/Action/Scenario/SellAndCancellationAndSellTest.cs index 55dfd1d9cd..bd451a4d3a 100644 --- a/.Lib9c.Tests/Action/Scenario/SellAndCancellationAndSellTest.cs +++ b/.Lib9c.Tests/Action/Scenario/SellAndCancellationAndSellTest.cs @@ -114,7 +114,6 @@ public void Execute_With_TradableMaterial() PreviousState = nextStates, BlockIndex = sellBlockIndex, RandomSeed = random.Seed, - Rehearsal = false, }); // TODO: Check state.. inventory, orders.. } @@ -142,7 +141,6 @@ public void Execute_With_TradableMaterial() PreviousState = nextStates, BlockIndex = sellBlockIndex + 1L, RandomSeed = random.Seed, - Rehearsal = false, }); // TODO: Check state.. inventory, orders.. } @@ -163,7 +161,6 @@ public void Execute_With_TradableMaterial() PreviousState = nextStates, BlockIndex = sellBlockIndex + 2L, RandomSeed = random.Seed, - Rehearsal = false, }); // Check inventory does not have ap stones. diff --git a/.Lib9c.Tests/Action/Scenario/StakeAndClaimScenarioTest.cs b/.Lib9c.Tests/Action/Scenario/StakeAndClaimScenarioTest.cs index 593b1eb321..58e7d5d213 100644 --- a/.Lib9c.Tests/Action/Scenario/StakeAndClaimScenarioTest.cs +++ b/.Lib9c.Tests/Action/Scenario/StakeAndClaimScenarioTest.cs @@ -165,7 +165,6 @@ private static IAccount MintAsset( PreviousState = state, Signer = Addresses.Admin, BlockIndex = blockIndex, - Rehearsal = false, }, recipient, amount); @@ -183,7 +182,6 @@ private static IAccount Stake2( PreviousState = state, Signer = agentAddr, BlockIndex = blockIndex, - Rehearsal = false, }); } @@ -199,7 +197,6 @@ private static IAccount Stake3( PreviousState = state, Signer = agentAddr, BlockIndex = blockIndex, - Rehearsal = false, }); } @@ -215,7 +212,6 @@ private static IAccount ClaimStakeReward9( PreviousState = state, Signer = agentAddr, BlockIndex = blockIndex, - Rehearsal = false, }); } diff --git a/.Lib9c.Tests/Action/Scenario/WorldUnlockScenarioTest.cs b/.Lib9c.Tests/Action/Scenario/WorldUnlockScenarioTest.cs index 2b6d632135..e6b09e6584 100644 --- a/.Lib9c.Tests/Action/Scenario/WorldUnlockScenarioTest.cs +++ b/.Lib9c.Tests/Action/Scenario/WorldUnlockScenarioTest.cs @@ -106,7 +106,6 @@ public void UnlockWorldByHackAndSlashAfterPatchTableWithAddRow( PreviousState = nextState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); Assert.True(hackAndSlash.Result.IsClear); @@ -138,7 +137,6 @@ public void UnlockWorldByHackAndSlashAfterPatchTableWithAddRow( PreviousState = nextState, Signer = AdminState.Address, RandomSeed = 0, - Rehearsal = false, }); var nextTableCsv = nextState.GetSheetCsv(); @@ -149,7 +147,6 @@ public void UnlockWorldByHackAndSlashAfterPatchTableWithAddRow( PreviousState = nextState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); Assert.True(hackAndSlash.Result.IsClear); @@ -228,7 +225,6 @@ public void UnlockWorldByMimisbrunnrBattleAfterPatchTableWithChangeRow( PreviousState = nextState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); }); @@ -248,7 +244,6 @@ public void UnlockWorldByMimisbrunnrBattleAfterPatchTableWithChangeRow( PreviousState = nextState, Signer = AdminState.Address, RandomSeed = 0, - Rehearsal = false, }); var nextTableCsv = nextState.GetSheetCsv(); @@ -259,7 +254,6 @@ public void UnlockWorldByMimisbrunnrBattleAfterPatchTableWithChangeRow( PreviousState = nextState, Signer = _agentAddress, RandomSeed = 0, - Rehearsal = false, }); avatarState = nextState.GetAvatarState(_avatarAddress); diff --git a/.Lib9c.Tests/Action/SecureMiningRewardTest.cs b/.Lib9c.Tests/Action/SecureMiningRewardTest.cs index 7e4c49c1da..7b62d3eb87 100644 --- a/.Lib9c.Tests/Action/SecureMiningRewardTest.cs +++ b/.Lib9c.Tests/Action/SecureMiningRewardTest.cs @@ -51,7 +51,6 @@ public void Execute() { PreviousState = _previousState, Signer = _admin, - Rehearsal = false, BlockIndex = 1, } ); @@ -81,7 +80,6 @@ public void Execute_InvalidSigner() { PreviousState = _previousState, Signer = invalidSigner, - Rehearsal = false, BlockIndex = 1, } )); diff --git a/.Lib9c.Tests/Action/Sell0Test.cs b/.Lib9c.Tests/Action/Sell0Test.cs index 50dff16b74..b7f0d18c84 100644 --- a/.Lib9c.Tests/Action/Sell0Test.cs +++ b/.Lib9c.Tests/Action/Sell0Test.cs @@ -104,7 +104,6 @@ public void Execute() { BlockIndex = 0, PreviousState = _initialState, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/Sell10Test.cs b/.Lib9c.Tests/Action/Sell10Test.cs index 16819ff046..5def9fb2da 100644 --- a/.Lib9c.Tests/Action/Sell10Test.cs +++ b/.Lib9c.Tests/Action/Sell10Test.cs @@ -164,7 +164,6 @@ bool backward { BlockIndex = blockIndex, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/Sell11Test.cs b/.Lib9c.Tests/Action/Sell11Test.cs index 3fa8503515..d1d21d35b3 100644 --- a/.Lib9c.Tests/Action/Sell11Test.cs +++ b/.Lib9c.Tests/Action/Sell11Test.cs @@ -164,7 +164,6 @@ bool backward { BlockIndex = blockIndex, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/Sell2Test.cs b/.Lib9c.Tests/Action/Sell2Test.cs index b79719436b..7bc01797c6 100644 --- a/.Lib9c.Tests/Action/Sell2Test.cs +++ b/.Lib9c.Tests/Action/Sell2Test.cs @@ -121,7 +121,6 @@ public void Execute() { BlockIndex = 0, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, }; ctx.SetRandom(random); diff --git a/.Lib9c.Tests/Action/Sell3Test.cs b/.Lib9c.Tests/Action/Sell3Test.cs index eef9d02c12..f0fbadbf8c 100644 --- a/.Lib9c.Tests/Action/Sell3Test.cs +++ b/.Lib9c.Tests/Action/Sell3Test.cs @@ -132,7 +132,6 @@ public void Execute() { BlockIndex = 0, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, }; ctx.SetRandom(random); diff --git a/.Lib9c.Tests/Action/Sell4Test.cs b/.Lib9c.Tests/Action/Sell4Test.cs index 1ca54164df..5ce3774e5d 100644 --- a/.Lib9c.Tests/Action/Sell4Test.cs +++ b/.Lib9c.Tests/Action/Sell4Test.cs @@ -159,7 +159,6 @@ public void Execute(ItemType itemType, bool shopItemExist, int blockIndex) { BlockIndex = 1, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/Sell5Test.cs b/.Lib9c.Tests/Action/Sell5Test.cs index b574dd77e9..233c895b5a 100644 --- a/.Lib9c.Tests/Action/Sell5Test.cs +++ b/.Lib9c.Tests/Action/Sell5Test.cs @@ -179,7 +179,6 @@ int expectedProductsCount { BlockIndex = 1, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/Sell6Test.cs b/.Lib9c.Tests/Action/Sell6Test.cs index d251e64b7b..6d44b68007 100644 --- a/.Lib9c.Tests/Action/Sell6Test.cs +++ b/.Lib9c.Tests/Action/Sell6Test.cs @@ -180,7 +180,6 @@ int expectedProductsCount { BlockIndex = 1, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); @@ -511,7 +510,6 @@ public void Execute_20210604( { BlockIndex = blockIndex, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/Sell7Test.cs b/.Lib9c.Tests/Action/Sell7Test.cs index 8db0beadec..ec0116f05b 100644 --- a/.Lib9c.Tests/Action/Sell7Test.cs +++ b/.Lib9c.Tests/Action/Sell7Test.cs @@ -194,7 +194,6 @@ bool backward { BlockIndex = blockIndex, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/Sell8Test.cs b/.Lib9c.Tests/Action/Sell8Test.cs index 04299495e2..729daedac7 100644 --- a/.Lib9c.Tests/Action/Sell8Test.cs +++ b/.Lib9c.Tests/Action/Sell8Test.cs @@ -194,7 +194,6 @@ bool backward { BlockIndex = blockIndex, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/Sell9Test.cs b/.Lib9c.Tests/Action/Sell9Test.cs index 295387c8d3..5114be1926 100644 --- a/.Lib9c.Tests/Action/Sell9Test.cs +++ b/.Lib9c.Tests/Action/Sell9Test.cs @@ -164,7 +164,6 @@ bool backward { BlockIndex = blockIndex, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/SellCancellation0Test.cs b/.Lib9c.Tests/Action/SellCancellation0Test.cs index 0671a7cbfc..84043434ba 100644 --- a/.Lib9c.Tests/Action/SellCancellation0Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation0Test.cs @@ -105,7 +105,6 @@ public void Execute() BlockIndex = 0, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/SellCancellation2Test.cs b/.Lib9c.Tests/Action/SellCancellation2Test.cs index ceeb631054..f1fdad4622 100644 --- a/.Lib9c.Tests/Action/SellCancellation2Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation2Test.cs @@ -122,7 +122,6 @@ public void Execute() BlockIndex = 0, PreviousState = _initialState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/SellCancellation3Test.cs b/.Lib9c.Tests/Action/SellCancellation3Test.cs index 1a22e15913..973836b275 100644 --- a/.Lib9c.Tests/Action/SellCancellation3Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation3Test.cs @@ -132,7 +132,6 @@ public void Execute() BlockIndex = 0, PreviousState = previousStates, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); productsCount--; @@ -162,7 +161,6 @@ public void Execute() BlockIndex = 0, PreviousState = previousStates, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); productsCount--; diff --git a/.Lib9c.Tests/Action/SellCancellation4Test.cs b/.Lib9c.Tests/Action/SellCancellation4Test.cs index ed27848efa..15c09841de 100644 --- a/.Lib9c.Tests/Action/SellCancellation4Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation4Test.cs @@ -132,7 +132,6 @@ public void Execute() BlockIndex = 0, PreviousState = previousStates, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); productsCount--; @@ -162,7 +161,6 @@ public void Execute() BlockIndex = 0, PreviousState = previousStates, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); productsCount--; diff --git a/.Lib9c.Tests/Action/SellCancellation5Test.cs b/.Lib9c.Tests/Action/SellCancellation5Test.cs index 9630218640..ba3ba8a171 100644 --- a/.Lib9c.Tests/Action/SellCancellation5Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation5Test.cs @@ -159,7 +159,6 @@ public void Execute(ItemType itemType, string guid, bool contain) BlockIndex = 1, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/SellCancellation6Test.cs b/.Lib9c.Tests/Action/SellCancellation6Test.cs index d92b37378f..7b7a35511e 100644 --- a/.Lib9c.Tests/Action/SellCancellation6Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation6Test.cs @@ -194,7 +194,6 @@ public void Execute(ItemType itemType, string guid, bool contain, int itemCount, BlockIndex = 1, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/SellCancellation7Test.cs b/.Lib9c.Tests/Action/SellCancellation7Test.cs index e7ff546836..625c885a7b 100644 --- a/.Lib9c.Tests/Action/SellCancellation7Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation7Test.cs @@ -228,7 +228,6 @@ bool backward BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/SellCancellation8Test.cs b/.Lib9c.Tests/Action/SellCancellation8Test.cs index f44991a04d..560e578e96 100644 --- a/.Lib9c.Tests/Action/SellCancellation8Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation8Test.cs @@ -230,7 +230,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); @@ -640,7 +639,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/SellCancellationTest.cs b/.Lib9c.Tests/Action/SellCancellationTest.cs index 97c76c6170..dd76f90c64 100644 --- a/.Lib9c.Tests/Action/SellCancellationTest.cs +++ b/.Lib9c.Tests/Action/SellCancellationTest.cs @@ -234,7 +234,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); @@ -262,7 +261,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); @@ -675,7 +673,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/SellTest.cs b/.Lib9c.Tests/Action/SellTest.cs index 22255b68fd..f4cadd30de 100644 --- a/.Lib9c.Tests/Action/SellTest.cs +++ b/.Lib9c.Tests/Action/SellTest.cs @@ -163,7 +163,6 @@ bool backward { BlockIndex = blockIndex, PreviousState = previousStates, - Rehearsal = false, Signer = _agentAddress, RandomSeed = 0, }); diff --git a/.Lib9c.Tests/Action/StakeTest.cs b/.Lib9c.Tests/Action/StakeTest.cs index 61652ce59a..7306545b93 100644 --- a/.Lib9c.Tests/Action/StakeTest.cs +++ b/.Lib9c.Tests/Action/StakeTest.cs @@ -491,7 +491,6 @@ private IAccount Execute( BlockIndex = blockIndex, PreviousState = previousState, RandomSeed = random.Seed, - Rehearsal = false, Signer = signer, }); diff --git a/.Lib9c.Tests/Action/TransferAsset2Test.cs b/.Lib9c.Tests/Action/TransferAsset2Test.cs index e3257f6ce7..e0c1318ed8 100644 --- a/.Lib9c.Tests/Action/TransferAsset2Test.cs +++ b/.Lib9c.Tests/Action/TransferAsset2Test.cs @@ -61,7 +61,6 @@ public void Execute() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); @@ -89,7 +88,6 @@ public void ExecuteWithInvalidSigner() PreviousState = prevState, // 송금자가 직접 사인하지 않으면 실패해야 합니다. Signer = _recipient, - Rehearsal = false, BlockIndex = 1, }); }); @@ -117,7 +115,6 @@ public void ExecuteWithInvalidRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); @@ -127,7 +124,6 @@ public void ExecuteWithInvalidRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 380001, }); }); @@ -155,7 +151,6 @@ public void ExecuteWithInsufficientBalance() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -183,7 +178,6 @@ public void ExecuteWithMinterAsSender() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -215,7 +209,6 @@ public void ExecuteWithMinterAsRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -246,7 +239,6 @@ public void ExecuteWithUnactivatedRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -348,7 +340,6 @@ public void CheckObsolete() { PreviousState = new Account(MockState.Empty), Signer = _sender, - Rehearsal = false, BlockIndex = TransferAsset3.CrystalTransferringRestrictionStartIndex, }); }); diff --git a/.Lib9c.Tests/Action/TransferAsset3Test.cs b/.Lib9c.Tests/Action/TransferAsset3Test.cs index 00e49e17d9..94e43475cb 100644 --- a/.Lib9c.Tests/Action/TransferAsset3Test.cs +++ b/.Lib9c.Tests/Action/TransferAsset3Test.cs @@ -87,7 +87,6 @@ public void Execute(bool activate, bool legacyActivate, bool stateExist) { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); @@ -115,7 +114,6 @@ public void ExecuteWithInvalidSigner() PreviousState = prevState, // 송금자가 직접 사인하지 않으면 실패해야 합니다. Signer = _recipient, - Rehearsal = false, BlockIndex = 1, }); }); @@ -147,7 +145,6 @@ public void ExecuteWithInvalidRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -176,7 +173,6 @@ public void ExecuteWithInsufficientBalance() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -205,7 +201,6 @@ public void ExecuteWithMinterAsSender() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -238,7 +233,6 @@ public void ExecuteWithMinterAsRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -269,7 +263,6 @@ public void ExecuteWithUnactivatedRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -341,7 +334,6 @@ public void Execute_Throw_InvalidTransferCurrencyException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = TransferAsset3.CrystalTransferringRestrictionStartIndex, })); } diff --git a/.Lib9c.Tests/Action/TransferAsset4Test.cs b/.Lib9c.Tests/Action/TransferAsset4Test.cs index 089638deef..608685e4d1 100644 --- a/.Lib9c.Tests/Action/TransferAsset4Test.cs +++ b/.Lib9c.Tests/Action/TransferAsset4Test.cs @@ -63,7 +63,6 @@ public void Execute() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); @@ -92,7 +91,6 @@ public void Execute_Throw_InvalidTransferSignerException() PreviousState = prevState, // 송금자가 직접 사인하지 않으면 실패해야 합니다. Signer = _recipient, - Rehearsal = false, BlockIndex = 1, }); }); @@ -122,7 +120,6 @@ public void Execute_Throw_InvalidTransferRecipientException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -151,7 +148,6 @@ public void Execute_Throw_InsufficientBalanceException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -187,7 +183,6 @@ public void Execute_Throw_InvalidTransferMinterException(bool minterAsSender) { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -262,7 +257,6 @@ public void Execute_Throw_InvalidTransferCurrencyException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = TransferAsset3.CrystalTransferringRestrictionStartIndex, })); } diff --git a/.Lib9c.Tests/Action/TransferAssetTest.cs b/.Lib9c.Tests/Action/TransferAssetTest.cs index 9b8ed9a1f1..84b5f6548e 100644 --- a/.Lib9c.Tests/Action/TransferAssetTest.cs +++ b/.Lib9c.Tests/Action/TransferAssetTest.cs @@ -66,7 +66,6 @@ public void Execute() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); @@ -95,7 +94,6 @@ public void Execute_Throw_InvalidTransferSignerException() PreviousState = prevState, // 송금자가 직접 사인하지 않으면 실패해야 합니다. Signer = _recipient, - Rehearsal = false, BlockIndex = 1, }); }); @@ -125,7 +123,6 @@ public void Execute_Throw_InvalidTransferRecipientException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -154,7 +151,6 @@ public void Execute_Throw_InsufficientBalanceException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -190,7 +186,6 @@ public void Execute_Throw_InvalidTransferMinterException(bool minterAsSender) { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -265,7 +260,6 @@ public void Execute_Throw_InvalidTransferCurrencyException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = TransferAsset3.CrystalTransferringRestrictionStartIndex, })); } @@ -306,7 +300,6 @@ public void Execute_Throw_ArgumentException() StakeState.DeriveAddress(_recipient), new StakeState(StakeState.DeriveAddress(_recipient), 0).SerializeV2()), Signer = _sender, - Rehearsal = false, BlockIndex = 1, })); Assert.Throws("recipient", () => action.Execute(new ActionContext() @@ -322,7 +315,6 @@ public void Execute_Throw_ArgumentException() 201600), 0).Serialize()), Signer = _sender, - Rehearsal = false, BlockIndex = 1, })); Assert.Throws("recipient", () => action.Execute(new ActionContext() @@ -336,7 +328,6 @@ public void Execute_Throw_ArgumentException() 0) .Serialize()), Signer = _sender, - Rehearsal = false, BlockIndex = 1, })); var monsterCollectionRewardSheet = new MonsterCollectionRewardSheet(); @@ -354,7 +345,6 @@ public void Execute_Throw_ArgumentException() monsterCollectionRewardSheet) .Serialize()), Signer = _sender, - Rehearsal = false, BlockIndex = 1, })); } diff --git a/.Lib9c.Tests/Action/TransferAssetTest0.cs b/.Lib9c.Tests/Action/TransferAssetTest0.cs index 791fd24ff2..46cfb33ed6 100644 --- a/.Lib9c.Tests/Action/TransferAssetTest0.cs +++ b/.Lib9c.Tests/Action/TransferAssetTest0.cs @@ -59,7 +59,6 @@ public void Execute() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); @@ -87,7 +86,6 @@ public void ExecuteWithInvalidSigner() PreviousState = prevState, // 송금자가 직접 사인하지 않으면 실패해야 합니다. Signer = _recipient, - Rehearsal = false, BlockIndex = 1, }); }); @@ -115,7 +113,6 @@ public void ExecuteWithInvalidRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); @@ -125,7 +122,6 @@ public void ExecuteWithInvalidRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 380001, }); }); @@ -153,7 +149,6 @@ public void ExecuteWithInsufficientBalance() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -181,7 +176,6 @@ public void ExecuteWithMinterAsSender() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -213,7 +207,6 @@ public void ExecuteWithMinterAsRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); diff --git a/.Lib9c.Tests/Action/TransferAssets0Test.cs b/.Lib9c.Tests/Action/TransferAssets0Test.cs index 66d9189372..674d5402f9 100644 --- a/.Lib9c.Tests/Action/TransferAssets0Test.cs +++ b/.Lib9c.Tests/Action/TransferAssets0Test.cs @@ -111,7 +111,6 @@ public void Execute(bool activate, bool legacyActivate, bool stateExist) { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); @@ -142,7 +141,6 @@ public void ExecuteWithInvalidSigner() PreviousState = prevState, // 송금자가 직접 사인하지 않으면 실패해야 합니다. Signer = _recipient, - Rehearsal = false, BlockIndex = 1, }); }); @@ -173,7 +171,6 @@ public void ExecuteWithInvalidRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -204,7 +201,6 @@ public void ExecuteWithInsufficientBalance() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -235,7 +231,6 @@ public void ExecuteWithMinterAsSender() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -270,7 +265,6 @@ public void ExecuteWithMinterAsRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -303,7 +297,6 @@ public void ExecuteWithUnactivatedRecipient() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -427,7 +420,6 @@ public void Execute_Throw_ArgumentOutOfRangeException() { PreviousState = new Account(MockState.Empty), Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -453,7 +445,6 @@ public void Execute_Throw_InvalidTransferCurrencyException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = TransferAsset3.CrystalTransferringRestrictionStartIndex, })); } diff --git a/.Lib9c.Tests/Action/TransferAssets2Test.cs b/.Lib9c.Tests/Action/TransferAssets2Test.cs index 0573f40501..68d41a8760 100644 --- a/.Lib9c.Tests/Action/TransferAssets2Test.cs +++ b/.Lib9c.Tests/Action/TransferAssets2Test.cs @@ -82,7 +82,6 @@ public void Execute() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); @@ -115,7 +114,6 @@ public void Execute_Throw_InvalidTransferSignerException() PreviousState = prevState, // 송금자가 직접 사인하지 않으면 실패해야 합니다. Signer = _recipient, - Rehearsal = false, BlockIndex = 1, }); }); @@ -146,7 +144,6 @@ public void Execute_Throw_InvalidTransferRecipientException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -177,7 +174,6 @@ public void Execute_Throw_InsufficientBalanceException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -211,7 +207,6 @@ public void Execute_Throw_InvalidTransferMinterException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -337,7 +332,6 @@ public void Execute_Throw_ArgumentOutOfRangeException() { PreviousState = new Account(MockState.Empty), Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -363,7 +357,6 @@ public void Execute_Throw_InvalidTransferCurrencyException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = TransferAsset3.CrystalTransferringRestrictionStartIndex, })); } diff --git a/.Lib9c.Tests/Action/TransferAssetsTest.cs b/.Lib9c.Tests/Action/TransferAssetsTest.cs index 89757df3de..6cc584fb57 100644 --- a/.Lib9c.Tests/Action/TransferAssetsTest.cs +++ b/.Lib9c.Tests/Action/TransferAssetsTest.cs @@ -84,7 +84,6 @@ public void Execute() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); @@ -117,7 +116,6 @@ public void Execute_Throw_InvalidTransferSignerException() PreviousState = prevState, // 송금자가 직접 사인하지 않으면 실패해야 합니다. Signer = _recipient, - Rehearsal = false, BlockIndex = 1, }); }); @@ -148,7 +146,6 @@ public void Execute_Throw_InvalidTransferRecipientException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -179,7 +176,6 @@ public void Execute_Throw_InsufficientBalanceException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -213,7 +209,6 @@ public void Execute_Throw_InvalidTransferMinterException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -339,7 +334,6 @@ public void Execute_Throw_ArgumentOutOfRangeException() { PreviousState = new Account(MockState.Empty), Signer = _sender, - Rehearsal = false, BlockIndex = 1, }); }); @@ -365,7 +359,6 @@ public void Execute_Throw_InvalidTransferCurrencyException() { PreviousState = prevState, Signer = _sender, - Rehearsal = false, BlockIndex = TransferAsset3.CrystalTransferringRestrictionStartIndex, })); } @@ -392,7 +385,6 @@ public void Execute_Throw_ArgumentException() StakeState.DeriveAddress(_recipient), new StakeState(StakeState.DeriveAddress(_recipient), 0).SerializeV2()), Signer = _sender, - Rehearsal = false, BlockIndex = 1, })); Assert.Throws("recipient", () => action.Execute(new ActionContext() @@ -408,7 +400,6 @@ public void Execute_Throw_ArgumentException() 201600), 0).Serialize()), Signer = _sender, - Rehearsal = false, BlockIndex = 1, })); Assert.Throws("recipient", () => action.Execute(new ActionContext() @@ -422,7 +413,6 @@ public void Execute_Throw_ArgumentException() 0) .Serialize()), Signer = _sender, - Rehearsal = false, BlockIndex = 1, })); var monsterCollectionRewardSheet = new MonsterCollectionRewardSheet(); @@ -440,7 +430,6 @@ public void Execute_Throw_ArgumentException() monsterCollectionRewardSheet) .Serialize()), Signer = _sender, - Rehearsal = false, BlockIndex = 1, })); } diff --git a/.Lib9c.Tests/Action/UnlockRuneSlotTest.cs b/.Lib9c.Tests/Action/UnlockRuneSlotTest.cs index 75a7067495..2a0b436548 100644 --- a/.Lib9c.Tests/Action/UnlockRuneSlotTest.cs +++ b/.Lib9c.Tests/Action/UnlockRuneSlotTest.cs @@ -79,7 +79,6 @@ public void Execute(int slotIndex) BlockIndex = blockIndex, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = agentAddress, }; @@ -130,7 +129,6 @@ public void Execute_InsufficientBalanceException() BlockIndex = blockIndex, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = agentAddress, }; @@ -159,7 +157,6 @@ public void Execute_SlotNotFoundException() BlockIndex = blockIndex, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = agentAddress, }; @@ -188,7 +185,6 @@ public void Execute_MismatchRuneSlotTypeException() BlockIndex = blockIndex, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = agentAddress, }; @@ -221,7 +217,6 @@ public void Execute_SlotIsAlreadyUnlockedException() BlockIndex = blockIndex, PreviousState = state, RandomSeed = 0, - Rehearsal = false, Signer = agentAddress, }; diff --git a/.Lib9c.Tests/Action/UpdateSell0Test.cs b/.Lib9c.Tests/Action/UpdateSell0Test.cs index e3f2e64780..318f2e60b3 100644 --- a/.Lib9c.Tests/Action/UpdateSell0Test.cs +++ b/.Lib9c.Tests/Action/UpdateSell0Test.cs @@ -245,7 +245,6 @@ bool legacy BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/UpdateSell2Test.cs b/.Lib9c.Tests/Action/UpdateSell2Test.cs index d6161ae5e9..8fba2d6733 100644 --- a/.Lib9c.Tests/Action/UpdateSell2Test.cs +++ b/.Lib9c.Tests/Action/UpdateSell2Test.cs @@ -226,7 +226,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/UpdateSell3Test.cs b/.Lib9c.Tests/Action/UpdateSell3Test.cs index 0777a5f5e9..dfe27a77c9 100644 --- a/.Lib9c.Tests/Action/UpdateSell3Test.cs +++ b/.Lib9c.Tests/Action/UpdateSell3Test.cs @@ -232,7 +232,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/UpdateSell4Test.cs b/.Lib9c.Tests/Action/UpdateSell4Test.cs index 592c900be5..af62a0356a 100644 --- a/.Lib9c.Tests/Action/UpdateSell4Test.cs +++ b/.Lib9c.Tests/Action/UpdateSell4Test.cs @@ -232,7 +232,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/Action/UpdateSellTest.cs b/.Lib9c.Tests/Action/UpdateSellTest.cs index 7ba922a1c3..d93344e537 100644 --- a/.Lib9c.Tests/Action/UpdateSellTest.cs +++ b/.Lib9c.Tests/Action/UpdateSellTest.cs @@ -232,7 +232,6 @@ bool fromPreviousAction BlockIndex = 101, PreviousState = prevState, RandomSeed = 0, - Rehearsal = false, Signer = _agentAddress, }); diff --git a/.Lib9c.Tests/TestHelper/BlockChainHelper.cs b/.Lib9c.Tests/TestHelper/BlockChainHelper.cs index eddde7d10d..2eb854727b 100644 --- a/.Lib9c.Tests/TestHelper/BlockChainHelper.cs +++ b/.Lib9c.Tests/TestHelper/BlockChainHelper.cs @@ -158,7 +158,6 @@ public static MakeInitialStateResult MakeInitialState() BlockIndex = 0, PreviousState = initialState, RandomSeed = 0, - Rehearsal = false, }); return new MakeInitialStateResult( From 601705b36412910fad36dc6348e18e16d4d2c94e Mon Sep 17 00:00:00 2001 From: area363 Date: Thu, 23 Nov 2023 20:34:14 +0900 Subject: [PATCH 20/70] do not call acs when iterating chain --- Lib9c.Policy/NCStagePolicy.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Lib9c.Policy/NCStagePolicy.cs b/Lib9c.Policy/NCStagePolicy.cs index 0dbd00c1f5..c7d4a21790 100644 --- a/Lib9c.Policy/NCStagePolicy.cs +++ b/Lib9c.Policy/NCStagePolicy.cs @@ -15,6 +15,7 @@ public class NCStagePolicy : IStagePolicy private readonly VolatileStagePolicy _impl; private readonly ConcurrentDictionary> _txs; private readonly int _quotaPerSigner; + private readonly Dictionary _quotaPerSignerList; private IAccessControlService? _accessControlService; public NCStagePolicy(TimeSpan txLifeTime, int quotaPerSigner, IAccessControlService? accessControlService = null) @@ -31,6 +32,7 @@ public NCStagePolicy(TimeSpan txLifeTime, int quotaPerSigner, IAccessControlServ ? new VolatileStagePolicy() : new VolatileStagePolicy(txLifeTime); + _quotaPerSignerList = new Dictionary(); _accessControlService = accessControlService; } @@ -61,10 +63,10 @@ public IEnumerable Iterate(BlockChain blockChain, bool filtered = t s.Add(tx); int txQuotaPerSigner = _quotaPerSigner; - // update txQuotaPerSigner if ACS returns a value for the signer. - if (_accessControlService?.GetTxQuota(tx.Signer) is { } acsTxQuota) + // update txQuotaPerSigner if signer is in the list + if (_quotaPerSignerList.TryGetValue(tx.Signer, out int signerQuota)) { - txQuotaPerSigner = acsTxQuota; + txQuotaPerSigner = signerQuota; } @@ -86,10 +88,13 @@ public IEnumerable Iterate(BlockChain blockChain, bool filtered = t public bool Stage(BlockChain blockChain, Transaction transaction) { - if (_accessControlService?.GetTxQuota(transaction.Signer) is { } acsTxQuota - && acsTxQuota == 0) + if (_accessControlService?.GetTxQuota(transaction.Signer) is { } acsTxQuota) { - return false; + _quotaPerSignerList.TryAdd(transaction.Signer, acsTxQuota); + if (acsTxQuota == 0) + { + return false; + } } var deniedTxs = new[] From e41494cdffaa9958ad3b3a07881fb71f2bb2c1c0 Mon Sep 17 00:00:00 2001 From: area363 Date: Thu, 23 Nov 2023 22:18:23 +0900 Subject: [PATCH 21/70] dynamically update quota --- Lib9c.Policy/NCStagePolicy.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Lib9c.Policy/NCStagePolicy.cs b/Lib9c.Policy/NCStagePolicy.cs index c7d4a21790..d14b9eefee 100644 --- a/Lib9c.Policy/NCStagePolicy.cs +++ b/Lib9c.Policy/NCStagePolicy.cs @@ -90,7 +90,15 @@ public bool Stage(BlockChain blockChain, Transaction transaction) { if (_accessControlService?.GetTxQuota(transaction.Signer) is { } acsTxQuota) { - _quotaPerSignerList.TryAdd(transaction.Signer, acsTxQuota); + if (_quotaPerSignerList.ContainsKey(transaction.Signer)) + { + _quotaPerSignerList[transaction.Signer] = acsTxQuota; + } + else + { + _quotaPerSignerList.TryAdd(transaction.Signer, acsTxQuota); + } + if (acsTxQuota == 0) { return false; From 96c2baddaa19bd1467cd5006eccf9280710c9527 Mon Sep 17 00:00:00 2001 From: area363 Date: Thu, 23 Nov 2023 23:32:12 +0900 Subject: [PATCH 22/70] add suggested change --- Lib9c.Policy/NCStagePolicy.cs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Lib9c.Policy/NCStagePolicy.cs b/Lib9c.Policy/NCStagePolicy.cs index d14b9eefee..13b77bdf60 100644 --- a/Lib9c.Policy/NCStagePolicy.cs +++ b/Lib9c.Policy/NCStagePolicy.cs @@ -90,14 +90,7 @@ public bool Stage(BlockChain blockChain, Transaction transaction) { if (_accessControlService?.GetTxQuota(transaction.Signer) is { } acsTxQuota) { - if (_quotaPerSignerList.ContainsKey(transaction.Signer)) - { - _quotaPerSignerList[transaction.Signer] = acsTxQuota; - } - else - { - _quotaPerSignerList.TryAdd(transaction.Signer, acsTxQuota); - } + _quotaPerSignerList[transaction.Signer] = acsTxQuota; if (acsTxQuota == 0) { From e6094820baf7a2415fe87363a489ce83e7c21c2a Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Fri, 24 Nov 2023 13:28:10 +0900 Subject: [PATCH 23/70] Merge fix --- .Lib9c.Tests/Action/BattleArena14Test.cs | 3 --- .Lib9c.Tests/Action/BattleArenaTest.cs | 3 --- .Lib9c.Tests/Action/BurnAssetTest.cs | 4 ---- .Lib9c.Tests/Action/Garages/BulkUnloadFromGaragesTest.cs | 1 - .Lib9c.Tests/Action/IssueTokensFromGarageTest.cs | 2 -- .Lib9c.Tests/Action/MintAssetsTest.cs | 6 ------ 6 files changed, 19 deletions(-) diff --git a/.Lib9c.Tests/Action/BattleArena14Test.cs b/.Lib9c.Tests/Action/BattleArena14Test.cs index f22acdde83..19d47c513c 100644 --- a/.Lib9c.Tests/Action/BattleArena14Test.cs +++ b/.Lib9c.Tests/Action/BattleArena14Test.cs @@ -948,7 +948,6 @@ public void ExecuteDuplicatedException(int slotIndex, int runeId, int slotIndex2 PreviousState = previousStates, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, })); } @@ -1180,7 +1179,6 @@ private void Execute( PreviousState = previousStates, Signer = myAgentAddress, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -1285,7 +1283,6 @@ private IAccount JoinArena( PreviousState = states, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return states; diff --git a/.Lib9c.Tests/Action/BattleArenaTest.cs b/.Lib9c.Tests/Action/BattleArenaTest.cs index e5b89c26ec..b224178b16 100644 --- a/.Lib9c.Tests/Action/BattleArenaTest.cs +++ b/.Lib9c.Tests/Action/BattleArenaTest.cs @@ -948,7 +948,6 @@ public void ExecuteDuplicatedException(int slotIndex, int runeId, int slotIndex2 PreviousState = previousStates, Signer = _agent1Address, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, })); } @@ -1180,7 +1179,6 @@ private void Execute( PreviousState = previousStates, Signer = myAgentAddress, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); @@ -1285,7 +1283,6 @@ private IAccount JoinArena( PreviousState = states, Signer = signer, RandomSeed = random.Seed, - Rehearsal = false, BlockIndex = blockIndex, }); return states; diff --git a/.Lib9c.Tests/Action/BurnAssetTest.cs b/.Lib9c.Tests/Action/BurnAssetTest.cs index a601665a38..40d3f8a86b 100644 --- a/.Lib9c.Tests/Action/BurnAssetTest.cs +++ b/.Lib9c.Tests/Action/BurnAssetTest.cs @@ -135,7 +135,6 @@ public void Execute() { PreviousState = prevState, Signer = _signer, - Rehearsal = false, BlockIndex = 1, } ); @@ -168,7 +167,6 @@ public void Execute_With_AvatarAddress() { PreviousState = prevState, Signer = _signer, - Rehearsal = false, BlockIndex = 1, } ); @@ -196,7 +194,6 @@ public void Execute_Throws_InsufficientBalanceException() { PreviousState = prevState, Signer = _signer, - Rehearsal = false, BlockIndex = 1, } ); @@ -220,7 +217,6 @@ public void Execute_Throws_InvalidActionFieldException() { PreviousState = prevState, Signer = _signer, - Rehearsal = false, BlockIndex = 1, } ); diff --git a/.Lib9c.Tests/Action/Garages/BulkUnloadFromGaragesTest.cs b/.Lib9c.Tests/Action/Garages/BulkUnloadFromGaragesTest.cs index c74da7e7ef..c71c2c853b 100644 --- a/.Lib9c.Tests/Action/Garages/BulkUnloadFromGaragesTest.cs +++ b/.Lib9c.Tests/Action/Garages/BulkUnloadFromGaragesTest.cs @@ -118,7 +118,6 @@ public void Execute_Success() { Signer = AgentAddress, BlockIndex = blockIndex, - Rehearsal = false, PreviousState = states, RandomSeed = new TestRandom().Seed, }); diff --git a/.Lib9c.Tests/Action/IssueTokensFromGarageTest.cs b/.Lib9c.Tests/Action/IssueTokensFromGarageTest.cs index 0fc86f13e3..67406000c3 100644 --- a/.Lib9c.Tests/Action/IssueTokensFromGarageTest.cs +++ b/.Lib9c.Tests/Action/IssueTokensFromGarageTest.cs @@ -108,7 +108,6 @@ public void Execute_With_FungibleAssetValue() { PreviousState = _prevState, Signer = _signer, - Rehearsal = false, BlockIndex = 42, } ); @@ -138,7 +137,6 @@ public void Execute_With_FungibleItemValue() { PreviousState = _prevState, Signer = _signer, - Rehearsal = false, BlockIndex = 42, } ); diff --git a/.Lib9c.Tests/Action/MintAssetsTest.cs b/.Lib9c.Tests/Action/MintAssetsTest.cs index 469f3c4a2c..cc39f7c9f9 100644 --- a/.Lib9c.Tests/Action/MintAssetsTest.cs +++ b/.Lib9c.Tests/Action/MintAssetsTest.cs @@ -131,7 +131,6 @@ public void Execute_With_FungibleAssetValue() { PreviousState = _prevState, Signer = _minters.First(), - Rehearsal = false, BlockIndex = 1, } ); @@ -170,7 +169,6 @@ public void Execute_With_FungibleItemValue() { PreviousState = prevState, Signer = _minters.First(), - Rehearsal = false, BlockIndex = 1, } ); @@ -216,7 +214,6 @@ public void Execute_With_Mixed() { PreviousState = prevState, Signer = _minters.First(), - Rehearsal = false, BlockIndex = 1, } ); @@ -251,7 +248,6 @@ public void Execute_Throws_InvalidMinterException() { PreviousState = _prevState, Signer = _adminAddress, - Rehearsal = false, BlockIndex = 1, } ); @@ -264,7 +260,6 @@ public void Execute_Throws_InvalidMinterException() { PreviousState = _prevState, Signer = m, - Rehearsal = false, BlockIndex = 1, } ); @@ -276,7 +271,6 @@ public void Execute_Throws_InvalidMinterException() { PreviousState = _prevState, Signer = default, - Rehearsal = false, BlockIndex = 1, } )); From a27a00fde2f72cd682d2df473b6ae25e35374730 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Wed, 22 Nov 2023 17:51:44 +0900 Subject: [PATCH 24/70] Cleanup unused code --- .../Formatters/AccountStateDeltaFormatter.cs | 65 ------------------- ...ineChroniclesResolverGetFormatterHelper.cs | 1 - 2 files changed, 66 deletions(-) delete mode 100644 Lib9c.MessagePack/Formatters/AccountStateDeltaFormatter.cs diff --git a/Lib9c.MessagePack/Formatters/AccountStateDeltaFormatter.cs b/Lib9c.MessagePack/Formatters/AccountStateDeltaFormatter.cs deleted file mode 100644 index 1070788072..0000000000 --- a/Lib9c.MessagePack/Formatters/AccountStateDeltaFormatter.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using System.Buffers; -using System.Collections.Generic; -using System.Linq; -using Bencodex; -using Bencodex.Types; -using Libplanet.Action.State; -using MessagePack; -using MessagePack.Formatters; - -namespace Lib9c.Formatters -{ - public class AccountStateDeltaFormatter : IMessagePackFormatter - { - public void Serialize(ref MessagePackWriter writer, IAccount value, - MessagePackSerializerOptions options) - { - var state = new Dictionary( - value.Delta.UpdatedAddresses.Select(addr => new KeyValuePair( - (Binary)addr.ToByteArray(), - value.GetState(addr) ?? new Bencodex.Types.Null() - )) - ); - var balance = new Bencodex.Types.List( -#pragma warning disable LAA1002 - value.Delta.UpdatedFungibleAssets.Select(pair => -#pragma warning restore LAA1002 - new Bencodex.Types.Dictionary(new[] - { - new KeyValuePair((Text) "address", (Binary) pair.Item1.ByteArray), - new KeyValuePair((Text) "currency", pair.Item2.Serialize()), - new KeyValuePair((Text) "amount", (Integer) value.GetBalance(pair.Item1, pair.Item2).RawValue), - }) - ).Cast() - ); - var totalSupply = new Dictionary( - value.Delta.UpdatedTotalSupplyCurrencies.Select(currency => - new KeyValuePair( - (Binary)new Codec().Encode(currency.Serialize()), - (Integer)value.GetTotalSupply(currency).RawValue))); - - var bdict = new Dictionary(new[] - { - new KeyValuePair((Text) "states", state), - new KeyValuePair((Text) "balances", balance), - new KeyValuePair((Text) "totalSupplies", totalSupply), - }); - - writer.Write(new Codec().Encode(bdict)); - } - - public IAccount Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - options.Security.DepthStep(ref reader); - - var bytes = reader.ReadBytes(); - if (bytes is null) - { - throw new NullReferenceException($"ReadBytes from serialized {nameof(IAccount)} is null."); - } - - return new AccountStateDelta(new Codec().Decode(bytes.Value.ToArray())); - } - } -} diff --git a/Lib9c.MessagePack/Formatters/NineChroniclesResolverGetFormatterHelper.cs b/Lib9c.MessagePack/Formatters/NineChroniclesResolverGetFormatterHelper.cs index 0a466d9254..c87c3e394c 100644 --- a/Lib9c.MessagePack/Formatters/NineChroniclesResolverGetFormatterHelper.cs +++ b/Lib9c.MessagePack/Formatters/NineChroniclesResolverGetFormatterHelper.cs @@ -17,7 +17,6 @@ public static class NineChroniclesResolverGetFormatterHelper {typeof(Address), new AddressFormatter()}, {typeof(Exception), new ExceptionFormatter()}, {typeof(FungibleAssetValue), new FungibleAssetValueFormatter()}, - {typeof(IAccount), new AccountStateDeltaFormatter()}, {typeof(PublicKey), new PublicKeyFormatter()}, {typeof(Dictionary), new BencodexFormatter()}, {typeof(IValue), new BencodexFormatter()}, From 09bf1c8b4f20ba07eb2b20d186eaa51ef8a6a778 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Tue, 21 Nov 2023 16:53:54 +0900 Subject: [PATCH 25/70] Remove unused code --- .Lib9c.Tools/SubCommand/State.cs | 71 -------------------------------- 1 file changed, 71 deletions(-) diff --git a/.Lib9c.Tools/SubCommand/State.cs b/.Lib9c.Tools/SubCommand/State.cs index b5349186cd..f987c88158 100644 --- a/.Lib9c.Tools/SubCommand/State.cs +++ b/.Lib9c.Tools/SubCommand/State.cs @@ -418,76 +418,5 @@ public bool Exists(in KeyBytes key) => IEnumerable IKeyValueStore.ListKeys() => _dictionary.Keys; } - - private static ImmutableDictionary GetTotalDelta( - IReadOnlyList actionEvaluations, - Func toStateKey, - Func<(Address, Currency), string> toFungibleAssetKey, - Func toTotalSupplyKey, - string validatorSetKey) - { - IImmutableSet
stateUpdatedAddresses = actionEvaluations - .SelectMany(a => a.OutputState.Delta.StateUpdatedAddresses) - .ToImmutableHashSet(); - IImmutableSet<(Address, Currency)> updatedFungibleAssets = actionEvaluations - .SelectMany(a => a.OutputState.Delta.UpdatedFungibleAssets) - .ToImmutableHashSet(); - IImmutableSet updatedTotalSupplies = actionEvaluations - .SelectMany(a => a.OutputState.Delta.UpdatedTotalSupplyCurrencies) - .ToImmutableHashSet(); - - IAccount lastStates = actionEvaluations.Count > 0 - ? actionEvaluations[actionEvaluations.Count - 1].OutputState - : null; - ImmutableDictionary totalDelta = - stateUpdatedAddresses.ToImmutableDictionary( - toStateKey, - a => lastStates?.GetState(a) - ).SetItems( - updatedFungibleAssets.Select(pair => - new KeyValuePair( - toFungibleAssetKey(pair), - new Bencodex.Types.Integer( - lastStates?.GetBalance(pair.Item1, pair.Item2).RawValue ?? 0 - ) - ) - ) - ); - - foreach (var currency in updatedTotalSupplies) - { - if (lastStates?.GetTotalSupply(currency).RawValue is { } rawValue) - { - totalDelta = totalDelta.SetItem( - toTotalSupplyKey(currency), - new Bencodex.Types.Integer(rawValue) - ); - } - } - - if (lastStates?.GetValidatorSet() is { } validatorSet && validatorSet.Validators.Any()) - { - totalDelta = totalDelta.SetItem( - validatorSetKey, - validatorSet.Bencoded - ); - } - - return totalDelta; - } - - private const string ValidatorSetKey = "___"; - - private static string ToStateKey(Address address) => ByteUtil.Hex(address.ByteArray); - - private static string ToFungibleAssetKey(Address address, Currency currency) => - "_" + ByteUtil.Hex(address.ByteArray) + - "_" + ByteUtil.Hex(currency.Hash.ByteArray); - - private static string ToFungibleAssetKey((Address, Currency) pair) => - ToFungibleAssetKey(pair.Item1, pair.Item2); - - private static string ToTotalSupplyKey(Currency currency) => - "__" + ByteUtil.Hex(currency.Hash.ByteArray); } } From f831804fd56a36db828ea1bf68800fad9a823bed Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Tue, 21 Nov 2023 19:22:04 +0900 Subject: [PATCH 26/70] Remove delta usage from test --- .Lib9c.Tests/Action/RewardGoldTest.cs | 30 ++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/.Lib9c.Tests/Action/RewardGoldTest.cs b/.Lib9c.Tests/Action/RewardGoldTest.cs index 0563c25aa4..28e6dd2e41 100644 --- a/.Lib9c.Tests/Action/RewardGoldTest.cs +++ b/.Lib9c.Tests/Action/RewardGoldTest.cs @@ -98,9 +98,9 @@ public void WeeklyArenaRankingBoard(bool resetCount, bool updateNext) ArenaScoreHelper.GetScoreV4); var gameConfigState = new GameConfigState(); gameConfigState.Set(_tableSheets.GameConfigSheet); - var state = _baseState + IAccount state = new Account(_baseState .SetState(weekly.address, weekly.Serialize()) - .SetState(gameConfigState.address, gameConfigState.Serialize()); + .SetState(gameConfigState.address, gameConfigState.Serialize())); var blockIndex = 0; if (resetCount) @@ -114,9 +114,9 @@ public void WeeklyArenaRankingBoard(bool resetCount, bool updateNext) blockIndex = gameConfigState.WeeklyArenaInterval; // Avoid NRE in test case. var nextWeekly = new WeeklyArenaState(1); - state = state + state = new Account(state .SetState(weekly.address, weekly.Serialize()) - .SetState(nextWeekly.address, nextWeekly.Serialize()); + .SetState(nextWeekly.address, nextWeekly.Serialize())); } Assert.False(weekly.Ended); @@ -142,12 +142,28 @@ public void WeeklyArenaRankingBoard(bool resetCount, bool updateNext) var currentWeeklyState = nextState.GetWeeklyArenaState(0); var nextWeeklyState = nextState.GetWeeklyArenaState(1); - Assert.Contains(WeeklyArenaState.DeriveAddress(0), nextState.Delta.UpdatedAddresses); - Assert.Contains(WeeklyArenaState.DeriveAddress(1), nextState.Delta.UpdatedAddresses); + if (resetCount || updateNext) + { + Assert.NotEqual( + state.GetState(WeeklyArenaState.DeriveAddress(0)), + nextState.GetState(WeeklyArenaState.DeriveAddress(0))); + } + else + { + Assert.Equal( + state.GetState(WeeklyArenaState.DeriveAddress(0)), + nextState.GetState(WeeklyArenaState.DeriveAddress(0))); + } + + Assert.NotEqual( + state.GetState(WeeklyArenaState.DeriveAddress(1)), + nextState.GetState(WeeklyArenaState.DeriveAddress(1))); if (updateNext) { - Assert.Contains(WeeklyArenaState.DeriveAddress(2), nextState.Delta.UpdatedAddresses); + Assert.NotEqual( + state.GetState(WeeklyArenaState.DeriveAddress(2)), + nextState.GetState(WeeklyArenaState.DeriveAddress(2))); Assert.Equal(blockIndex, nextWeeklyState.ResetIndex); } From 94e90c4bf45abd132b6261b9d02d3005952a9658 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Tue, 21 Nov 2023 20:16:52 +0900 Subject: [PATCH 27/70] Overhaul transfer asset snapshot test --- .../Snapshot/TransferAsset0SnapshotTest.cs | 88 +++++++++++++------ ...er_asset.TransferCrystal.diff.verified.txt | 12 +++ ...set.TransferCrystal.fungibles.verified.txt | 4 - ...asset.TransferCrystal.summary.verified.txt | 12 --- ...r_asset.TransferWithMemo.diff.verified.txt | 12 +++ ...et.TransferWithMemo.fungibles.verified.txt | 4 - ...sset.TransferWithMemo.summary.verified.txt | 12 --- 7 files changed, 84 insertions(+), 60 deletions(-) create mode 100644 .Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.diff.verified.txt delete mode 100644 .Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.fungibles.verified.txt delete mode 100644 .Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.summary.verified.txt create mode 100644 .Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.diff.verified.txt delete mode 100644 .Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.fungibles.verified.txt delete mode 100644 .Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.summary.verified.txt diff --git a/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs b/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs index 610e042835..c9ca72a8e6 100644 --- a/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs +++ b/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs @@ -1,12 +1,12 @@ namespace Lib9c.Tests.Action.Snapshot { - using System.Collections.Immutable; - using System.Numerics; + using System.Linq; using System.Threading.Tasks; using Bencodex.Types; using Libplanet.Action.State; using Libplanet.Common; using Libplanet.Crypto; + using Libplanet.Store; using Libplanet.Store.Trie; using Libplanet.Types.Assets; using Nekoyume.Action; @@ -50,7 +50,18 @@ public Task TransferCrystal() var recipientAddress = recipientPrivateKey.ToAddress(); var crystal = CrystalCalculator.CRYSTAL; var context = new ActionContext(); - IAccount state = new Account(MockState.Empty).MintAsset(context, senderAddress, crystal * 100); + + var stateStore = new TrieStateStore(new MemoryKeyValueStore()); + var inputTrie = stateStore.GetStateRoot(null); + IAccount state = new Account(new AccountState(inputTrie)) + .MintAsset(context, senderAddress, crystal * 100); + + // NOTE: Temporary measure using IAccountDelta. + // Will be removed once Libplanet moves to ITrie based IAccouns. + inputTrie = inputTrie.Set(state.Delta.ToRawDelta()); + inputTrie = stateStore.Commit(inputTrie); + state = new Account(new AccountState(inputTrie)); + var actionContext = new ActionContext { Signer = senderAddress, @@ -59,22 +70,28 @@ public Task TransferCrystal() var action = new TransferAsset0( senderAddress, recipientAddress, - crystal * 100); + crystal * 20); + var outputState = action.Execute(actionContext); + var outputTrie = inputTrie.Set(outputState.Delta.ToRawDelta()); + outputTrie = stateStore.Commit(outputTrie); + + var trieDiff = outputTrie.Diff(inputTrie) + .Select(elem => new object[] + { + ByteUtil.Hex(elem.Path.ByteArray), + elem.TargetValue?.ToString(), + elem.SourceValue.ToString(), + }) + .ToArray(); + var accountDiff = AccountDiff.Create(inputTrie, outputTrie); // Verifier does not handle tuples well when nested. - var summary = Verifier - .Verify(outputState) - .IgnoreMembersWithType>() - .IgnoreMembersWithType>() - .IgnoreMembersWithType() - .UseTypeName((Text)GetActionTypeId()) - .UseMethodName($"{nameof(TransferCrystal)}.summary"); - var fungibles = Verifier - .Verify(outputState.Delta.Fungibles) + var diff = Verifier + .Verify(trieDiff) .UseTypeName((Text)GetActionTypeId()) - .UseMethodName($"{nameof(TransferCrystal)}.fungibles"); - return Task.WhenAll(summary, fungibles); + .UseMethodName($"{nameof(TransferCrystal)}.diff"); + return diff; } [Fact] @@ -90,7 +107,18 @@ public Task TransferWithMemo() var recipientAddress = recipientPrivateKey.ToAddress(); var crystal = CrystalCalculator.CRYSTAL; var context = new ActionContext(); - var state = new Account(MockState.Empty).MintAsset(context, senderAddress, crystal * 100); + + var stateStore = new TrieStateStore(new MemoryKeyValueStore()); + var inputTrie = stateStore.GetStateRoot(null); + IAccount state = new Account(new AccountState(inputTrie)) + .MintAsset(context, senderAddress, crystal * 100); + + // NOTE: Temporary measure using IAccountDelta. + // Will be removed once Libplanet moves to ITrie based IAccouns. + inputTrie = inputTrie.Set(state.Delta.ToRawDelta()); + inputTrie = stateStore.Commit(inputTrie); + state = new Account(new AccountState(inputTrie)); + var actionContext = new ActionContext { Signer = senderAddress, @@ -99,23 +127,27 @@ public Task TransferWithMemo() var action = new TransferAsset0( senderAddress, recipientAddress, - crystal * 100, + crystal * 20, "MEMO"); var outputState = action.Execute(actionContext); + var outputTrie = inputTrie.Set(outputState.Delta.ToRawDelta()); + outputTrie = stateStore.Commit(outputTrie); + + var trieDiff = outputTrie.Diff(inputTrie) + .Select(elem => new object[] + { + ByteUtil.Hex(elem.Path.ByteArray), + elem.TargetValue?.ToString(), + elem.SourceValue.ToString(), + }) + .ToArray(); // Verifier does not handle tuples well when nested. - var summary = Verifier - .Verify(outputState) - .IgnoreMembersWithType>() - .IgnoreMembersWithType>() - .IgnoreMembersWithType() - .UseTypeName((Text)GetActionTypeId()) - .UseMethodName($"{nameof(TransferWithMemo)}.summary"); - var fungibles = Verifier - .Verify(outputState.Delta.Fungibles) + var diff = Verifier + .Verify(trieDiff) .UseTypeName((Text)GetActionTypeId()) - .UseMethodName($"{nameof(TransferWithMemo)}.fungibles"); - return Task.WhenAll(summary, fungibles); + .UseMethodName($"{nameof(TransferWithMemo)}.diff"); + return diff; } } } diff --git a/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.diff.verified.txt b/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.diff.verified.txt new file mode 100644 index 0000000000..35aff764ea --- /dev/null +++ b/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.diff.verified.txt @@ -0,0 +1,12 @@ +[ + [ + 5f393961303663326264373166306561613831393666653435626535636134323465653830393733335f64656564663762343337363963303635656263396563376162653636613838336466303234303762, + null, + Bencodex.Types.Integer 20000000000000000000 + ], + [ + 5f633631633337363639336536623236373137633965653961636135613234353330323866366666615f64656564663762343337363963303635656263396563376162653636613838336466303234303762, + Bencodex.Types.Integer 100000000000000000000, + Bencodex.Types.Integer 80000000000000000000 + ] +] \ No newline at end of file diff --git a/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.fungibles.verified.txt b/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.fungibles.verified.txt deleted file mode 100644 index abc9592fba..0000000000 --- a/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.fungibles.verified.txt +++ /dev/null @@ -1,4 +0,0 @@ -{ - (0x99A06c2Bd71f0EAa8196fE45BE5ca424eE809733, CRYSTAL (deedf7b43769c065ebc9ec7abe66a883df02407b)): 100000000000000000000, - (0xC61C376693E6B26717C9ee9aCA5A2453028f6ffA, CRYSTAL (deedf7b43769c065ebc9ec7abe66a883df02407b)): 0 -} \ No newline at end of file diff --git a/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.summary.verified.txt b/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.summary.verified.txt deleted file mode 100644 index 1a74723cb7..0000000000 --- a/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferCrystal.summary.verified.txt +++ /dev/null @@ -1,12 +0,0 @@ -{ - Delta: { - FungibleUpdatedAddresses: [ - 99A06c2Bd71f0EAa8196fE45BE5ca424eE809733, - C61C376693E6B26717C9ee9aCA5A2453028f6ffA - ], - UpdatedAddresses: [ - 99A06c2Bd71f0EAa8196fE45BE5ca424eE809733, - C61C376693E6B26717C9ee9aCA5A2453028f6ffA - ] - } -} \ No newline at end of file diff --git a/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.diff.verified.txt b/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.diff.verified.txt new file mode 100644 index 0000000000..35aff764ea --- /dev/null +++ b/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.diff.verified.txt @@ -0,0 +1,12 @@ +[ + [ + 5f393961303663326264373166306561613831393666653435626535636134323465653830393733335f64656564663762343337363963303635656263396563376162653636613838336466303234303762, + null, + Bencodex.Types.Integer 20000000000000000000 + ], + [ + 5f633631633337363639336536623236373137633965653961636135613234353330323866366666615f64656564663762343337363963303635656263396563376162653636613838336466303234303762, + Bencodex.Types.Integer 100000000000000000000, + Bencodex.Types.Integer 80000000000000000000 + ] +] \ No newline at end of file diff --git a/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.fungibles.verified.txt b/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.fungibles.verified.txt deleted file mode 100644 index abc9592fba..0000000000 --- a/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.fungibles.verified.txt +++ /dev/null @@ -1,4 +0,0 @@ -{ - (0x99A06c2Bd71f0EAa8196fE45BE5ca424eE809733, CRYSTAL (deedf7b43769c065ebc9ec7abe66a883df02407b)): 100000000000000000000, - (0xC61C376693E6B26717C9ee9aCA5A2453028f6ffA, CRYSTAL (deedf7b43769c065ebc9ec7abe66a883df02407b)): 0 -} \ No newline at end of file diff --git a/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.summary.verified.txt b/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.summary.verified.txt deleted file mode 100644 index 1a74723cb7..0000000000 --- a/.Lib9c.Tests/Action/Snapshot/transfer_asset.TransferWithMemo.summary.verified.txt +++ /dev/null @@ -1,12 +0,0 @@ -{ - Delta: { - FungibleUpdatedAddresses: [ - 99A06c2Bd71f0EAa8196fE45BE5ca424eE809733, - C61C376693E6B26717C9ee9aCA5A2453028f6ffA - ], - UpdatedAddresses: [ - 99A06c2Bd71f0EAa8196fE45BE5ca424eE809733, - C61C376693E6B26717C9ee9aCA5A2453028f6ffA - ] - } -} \ No newline at end of file From 508eb2ea8c3226e933db265967fa89d4bc6f019f Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Fri, 24 Nov 2023 16:44:29 +0900 Subject: [PATCH 28/70] Bump libplanet to 3.8.0 --- .Libplanet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.Libplanet b/.Libplanet index 24331ea2f3..115a4231a8 160000 --- a/.Libplanet +++ b/.Libplanet @@ -1 +1 @@ -Subproject commit 24331ea2f37f2d3f6d7352f8dc0f7ddf93fabb5d +Subproject commit 115a4231a838e45a141426ede38a5d933c9a432c From 82c3631364ba1fd0b20dffd7319e191bd98b05f1 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Fri, 24 Nov 2023 16:46:39 +0900 Subject: [PATCH 29/70] Remove remaining rehearsal reference --- .Lib9c.Tests/Action/ActionContext.cs | 2 -- .../ActionEvaluationSerializerTest.cs | 1 - .../ActionContextMarshaller.cs | 2 -- Lib9c/Action/Garages/BulkUnloadFromGarages.cs | 1 - 4 files changed, 6 deletions(-) diff --git a/.Lib9c.Tests/Action/ActionContext.cs b/.Lib9c.Tests/Action/ActionContext.cs index a4e6e1610d..950a46beeb 100644 --- a/.Lib9c.Tests/Action/ActionContext.cs +++ b/.Lib9c.Tests/Action/ActionContext.cs @@ -27,8 +27,6 @@ public class ActionContext : IActionContext public int BlockProtocolVersion { get; set; } - public bool Rehearsal => false; - public IAccount PreviousState { get; set; } public int RandomSeed { get; set; } diff --git a/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs b/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs index dd53890950..67c47dbbb5 100644 --- a/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs +++ b/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs @@ -29,7 +29,6 @@ public void Serialization() miner: addresses[1], blockIndex: 0, blockProtocolVersion: 0, - rehearsal: false, previousState: prevState, randomSeed: 123, blockAction: true), diff --git a/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionContextMarshaller.cs b/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionContextMarshaller.cs index a75201cbb7..f7a610a165 100644 --- a/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionContextMarshaller.cs +++ b/.Libplanet.Extensions.ActionEvaluatorCommonComponents/ActionContextMarshaller.cs @@ -26,7 +26,6 @@ public static Dictionary Marshal(this ICommittedActionContext actionContext) .Add("miner", actionContext.Miner.ToHex()) .Add("block_index", actionContext.BlockIndex) .Add("block_protocol_version", actionContext.BlockProtocolVersion) - .Add("rehearsal", actionContext.Rehearsal) .Add("previous_states", actionContext.PreviousState.ByteArray) .Add("random_seed", actionContext.RandomSeed) .Add("block_action", actionContext.BlockAction); @@ -50,7 +49,6 @@ txIdValue is Binary txIdBinaryValue miner: new Address(((Text)dictionary["miner"]).Value), blockIndex: (Integer)dictionary["block_index"], blockProtocolVersion: (Integer)dictionary["block_protocol_version"], - rehearsal: (Boolean)dictionary["rehearsal"], previousState: new HashDigest(dictionary["previous_states"]), randomSeed: (Integer)dictionary["random_seed"], blockAction: (Boolean)dictionary["block_action"] diff --git a/Lib9c/Action/Garages/BulkUnloadFromGarages.cs b/Lib9c/Action/Garages/BulkUnloadFromGarages.cs index d6d6f5fcc6..ee569460f1 100644 --- a/Lib9c/Action/Garages/BulkUnloadFromGarages.cs +++ b/Lib9c/Action/Garages/BulkUnloadFromGarages.cs @@ -119,7 +119,6 @@ public override IAccount Execute(IActionContext context) context.UseGas(1); var states = context.PreviousState; - if (context.Rehearsal) return states; // validate var addressesHex = GetSignerAndOtherAddressesHex(context); From 0dbaaa57fe6a1788a9289435cd4f9164d3991fa5 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Fri, 24 Nov 2023 16:50:56 +0900 Subject: [PATCH 30/70] Fix nullable to non-nullable --- .../ActionEvaluationSerializerTest.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs b/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs index 67c47dbbb5..64aa0d735a 100644 --- a/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs +++ b/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs @@ -20,6 +20,8 @@ public void Serialization() var prevState = new HashDigest(buffer); random.NextBytes(buffer); var outputState = new HashDigest(buffer); + random.NextBytes(buffer); + var preEvalHash = new HashDigest(buffer); var committed = new CommittedActionEvaluation( action: Null.Value, @@ -27,7 +29,7 @@ public void Serialization() signer: addresses[0], txId: null, miner: addresses[1], - blockIndex: 0, + blockIndex: 456, blockProtocolVersion: 0, previousState: prevState, randomSeed: 123, @@ -35,8 +37,8 @@ public void Serialization() outputState: outputState, exception: new UnexpectedlyTerminatedActionException( "", - null, - null, + preEvalHash, + 456, null, null, new NullAction(), @@ -46,7 +48,7 @@ public void Serialization() Assert.Equal(Null.Value, deserialized.Action); Assert.Equal(123, deserialized.InputContext.RandomSeed); - Assert.Equal(0, deserialized.InputContext.BlockIndex); + Assert.Equal(456, deserialized.InputContext.BlockIndex); Assert.Equal(0, deserialized.InputContext.BlockProtocolVersion); Assert.Equal(addresses[0], deserialized.InputContext.Signer); Assert.Equal(addresses[1], deserialized.InputContext.Miner); From ce4a7efb46f6aad2b7f7989e65deb95cda8e7217 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Fri, 24 Nov 2023 16:51:50 +0900 Subject: [PATCH 31/70] Replace ToAddress() with Address --- .../Action/CreateOrReplaceAvatarTest.cs | 4 +- .../Action/FaucetCurrencyTest.cs | 2 +- .../Action/FaucetRuneTest.cs | 6 +- .../Action/ManipulateStateTest.cs | 16 +-- .../Action/AccountStateDeltaExtensionsTest.cs | 6 +- .../Action/AccountStateViewExtensionsTest.cs | 12 +-- .../Action/ActionContextExtensionsTest.cs | 4 +- .Lib9c.Tests/Action/ActionEvaluationTest.cs | 76 +++++++------- .Lib9c.Tests/Action/ApprovePledgeTest.cs | 10 +- .Lib9c.Tests/Action/ArenahelperTest.cs | 4 +- .Lib9c.Tests/Action/BattleArena10Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena11Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena12Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena13Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena14Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena1Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena2Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena3Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena4Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena5Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena6Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena7Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena8Test.cs | 4 +- .Lib9c.Tests/Action/BattleArena9Test.cs | 4 +- .Lib9c.Tests/Action/BattleArenaTest.cs | 4 +- .Lib9c.Tests/Action/BattleGrandFinale1Test.cs | 8 +- .Lib9c.Tests/Action/BattleGrandFinale2Test.cs | 8 +- .Lib9c.Tests/Action/BattleGrandFinale3Test.cs | 8 +- .Lib9c.Tests/Action/BurnAssetTest.cs | 2 +- .Lib9c.Tests/Action/Buy10Test.cs | 44 ++++----- .Lib9c.Tests/Action/Buy11Test.cs | 44 ++++----- .Lib9c.Tests/Action/Buy2Test.cs | 10 +- .Lib9c.Tests/Action/Buy3Test.cs | 10 +- .Lib9c.Tests/Action/Buy4Test.cs | 10 +- .Lib9c.Tests/Action/Buy5Test.cs | 28 +++--- .Lib9c.Tests/Action/Buy6Test.cs | 36 +++---- .Lib9c.Tests/Action/Buy7Test.cs | 36 +++---- .Lib9c.Tests/Action/Buy8Test.cs | 36 +++---- .Lib9c.Tests/Action/Buy9Test.cs | 60 ++++++------ .Lib9c.Tests/Action/BuyMultipleTest.cs | 64 ++++++------ .Lib9c.Tests/Action/BuyProduct0Test.cs | 6 +- .Lib9c.Tests/Action/BuyProduct2Test.cs | 6 +- .Lib9c.Tests/Action/BuyTest.cs | 44 ++++----- .../Action/CancelMonsterCollectTest.cs | 2 +- .../Action/CancelProductRegistration0Test.cs | 10 +- .Lib9c.Tests/Action/ChargeActionPoint0Test.cs | 2 +- .Lib9c.Tests/Action/ChargeActionPoint2Test.cs | 2 +- .Lib9c.Tests/Action/ChargeActionPointTest.cs | 2 +- .Lib9c.Tests/Action/ClaimItemsTest.cs | 8 +- .../ClaimMonsterCollectionReward0Test.cs | 4 +- .../ClaimMonsterCollectionReward2Test.cs | 4 +- .../ClaimMonsterCollectionRewardTest.cs | 4 +- .Lib9c.Tests/Action/ClaimRaidRewardTest.cs | 2 +- .Lib9c.Tests/Action/ClaimStakeReward1Test.cs | 4 +- .Lib9c.Tests/Action/ClaimStakeReward2Test.cs | 6 +- .../Action/ClaimWorldBossKillRewardTest.cs | 4 +- .../Action/CombinationConsumable8Test.cs | 2 +- .../Action/CombinationEquipment10Test.cs | 2 +- .../Action/CombinationEquipment11Test.cs | 2 +- .../Action/CombinationEquipment12Test.cs | 2 +- .../Action/CombinationEquipment13Test.cs | 2 +- .../Action/CombinationEquipment14Test.cs | 2 +- .../Action/CombinationEquipment15Test.cs | 2 +- .../Action/CombinationEquipment16Test.cs | 2 +- .../Action/CombinationEquipment8Test.cs | 2 +- .../Action/CombinationEquipment9Test.cs | 2 +- .Lib9c.Tests/Action/CreateAvatar10Test.cs | 4 +- .Lib9c.Tests/Action/CreatePledgeTest.cs | 10 +- .Lib9c.Tests/Action/DailyReward0Test.cs | 6 +- .Lib9c.Tests/Action/DailyReward2Test.cs | 6 +- .Lib9c.Tests/Action/DailyReward3Test.cs | 6 +- .Lib9c.Tests/Action/DailyReward4Test.cs | 6 +- .Lib9c.Tests/Action/DailyReward5Test.cs | 6 +- .Lib9c.Tests/Action/DailyReward6Test.cs | 6 +- .Lib9c.Tests/Action/DailyRewardTest.cs | 6 +- .Lib9c.Tests/Action/EndPledgeTest.cs | 12 +-- .../Action/EventConsumableItemCrafts0Test.cs | 4 +- .../Action/EventDungeonBattleV1Test.cs | 4 +- .../Action/EventDungeonBattleV2Test.cs | 4 +- .../Action/EventDungeonBattleV3Test.cs | 4 +- .../Action/EventDungeonBattleV4Test.cs | 4 +- .../Action/EventDungeonBattleV5Test.cs | 4 +- .../Action/EventMaterialItemCrafts0Test.cs | 4 +- .../Factory/ClaimStakeRewardFactoryTest.cs | 4 +- .../Garages/BulkUnloadFromGaragesTest.cs | 2 +- .../Garages/DeliverToOthersGaragesTest.cs | 4 +- .../Action/Garages/LoadIntoMyGaragesTest.cs | 4 +- .../Action/Garages/UnloadFromMyGaragesTest.cs | 2 +- .Lib9c.Tests/Action/Grinding0Test.cs | 4 +- .Lib9c.Tests/Action/GrindingTest.cs | 4 +- .Lib9c.Tests/Action/HackAndSlash0Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash10Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash11Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash12Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash13Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash15Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash16Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash17Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash18Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash19Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash20Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash21Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash2Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash3Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash4Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash5Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash6Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash7Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash8Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash9Test.cs | 2 +- .../Action/HackAndSlashRandomBuffTest.cs | 2 +- .Lib9c.Tests/Action/HackAndSlashSweep1Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlashSweep2Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlashSweep3Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlashSweep4Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlashSweep5Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlashSweep6Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlashSweep7Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlashSweep8Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlashSweep9Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlashTest14.cs | 2 +- .Lib9c.Tests/Action/InitializeStatesTest.cs | 26 ++--- .../Action/IssueTokensFromGarageTest.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement0Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement10Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement11Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement12Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement13Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement2Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement3Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement4Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement5Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement6Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement7Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement8Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement9Test.cs | 2 +- .Lib9c.Tests/Action/JoinArena1Test.cs | 6 +- .Lib9c.Tests/Action/JoinArena2Test.cs | 6 +- .Lib9c.Tests/Action/JoinArena3Test.cs | 6 +- .Lib9c.Tests/Action/MarketValidationTest.cs | 4 +- .../Action/MigrateMonsterCollectionTest.cs | 2 +- .../Action/MigrationAvatarStateTest.cs | 4 +- .Lib9c.Tests/Action/MimisbrunnrBattle0Test.cs | 2 +- .../Action/MimisbrunnrBattle10Test.cs | 2 +- .../Action/MimisbrunnrBattle11Test.cs | 2 +- .../Action/MimisbrunnrBattle12Test.cs | 2 +- .../Action/MimisbrunnrBattle13Test.cs | 2 +- .Lib9c.Tests/Action/MimisbrunnrBattle2Test.cs | 2 +- .Lib9c.Tests/Action/MimisbrunnrBattle3Test.cs | 2 +- .Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs | 2 +- .Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs | 2 +- .Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs | 2 +- .Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs | 2 +- .Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs | 2 +- .Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs | 2 +- .Lib9c.Tests/Action/MintAssetsTest.cs | 12 +-- .Lib9c.Tests/Action/PetEnhancement0Test.cs | 4 +- .../Action/PrepareRewardAssetsTest.cs | 4 +- .Lib9c.Tests/Action/Raid1Test.cs | 4 +- .Lib9c.Tests/Action/Raid2Test.cs | 6 +- .Lib9c.Tests/Action/Raid3Test.cs | 6 +- .Lib9c.Tests/Action/Raid4Test.cs | 6 +- .Lib9c.Tests/Action/Raid5Test.cs | 6 +- .Lib9c.Tests/Action/Raid6Test.cs | 6 +- .Lib9c.Tests/Action/RankingBattle0Test.cs | 8 +- .Lib9c.Tests/Action/RankingBattle10Test.cs | 8 +- .Lib9c.Tests/Action/RankingBattle11Test.cs | 8 +- .Lib9c.Tests/Action/RankingBattle2Test.cs | 6 +- .Lib9c.Tests/Action/RankingBattle3Test.cs | 6 +- .Lib9c.Tests/Action/RankingBattle4Test.cs | 8 +- .Lib9c.Tests/Action/RankingBattle5Test.cs | 8 +- .Lib9c.Tests/Action/RankingBattle6Test.cs | 8 +- .Lib9c.Tests/Action/RankingBattle7Test.cs | 8 +- .Lib9c.Tests/Action/RankingBattle8Test.cs | 8 +- .Lib9c.Tests/Action/RankingBattle9Test.cs | 8 +- .Lib9c.Tests/Action/RankingBattleTest.cs | 4 +- .Lib9c.Tests/Action/RapidCombination0Test.cs | 4 +- .Lib9c.Tests/Action/RapidCombination2Test.cs | 4 +- .Lib9c.Tests/Action/RapidCombination3Test.cs | 4 +- .Lib9c.Tests/Action/RapidCombination4Test.cs | 4 +- .Lib9c.Tests/Action/RapidCombination5Test.cs | 4 +- .Lib9c.Tests/Action/RapidCombination6Test.cs | 4 +- .Lib9c.Tests/Action/RapidCombination7Test.cs | 4 +- .Lib9c.Tests/Action/RapidCombination8Test.cs | 4 +- .Lib9c.Tests/Action/RapidCombination9Test.cs | 4 +- .Lib9c.Tests/Action/ReRegisterProduct0Test.cs | 6 +- .Lib9c.Tests/Action/ReRegisterProductTest.cs | 6 +- .Lib9c.Tests/Action/RegisterProduct0Test.cs | 8 +- .Lib9c.Tests/Action/RegisterProduct2Test.cs | 8 +- .Lib9c.Tests/Action/RenewAdminStateTest.cs | 14 +-- .Lib9c.Tests/Action/RequestPledgeTest.cs | 8 +- .Lib9c.Tests/Action/RewardGoldTest.cs | 10 +- .Lib9c.Tests/Action/RuneEnhancement0Test.cs | 20 ++-- .Lib9c.Tests/Action/RuneEnhancementTest.cs | 24 ++--- .../Action/Scenario/ArenaScenarioTest.cs | 6 +- .../Action/Scenario/AuraScenarioTest.cs | 6 +- .../Action/Scenario/MarketScenarioTest.cs | 14 +-- .../Action/Scenario/MeadScenarioTest.cs | 4 +- .../Action/Scenario/RuneScenarioTest.cs | 4 +- .../SellAndCancellationAndSellTest.cs | 2 +- .../StakeAndClaimStakeReward2ScenarioTest.cs | 4 +- .../Scenario/WorldUnlockScenarioTest.cs | 2 +- .Lib9c.Tests/Action/Sell0Test.cs | 6 +- .Lib9c.Tests/Action/Sell10Test.cs | 6 +- .Lib9c.Tests/Action/Sell11Test.cs | 6 +- .Lib9c.Tests/Action/Sell2Test.cs | 6 +- .Lib9c.Tests/Action/Sell3Test.cs | 6 +- .Lib9c.Tests/Action/Sell4Test.cs | 6 +- .Lib9c.Tests/Action/Sell5Test.cs | 6 +- .Lib9c.Tests/Action/Sell6Test.cs | 6 +- .Lib9c.Tests/Action/Sell7Test.cs | 6 +- .Lib9c.Tests/Action/Sell8Test.cs | 6 +- .Lib9c.Tests/Action/Sell9Test.cs | 6 +- .Lib9c.Tests/Action/SellCancellation0Test.cs | 6 +- .Lib9c.Tests/Action/SellCancellation2Test.cs | 6 +- .Lib9c.Tests/Action/SellCancellation3Test.cs | 6 +- .Lib9c.Tests/Action/SellCancellation4Test.cs | 6 +- .Lib9c.Tests/Action/SellCancellation5Test.cs | 6 +- .Lib9c.Tests/Action/SellCancellation6Test.cs | 6 +- .Lib9c.Tests/Action/SellCancellation7Test.cs | 6 +- .Lib9c.Tests/Action/SellCancellation8Test.cs | 6 +- .Lib9c.Tests/Action/SellCancellationTest.cs | 6 +- .Lib9c.Tests/Action/SellTest.cs | 6 +- .../Snapshot/TransferAsset0SnapshotTest.cs | 8 +- .Lib9c.Tests/Action/Stake0Test.cs | 4 +- .Lib9c.Tests/Action/Stake2Test.cs | 4 +- .Lib9c.Tests/Action/Summon/AuraSummonTest.cs | 2 +- .Lib9c.Tests/Action/TransferAsset2Test.cs | 2 +- .Lib9c.Tests/Action/TransferAsset3Test.cs | 2 +- .Lib9c.Tests/Action/TransferAsset4Test.cs | 2 +- .Lib9c.Tests/Action/TransferAssetTest.cs | 2 +- .Lib9c.Tests/Action/TransferAssets0Test.cs | 2 +- .Lib9c.Tests/Action/TransferAssets2Test.cs | 2 +- .Lib9c.Tests/Action/TransferAssetsTest.cs | 2 +- .../Action/UnlockEquipmentRecipe1Test.cs | 6 +- .../Action/UnlockEquipmentRecipeTest.cs | 6 +- .Lib9c.Tests/Action/UnlockRuneSlotTest.cs | 4 +- .Lib9c.Tests/Action/UnlockWorld1Test.cs | 4 +- .Lib9c.Tests/Action/UnlockWorldTest.cs | 4 +- .Lib9c.Tests/Action/UpdateSell0Test.cs | 6 +- .Lib9c.Tests/Action/UpdateSell2Test.cs | 6 +- .Lib9c.Tests/Action/UpdateSell3Test.cs | 6 +- .Lib9c.Tests/Action/UpdateSell4Test.cs | 6 +- .Lib9c.Tests/Action/UpdateSellTest.cs | 6 +- .Lib9c.Tests/Battle/EnemyPlayerDigestTest.cs | 6 +- .Lib9c.Tests/CurrenciesTest.cs | 6 +- .../Extensions/EquipmentExtensionsTest.cs | 2 +- .../Model/Arena/ArenaAvatarStateTest.cs | 4 +- .../Model/Arena/ArenaInformationTest.cs | 2 +- .Lib9c.Tests/Model/Arena/ArenaScoreTest.cs | 2 +- .Lib9c.Tests/Model/Arena/PlayerDigestTest.cs | 6 +- .../GrandFinale/GrandFinaleInformationTest.cs | 12 +-- .Lib9c.Tests/Model/Item/ShopItemTest.cs | 28 +++--- .Lib9c.Tests/Model/ItemNotificationTest.cs | 2 +- .Lib9c.Tests/Model/Skill/NormalAttackTest.cs | 6 +- .../Model/Stake/StakeStateUtilsTest.cs | 6 +- .Lib9c.Tests/Model/Stake/StakeStateV2Test.cs | 6 +- .Lib9c.Tests/Model/State/AdminStateTest.cs | 4 +- .Lib9c.Tests/Model/State/AgentStateTest.cs | 4 +- .Lib9c.Tests/Model/State/AvatarStateTest.cs | 56 +++++------ .../Model/State/CrystalCostStateTest.cs | 2 +- .../State/CrystalRandomSkillStateTest.cs | 2 +- .../Model/State/HammerPointStateTest.cs | 6 +- .Lib9c.Tests/Model/State/PetStateTest.cs | 2 +- .Lib9c.Tests/Model/State/RankingState1Test.cs | 4 +- .Lib9c.Tests/Model/State/RankingStateTest.cs | 4 +- .Lib9c.Tests/Model/State/ShopStateTest.cs | 24 ++--- .Lib9c.Tests/Model/State/StakeStateTest.cs | 6 +- .../Model/State/StateExtensionsTest.cs | 4 +- .../Model/State/WeeklyArenaStateTest.cs | 24 ++--- .Lib9c.Tests/Policy/BlockPolicyTest.cs | 24 ++--- .Lib9c.Tests/StagePolicyTest.cs | 98 +++++++++---------- .Lib9c.Tests/TestHelper/BlockChainHelper.cs | 8 +- .Lib9c.Tests/Types/BencodexTypesListTest.cs | 6 +- .Lib9c.Tests/Util/InitializeUtil.cs | 4 +- .../ActionEvaluationSerializerTest.cs | 2 +- .../Action/CreateArenaDummy.cs | 2 +- Lib9c.DevExtensions/Action/CreateTestbed.cs | 2 +- Lib9c.DevExtensions/Utils.cs | 2 +- Lib9c.Utils/BlockHelper.cs | 2 +- Lib9c/Model/State/AvatarState.cs | 2 +- 281 files changed, 971 insertions(+), 971 deletions(-) diff --git a/.Lib9c.DevExtensions.Tests/Action/CreateOrReplaceAvatarTest.cs b/.Lib9c.DevExtensions.Tests/Action/CreateOrReplaceAvatarTest.cs index 75a07d981e..a7adcca27b 100644 --- a/.Lib9c.DevExtensions.Tests/Action/CreateOrReplaceAvatarTest.cs +++ b/.Lib9c.DevExtensions.Tests/Action/CreateOrReplaceAvatarTest.cs @@ -369,7 +369,7 @@ public void Execute_Success( equipments.Add((row.ResultEquipmentId, data.level)); } } - var agentAddr = new PrivateKey().ToAddress(); + var agentAddr = new PrivateKey().Address; Execute( _initialStates, blockIndex, @@ -405,7 +405,7 @@ public void Execute_Failure( (int runeId, int level)[]? runes, (int stageId, int[] crystalRandomBuffIds)? crystalRandomBuff) { - var agentAddr = new PrivateKey().ToAddress(); + var agentAddr = new PrivateKey().Address; Assert.Throws(() => Execute( _initialStates, blockIndex, diff --git a/.Lib9c.DevExtensions.Tests/Action/FaucetCurrencyTest.cs b/.Lib9c.DevExtensions.Tests/Action/FaucetCurrencyTest.cs index c74f835a70..d2872abdf9 100644 --- a/.Lib9c.DevExtensions.Tests/Action/FaucetCurrencyTest.cs +++ b/.Lib9c.DevExtensions.Tests/Action/FaucetCurrencyTest.cs @@ -36,7 +36,7 @@ public FaucetCurrencyTest(ITestOutputHelper outputHelper) .AddBalance(GoldCurrencyState.Address, _ncg * int.MaxValue)); var goldCurrencyState = new GoldCurrencyState(_ncg); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); _initialState = _initialState diff --git a/.Lib9c.DevExtensions.Tests/Action/FaucetRuneTest.cs b/.Lib9c.DevExtensions.Tests/Action/FaucetRuneTest.cs index d9a6e0a2a0..7f9d2eaeb6 100644 --- a/.Lib9c.DevExtensions.Tests/Action/FaucetRuneTest.cs +++ b/.Lib9c.DevExtensions.Tests/Action/FaucetRuneTest.cs @@ -43,8 +43,8 @@ public FaucetRuneTest(ITestOutputHelper outputHelper) var tableSheets = new TableSheets(sheets); _runeSheet = _initialState.GetSheet(); - Address agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + Address agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarState = new AvatarState( _avatarAddress, @@ -52,7 +52,7 @@ public FaucetRuneTest(ITestOutputHelper outputHelper) 0, tableSheets.GetAvatarSheets(), new GameConfigState(sheets[nameof(GameConfigSheet)]), - new PrivateKey().ToAddress() + new PrivateKey().Address ); agentState.avatarAddresses.Add(0, _avatarAddress); diff --git a/.Lib9c.DevExtensions.Tests/Action/ManipulateStateTest.cs b/.Lib9c.DevExtensions.Tests/Action/ManipulateStateTest.cs index 0500cc3acd..2f7af70899 100644 --- a/.Lib9c.DevExtensions.Tests/Action/ManipulateStateTest.cs +++ b/.Lib9c.DevExtensions.Tests/Action/ManipulateStateTest.cs @@ -25,7 +25,7 @@ namespace Lib9c.DevExtensions.Tests.Action { public class ManipulateStateTest { - private static readonly Address AdminAddr = new PrivateKey().ToAddress(); + private static readonly Address AdminAddr = new PrivateKey().Address; // See also InitializeUtil.cs private static readonly Currency Ncg = Currency.Legacy( @@ -305,37 +305,37 @@ public static IEnumerable FetchBalance() { yield return new object[] { - new PrivateKey().ToAddress(), + new PrivateKey().Address, new FungibleAssetValue(Ncg, 0, 1), }; yield return new object[] { - new PrivateKey().ToAddress(), + new PrivateKey().Address, new FungibleAssetValue(Ncg, 1, 0), }; yield return new object[] { - new PrivateKey().ToAddress(), + new PrivateKey().Address, new FungibleAssetValue(Ncg, 1_000_000_000 - 1, 99), }; yield return new object[] { - new PrivateKey().ToAddress(), + new PrivateKey().Address, new FungibleAssetValue(Ncg, 1_000_000_000, 0), }; yield return new object[] { - new PrivateKey().ToAddress(), + new PrivateKey().Address, new FungibleAssetValue(Crystal, 0, 1), }; yield return new object[] { - new PrivateKey().ToAddress(), + new PrivateKey().Address, new FungibleAssetValue(Crystal, 1, 0), }; yield return new object[] { - new PrivateKey().ToAddress(), + new PrivateKey().Address, new FungibleAssetValue( Crystal, long.MaxValue, diff --git a/.Lib9c.Tests/Action/AccountStateDeltaExtensionsTest.cs b/.Lib9c.Tests/Action/AccountStateDeltaExtensionsTest.cs index 83fb2917c1..3c9a2756dd 100644 --- a/.Lib9c.Tests/Action/AccountStateDeltaExtensionsTest.cs +++ b/.Lib9c.Tests/Action/AccountStateDeltaExtensionsTest.cs @@ -46,7 +46,7 @@ public void SetWorldBossKillReward(int level, int expectedRune, int expectedCrys { var context = new ActionContext(); IAccount states = new Account(MockState.Empty); - var rewardInfoAddress = new PrivateKey().ToAddress(); + var rewardInfoAddress = new PrivateKey().Address; var rewardRecord = new WorldBossKillRewardRecord(); for (int i = 0; i < level; i++) { @@ -59,7 +59,7 @@ public void SetWorldBossKillReward(int level, int expectedRune, int expectedCrys var tableSheets = new TableSheets(TableSheetsImporter.ImportSheets()); var runeSheet = tableSheets.RuneSheet; var runeCurrency = RuneHelper.ToCurrency(runeSheet[10001]); - var avatarAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; var bossState = new WorldBossState( tableSheets.WorldBossListSheet[1], tableSheets.WorldBossGlobalHpSheet[1] @@ -156,7 +156,7 @@ public void SetCouponWallet() [InlineData(4)] public void Mead(int agentBalance) { - var patron = new PrivateKey().ToAddress(); + var patron = new PrivateKey().Address; var agentContractAddress = _agentAddress.GetPledgeAddress(); var mead = Currencies.Mead; var price = RequestPledge.DefaultRefillMead * mead; diff --git a/.Lib9c.Tests/Action/AccountStateViewExtensionsTest.cs b/.Lib9c.Tests/Action/AccountStateViewExtensionsTest.cs index 1b7efed0fd..7bdd6a395e 100644 --- a/.Lib9c.Tests/Action/AccountStateViewExtensionsTest.cs +++ b/.Lib9c.Tests/Action/AccountStateViewExtensionsTest.cs @@ -189,12 +189,12 @@ public void GetStatesAsDict() IAccount states = new Account(MockState.Empty); var dict = new Dictionary { - { new PrivateKey().ToAddress(), Null.Value }, - { new PrivateKey().ToAddress(), new Bencodex.Types.Boolean(false) }, - { new PrivateKey().ToAddress(), new Bencodex.Types.Boolean(true) }, - { new PrivateKey().ToAddress(), new Integer(int.MinValue) }, - { new PrivateKey().ToAddress(), new Integer(0) }, - { new PrivateKey().ToAddress(), new Integer(int.MaxValue) }, + { new PrivateKey().Address, Null.Value }, + { new PrivateKey().Address, new Bencodex.Types.Boolean(false) }, + { new PrivateKey().Address, new Bencodex.Types.Boolean(true) }, + { new PrivateKey().Address, new Integer(int.MinValue) }, + { new PrivateKey().Address, new Integer(0) }, + { new PrivateKey().Address, new Integer(int.MaxValue) }, }; foreach (var (address, value) in dict) { diff --git a/.Lib9c.Tests/Action/ActionContextExtensionsTest.cs b/.Lib9c.Tests/Action/ActionContextExtensionsTest.cs index d135eb7354..ca72c52d2b 100644 --- a/.Lib9c.Tests/Action/ActionContextExtensionsTest.cs +++ b/.Lib9c.Tests/Action/ActionContextExtensionsTest.cs @@ -39,7 +39,7 @@ public static IEnumerable IsMainNetTestcases() new GoldCurrencyState( #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - Currency.Legacy("NCG", 2, new PrivateKey().ToAddress())), + Currency.Legacy("NCG", 2, new PrivateKey().Address)), #pragma warning restore CS0618 false, }; @@ -102,7 +102,7 @@ public static IEnumerable IsPreviewNetTestcases() new GoldCurrencyState( #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - Currency.Legacy("NCG", 2, new PrivateKey().ToAddress())), + Currency.Legacy("NCG", 2, new PrivateKey().Address)), #pragma warning restore CS0618 false, }; diff --git a/.Lib9c.Tests/Action/ActionEvaluationTest.cs b/.Lib9c.Tests/Action/ActionEvaluationTest.cs index 2afb18e0a5..4b607fbb91 100644 --- a/.Lib9c.Tests/Action/ActionEvaluationTest.cs +++ b/.Lib9c.Tests/Action/ActionEvaluationTest.cs @@ -30,8 +30,8 @@ public ActionEvaluationTest() // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 _currency = Currency.Legacy("NCG", 2, null); #pragma warning restore CS0618 - _signer = new PrivateKey().ToAddress(); - _sender = new PrivateKey().ToAddress(); + _signer = new PrivateKey().Address; + _sender = new PrivateKey().Address; _states = new Account(MockState.Empty) .SetState(_signer, (Text)"ANYTHING") .SetState(default, Dictionary.Empty.Add("key", "value")) @@ -151,9 +151,9 @@ private ActionBase GetAction(Type type) RuneInfos = new List(), WorldId = 0, StageId = 0, - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, }, - ActivateAccount _ => new ActivateAccount(new PrivateKey().ToAddress(), new byte[] { 0x0 }), + ActivateAccount _ => new ActivateAccount(new PrivateKey().Address, new byte[] { 0x0 }), AddActivatedAccount _ => new AddActivatedAccount(), AddRedeemCode _ => new AddRedeemCode { @@ -161,14 +161,14 @@ private ActionBase GetAction(Type type) }, Buy _ => new Buy { - buyerAvatarAddress = new PrivateKey().ToAddress(), + buyerAvatarAddress = new PrivateKey().Address, purchaseInfos = new[] { new PurchaseInfo( Guid.NewGuid(), Guid.NewGuid(), _signer, - new PrivateKey().ToAddress(), + new PrivateKey().Address, ItemSubType.Armor, #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 @@ -220,9 +220,9 @@ private ActionBase GetAction(Type type) }, RankingBattle _ => new RankingBattle { - avatarAddress = new PrivateKey().ToAddress(), - enemyAddress = new PrivateKey().ToAddress(), - weeklyArenaAddress = new PrivateKey().ToAddress(), + avatarAddress = new PrivateKey().Address, + enemyAddress = new PrivateKey().Address, + weeklyArenaAddress = new PrivateKey().Address, costumeIds = new List(), equipmentIds = new List(), }, @@ -230,7 +230,7 @@ private ActionBase GetAction(Type type) RedeemCode _ => new RedeemCode { Code = "code", - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, }, RewardGold _ => null, Sell _ => new Sell @@ -240,7 +240,7 @@ private ActionBase GetAction(Type type) SellCancellation _ => new SellCancellation(), UpdateSell _ => new UpdateSell { - sellerAvatarAddress = new PrivateKey().ToAddress(), + sellerAvatarAddress = new PrivateKey().Address, updateSellInfos = new[] { new UpdateSellInfo( @@ -262,12 +262,12 @@ private ActionBase GetAction(Type type) }, Grinding _ => new Grinding { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, EquipmentIds = new List(), }, UnlockEquipmentRecipe _ => new UnlockEquipmentRecipe { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, RecipeIds = new List { 2, @@ -276,7 +276,7 @@ private ActionBase GetAction(Type type) }, UnlockWorld _ => new UnlockWorld { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, WorldIds = new List() { 2, @@ -303,7 +303,7 @@ private ActionBase GetAction(Type type) }, Raid _ => new Raid { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, CostumeIds = new List(), EquipmentIds = new List(), FoodIds = new List(), @@ -329,7 +329,7 @@ private ActionBase GetAction(Type type) { new RegisterInfo { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, ItemCount = 1, Price = 1 * _currency, TradableId = Guid.NewGuid(), @@ -337,7 +337,7 @@ private ActionBase GetAction(Type type) }, new AssetInfo { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, Price = 1 * _currency, Asset = 1 * RuneHelper.StakeRune, Type = ProductType.FungibleAssetValue, @@ -348,21 +348,21 @@ private ActionBase GetAction(Type type) }, ReRegisterProduct _ => new ReRegisterProduct { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, ReRegisterInfos = new List<(IProductInfo, IRegisterInfo)> { ( new ItemProductInfo { - AvatarAddress = new PrivateKey().ToAddress(), - AgentAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, + AgentAddress = new PrivateKey().Address, Price = 1 * _currency, ProductId = Guid.NewGuid(), Type = ProductType.Fungible, }, new RegisterInfo { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, ItemCount = 1, Price = 1 * _currency, TradableId = Guid.NewGuid(), @@ -372,15 +372,15 @@ private ActionBase GetAction(Type type) ( new ItemProductInfo { - AvatarAddress = new PrivateKey().ToAddress(), - AgentAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, + AgentAddress = new PrivateKey().Address, Price = 1 * _currency, ProductId = Guid.NewGuid(), Type = ProductType.NonFungible, }, new RegisterInfo { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, ItemCount = 1, Price = 1 * _currency, TradableId = Guid.NewGuid(), @@ -390,15 +390,15 @@ private ActionBase GetAction(Type type) ( new FavProductInfo { - AvatarAddress = new PrivateKey().ToAddress(), - AgentAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, + AgentAddress = new PrivateKey().Address, Price = 1 * _currency, ProductId = Guid.NewGuid(), Type = ProductType.FungibleAssetValue, }, new AssetInfo { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, Price = 1 * _currency, Asset = 1 * RuneHelper.StakeRune, Type = ProductType.FungibleAssetValue, @@ -409,13 +409,13 @@ private ActionBase GetAction(Type type) }, CancelProductRegistration _ => new CancelProductRegistration { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, ProductInfos = new List { new FavProductInfo { - AvatarAddress = new PrivateKey().ToAddress(), - AgentAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, + AgentAddress = new PrivateKey().Address, Price = 1 * _currency, ProductId = Guid.NewGuid(), Type = ProductType.FungibleAssetValue, @@ -425,13 +425,13 @@ private ActionBase GetAction(Type type) }, BuyProduct _ => new BuyProduct { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, ProductInfos = new List { new ItemProductInfo { - AvatarAddress = new PrivateKey().ToAddress(), - AgentAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, + AgentAddress = new PrivateKey().Address, Price = 1 * _currency, ProductId = Guid.NewGuid(), Type = ProductType.Fungible, @@ -442,20 +442,20 @@ private ActionBase GetAction(Type type) }, RequestPledge _ => new RequestPledge { - AgentAddress = new PrivateKey().ToAddress(), + AgentAddress = new PrivateKey().Address, }, ApprovePledge _ => new ApprovePledge { - PatronAddress = new PrivateKey().ToAddress(), + PatronAddress = new PrivateKey().Address, }, EndPledge _ => new EndPledge { - AgentAddress = new PrivateKey().ToAddress(), + AgentAddress = new PrivateKey().Address, }, CreatePledge _ => new CreatePledge { - PatronAddress = new PrivateKey().ToAddress(), - AgentAddresses = new[] { (new PrivateKey().ToAddress(), new PrivateKey().ToAddress()) }, + PatronAddress = new PrivateKey().Address, + AgentAddresses = new[] { (new PrivateKey().Address, new PrivateKey().Address) }, Mead = 4, }, TransferAssets _ => new TransferAssets(_sender, new List<(Address, FungibleAssetValue)> diff --git a/.Lib9c.Tests/Action/ApprovePledgeTest.cs b/.Lib9c.Tests/Action/ApprovePledgeTest.cs index f007c8bb24..36425c227e 100644 --- a/.Lib9c.Tests/Action/ApprovePledgeTest.cs +++ b/.Lib9c.Tests/Action/ApprovePledgeTest.cs @@ -16,8 +16,8 @@ public class ApprovePledgeTest [InlineData(100)] public void Execute(int mead) { - var address = new PrivateKey().ToAddress(); - var patron = new PrivateKey().ToAddress(); + var address = new PrivateKey().Address; + var patron = new PrivateKey().Address; var contractAddress = address.Derive(nameof(RequestPledge)); IAccount states = new Account(MockState.Empty) .SetState( @@ -47,13 +47,13 @@ public void Execute(int mead) [InlineData(false, true, typeof(AlreadyContractedException))] public void Execute_Throw_Exception(bool invalidPatron, bool alreadyContract, Type exc) { - var address = new PrivateKey().ToAddress(); - var patron = new PrivateKey().ToAddress(); + var address = new PrivateKey().Address; + var patron = new PrivateKey().Address; var contractAddress = address.Derive(nameof(RequestPledge)); IValue contract = Null.Value; if (invalidPatron) { - contract = List.Empty.Add(new PrivateKey().ToAddress().Serialize()); + contract = List.Empty.Add(new PrivateKey().Address.Serialize()); } if (alreadyContract) diff --git a/.Lib9c.Tests/Action/ArenahelperTest.cs b/.Lib9c.Tests/Action/ArenahelperTest.cs index e70881d005..4aa6ac4238 100644 --- a/.Lib9c.Tests/Action/ArenahelperTest.cs +++ b/.Lib9c.Tests/Action/ArenahelperTest.cs @@ -52,7 +52,7 @@ public ArenaHelperTest(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -89,7 +89,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena10Test.cs b/.Lib9c.Tests/Action/BattleArena10Test.cs index 9bbf5ca6f7..d44b77aed8 100644 --- a/.Lib9c.Tests/Action/BattleArena10Test.cs +++ b/.Lib9c.Tests/Action/BattleArena10Test.cs @@ -64,7 +64,7 @@ public BattleArena10Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -1068,7 +1068,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena11Test.cs b/.Lib9c.Tests/Action/BattleArena11Test.cs index 76a7849e59..f5441e588f 100644 --- a/.Lib9c.Tests/Action/BattleArena11Test.cs +++ b/.Lib9c.Tests/Action/BattleArena11Test.cs @@ -64,7 +64,7 @@ public BattleArena11Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -1068,7 +1068,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena12Test.cs b/.Lib9c.Tests/Action/BattleArena12Test.cs index 151753f012..3061b5f790 100644 --- a/.Lib9c.Tests/Action/BattleArena12Test.cs +++ b/.Lib9c.Tests/Action/BattleArena12Test.cs @@ -64,7 +64,7 @@ public BattleArena12Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -1107,7 +1107,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena13Test.cs b/.Lib9c.Tests/Action/BattleArena13Test.cs index 9c98b560a7..37ca76d60d 100644 --- a/.Lib9c.Tests/Action/BattleArena13Test.cs +++ b/.Lib9c.Tests/Action/BattleArena13Test.cs @@ -64,7 +64,7 @@ public BattleArena13Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -1068,7 +1068,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena14Test.cs b/.Lib9c.Tests/Action/BattleArena14Test.cs index 19d47c513c..2f80c4a071 100644 --- a/.Lib9c.Tests/Action/BattleArena14Test.cs +++ b/.Lib9c.Tests/Action/BattleArena14Test.cs @@ -64,7 +64,7 @@ public BattleArena14Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -1043,7 +1043,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena1Test.cs b/.Lib9c.Tests/Action/BattleArena1Test.cs index c1f9bc277c..391e8d9cc0 100644 --- a/.Lib9c.Tests/Action/BattleArena1Test.cs +++ b/.Lib9c.Tests/Action/BattleArena1Test.cs @@ -64,7 +64,7 @@ public BattleArena1Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -139,7 +139,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena2Test.cs b/.Lib9c.Tests/Action/BattleArena2Test.cs index a9c5a9fe96..601e9748a9 100644 --- a/.Lib9c.Tests/Action/BattleArena2Test.cs +++ b/.Lib9c.Tests/Action/BattleArena2Test.cs @@ -66,7 +66,7 @@ public BattleArena2Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -143,7 +143,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena3Test.cs b/.Lib9c.Tests/Action/BattleArena3Test.cs index 8b17bc5fa5..a1f844053f 100644 --- a/.Lib9c.Tests/Action/BattleArena3Test.cs +++ b/.Lib9c.Tests/Action/BattleArena3Test.cs @@ -66,7 +66,7 @@ public BattleArena3Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -143,7 +143,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena4Test.cs b/.Lib9c.Tests/Action/BattleArena4Test.cs index c49f29830b..ce71aa91ae 100644 --- a/.Lib9c.Tests/Action/BattleArena4Test.cs +++ b/.Lib9c.Tests/Action/BattleArena4Test.cs @@ -66,7 +66,7 @@ public BattleArena4Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -143,7 +143,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena5Test.cs b/.Lib9c.Tests/Action/BattleArena5Test.cs index f30765fae8..2cf996f50a 100644 --- a/.Lib9c.Tests/Action/BattleArena5Test.cs +++ b/.Lib9c.Tests/Action/BattleArena5Test.cs @@ -62,7 +62,7 @@ public BattleArena5Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -762,7 +762,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena6Test.cs b/.Lib9c.Tests/Action/BattleArena6Test.cs index 59ccc0d8ae..41ee8306ae 100644 --- a/.Lib9c.Tests/Action/BattleArena6Test.cs +++ b/.Lib9c.Tests/Action/BattleArena6Test.cs @@ -64,7 +64,7 @@ public BattleArena6Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -848,7 +848,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena7Test.cs b/.Lib9c.Tests/Action/BattleArena7Test.cs index 2847662dcd..f1e6b41d2b 100644 --- a/.Lib9c.Tests/Action/BattleArena7Test.cs +++ b/.Lib9c.Tests/Action/BattleArena7Test.cs @@ -63,7 +63,7 @@ public BattleArena7Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -860,7 +860,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena8Test.cs b/.Lib9c.Tests/Action/BattleArena8Test.cs index 3814ffddcb..56fe5f5532 100644 --- a/.Lib9c.Tests/Action/BattleArena8Test.cs +++ b/.Lib9c.Tests/Action/BattleArena8Test.cs @@ -64,7 +64,7 @@ public BattleArena8Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -1068,7 +1068,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArena9Test.cs b/.Lib9c.Tests/Action/BattleArena9Test.cs index ab3554db6c..b840f76f5a 100644 --- a/.Lib9c.Tests/Action/BattleArena9Test.cs +++ b/.Lib9c.Tests/Action/BattleArena9Test.cs @@ -64,7 +64,7 @@ public BattleArena9Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -1068,7 +1068,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleArenaTest.cs b/.Lib9c.Tests/Action/BattleArenaTest.cs index b224178b16..693a0a42c2 100644 --- a/.Lib9c.Tests/Action/BattleArenaTest.cs +++ b/.Lib9c.Tests/Action/BattleArenaTest.cs @@ -64,7 +64,7 @@ public BattleArenaTest(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -1043,7 +1043,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleGrandFinale1Test.cs b/.Lib9c.Tests/Action/BattleGrandFinale1Test.cs index 78cea9a9ac..d1c808f920 100644 --- a/.Lib9c.Tests/Action/BattleGrandFinale1Test.cs +++ b/.Lib9c.Tests/Action/BattleGrandFinale1Test.cs @@ -62,7 +62,7 @@ public BattleGrandFinale1Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -319,14 +319,14 @@ public void Execute_AddressNotFoundInArenaParticipantsException(bool excludeMe) var (tempAgent, tempAvatar) = GetAgentStateWithAvatarState( _sheets, _tableSheets, - new PrivateKey().ToAddress(), + new PrivateKey().Address, 1); var myAvatar = excludeMe ? previousStates.GetAvatarStateV2(_avatar1Address) : tempAvatar; var (enemyAgent, enemyAvatar) = GetAgentStateWithAvatarState( _sheets, _tableSheets, - new PrivateKey().ToAddress(), + new PrivateKey().Address, 1); previousStates = previousStates .SetState(tempAgent.address, tempAgent.Serialize()) @@ -359,7 +359,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleGrandFinale2Test.cs b/.Lib9c.Tests/Action/BattleGrandFinale2Test.cs index 1469c463bd..2f3f133e14 100644 --- a/.Lib9c.Tests/Action/BattleGrandFinale2Test.cs +++ b/.Lib9c.Tests/Action/BattleGrandFinale2Test.cs @@ -62,7 +62,7 @@ public BattleGrandFinale2Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -319,14 +319,14 @@ public void Execute_AddressNotFoundInArenaParticipantsException(bool excludeMe) var (tempAgent, tempAvatar) = GetAgentStateWithAvatarState( _sheets, _tableSheets, - new PrivateKey().ToAddress(), + new PrivateKey().Address, 1); var myAvatar = excludeMe ? previousStates.GetAvatarStateV2(_avatar1Address) : tempAvatar; var (enemyAgent, enemyAvatar) = GetAgentStateWithAvatarState( _sheets, _tableSheets, - new PrivateKey().ToAddress(), + new PrivateKey().Address, 1); previousStates = previousStates .SetState(tempAgent.address, tempAgent.Serialize()) @@ -359,7 +359,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BattleGrandFinale3Test.cs b/.Lib9c.Tests/Action/BattleGrandFinale3Test.cs index 86a0006202..0d68957a50 100644 --- a/.Lib9c.Tests/Action/BattleGrandFinale3Test.cs +++ b/.Lib9c.Tests/Action/BattleGrandFinale3Test.cs @@ -62,7 +62,7 @@ public BattleGrandFinale3Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(ncg); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -319,14 +319,14 @@ public void Execute_AddressNotFoundInArenaParticipantsException(bool excludeMe) var (tempAgent, tempAvatar) = GetAgentStateWithAvatarState( _sheets, _tableSheets, - new PrivateKey().ToAddress(), + new PrivateKey().Address, 1); var myAvatar = excludeMe ? previousStates.GetAvatarStateV2(_avatar1Address) : tempAvatar; var (enemyAgent, enemyAvatar) = GetAgentStateWithAvatarState( _sheets, _tableSheets, - new PrivateKey().ToAddress(), + new PrivateKey().Address, 1); previousStates = previousStates .SetState(tempAgent.address, tempAgent.Serialize()) @@ -359,7 +359,7 @@ private static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWit Address rankingMapAddress, int clearStageId) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/BurnAssetTest.cs b/.Lib9c.Tests/Action/BurnAssetTest.cs index 40d3f8a86b..375765b390 100644 --- a/.Lib9c.Tests/Action/BurnAssetTest.cs +++ b/.Lib9c.Tests/Action/BurnAssetTest.cs @@ -17,7 +17,7 @@ public class BurnAssetTest public BurnAssetTest() { - _signer = new PrivateKey().ToAddress(); + _signer = new PrivateKey().Address; _prevState = new Account( MockState.Empty .SetBalance(_signer, Currencies.Crystal * 100) diff --git a/.Lib9c.Tests/Action/Buy10Test.cs b/.Lib9c.Tests/Action/Buy10Test.cs index bddb360d9d..81fcac1da2 100644 --- a/.Lib9c.Tests/Action/Buy10Test.cs +++ b/.Lib9c.Tests/Action/Buy10Test.cs @@ -60,10 +60,10 @@ public Buy10Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var sellerAgentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( _sellerAvatarAddress, _sellerAgentAddress, @@ -79,9 +79,9 @@ public Buy10Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = _sellerAvatarAddress; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, @@ -117,8 +117,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 10, ItemCount = 1, @@ -128,8 +128,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 20, ItemCount = 1, @@ -142,8 +142,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 1, @@ -153,8 +153,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -167,8 +167,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -178,8 +178,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 2, @@ -196,8 +196,8 @@ public static IEnumerable GetReconfigureFungibleItemMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 50, @@ -207,8 +207,8 @@ public static IEnumerable GetReconfigureFungibleItemMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex + 1, Price = 10, ItemCount = 60, @@ -886,7 +886,7 @@ public void Execute_With_Testbed() Address agentAddress, Address avatarAddress) { var agentState = new AgentState(agentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, diff --git a/.Lib9c.Tests/Action/Buy11Test.cs b/.Lib9c.Tests/Action/Buy11Test.cs index 30e0275d23..05e9f25362 100644 --- a/.Lib9c.Tests/Action/Buy11Test.cs +++ b/.Lib9c.Tests/Action/Buy11Test.cs @@ -62,10 +62,10 @@ public Buy11Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var sellerAgentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( _sellerAvatarAddress, _sellerAgentAddress, @@ -81,9 +81,9 @@ public Buy11Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = _sellerAvatarAddress; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, @@ -123,8 +123,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 10, ItemCount = 1, @@ -134,8 +134,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 20, ItemCount = 1, @@ -148,8 +148,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 1, @@ -159,8 +159,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -173,8 +173,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -184,8 +184,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 2, @@ -202,8 +202,8 @@ public static IEnumerable GetReconfigureFungibleItemMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 50, @@ -213,8 +213,8 @@ public static IEnumerable GetReconfigureFungibleItemMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex + 1, Price = 10, ItemCount = 60, @@ -943,7 +943,7 @@ public void Execute_ActionObsoletedException() Address agentAddress, Address avatarAddress) { var agentState = new AgentState(agentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, diff --git a/.Lib9c.Tests/Action/Buy2Test.cs b/.Lib9c.Tests/Action/Buy2Test.cs index da5b9ea375..49c4908953 100644 --- a/.Lib9c.Tests/Action/Buy2Test.cs +++ b/.Lib9c.Tests/Action/Buy2Test.cs @@ -51,10 +51,10 @@ public Buy2Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var sellerAgentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( _sellerAvatarAddress, _sellerAgentAddress, @@ -70,9 +70,9 @@ public Buy2Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = _sellerAvatarAddress; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, diff --git a/.Lib9c.Tests/Action/Buy3Test.cs b/.Lib9c.Tests/Action/Buy3Test.cs index d6b72c532b..e7b0af1009 100644 --- a/.Lib9c.Tests/Action/Buy3Test.cs +++ b/.Lib9c.Tests/Action/Buy3Test.cs @@ -51,10 +51,10 @@ public Buy3Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var sellerAgentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( _sellerAvatarAddress, _sellerAgentAddress, @@ -70,9 +70,9 @@ public Buy3Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = _sellerAvatarAddress; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, diff --git a/.Lib9c.Tests/Action/Buy4Test.cs b/.Lib9c.Tests/Action/Buy4Test.cs index 072ece0228..6c6d43cb2b 100644 --- a/.Lib9c.Tests/Action/Buy4Test.cs +++ b/.Lib9c.Tests/Action/Buy4Test.cs @@ -53,10 +53,10 @@ public Buy4Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var sellerAgentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( _sellerAvatarAddress, _sellerAgentAddress, @@ -72,9 +72,9 @@ public Buy4Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = _sellerAvatarAddress; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, diff --git a/.Lib9c.Tests/Action/Buy5Test.cs b/.Lib9c.Tests/Action/Buy5Test.cs index f17caa6b54..b6046fb124 100644 --- a/.Lib9c.Tests/Action/Buy5Test.cs +++ b/.Lib9c.Tests/Action/Buy5Test.cs @@ -54,10 +54,10 @@ public Buy5Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var sellerAgentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( _sellerAvatarAddress, _sellerAgentAddress, @@ -73,9 +73,9 @@ public Buy5Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = _sellerAvatarAddress; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, @@ -110,8 +110,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 10, ContainsInInventory = true, @@ -120,8 +120,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 20, ContainsInInventory = false, @@ -133,8 +133,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ContainsInInventory = false, @@ -143,8 +143,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ContainsInInventory = true, @@ -596,7 +596,7 @@ public void Execute_ErrorCode_ShopItemExpired() Address agentAddress, Address avatarAddress) { var agentState = new AgentState(agentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, diff --git a/.Lib9c.Tests/Action/Buy6Test.cs b/.Lib9c.Tests/Action/Buy6Test.cs index 79507ddd07..50b8acfc0a 100644 --- a/.Lib9c.Tests/Action/Buy6Test.cs +++ b/.Lib9c.Tests/Action/Buy6Test.cs @@ -55,10 +55,10 @@ public Buy6Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var sellerAgentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( _sellerAvatarAddress, _sellerAgentAddress, @@ -74,9 +74,9 @@ public Buy6Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = _sellerAvatarAddress; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, @@ -112,8 +112,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 10, ContainsInInventory = true, @@ -124,8 +124,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 20, ContainsInInventory = false, @@ -139,8 +139,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ContainsInInventory = false, @@ -151,8 +151,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ContainsInInventory = true, @@ -166,8 +166,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, ItemId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ContainsInInventory = true, @@ -178,8 +178,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, ItemId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ContainsInInventory = true, @@ -752,7 +752,7 @@ public void Execute_ErrorCode_ShopItemExpired() Address agentAddress, Address avatarAddress) { var agentState = new AgentState(agentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, diff --git a/.Lib9c.Tests/Action/Buy7Test.cs b/.Lib9c.Tests/Action/Buy7Test.cs index dc5468be03..8d217b8844 100644 --- a/.Lib9c.Tests/Action/Buy7Test.cs +++ b/.Lib9c.Tests/Action/Buy7Test.cs @@ -55,10 +55,10 @@ public Buy7Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var sellerAgentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( _sellerAvatarAddress, _sellerAgentAddress, @@ -74,9 +74,9 @@ public Buy7Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = _sellerAvatarAddress; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, @@ -112,8 +112,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 10, ContainsInInventory = true, @@ -124,8 +124,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 20, ContainsInInventory = false, @@ -139,8 +139,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ContainsInInventory = false, @@ -151,8 +151,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ContainsInInventory = true, @@ -166,8 +166,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, ItemId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ContainsInInventory = true, @@ -178,8 +178,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, ItemId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), ProductId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ContainsInInventory = true, @@ -884,7 +884,7 @@ public void Execute_ErrorCode_InvalidPrice(int shopPrice, int price) Address agentAddress, Address avatarAddress) { var agentState = new AgentState(agentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, diff --git a/.Lib9c.Tests/Action/Buy8Test.cs b/.Lib9c.Tests/Action/Buy8Test.cs index f5f899e048..adb939bcaf 100644 --- a/.Lib9c.Tests/Action/Buy8Test.cs +++ b/.Lib9c.Tests/Action/Buy8Test.cs @@ -57,10 +57,10 @@ public Buy8Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var sellerAgentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( _sellerAvatarAddress, _sellerAgentAddress, @@ -76,9 +76,9 @@ public Buy8Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = _sellerAvatarAddress; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, @@ -114,8 +114,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 10, ItemCount = 1, @@ -125,8 +125,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 20, ItemCount = 1, @@ -139,8 +139,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 1, @@ -150,8 +150,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -164,8 +164,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -175,8 +175,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 2, @@ -553,7 +553,7 @@ public void Execute_ErrorCode(ErrorCodeMember errorCodeMember) Address agentAddress, Address avatarAddress) { var agentState = new AgentState(agentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, diff --git a/.Lib9c.Tests/Action/Buy9Test.cs b/.Lib9c.Tests/Action/Buy9Test.cs index 5f8b67d0aa..529f8be3c5 100644 --- a/.Lib9c.Tests/Action/Buy9Test.cs +++ b/.Lib9c.Tests/Action/Buy9Test.cs @@ -57,10 +57,10 @@ public Buy9Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var sellerAgentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( _sellerAvatarAddress, _sellerAgentAddress, @@ -76,9 +76,9 @@ public Buy9Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = _sellerAvatarAddress; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, @@ -114,8 +114,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 10, ItemCount = 1, @@ -126,8 +126,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 20, ItemCount = 1, @@ -141,8 +141,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 1, @@ -153,8 +153,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -168,8 +168,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -180,8 +180,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 2, @@ -195,8 +195,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 10, ItemCount = 1, @@ -207,8 +207,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 20, ItemCount = 1, @@ -222,8 +222,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 1, @@ -234,8 +234,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -249,8 +249,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -261,8 +261,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 2, @@ -652,7 +652,7 @@ public void Execute_ErrorCode(ErrorCodeMember errorCodeMember) Address agentAddress, Address avatarAddress) { var agentState = new AgentState(agentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, diff --git a/.Lib9c.Tests/Action/BuyMultipleTest.cs b/.Lib9c.Tests/Action/BuyMultipleTest.cs index 83f9da09f9..ae0ae60403 100644 --- a/.Lib9c.Tests/Action/BuyMultipleTest.cs +++ b/.Lib9c.Tests/Action/BuyMultipleTest.cs @@ -52,10 +52,10 @@ public BuyMultipleTest(ITestOutputHelper outputHelper) _sellerAgentStateMap = new Dictionary(); - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, @@ -89,8 +89,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Buy = true, Price = 10, @@ -100,8 +100,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Buy = false, Price = 20, @@ -111,8 +111,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Buy = true, Price = 30, @@ -125,8 +125,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Buy = false, Price = 10, @@ -136,8 +136,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Buy = false, Price = 50, @@ -147,8 +147,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Buy = false, Price = 30, @@ -161,8 +161,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Buy = true, Price = 20, @@ -172,8 +172,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Buy = true, Price = 50, @@ -183,8 +183,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Buy = true, Price = 30, @@ -197,8 +197,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Buy = true, Price = 30, @@ -208,8 +208,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Costume, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Buy = true, Price = 30, @@ -219,8 +219,8 @@ public static IEnumerable GetExecuteMemberData() { ItemType = ItemType.Equipment, ItemId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Buy = true, Price = 30, @@ -489,8 +489,8 @@ public void ExecuteInsufficientBalanceError() { var shopState = _initialState.GetShopState(); - var sellerAvatarAddress = new PrivateKey().ToAddress(); - var sellerAgentAddress = new PrivateKey().ToAddress(); + var sellerAvatarAddress = new PrivateKey().Address; + var sellerAgentAddress = new PrivateKey().Address; var (avatarState, agentState) = CreateAvatarState(sellerAgentAddress, sellerAvatarAddress); var equipment = ItemFactory.CreateItemUsable( @@ -555,8 +555,8 @@ public void ExecuteInsufficientBalanceError() [Fact] public void ExecuteThrowShopItemExpiredError() { - var sellerAvatarAddress = new PrivateKey().ToAddress(); - var sellerAgentAddress = new PrivateKey().ToAddress(); + var sellerAvatarAddress = new PrivateKey().Address; + var sellerAgentAddress = new PrivateKey().Address; var (avatarState, agentState) = CreateAvatarState(sellerAgentAddress, sellerAvatarAddress); IAccount previousStates = _initialState; @@ -610,7 +610,7 @@ public void ExecuteThrowShopItemExpiredError() Address agentAddress, Address avatarAddress) { var agentState = new AgentState(agentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, diff --git a/.Lib9c.Tests/Action/BuyProduct0Test.cs b/.Lib9c.Tests/Action/BuyProduct0Test.cs index 34332a3a86..c752c0b80c 100644 --- a/.Lib9c.Tests/Action/BuyProduct0Test.cs +++ b/.Lib9c.Tests/Action/BuyProduct0Test.cs @@ -59,7 +59,7 @@ public BuyProduct0Test(ITestOutputHelper outputHelper) _goldCurrencyState = new GoldCurrencyState(Gold); var sellerAgentState = new AgentState(SellerAgentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( SellerAvatarAddress, SellerAgentAddress, @@ -75,9 +75,9 @@ public BuyProduct0Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = SellerAvatarAddress; - _sellerAgentAddress2 = new PrivateKey().ToAddress(); + _sellerAgentAddress2 = new PrivateKey().Address; var agentState2 = new AgentState(_sellerAgentAddress2); - _sellerAvatarAddress2 = new PrivateKey().ToAddress(); + _sellerAvatarAddress2 = new PrivateKey().Address; var sellerAvatarState2 = new AvatarState( _sellerAvatarAddress2, _sellerAgentAddress2, diff --git a/.Lib9c.Tests/Action/BuyProduct2Test.cs b/.Lib9c.Tests/Action/BuyProduct2Test.cs index 55475d8d99..c2f5d97978 100644 --- a/.Lib9c.Tests/Action/BuyProduct2Test.cs +++ b/.Lib9c.Tests/Action/BuyProduct2Test.cs @@ -59,7 +59,7 @@ public BuyProduct2Test(ITestOutputHelper outputHelper) _goldCurrencyState = new GoldCurrencyState(Gold); var sellerAgentState = new AgentState(SellerAgentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( SellerAvatarAddress, SellerAgentAddress, @@ -75,9 +75,9 @@ public BuyProduct2Test(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = SellerAvatarAddress; - _sellerAgentAddress2 = new PrivateKey().ToAddress(); + _sellerAgentAddress2 = new PrivateKey().Address; var agentState2 = new AgentState(_sellerAgentAddress2); - _sellerAvatarAddress2 = new PrivateKey().ToAddress(); + _sellerAvatarAddress2 = new PrivateKey().Address; var sellerAvatarState2 = new AvatarState( _sellerAvatarAddress2, _sellerAgentAddress2, diff --git a/.Lib9c.Tests/Action/BuyTest.cs b/.Lib9c.Tests/Action/BuyTest.cs index fb6b6a14e6..f278551004 100644 --- a/.Lib9c.Tests/Action/BuyTest.cs +++ b/.Lib9c.Tests/Action/BuyTest.cs @@ -60,10 +60,10 @@ public BuyTest(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var sellerAgentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var sellerAvatarState = new AvatarState( _sellerAvatarAddress, _sellerAgentAddress, @@ -79,9 +79,9 @@ public BuyTest(ITestOutputHelper outputHelper) }; sellerAgentState.avatarAddresses[0] = _sellerAvatarAddress; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var buyerAgentState = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; _buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, @@ -117,8 +117,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 10, ItemCount = 1, @@ -128,8 +128,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 20, ItemCount = 1, @@ -142,8 +142,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Costume, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 1, @@ -153,8 +153,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Equipment, TradableId = Guid.NewGuid(), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -167,8 +167,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 1, @@ -178,8 +178,8 @@ public static IEnumerable GetExecuteMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = 0, Price = 10, ItemCount = 2, @@ -196,8 +196,8 @@ public static IEnumerable GetReconfigureFungibleItemMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex, Price = 50, ItemCount = 50, @@ -207,8 +207,8 @@ public static IEnumerable GetReconfigureFungibleItemMemberData() ItemType = ItemType.Material, TradableId = new Guid("15396359-04db-68d5-f24a-d89c18665900"), OrderId = Guid.NewGuid(), - SellerAgentAddress = new PrivateKey().ToAddress(), - SellerAvatarAddress = new PrivateKey().ToAddress(), + SellerAgentAddress = new PrivateKey().Address, + SellerAvatarAddress = new PrivateKey().Address, RequiredBlockIndex = Sell6.ExpiredBlockIndex + 1, Price = 10, ItemCount = 60, @@ -963,7 +963,7 @@ public void Execute_With_Testbed() Address agentAddress, Address avatarAddress) { var agentState = new AgentState(agentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, diff --git a/.Lib9c.Tests/Action/CancelMonsterCollectTest.cs b/.Lib9c.Tests/Action/CancelMonsterCollectTest.cs index 57a557c04c..8c7a32dca5 100644 --- a/.Lib9c.Tests/Action/CancelMonsterCollectTest.cs +++ b/.Lib9c.Tests/Action/CancelMonsterCollectTest.cs @@ -107,7 +107,7 @@ public void Execute_Throw_FailedLoadStateException_AgentState() Assert.Throws(() => action.Execute(new ActionContext { PreviousState = _state, - Signer = new PrivateKey().ToAddress(), + Signer = new PrivateKey().Address, BlockIndex = 0, }) ); diff --git a/.Lib9c.Tests/Action/CancelProductRegistration0Test.cs b/.Lib9c.Tests/Action/CancelProductRegistration0Test.cs index 082c1513bc..72a8b82d58 100644 --- a/.Lib9c.Tests/Action/CancelProductRegistration0Test.cs +++ b/.Lib9c.Tests/Action/CancelProductRegistration0Test.cs @@ -49,11 +49,11 @@ public CancelProductRegistration0Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; _gameConfigState = new GameConfigState((Text)_tableSheets.GameConfigSheet.Serialize()); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, @@ -101,10 +101,10 @@ bool invalidAgentAddress new ItemProductInfo { AvatarAddress = invalidAvatarAddress - ? new PrivateKey().ToAddress() + ? new PrivateKey().Address : _avatarAddress, AgentAddress = invalidAgentAddress - ? new PrivateKey().ToAddress() + ? new PrivateKey().Address : _agentAddress, Legacy = false, Price = 1 * _goldCurrencyState.Currency, diff --git a/.Lib9c.Tests/Action/ChargeActionPoint0Test.cs b/.Lib9c.Tests/Action/ChargeActionPoint0Test.cs index 7d95a4c606..127d0bac40 100644 --- a/.Lib9c.Tests/Action/ChargeActionPoint0Test.cs +++ b/.Lib9c.Tests/Action/ChargeActionPoint0Test.cs @@ -27,7 +27,7 @@ public ChargeActionPoint0Test() public void Execute() { var privateKey = new PrivateKey(); - var agentAddress = privateKey.PublicKey.ToAddress(); + var agentAddress = privateKey.PublicKey.Address; var agent = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ChargeActionPoint2Test.cs b/.Lib9c.Tests/Action/ChargeActionPoint2Test.cs index f15b2ab401..1e5c70a716 100644 --- a/.Lib9c.Tests/Action/ChargeActionPoint2Test.cs +++ b/.Lib9c.Tests/Action/ChargeActionPoint2Test.cs @@ -25,7 +25,7 @@ public ChargeActionPoint2Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agent = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ChargeActionPointTest.cs b/.Lib9c.Tests/Action/ChargeActionPointTest.cs index 7a78f06e33..958db11d13 100644 --- a/.Lib9c.Tests/Action/ChargeActionPointTest.cs +++ b/.Lib9c.Tests/Action/ChargeActionPointTest.cs @@ -28,7 +28,7 @@ public ChargeActionPointTest() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agent = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ClaimItemsTest.cs b/.Lib9c.Tests/Action/ClaimItemsTest.cs index 73ce1c4c23..4c9735ba37 100644 --- a/.Lib9c.Tests/Action/ClaimItemsTest.cs +++ b/.Lib9c.Tests/Action/ClaimItemsTest.cs @@ -58,7 +58,7 @@ public ClaimItemsTest(ITestOutputHelper outputHelper) } } - _signerAddress = new PrivateKey().ToAddress(); + _signerAddress = new PrivateKey().Address; var context = new ActionContext(); _initialState = _initialState @@ -306,7 +306,7 @@ public void Execute_WithIncorrectClaimData() var fungibleAssetValues = _itemCurrencies.Select(currency => currency * 1).ToList(); var action = new ClaimItems(Enumerable.Repeat(0, 101) - .Select(_ => (new PrivateKey().ToAddress(), + .Select(_ => (new PrivateKey().Address, (IReadOnlyList)fungibleAssetValues)) .ToImmutableList()); @@ -322,10 +322,10 @@ public void Execute_WithIncorrectClaimData() private IAccount GenerateAvatar(IAccount state, out Address avatarAddress, out Address agentAddress) { - agentAddress = new PrivateKey().ToAddress(); + agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); avatarAddress = agentAddress.Derive("avatar"); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, agentAddress, diff --git a/.Lib9c.Tests/Action/ClaimMonsterCollectionReward0Test.cs b/.Lib9c.Tests/Action/ClaimMonsterCollectionReward0Test.cs index 24d5fe07ef..606074798a 100644 --- a/.Lib9c.Tests/Action/ClaimMonsterCollectionReward0Test.cs +++ b/.Lib9c.Tests/Action/ClaimMonsterCollectionReward0Test.cs @@ -27,7 +27,7 @@ public ClaimMonsterCollectionReward0Test() _state = new Account(MockState.Empty); Dictionary sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var agentState = new AgentState(_signer); var avatarState = new AvatarState( _avatarAddress, @@ -195,7 +195,7 @@ public void Execute_Throw_FailedLoadStateException_AgentState() Assert.Throws(() => action.Execute(new ActionContext { PreviousState = _state, - Signer = new PrivateKey().ToAddress(), + Signer = new PrivateKey().Address, BlockIndex = 0, }) ); diff --git a/.Lib9c.Tests/Action/ClaimMonsterCollectionReward2Test.cs b/.Lib9c.Tests/Action/ClaimMonsterCollectionReward2Test.cs index 84de887a55..5f516665cf 100644 --- a/.Lib9c.Tests/Action/ClaimMonsterCollectionReward2Test.cs +++ b/.Lib9c.Tests/Action/ClaimMonsterCollectionReward2Test.cs @@ -38,7 +38,7 @@ public ClaimMonsterCollectionReward2Test(ITestOutputHelper outputHelper) _state = new Account(MockState.Empty); Dictionary sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var agentState = new AgentState(_signer); var avatarState = new AvatarState( _avatarAddress, @@ -156,7 +156,7 @@ public void Execute_Throw_FailedLoadStateException_AgentState() Assert.Throws(() => action.Execute(new ActionContext { PreviousState = _state, - Signer = new PrivateKey().ToAddress(), + Signer = new PrivateKey().Address, BlockIndex = 0, }) ); diff --git a/.Lib9c.Tests/Action/ClaimMonsterCollectionRewardTest.cs b/.Lib9c.Tests/Action/ClaimMonsterCollectionRewardTest.cs index 69a0eee019..91a4bb9e10 100644 --- a/.Lib9c.Tests/Action/ClaimMonsterCollectionRewardTest.cs +++ b/.Lib9c.Tests/Action/ClaimMonsterCollectionRewardTest.cs @@ -38,7 +38,7 @@ public ClaimMonsterCollectionRewardTest(ITestOutputHelper outputHelper) _state = new Account(MockState.Empty); Dictionary sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var agentState = new AgentState(_signer); var avatarState = new AvatarState( _avatarAddress, @@ -148,7 +148,7 @@ public void Execute_Throw_FailedLoadStateException_AgentState() Assert.Throws(() => _action.Execute(new ActionContext { PreviousState = _state, - Signer = new PrivateKey().ToAddress(), + Signer = new PrivateKey().Address, BlockIndex = 0, }) ); diff --git a/.Lib9c.Tests/Action/ClaimRaidRewardTest.cs b/.Lib9c.Tests/Action/ClaimRaidRewardTest.cs index 08991622bb..9524901d18 100644 --- a/.Lib9c.Tests/Action/ClaimRaidRewardTest.cs +++ b/.Lib9c.Tests/Action/ClaimRaidRewardTest.cs @@ -42,7 +42,7 @@ public ClaimRaidRewardTest() public void Execute(Type exc, int rank, int latestRank) { Address agentAddress = default; - Address avatarAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; var bossRow = _tableSheets.WorldBossListSheet.OrderedList.First(); var raiderAddress = Addresses.GetRaiderAddress(avatarAddress, bossRow.Id); var highScore = 0; diff --git a/.Lib9c.Tests/Action/ClaimStakeReward1Test.cs b/.Lib9c.Tests/Action/ClaimStakeReward1Test.cs index 2500c1eeb2..67e40ac78c 100644 --- a/.Lib9c.Tests/Action/ClaimStakeReward1Test.cs +++ b/.Lib9c.Tests/Action/ClaimStakeReward1Test.cs @@ -49,10 +49,10 @@ public ClaimStakeReward1Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(_currency); - _signerAddress = new PrivateKey().ToAddress(); + _signerAddress = new PrivateKey().Address; var stakeStateAddress = StakeState.DeriveAddress(_signerAddress); var agentState = new AgentState(_signerAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; var rankingMapAddress = _avatarAddress.Derive("ranking_map"); agentState.avatarAddresses.Add(0, _avatarAddress); var avatarState = new AvatarState( diff --git a/.Lib9c.Tests/Action/ClaimStakeReward2Test.cs b/.Lib9c.Tests/Action/ClaimStakeReward2Test.cs index 8c128aa0f3..3801ccf9c2 100644 --- a/.Lib9c.Tests/Action/ClaimStakeReward2Test.cs +++ b/.Lib9c.Tests/Action/ClaimStakeReward2Test.cs @@ -50,7 +50,7 @@ public ClaimStakeReward2Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(_currency); - _signerAddress = new PrivateKey().ToAddress(); + _signerAddress = new PrivateKey().Address; var stakeStateAddress = StakeState.DeriveAddress(_signerAddress); var agentState = new AgentState(_signerAddress); _avatarAddress = _signerAddress.Derive("0"); @@ -61,7 +61,7 @@ public ClaimStakeReward2Test(ITestOutputHelper outputHelper) 0, _tableSheets.GetAvatarSheets(), new GameConfigState(sheets[nameof(GameConfigSheet)]), - new PrivateKey().ToAddress() + new PrivateKey().Address ) { level = 100, @@ -75,7 +75,7 @@ public ClaimStakeReward2Test(ITestOutputHelper outputHelper) 0, _tableSheets.GetAvatarSheets(), new GameConfigState(sheets[nameof(GameConfigSheet)]), - new PrivateKey().ToAddress() + new PrivateKey().Address ) { level = 100, diff --git a/.Lib9c.Tests/Action/ClaimWorldBossKillRewardTest.cs b/.Lib9c.Tests/Action/ClaimWorldBossKillRewardTest.cs index 2ff1ad2c1f..0bf1175343 100644 --- a/.Lib9c.Tests/Action/ClaimWorldBossKillRewardTest.cs +++ b/.Lib9c.Tests/Action/ClaimWorldBossKillRewardTest.cs @@ -24,8 +24,8 @@ public void Execute(long blockIndex, Type exc) { var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); - Address agentAddress = new PrivateKey().ToAddress(); - Address avatarAddress = new PrivateKey().ToAddress(); + Address agentAddress = new PrivateKey().Address; + Address avatarAddress = new PrivateKey().Address; IAccount state = new Account(MockState.Empty); var runeWeightSheet = new RuneWeightSheet(); diff --git a/.Lib9c.Tests/Action/CombinationConsumable8Test.cs b/.Lib9c.Tests/Action/CombinationConsumable8Test.cs index 286a481c47..90fc3bb85d 100644 --- a/.Lib9c.Tests/Action/CombinationConsumable8Test.cs +++ b/.Lib9c.Tests/Action/CombinationConsumable8Test.cs @@ -25,7 +25,7 @@ public class CombinationConsumable8Test public CombinationConsumable8Test() { - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var slotAddress = _avatarAddress.Derive( string.Format( diff --git a/.Lib9c.Tests/Action/CombinationEquipment10Test.cs b/.Lib9c.Tests/Action/CombinationEquipment10Test.cs index b354f207bc..f5be8578f9 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment10Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment10Test.cs @@ -38,7 +38,7 @@ public CombinationEquipment10Test(ITestOutputHelper outputHelper) .WriteTo.TestOutput(outputHelper) .CreateLogger(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var slotAddress = _avatarAddress.Derive( string.Format( diff --git a/.Lib9c.Tests/Action/CombinationEquipment11Test.cs b/.Lib9c.Tests/Action/CombinationEquipment11Test.cs index ce86353acf..257f911221 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment11Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment11Test.cs @@ -40,7 +40,7 @@ public CombinationEquipment11Test(ITestOutputHelper outputHelper) .WriteTo.TestOutput(outputHelper) .CreateLogger(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var slotAddress = _avatarAddress.Derive( string.Format( diff --git a/.Lib9c.Tests/Action/CombinationEquipment12Test.cs b/.Lib9c.Tests/Action/CombinationEquipment12Test.cs index 968fe2ca30..5b9b03be8d 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment12Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment12Test.cs @@ -47,7 +47,7 @@ public CombinationEquipment12Test(ITestOutputHelper outputHelper) .WriteTo.TestOutput(outputHelper) .CreateLogger(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); _slotAddress = _avatarAddress.Derive( string.Format( diff --git a/.Lib9c.Tests/Action/CombinationEquipment13Test.cs b/.Lib9c.Tests/Action/CombinationEquipment13Test.cs index ff13d235fc..0628f49368 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment13Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment13Test.cs @@ -43,7 +43,7 @@ public CombinationEquipment13Test(ITestOutputHelper outputHelper) .WriteTo.TestOutput(outputHelper) .CreateLogger(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); _slotAddress = _avatarAddress.Derive( string.Format( diff --git a/.Lib9c.Tests/Action/CombinationEquipment14Test.cs b/.Lib9c.Tests/Action/CombinationEquipment14Test.cs index d95edb9438..5f79e0250f 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment14Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment14Test.cs @@ -43,7 +43,7 @@ public CombinationEquipment14Test(ITestOutputHelper outputHelper) .WriteTo.TestOutput(outputHelper) .CreateLogger(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); _slotAddress = _avatarAddress.Derive( string.Format( diff --git a/.Lib9c.Tests/Action/CombinationEquipment15Test.cs b/.Lib9c.Tests/Action/CombinationEquipment15Test.cs index 3430dbdd06..14fc8006f9 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment15Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment15Test.cs @@ -43,7 +43,7 @@ public CombinationEquipment15Test(ITestOutputHelper outputHelper) .WriteTo.TestOutput(outputHelper) .CreateLogger(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); _slotAddress = _avatarAddress.Derive( string.Format( diff --git a/.Lib9c.Tests/Action/CombinationEquipment16Test.cs b/.Lib9c.Tests/Action/CombinationEquipment16Test.cs index 4709345ad4..4294bf540a 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment16Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment16Test.cs @@ -41,7 +41,7 @@ public CombinationEquipment16Test(ITestOutputHelper outputHelper) .WriteTo.TestOutput(outputHelper) .CreateLogger(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); _slotAddress = _avatarAddress.Derive( string.Format( diff --git a/.Lib9c.Tests/Action/CombinationEquipment8Test.cs b/.Lib9c.Tests/Action/CombinationEquipment8Test.cs index 5479610e2f..8ec4c12b73 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment8Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment8Test.cs @@ -37,7 +37,7 @@ public CombinationEquipment8Test(ITestOutputHelper outputHelper) .WriteTo.TestOutput(outputHelper) .CreateLogger(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var slotAddress = _avatarAddress.Derive( string.Format( diff --git a/.Lib9c.Tests/Action/CombinationEquipment9Test.cs b/.Lib9c.Tests/Action/CombinationEquipment9Test.cs index 3f4c19220b..b9a91b50e7 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment9Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment9Test.cs @@ -37,7 +37,7 @@ public CombinationEquipment9Test(ITestOutputHelper outputHelper) .WriteTo.TestOutput(outputHelper) .CreateLogger(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var slotAddress = _avatarAddress.Derive( string.Format( diff --git a/.Lib9c.Tests/Action/CreateAvatar10Test.cs b/.Lib9c.Tests/Action/CreateAvatar10Test.cs index 2ee2d5cb53..71a257306d 100644 --- a/.Lib9c.Tests/Action/CreateAvatar10Test.cs +++ b/.Lib9c.Tests/Action/CreateAvatar10Test.cs @@ -291,8 +291,8 @@ public void MintAsset() CRYSTAL,200000,Agent RUNE_GOLDENLEAF,200000,Avatar "); - var avatarAddress = new PrivateKey().ToAddress(); - var agentAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; + var agentAddress = new PrivateKey().Address; var avatarState = new AvatarState(avatarAddress, agentAddress, 0L, _tableSheets.GetAvatarSheets(), new GameConfigState(), default, "test"); var nextState = CreateAvatar10.MintAsset(createAvatarFavSheet, avatarState, new Account(MockState.Empty), new ActionContext()); foreach (var row in createAvatarFavSheet.Values) diff --git a/.Lib9c.Tests/Action/CreatePledgeTest.cs b/.Lib9c.Tests/Action/CreatePledgeTest.cs index c52806ad63..15ba2f4daf 100644 --- a/.Lib9c.Tests/Action/CreatePledgeTest.cs +++ b/.Lib9c.Tests/Action/CreatePledgeTest.cs @@ -26,12 +26,12 @@ public CreatePledgeTest(ITestOutputHelper outputHelper) [InlineData(false, typeof(PermissionDeniedException))] public void Execute(bool admin, Type exc) { - var adminAddress = new PrivateKey().ToAddress(); - var poolAddress = new PrivateKey().ToAddress(); + var adminAddress = new PrivateKey().Address; + var poolAddress = new PrivateKey().Address; var adminState = new AdminState(adminAddress, 150L); - var patronAddress = new PrivateKey().ToAddress(); + var patronAddress = new PrivateKey().Address; var mead = Currencies.Mead; - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var pledgeAddress = agentAddress.GetPledgeAddress(); var context = new ActionContext(); IAccount states = new Account(MockState.Empty) @@ -44,7 +44,7 @@ public void Execute(bool admin, Type exc) }; for (int i = 0; i < 499; i++) { - var address = new PrivateKey().ToAddress(); + var address = new PrivateKey().Address; agentAddresses.Add((address, address.GetPledgeAddress())); } diff --git a/.Lib9c.Tests/Action/DailyReward0Test.cs b/.Lib9c.Tests/Action/DailyReward0Test.cs index 28b3fac50b..cccc7bd897 100644 --- a/.Lib9c.Tests/Action/DailyReward0Test.cs +++ b/.Lib9c.Tests/Action/DailyReward0Test.cs @@ -32,10 +32,10 @@ public DailyReward0Test(ITestOutputHelper outputHelper) var tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/DailyReward2Test.cs b/.Lib9c.Tests/Action/DailyReward2Test.cs index d9fa11a272..ef2c3bfb55 100644 --- a/.Lib9c.Tests/Action/DailyReward2Test.cs +++ b/.Lib9c.Tests/Action/DailyReward2Test.cs @@ -34,10 +34,10 @@ public DailyReward2Test(ITestOutputHelper outputHelper) var tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/DailyReward3Test.cs b/.Lib9c.Tests/Action/DailyReward3Test.cs index f107300ff8..5115938b3b 100644 --- a/.Lib9c.Tests/Action/DailyReward3Test.cs +++ b/.Lib9c.Tests/Action/DailyReward3Test.cs @@ -34,10 +34,10 @@ public DailyReward3Test(ITestOutputHelper outputHelper) var tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/DailyReward4Test.cs b/.Lib9c.Tests/Action/DailyReward4Test.cs index 1ea3a98d08..00bb29a139 100644 --- a/.Lib9c.Tests/Action/DailyReward4Test.cs +++ b/.Lib9c.Tests/Action/DailyReward4Test.cs @@ -37,10 +37,10 @@ public DailyReward4Test(ITestOutputHelper outputHelper) var tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/DailyReward5Test.cs b/.Lib9c.Tests/Action/DailyReward5Test.cs index 50673e758e..f4f722cef0 100644 --- a/.Lib9c.Tests/Action/DailyReward5Test.cs +++ b/.Lib9c.Tests/Action/DailyReward5Test.cs @@ -36,10 +36,10 @@ public DailyReward5Test(ITestOutputHelper outputHelper) var tableSheets = new TableSheets(sheets); var gameConfigState = new GameConfigState(); gameConfigState.Set(tableSheets.GameConfigSheet); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/DailyReward6Test.cs b/.Lib9c.Tests/Action/DailyReward6Test.cs index 2734fdbb28..51a7db56c6 100644 --- a/.Lib9c.Tests/Action/DailyReward6Test.cs +++ b/.Lib9c.Tests/Action/DailyReward6Test.cs @@ -38,10 +38,10 @@ public DailyReward6Test(ITestOutputHelper outputHelper) var tableSheets = new TableSheets(sheets); var gameConfigState = new GameConfigState(); gameConfigState.Set(tableSheets.GameConfigSheet); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/DailyRewardTest.cs b/.Lib9c.Tests/Action/DailyRewardTest.cs index b41295db9b..3ce633b612 100644 --- a/.Lib9c.Tests/Action/DailyRewardTest.cs +++ b/.Lib9c.Tests/Action/DailyRewardTest.cs @@ -36,10 +36,10 @@ public DailyRewardTest(ITestOutputHelper outputHelper) var tableSheets = new TableSheets(sheets); var gameConfigState = new GameConfigState(); gameConfigState.Set(tableSheets.GameConfigSheet); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/EndPledgeTest.cs b/.Lib9c.Tests/Action/EndPledgeTest.cs index 0ed6aab81f..50d3f8acbd 100644 --- a/.Lib9c.Tests/Action/EndPledgeTest.cs +++ b/.Lib9c.Tests/Action/EndPledgeTest.cs @@ -16,8 +16,8 @@ public class EndPledgeTest [InlineData(4)] public void Execute(int balance) { - var patron = new PrivateKey().ToAddress(); - var agent = new PrivateKey().ToAddress(); + var patron = new PrivateKey().Address; + var agent = new PrivateKey().Address; var context = new ActionContext(); IAccount states = new Account(MockState.Empty) .SetState(agent.GetPledgeAddress(), List.Empty.Add(patron.Serialize()).Add(true.Serialize())); @@ -49,19 +49,19 @@ public void Execute(int balance) [InlineData(false, true, typeof(FailedLoadStateException))] public void Execute_Throw_Exception(bool invalidSigner, bool invalidAgent, Type exc) { - Address patron = new PrivateKey().ToAddress(); - Address agent = new PrivateKey().ToAddress(); + Address patron = new PrivateKey().Address; + Address agent = new PrivateKey().Address; List contract = List.Empty.Add(patron.Serialize()).Add(true.Serialize()); IAccount states = new Account(MockState.Empty).SetState(agent.GetPledgeAddress(), contract); var action = new EndPledge { - AgentAddress = invalidAgent ? new PrivateKey().ToAddress() : agent, + AgentAddress = invalidAgent ? new PrivateKey().Address : agent, }; Assert.Throws(exc, () => action.Execute(new ActionContext { - Signer = invalidSigner ? new PrivateKey().ToAddress() : patron, + Signer = invalidSigner ? new PrivateKey().Address : patron, PreviousState = states, })); } diff --git a/.Lib9c.Tests/Action/EventConsumableItemCrafts0Test.cs b/.Lib9c.Tests/Action/EventConsumableItemCrafts0Test.cs index 8c9e06f59a..0f27d66bed 100644 --- a/.Lib9c.Tests/Action/EventConsumableItemCrafts0Test.cs +++ b/.Lib9c.Tests/Action/EventConsumableItemCrafts0Test.cs @@ -34,7 +34,7 @@ public EventConsumableItemCrafts0Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var inventoryAddr = _avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddr = _avatarAddress.Derive(LegacyWorldInformationKey); @@ -50,7 +50,7 @@ public EventConsumableItemCrafts0Test() 0, _tableSheets.GetAvatarSheets(), gameConfigState, - new PrivateKey().ToAddress() + new PrivateKey().Address ) { level = 100, diff --git a/.Lib9c.Tests/Action/EventDungeonBattleV1Test.cs b/.Lib9c.Tests/Action/EventDungeonBattleV1Test.cs index 6ae643a3c0..460ae73799 100644 --- a/.Lib9c.Tests/Action/EventDungeonBattleV1Test.cs +++ b/.Lib9c.Tests/Action/EventDungeonBattleV1Test.cs @@ -47,7 +47,7 @@ public EventDungeonBattleV1Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var inventoryAddr = _avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddr = _avatarAddress.Derive(LegacyWorldInformationKey); @@ -63,7 +63,7 @@ public EventDungeonBattleV1Test() 0, _tableSheets.GetAvatarSheets(), gameConfigState, - new PrivateKey().ToAddress() + new PrivateKey().Address ) { level = 100, diff --git a/.Lib9c.Tests/Action/EventDungeonBattleV2Test.cs b/.Lib9c.Tests/Action/EventDungeonBattleV2Test.cs index 1ce14efbb4..93b71a3882 100644 --- a/.Lib9c.Tests/Action/EventDungeonBattleV2Test.cs +++ b/.Lib9c.Tests/Action/EventDungeonBattleV2Test.cs @@ -48,7 +48,7 @@ public EventDungeonBattleV2Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var inventoryAddr = _avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddr = _avatarAddress.Derive(LegacyWorldInformationKey); @@ -64,7 +64,7 @@ public EventDungeonBattleV2Test() 0, _tableSheets.GetAvatarSheets(), gameConfigState, - new PrivateKey().ToAddress() + new PrivateKey().Address ) { level = 100, diff --git a/.Lib9c.Tests/Action/EventDungeonBattleV3Test.cs b/.Lib9c.Tests/Action/EventDungeonBattleV3Test.cs index c60a9b1bb0..afb60ec55d 100644 --- a/.Lib9c.Tests/Action/EventDungeonBattleV3Test.cs +++ b/.Lib9c.Tests/Action/EventDungeonBattleV3Test.cs @@ -47,7 +47,7 @@ public EventDungeonBattleV3Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var inventoryAddr = _avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddr = _avatarAddress.Derive(LegacyWorldInformationKey); @@ -63,7 +63,7 @@ public EventDungeonBattleV3Test() 0, _tableSheets.GetAvatarSheets(), gameConfigState, - new PrivateKey().ToAddress() + new PrivateKey().Address ) { level = 100, diff --git a/.Lib9c.Tests/Action/EventDungeonBattleV4Test.cs b/.Lib9c.Tests/Action/EventDungeonBattleV4Test.cs index dcc3ffa847..0da57c3173 100644 --- a/.Lib9c.Tests/Action/EventDungeonBattleV4Test.cs +++ b/.Lib9c.Tests/Action/EventDungeonBattleV4Test.cs @@ -48,7 +48,7 @@ public EventDungeonBattleV4Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var inventoryAddr = _avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddr = _avatarAddress.Derive(LegacyWorldInformationKey); @@ -64,7 +64,7 @@ public EventDungeonBattleV4Test() 0, _tableSheets.GetAvatarSheets(), gameConfigState, - new PrivateKey().ToAddress() + new PrivateKey().Address ) { level = 100, diff --git a/.Lib9c.Tests/Action/EventDungeonBattleV5Test.cs b/.Lib9c.Tests/Action/EventDungeonBattleV5Test.cs index cfb0c9bd6c..07197699ad 100644 --- a/.Lib9c.Tests/Action/EventDungeonBattleV5Test.cs +++ b/.Lib9c.Tests/Action/EventDungeonBattleV5Test.cs @@ -49,7 +49,7 @@ public EventDungeonBattleV5Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var inventoryAddr = _avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddr = _avatarAddress.Derive(LegacyWorldInformationKey); @@ -65,7 +65,7 @@ public EventDungeonBattleV5Test() 0, _tableSheets.GetAvatarSheets(), gameConfigState, - new PrivateKey().ToAddress() + new PrivateKey().Address ) { level = 100, diff --git a/.Lib9c.Tests/Action/EventMaterialItemCrafts0Test.cs b/.Lib9c.Tests/Action/EventMaterialItemCrafts0Test.cs index 73b093e7ec..ac7ee047a0 100644 --- a/.Lib9c.Tests/Action/EventMaterialItemCrafts0Test.cs +++ b/.Lib9c.Tests/Action/EventMaterialItemCrafts0Test.cs @@ -36,7 +36,7 @@ public EventMaterialItemCrafts0Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var inventoryAddr = _avatarAddress.Derive(LegacyInventoryKey); @@ -53,7 +53,7 @@ public EventMaterialItemCrafts0Test() 0, _tableSheets.GetAvatarSheets(), gameConfigState, - new PrivateKey().ToAddress() + new PrivateKey().Address ) { level = 100, diff --git a/.Lib9c.Tests/Action/Factory/ClaimStakeRewardFactoryTest.cs b/.Lib9c.Tests/Action/Factory/ClaimStakeRewardFactoryTest.cs index 4c13b49f46..6b23856820 100644 --- a/.Lib9c.Tests/Action/Factory/ClaimStakeRewardFactoryTest.cs +++ b/.Lib9c.Tests/Action/Factory/ClaimStakeRewardFactoryTest.cs @@ -60,7 +60,7 @@ public void Create_ByBlockIndex_Success( long blockIndex, Type type) { - var addr = new PrivateKey().ToAddress(); + var addr = new PrivateKey().Address; var action = ClaimStakeRewardFactory.CreateByBlockIndex(blockIndex, addr); Assert.Equal(type, action.GetType()); } @@ -69,7 +69,7 @@ public void Create_ByBlockIndex_Success( [MemberData(nameof(GetAllClaimStakeRewardV1))] public void Create_ByVersion_Success(string expectActionType, int version) { - var addr = new PrivateKey().ToAddress(); + var addr = new PrivateKey().Address; var action = ClaimStakeRewardFactory.CreateByVersion(version, addr); var actualActionType = action .GetType() diff --git a/.Lib9c.Tests/Action/Garages/BulkUnloadFromGaragesTest.cs b/.Lib9c.Tests/Action/Garages/BulkUnloadFromGaragesTest.cs index c71c2c853b..fbdc3d3e3a 100644 --- a/.Lib9c.Tests/Action/Garages/BulkUnloadFromGaragesTest.cs +++ b/.Lib9c.Tests/Action/Garages/BulkUnloadFromGaragesTest.cs @@ -23,7 +23,7 @@ public class BulkUnloadFromGaragesTest { private const int AvatarIndex = 0; - private static readonly Address AgentAddress = new PrivateKey().ToAddress(); + private static readonly Address AgentAddress = new PrivateKey().Address; private static readonly Address AvatarAddress = Addresses.GetAvatarAddress(AgentAddress, AvatarIndex); diff --git a/.Lib9c.Tests/Action/Garages/DeliverToOthersGaragesTest.cs b/.Lib9c.Tests/Action/Garages/DeliverToOthersGaragesTest.cs index f302680934..3696f09003 100644 --- a/.Lib9c.Tests/Action/Garages/DeliverToOthersGaragesTest.cs +++ b/.Lib9c.Tests/Action/Garages/DeliverToOthersGaragesTest.cs @@ -59,7 +59,7 @@ public DeliverToOthersGaragesTest() public static IEnumerable Get_Sample_PlainValue() { - var recipientAddr = new PrivateKey().ToAddress(); + var recipientAddr = new PrivateKey().Address; var fungibleAssetValues = GetFungibleAssetValues(); var hex = string.Join( string.Empty, @@ -401,7 +401,7 @@ private static FungibleAssetValue[] GetFungibleAssetValues() count: index + 1); }).ToArray(); return ( - new PrivateKey().ToAddress(), + new PrivateKey().Address, fungibleAssetValues, fungibleIdAndCounts .Select(tuple => (tuple.tradableFungibleItem.FungibleId, tuple.count)) diff --git a/.Lib9c.Tests/Action/Garages/LoadIntoMyGaragesTest.cs b/.Lib9c.Tests/Action/Garages/LoadIntoMyGaragesTest.cs index afa3f56fd6..3460fdce90 100644 --- a/.Lib9c.Tests/Action/Garages/LoadIntoMyGaragesTest.cs +++ b/.Lib9c.Tests/Action/Garages/LoadIntoMyGaragesTest.cs @@ -198,7 +198,7 @@ public void Execute_Throws_InvalidActionFieldException() null)); // Signer does not have permission of balance address. - var invalidSignerAddr = new PrivateKey().ToAddress(); + var invalidSignerAddr = new PrivateKey().Address; Assert.Throws(() => Execute( invalidSignerAddr, 0, @@ -232,7 +232,7 @@ public void Execute_Throws_InvalidActionFieldException() _fungibleIdAndCounts)); // AgentAddr does not have permission of inventory address. - var invalidInventoryAddr = new PrivateKey().ToAddress(); + var invalidInventoryAddr = new PrivateKey().Address; Assert.Throws(() => Execute( AgentAddr, 0, diff --git a/.Lib9c.Tests/Action/Garages/UnloadFromMyGaragesTest.cs b/.Lib9c.Tests/Action/Garages/UnloadFromMyGaragesTest.cs index f6db803197..78ef3f9709 100644 --- a/.Lib9c.Tests/Action/Garages/UnloadFromMyGaragesTest.cs +++ b/.Lib9c.Tests/Action/Garages/UnloadFromMyGaragesTest.cs @@ -24,7 +24,7 @@ namespace Lib9c.Tests.Action.Garages public class UnloadFromMyGaragesTest { - private static readonly Address AgentAddr = new PrivateKey().ToAddress(); + private static readonly Address AgentAddr = new PrivateKey().Address; private static readonly int AvatarIndex = 0; private static readonly Address AvatarAddr = diff --git a/.Lib9c.Tests/Action/Grinding0Test.cs b/.Lib9c.Tests/Action/Grinding0Test.cs index a7c6971f4f..63dbbd65aa 100644 --- a/.Lib9c.Tests/Action/Grinding0Test.cs +++ b/.Lib9c.Tests/Action/Grinding0Test.cs @@ -34,8 +34,8 @@ public Grinding0Test() _random = new TestRandom(); var sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 _crystalCurrency = Currency.Legacy("CRYSTAL", 18, null); diff --git a/.Lib9c.Tests/Action/GrindingTest.cs b/.Lib9c.Tests/Action/GrindingTest.cs index b8adada1e6..02127eb0b3 100644 --- a/.Lib9c.Tests/Action/GrindingTest.cs +++ b/.Lib9c.Tests/Action/GrindingTest.cs @@ -34,8 +34,8 @@ public GrindingTest() _random = new TestRandom(); var sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 _crystalCurrency = Currency.Legacy("CRYSTAL", 18, null); diff --git a/.Lib9c.Tests/Action/HackAndSlash0Test.cs b/.Lib9c.Tests/Action/HackAndSlash0Test.cs index 4f5099e874..88d9a28547 100644 --- a/.Lib9c.Tests/Action/HackAndSlash0Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash0Test.cs @@ -38,7 +38,7 @@ public HackAndSlash0Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash10Test.cs b/.Lib9c.Tests/Action/HackAndSlash10Test.cs index cc3cfa3a3b..c400a5f61c 100644 --- a/.Lib9c.Tests/Action/HackAndSlash10Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash10Test.cs @@ -47,7 +47,7 @@ public HackAndSlash10Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash11Test.cs b/.Lib9c.Tests/Action/HackAndSlash11Test.cs index e4ee28fcb7..ec93ce2504 100644 --- a/.Lib9c.Tests/Action/HackAndSlash11Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash11Test.cs @@ -47,7 +47,7 @@ public HackAndSlash11Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash12Test.cs b/.Lib9c.Tests/Action/HackAndSlash12Test.cs index 9c892f5e8e..a9114aa6b7 100644 --- a/.Lib9c.Tests/Action/HackAndSlash12Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash12Test.cs @@ -47,7 +47,7 @@ public HackAndSlash12Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash13Test.cs b/.Lib9c.Tests/Action/HackAndSlash13Test.cs index 63f71388f0..a6eca5bc22 100644 --- a/.Lib9c.Tests/Action/HackAndSlash13Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash13Test.cs @@ -47,7 +47,7 @@ public HackAndSlash13Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash15Test.cs b/.Lib9c.Tests/Action/HackAndSlash15Test.cs index 444e561047..58d16cf399 100644 --- a/.Lib9c.Tests/Action/HackAndSlash15Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash15Test.cs @@ -46,7 +46,7 @@ public HackAndSlash15Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash16Test.cs b/.Lib9c.Tests/Action/HackAndSlash16Test.cs index fbcf6f1092..5b0efdbdbc 100644 --- a/.Lib9c.Tests/Action/HackAndSlash16Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash16Test.cs @@ -47,7 +47,7 @@ public HackAndSlash16Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash17Test.cs b/.Lib9c.Tests/Action/HackAndSlash17Test.cs index 5edba40101..139869a918 100644 --- a/.Lib9c.Tests/Action/HackAndSlash17Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash17Test.cs @@ -47,7 +47,7 @@ public HackAndSlash17Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash18Test.cs b/.Lib9c.Tests/Action/HackAndSlash18Test.cs index a21d3551c0..94cc781601 100644 --- a/.Lib9c.Tests/Action/HackAndSlash18Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash18Test.cs @@ -50,7 +50,7 @@ public HackAndSlash18Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash19Test.cs b/.Lib9c.Tests/Action/HackAndSlash19Test.cs index 7cbcf25b2a..d560ff3f85 100644 --- a/.Lib9c.Tests/Action/HackAndSlash19Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash19Test.cs @@ -49,7 +49,7 @@ public HackAndSlash19Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash20Test.cs b/.Lib9c.Tests/Action/HackAndSlash20Test.cs index 154f5d533a..206512de76 100644 --- a/.Lib9c.Tests/Action/HackAndSlash20Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash20Test.cs @@ -50,7 +50,7 @@ public HackAndSlash20Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash21Test.cs b/.Lib9c.Tests/Action/HackAndSlash21Test.cs index 15db05f4fc..d5c1cecea4 100644 --- a/.Lib9c.Tests/Action/HackAndSlash21Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash21Test.cs @@ -51,7 +51,7 @@ public HackAndSlash21Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash2Test.cs b/.Lib9c.Tests/Action/HackAndSlash2Test.cs index 8852574dd7..19971bf5de 100644 --- a/.Lib9c.Tests/Action/HackAndSlash2Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash2Test.cs @@ -40,7 +40,7 @@ public HackAndSlash2Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash3Test.cs b/.Lib9c.Tests/Action/HackAndSlash3Test.cs index 5803ddeb06..0e09de51a5 100644 --- a/.Lib9c.Tests/Action/HackAndSlash3Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash3Test.cs @@ -37,7 +37,7 @@ public HackAndSlash3Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash4Test.cs b/.Lib9c.Tests/Action/HackAndSlash4Test.cs index d2e5150168..35834e1e5c 100644 --- a/.Lib9c.Tests/Action/HackAndSlash4Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash4Test.cs @@ -40,7 +40,7 @@ public HackAndSlash4Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash5Test.cs b/.Lib9c.Tests/Action/HackAndSlash5Test.cs index 928e98228d..12ce93a580 100644 --- a/.Lib9c.Tests/Action/HackAndSlash5Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash5Test.cs @@ -40,7 +40,7 @@ public HackAndSlash5Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash6Test.cs b/.Lib9c.Tests/Action/HackAndSlash6Test.cs index f25c495e63..32031d3071 100644 --- a/.Lib9c.Tests/Action/HackAndSlash6Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash6Test.cs @@ -42,7 +42,7 @@ public HackAndSlash6Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash7Test.cs b/.Lib9c.Tests/Action/HackAndSlash7Test.cs index ff19531cd7..a9a712b89e 100644 --- a/.Lib9c.Tests/Action/HackAndSlash7Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash7Test.cs @@ -47,7 +47,7 @@ public HackAndSlash7Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash8Test.cs b/.Lib9c.Tests/Action/HackAndSlash8Test.cs index c5720fd0d8..47425439a2 100644 --- a/.Lib9c.Tests/Action/HackAndSlash8Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash8Test.cs @@ -47,7 +47,7 @@ public HackAndSlash8Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlash9Test.cs b/.Lib9c.Tests/Action/HackAndSlash9Test.cs index eddd1289dc..c79a785865 100644 --- a/.Lib9c.Tests/Action/HackAndSlash9Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash9Test.cs @@ -47,7 +47,7 @@ public HackAndSlash9Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlashRandomBuffTest.cs b/.Lib9c.Tests/Action/HackAndSlashRandomBuffTest.cs index 54a0ef4f1e..cf1dfc3492 100644 --- a/.Lib9c.Tests/Action/HackAndSlashRandomBuffTest.cs +++ b/.Lib9c.Tests/Action/HackAndSlashRandomBuffTest.cs @@ -46,7 +46,7 @@ public HackAndSlashRandomBuffTest() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep1Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep1Test.cs index cb28809fd5..36402c5348 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep1Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep1Test.cs @@ -42,7 +42,7 @@ public HackAndSlashSweep1Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep2Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep2Test.cs index af978bf53e..e937d835c2 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep2Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep2Test.cs @@ -42,7 +42,7 @@ public HackAndSlashSweep2Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep3Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep3Test.cs index bbe1b7133d..c01739081a 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep3Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep3Test.cs @@ -43,7 +43,7 @@ public HackAndSlashSweep3Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep4Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep4Test.cs index 8412b036df..189a2b22e7 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep4Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep4Test.cs @@ -43,7 +43,7 @@ public HackAndSlashSweep4Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep5Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep5Test.cs index 59d059e36f..8bea6566ca 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep5Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep5Test.cs @@ -44,7 +44,7 @@ public HackAndSlashSweep5Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep6Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep6Test.cs index 6811c3bf41..7e78117ab3 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep6Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep6Test.cs @@ -46,7 +46,7 @@ public HackAndSlashSweep6Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep7Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep7Test.cs index d82af3ce09..99d5cacdce 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep7Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep7Test.cs @@ -46,7 +46,7 @@ public HackAndSlashSweep7Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep8Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep8Test.cs index 666bfc329a..ee7106ad59 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep8Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep8Test.cs @@ -46,7 +46,7 @@ public HackAndSlashSweep8Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep9Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep9Test.cs index 2c8e3efae0..7f9d2dcfdf 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep9Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep9Test.cs @@ -47,7 +47,7 @@ public HackAndSlashSweep9Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/HackAndSlashTest14.cs b/.Lib9c.Tests/Action/HackAndSlashTest14.cs index 81af3850c0..38bd1031f1 100644 --- a/.Lib9c.Tests/Action/HackAndSlashTest14.cs +++ b/.Lib9c.Tests/Action/HackAndSlashTest14.cs @@ -46,7 +46,7 @@ public HackAndSlashTest14() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/InitializeStatesTest.cs b/.Lib9c.Tests/Action/InitializeStatesTest.cs index 37f4eba0cf..6e7a8bcc35 100644 --- a/.Lib9c.Tests/Action/InitializeStatesTest.cs +++ b/.Lib9c.Tests/Action/InitializeStatesTest.cs @@ -35,7 +35,7 @@ public void Execute() var minterKey = new PrivateKey(); #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var ncg = Currency.Legacy("NCG", 2, minterKey.ToAddress()); + var ncg = Currency.Legacy("NCG", 2, minterKey.Address); #pragma warning restore CS0618 var nonce = new byte[] { 0x00, 0x01, 0x02, 0x03 }; var privateKey = new PrivateKey(); @@ -61,7 +61,7 @@ public void Execute() var genesisState = action.Execute(new ActionContext() { BlockIndex = 0, - Signer = minterKey.ToAddress(), + Signer = minterKey.Address, Miner = default, PreviousState = new Account(MockState.Empty), }); @@ -97,7 +97,7 @@ public void ExecuteWithAuthorizedMinersState() var minterKey = new PrivateKey(); #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var ncg = Currency.Legacy("NCG", 2, minterKey.ToAddress()); + var ncg = Currency.Legacy("NCG", 2, minterKey.Address); #pragma warning restore CS0618 var nonce = new byte[] { 0x00, 0x01, 0x02, 0x03 }; var privateKey = new PrivateKey(); @@ -129,7 +129,7 @@ public void ExecuteWithAuthorizedMinersState() { BlockIndex = 0, Miner = default, - Signer = minterKey.ToAddress(), + Signer = minterKey.Address, PreviousState = new Account(MockState.Empty), }); @@ -153,7 +153,7 @@ public void ExecuteWithActivateAdminKey() var minterKey = new PrivateKey(); #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var ncg = Currency.Legacy("NCG", 2, minterKey.ToAddress()); + var ncg = Currency.Legacy("NCG", 2, minterKey.Address); #pragma warning restore CS0618 var nonce = new byte[] { 0x00, 0x01, 0x02, 0x03 }; var privateKey = new PrivateKey(); @@ -178,7 +178,7 @@ public void ExecuteWithActivateAdminKey() { BlockIndex = 0, Miner = default, - Signer = minterKey.ToAddress(), + Signer = minterKey.Address, PreviousState = new Account(MockState.Empty), }); @@ -199,7 +199,7 @@ public void ExecuteWithCredits() var minterKey = new PrivateKey(); #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var ncg = Currency.Legacy("NCG", 2, minterKey.ToAddress()); + var ncg = Currency.Legacy("NCG", 2, minterKey.Address); #pragma warning restore CS0618 var nonce = new byte[] { 0x00, 0x01, 0x02, 0x03 }; var adminAddress = new Address("F9A15F870701268Bd7bBeA6502eB15F4997f32f9"); @@ -230,7 +230,7 @@ public void ExecuteWithCredits() { BlockIndex = 0, Miner = default, - Signer = minterKey.ToAddress(), + Signer = minterKey.Address, PreviousState = new Account(MockState.Empty), }); @@ -252,7 +252,7 @@ public void ExecuteWithoutAdminState() var minterKey = new PrivateKey(); #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var ncg = Currency.Legacy("NCG", 2, minterKey.ToAddress()); + var ncg = Currency.Legacy("NCG", 2, minterKey.Address); #pragma warning restore CS0618 var nonce = new byte[] { 0x00, 0x01, 0x02, 0x03 }; var privateKey = new PrivateKey(); @@ -276,7 +276,7 @@ public void ExecuteWithoutAdminState() { BlockIndex = 0, Miner = default, - Signer = minterKey.ToAddress(), + Signer = minterKey.Address, PreviousState = new Account(MockState.Empty), }); @@ -319,7 +319,7 @@ public void ExecuteWithoutInitialSupply() { BlockIndex = 0, Miner = default, - Signer = minterKey.ToAddress(), + Signer = minterKey.Address, PreviousState = new Account(MockState.Empty), }); @@ -337,7 +337,7 @@ public void ExecuteWithAssetMinters() var minterKey = new PrivateKey(); #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - var ncg = Currency.Legacy("NCG", 2, minterKey.ToAddress()); + var ncg = Currency.Legacy("NCG", 2, minterKey.Address); #pragma warning restore CS0618 var nonce = new byte[] { 0x00, 0x01, 0x02, 0x03 }; var adminAddress = new Address("F9A15F870701268Bd7bBeA6502eB15F4997f32f9"); @@ -360,7 +360,7 @@ public void ExecuteWithAssetMinters() { BlockIndex = 0, Miner = default, - Signer = minterKey.ToAddress(), + Signer = minterKey.Address, PreviousState = new Account(MockState.Empty), }); diff --git a/.Lib9c.Tests/Action/IssueTokensFromGarageTest.cs b/.Lib9c.Tests/Action/IssueTokensFromGarageTest.cs index 67406000c3..5ea6ae89b6 100644 --- a/.Lib9c.Tests/Action/IssueTokensFromGarageTest.cs +++ b/.Lib9c.Tests/Action/IssueTokensFromGarageTest.cs @@ -29,7 +29,7 @@ public class IssueTokensFromGarageTest public IssueTokensFromGarageTest() { - _signer = new PrivateKey().ToAddress(); + _signer = new PrivateKey().Address; var sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(sheets); diff --git a/.Lib9c.Tests/Action/ItemEnhancement0Test.cs b/.Lib9c.Tests/Action/ItemEnhancement0Test.cs index c727b0d247..a99b0c4764 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement0Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement0Test.cs @@ -33,7 +33,7 @@ public ItemEnhancement0Test() _random = new TestRandom(); _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement10Test.cs b/.Lib9c.Tests/Action/ItemEnhancement10Test.cs index 7b99927584..c007a0fd14 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement10Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement10Test.cs @@ -38,7 +38,7 @@ public ItemEnhancement10Test() _random = new TestRandom(); _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement11Test.cs b/.Lib9c.Tests/Action/ItemEnhancement11Test.cs index d6625969cf..cf9d03e4a8 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement11Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement11Test.cs @@ -37,7 +37,7 @@ public ItemEnhancement11Test() EquipmentItemSheetFixture.LegacyEnhancementCostSheetV2; _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement12Test.cs b/.Lib9c.Tests/Action/ItemEnhancement12Test.cs index 82f0bbc2d3..44a11e225f 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement12Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement12Test.cs @@ -36,7 +36,7 @@ public ItemEnhancement12Test() EquipmentItemSheetFixture.LegacyEnhancementCostSheetV3; _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement13Test.cs b/.Lib9c.Tests/Action/ItemEnhancement13Test.cs index 2219c4939a..9c280c1eed 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement13Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement13Test.cs @@ -51,7 +51,7 @@ public ItemEnhancement13Test() } var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement2Test.cs b/.Lib9c.Tests/Action/ItemEnhancement2Test.cs index d7f6c9864d..8ec68124a8 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement2Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement2Test.cs @@ -32,7 +32,7 @@ public ItemEnhancement2Test() _random = new TestRandom(); _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement3Test.cs b/.Lib9c.Tests/Action/ItemEnhancement3Test.cs index 8ff2f93d8c..591cc95854 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement3Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement3Test.cs @@ -32,7 +32,7 @@ public ItemEnhancement3Test() _random = new TestRandom(); _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement4Test.cs b/.Lib9c.Tests/Action/ItemEnhancement4Test.cs index a631a40996..1657699325 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement4Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement4Test.cs @@ -33,7 +33,7 @@ public ItemEnhancement4Test() _random = new TestRandom(); _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement5Test.cs b/.Lib9c.Tests/Action/ItemEnhancement5Test.cs index 31ce91424d..308ba37edc 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement5Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement5Test.cs @@ -33,7 +33,7 @@ public ItemEnhancement5Test() _random = new TestRandom(); _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement6Test.cs b/.Lib9c.Tests/Action/ItemEnhancement6Test.cs index 5e1960079c..f27f28c0f1 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement6Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement6Test.cs @@ -33,7 +33,7 @@ public ItemEnhancement6Test() _random = new TestRandom(); _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement7Test.cs b/.Lib9c.Tests/Action/ItemEnhancement7Test.cs index ba9891dc3d..df073d09a8 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement7Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement7Test.cs @@ -35,7 +35,7 @@ public ItemEnhancement7Test() _random = new TestRandom(); _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement8Test.cs b/.Lib9c.Tests/Action/ItemEnhancement8Test.cs index a6dea2ac17..cc8c01bc43 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement8Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement8Test.cs @@ -35,7 +35,7 @@ public ItemEnhancement8Test() _random = new TestRandom(); _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/ItemEnhancement9Test.cs b/.Lib9c.Tests/Action/ItemEnhancement9Test.cs index a6005c80eb..4be765dc0c 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement9Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement9Test.cs @@ -36,7 +36,7 @@ public ItemEnhancement9Test() _random = new TestRandom(); _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/JoinArena1Test.cs b/.Lib9c.Tests/Action/JoinArena1Test.cs index a721dca2ce..411960bbfb 100644 --- a/.Lib9c.Tests/Action/JoinArena1Test.cs +++ b/.Lib9c.Tests/Action/JoinArena1Test.cs @@ -47,11 +47,11 @@ public JoinArena1Test(ITestOutputHelper outputHelper) _state = new Account(MockState.Empty); - _signer = new PrivateKey().ToAddress(); + _signer = new PrivateKey().Address; _avatarAddress = _signer.Derive("avatar"); var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var agentState = new AgentState(_signer); var avatarState = new AvatarState( _avatarAddress, @@ -69,7 +69,7 @@ public JoinArena1Test(ITestOutputHelper outputHelper) agentState.avatarAddresses[0] = _avatarAddress; avatarState.level = GameConfig.RequireClearedStageLevel.ActionsInRankingBoard; - _signer2 = new PrivateKey().ToAddress(); + _signer2 = new PrivateKey().Address; _avatar2Address = _signer2.Derive("avatar"); var agent2State = new AgentState(_signer2); diff --git a/.Lib9c.Tests/Action/JoinArena2Test.cs b/.Lib9c.Tests/Action/JoinArena2Test.cs index 6be17483a0..10947477f0 100644 --- a/.Lib9c.Tests/Action/JoinArena2Test.cs +++ b/.Lib9c.Tests/Action/JoinArena2Test.cs @@ -47,11 +47,11 @@ public JoinArena2Test(ITestOutputHelper outputHelper) _state = new Account(MockState.Empty); - _signer = new PrivateKey().ToAddress(); + _signer = new PrivateKey().Address; _avatarAddress = _signer.Derive("avatar"); var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var agentState = new AgentState(_signer); var avatarState = new AvatarState( _avatarAddress, @@ -69,7 +69,7 @@ public JoinArena2Test(ITestOutputHelper outputHelper) agentState.avatarAddresses[0] = _avatarAddress; avatarState.level = GameConfig.RequireClearedStageLevel.ActionsInRankingBoard; - _signer2 = new PrivateKey().ToAddress(); + _signer2 = new PrivateKey().Address; _avatar2Address = _signer2.Derive("avatar"); var agent2State = new AgentState(_signer2); diff --git a/.Lib9c.Tests/Action/JoinArena3Test.cs b/.Lib9c.Tests/Action/JoinArena3Test.cs index 1785f2d33d..9a8a6e27ae 100644 --- a/.Lib9c.Tests/Action/JoinArena3Test.cs +++ b/.Lib9c.Tests/Action/JoinArena3Test.cs @@ -48,11 +48,11 @@ public JoinArena3Test(ITestOutputHelper outputHelper) _state = new Account(MockState.Empty); - _signer = new PrivateKey().ToAddress(); + _signer = new PrivateKey().Address; _avatarAddress = _signer.Derive("avatar"); var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var agentState = new AgentState(_signer); var gameConfigState = new GameConfigState(_sheets[nameof(GameConfigSheet)]); var avatarState = new AvatarState( @@ -71,7 +71,7 @@ public JoinArena3Test(ITestOutputHelper outputHelper) agentState.avatarAddresses[0] = _avatarAddress; avatarState.level = GameConfig.RequireClearedStageLevel.ActionsInRankingBoard; - _signer2 = new PrivateKey().ToAddress(); + _signer2 = new PrivateKey().Address; _avatar2Address = _signer2.Derive("avatar"); var agent2State = new AgentState(_signer2); diff --git a/.Lib9c.Tests/Action/MarketValidationTest.cs b/.Lib9c.Tests/Action/MarketValidationTest.cs index d40f6ea7a4..935154209f 100644 --- a/.Lib9c.Tests/Action/MarketValidationTest.cs +++ b/.Lib9c.Tests/Action/MarketValidationTest.cs @@ -42,11 +42,11 @@ public static IEnumerable RegisterInfosMemberData() { new RegisterInfo { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, }, new AssetInfo { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, }, }, Exc = typeof(InvalidAddressException), diff --git a/.Lib9c.Tests/Action/MigrateMonsterCollectionTest.cs b/.Lib9c.Tests/Action/MigrateMonsterCollectionTest.cs index c3582d9d31..68dcdd42d3 100644 --- a/.Lib9c.Tests/Action/MigrateMonsterCollectionTest.cs +++ b/.Lib9c.Tests/Action/MigrateMonsterCollectionTest.cs @@ -34,7 +34,7 @@ public MigrateMonsterCollectionTest(ITestOutputHelper outputHelper) _state = new Account(MockState.Empty); Dictionary sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var agentState = new AgentState(_signer); var avatarState = new AvatarState( _avatarAddress, diff --git a/.Lib9c.Tests/Action/MigrationAvatarStateTest.cs b/.Lib9c.Tests/Action/MigrationAvatarStateTest.cs index 981c107c91..d50f3a51f9 100644 --- a/.Lib9c.Tests/Action/MigrationAvatarStateTest.cs +++ b/.Lib9c.Tests/Action/MigrationAvatarStateTest.cs @@ -21,8 +21,8 @@ public MigrationAvatarStateTest() [Fact] public void Execute() { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, agentAddress, diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle0Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle0Test.cs index 79bb52f22c..b0154daa62 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle0Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle0Test.cs @@ -36,7 +36,7 @@ public MimisbrunnrBattle0Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs index 5259f6eaf1..b702813dea 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs @@ -35,7 +35,7 @@ public MimisbrunnrBattle10Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle11Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle11Test.cs index f826103bd5..a4394ca7e0 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle11Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle11Test.cs @@ -33,7 +33,7 @@ public MimisbrunnrBattle11Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle12Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle12Test.cs index e5e9e5d7e0..7d5bcd621f 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle12Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle12Test.cs @@ -35,7 +35,7 @@ public MimisbrunnrBattle12Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle13Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle13Test.cs index f0bb910580..d0be4e6cde 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle13Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle13Test.cs @@ -36,7 +36,7 @@ public MimisbrunnrBattle13Test() _tableSheets = new TableSheets(_sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle2Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle2Test.cs index 7445e75fd2..ed9cc4dc4c 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle2Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle2Test.cs @@ -36,7 +36,7 @@ public MimisbrunnrBattle2Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle3Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle3Test.cs index ea89b64de1..c8875f223c 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle3Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle3Test.cs @@ -36,7 +36,7 @@ public MimisbrunnrBattle3Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs index 9a25271149..1dd8a35604 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle4Test.cs @@ -37,7 +37,7 @@ public MimisbrunnrBattle4Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs index 3f17b2f013..1c99ef85f5 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle5Test.cs @@ -36,7 +36,7 @@ public MimisbrunnrBattle5Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs index dd10fb4a00..f24a425d30 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle6Test.cs @@ -36,7 +36,7 @@ public MimisbrunnrBattle6Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs index a0c3eff931..388930919d 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle7Test.cs @@ -36,7 +36,7 @@ public MimisbrunnrBattle7Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs index 570019c5d1..365fdaf029 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle8Test.cs @@ -33,7 +33,7 @@ public MimisbrunnrBattle8Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs index 75ec852eaf..3077801864 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle9Test.cs @@ -34,7 +34,7 @@ public MimisbrunnrBattle9Test() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/MintAssetsTest.cs b/.Lib9c.Tests/Action/MintAssetsTest.cs index cc39f7c9f9..ca29154b56 100644 --- a/.Lib9c.Tests/Action/MintAssetsTest.cs +++ b/.Lib9c.Tests/Action/MintAssetsTest.cs @@ -28,13 +28,13 @@ public class MintAssetsTest public MintAssetsTest() { - _adminAddress = new PrivateKey().ToAddress(); + _adminAddress = new PrivateKey().Address; _ncgCurrency = Currency.Legacy("NCG", 2, null); _minters = new HashSet
{ - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, + new PrivateKey().Address, }; _prevState = new Account( MockState.Empty @@ -278,10 +278,10 @@ public void Execute_Throws_InvalidMinterException() private IAccount GenerateAvatar(IAccount state, out Address avatarAddress) { - var address = new PrivateKey().ToAddress(); + var address = new PrivateKey().Address; var agentState = new AgentState(address); avatarAddress = address.Derive("avatar"); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, address, diff --git a/.Lib9c.Tests/Action/PetEnhancement0Test.cs b/.Lib9c.Tests/Action/PetEnhancement0Test.cs index 02cdca6cfa..27f15cb6bc 100644 --- a/.Lib9c.Tests/Action/PetEnhancement0Test.cs +++ b/.Lib9c.Tests/Action/PetEnhancement0Test.cs @@ -72,7 +72,7 @@ public void Execute_Success( [Fact] public void Execute_Throw_InvalidActionFieldException_AgentAddress() { - var invalidAgentAddr = new PrivateKey().ToAddress(); + var invalidAgentAddr = new PrivateKey().Address; Assert.Throws(() => Execute( _initialStatesWithAvatarStateV1, @@ -96,7 +96,7 @@ public void Execute_Throw_InvalidActionFieldException_AgentAddress() [Fact] public void Execute_Throw_InvalidActionFieldException_AvatarAddress() { - var invalidAvatarAddr = new PrivateKey().ToAddress(); + var invalidAvatarAddr = new PrivateKey().Address; Assert.Throws(() => Execute( _initialStatesWithAvatarStateV1, diff --git a/.Lib9c.Tests/Action/PrepareRewardAssetsTest.cs b/.Lib9c.Tests/Action/PrepareRewardAssetsTest.cs index 25a8d79267..4f3a10f032 100644 --- a/.Lib9c.Tests/Action/PrepareRewardAssetsTest.cs +++ b/.Lib9c.Tests/Action/PrepareRewardAssetsTest.cs @@ -20,8 +20,8 @@ public class PrepareRewardAssetsTest [InlineData(false, false, typeof(PermissionDeniedException))] public void Execute(bool admin, bool includeNcg, Type exc) { - var adminAddress = new PrivateKey().ToAddress(); - var poolAddress = new PrivateKey().ToAddress(); + var adminAddress = new PrivateKey().Address; + var poolAddress = new PrivateKey().Address; var adminState = new AdminState(adminAddress, 150L); var assets = new List { diff --git a/.Lib9c.Tests/Action/Raid1Test.cs b/.Lib9c.Tests/Action/Raid1Test.cs index f59273bdec..c7be2c6550 100644 --- a/.Lib9c.Tests/Action/Raid1Test.cs +++ b/.Lib9c.Tests/Action/Raid1Test.cs @@ -30,8 +30,8 @@ public Raid1Test() { _sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(_sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 _goldCurrency = Currency.Legacy("NCG", 2, null); diff --git a/.Lib9c.Tests/Action/Raid2Test.cs b/.Lib9c.Tests/Action/Raid2Test.cs index d3fc73659d..486e1cee0d 100644 --- a/.Lib9c.Tests/Action/Raid2Test.cs +++ b/.Lib9c.Tests/Action/Raid2Test.cs @@ -30,8 +30,8 @@ public Raid2Test() { _sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(_sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 _goldCurrency = Currency.Legacy("NCG", 2, null); @@ -178,7 +178,7 @@ bool raiderListExist if (raiderListExist) { - raiderList = raiderList.Add(new PrivateKey().ToAddress().Serialize()); + raiderList = raiderList.Add(new PrivateKey().Address.Serialize()); } state = state.SetState(raiderListAddress, raiderList); diff --git a/.Lib9c.Tests/Action/Raid3Test.cs b/.Lib9c.Tests/Action/Raid3Test.cs index 8dab740d7e..66f54c728f 100644 --- a/.Lib9c.Tests/Action/Raid3Test.cs +++ b/.Lib9c.Tests/Action/Raid3Test.cs @@ -30,8 +30,8 @@ public Raid3Test() { _sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(_sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 _goldCurrency = Currency.Legacy("NCG", 2, null); @@ -179,7 +179,7 @@ bool raiderListExist if (raiderListExist) { - raiderList = raiderList.Add(new PrivateKey().ToAddress().Serialize()); + raiderList = raiderList.Add(new PrivateKey().Address.Serialize()); } state = state.SetState(raiderListAddress, raiderList); diff --git a/.Lib9c.Tests/Action/Raid4Test.cs b/.Lib9c.Tests/Action/Raid4Test.cs index 919fbecd72..7a45eb3c70 100644 --- a/.Lib9c.Tests/Action/Raid4Test.cs +++ b/.Lib9c.Tests/Action/Raid4Test.cs @@ -31,8 +31,8 @@ public Raid4Test() { _sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(_sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 _goldCurrency = Currency.Legacy("NCG", 2, null); @@ -199,7 +199,7 @@ int runeId2 if (raiderListExist) { - raiderList = raiderList.Add(new PrivateKey().ToAddress().Serialize()); + raiderList = raiderList.Add(new PrivateKey().Address.Serialize()); } state = state.SetState(raiderListAddress, raiderList); diff --git a/.Lib9c.Tests/Action/Raid5Test.cs b/.Lib9c.Tests/Action/Raid5Test.cs index cb6d031640..61418cbcc2 100644 --- a/.Lib9c.Tests/Action/Raid5Test.cs +++ b/.Lib9c.Tests/Action/Raid5Test.cs @@ -31,8 +31,8 @@ public Raid5Test() { _sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(_sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 _goldCurrency = Currency.Legacy("NCG", 2, null); @@ -199,7 +199,7 @@ int runeId2 if (raiderListExist) { - raiderList = raiderList.Add(new PrivateKey().ToAddress().Serialize()); + raiderList = raiderList.Add(new PrivateKey().Address.Serialize()); } state = state.SetState(raiderListAddress, raiderList); diff --git a/.Lib9c.Tests/Action/Raid6Test.cs b/.Lib9c.Tests/Action/Raid6Test.cs index eeba1cba82..b377efedec 100644 --- a/.Lib9c.Tests/Action/Raid6Test.cs +++ b/.Lib9c.Tests/Action/Raid6Test.cs @@ -31,8 +31,8 @@ public Raid6Test() { _sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(_sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 _goldCurrency = Currency.Legacy("NCG", 2, null); @@ -199,7 +199,7 @@ int runeId2 if (raiderListExist) { - raiderList = raiderList.Add(new PrivateKey().ToAddress().Serialize()); + raiderList = raiderList.Add(new PrivateKey().Address.Serialize()); } state = state.SetState(raiderListAddress, raiderList); diff --git a/.Lib9c.Tests/Action/RankingBattle0Test.cs b/.Lib9c.Tests/Action/RankingBattle0Test.cs index 55f862cb46..45a2f1c30a 100644 --- a/.Lib9c.Tests/Action/RankingBattle0Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle0Test.cs @@ -41,7 +41,7 @@ public RankingBattle0Test() _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = GetAgentStateWithAvatarState( sheets, @@ -77,7 +77,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith TableSheets tableSheets, Address rankingMapAddress) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); @@ -184,14 +184,14 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) switch (caseIndex) { case 0: - signer = new PrivateKey().ToAddress(); + signer = new PrivateKey().Address; avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; - enemyAddress = new PrivateKey().ToAddress(); + enemyAddress = new PrivateKey().Address; break; } diff --git a/.Lib9c.Tests/Action/RankingBattle10Test.cs b/.Lib9c.Tests/Action/RankingBattle10Test.cs index 119863a3c9..f7d07c4f81 100644 --- a/.Lib9c.Tests/Action/RankingBattle10Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle10Test.cs @@ -52,7 +52,7 @@ public RankingBattle10Test(ITestOutputHelper outputHelper) _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = GetAgentStateWithAvatarState( sheets, @@ -93,7 +93,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith TableSheets tableSheets, Address rankingMapAddress) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); @@ -284,14 +284,14 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) switch (caseIndex) { case 0: - signer = new PrivateKey().ToAddress(); + signer = new PrivateKey().Address; avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; - enemyAddress = new PrivateKey().ToAddress(); + enemyAddress = new PrivateKey().Address; break; } diff --git a/.Lib9c.Tests/Action/RankingBattle11Test.cs b/.Lib9c.Tests/Action/RankingBattle11Test.cs index d7697f8676..2d364e01ea 100644 --- a/.Lib9c.Tests/Action/RankingBattle11Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle11Test.cs @@ -55,7 +55,7 @@ public RankingBattle11Test(ITestOutputHelper outputHelper) _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = GetAgentStateWithAvatarState( sheets, @@ -101,7 +101,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith TableSheets tableSheets, Address rankingMapAddress) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); @@ -409,14 +409,14 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) switch (caseIndex) { case 0: - signer = new PrivateKey().ToAddress(); + signer = new PrivateKey().Address; avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; - enemyAddress = new PrivateKey().ToAddress(); + enemyAddress = new PrivateKey().Address; break; } diff --git a/.Lib9c.Tests/Action/RankingBattle2Test.cs b/.Lib9c.Tests/Action/RankingBattle2Test.cs index 9ce0b1ee24..e8aacbdd72 100644 --- a/.Lib9c.Tests/Action/RankingBattle2Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle2Test.cs @@ -41,7 +41,7 @@ public RankingBattle2Test(ITestOutputHelper outputHelper) _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = RankingBattle11Test.GetAgentStateWithAvatarState( sheets, @@ -177,14 +177,14 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) switch (caseIndex) { case 0: - signer = new PrivateKey().ToAddress(); + signer = new PrivateKey().Address; avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; - enemyAddress = new PrivateKey().ToAddress(); + enemyAddress = new PrivateKey().Address; break; } diff --git a/.Lib9c.Tests/Action/RankingBattle3Test.cs b/.Lib9c.Tests/Action/RankingBattle3Test.cs index 22a1762d14..769bf4a989 100644 --- a/.Lib9c.Tests/Action/RankingBattle3Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle3Test.cs @@ -41,7 +41,7 @@ public RankingBattle3Test(ITestOutputHelper outputHelper) _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = RankingBattle11Test.GetAgentStateWithAvatarState( sheets, @@ -177,14 +177,14 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) switch (caseIndex) { case 0: - signer = new PrivateKey().ToAddress(); + signer = new PrivateKey().Address; avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; - enemyAddress = new PrivateKey().ToAddress(); + enemyAddress = new PrivateKey().Address; break; } diff --git a/.Lib9c.Tests/Action/RankingBattle4Test.cs b/.Lib9c.Tests/Action/RankingBattle4Test.cs index 0dc6e03d9e..fc97a4f220 100644 --- a/.Lib9c.Tests/Action/RankingBattle4Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle4Test.cs @@ -42,7 +42,7 @@ public RankingBattle4Test(ITestOutputHelper outputHelper) _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = GetAgentStateWithAvatarState( sheets, @@ -83,7 +83,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith TableSheets tableSheets, Address rankingMapAddress) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); @@ -213,14 +213,14 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) switch (caseIndex) { case 0: - signer = new PrivateKey().ToAddress(); + signer = new PrivateKey().Address; avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; - enemyAddress = new PrivateKey().ToAddress(); + enemyAddress = new PrivateKey().Address; break; } diff --git a/.Lib9c.Tests/Action/RankingBattle5Test.cs b/.Lib9c.Tests/Action/RankingBattle5Test.cs index dd5c069bfd..b7cb46a09f 100644 --- a/.Lib9c.Tests/Action/RankingBattle5Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle5Test.cs @@ -44,7 +44,7 @@ public RankingBattle5Test(ITestOutputHelper outputHelper) _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = GetAgentStateWithAvatarState( sheets, @@ -85,7 +85,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith TableSheets tableSheets, Address rankingMapAddress) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); @@ -243,14 +243,14 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) switch (caseIndex) { case 0: - signer = new PrivateKey().ToAddress(); + signer = new PrivateKey().Address; avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; - enemyAddress = new PrivateKey().ToAddress(); + enemyAddress = new PrivateKey().Address; break; } diff --git a/.Lib9c.Tests/Action/RankingBattle6Test.cs b/.Lib9c.Tests/Action/RankingBattle6Test.cs index 201e7d5817..ace7575fd6 100644 --- a/.Lib9c.Tests/Action/RankingBattle6Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle6Test.cs @@ -44,7 +44,7 @@ public RankingBattle6Test(ITestOutputHelper outputHelper) _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = GetAgentStateWithAvatarState( sheets, @@ -85,7 +85,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith TableSheets tableSheets, Address rankingMapAddress) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); @@ -243,14 +243,14 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) switch (caseIndex) { case 0: - signer = new PrivateKey().ToAddress(); + signer = new PrivateKey().Address; avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; - enemyAddress = new PrivateKey().ToAddress(); + enemyAddress = new PrivateKey().Address; break; } diff --git a/.Lib9c.Tests/Action/RankingBattle7Test.cs b/.Lib9c.Tests/Action/RankingBattle7Test.cs index c546d71d8b..d3e82f42ec 100644 --- a/.Lib9c.Tests/Action/RankingBattle7Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle7Test.cs @@ -44,7 +44,7 @@ public RankingBattle7Test(ITestOutputHelper outputHelper) _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = GetAgentStateWithAvatarState( sheets, @@ -85,7 +85,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith TableSheets tableSheets, Address rankingMapAddress) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); @@ -243,14 +243,14 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) switch (caseIndex) { case 0: - signer = new PrivateKey().ToAddress(); + signer = new PrivateKey().Address; avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; - enemyAddress = new PrivateKey().ToAddress(); + enemyAddress = new PrivateKey().Address; break; } diff --git a/.Lib9c.Tests/Action/RankingBattle8Test.cs b/.Lib9c.Tests/Action/RankingBattle8Test.cs index bd13678a09..84c27666dc 100644 --- a/.Lib9c.Tests/Action/RankingBattle8Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle8Test.cs @@ -45,7 +45,7 @@ public RankingBattle8Test(ITestOutputHelper outputHelper) _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = GetAgentStateWithAvatarState( sheets, @@ -86,7 +86,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith TableSheets tableSheets, Address rankingMapAddress) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); @@ -280,14 +280,14 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) switch (caseIndex) { case 0: - signer = new PrivateKey().ToAddress(); + signer = new PrivateKey().Address; avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; - enemyAddress = new PrivateKey().ToAddress(); + enemyAddress = new PrivateKey().Address; break; } diff --git a/.Lib9c.Tests/Action/RankingBattle9Test.cs b/.Lib9c.Tests/Action/RankingBattle9Test.cs index 93a53b6678..92857c4d43 100644 --- a/.Lib9c.Tests/Action/RankingBattle9Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle9Test.cs @@ -45,7 +45,7 @@ public RankingBattle9Test(ITestOutputHelper outputHelper) _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = GetAgentStateWithAvatarState( sheets, @@ -86,7 +86,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith TableSheets tableSheets, Address rankingMapAddress) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); @@ -280,14 +280,14 @@ public void ExecuteThrowFailedLoadStateException(int caseIndex) switch (caseIndex) { case 0: - signer = new PrivateKey().ToAddress(); + signer = new PrivateKey().Address; avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; - enemyAddress = new PrivateKey().ToAddress(); + enemyAddress = new PrivateKey().Address; break; } diff --git a/.Lib9c.Tests/Action/RankingBattleTest.cs b/.Lib9c.Tests/Action/RankingBattleTest.cs index febeefe51f..2c3dc0d7a7 100644 --- a/.Lib9c.Tests/Action/RankingBattleTest.cs +++ b/.Lib9c.Tests/Action/RankingBattleTest.cs @@ -50,7 +50,7 @@ public RankingBattleTest(ITestOutputHelper outputHelper) _tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var (agent1State, avatar1State) = GetAgentStateWithAvatarState( sheets, @@ -111,7 +111,7 @@ public static (AgentState AgentState, AvatarState AvatarState) GetAgentStateWith TableSheets tableSheets, Address rankingMapAddress) { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/RapidCombination0Test.cs b/.Lib9c.Tests/Action/RapidCombination0Test.cs index bdf19a804f..85456b5fb2 100644 --- a/.Lib9c.Tests/Action/RapidCombination0Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination0Test.cs @@ -39,10 +39,10 @@ public RapidCombination0Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/RapidCombination2Test.cs b/.Lib9c.Tests/Action/RapidCombination2Test.cs index 9af19b7494..1a80942064 100644 --- a/.Lib9c.Tests/Action/RapidCombination2Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination2Test.cs @@ -39,10 +39,10 @@ public RapidCombination2Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/RapidCombination3Test.cs b/.Lib9c.Tests/Action/RapidCombination3Test.cs index 8bc2a45535..e690929620 100644 --- a/.Lib9c.Tests/Action/RapidCombination3Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination3Test.cs @@ -39,10 +39,10 @@ public RapidCombination3Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/RapidCombination4Test.cs b/.Lib9c.Tests/Action/RapidCombination4Test.cs index ad00e974e8..9874e37b9f 100644 --- a/.Lib9c.Tests/Action/RapidCombination4Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination4Test.cs @@ -41,10 +41,10 @@ public RapidCombination4Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/RapidCombination5Test.cs b/.Lib9c.Tests/Action/RapidCombination5Test.cs index 74d435df67..0f35acdc2a 100644 --- a/.Lib9c.Tests/Action/RapidCombination5Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination5Test.cs @@ -41,10 +41,10 @@ public RapidCombination5Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/RapidCombination6Test.cs b/.Lib9c.Tests/Action/RapidCombination6Test.cs index 8661ecc2ae..d43a6dea84 100644 --- a/.Lib9c.Tests/Action/RapidCombination6Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination6Test.cs @@ -43,10 +43,10 @@ public RapidCombination6Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/RapidCombination7Test.cs b/.Lib9c.Tests/Action/RapidCombination7Test.cs index 4b3e410f8f..de60d1dc14 100644 --- a/.Lib9c.Tests/Action/RapidCombination7Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination7Test.cs @@ -43,10 +43,10 @@ public RapidCombination7Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/RapidCombination8Test.cs b/.Lib9c.Tests/Action/RapidCombination8Test.cs index e7b0bf69c5..52f0bd6149 100644 --- a/.Lib9c.Tests/Action/RapidCombination8Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination8Test.cs @@ -45,10 +45,10 @@ public RapidCombination8Test() _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/RapidCombination9Test.cs b/.Lib9c.Tests/Action/RapidCombination9Test.cs index feed6308f1..25833ae3d5 100644 --- a/.Lib9c.Tests/Action/RapidCombination9Test.cs +++ b/.Lib9c.Tests/Action/RapidCombination9Test.cs @@ -60,10 +60,10 @@ public RapidCombination9Test() _initialState.SetState(Addresses.TableSheet.Derive(key), value.Serialize()); } - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/ReRegisterProduct0Test.cs b/.Lib9c.Tests/Action/ReRegisterProduct0Test.cs index 6b47b8b1c0..326ebdebc8 100644 --- a/.Lib9c.Tests/Action/ReRegisterProduct0Test.cs +++ b/.Lib9c.Tests/Action/ReRegisterProduct0Test.cs @@ -57,10 +57,10 @@ public ReRegisterProduct0Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _gameConfigState = new GameConfigState((Text)_tableSheets.GameConfigSheet.Serialize()); _avatarState = new AvatarState( _avatarAddress, diff --git a/.Lib9c.Tests/Action/ReRegisterProductTest.cs b/.Lib9c.Tests/Action/ReRegisterProductTest.cs index b6c24e1f35..544d143e9f 100644 --- a/.Lib9c.Tests/Action/ReRegisterProductTest.cs +++ b/.Lib9c.Tests/Action/ReRegisterProductTest.cs @@ -57,10 +57,10 @@ public ReRegisterProductTest(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _gameConfigState = new GameConfigState((Text)_tableSheets.GameConfigSheet.Serialize()); _avatarState = new AvatarState( _avatarAddress, diff --git a/.Lib9c.Tests/Action/RegisterProduct0Test.cs b/.Lib9c.Tests/Action/RegisterProduct0Test.cs index f1c9a16a48..83c6997f06 100644 --- a/.Lib9c.Tests/Action/RegisterProduct0Test.cs +++ b/.Lib9c.Tests/Action/RegisterProduct0Test.cs @@ -34,9 +34,9 @@ public class RegisterProduct0Test public RegisterProduct0Test() { - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; _tableSheets = new TableSheets(TableSheetsImporter.ImportSheets()); _gameConfigState = new GameConfigState((Text)_tableSheets.GameConfigSheet.Serialize()); _avatarState = new AvatarState( @@ -77,11 +77,11 @@ public static IEnumerable Execute_Validate_MemberData() { new RegisterInfo { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, }, new AssetInfo { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, }, }, Exc = typeof(InvalidAddressException), diff --git a/.Lib9c.Tests/Action/RegisterProduct2Test.cs b/.Lib9c.Tests/Action/RegisterProduct2Test.cs index e6ef9b82f5..fa54caa948 100644 --- a/.Lib9c.Tests/Action/RegisterProduct2Test.cs +++ b/.Lib9c.Tests/Action/RegisterProduct2Test.cs @@ -34,9 +34,9 @@ public class RegisterProduct2Test public RegisterProduct2Test() { - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; _tableSheets = new TableSheets(TableSheetsImporter.ImportSheets()); _gameConfigState = new GameConfigState((Text)_tableSheets.GameConfigSheet.Serialize()); _avatarState = new AvatarState( @@ -77,11 +77,11 @@ public static IEnumerable Execute_Validate_MemberData() { new RegisterInfo { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, }, new AssetInfo { - AvatarAddress = new PrivateKey().ToAddress(), + AvatarAddress = new PrivateKey().Address, }, }, Exc = typeof(InvalidAddressException), diff --git a/.Lib9c.Tests/Action/RenewAdminStateTest.cs b/.Lib9c.Tests/Action/RenewAdminStateTest.cs index 652c9f3084..7d7caad35b 100644 --- a/.Lib9c.Tests/Action/RenewAdminStateTest.cs +++ b/.Lib9c.Tests/Action/RenewAdminStateTest.cs @@ -21,7 +21,7 @@ public RenewAdminStateTest() { _adminPrivateKey = new PrivateKey(); _validUntil = 1_500_000L; - _adminState = new AdminState(_adminPrivateKey.ToAddress(), _validUntil); + _adminState = new AdminState(_adminPrivateKey.Address, _validUntil); _stateDelta = new Account( MockState.Empty .SetState(Addresses.Admin, _adminState.Serialize())); @@ -35,7 +35,7 @@ public void Execute() var stateDelta = action.Execute(new ActionContext { PreviousState = _stateDelta, - Signer = _adminPrivateKey.ToAddress(), + Signer = _adminPrivateKey.Address, }); var adminState = new AdminState((Bencodex.Types.Dictionary)stateDelta.GetState(Addresses.Admin)); @@ -54,7 +54,7 @@ public void RejectSignerExceptAdminAddress() action.Execute(new ActionContext { PreviousState = _stateDelta, - Signer = userPrivateKey.ToAddress(), + Signer = userPrivateKey.Address, }); }); } @@ -68,7 +68,7 @@ public void RenewAdminStateEvenAlreadyExpired() { BlockIndex = _validUntil + 1, PreviousState = _stateDelta, - Signer = _adminPrivateKey.ToAddress(), + Signer = _adminPrivateKey.Address, }); var adminState = new AdminState((Bencodex.Types.Dictionary)stateDelta.GetState(Addresses.Admin)); @@ -104,7 +104,7 @@ public void CreatePendingActivationsAfterRenewAdminState() { BlockIndex = blockIndex, PreviousState = _stateDelta, - Signer = _adminPrivateKey.ToAddress(), + Signer = _adminPrivateKey.Address, })); var newValidUntil = _validUntil + 1000; @@ -113,7 +113,7 @@ public void CreatePendingActivationsAfterRenewAdminState() { BlockIndex = blockIndex, PreviousState = _stateDelta, - Signer = _adminPrivateKey.ToAddress(), + Signer = _adminPrivateKey.Address, }); // After 100 blocks. @@ -124,7 +124,7 @@ public void CreatePendingActivationsAfterRenewAdminState() { BlockIndex = blockIndex, PreviousState = stateDelta, - Signer = _adminPrivateKey.ToAddress(), + Signer = _adminPrivateKey.Address, }); Address expectedPendingActivationStateAddress = diff --git a/.Lib9c.Tests/Action/RequestPledgeTest.cs b/.Lib9c.Tests/Action/RequestPledgeTest.cs index cf5a34f821..f61f56b566 100644 --- a/.Lib9c.Tests/Action/RequestPledgeTest.cs +++ b/.Lib9c.Tests/Action/RequestPledgeTest.cs @@ -18,10 +18,10 @@ public class RequestPledgeTest public void Execute(int contractedMead) { Currency mead = Currencies.Mead; - Address patron = new PrivateKey().ToAddress(); + Address patron = new PrivateKey().Address; var context = new ActionContext(); IAccount states = new Account(MockState.Empty).MintAsset(context, patron, 2 * mead); - var address = new PrivateKey().ToAddress(); + var address = new PrivateKey().Address; var action = new RequestPledge { AgentAddress = address, @@ -48,8 +48,8 @@ public void Execute(int contractedMead) [Fact] public void Execute_Throw_AlreadyContractedException() { - Address patron = new PrivateKey().ToAddress(); - var address = new PrivateKey().ToAddress(); + Address patron = new PrivateKey().Address; + var address = new PrivateKey().Address; Address contractAddress = address.GetPledgeAddress(); IAccount states = new Account(MockState.Empty).SetState(contractAddress, List.Empty); var action = new RequestPledge diff --git a/.Lib9c.Tests/Action/RewardGoldTest.cs b/.Lib9c.Tests/Action/RewardGoldTest.cs index 28e6dd2e41..63f8c7d920 100644 --- a/.Lib9c.Tests/Action/RewardGoldTest.cs +++ b/.Lib9c.Tests/Action/RewardGoldTest.cs @@ -49,7 +49,7 @@ public RewardGoldTest() "100010,전사,S,0,300,20,10,10,90,70,12,0.8,0.4,0,3.6,2.8,2,3"); var privateKey = new PrivateKey(); - var agentAddress = privateKey.PublicKey.ToAddress(); + var agentAddress = privateKey.PublicKey.Address; var avatarAddress = agentAddress.Derive("avatar"); _tableSheets = new TableSheets(sheets); @@ -64,7 +64,7 @@ public RewardGoldTest() ); _avatarState2 = new AvatarState( - new PrivateKey().ToAddress(), + new PrivateKey().Address, agentAddress, 0, _tableSheets.GetAvatarSheets(), @@ -513,7 +513,7 @@ public async Task Genesis_StateRootHash(bool mainnet) else { var adminPrivateKey = new PrivateKey(); - var adminAddress = adminPrivateKey.ToAddress(); + var adminAddress = adminPrivateKey.Address; var activatedAccounts = ImmutableHashSet
.Empty; var nonce = new byte[] { 0x00, 0x01, 0x02, 0x03 }; var privateKey = new PrivateKey(); @@ -581,8 +581,8 @@ public async Task Genesis_StateRootHash(bool mainnet) [InlineData(1, 0)] public void TransferMead(int patronMead, int balance) { - var agentAddress = new PrivateKey().ToAddress(); - var patronAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var patronAddress = new PrivateKey().Address; var contractAddress = agentAddress.GetPledgeAddress(); IActionContext context = new ActionContext(); IAccount states = new Account(MockState.Empty) diff --git a/.Lib9c.Tests/Action/RuneEnhancement0Test.cs b/.Lib9c.Tests/Action/RuneEnhancement0Test.cs index 47055e7b09..c3c6583537 100644 --- a/.Lib9c.Tests/Action/RuneEnhancement0Test.cs +++ b/.Lib9c.Tests/Action/RuneEnhancement0Test.cs @@ -28,8 +28,8 @@ public RuneEnhancement0Test() [InlineData(1)] public void Execute(int seed) { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); var blockIndex = tableSheets.WorldBossListSheet.Values @@ -180,8 +180,8 @@ public void Execute(int seed) [Fact] public void Execute_RuneCostNotFoundException() { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); var blockIndex = tableSheets.WorldBossListSheet.Values @@ -233,8 +233,8 @@ public void Execute_RuneCostNotFoundException() [Fact] public void Execute_RuneCostDataNotFoundException() { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); var blockIndex = tableSheets.WorldBossListSheet.Values @@ -301,8 +301,8 @@ public void Execute_RuneCostDataNotFoundException() [InlineData(true, false, true)] public void Execute_NotEnoughFungibleAssetValueException(bool ncg, bool crystal, bool rune) { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); var blockIndex = tableSheets.WorldBossListSheet.Values @@ -414,8 +414,8 @@ public void Execute_NotEnoughFungibleAssetValueException(bool ncg, bool crystal, [Fact] public void Execute_TryCountIsZeroException() { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); var blockIndex = tableSheets.WorldBossListSheet.Values diff --git a/.Lib9c.Tests/Action/RuneEnhancementTest.cs b/.Lib9c.Tests/Action/RuneEnhancementTest.cs index 5da3892af3..f3c1466b16 100644 --- a/.Lib9c.Tests/Action/RuneEnhancementTest.cs +++ b/.Lib9c.Tests/Action/RuneEnhancementTest.cs @@ -29,8 +29,8 @@ public RuneEnhancementTest() [InlineData(1)] public void Execute(int seed) { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); @@ -190,8 +190,8 @@ public void Execute(int seed) [Fact] public void Execute_RuneCostNotFoundException() { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); @@ -252,8 +252,8 @@ public void Execute_RuneCostNotFoundException() [Fact] public void Execute_RuneCostDataNotFoundException() { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); @@ -329,8 +329,8 @@ public void Execute_RuneCostDataNotFoundException() [InlineData(true, false, true)] public void Execute_NotEnoughFungibleAssetValueException(bool ncg, bool crystal, bool rune) { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); @@ -451,8 +451,8 @@ public void Execute_NotEnoughFungibleAssetValueException(bool ncg, bool crystal, [Fact] public void Execute_TryCountIsZeroException() { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var inventoryAddress = avatarAddress.Derive(LegacyInventoryKey); var worldInformationAddress = avatarAddress.Derive(LegacyWorldInformationKey); var questListAddress = avatarAddress.Derive(LegacyQuestListKey); @@ -514,8 +514,8 @@ public void Execute_TryCountIsZeroException() [Fact] public void Execute_FailedLoadStateException() { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); var blockIndex = tableSheets.WorldBossListSheet.Values diff --git a/.Lib9c.Tests/Action/Scenario/ArenaScenarioTest.cs b/.Lib9c.Tests/Action/Scenario/ArenaScenarioTest.cs index 3124435899..64ec2fc034 100644 --- a/.Lib9c.Tests/Action/Scenario/ArenaScenarioTest.cs +++ b/.Lib9c.Tests/Action/Scenario/ArenaScenarioTest.cs @@ -53,7 +53,7 @@ public ArenaScenarioTest(ITestOutputHelper outputHelper) _ncg = Currency.Legacy("NCG", 2, null); #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(_ncg); - _rankingMapAddress = new PrivateKey().ToAddress(); + _rankingMapAddress = new PrivateKey().Address; var clearStageId = Math.Max( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); @@ -157,7 +157,7 @@ public IAccount BattleArena( _tableSheets.StageSheet.First?.Id ?? 1, GameConfig.RequireClearedStageLevel.ActionsInRankingBoard); - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); var avatarAddress = agentAddress.Derive("avatar"); @@ -362,7 +362,7 @@ private bool TryGetTarget( } } - targetAddress = new PrivateKey().ToAddress(); + targetAddress = new PrivateKey().Address; return false; } diff --git a/.Lib9c.Tests/Action/Scenario/AuraScenarioTest.cs b/.Lib9c.Tests/Action/Scenario/AuraScenarioTest.cs index 86f14af051..4085442cef 100644 --- a/.Lib9c.Tests/Action/Scenario/AuraScenarioTest.cs +++ b/.Lib9c.Tests/Action/Scenario/AuraScenarioTest.cs @@ -35,10 +35,10 @@ public class AuraScenarioTest public AuraScenarioTest() { - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - _enemyAvatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + _enemyAvatarAddress = new PrivateKey().Address; var rankingMapAddress = _avatarAddress.Derive("ranking_map"); var sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(sheets); diff --git a/.Lib9c.Tests/Action/Scenario/MarketScenarioTest.cs b/.Lib9c.Tests/Action/Scenario/MarketScenarioTest.cs index 70f3d3f843..d58d015307 100644 --- a/.Lib9c.Tests/Action/Scenario/MarketScenarioTest.cs +++ b/.Lib9c.Tests/Action/Scenario/MarketScenarioTest.cs @@ -44,10 +44,10 @@ public MarketScenarioTest(ITestOutputHelper outputHelper) .WriteTo.TestOutput(outputHelper) .CreateLogger(); - _sellerAgentAddress = new PrivateKey().ToAddress(); + _sellerAgentAddress = new PrivateKey().Address; var agentState = new AgentState(_sellerAgentAddress); - _sellerAvatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _sellerAvatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _tableSheets = new TableSheets(TableSheetsImporter.ImportSheets()); _gameConfigState = new GameConfigState((Text)_tableSheets.GameConfigSheet.Serialize()); _sellerAvatarState = new AvatarState( @@ -65,9 +65,9 @@ public MarketScenarioTest(ITestOutputHelper outputHelper) }; agentState.avatarAddresses[0] = _sellerAvatarAddress; - _sellerAgentAddress2 = new PrivateKey().ToAddress(); + _sellerAgentAddress2 = new PrivateKey().Address; var agentState2 = new AgentState(_sellerAgentAddress2); - _sellerAvatarAddress2 = new PrivateKey().ToAddress(); + _sellerAvatarAddress2 = new PrivateKey().Address; _sellerAvatarState2 = new AvatarState( _sellerAvatarAddress2, _sellerAgentAddress2, @@ -83,9 +83,9 @@ public MarketScenarioTest(ITestOutputHelper outputHelper) }; agentState2.avatarAddresses[0] = _sellerAvatarAddress2; - _buyerAgentAddress = new PrivateKey().ToAddress(); + _buyerAgentAddress = new PrivateKey().Address; var agentState3 = new AgentState(_buyerAgentAddress); - _buyerAvatarAddress = new PrivateKey().ToAddress(); + _buyerAvatarAddress = new PrivateKey().Address; var buyerAvatarState = new AvatarState( _buyerAvatarAddress, _buyerAgentAddress, diff --git a/.Lib9c.Tests/Action/Scenario/MeadScenarioTest.cs b/.Lib9c.Tests/Action/Scenario/MeadScenarioTest.cs index 45ad143a2e..a802dfba70 100644 --- a/.Lib9c.Tests/Action/Scenario/MeadScenarioTest.cs +++ b/.Lib9c.Tests/Action/Scenario/MeadScenarioTest.cs @@ -17,11 +17,11 @@ public class MeadScenarioTest public void Contract() { Currency mead = Currencies.Mead; - var patron = new PrivateKey().ToAddress(); + var patron = new PrivateKey().Address; IActionContext context = new ActionContext(); IAccount states = new Account(MockState.Empty).MintAsset(context, patron, 10 * mead); - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var requestPledge = new RequestPledge { AgentAddress = agentAddress, diff --git a/.Lib9c.Tests/Action/Scenario/RuneScenarioTest.cs b/.Lib9c.Tests/Action/Scenario/RuneScenarioTest.cs index 694d31b12d..52bbecc378 100644 --- a/.Lib9c.Tests/Action/Scenario/RuneScenarioTest.cs +++ b/.Lib9c.Tests/Action/Scenario/RuneScenarioTest.cs @@ -21,9 +21,9 @@ public class RuneScenarioTest [Fact] public void Craft_And_Equip() { - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); - var avatarAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; var rankingMapAddress = avatarAddress.Derive("ranking_map"); var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); diff --git a/.Lib9c.Tests/Action/Scenario/SellAndCancellationAndSellTest.cs b/.Lib9c.Tests/Action/Scenario/SellAndCancellationAndSellTest.cs index bd451a4d3a..0981ab85e3 100644 --- a/.Lib9c.Tests/Action/Scenario/SellAndCancellationAndSellTest.cs +++ b/.Lib9c.Tests/Action/Scenario/SellAndCancellationAndSellTest.cs @@ -40,7 +40,7 @@ public SellAndCancellationAndSellTest(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var gameConfigState = new GameConfigState(sheets[nameof(GameConfigSheet)]); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; _avatarAddress = _agentAddress.Derive("avatar"); var agentState = new AgentState(_agentAddress); agentState.avatarAddresses[0] = _avatarAddress; diff --git a/.Lib9c.Tests/Action/Scenario/StakeAndClaimStakeReward2ScenarioTest.cs b/.Lib9c.Tests/Action/Scenario/StakeAndClaimStakeReward2ScenarioTest.cs index c39785cc47..74afc3852c 100644 --- a/.Lib9c.Tests/Action/Scenario/StakeAndClaimStakeReward2ScenarioTest.cs +++ b/.Lib9c.Tests/Action/Scenario/StakeAndClaimStakeReward2ScenarioTest.cs @@ -59,10 +59,10 @@ public StakeAndClaimStakeReward2ScenarioTest(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(_currency); - _signerAddress = new PrivateKey().ToAddress(); + _signerAddress = new PrivateKey().Address; var stakeStateAddress = StakeState.DeriveAddress(_signerAddress); var agentState = new AgentState(_signerAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; var rankingMapAddress = _avatarAddress.Derive("ranking_map"); agentState.avatarAddresses.Add(0, _avatarAddress); var avatarState = new AvatarState( diff --git a/.Lib9c.Tests/Action/Scenario/WorldUnlockScenarioTest.cs b/.Lib9c.Tests/Action/Scenario/WorldUnlockScenarioTest.cs index e6b09e6584..88c9330d49 100644 --- a/.Lib9c.Tests/Action/Scenario/WorldUnlockScenarioTest.cs +++ b/.Lib9c.Tests/Action/Scenario/WorldUnlockScenarioTest.cs @@ -29,7 +29,7 @@ public WorldUnlockScenarioTest() _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/Sell0Test.cs b/.Lib9c.Tests/Action/Sell0Test.cs index b7f0d18c84..ff77f3d83e 100644 --- a/.Lib9c.Tests/Action/Sell0Test.cs +++ b/.Lib9c.Tests/Action/Sell0Test.cs @@ -48,10 +48,10 @@ public Sell0Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/Sell10Test.cs b/.Lib9c.Tests/Action/Sell10Test.cs index 5def9fb2da..fbb4adaf9e 100644 --- a/.Lib9c.Tests/Action/Sell10Test.cs +++ b/.Lib9c.Tests/Action/Sell10Test.cs @@ -56,10 +56,10 @@ public Sell10Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/Sell11Test.cs b/.Lib9c.Tests/Action/Sell11Test.cs index d1d21d35b3..a2f62134bb 100644 --- a/.Lib9c.Tests/Action/Sell11Test.cs +++ b/.Lib9c.Tests/Action/Sell11Test.cs @@ -56,10 +56,10 @@ public Sell11Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/Sell2Test.cs b/.Lib9c.Tests/Action/Sell2Test.cs index 7bc01797c6..b745d5300d 100644 --- a/.Lib9c.Tests/Action/Sell2Test.cs +++ b/.Lib9c.Tests/Action/Sell2Test.cs @@ -48,10 +48,10 @@ public Sell2Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/Sell3Test.cs b/.Lib9c.Tests/Action/Sell3Test.cs index f0fbadbf8c..d91450ac86 100644 --- a/.Lib9c.Tests/Action/Sell3Test.cs +++ b/.Lib9c.Tests/Action/Sell3Test.cs @@ -50,10 +50,10 @@ public Sell3Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/Sell4Test.cs b/.Lib9c.Tests/Action/Sell4Test.cs index 5ce3774e5d..afec08473b 100644 --- a/.Lib9c.Tests/Action/Sell4Test.cs +++ b/.Lib9c.Tests/Action/Sell4Test.cs @@ -53,10 +53,10 @@ public Sell4Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/Sell5Test.cs b/.Lib9c.Tests/Action/Sell5Test.cs index 233c895b5a..98f075225b 100644 --- a/.Lib9c.Tests/Action/Sell5Test.cs +++ b/.Lib9c.Tests/Action/Sell5Test.cs @@ -52,10 +52,10 @@ public Sell5Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/Sell6Test.cs b/.Lib9c.Tests/Action/Sell6Test.cs index 6d44b68007..b7701e7606 100644 --- a/.Lib9c.Tests/Action/Sell6Test.cs +++ b/.Lib9c.Tests/Action/Sell6Test.cs @@ -52,10 +52,10 @@ public Sell6Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/Sell7Test.cs b/.Lib9c.Tests/Action/Sell7Test.cs index ec0116f05b..5c6be1efc1 100644 --- a/.Lib9c.Tests/Action/Sell7Test.cs +++ b/.Lib9c.Tests/Action/Sell7Test.cs @@ -56,10 +56,10 @@ public Sell7Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/Sell8Test.cs b/.Lib9c.Tests/Action/Sell8Test.cs index 729daedac7..eb2011ddcf 100644 --- a/.Lib9c.Tests/Action/Sell8Test.cs +++ b/.Lib9c.Tests/Action/Sell8Test.cs @@ -56,10 +56,10 @@ public Sell8Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/Sell9Test.cs b/.Lib9c.Tests/Action/Sell9Test.cs index 5114be1926..ec6b7de050 100644 --- a/.Lib9c.Tests/Action/Sell9Test.cs +++ b/.Lib9c.Tests/Action/Sell9Test.cs @@ -56,10 +56,10 @@ public Sell9Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/SellCancellation0Test.cs b/.Lib9c.Tests/Action/SellCancellation0Test.cs index 84043434ba..3a066c0c42 100644 --- a/.Lib9c.Tests/Action/SellCancellation0Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation0Test.cs @@ -43,10 +43,10 @@ public SellCancellation0Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(currency); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/SellCancellation2Test.cs b/.Lib9c.Tests/Action/SellCancellation2Test.cs index f1fdad4622..3e1f383ee3 100644 --- a/.Lib9c.Tests/Action/SellCancellation2Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation2Test.cs @@ -45,10 +45,10 @@ public SellCancellation2Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(currency); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/SellCancellation3Test.cs b/.Lib9c.Tests/Action/SellCancellation3Test.cs index 973836b275..3af69b482c 100644 --- a/.Lib9c.Tests/Action/SellCancellation3Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation3Test.cs @@ -43,10 +43,10 @@ public SellCancellation3Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(currency); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/SellCancellation4Test.cs b/.Lib9c.Tests/Action/SellCancellation4Test.cs index 15c09841de..fb77e8640f 100644 --- a/.Lib9c.Tests/Action/SellCancellation4Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation4Test.cs @@ -43,10 +43,10 @@ public SellCancellation4Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 var goldCurrencyState = new GoldCurrencyState(currency); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/SellCancellation5Test.cs b/.Lib9c.Tests/Action/SellCancellation5Test.cs index ba3ba8a171..b5cd00bdb6 100644 --- a/.Lib9c.Tests/Action/SellCancellation5Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation5Test.cs @@ -47,10 +47,10 @@ public SellCancellation5Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/SellCancellation6Test.cs b/.Lib9c.Tests/Action/SellCancellation6Test.cs index 7b7a35511e..99c9dea96e 100644 --- a/.Lib9c.Tests/Action/SellCancellation6Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation6Test.cs @@ -49,10 +49,10 @@ public SellCancellation6Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/SellCancellation7Test.cs b/.Lib9c.Tests/Action/SellCancellation7Test.cs index 625c885a7b..5628546450 100644 --- a/.Lib9c.Tests/Action/SellCancellation7Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation7Test.cs @@ -52,10 +52,10 @@ public SellCancellation7Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/SellCancellation8Test.cs b/.Lib9c.Tests/Action/SellCancellation8Test.cs index 560e578e96..126064b700 100644 --- a/.Lib9c.Tests/Action/SellCancellation8Test.cs +++ b/.Lib9c.Tests/Action/SellCancellation8Test.cs @@ -52,10 +52,10 @@ public SellCancellation8Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/SellCancellationTest.cs b/.Lib9c.Tests/Action/SellCancellationTest.cs index dd76f90c64..f300ee7c18 100644 --- a/.Lib9c.Tests/Action/SellCancellationTest.cs +++ b/.Lib9c.Tests/Action/SellCancellationTest.cs @@ -54,11 +54,11 @@ public SellCancellationTest(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(currency); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; _gameConfigState = new GameConfigState((Text)_tableSheets.GameConfigSheet.Serialize()); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; var avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/SellTest.cs b/.Lib9c.Tests/Action/SellTest.cs index f4cadd30de..4ebac75903 100644 --- a/.Lib9c.Tests/Action/SellTest.cs +++ b/.Lib9c.Tests/Action/SellTest.cs @@ -55,10 +55,10 @@ public SellTest(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs b/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs index c9ca72a8e6..92baeeacef 100644 --- a/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs +++ b/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs @@ -46,8 +46,8 @@ public Task TransferCrystal() var recipientPrivateKey = new PrivateKey(ByteUtil.ParseHex( "f8960846e9ae4ad1c23686f74c8e5f80f22336b6f2175be21db82afa8823c92d")); - var senderAddress = senderPrivateKey.ToAddress(); - var recipientAddress = recipientPrivateKey.ToAddress(); + var senderAddress = senderPrivateKey.Address; + var recipientAddress = recipientPrivateKey.Address; var crystal = CrystalCalculator.CRYSTAL; var context = new ActionContext(); @@ -103,8 +103,8 @@ public Task TransferWithMemo() var recipientPrivateKey = new PrivateKey(ByteUtil.ParseHex( "f8960846e9ae4ad1c23686f74c8e5f80f22336b6f2175be21db82afa8823c92d")); - var senderAddress = senderPrivateKey.ToAddress(); - var recipientAddress = recipientPrivateKey.ToAddress(); + var senderAddress = senderPrivateKey.Address; + var recipientAddress = recipientPrivateKey.Address; var crystal = CrystalCalculator.CRYSTAL; var context = new ActionContext(); diff --git a/.Lib9c.Tests/Action/Stake0Test.cs b/.Lib9c.Tests/Action/Stake0Test.cs index 4b2ab6e25d..07286cfbac 100644 --- a/.Lib9c.Tests/Action/Stake0Test.cs +++ b/.Lib9c.Tests/Action/Stake0Test.cs @@ -45,7 +45,7 @@ public Stake0Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(_currency); - _signerAddress = new PrivateKey().ToAddress(); + _signerAddress = new PrivateKey().Address; _initialState = _initialState .SetState(GoldCurrencyState.Address, _goldCurrencyState.Serialize()) .MintAsset(context, _signerAddress, _currency * 100); @@ -71,7 +71,7 @@ public void Execute_Throws_WhenThereIsMonsterCollection() MonsterCollectionState.DeriveAddress(_signerAddress, 0); var agentState = new AgentState(_signerAddress) { - avatarAddresses = { [0] = new PrivateKey().ToAddress(), }, + avatarAddresses = { [0] = new PrivateKey().Address, }, }; var states = _initialState .SetState(_signerAddress, agentState.Serialize()) diff --git a/.Lib9c.Tests/Action/Stake2Test.cs b/.Lib9c.Tests/Action/Stake2Test.cs index 18b8d63772..c599d2ed5c 100644 --- a/.Lib9c.Tests/Action/Stake2Test.cs +++ b/.Lib9c.Tests/Action/Stake2Test.cs @@ -46,7 +46,7 @@ public Stake2Test(ITestOutputHelper outputHelper) #pragma warning restore CS0618 _goldCurrencyState = new GoldCurrencyState(_currency); - _signerAddress = new PrivateKey().ToAddress(); + _signerAddress = new PrivateKey().Address; var context = new ActionContext(); _initialState = _initialState .SetState(GoldCurrencyState.Address, _goldCurrencyState.Serialize()) @@ -73,7 +73,7 @@ public void Execute_Throws_WhenThereIsMonsterCollection() MonsterCollectionState.DeriveAddress(_signerAddress, 0); var agentState = new AgentState(_signerAddress) { - avatarAddresses = { [0] = new PrivateKey().ToAddress(), }, + avatarAddresses = { [0] = new PrivateKey().Address, }, }; var states = _initialState .SetState(_signerAddress, agentState.Serialize()) diff --git a/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs b/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs index 547aa528ad..bf01380ad0 100644 --- a/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs +++ b/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs @@ -31,7 +31,7 @@ public AuraSummonTest() var sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(sheets); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; var agentState = new AgentState(_agentAddress); _avatarAddress = _agentAddress.Derive("avatar"); diff --git a/.Lib9c.Tests/Action/TransferAsset2Test.cs b/.Lib9c.Tests/Action/TransferAsset2Test.cs index e0c1318ed8..8bf8a7c724 100644 --- a/.Lib9c.Tests/Action/TransferAsset2Test.cs +++ b/.Lib9c.Tests/Action/TransferAsset2Test.cs @@ -221,7 +221,7 @@ public void ExecuteWithMinterAsRecipient() [Fact] public void ExecuteWithUnactivatedRecipient() { - var activatedAddress = new ActivatedAccountsState().AddAccount(new PrivateKey().ToAddress()); + var activatedAddress = new ActivatedAccountsState().AddAccount(new PrivateKey().Address); var prevState = new Account( MockState.Empty .SetState(_sender.Derive(ActivationKey.DeriveKey), true.Serialize()) diff --git a/.Lib9c.Tests/Action/TransferAsset3Test.cs b/.Lib9c.Tests/Action/TransferAsset3Test.cs index 94e43475cb..cb74a2f454 100644 --- a/.Lib9c.Tests/Action/TransferAsset3Test.cs +++ b/.Lib9c.Tests/Action/TransferAsset3Test.cs @@ -245,7 +245,7 @@ public void ExecuteWithMinterAsRecipient() [Fact] public void ExecuteWithUnactivatedRecipient() { - var activatedAddress = new ActivatedAccountsState().AddAccount(new PrivateKey().ToAddress()); + var activatedAddress = new ActivatedAccountsState().AddAccount(new PrivateKey().Address); var prevState = new Account( MockState.Empty .SetState(_sender.Derive(ActivationKey.DeriveKey), true.Serialize()) diff --git a/.Lib9c.Tests/Action/TransferAsset4Test.cs b/.Lib9c.Tests/Action/TransferAsset4Test.cs index 608685e4d1..1877f65a4d 100644 --- a/.Lib9c.Tests/Action/TransferAsset4Test.cs +++ b/.Lib9c.Tests/Action/TransferAsset4Test.cs @@ -49,7 +49,7 @@ public void Constructor_ThrowsMemoLengthOverflowException() public void Execute() { var contractAddress = _sender.Derive(nameof(RequestPledge)); - var patronAddress = new PrivateKey().ToAddress(); + var patronAddress = new PrivateKey().Address; var prevState = new Account( MockState.Empty .SetBalance(_sender, _currency * 1000) diff --git a/.Lib9c.Tests/Action/TransferAssetTest.cs b/.Lib9c.Tests/Action/TransferAssetTest.cs index 84b5f6548e..9f4c153fff 100644 --- a/.Lib9c.Tests/Action/TransferAssetTest.cs +++ b/.Lib9c.Tests/Action/TransferAssetTest.cs @@ -52,7 +52,7 @@ public void Constructor_ThrowsMemoLengthOverflowException() public void Execute() { var contractAddress = _sender.Derive(nameof(RequestPledge)); - var patronAddress = new PrivateKey().ToAddress(); + var patronAddress = new PrivateKey().Address; var prevState = new Account( MockState.Empty .SetBalance(_sender, _currency * 1000) diff --git a/.Lib9c.Tests/Action/TransferAssets0Test.cs b/.Lib9c.Tests/Action/TransferAssets0Test.cs index 674d5402f9..c792511094 100644 --- a/.Lib9c.Tests/Action/TransferAssets0Test.cs +++ b/.Lib9c.Tests/Action/TransferAssets0Test.cs @@ -277,7 +277,7 @@ public void ExecuteWithMinterAsRecipient() [Fact] public void ExecuteWithUnactivatedRecipient() { - var activatedAddress = new ActivatedAccountsState().AddAccount(new PrivateKey().ToAddress()); + var activatedAddress = new ActivatedAccountsState().AddAccount(new PrivateKey().Address); var prevState = new Account( MockState.Empty .SetState(_sender.Derive(ActivationKey.DeriveKey), true.Serialize()) diff --git a/.Lib9c.Tests/Action/TransferAssets2Test.cs b/.Lib9c.Tests/Action/TransferAssets2Test.cs index 68d41a8760..1bd683d9de 100644 --- a/.Lib9c.Tests/Action/TransferAssets2Test.cs +++ b/.Lib9c.Tests/Action/TransferAssets2Test.cs @@ -65,7 +65,7 @@ public void Constructor_ThrowsMemoLengthOverflowException() public void Execute() { var contractAddress = _sender.Derive(nameof(RequestPledge)); - var patronAddress = new PrivateKey().ToAddress(); + var patronAddress = new PrivateKey().Address; var prevState = new Account( MockState.Empty .SetBalance(_sender, _currency * 1000) diff --git a/.Lib9c.Tests/Action/TransferAssetsTest.cs b/.Lib9c.Tests/Action/TransferAssetsTest.cs index 6cc584fb57..8800d5fc21 100644 --- a/.Lib9c.Tests/Action/TransferAssetsTest.cs +++ b/.Lib9c.Tests/Action/TransferAssetsTest.cs @@ -67,7 +67,7 @@ public void Constructor_ThrowsMemoLengthOverflowException() public void Execute() { var contractAddress = _sender.Derive(nameof(RequestPledge)); - var patronAddress = new PrivateKey().ToAddress(); + var patronAddress = new PrivateKey().Address; var prevState = new Account( MockState.Empty .SetBalance(_sender, _currency * 1000) diff --git a/.Lib9c.Tests/Action/UnlockEquipmentRecipe1Test.cs b/.Lib9c.Tests/Action/UnlockEquipmentRecipe1Test.cs index db324c7e8e..6d4d55db1f 100644 --- a/.Lib9c.Tests/Action/UnlockEquipmentRecipe1Test.cs +++ b/.Lib9c.Tests/Action/UnlockEquipmentRecipe1Test.cs @@ -31,8 +31,8 @@ public UnlockEquipmentRecipe1Test() _random = new TestRandom(); var sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 _currency = Currency.Legacy("CRYSTAL", 18, null); @@ -206,7 +206,7 @@ public void UnlockedIds(ItemSubType itemSubType) } // Unlock All recipe by ItemSubType - UnlockEquipmentRecipe1.UnlockedIds(_initialState, new PrivateKey().ToAddress(), _tableSheets.EquipmentItemRecipeSheet, worldInformation, rows.Select(i => i.Id).ToList()); + UnlockEquipmentRecipe1.UnlockedIds(_initialState, new PrivateKey().Address, _tableSheets.EquipmentItemRecipeSheet, worldInformation, rows.Select(i => i.Id).ToList()); } } } diff --git a/.Lib9c.Tests/Action/UnlockEquipmentRecipeTest.cs b/.Lib9c.Tests/Action/UnlockEquipmentRecipeTest.cs index a7f8bf3888..90305c7245 100644 --- a/.Lib9c.Tests/Action/UnlockEquipmentRecipeTest.cs +++ b/.Lib9c.Tests/Action/UnlockEquipmentRecipeTest.cs @@ -31,8 +31,8 @@ public UnlockEquipmentRecipeTest() _random = new TestRandom(); var sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 _currency = Currency.Legacy("CRYSTAL", 18, null); @@ -206,7 +206,7 @@ public void UnlockedIds(ItemSubType itemSubType) } // Unlock All recipe by ItemSubType - UnlockEquipmentRecipe.UnlockedIds(_initialState, new PrivateKey().ToAddress(), _tableSheets.EquipmentItemRecipeSheet, worldInformation, rows.Select(i => i.Id).ToList()); + UnlockEquipmentRecipe.UnlockedIds(_initialState, new PrivateKey().Address, _tableSheets.EquipmentItemRecipeSheet, worldInformation, rows.Select(i => i.Id).ToList()); } } } diff --git a/.Lib9c.Tests/Action/UnlockRuneSlotTest.cs b/.Lib9c.Tests/Action/UnlockRuneSlotTest.cs index 2a0b436548..7f18abbd16 100644 --- a/.Lib9c.Tests/Action/UnlockRuneSlotTest.cs +++ b/.Lib9c.Tests/Action/UnlockRuneSlotTest.cs @@ -24,8 +24,8 @@ public UnlockRuneSlotTest() public IAccount Init(out Address agentAddress, out Address avatarAddress, out long blockIndex) { - agentAddress = new PrivateKey().ToAddress(); - avatarAddress = new PrivateKey().ToAddress(); + agentAddress = new PrivateKey().Address; + avatarAddress = new PrivateKey().Address; var sheets = TableSheetsImporter.ImportSheets(); var tableSheets = new TableSheets(sheets); blockIndex = tableSheets.WorldBossListSheet.Values diff --git a/.Lib9c.Tests/Action/UnlockWorld1Test.cs b/.Lib9c.Tests/Action/UnlockWorld1Test.cs index a7a4747b03..087c960bf5 100644 --- a/.Lib9c.Tests/Action/UnlockWorld1Test.cs +++ b/.Lib9c.Tests/Action/UnlockWorld1Test.cs @@ -32,8 +32,8 @@ public UnlockWorld1Test() _random = new TestRandom(); var sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; _currency = CrystalCalculator.CRYSTAL; var gameConfigState = new GameConfigState(sheets[nameof(GameConfigSheet)]); diff --git a/.Lib9c.Tests/Action/UnlockWorldTest.cs b/.Lib9c.Tests/Action/UnlockWorldTest.cs index acbbd01d47..e776873632 100644 --- a/.Lib9c.Tests/Action/UnlockWorldTest.cs +++ b/.Lib9c.Tests/Action/UnlockWorldTest.cs @@ -32,8 +32,8 @@ public UnlockWorldTest() _random = new TestRandom(); var sheets = TableSheetsImporter.ImportSheets(); _tableSheets = new TableSheets(sheets); - _agentAddress = new PrivateKey().ToAddress(); - _avatarAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; + _avatarAddress = new PrivateKey().Address; _currency = CrystalCalculator.CRYSTAL; var gameConfigState = new GameConfigState(sheets[nameof(GameConfigSheet)]); diff --git a/.Lib9c.Tests/Action/UpdateSell0Test.cs b/.Lib9c.Tests/Action/UpdateSell0Test.cs index 318f2e60b3..3819505da5 100644 --- a/.Lib9c.Tests/Action/UpdateSell0Test.cs +++ b/.Lib9c.Tests/Action/UpdateSell0Test.cs @@ -55,10 +55,10 @@ public UpdateSell0Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/UpdateSell2Test.cs b/.Lib9c.Tests/Action/UpdateSell2Test.cs index 8fba2d6733..e34a73d722 100644 --- a/.Lib9c.Tests/Action/UpdateSell2Test.cs +++ b/.Lib9c.Tests/Action/UpdateSell2Test.cs @@ -55,10 +55,10 @@ public UpdateSell2Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/UpdateSell3Test.cs b/.Lib9c.Tests/Action/UpdateSell3Test.cs index dfe27a77c9..91e0376e6b 100644 --- a/.Lib9c.Tests/Action/UpdateSell3Test.cs +++ b/.Lib9c.Tests/Action/UpdateSell3Test.cs @@ -55,10 +55,10 @@ public UpdateSell3Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/UpdateSell4Test.cs b/.Lib9c.Tests/Action/UpdateSell4Test.cs index af62a0356a..15a963f373 100644 --- a/.Lib9c.Tests/Action/UpdateSell4Test.cs +++ b/.Lib9c.Tests/Action/UpdateSell4Test.cs @@ -55,10 +55,10 @@ public UpdateSell4Test(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Action/UpdateSellTest.cs b/.Lib9c.Tests/Action/UpdateSellTest.cs index d93344e537..111653f423 100644 --- a/.Lib9c.Tests/Action/UpdateSellTest.cs +++ b/.Lib9c.Tests/Action/UpdateSellTest.cs @@ -55,10 +55,10 @@ public UpdateSellTest(ITestOutputHelper outputHelper) var shopState = new ShopState(); - _agentAddress = new PrivateKey().ToAddress(); + _agentAddress = new PrivateKey().Address; var agentState = new AgentState(_agentAddress); - _avatarAddress = new PrivateKey().ToAddress(); - var rankingMapAddress = new PrivateKey().ToAddress(); + _avatarAddress = new PrivateKey().Address; + var rankingMapAddress = new PrivateKey().Address; _avatarState = new AvatarState( _avatarAddress, _agentAddress, diff --git a/.Lib9c.Tests/Battle/EnemyPlayerDigestTest.cs b/.Lib9c.Tests/Battle/EnemyPlayerDigestTest.cs index 9706fd867a..bb38e671b2 100644 --- a/.Lib9c.Tests/Battle/EnemyPlayerDigestTest.cs +++ b/.Lib9c.Tests/Battle/EnemyPlayerDigestTest.cs @@ -20,12 +20,12 @@ public EnemyPlayerDigestTest() { _tableSheets = new TableSheets(TableSheetsImporter.ImportSheets()); var avatarState = new AvatarState( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, 1234, _tableSheets.GetAvatarSheets(), new GameConfigState(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, "test" ); avatarState.hair = 2; diff --git a/.Lib9c.Tests/CurrenciesTest.cs b/.Lib9c.Tests/CurrenciesTest.cs index 88adb36deb..fe15f43461 100644 --- a/.Lib9c.Tests/CurrenciesTest.cs +++ b/.Lib9c.Tests/CurrenciesTest.cs @@ -205,12 +205,12 @@ public void GetSoulStones_With_Sheet_Throws_ArgumentNullException() [Fact] public void SelectRecipientAddress() { - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; Assert.Equal(agentAddress, Currencies.SelectRecipientAddress(Currencies.Crystal, agentAddress, avatarAddress)); Assert.Equal(agentAddress, Currencies.SelectRecipientAddress(Currencies.Garage, agentAddress, avatarAddress)); Assert.Equal(agentAddress, Currencies.SelectRecipientAddress(Currencies.Mead, agentAddress, avatarAddress)); - Assert.Equal(agentAddress, Currencies.SelectRecipientAddress(Currency.Legacy("NCG", decimalPlaces: 2, minter: new PrivateKey().ToAddress()), agentAddress, avatarAddress)); + Assert.Equal(agentAddress, Currencies.SelectRecipientAddress(Currency.Legacy("NCG", decimalPlaces: 2, minter: new PrivateKey().Address), agentAddress, avatarAddress)); Assert.Equal(avatarAddress, Currencies.SelectRecipientAddress(Currencies.DailyRewardRune, agentAddress, avatarAddress)); } } diff --git a/.Lib9c.Tests/Extensions/EquipmentExtensionsTest.cs b/.Lib9c.Tests/Extensions/EquipmentExtensionsTest.cs index dec0621092..4b7c9f0c7a 100644 --- a/.Lib9c.Tests/Extensions/EquipmentExtensionsTest.cs +++ b/.Lib9c.Tests/Extensions/EquipmentExtensionsTest.cs @@ -138,7 +138,7 @@ private Equipment CreateEquipment( if (!(subRecipeRow is null)) { CombinationEquipment16.AddAndUnlockOption( - new AgentState(new PrivateKey().ToAddress()), + new AgentState(new PrivateKey().Address), null, equipment, random, diff --git a/.Lib9c.Tests/Model/Arena/ArenaAvatarStateTest.cs b/.Lib9c.Tests/Model/Arena/ArenaAvatarStateTest.cs index 6633ebf074..53460da851 100644 --- a/.Lib9c.Tests/Model/Arena/ArenaAvatarStateTest.cs +++ b/.Lib9c.Tests/Model/Arena/ArenaAvatarStateTest.cs @@ -18,8 +18,8 @@ public ArenaAvatarStateTest() [Fact] public void Serialize() { - var avatarAddress = new PrivateKey().ToAddress(); - var agentAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; + var agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); var state = new ArenaAvatarState(avatarState); diff --git a/.Lib9c.Tests/Model/Arena/ArenaInformationTest.cs b/.Lib9c.Tests/Model/Arena/ArenaInformationTest.cs index ffc42af24d..b5dfad9ff6 100644 --- a/.Lib9c.Tests/Model/Arena/ArenaInformationTest.cs +++ b/.Lib9c.Tests/Model/Arena/ArenaInformationTest.cs @@ -10,7 +10,7 @@ public class ArenaInformationTest [Fact] public void Serialize() { - var avatarAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; var state = new ArenaInformation(avatarAddress, 1, 1); var serialized = (List)state.Serialize(); var deserialized = new ArenaInformation(serialized); diff --git a/.Lib9c.Tests/Model/Arena/ArenaScoreTest.cs b/.Lib9c.Tests/Model/Arena/ArenaScoreTest.cs index cd95f93066..96127eca09 100644 --- a/.Lib9c.Tests/Model/Arena/ArenaScoreTest.cs +++ b/.Lib9c.Tests/Model/Arena/ArenaScoreTest.cs @@ -10,7 +10,7 @@ public class ArenaScoreTest [Fact] public void Serialize() { - var avatarAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; var state = new ArenaScore(avatarAddress, 1, 1); var serialized = (List)state.Serialize(); var deserialized = new ArenaScore(serialized); diff --git a/.Lib9c.Tests/Model/Arena/PlayerDigestTest.cs b/.Lib9c.Tests/Model/Arena/PlayerDigestTest.cs index 8b477bf9a1..fead415ac2 100644 --- a/.Lib9c.Tests/Model/Arena/PlayerDigestTest.cs +++ b/.Lib9c.Tests/Model/Arena/PlayerDigestTest.cs @@ -22,12 +22,12 @@ public PlayerDigestTest() { _tableSheets = new TableSheets(TableSheetsImporter.ImportSheets()); var avatarState = new AvatarState( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, 1234, _tableSheets.GetAvatarSheets(), new GameConfigState(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, "test" ); avatarState.hair = 2; diff --git a/.Lib9c.Tests/Model/GrandFinale/GrandFinaleInformationTest.cs b/.Lib9c.Tests/Model/GrandFinale/GrandFinaleInformationTest.cs index 3132f7a134..4a948ebda0 100644 --- a/.Lib9c.Tests/Model/GrandFinale/GrandFinaleInformationTest.cs +++ b/.Lib9c.Tests/Model/GrandFinale/GrandFinaleInformationTest.cs @@ -10,9 +10,9 @@ public class GrandFinaleInformationTest [Fact] public void Serialize() { - var avatarAddress = new PrivateKey().ToAddress(); - var addr1 = new PrivateKey().ToAddress(); - var addr2 = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; + var addr1 = new PrivateKey().Address; + var addr2 = new PrivateKey().Address; var state = new GrandFinaleInformation(avatarAddress, 1); state.UpdateRecord(addr1, true); state.UpdateRecord(addr2, false); @@ -32,9 +32,9 @@ public void Serialize() [Fact] public void UpdateBattleRecord() { - var avatarAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; var state = new GrandFinaleInformation(avatarAddress, 1); - var enemyAddr = new PrivateKey().ToAddress(); + var enemyAddr = new PrivateKey().Address; state.UpdateRecord(enemyAddr, true); var serialized = (List)state.Serialize(); var deserialized = new GrandFinaleInformation(serialized); @@ -42,7 +42,7 @@ public void UpdateBattleRecord() Assert.Equal(state.Address, deserialized.Address); Assert.True(state.TryGetBattleRecord(enemyAddr, out var win)); Assert.True(win); - Assert.False(state.TryGetBattleRecord(new PrivateKey().ToAddress(), out _)); + Assert.False(state.TryGetBattleRecord(new PrivateKey().Address, out _)); } } } diff --git a/.Lib9c.Tests/Model/Item/ShopItemTest.cs b/.Lib9c.Tests/Model/Item/ShopItemTest.cs index dd1b86f90c..366d947f65 100644 --- a/.Lib9c.Tests/Model/Item/ShopItemTest.cs +++ b/.Lib9c.Tests/Model/Item/ShopItemTest.cs @@ -57,8 +57,8 @@ public void Serialize_With_ExpiredBlockIndex(long expiredBlockIndex, bool contai var equipmentRow = _tableSheets.EquipmentItemSheet.First; var equipment = ItemFactory.CreateItemUsable(equipmentRow, Guid.NewGuid(), 0); var shopItem = new ShopItem( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, Guid.NewGuid(), new FungibleAssetValue(_currency, 100, 0), expiredBlockIndex, @@ -79,8 +79,8 @@ public void ThrowArgumentOurOfRangeException() var equipmentRow = _tableSheets.EquipmentItemSheet.First; var equipment = ItemFactory.CreateItemUsable(equipmentRow, Guid.NewGuid(), 0); Assert.Throws(() => new ShopItem( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, Guid.NewGuid(), new FungibleAssetValue(_currency, 100, 0), -1, @@ -93,8 +93,8 @@ public void DeserializeThrowArgumentOurOfRangeException() var equipmentRow = _tableSheets.EquipmentItemSheet.First; var equipment = ItemFactory.CreateItemUsable(equipmentRow, Guid.NewGuid(), 0); var shopItem = new ShopItem( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, Guid.NewGuid(), new FungibleAssetValue(_currency, 100, 0), 0, @@ -116,8 +116,8 @@ private static ShopItem GetShopItemWithFirstCostume() var costumeRow = _tableSheets.CostumeItemSheet.First; var costume = ItemFactory.CreateCostume(costumeRow, Guid.NewGuid()); return new ShopItem( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, Guid.NewGuid(), new FungibleAssetValue(_currency, 100, 0), costume); @@ -128,8 +128,8 @@ private static ShopItem GetShopItemWithFirstEquipment() var equipmentRow = _tableSheets.EquipmentItemSheet.First; var equipment = ItemFactory.CreateItemUsable(equipmentRow, Guid.NewGuid(), 0); return new ShopItem( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, Guid.NewGuid(), new FungibleAssetValue(_currency, 100, 0), (ITradableItem)equipment); @@ -140,8 +140,8 @@ private static ShopItem GetShopItemWithFirstMaterial() var row = _tableSheets.MaterialItemSheet.First; var tradableMaterial = ItemFactory.CreateTradableMaterial(row); return new ShopItem( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, Guid.NewGuid(), new FungibleAssetValue(_currency, 100, 0), 1, @@ -158,8 +158,8 @@ private static IEnumerable GetShopItemsWithTradableMaterial() { var tradableMaterial = new TradableMaterial(row); var shopItem = new ShopItem( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, Guid.NewGuid(), new FungibleAssetValue(_currency, 100, 0), 1, diff --git a/.Lib9c.Tests/Model/ItemNotificationTest.cs b/.Lib9c.Tests/Model/ItemNotificationTest.cs index 3db69d4b4a..65611f4cd2 100644 --- a/.Lib9c.Tests/Model/ItemNotificationTest.cs +++ b/.Lib9c.Tests/Model/ItemNotificationTest.cs @@ -30,7 +30,7 @@ public ItemNotificationTest() var sheets = TableSheetsImporter.ImportSheets(); var privateKey = new PrivateKey(); - _agentAddress = privateKey.PublicKey.ToAddress(); + _agentAddress = privateKey.PublicKey.Address; _tableSheets = new TableSheets(sheets); } diff --git a/.Lib9c.Tests/Model/Skill/NormalAttackTest.cs b/.Lib9c.Tests/Model/Skill/NormalAttackTest.cs index 3ebd7afd3b..bf73f2aa14 100644 --- a/.Lib9c.Tests/Model/Skill/NormalAttackTest.cs +++ b/.Lib9c.Tests/Model/Skill/NormalAttackTest.cs @@ -37,12 +37,12 @@ public void Use(bool copyCharacter) var normalAttack = new NormalAttack(skillRow, 100, 100, default, StatType.NONE); var avatarState = new AvatarState( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, 0, tableSheets.GetAvatarSheets(), new GameConfigState(), - new PrivateKey().ToAddress()); + new PrivateKey().Address); var worldRow = tableSheets.WorldSheet.First; Assert.NotNull(worldRow); diff --git a/.Lib9c.Tests/Model/Stake/StakeStateUtilsTest.cs b/.Lib9c.Tests/Model/Stake/StakeStateUtilsTest.cs index c5f98be649..1fa158d242 100644 --- a/.Lib9c.Tests/Model/Stake/StakeStateUtilsTest.cs +++ b/.Lib9c.Tests/Model/Stake/StakeStateUtilsTest.cs @@ -32,7 +32,7 @@ public void TryMigrate_Return_False_When_IValue_Null() public void TryMigrate_Return_False_When_Staking_State_Null() { var state = new Account(MockState.Empty); - Assert.False(StakeStateUtils.TryMigrate(state, new PrivateKey().ToAddress(), out _)); + Assert.False(StakeStateUtils.TryMigrate(state, new PrivateKey().Address, out _)); } [Theory] @@ -111,7 +111,7 @@ public void TryMigrate_Return_True_With_StakeState( state = state.SetState( Addresses.GameConfig, new GameConfigState(GameConfigSheetFixtures.Default).Serialize()); - var stakeAddr = new PrivateKey().ToAddress(); + var stakeAddr = new PrivateKey().Address; var stakeState = new StakeState(stakeAddr, startedBlockIndex); if (receivedBlockIndex is not null) { @@ -143,7 +143,7 @@ public void TryMigrate_Return_True_With_StakeStateV2( state = state.SetState( Addresses.GameConfig, new GameConfigState(GameConfigSheetFixtures.Default).Serialize()); - var stakeAddr = new PrivateKey().ToAddress(); + var stakeAddr = new PrivateKey().Address; var stakePolicySheet = new StakePolicySheet(); stakePolicySheet.Set(StakePolicySheetFixtures.V2); var contract = new Contract(stakePolicySheet); diff --git a/.Lib9c.Tests/Model/Stake/StakeStateV2Test.cs b/.Lib9c.Tests/Model/Stake/StakeStateV2Test.cs index 924baefb0f..e2470170eb 100644 --- a/.Lib9c.Tests/Model/Stake/StakeStateV2Test.cs +++ b/.Lib9c.Tests/Model/Stake/StakeStateV2Test.cs @@ -11,7 +11,7 @@ public class StakeStateV2Test [Fact] public void DeriveAddress() { - var agentAddr = new PrivateKey().ToAddress(); + var agentAddr = new PrivateKey().Address; var expectedStakeStateAddr = StakeState.DeriveAddress(agentAddr); Assert.Equal(expectedStakeStateAddr, StakeStateV2.DeriveAddress(agentAddr)); } @@ -63,7 +63,7 @@ public void Constructor_Throw_ArgumentOutOfRangeException( public void Constructor_With_StakeState(long startedBlockIndex, long? receivedBlockIndex) { var stakeState = new StakeState( - new PrivateKey().ToAddress(), + new PrivateKey().Address, startedBlockIndex); if (receivedBlockIndex.HasValue) { @@ -84,7 +84,7 @@ public void Constructor_With_StakeState(long startedBlockIndex, long? receivedBl [Fact] public void Constructor_With_StakeState_Throw_ArgumentNullException() { - var stakeState = new StakeState(new PrivateKey().ToAddress(), 0); + var stakeState = new StakeState(new PrivateKey().Address, 0); var contract = new Contract( Contract.StakeRegularFixedRewardSheetPrefix, Contract.StakeRegularRewardSheetPrefix, diff --git a/.Lib9c.Tests/Model/State/AdminStateTest.cs b/.Lib9c.Tests/Model/State/AdminStateTest.cs index 2531019b0f..adb3d56959 100644 --- a/.Lib9c.Tests/Model/State/AdminStateTest.cs +++ b/.Lib9c.Tests/Model/State/AdminStateTest.cs @@ -11,7 +11,7 @@ public class AdminStateTest [Fact] public void Serialize() { - var adminStateAddress = new PrivateKey().ToAddress(); + var adminStateAddress = new PrivateKey().Address; var validUntil = 100; var adminState = new AdminState(adminStateAddress, validUntil); @@ -25,7 +25,7 @@ public void Serialize() [Fact] public void SerializeWithDotNetAPI() { - var adminStateAddress = new PrivateKey().ToAddress(); + var adminStateAddress = new PrivateKey().Address; var validUntil = 100; var adminState = new AdminState(adminStateAddress, validUntil); diff --git a/.Lib9c.Tests/Model/State/AgentStateTest.cs b/.Lib9c.Tests/Model/State/AgentStateTest.cs index 27e4566ee1..b9ae3568d3 100644 --- a/.Lib9c.Tests/Model/State/AgentStateTest.cs +++ b/.Lib9c.Tests/Model/State/AgentStateTest.cs @@ -11,7 +11,7 @@ public class AgentStateTest [Fact] public void Serialize() { - var agentStateAddress = new PrivateKey().ToAddress(); + var agentStateAddress = new PrivateKey().Address; var agentState = new AgentState(agentStateAddress); var serialized = agentState.Serialize(); @@ -23,7 +23,7 @@ public void Serialize() [Fact] public void SerializeWithDotNetAPI() { - var agentStateAddress = new PrivateKey().ToAddress(); + var agentStateAddress = new PrivateKey().Address; var agentState = new AgentState(agentStateAddress); var formatter = new BinaryFormatter(); diff --git a/.Lib9c.Tests/Model/State/AvatarStateTest.cs b/.Lib9c.Tests/Model/State/AvatarStateTest.cs index c86d2078da..69b6b5f254 100644 --- a/.Lib9c.Tests/Model/State/AvatarStateTest.cs +++ b/.Lib9c.Tests/Model/State/AvatarStateTest.cs @@ -32,8 +32,8 @@ public AvatarStateTest() [Fact] public void Serialize() { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); var serialized = avatarState.Serialize(); @@ -59,8 +59,8 @@ public void Serialize() [InlineData(4)] public async Task ConstructDeterministic(int waitMilliseconds) { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; AvatarState avatarStateA = GetNewAvatarState(avatarAddress, agentAddress); await Task.Delay(waitMilliseconds); AvatarState avatarStateB = GetNewAvatarState(avatarAddress, agentAddress); @@ -74,8 +74,8 @@ HashDigest Hash(AvatarState avatarState) => public void UpdateFromQuestRewardDeterministic() { var rankingState = new RankingState1(); - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, agentAddress, @@ -121,8 +121,8 @@ public void UpdateFromQuestRewardDeterministic() [InlineData(5, GameConfig.RequireCharacterLevel.CharacterConsumableSlot5)] public void ValidateConsumable(int count, int level) { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); avatarState.level = level; @@ -142,8 +142,8 @@ public void ValidateConsumable(int count, int level) [Fact] public void ValidateConsumableThrowRequiredBlockIndexException() { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); var consumableIds = new List(); @@ -158,8 +158,8 @@ public void ValidateConsumableThrowRequiredBlockIndexException() [Fact] public void ValidateConsumableThrowConsumableSlotOutOfRangeException() { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); avatarState.level = GameConfig.RequireCharacterLevel.CharacterConsumableSlot5; @@ -184,8 +184,8 @@ public void ValidateConsumableThrowConsumableSlotOutOfRangeException() [InlineData(5, GameConfig.RequireCharacterLevel.CharacterConsumableSlot5)] public void ValidateConsumableSlotThrowConsumableSlotUnlockException(int count, int level) { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); avatarState.level = level - 1; @@ -205,8 +205,8 @@ public void ValidateConsumableSlotThrowConsumableSlotUnlockException(int count, [Fact] public void ValidateCostume() { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); avatarState.level = 100; @@ -240,8 +240,8 @@ public void ValidateCostume() [InlineData(ItemSubType.Title)] public void ValidateCostumeThrowDuplicateCostumeException(ItemSubType type) { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); avatarState.level = 100; @@ -265,8 +265,8 @@ public void ValidateCostumeThrowDuplicateCostumeException(ItemSubType type) [Fact] public void ValidateCostumeThrowInvalidItemTypeException() { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); avatarState.level = 100; @@ -290,8 +290,8 @@ public void ValidateCostumeThrowInvalidItemTypeException() [InlineData(ItemSubType.Title, GameConfig.RequireCharacterLevel.CharacterTitleSlot)] public void ValidateCostumeThrowCostumeSlotUnlockException(ItemSubType type, int level) { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); avatarState.level = level - 1; @@ -306,8 +306,8 @@ public void ValidateCostumeThrowCostumeSlotUnlockException(ItemSubType type, int [Fact] public void UpdateV2() { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); var result = new CombinationConsumable5.ResultModel() { @@ -331,8 +331,8 @@ public void UpdateV2() [Fact] public void UpdateV4() { - Address avatarAddress = new PrivateKey().ToAddress(); - Address agentAddress = new PrivateKey().ToAddress(); + Address avatarAddress = new PrivateKey().Address; + Address agentAddress = new PrivateKey().Address; var avatarState = GetNewAvatarState(avatarAddress, agentAddress); var result = new CombinationConsumable5.ResultModel() { @@ -384,7 +384,7 @@ public void CleanUpMail() [Fact] public void EquipItems() { - var avatarState = GetNewAvatarState(new PrivateKey().ToAddress(), new PrivateKey().ToAddress()); + var avatarState = GetNewAvatarState(new PrivateKey().Address, new PrivateKey().Address); avatarState.inventory.AddItem(EquipmentTest.CreateFirstEquipment(_tableSheets)); avatarState.inventory.AddItem(CostumeTest.CreateFirstCostume(_tableSheets)); @@ -456,7 +456,7 @@ public void UseAp(int ap, int requiredAp, bool chargeAp, bool materialExist, Typ [InlineData(ItemSubType.Ring, 3, GameConfig.MaxEquipmentSlotCount.Ring, 0, 0)] private void ValidateEquipmentsV2(ItemSubType type, int count, int maxCount, long blockIndex, long requiredBlockIndex) { - var avatarState = GetNewAvatarState(new PrivateKey().ToAddress(), new PrivateKey().ToAddress()); + var avatarState = GetNewAvatarState(new PrivateKey().Address, new PrivateKey().Address); var maxLevel = _tableSheets.CharacterLevelSheet.Max(row => row.Value.Level); var expRow = _tableSheets.CharacterLevelSheet[maxLevel]; var maxLevelExp = expRow.Exp; diff --git a/.Lib9c.Tests/Model/State/CrystalCostStateTest.cs b/.Lib9c.Tests/Model/State/CrystalCostStateTest.cs index 8efe51add7..a094149b66 100644 --- a/.Lib9c.Tests/Model/State/CrystalCostStateTest.cs +++ b/.Lib9c.Tests/Model/State/CrystalCostStateTest.cs @@ -12,7 +12,7 @@ public class CrystalCostStateTest public void Serialize() { var crystal = 100 * CrystalCalculator.CRYSTAL; - var address = new PrivateKey().ToAddress(); + var address = new PrivateKey().Address; var state = new CrystalCostState(address, crystal); state.Count++; var serialized = state.Serialize(); diff --git a/.Lib9c.Tests/Model/State/CrystalRandomSkillStateTest.cs b/.Lib9c.Tests/Model/State/CrystalRandomSkillStateTest.cs index 17990c37ec..f3c279745d 100644 --- a/.Lib9c.Tests/Model/State/CrystalRandomSkillStateTest.cs +++ b/.Lib9c.Tests/Model/State/CrystalRandomSkillStateTest.cs @@ -19,7 +19,7 @@ public CrystalRandomSkillStateTest() [Fact] public void Serialize() { - var address = new PrivateKey().ToAddress(); + var address = new PrivateKey().Address; var state = new CrystalRandomSkillState(address, 1); state.Update(100_000_000, _tableSheets.CrystalStageBuffGachaSheet); state.Update(new List { 1, 2, 3 }); diff --git a/.Lib9c.Tests/Model/State/HammerPointStateTest.cs b/.Lib9c.Tests/Model/State/HammerPointStateTest.cs index ecaaef02b9..cc257c391c 100644 --- a/.Lib9c.Tests/Model/State/HammerPointStateTest.cs +++ b/.Lib9c.Tests/Model/State/HammerPointStateTest.cs @@ -19,7 +19,7 @@ public HammerPointStateTest() [Fact] public void Serialize() { - var address = new PrivateKey().ToAddress(); + var address = new PrivateKey().Address; var state = new HammerPointState(address, 1); state.AddHammerPoint(3, _tableSheets.CrystalHammerPointSheet); var serialized = state.Serialize(); @@ -33,7 +33,7 @@ public void Serialize() [Fact] public void ResetHammerPoint() { - var address = new PrivateKey().ToAddress(); + var address = new PrivateKey().Address; var state = new HammerPointState(address, 1); state.AddHammerPoint(3, _tableSheets.CrystalHammerPointSheet); var serialized = state.Serialize(); @@ -52,7 +52,7 @@ public void ResetHammerPoint() [Fact] public void AddHammerPoint() { - var address = new PrivateKey().ToAddress(); + var address = new PrivateKey().Address; var state = new HammerPointState(address, 1); var sheet = _tableSheets.CrystalHammerPointSheet; state.AddHammerPoint(3, sheet); diff --git a/.Lib9c.Tests/Model/State/PetStateTest.cs b/.Lib9c.Tests/Model/State/PetStateTest.cs index 35a25793a5..38e1a050ad 100644 --- a/.Lib9c.Tests/Model/State/PetStateTest.cs +++ b/.Lib9c.Tests/Model/State/PetStateTest.cs @@ -57,7 +57,7 @@ public void LevelUp(int initialLevel, bool shouldThrow) [InlineData(int.MaxValue)] public void DeriveAddress(int petId) { - var avatarAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; var expectedAddress = avatarAddress.Derive($"pet-{petId}"); Assert.Equal(expectedAddress, PetState.DeriveAddress(avatarAddress, petId)); } diff --git a/.Lib9c.Tests/Model/State/RankingState1Test.cs b/.Lib9c.Tests/Model/State/RankingState1Test.cs index 33c8b0456f..98e99ce568 100644 --- a/.Lib9c.Tests/Model/State/RankingState1Test.cs +++ b/.Lib9c.Tests/Model/State/RankingState1Test.cs @@ -26,7 +26,7 @@ public void Derive(int index, string expected) public void Serialize() { var state = new RankingState1(); - var avatarAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; state.UpdateRankingMap(avatarAddress); var serialized = state.Serialize(); @@ -42,7 +42,7 @@ public void Deterministic_Between_SerializeV1_And_SerializeV1_With_Deterministic var state = new RankingState1(); for (var i = 0; i < 1000; i++) { - state.UpdateRankingMap(new PrivateKey().ToAddress()); + state.UpdateRankingMap(new PrivateKey().Address); } var serializedV1 = state.Serialize(); diff --git a/.Lib9c.Tests/Model/State/RankingStateTest.cs b/.Lib9c.Tests/Model/State/RankingStateTest.cs index 40caf6e428..36f02b1e9e 100644 --- a/.Lib9c.Tests/Model/State/RankingStateTest.cs +++ b/.Lib9c.Tests/Model/State/RankingStateTest.cs @@ -26,7 +26,7 @@ public void Derive(int index, string expected) public void Serialize() { var state = new RankingState(); - var avatarAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; state.UpdateRankingMap(avatarAddress); var serialized = state.Serialize(); @@ -42,7 +42,7 @@ public void Deterministic_Between_SerializeV1_And_SerializeV1_With_Deterministic var state = new RankingState(); for (var i = 0; i < 1000; i++) { - state.UpdateRankingMap(new PrivateKey().ToAddress()); + state.UpdateRankingMap(new PrivateKey().Address); } var serializedV1 = state.Serialize(); diff --git a/.Lib9c.Tests/Model/State/ShopStateTest.cs b/.Lib9c.Tests/Model/State/ShopStateTest.cs index d31abcc9ec..bc27bb9180 100644 --- a/.Lib9c.Tests/Model/State/ShopStateTest.cs +++ b/.Lib9c.Tests/Model/State/ShopStateTest.cs @@ -15,8 +15,8 @@ public class ShopStateTest public void Serialization() { var shopState = new ShopState(); - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var productId = Guid.NewGuid(); var weaponRow = new EquipmentItemSheet.Row(); weaponRow.Set(new[] @@ -51,8 +51,8 @@ public void Serialization() public void Register() { var shopState = new ShopState(); - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var productId = Guid.NewGuid(); var weaponRow = new EquipmentItemSheet.Row(); weaponRow.Set(new[] @@ -85,8 +85,8 @@ public void Register() public void RegisterThrowShopStateAlreadyContainsException() { var shopState = new ShopState(); - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var productId = Guid.NewGuid(); var weaponRow = new EquipmentItemSheet.Row(); weaponRow.Set(new[] @@ -117,8 +117,8 @@ public void RegisterThrowShopStateAlreadyContainsException() public void Unregister() { var shopState = new ShopState(); - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var productId = Guid.NewGuid(); var weaponRow = new EquipmentItemSheet.Row(); weaponRow.Set(new[] @@ -153,8 +153,8 @@ public void Unregister() public void TryUnregister() { var shopState = new ShopState(); - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var productId = Guid.NewGuid(); var weaponRow = new EquipmentItemSheet.Row(); weaponRow.Set(new[] @@ -193,8 +193,8 @@ public void TryUnregister() public void TryGet() { var shopState = new ShopState(); - var agentAddress = new PrivateKey().ToAddress(); - var avatarAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; + var avatarAddress = new PrivateKey().Address; var productId = Guid.NewGuid(); var weaponRow = new EquipmentItemSheet.Row(); weaponRow.Set(new[] diff --git a/.Lib9c.Tests/Model/State/StakeStateTest.cs b/.Lib9c.Tests/Model/State/StakeStateTest.cs index 654374b699..82cb4366ef 100644 --- a/.Lib9c.Tests/Model/State/StakeStateTest.cs +++ b/.Lib9c.Tests/Model/State/StakeStateTest.cs @@ -63,7 +63,7 @@ public void SerializeV2() [InlineData(long.MinValue)] public void Claim(long blockIndex) { - var stakeState = new StakeState(new PrivateKey().ToAddress(), 0L); + var stakeState = new StakeState(new PrivateKey().Address, 0L); stakeState.Claim(blockIndex); Assert.Equal(blockIndex, stakeState.ReceivedBlockIndex); } @@ -121,7 +121,7 @@ public void GetRewardStepV1( int expectedStep) { var stakeState = new StakeState( - new PrivateKey().ToAddress(), + new PrivateKey().Address, startedBlockIndex); stakeState.Claim(receivedBlockIndex); var actualStep = stakeState.GetRewardStepV1(currentBlockIndex, rewardStartBlockIndex); @@ -167,7 +167,7 @@ public void GetRewardStep( int expectedStep) { var stakeState = new StakeState( - new PrivateKey().ToAddress(), + new PrivateKey().Address, startedBlockIndex); stakeState.Claim(receivedBlockIndex); var actualStep = stakeState.GetRewardStep(currentBlockIndex, rewardStartBlockIndex); diff --git a/.Lib9c.Tests/Model/State/StateExtensionsTest.cs b/.Lib9c.Tests/Model/State/StateExtensionsTest.cs index 445795d1ea..5f1e99d731 100644 --- a/.Lib9c.Tests/Model/State/StateExtensionsTest.cs +++ b/.Lib9c.Tests/Model/State/StateExtensionsTest.cs @@ -25,7 +25,7 @@ public static IEnumerable Get_BigInteger_MemberData() [Fact] public void Address() { - var addr = new PrivateKey().ToAddress(); + var addr = new PrivateKey().Address; var ser = addr.Serialize(); var de = ser.ToAddress(); Assert.Equal(addr, de); @@ -36,7 +36,7 @@ public void Address() [Fact] public void NullableAddress() { - Address? addr = new PrivateKey().ToAddress(); + Address? addr = new PrivateKey().Address; var ser = addr.Serialize(); var de = ser.ToNullableAddress(); Assert.Equal(addr, de); diff --git a/.Lib9c.Tests/Model/State/WeeklyArenaStateTest.cs b/.Lib9c.Tests/Model/State/WeeklyArenaStateTest.cs index 74a5360dce..39cd5fecfd 100644 --- a/.Lib9c.Tests/Model/State/WeeklyArenaStateTest.cs +++ b/.Lib9c.Tests/Model/State/WeeklyArenaStateTest.cs @@ -92,22 +92,22 @@ public void GetArenaInfosByFirstRankAndCount( int count, int expectedCount) { - var weeklyArenaState = new WeeklyArenaState(new PrivateKey().ToAddress()); + var weeklyArenaState = new WeeklyArenaState(new PrivateKey().Address); var characterSheet = new CharacterSheet(); characterSheet.Set(_sheets[nameof(CharacterSheet)]); for (var i = 0; i < infoCount; i++) { var avatarState = new AvatarState( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, 0L, _tableSheets.GetAvatarSheets(), new GameConfigState(), default, i.ToString()); weeklyArenaState.Add( - new PrivateKey().ToAddress(), + new PrivateKey().Address, new ArenaInfo(avatarState, characterSheet, new CostumeStatSheet(), true)); } @@ -126,22 +126,22 @@ public void GetArenaInfosByFirstRankAndCount( [InlineData(10, 11)] public void GetArenaInfosByFirstRankAndCountThrow(int infoCount, int firstRank) { - var weeklyArenaState = new WeeklyArenaState(new PrivateKey().ToAddress()); + var weeklyArenaState = new WeeklyArenaState(new PrivateKey().Address); var characterSheet = new CharacterSheet(); characterSheet.Set(_sheets[nameof(CharacterSheet)]); for (var i = 0; i < infoCount; i++) { var avatarState = new AvatarState( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress(), + new PrivateKey().Address, + new PrivateKey().Address, 0L, _tableSheets.GetAvatarSheets(), new GameConfigState(), default, i.ToString()); weeklyArenaState.Add( - new PrivateKey().ToAddress(), + new PrivateKey().Address, new ArenaInfo(avatarState, characterSheet, new CostumeStatSheet(), true)); } @@ -160,13 +160,13 @@ public void GetArenaInfosByUpperAndLowerRange( int lowerRange, int expectedCount) { - var weeklyArenaState = new WeeklyArenaState(new PrivateKey().ToAddress()); + var weeklyArenaState = new WeeklyArenaState(new PrivateKey().Address); Address targetAddress = default; var characterSheet = new CharacterSheet(); characterSheet.Set(_sheets[nameof(CharacterSheet)]); for (var i = 0; i < infoCount; i++) { - var avatarAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; if (i + 1 == targetRank) { targetAddress = avatarAddress; @@ -174,14 +174,14 @@ public void GetArenaInfosByUpperAndLowerRange( var avatarState = new AvatarState( avatarAddress, - new PrivateKey().ToAddress(), + new PrivateKey().Address, 0L, _tableSheets.GetAvatarSheets(), new GameConfigState(), default, i.ToString()); weeklyArenaState.Add( - new PrivateKey().ToAddress(), + new PrivateKey().Address, new ArenaInfo(avatarState, characterSheet, new CostumeStatSheet(), true)); } diff --git a/.Lib9c.Tests/Policy/BlockPolicyTest.cs b/.Lib9c.Tests/Policy/BlockPolicyTest.cs index 5fb6fd1118..4ec350c38f 100644 --- a/.Lib9c.Tests/Policy/BlockPolicyTest.cs +++ b/.Lib9c.Tests/Policy/BlockPolicyTest.cs @@ -36,7 +36,7 @@ public BlockPolicyTest() _privateKey = new PrivateKey(); #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - _currency = Currency.Legacy("NCG", 2, _privateKey.ToAddress()); + _currency = Currency.Legacy("NCG", 2, _privateKey.Address); #pragma warning restore CS0618 } @@ -44,7 +44,7 @@ public BlockPolicyTest() public void ValidateNextBlockTx() { var adminPrivateKey = new PrivateKey(); - var adminAddress = adminPrivateKey.ToAddress(); + var adminAddress = adminPrivateKey.Address; var blockPolicySource = new BlockPolicySource(); IBlockPolicy policy = blockPolicySource.GetPolicy(null, null, null, null); @@ -82,7 +82,7 @@ public void ValidateNextBlockTx() Assert.NotNull(policy.ValidateNextBlockTx(blockChain, txByStranger)); var newActivatedPrivateKey = new PrivateKey(); - var newActivatedAddress = newActivatedPrivateKey.ToAddress(); + var newActivatedAddress = newActivatedPrivateKey.Address; // Activate with admin account. blockChain.MakeTransaction( @@ -136,7 +136,7 @@ public void ValidateNextBlockTx() public void ValidateNextBlockTx_Mead() { var adminPrivateKey = new PrivateKey(); - var adminAddress = adminPrivateKey.ToAddress(); + var adminAddress = adminPrivateKey.Address; var blockPolicySource = new BlockPolicySource(); var actionTypeLoader = new NCActionLoader(); IBlockPolicy policy = blockPolicySource.GetPolicy(null, null, null, null); @@ -241,7 +241,7 @@ public void ValidateNextBlockTx_Mead() public void BlockCommitFromNonValidator() { var adminPrivateKey = new PrivateKey(); - var adminAddress = adminPrivateKey.ToAddress(); + var adminAddress = adminPrivateKey.Address; var nonValidator = new PrivateKey(); var blockPolicySource = new BlockPolicySource(); @@ -270,7 +270,7 @@ public void BlockCommitFromNonValidator() ); blockChain.MakeTransaction( adminPrivateKey, - new ActionBase[] { new AddActivatedAccount(adminPrivateKey.ToAddress()) } + new ActionBase[] { new AddActivatedAccount(adminPrivateKey.Address) } ); Block block1 = blockChain.ProposeBlock(adminPrivateKey); Assert.Throws( @@ -281,7 +281,7 @@ public void BlockCommitFromNonValidator() public void MustNotIncludeBlockActionAtTransaction() { var adminPrivateKey = new PrivateKey(); - var adminAddress = adminPrivateKey.ToAddress(); + var adminAddress = adminPrivateKey.Address; var authorizedMinerPrivateKey = new PrivateKey(); (ActivationKey ak, PendingActivationState ps) = ActivationKey.Create( @@ -300,7 +300,7 @@ public void MustNotIncludeBlockActionAtTransaction() adminAddress, ImmutableHashSet.Create(adminAddress), new AuthorizedMinersState( - new[] { authorizedMinerPrivateKey.ToAddress() }, + new[] { authorizedMinerPrivateKey.Address }, 5, 10 ), @@ -333,7 +333,7 @@ public void MustNotIncludeBlockActionAtTransaction() public void EarnMiningGoldWhenSuccessMining() { var adminPrivateKey = new PrivateKey(); - var adminAddress = adminPrivateKey.ToAddress(); + var adminAddress = adminPrivateKey.Address; var authorizedMinerPrivateKey = new PrivateKey(); (ActivationKey ak, PendingActivationState ps) = ActivationKey.Create( @@ -352,7 +352,7 @@ public void EarnMiningGoldWhenSuccessMining() adminAddress, ImmutableHashSet.Create(adminAddress), new AuthorizedMinersState( - new[] { authorizedMinerPrivateKey.ToAddress() }, + new[] { authorizedMinerPrivateKey.Address }, 5, 10 ), @@ -404,7 +404,7 @@ public void ValidateNextBlockWithManyTransactions() IStagePolicy stagePolicy = new VolatileStagePolicy(); Block genesis = MakeGenesisBlock( - adminPublicKey.ToAddress(), + adminPublicKey.Address, ImmutableHashSet
.Empty, initialValidators: new Dictionary { { adminPrivateKey.PublicKey, BigInteger.One } }); @@ -505,7 +505,7 @@ public void ValidateNextBlockWithManyTransactionsPerSigner() IStagePolicy stagePolicy = new VolatileStagePolicy(); Block genesis = MakeGenesisBlock( - adminPublicKey.ToAddress(), + adminPublicKey.Address, ImmutableHashSet
.Empty, initialValidators: new Dictionary { { adminPrivateKey.PublicKey, BigInteger.One } }); diff --git a/.Lib9c.Tests/StagePolicyTest.cs b/.Lib9c.Tests/StagePolicyTest.cs index 506b134d7a..f1d736b968 100644 --- a/.Lib9c.Tests/StagePolicyTest.cs +++ b/.Lib9c.Tests/StagePolicyTest.cs @@ -33,7 +33,7 @@ public StagePolicyTest() new PrivateKey(), }; _txs = _accounts.ToDictionary( - acc => acc.ToAddress(), + acc => acc.Address, acc => Enumerable .Range(0, 10) .Select( @@ -54,18 +54,18 @@ public void Stage() NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); BlockChain chain = MakeChainWithStagePolicy(stagePolicy); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][0]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][1]); - stagePolicy.Stage(chain, _txs[_accounts[1].ToAddress()][0]); - stagePolicy.Stage(chain, _txs[_accounts[2].ToAddress()][0]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][0]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][1]); + stagePolicy.Stage(chain, _txs[_accounts[1].Address][0]); + stagePolicy.Stage(chain, _txs[_accounts[2].Address][0]); AssertTxs( chain, stagePolicy, - _txs[_accounts[0].ToAddress()][0], - _txs[_accounts[0].ToAddress()][1], - _txs[_accounts[1].ToAddress()][0], - _txs[_accounts[2].ToAddress()][0] + _txs[_accounts[0].Address][0], + _txs[_accounts[0].Address][1], + _txs[_accounts[1].Address][0], + _txs[_accounts[2].Address][0] ); } @@ -75,16 +75,16 @@ public void StageOverQuota() NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); BlockChain chain = MakeChainWithStagePolicy(stagePolicy); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][0]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][1]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][2]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][3]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][0]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][1]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][2]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][3]); AssertTxs( chain, stagePolicy, - _txs[_accounts[0].ToAddress()][0], - _txs[_accounts[0].ToAddress()][1] + _txs[_accounts[0].Address][0], + _txs[_accounts[0].Address][1] ); } @@ -94,16 +94,16 @@ public void StageOverQuotaInverseOrder() NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); BlockChain chain = MakeChainWithStagePolicy(stagePolicy); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][3]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][2]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][1]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][0]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][3]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][2]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][1]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][0]); AssertTxs( chain, stagePolicy, - _txs[_accounts[0].ToAddress()][0], - _txs[_accounts[0].ToAddress()][1] + _txs[_accounts[0].Address][0], + _txs[_accounts[0].Address][1] ); } @@ -113,16 +113,16 @@ public void StageOverQuotaOutOfOrder() NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); BlockChain chain = MakeChainWithStagePolicy(stagePolicy); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][2]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][1]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][3]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][0]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][2]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][1]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][3]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][0]); AssertTxs( chain, stagePolicy, - _txs[_accounts[0].ToAddress()][0], - _txs[_accounts[0].ToAddress()][1] + _txs[_accounts[0].Address][0], + _txs[_accounts[0].Address][1] ); } @@ -153,20 +153,20 @@ await Task.WhenAll( .Range(0, 40) .Select(i => Task.Run(() => { - stagePolicy.Stage(chain, _txs[_accounts[i / 10].ToAddress()][i % 10]); + stagePolicy.Stage(chain, _txs[_accounts[i / 10].Address][i % 10]); })) ); AssertTxs( chain, stagePolicy, - _txs[_accounts[0].ToAddress()][0], - _txs[_accounts[0].ToAddress()][1], - _txs[_accounts[1].ToAddress()][0], - _txs[_accounts[1].ToAddress()][1], - _txs[_accounts[2].ToAddress()][0], - _txs[_accounts[2].ToAddress()][1], - _txs[_accounts[3].ToAddress()][0], - _txs[_accounts[3].ToAddress()][1] + _txs[_accounts[0].Address][0], + _txs[_accounts[0].Address][1], + _txs[_accounts[1].Address][0], + _txs[_accounts[1].Address][1], + _txs[_accounts[2].Address][0], + _txs[_accounts[2].Address][1], + _txs[_accounts[3].Address][0], + _txs[_accounts[3].Address][1] ); } @@ -176,25 +176,25 @@ public void IterateAfterUnstage() NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); BlockChain chain = MakeChainWithStagePolicy(stagePolicy); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][0]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][1]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][2]); - stagePolicy.Stage(chain, _txs[_accounts[0].ToAddress()][3]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][0]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][1]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][2]); + stagePolicy.Stage(chain, _txs[_accounts[0].Address][3]); AssertTxs( chain, stagePolicy, - _txs[_accounts[0].ToAddress()][0], - _txs[_accounts[0].ToAddress()][1] + _txs[_accounts[0].Address][0], + _txs[_accounts[0].Address][1] ); - stagePolicy.Unstage(chain, _txs[_accounts[0].ToAddress()][0].Id); + stagePolicy.Unstage(chain, _txs[_accounts[0].Address][0].Id); AssertTxs( chain, stagePolicy, - _txs[_accounts[0].ToAddress()][1], - _txs[_accounts[0].ToAddress()][2] + _txs[_accounts[0].Address][1], + _txs[_accounts[0].Address][2] ); } @@ -204,22 +204,22 @@ public void CalculateNextTxNonceCorrectWhenTxOverQuota() NCStagePolicy stagePolicy = new NCStagePolicy(TimeSpan.FromHours(1), 2); BlockChain chain = MakeChainWithStagePolicy(stagePolicy); - long nextTxNonce = chain.GetNextTxNonce(_accounts[0].ToAddress()); + long nextTxNonce = chain.GetNextTxNonce(_accounts[0].Address); Assert.Equal(0, nextTxNonce); var txA = Transaction.Create(nextTxNonce, _accounts[0], default, new ActionBase[0].ToPlainValues()); stagePolicy.Stage(chain, txA); - nextTxNonce = chain.GetNextTxNonce(_accounts[0].ToAddress()); + nextTxNonce = chain.GetNextTxNonce(_accounts[0].Address); Assert.Equal(1, nextTxNonce); var txB = Transaction.Create(nextTxNonce, _accounts[0], default, new ActionBase[0].ToPlainValues()); stagePolicy.Stage(chain, txB); - nextTxNonce = chain.GetNextTxNonce(_accounts[0].ToAddress()); + nextTxNonce = chain.GetNextTxNonce(_accounts[0].Address); Assert.Equal(2, nextTxNonce); var txC = Transaction.Create(nextTxNonce, _accounts[0], default, new ActionBase[0].ToPlainValues()); stagePolicy.Stage(chain, txC); - nextTxNonce = chain.GetNextTxNonce(_accounts[0].ToAddress()); + nextTxNonce = chain.GetNextTxNonce(_accounts[0].Address); Assert.Equal(3, nextTxNonce); AssertTxs( diff --git a/.Lib9c.Tests/TestHelper/BlockChainHelper.cs b/.Lib9c.Tests/TestHelper/BlockChainHelper.cs index 2eb854727b..f3ab233af0 100644 --- a/.Lib9c.Tests/TestHelper/BlockChainHelper.cs +++ b/.Lib9c.Tests/TestHelper/BlockChainHelper.cs @@ -38,7 +38,7 @@ public static BlockChain MakeBlockChain( stagePolicy ??= new VolatileStagePolicy(); store ??= new DefaultStore(null); stateStore ??= new TrieStateStore(new DefaultKeyValueStore(null)); - Block genesis = MakeGenesisBlock(adminPrivateKey.ToAddress(), ImmutableHashSet
.Empty); + Block genesis = MakeGenesisBlock(adminPrivateKey.Address, ImmutableHashSet
.Empty); return BlockChain.Create( policy, stagePolicy, @@ -117,12 +117,12 @@ public static MakeInitialStateResult MakeInitialState() } var tableSheets = new TableSheets(sheets); - var rankingMapAddress = new PrivateKey().ToAddress(); + var rankingMapAddress = new PrivateKey().Address; - var agentAddress = new PrivateKey().ToAddress(); + var agentAddress = new PrivateKey().Address; var agentState = new AgentState(agentAddress); - var avatarAddress = new PrivateKey().ToAddress(); + var avatarAddress = new PrivateKey().Address; var avatarState = new AvatarState( avatarAddress, agentAddress, diff --git a/.Lib9c.Tests/Types/BencodexTypesListTest.cs b/.Lib9c.Tests/Types/BencodexTypesListTest.cs index f5f1c7bc6f..f5de250cb0 100644 --- a/.Lib9c.Tests/Types/BencodexTypesListTest.cs +++ b/.Lib9c.Tests/Types/BencodexTypesListTest.cs @@ -30,9 +30,9 @@ public BencodexTypesListTest() _addressList = new Bencodex.Types.List(new List { - new PrivateKey().ToAddress().Serialize(), - new PrivateKey().ToAddress().Serialize(), - new PrivateKey().ToAddress().Serialize(), + new PrivateKey().Address.Serialize(), + new PrivateKey().Address.Serialize(), + new PrivateKey().Address.Serialize(), }); _descendingAddressList = (Bencodex.Types.List)_addressList .OrderByDescending(element => element.ToAddress()) diff --git a/.Lib9c.Tests/Util/InitializeUtil.cs b/.Lib9c.Tests/Util/InitializeUtil.cs index 54e0d70f74..ebce667c0b 100644 --- a/.Lib9c.Tests/Util/InitializeUtil.cs +++ b/.Lib9c.Tests/Util/InitializeUtil.cs @@ -26,7 +26,7 @@ IAccount initialStatesWithAvatarStateV2 bool isDevEx = false, Dictionary sheetsOverride = null) { - adminAddr ??= new PrivateKey().ToAddress(); + adminAddr ??= new PrivateKey().Address; var context = new ActionContext(); var states = new Account(MockState.Empty).SetState( Addresses.Admin, @@ -48,7 +48,7 @@ IAccount initialStatesWithAvatarStateV2 var gameConfigState = new GameConfigState(tuple.sheets[nameof(GameConfigSheet)]); states = states.SetState(gameConfigState.address, gameConfigState.Serialize()); - agentAddr ??= new PrivateKey().ToAddress(); + agentAddr ??= new PrivateKey().Address; var avatarAddr = Addresses.GetAvatarAddress(agentAddr.Value, avatarIndex); var agentState = new AgentState(agentAddr.Value); var avatarState = new AvatarState( diff --git a/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs b/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs index 64aa0d735a..b19d739380 100644 --- a/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs +++ b/.Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests/ActionEvaluationSerializerTest.cs @@ -12,7 +12,7 @@ public class ActionEvaluationSerializerTest [Fact] public void Serialization() { - var addresses = Enumerable.Repeat(0, 4).Select(_ => new PrivateKey().ToAddress()).ToImmutableList(); + var addresses = Enumerable.Repeat(0, 4).Select(_ => new PrivateKey().Address).ToImmutableList(); var random = new System.Random(); var buffer = new byte[HashDigest.Size]; diff --git a/Lib9c.DevExtensions/Action/CreateArenaDummy.cs b/Lib9c.DevExtensions/Action/CreateArenaDummy.cs index ef74b1a783..3fedeb9d0f 100644 --- a/Lib9c.DevExtensions/Action/CreateArenaDummy.cs +++ b/Lib9c.DevExtensions/Action/CreateArenaDummy.cs @@ -61,7 +61,7 @@ public override IAccount Execute(IActionContext context) for (var i = 0; i < accountCount; i++) { var privateKey = new PrivateKey(); - var agentAddress = privateKey.PublicKey.ToAddress(); + var agentAddress = privateKey.PublicKey.Address; var avatarAddress = agentAddress.Derive( string.Format( CultureInfo.InvariantCulture, diff --git a/Lib9c.DevExtensions/Action/CreateTestbed.cs b/Lib9c.DevExtensions/Action/CreateTestbed.cs index da77b7f942..211819ab90 100644 --- a/Lib9c.DevExtensions/Action/CreateTestbed.cs +++ b/Lib9c.DevExtensions/Action/CreateTestbed.cs @@ -79,7 +79,7 @@ public override IAccount Execute(IActionContext context) random.GenerateRandomGuid())) .ToList(); - var agentAddress = _privateKey.PublicKey.ToAddress(); + var agentAddress = _privateKey.PublicKey.Address; var states = context.PreviousState; var avatarAddress = agentAddress.Derive( diff --git a/Lib9c.DevExtensions/Utils.cs b/Lib9c.DevExtensions/Utils.cs index 1c84a28486..5e2dcc1a7c 100644 --- a/Lib9c.DevExtensions/Utils.cs +++ b/Lib9c.DevExtensions/Utils.cs @@ -210,7 +210,7 @@ public static void CreateActivationKey( Parallel.For(0, countOfKeys, _ => { var pendingKey = new PrivateKey(); - var nonce = pendingKey.PublicKey.ToAddress().ToByteArray(); + var nonce = pendingKey.PublicKey.Address.ToByteArray(); (ActivationKey ak, PendingActivationState s) = ActivationKey.Create(pendingKey, nonce); ps.Add(s); diff --git a/Lib9c.Utils/BlockHelper.cs b/Lib9c.Utils/BlockHelper.cs index 4a3a80333b..a28fa9c51b 100644 --- a/Lib9c.Utils/BlockHelper.cs +++ b/Lib9c.Utils/BlockHelper.cs @@ -54,7 +54,7 @@ public static Block ProposeGenesisBlock( activatedAccounts ??= ImmutableHashSet
.Empty; #pragma warning disable CS0618 // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 - goldCurrency ??= Currency.Legacy("NCG", 2, privateKey.ToAddress()); + goldCurrency ??= Currency.Legacy("NCG", 2, privateKey.Address); #pragma warning restore CS0618 var initialStatesAction = new InitializeStates diff --git a/Lib9c/Model/State/AvatarState.cs b/Lib9c/Model/State/AvatarState.cs index 05d261689f..46f4a3d75f 100644 --- a/Lib9c/Model/State/AvatarState.cs +++ b/Lib9c/Model/State/AvatarState.cs @@ -57,7 +57,7 @@ public class AvatarState : State, ICloneable public static Address CreateAvatarAddress() { var key = new PrivateKey(); - return key.PublicKey.ToAddress(); + return key.PublicKey.Address; } public AvatarState(Address address, From 8c6c71b959f8258179b6ead6cf64996633f93565 Mon Sep 17 00:00:00 2001 From: Yang Chun Ung Date: Tue, 28 Nov 2023 20:34:37 +0900 Subject: [PATCH 32/70] Introduce rune summon action --- .Lib9c.Tests/Action/ActionEvaluationTest.cs | 7 + .Lib9c.Tests/Action/Summon/RuneSummonTest.cs | 296 +++++++++++++++++++ Lib9c.Abstractions/IRuneSummonV1.cs | 11 + Lib9c/Action/RuneSummon.cs | 200 +++++++++++++ Lib9c/TableCSV/Summon/SummonSheet.csv | 4 +- 5 files changed, 517 insertions(+), 1 deletion(-) create mode 100644 .Lib9c.Tests/Action/Summon/RuneSummonTest.cs create mode 100644 Lib9c.Abstractions/IRuneSummonV1.cs create mode 100644 Lib9c/Action/RuneSummon.cs diff --git a/.Lib9c.Tests/Action/ActionEvaluationTest.cs b/.Lib9c.Tests/Action/ActionEvaluationTest.cs index 4b607fbb91..4cb2dbcfa3 100644 --- a/.Lib9c.Tests/Action/ActionEvaluationTest.cs +++ b/.Lib9c.Tests/Action/ActionEvaluationTest.cs @@ -92,6 +92,7 @@ public ActionEvaluationTest() [InlineData(typeof(EndPledge))] [InlineData(typeof(CreatePledge))] [InlineData(typeof(TransferAssets))] + [InlineData(typeof(RuneSummon))] public void Serialize_With_MessagePack(Type actionType) { var action = GetAction(actionType); @@ -462,6 +463,12 @@ private ActionBase GetAction(Type type) { (_signer, 1 * _currency), }), + RuneSummon _ => new RuneSummon + { + AvatarAddress = _sender, + GroupId = 20001, + SummonCount = 10, + }, _ => throw new InvalidCastException(), }; } diff --git a/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs b/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs new file mode 100644 index 0000000000..4d3925159d --- /dev/null +++ b/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs @@ -0,0 +1,296 @@ +namespace Lib9c.Tests.Action.Summon +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Data; + using System.Linq; + using Libplanet.Action.State; + using Libplanet.Crypto; + using Libplanet.Types.Assets; + using Nekoyume; + using Nekoyume.Action; + using Nekoyume.Action.Exceptions; + using Nekoyume.Model.Item; + using Nekoyume.Model.State; + using Nekoyume.TableData.Summon; + using Xunit; + using static SerializeKeys; + + public class RuneSummonTest + { + private readonly Address _agentAddress; + private readonly Address _avatarAddress; + private readonly AvatarState _avatarState; + private readonly Currency _currency; + private TableSheets _tableSheets; + private IAccount _initialState; + + public RuneSummonTest() + { + var sheets = TableSheetsImporter.ImportSheets(); + _tableSheets = new TableSheets(sheets); + var privateKey = new PrivateKey(); + _agentAddress = privateKey.PublicKey.Address; + var agentState = new AgentState(_agentAddress); + + _avatarAddress = _agentAddress.Derive("avatar"); + _avatarState = new AvatarState( + _avatarAddress, + _agentAddress, + 0, + _tableSheets.GetAvatarSheets(), + new GameConfigState(), + default + ); + + agentState.avatarAddresses.Add(0, _avatarAddress); + +#pragma warning disable CS0618 + // Use of obsolete method Currency.Legacy(): https://github.com/planetarium/lib9c/discussions/1319 + _currency = Currency.Legacy("NCG", 2, null); +#pragma warning restore CS0618 + var gold = new GoldCurrencyState(_currency); + + var context = new ActionContext(); + _initialState = new Account(MockState.Empty) + .SetState(_agentAddress, agentState.Serialize()) + .SetState(_avatarAddress, _avatarState.Serialize()) + .SetState(GoldCurrencyState.Address, gold.Serialize()) + .MintAsset(context, GoldCurrencyState.Address, gold.Currency * 100000000000) + .TransferAsset( + context, + Addresses.GoldCurrency, + _agentAddress, + gold.Currency * 1000 + ); + + Assert.Equal( + gold.Currency * 99999999000, + _initialState.GetBalance(Addresses.GoldCurrency, gold.Currency) + ); + Assert.Equal( + gold.Currency * 1000, + _initialState.GetBalance(_agentAddress, gold.Currency) + ); + + foreach (var (key, value) in sheets) + { + _initialState = + _initialState.SetState(Addresses.TableSheet.Derive(key), value.Serialize()); + } + } + + [Theory] + [InlineData(20001)] + [InlineData(20002)] + public void CumulativeRatio(int groupId) + { + var sheet = _tableSheets.SummonSheet; + var targetRow = sheet.OrderedList.First(r => r.GroupId == groupId); + + for (var i = 1; i <= SummonSheet.Row.MaxRecipeCount; i++) + { + var sum = 0; + for (var j = 0; j < i; j++) + { + if (j < targetRow.Recipes.Count) + { + sum += targetRow.Recipes[j].Item2; + } + } + + Assert.Equal(sum, targetRow.CumulativeRatio(i)); + } + } + + [Theory] + [ClassData(typeof(ExecuteMemeber))] + public void Execute( + int groupId, + int summonCount, + int? materialId, + int materialCount, + int seed, + Type expectedExc + ) + { + var random = new TestRandom(seed); + var state = _initialState; + state = state.SetState( + Addresses.TableSheet.Derive(nameof(SummonSheet)), + _tableSheets.SummonSheet.Serialize() + ); + + if (!(materialId is null)) + { + var materialSheet = _tableSheets.MaterialItemSheet; + var material = materialSheet.OrderedList.FirstOrDefault(m => m.Id == materialId); + _avatarState.inventory.AddItem( + ItemFactory.CreateItem(material, random), + materialCount * _tableSheets.SummonSheet[groupId].CostMaterialCount + ); + state = state + .SetState(_avatarAddress, _avatarState.SerializeV2()) + .SetState( + _avatarAddress.Derive(LegacyInventoryKey), + _avatarState.inventory.Serialize() + ) + .SetState( + _avatarAddress.Derive(LegacyWorldInformationKey), + _avatarState.worldInformation.Serialize() + ) + .SetState( + _avatarAddress.Derive(LegacyQuestListKey), + _avatarState.questList.Serialize() + ) + ; + } + + var action = new RuneSummon + { + AvatarAddress = _avatarAddress, + GroupId = groupId, + SummonCount = summonCount, + }; + + if (expectedExc == null) + { + // Success + var ctx = new ActionContext + { + PreviousState = state, + Signer = _agentAddress, + BlockIndex = 1, + }; + ctx.SetRandom(random); + var nextState = action.Execute(ctx); + var currencies = + nextState.TotalUpdatedFungibleAssets.Where(t => t.Item1 == _avatarAddress).Select(t => t.Item2).ToList(); + var totalBalance = 0; + var count = summonCount == 10 ? 11 : summonCount; + var expectedBalance = RuneSummon.RuneQuantity * count; + foreach (var currency in currencies) + { + var balance = nextState.GetBalance(_avatarAddress, currency); + totalBalance += (int)balance.RawValue; + } + + Assert.Equal(expectedBalance, totalBalance); + + nextState.GetAvatarStateV2(_avatarAddress).inventory + .TryGetItem((int)materialId!, out var resultMaterial); + Assert.Equal(0, resultMaterial?.count ?? 0); + } + else + { + // Failure + Assert.Throws(expectedExc, () => + { + action.Execute(new ActionContext + { + PreviousState = state, + Signer = _agentAddress, + BlockIndex = 1, + RandomSeed = random.Seed, + }); + }); + } + } + + private class ExecuteMemeber : IEnumerable + { + private readonly List _data = new () + { + new object[] + { + 20001, 1, 800201, 1, 1, null, + }, + new object[] + { + 20001, 2, 800201, 2, 54, null, + }, + // success second group + new object[] + { + 20002, 1, 600201, 1, 1, null, + }, + new object[] + { + 20002, 2, 600201, 2, 4, null, + }, + // Nine plus zero + new object[] + { + 20001, + 9, + 800201, + 9, + 0, + null, + }, + new object[] + { + 20002, + 9, + 600201, + 9, + 0, + null, + }, + // Ten plus one + new object[] + { + 20001, + 10, + 800201, + 10, + 0, + null, + }, + new object[] + { + 20002, + 10, + 600201, + 10, + 0, + null, + }, + // fail by invalid group + new object[] + { + 100003, 1, null, 0, 0, typeof(RowNotInTableException), + }, + // fail by not enough material + new object[] + { + 20001, 1, 800201, 0, 0, typeof(NotEnoughMaterialException), + }, + new object[] + { + 20001, 2, 800201, 0, 0, typeof(NotEnoughMaterialException), + }, + // Fail by exceeding summon limit + new object[] + { + 20001, 11, 800201, 22, 1, typeof(InvalidSummonCountException), + }, + // 15 recipes + new object[] + { + 20002, 1, 600201, 1, 5341, null, + }, + // success first group + new object[] + { + 20001, 1, 800201, 1, 1, null, + }, + }; + + public IEnumerator GetEnumerator() => _data.GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() => _data.GetEnumerator(); + } + } +} diff --git a/Lib9c.Abstractions/IRuneSummonV1.cs b/Lib9c.Abstractions/IRuneSummonV1.cs new file mode 100644 index 0000000000..51646c8794 --- /dev/null +++ b/Lib9c.Abstractions/IRuneSummonV1.cs @@ -0,0 +1,11 @@ +using Libplanet.Crypto; + +namespace Lib9c.Abstractions; + +public interface IRuneSummonV1 +{ + Address AvatarAddress { get; } + int GroupId { get; } + + int SummonCount { get; } +} diff --git a/Lib9c/Action/RuneSummon.cs b/Lib9c/Action/RuneSummon.cs new file mode 100644 index 0000000000..e6935cdb54 --- /dev/null +++ b/Lib9c/Action/RuneSummon.cs @@ -0,0 +1,200 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Data; +using System.Linq; +using Bencodex.Types; +using Lib9c; +using Lib9c.Abstractions; +using Libplanet.Action; +using Libplanet.Action.State; +using Libplanet.Crypto; +using Nekoyume.Action.Exceptions; +using Nekoyume.Extensions; +using Nekoyume.Model.State; +using Nekoyume.TableData; +using Nekoyume.TableData.Summon; +using Serilog; +using static Lib9c.SerializeKeys; + +namespace Nekoyume.Action +{ + [ActionType("rune_summon")] + public class RuneSummon : GameAction, IRuneSummonV1 + { + public const string AvatarAddressKey = "aa"; + public Address AvatarAddress; + + public const string GroupIdKey = "gid"; + public int GroupId; + + public const string SummonCountKey = "sc"; + public int SummonCount; + + private const int SummonLimit = 10; + public const int RuneQuantity = 100; + + public override IAccount Execute(IActionContext context) + { + context.UseGas(1); + var states = context.PreviousState; + var inventoryAddress = AvatarAddress.Derive(LegacyInventoryKey); + + var addressesHex = GetSignerAndOtherAddressesHex(context, AvatarAddress); + var started = DateTimeOffset.UtcNow; + Log.Debug($"{addressesHex} RuneSummon Exec. Started."); + + if (!states.TryGetAgentAvatarStatesV2(context.Signer, AvatarAddress, out var agentState, + out var avatarState, out _)) + { + throw new FailedLoadStateException( + $"{addressesHex} Aborted as the avatar state of the signer was failed to load."); + } + + if (SummonCount <= 0 || SummonCount > SummonLimit) + { + throw new InvalidSummonCountException( + $"{addressesHex} Given summonCount {SummonCount} is not valid. Please use between 1 and 10" + ); + } + + // Validate Work + Dictionary sheets = states.GetSheets(sheetTypes: new[] + { + typeof(SummonSheet), + typeof(MaterialItemSheet), + typeof(RuneSheet), + }); + + var summonSheet = sheets.GetSheet(); + var materialSheet = sheets.GetSheet(); + var runeSheet = sheets.GetSheet(); + + var summonRow = summonSheet.OrderedList.FirstOrDefault(row => row.GroupId == GroupId); + if (summonRow is null) + { + throw new RowNotInTableException( + $"{addressesHex} Failed to get {GroupId} in SummonSheet"); + } + + // Use materials + var inventory = avatarState.inventory; + var material = materialSheet.OrderedList.First(m => m.Id == summonRow.CostMaterial); + if (!inventory.RemoveFungibleItem(material.ItemId, context.BlockIndex, + summonRow.CostMaterialCount * SummonCount)) + { + throw new NotEnoughMaterialException( + $"{addressesHex} Aborted as the player has no enough material ({summonRow.CostMaterial} * {summonRow.CostMaterialCount})"); + } + + // Transfer Cost NCG first for fast-fail + if (summonRow.CostNcg > 0L) + { + var arenaSheet = states.GetSheet(); + var arenaData = arenaSheet.GetRoundByBlockIndex(context.BlockIndex); + var feeStoreAddress = + Addresses.GetBlacksmithFeeAddress(arenaData.ChampionshipId, arenaData.Round); + + states = states.TransferAsset( + context, + context.Signer, + feeStoreAddress, + states.GetGoldCurrency() * summonRow.CostNcg * SummonCount + ); + } + + var random = context.GetRandom(); + states = SimulateSummon( + context, + addressesHex, + AvatarAddress, + runeSheet, + summonRow, + SummonCount, + random, + states + ); + + Log.Debug( + $"{addressesHex} RuneSummon Exec. finished: {DateTimeOffset.UtcNow - started} Elapsed"); + + avatarState.blockIndex = context.BlockIndex; + avatarState.updatedAt = context.BlockIndex; + + // Set states + return states + .SetState(AvatarAddress, avatarState.SerializeV2()) + .SetState(inventoryAddress, avatarState.inventory.Serialize()) + .SetState(context.Signer, agentState.Serialize()); + } + + protected override IImmutableDictionary PlainValueInternal => + new Dictionary + { + [AvatarAddressKey] = AvatarAddress.Serialize(), + [GroupIdKey] = (Integer)GroupId, + [SummonCountKey] = (Integer)SummonCount, + }.ToImmutableDictionary(); + + protected override void LoadPlainValueInternal( + IImmutableDictionary plainValue) + { + AvatarAddress = plainValue[AvatarAddressKey].ToAddress(); + GroupId = (Integer)plainValue[GroupIdKey]; + SummonCount = (Integer)plainValue[SummonCountKey]; + } + + Address IRuneSummonV1.AvatarAddress => AvatarAddress; + int IRuneSummonV1.GroupId => GroupId; + int IRuneSummonV1.SummonCount => SummonCount; + + public static IAccount SimulateSummon( + IActionContext context, + string addressesHex, + Address avatarAddress, + RuneSheet runeSheet, + SummonSheet.Row summonRow, + int summonCount, + IRandom random, + IAccount states + ) + { + // Ten plus one + if (summonCount == 10) + { + summonCount += 1; + } + + for (var i = 0; i < summonCount; i++) + { + var recipeId = 0; + var targetRatio = random.Next(1, summonRow.TotalRatio() + 1); + for (var j = 1; j <= SummonSheet.Row.MaxRecipeCount; j++) + { + if (targetRatio <= summonRow.CumulativeRatio(j)) + { + recipeId = summonRow.Recipes[j - 1].Item1; + break; + } + } + + // Validate RecipeId + var runeRow = runeSheet.OrderedList.FirstOrDefault(r => r.Id == recipeId); + if (runeRow is null) + { + throw new SheetRowNotFoundException( + addressesHex, + nameof(RuneSheet), + recipeId + ); + } + + var ticker = runeRow.Ticker; + var currency = Currencies.GetRune(ticker); + states = states.MintAsset(context, avatarAddress, RuneQuantity * currency); + } + + return states; + } + } +} diff --git a/Lib9c/TableCSV/Summon/SummonSheet.csv b/Lib9c/TableCSV/Summon/SummonSheet.csv index 382e834fc4..eeebd0d0a4 100644 --- a/Lib9c/TableCSV/Summon/SummonSheet.csv +++ b/Lib9c/TableCSV/Summon/SummonSheet.csv @@ -1,3 +1,5 @@ groupID,cost_material,cost_material_count,cost_ncg,recipe1ID,recipe1ratio,recipe2ID,recipe2ratio,recipe3ID,recipe3ratio,recipe4ID,recipe4ratio,recipe5ID,recipe5ratio,recipe6ID,recipe6ratio,recipe7ID,recipe7ratio,recipe8ID,recipe8ratio,recipe9ID,recipe9ratio,recipe10ID,recipe10ratio,recipe11ID,recipe11ratio,recipe12ID,recipe12ratio,recipe13ID,recipe13ratio,recipe14ID,recipe14ratio,recipe15ID,recipe15ratio 10001,800201,10,0,171,70,172,29,173,1,,,,,,,,,,,,,,,,,,,,,,,, -10002,600201,20,0,174,6500,175,2940,176,510,177,45,178,5,179,6500,180,2940,181,510,182,45,183,5,184,6500,185,2940,186,510,187,45,188,5 \ No newline at end of file +10002,600201,20,0,174,6500,175,2940,176,510,177,45,178,5,179,6500,180,2940,181,510,182,45,183,5,184,6500,185,2940,186,510,187,45,188,5 +20001,800201,10,0,10001,70,10002,29,10003,1,,,,,,,,,,,,,,,,,,,,,,,, +20002,600201,20,0,10001,30,10002,10,10003,10,10011,10,10012,10,10013,10,30001,10,20001,10,,,,,,,,,,,,,, From 2e5facd25230f83e3ae3560e861fabf28072ead9 Mon Sep 17 00:00:00 2001 From: Yang Chun Ung Date: Wed, 29 Nov 2023 13:30:31 +0900 Subject: [PATCH 33/70] Delete unused agentState --- Lib9c/Action/RuneSummon.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Lib9c/Action/RuneSummon.cs b/Lib9c/Action/RuneSummon.cs index e6935cdb54..5d78674344 100644 --- a/Lib9c/Action/RuneSummon.cs +++ b/Lib9c/Action/RuneSummon.cs @@ -44,8 +44,7 @@ public override IAccount Execute(IActionContext context) var started = DateTimeOffset.UtcNow; Log.Debug($"{addressesHex} RuneSummon Exec. Started."); - if (!states.TryGetAgentAvatarStatesV2(context.Signer, AvatarAddress, out var agentState, - out var avatarState, out _)) + if (!states.TryGetAvatarStateV2(context.Signer, AvatarAddress, out var avatarState, out _)) { throw new FailedLoadStateException( $"{addressesHex} Aborted as the avatar state of the signer was failed to load."); @@ -124,8 +123,7 @@ public override IAccount Execute(IActionContext context) // Set states return states .SetState(AvatarAddress, avatarState.SerializeV2()) - .SetState(inventoryAddress, avatarState.inventory.Serialize()) - .SetState(context.Signer, agentState.Serialize()); + .SetState(inventoryAddress, avatarState.inventory.Serialize()); } protected override IImmutableDictionary PlainValueInternal => From 80dacf4c8767f984ca711ac74d7976d9514f72e5 Mon Sep 17 00:00:00 2001 From: Yang Chun Ung Date: Wed, 29 Nov 2023 13:30:51 +0900 Subject: [PATCH 34/70] Add test case --- .Lib9c.Tests/Action/Summon/AuraSummonTest.cs | 15 +++++++++++---- .Lib9c.Tests/Action/Summon/RuneSummonTest.cs | 9 ++++++++- .../TableCSV/Summon/SummonSheetFixtures.cs | 8 ++++++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs b/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs index bf01380ad0..4821cfd063 100644 --- a/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs +++ b/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs @@ -13,6 +13,7 @@ namespace Lib9c.Tests.Action.Summon using Nekoyume.Action.Exceptions; using Nekoyume.Model.Item; using Nekoyume.Model.State; + using Nekoyume.TableData; using Nekoyume.TableData.Summon; using Xunit; using static SerializeKeys; @@ -176,6 +177,8 @@ public void CumulativeRatio(string version, int groupId) [InlineData("V1", 10001, 11, 800201, 22, 1, new int[] { }, typeof(InvalidSummonCountException))] // 15 recipes [InlineData("V2", 10002, 1, 600201, 1, 5341, new[] { 10650006 }, null)] + // 15 recipes + [InlineData("V3", 20002, 1, 600201, 1, 5341, new int[] { }, typeof(SheetRowNotFoundException))] public void Execute( string version, int groupId, @@ -189,10 +192,14 @@ Type expectedExc { var random = new TestRandom(seed); var state = _initialState; - state = state.SetState( - Addresses.TableSheet.Derive(nameof(SummonSheet)), - version == "V1" ? SummonSheetFixtures.V1.Serialize() : SummonSheetFixtures.V2.Serialize() - ); + var sheet = version switch + { + "V1" => SummonSheetFixtures.V1.Serialize(), + "V2" => SummonSheetFixtures.V2.Serialize(), + "V3" => SummonSheetFixtures.V3.Serialize(), + _ => throw new ArgumentOutOfRangeException(nameof(version), version, null) + }; + state = state.SetState(Addresses.TableSheet.Derive(nameof(SummonSheet)), sheet); if (!(materialId is null)) { diff --git a/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs b/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs index 4d3925159d..beb1e6e4f3 100644 --- a/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs +++ b/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs @@ -13,6 +13,7 @@ namespace Lib9c.Tests.Action.Summon using Nekoyume.Action.Exceptions; using Nekoyume.Model.Item; using Nekoyume.Model.State; + using Nekoyume.TableData; using Nekoyume.TableData.Summon; using Xunit; using static SerializeKeys; @@ -58,6 +59,7 @@ public RuneSummonTest() .SetState(_avatarAddress, _avatarState.Serialize()) .SetState(GoldCurrencyState.Address, gold.Serialize()) .MintAsset(context, GoldCurrencyState.Address, gold.Currency * 100000000000) + .MintAsset(context, _avatarAddress, 100 * Currencies.GetRune("RUNESTONE_FENRIR1")) .TransferAsset( context, Addresses.GoldCurrency, @@ -172,8 +174,9 @@ Type expectedExc var expectedBalance = RuneSummon.RuneQuantity * count; foreach (var currency in currencies) { + var prevBalance = state.GetBalance(_avatarAddress, currency); var balance = nextState.GetBalance(_avatarAddress, currency); - totalBalance += (int)balance.RawValue; + totalBalance += (int)(balance - prevBalance).RawValue; } Assert.Equal(expectedBalance, totalBalance); @@ -286,6 +289,10 @@ private class ExecuteMemeber : IEnumerable { 20001, 1, 800201, 1, 1, null, }, + new object[] + { + 10001, 1, 800201, 1, 1, typeof(SheetRowNotFoundException), + }, }; public IEnumerator GetEnumerator() => _data.GetEnumerator(); diff --git a/.Lib9c.Tests/Fixtures/TableCSV/Summon/SummonSheetFixtures.cs b/.Lib9c.Tests/Fixtures/TableCSV/Summon/SummonSheetFixtures.cs index 0c9338e61d..65f4f467f4 100644 --- a/.Lib9c.Tests/Fixtures/TableCSV/Summon/SummonSheetFixtures.cs +++ b/.Lib9c.Tests/Fixtures/TableCSV/Summon/SummonSheetFixtures.cs @@ -11,5 +11,13 @@ public class SummonSheetFixtures @"groupID,cost_material,cost_material_count,cost_ncg,recipe1ID,recipe1ratio,recipe2ID,recipe2ratio,recipe3ID,recipe3ratio,recipe4ID,recipe4ratio,recipe5ID,recipe5ratio,recipe6ID,recipe6ratio,recipe7ID,recipe7ratio,recipe8ID,recipe8ratio,recipe9ID,recipe9ratio,recipe10ID,recipe10ratio,recipe11ID,recipe11ratio,recipe12ID,recipe12ratio,recipe13ID,recipe13ratio,recipe14ID,recipe14ratio,recipe15ID,recipe15ratio 10001,800201,10,0,171,70,172,29,173,1,,,,,,,,,,,,,,,,,,,,,,,, 10002,600201,20,0,174,6500,175,2940,176,510,177,45,178,5,179,6500,180,2940,181,510,182,45,183,5,184,6500,185,2940,186,510,187,45,188,5"; + + public const string V3 = + @"groupID,cost_material,cost_material_count,cost_ncg,recipe1ID,recipe1ratio,recipe2ID,recipe2ratio,recipe3ID,recipe3ratio,recipe4ID,recipe4ratio,recipe5ID,recipe5ratio,recipe6ID,recipe6ratio,recipe7ID,recipe7ratio,recipe8ID,recipe8ratio,recipe9ID,recipe9ratio,recipe10ID,recipe10ratio,recipe11ID,recipe11ratio,recipe12ID,recipe12ratio,recipe13ID,recipe13ratio,recipe14ID,recipe14ratio,recipe15ID,recipe15ratio +10001,800201,10,0,171,70,172,29,173,1,,,,,,,,,,,,,,,,,,,,,,,, +10002,600201,20,0,174,6500,175,2940,176,510,177,45,178,5,179,6500,180,2940,181,510,182,45,183,5,184,6500,185,2940,186,510,187,45,188,5 +20001,800201,10,0,10001,70,10002,29,10003,1,,,,,,,,,,,,,,,,,,,,,,,, +20002,600201,20,0,10001,30,10002,10,10003,10,10011,10,10012,10,10013,10,30001,10,20001,10,,,,,,,,,,,,,, +"; } } From 6fe9e9ab59b048253a8b1ca952304f5fe28162a9 Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Tue, 28 Nov 2023 19:32:19 +0900 Subject: [PATCH 35/70] make BattleStatus.Tick and Buff.Stun --- Lib9c/Model/BattleStatus/Tick.cs | 28 ++++++++++++++++++++++++++++ Lib9c/Model/Buff/Stun.cs | 22 ++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 Lib9c/Model/BattleStatus/Tick.cs create mode 100644 Lib9c/Model/Buff/Stun.cs diff --git a/Lib9c/Model/BattleStatus/Tick.cs b/Lib9c/Model/BattleStatus/Tick.cs new file mode 100644 index 0000000000..505b7e59b2 --- /dev/null +++ b/Lib9c/Model/BattleStatus/Tick.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Nekoyume.Model.BattleStatus +{ + [Serializable] + public class Tick : Skill + { + public Tick(CharacterBase character) : this( + 0, + character, + ArraySegment.Empty, + ArraySegment.Empty) + { + } + + public Tick(int skillId, CharacterBase character, IEnumerable skillInfos, IEnumerable buffInfos) + : base(skillId, character, skillInfos, buffInfos) + { + } + + public override IEnumerator CoExecute(IStage stage) + { + yield return null; + } + } +} diff --git a/Lib9c/Model/Buff/Stun.cs b/Lib9c/Model/Buff/Stun.cs new file mode 100644 index 0000000000..3ba5062ef1 --- /dev/null +++ b/Lib9c/Model/Buff/Stun.cs @@ -0,0 +1,22 @@ +using System; + +namespace Nekoyume.Model.Buff +{ + [Serializable] + public class Stun : Buff + { + public Stun(BuffInfo buffInfo) : base(buffInfo) + { + + } + + protected Stun(Buff value) : base(value) + { + } + + public override object Clone() + { + return new Stun(this); + } + } +} From d1f84a0bdca81b46c6fadf2d07f73e84d6830fd1 Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Tue, 28 Nov 2023 19:32:36 +0900 Subject: [PATCH 36/70] add usage of Tick and Stun to CharacterBase --- Lib9c/Model/Character/CharacterBase.cs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/Lib9c/Model/Character/CharacterBase.cs b/Lib9c/Model/Character/CharacterBase.cs index 56902dd15f..7cd4295627 100644 --- a/Lib9c/Model/Character/CharacterBase.cs +++ b/Lib9c/Model/Character/CharacterBase.cs @@ -369,6 +369,11 @@ public void AddBuff(Buff.Buff buff, bool updateImmediate = true) var clone = (ActionBuff)action.Clone(); Buffs[action.RowData.GroupId] = clone; } + else if (buff is Stun stun) + { + var clone = (Stun)stun.Clone(); + Buffs[stun.BuffInfo.GroupId] = clone; + } } public void RemoveRecentStatBuff() @@ -509,8 +514,17 @@ private void Act() { ReduceDurationOfBuffs(); ReduceSkillCooldown(); - OnPreSkill(); - var usedSkill = UseSkill(); + BattleStatus.Skill usedSkill; + if (OnPreSkill()) + { + usedSkill = new Tick(this); + Simulator.Log.Add(usedSkill); + } + else + { + usedSkill = UseSkill(); + } + if (usedSkill != null) { OnPostSkill(usedSkill); @@ -556,9 +570,9 @@ private void ActV2() EndTurn(); } - protected virtual void OnPreSkill() + protected virtual bool OnPreSkill() { - + return Buffs.Values.Any(buff => buff is Stun); } protected virtual void OnPostSkill(BattleStatus.Skill usedSkill) From 5d8008a17520a6fdb4e40d71bd7cfd472c8d19f5 Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Tue, 28 Nov 2023 19:32:49 +0900 Subject: [PATCH 37/70] add unit test about Stun buff --- .Lib9c.Tests/Model/PlayerTest.cs | 74 ++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/.Lib9c.Tests/Model/PlayerTest.cs b/.Lib9c.Tests/Model/PlayerTest.cs index 0972f670ba..5892d414a9 100644 --- a/.Lib9c.Tests/Model/PlayerTest.cs +++ b/.Lib9c.Tests/Model/PlayerTest.cs @@ -9,6 +9,7 @@ namespace Lib9c.Tests.Model using Nekoyume.Battle; using Nekoyume.Model; using Nekoyume.Model.BattleStatus; + using Nekoyume.Model.Buff; using Nekoyume.Model.Item; using Nekoyume.Model.Quest; using Nekoyume.Model.Skill; @@ -422,5 +423,78 @@ public void MaxLevelTest() Assert.Equal(maxLevel, player.Level); Assert.Equal(requiredExp - 1, player.Exp.Current - expRow.Exp); } + + [Fact] + public void GetStun() + { + var defaultAttack = SkillFactory.GetV1( + _tableSheets.SkillSheet.Values.First(r => r.Id == GameConfig.DefaultAttackId), + 100, + 100 + ); + + var simulator = new StageSimulator( + _random, + _avatarState, + new List(), + null, + new List(), + 1, + 1, + _tableSheets.StageSheet[1], + _tableSheets.StageWaveSheet[1], + false, + 20, + _tableSheets.GetSimulatorSheets(), + _tableSheets.EnemySkillSheet, + _tableSheets.CostumeStatSheet, + StageSimulator.GetWaveRewards( + _random, + _tableSheets.StageSheet[1], + _tableSheets.MaterialItemSheet) + ); + var player = simulator.Player; + var enemy = new Enemy(player, _tableSheets.CharacterSheet.Values.First(), 1); + player.Targets.Add(enemy); + simulator.Characters = new SimplePriorityQueue(); + simulator.Characters.Enqueue(enemy, 0); + player.InitAI(); + player.OverrideSkill(defaultAttack); + + // force add buff 'Stun' + player.AddBuff(new Stun(new BuffInfo(1, 1, 100, 2, SkillTargetType.Self))); + var actionBuffSheet = _tableSheets.ActionBuffSheet; + var row = actionBuffSheet.Values.First(); + var bleed = BuffFactory.GetActionBuff(enemy.Stats, row); + player.AddBuff(bleed); + player.Tick(); + player.Tick(); + Assert.NotEmpty(simulator.Log); + var log = simulator.Log; + var logCount = log.Count; + var logList = log.ToList(); + for (int i = 0; i < logCount; i++) + { + var currLog = logList[i]; + if (currLog is Tick) + { + var nextLog = logList[i + 1]; + + // 'Tick' does not give damage + Assert.Equal(currLog.Character.Targets.First().CurrentHP, nextLog.Character.Targets.First().CurrentHP); + Assert.True(nextLog is TickDamage); + } + else if (currLog is TickDamage) + { + var nextLog = logList[i + 1]; + Assert.True(currLog.Character.CurrentHP > nextLog.Character.CurrentHP); + } + } + + Assert.True(logList.Count > 0); + Assert.Contains(logList, e => e is Tick); + Assert.Contains(logList, e => e is TickDamage); + Assert.Contains(logList, e => e is RemoveBuffs); + } } } From 7fc2efb9eb738c8254d8b564b7fd1cd6d90124d2 Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Wed, 29 Nov 2023 16:33:53 +0900 Subject: [PATCH 38/70] fix CharacterBase.Act() for adding character.Clone to BattleStatus.Tick --- Lib9c/Model/Character/CharacterBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib9c/Model/Character/CharacterBase.cs b/Lib9c/Model/Character/CharacterBase.cs index 7cd4295627..27b9610de9 100644 --- a/Lib9c/Model/Character/CharacterBase.cs +++ b/Lib9c/Model/Character/CharacterBase.cs @@ -517,7 +517,7 @@ private void Act() BattleStatus.Skill usedSkill; if (OnPreSkill()) { - usedSkill = new Tick(this); + usedSkill = new Tick((CharacterBase)Clone()); Simulator.Log.Add(usedSkill); } else From f1acaa31ad4da4669dfd8c5255560875591d76a0 Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Wed, 29 Nov 2023 16:34:08 +0900 Subject: [PATCH 39/70] change Stun to ActtionBuff --- Lib9c/Model/Buff/BuffFactory.cs | 4 ++++ Lib9c/Model/Buff/Stun.cs | 22 +++++++++++++++++++--- Lib9c/Model/Skill/ActionBuffType.cs | 1 + 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Lib9c/Model/Buff/BuffFactory.cs b/Lib9c/Model/Buff/BuffFactory.cs index 760b828e8f..eda605fb85 100644 --- a/Lib9c/Model/Buff/BuffFactory.cs +++ b/Lib9c/Model/Buff/BuffFactory.cs @@ -25,6 +25,8 @@ public static ActionBuff GetActionBuff(Stats stat, ActionBuffSheet.Row row) case ActionBuffType.Bleed: var power = (int)decimal.Round(stat.ATK * row.ATKPowerRatio); return new Bleed(row, power); + case ActionBuffType.Stun: + return new Stun(row); default: throw new ArgumentOutOfRangeException(); } @@ -36,6 +38,8 @@ public static ActionBuff GetCustomActionBuff(SkillCustomField customField, Actio { case ActionBuffType.Bleed: return new Bleed(customField, row); + case ActionBuffType.Stun: + return new Stun(customField, row); default: throw new ArgumentOutOfRangeException(); } diff --git a/Lib9c/Model/Buff/Stun.cs b/Lib9c/Model/Buff/Stun.cs index 3ba5062ef1..bd0d93a60b 100644 --- a/Lib9c/Model/Buff/Stun.cs +++ b/Lib9c/Model/Buff/Stun.cs @@ -1,16 +1,22 @@ using System; +using Nekoyume.Model.BattleStatus.Arena; +using Nekoyume.Model.Skill; +using Nekoyume.TableData; namespace Nekoyume.Model.Buff { [Serializable] - public class Stun : Buff + public class Stun : ActionBuff { - public Stun(BuffInfo buffInfo) : base(buffInfo) + public Stun(ActionBuffSheet.Row row) : base(row) { + } + public Stun(SkillCustomField customField, ActionBuffSheet.Row row) : base(customField, row) + { } - protected Stun(Buff value) : base(value) + protected Stun(ActionBuff value) : base(value) { } @@ -18,5 +24,15 @@ public override object Clone() { return new Stun(this); } + + public override BattleStatus.Skill GiveEffect(CharacterBase affectedCharacter, int simulatorWaveTurn, bool copyCharacter = true) + { + throw new NotImplementedException(); + } + + public override ArenaSkill GiveEffectForArena(ArenaCharacter affectedCharacter, int simulatorWaveTurn) + { + throw new NotImplementedException(); + } } } diff --git a/Lib9c/Model/Skill/ActionBuffType.cs b/Lib9c/Model/Skill/ActionBuffType.cs index 40c5e190e7..652df29129 100644 --- a/Lib9c/Model/Skill/ActionBuffType.cs +++ b/Lib9c/Model/Skill/ActionBuffType.cs @@ -4,5 +4,6 @@ namespace Nekoyume.Model.Skill public enum ActionBuffType { Bleed, + Stun, } } From f2dcc3f031882c938fdbe28067d3d7b0a24562ae Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Wed, 29 Nov 2023 16:35:10 +0900 Subject: [PATCH 40/70] add temporary skill and action buff about Stun skill id: 700004, action buff id: 704000 --- Lib9c/TableCSV/Skill/ActionBuffSheet.csv | 3 ++- Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv | 3 ++- Lib9c/TableCSV/Skill/SkillSheet.csv | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Lib9c/TableCSV/Skill/ActionBuffSheet.csv b/Lib9c/TableCSV/Skill/ActionBuffSheet.csv index 014a9d3c22..8111723706 100644 --- a/Lib9c/TableCSV/Skill/ActionBuffSheet.csv +++ b/Lib9c/TableCSV/Skill/ActionBuffSheet.csv @@ -2,4 +2,5 @@ id,group,_name,chance,duration,target_type,buff_type,elemental_type,atk_power_ra 500001,500001,출혈(0.5),100,10,Enemy,Bleed,Normal,0.5 500002,500001,출혈(0.4),100,10,Enemy,Bleed,Normal,0.4 500003,500001,출혈(0.2),100,10,Enemy,Bleed,Normal,0.2 -600001,600001,출혈,100,0,Enemies,Bleed,Normal,1 \ No newline at end of file +600001,600001,출혈,100,0,Enemies,Bleed,Normal,1 +704000,704000,기절,100,0,Enemy,Stun,Normal,0 diff --git a/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv b/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv index 1f99b57563..d462e5b892 100644 --- a/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv +++ b/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv @@ -2,4 +2,5 @@ skill_id,buff_id 500003,500001 500004,500002 500005,500003 -600001,600001 \ No newline at end of file +600001,600001 +700004,704000 diff --git a/Lib9c/TableCSV/Skill/SkillSheet.csv b/Lib9c/TableCSV/Skill/SkillSheet.csv index 3e6b9a0748..a9ed44380a 100644 --- a/Lib9c/TableCSV/Skill/SkillSheet.csv +++ b/Lib9c/TableCSV/Skill/SkillSheet.csv @@ -166,4 +166,5 @@ _250001,속도 증가(전체),Normal,Buff,SpeedBuff,Ally,1,1 // 미구현 600001,출혈,Normal,Debuff,Buff,Enemy,1,15 700001,피해 감소 (고정),Normal,Buff,DamageReductionBuff,Self,1,15 700002,피해 감소 (비율),Normal,Buff,DamageReductionBuff,Self,1,15 -700003,치명 데미지 증가,Normal,Buff,CriticalDamageBuff,Self,1,15 \ No newline at end of file +700003,치명 데미지 증가,Normal,Buff,CriticalDamageBuff,Self,1,15 +700004,기절,Normal,Debuff,Buff,Enemy,1,15 From fa312a8b39bac1fa4464c61749d3e96b7a98c991 Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Wed, 29 Nov 2023 16:56:55 +0900 Subject: [PATCH 41/70] add unit test about Stun skill --- .Lib9c.Tests/Model/PlayerTest.cs | 78 +++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 2 deletions(-) diff --git a/.Lib9c.Tests/Model/PlayerTest.cs b/.Lib9c.Tests/Model/PlayerTest.cs index 5892d414a9..4d6098b05d 100644 --- a/.Lib9c.Tests/Model/PlayerTest.cs +++ b/.Lib9c.Tests/Model/PlayerTest.cs @@ -461,9 +461,10 @@ public void GetStun() player.InitAI(); player.OverrideSkill(defaultAttack); - // force add buff 'Stun' - player.AddBuff(new Stun(new BuffInfo(1, 1, 100, 2, SkillTargetType.Self))); var actionBuffSheet = _tableSheets.ActionBuffSheet; + // force add buff 'Stun' + // 704000 is ActionBuff id of Stun + player.AddBuff(BuffFactory.GetActionBuff(player.Stats, actionBuffSheet[704000])); var row = actionBuffSheet.Values.First(); var bleed = BuffFactory.GetActionBuff(enemy.Stats, row); player.AddBuff(bleed); @@ -496,5 +497,78 @@ public void GetStun() Assert.Contains(logList, e => e is TickDamage); Assert.Contains(logList, e => e is RemoveBuffs); } + + [Fact] + public void GiveStun() + { + var simulator = new StageSimulator( + _random, + _avatarState, + new List(), + null, + new List(), + 1, + 1, + _tableSheets.StageSheet[1], + _tableSheets.StageWaveSheet[1], + false, + 20, + _tableSheets.GetSimulatorSheets(), + _tableSheets.EnemySkillSheet, + _tableSheets.CostumeStatSheet, + StageSimulator.GetWaveRewards( + _random, + _tableSheets.StageSheet[1], + _tableSheets.MaterialItemSheet) + ); + var skill = SkillFactory.Get(_tableSheets.SkillSheet[700004], 0, 100, 0, StatType.NONE); + skill.CustomField = new SkillCustomField { BuffDuration = 2 }; + var player = simulator.Player; + var enemy = new Enemy(player, _tableSheets.CharacterSheet.Values.First(), 1); + player.Targets.Add(enemy); + simulator.Characters = new SimplePriorityQueue(); + simulator.Characters.Enqueue(enemy, 0); + player.InitAI(); + enemy.InitAI(); + player.AddSkill(skill); + player.Tick(); + var actionBuffSheet = _tableSheets.ActionBuffSheet; + var row = actionBuffSheet.Values.First(); + var bleed = BuffFactory.GetActionBuff(enemy.Stats, row); + enemy.AddBuff(bleed); + enemy.Tick(); + enemy.Tick(); + enemy.Tick(); + Assert.NotEmpty(simulator.Log); + var log = simulator.Log; + var logCount = log.Count; + var logList = log.ToList(); + for (int i = 0; i < logCount; i++) + { + var currLog = logList[i]; + if (currLog is Tick) + { + var nextLog = logList[i + 1]; + + // 'Tick' does not give damage + Assert.Equal(currLog.Character.Targets.First().CurrentHP, nextLog.Character.Targets.First().CurrentHP); + Assert.True(nextLog is TickDamage); + } + else if (currLog is TickDamage) + { + var nextLog = logList.ElementAtOrDefault(i + 1); + if (nextLog != null) + { + Assert.True(currLog.Character.CurrentHP > nextLog.Character.CurrentHP); + } + } + } + + Assert.True(logList.Count > 0); + Assert.Contains(logList, e => e is Tick); + Assert.Contains(logList, e => e is TickDamage); + Assert.Contains(logList, e => e is RemoveBuffs); + Assert.Contains(logList, e => e is Nekoyume.Model.BattleStatus.NormalAttack); + } } } From c9ff5f5ae3c082851cb2d17a6a9c6dc40a9ebf19 Mon Sep 17 00:00:00 2001 From: Yang Chun Ung Date: Thu, 30 Nov 2023 12:33:55 +0900 Subject: [PATCH 42/70] Backup mint_assets --- .../{MintAssetsTest.cs => MintAssets0Test.cs} | 112 +++++++++++++++--- .gitallowed | 3 + .../Action/{MintAssets.cs => MintAssets0.cs} | 6 +- 3 files changed, 102 insertions(+), 19 deletions(-) rename .Lib9c.Tests/Action/{MintAssetsTest.cs => MintAssets0Test.cs} (69%) rename Lib9c/Action/{MintAssets.cs => MintAssets0.cs} (98%) diff --git a/.Lib9c.Tests/Action/MintAssetsTest.cs b/.Lib9c.Tests/Action/MintAssets0Test.cs similarity index 69% rename from .Lib9c.Tests/Action/MintAssetsTest.cs rename to .Lib9c.Tests/Action/MintAssets0Test.cs index ca29154b56..6c09f36eca 100644 --- a/.Lib9c.Tests/Action/MintAssetsTest.cs +++ b/.Lib9c.Tests/Action/MintAssets0Test.cs @@ -9,6 +9,7 @@ namespace Lib9c.Tests.Action using Libplanet.Common; using Libplanet.Crypto; using Libplanet.Types.Assets; + using Libplanet.Types.Tx; using Nekoyume; using Nekoyume.Action; using Nekoyume.Model; @@ -17,7 +18,7 @@ namespace Lib9c.Tests.Action using Nekoyume.Model.State; using Xunit; - public class MintAssetsTest + public class MintAssets0Test { private readonly Address _adminAddress; private readonly ISet
_minters; @@ -26,7 +27,7 @@ public class MintAssetsTest private readonly TableSheets _tableSheets; - public MintAssetsTest() + public MintAssets0Test() { _adminAddress = new PrivateKey().Address; _ncgCurrency = Currency.Legacy("NCG", 2, null); @@ -54,12 +55,12 @@ public MintAssetsTest() [Fact] public void PlainValue() { - var r = new List() + var r = new List() { new (default, _ncgCurrency * 100, null), new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), }; - var act = new MintAssets(r, null); + var act = new MintAssets0(r, null); var expected = Dictionary.Empty .Add("type_id", "mint_assets") .Add("values", List.Empty @@ -71,7 +72,7 @@ public void PlainValue() act.PlainValue ); - var act2 = new MintAssets(r, "memo"); + var act2 = new MintAssets0(r, "memo"); var expected2 = Dictionary.Empty .Add("type_id", "mint_assets") .Add("values", List.Empty @@ -93,10 +94,10 @@ public void LoadPlainValue() .Add(default(Null)) .Add(new List(default(Address).Bencoded, (_ncgCurrency * 100).Serialize(), default(Null))) .Add(new List(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde").Bencoded, (_ncgCurrency * 1000).Serialize(), default(Null)))); - var act = new MintAssets(); + var act = new MintAssets0(); act.LoadPlainValue(pv); - var expected = new List() + var expected = new List() { new (default, _ncgCurrency * 100, null), new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), @@ -110,7 +111,7 @@ public void LoadPlainValue() .Add((Text)"memo") .Add(new List(default(Address).Bencoded, (_ncgCurrency * 100).Serialize(), default(Null))) .Add(new List(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde").Bencoded, (_ncgCurrency * 1000).Serialize(), default(Null)))); - var act2 = new MintAssets(); + var act2 = new MintAssets0(); act2.LoadPlainValue(pv2); Assert.Equal("memo", act2.Memo); } @@ -118,8 +119,8 @@ public void LoadPlainValue() [Fact] public void Execute_With_FungibleAssetValue() { - var action = new MintAssets( - new List() + var action = new MintAssets0( + new List() { new (default, _ncgCurrency * 100, null), new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), @@ -153,8 +154,8 @@ public void Execute_With_FungibleItemValue() "7f5d25371e58c0f3d5a33511450f73c2e0fa4fac32a92e1cbe64d3bf2fef6328" ); - var action = new MintAssets( - new List() + var action = new MintAssets0( + new List() { new ( avatarAddress, @@ -192,8 +193,8 @@ public void Execute_With_Mixed() "7f5d25371e58c0f3d5a33511450f73c2e0fa4fac32a92e1cbe64d3bf2fef6328" ); - var action = new MintAssets( - new List() + var action = new MintAssets0( + new List() { new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), new ( @@ -233,8 +234,8 @@ public void Execute_With_Mixed() [Fact] public void Execute_Throws_InvalidMinterException() { - var action = new MintAssets( - new List() + var action = new MintAssets0( + new List() { new (default, _ncgCurrency * 100, null), new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), @@ -276,6 +277,56 @@ public void Execute_Throws_InvalidMinterException() )); } + [Fact] + public void Execute_Crystal() + { + var tx = Transaction.Deserialize(Convert.FromBase64String( + "ZDE6UzcxOjBFAiEAhzt5mDMzPwi6y+W+DJ53T4TKwt6YMaFTi38rKYqf7ZMCICV36ngA3Gi+rXkdG5hCUtlLXjAz8H2IKMNaCdCy/N90MTphbGR1Nzp0eXBlX2lkdTExOm1pbnRfYXNzZXRzdTY6dmFsdWVzbHU3Mzp7ImlhcCI6IHsiZ19za3UiOiAiZ19wa2dfYmxhY2tmcmlkYXkwMSIsICJhX3NrdSI6ICJhX3BrZ19ibGFja2ZyaWRheTAxIn19bDIwOgNS/yy36WH9ZHgDqZJiTdhQeCGFbGR1MTM6ZGVjaW1hbFBsYWNlczE6EnU3Om1pbnRlcnNudTY6dGlja2VydTc6Q1JZU1RBTGVpMjUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGVlbmVsMjA6H3yZ4KY1m33Wn0P0t+LAvTf5oidubDMyOjmR4E3YCNwLwksh9a23vxmXMS+HANrxM0vzSTbooIE6aTMwMDAwZWVlbDIwOh98meCmNZt91p9D9LfiwL03+aInbmwzMjr4+vksnA0OjgZpQ2Hqh7/IspqK6N6TBEuYRwpXY27Q4Gk0MDBlZWVlZWUxOmczMjpyn6JpWGSKNbU+jjkF0R7FOxtJKb9fSZiErtffYW9ZEzE6bGk0ZTE6bWxkdTEzOmRlY2ltYWxQbGFjZXMxOhJ1NzptaW50ZXJzbnU2OnRpY2tlcnU0Ok1lYWRlaTEwMDAwMDAwMDAwMDAwMDAwMDBlZTE6bmkxMTU3N2UxOnA2NToEq54xog2Nv1BCv8Js6dntmg4yrXh6HlqjroGI+lFDhhU1rMcTLNjnTUwfC5T4Q1deOt1piNPMsfVNfFn7lTXXiTE6czIwOhwq6XOAz7T3MgSeRU9tmiXUlnxvMTp0dTI3OjIyMDEtMDEtMzFUMjM6NTk6NTkuOTk5MDAwWjE6dWxlZQ==")); + var a = tx.Actions.First(); + var action = new MintAssets0(); + action.LoadPlainValue(a); + var address = action.MintSpecs!.First().Recipient; + var avatarAddress = action.MintSpecs.Last().Recipient; + IAccount prevState = GenerateAvatar(_prevState, address, avatarAddress); + IAccount nextState = action.Execute( + new ActionContext() + { + PreviousState = prevState, + Signer = _minters.First(), + BlockIndex = 1, + } + ); + + var inventory = nextState.GetInventory(avatarAddress.Derive(SerializeKeys.LegacyInventoryKey)); + var avatarDict = Assert.IsType(nextState.GetState(avatarAddress)); + var mailBox = new MailBox((List)avatarDict[SerializeKeys.MailBoxKey]); + Assert.Single(mailBox); + var mail = Assert.IsType(mailBox.First()); + Assert.Equal(action.Memo, mail.Memo); + + foreach (var mintSpec in action.MintSpecs) + { + if (mintSpec.Assets.HasValue) + { + var fav = mintSpec.Assets.Value; + Assert.Equal(fav, nextState.GetBalance(address, fav.Currency)); + Assert.Null(mail.FungibleAssetValues); + } + + if (mintSpec.Items.HasValue) + { + var item = mintSpec.Items.Value; + var fungibleId = item.Id; + var itemCount = item.Count; + Assert.Contains(inventory.Items, i => i.count == itemCount && i.item is Material m && m.FungibleId.Equals(fungibleId)); + Assert.Contains( + mail.FungibleIdAndCounts, + tuple => tuple.count == itemCount && tuple.fungibleId.Equals(fungibleId) + ); + } + } + } + private IAccount GenerateAvatar(IAccount state, out Address avatarAddress) { var address = new PrivateKey().Address; @@ -306,5 +357,34 @@ private IAccount GenerateAvatar(IAccount state, out Address avatarAddress) return state; } + + private IAccount GenerateAvatar(IAccount state, Address address, Address avatarAddress) + { + var agentState = new AgentState(address); + var rankingMapAddress = new PrivateKey().Address; + var avatarState = new AvatarState( + avatarAddress, + address, + 0, + _tableSheets.GetAvatarSheets(), + new GameConfigState(), + rankingMapAddress) + { + worldInformation = new WorldInformation( + 0, + _tableSheets.WorldSheet, + GameConfig.RequireClearedStageLevel.ActionsInShop), + }; + agentState.avatarAddresses[0] = avatarAddress; + + state = state + .SetState(address, agentState.Serialize()) + .SetState(avatarAddress, avatarState.SerializeV2()) + .SetState( + avatarAddress.Derive(SerializeKeys.LegacyInventoryKey), + avatarState.inventory.Serialize()); + + return state; + } } } diff --git a/.gitallowed b/.gitallowed index 8015d188f4..fc39bc3afa 100644 --- a/.gitallowed +++ b/.gitallowed @@ -15,3 +15,6 @@ f8960846e9ae4ad1c23686f74c8e5f80f22336b6f2175be21db82afa8823c92d # For NCStagePolicy.cs 300826da62b595d8cd663dadf04995a7411534d1cdc17dac75ce88754472f774 210d1374d8f068de657de6b991e63888da9cadbc68e505ac917b35568b5340f8 + +# For MintAssetsTest +7f5d25371e58c0f3d5a33511450f73c2e0fa4fac32a92e1cbe64d3bf2fef6328 \ No newline at end of file diff --git a/Lib9c/Action/MintAssets.cs b/Lib9c/Action/MintAssets0.cs similarity index 98% rename from Lib9c/Action/MintAssets.cs rename to Lib9c/Action/MintAssets0.cs index ceedc8f433..ba65d1e82c 100644 --- a/Lib9c/Action/MintAssets.cs +++ b/Lib9c/Action/MintAssets0.cs @@ -18,15 +18,15 @@ namespace Nekoyume.Action { [ActionType(TypeIdentifier)] - public class MintAssets : ActionBase + public class MintAssets0 : ActionBase { public const string TypeIdentifier = "mint_assets"; - public MintAssets() + public MintAssets0() { } - public MintAssets(IEnumerable specs, string? memo) + public MintAssets0(IEnumerable specs, string? memo) { MintSpecs = specs.ToList(); Memo = memo; From f6061c6e4a6024d4cac0f1aa8de403a81359842d Mon Sep 17 00:00:00 2001 From: Yang Chun Ung Date: Thu, 30 Nov 2023 12:34:08 +0900 Subject: [PATCH 43/70] Introduce mint_assets2 for mail contains agent favs --- .Lib9c.Tests/Action/MintAssetsTest.cs | 390 ++++++++++++++++++++++++++ Lib9c/Action/MintAssets.cs | 241 ++++++++++++++++ 2 files changed, 631 insertions(+) create mode 100644 .Lib9c.Tests/Action/MintAssetsTest.cs create mode 100644 Lib9c/Action/MintAssets.cs diff --git a/.Lib9c.Tests/Action/MintAssetsTest.cs b/.Lib9c.Tests/Action/MintAssetsTest.cs new file mode 100644 index 0000000000..01049a4790 --- /dev/null +++ b/.Lib9c.Tests/Action/MintAssetsTest.cs @@ -0,0 +1,390 @@ +namespace Lib9c.Tests.Action +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Security.Cryptography; + using Bencodex.Types; + using Libplanet.Action.State; + using Libplanet.Common; + using Libplanet.Crypto; + using Libplanet.Types.Assets; + using Libplanet.Types.Tx; + using Nekoyume; + using Nekoyume.Action; + using Nekoyume.Model; + using Nekoyume.Model.Item; + using Nekoyume.Model.Mail; + using Nekoyume.Model.State; + using Xunit; + + public class MintAssetsTest + { + private readonly Address _adminAddress; + private readonly ISet
_minters; + private readonly Currency _ncgCurrency; + private readonly IAccount _prevState; + + private readonly TableSheets _tableSheets; + + public MintAssetsTest() + { + _adminAddress = new PrivateKey().Address; + _ncgCurrency = Currency.Legacy("NCG", 2, null); + _minters = new HashSet
+ { + new PrivateKey().Address, + new PrivateKey().Address, + new PrivateKey().Address, + }; + _prevState = new Account( + MockState.Empty + .SetState(AdminState.Address, new AdminState(_adminAddress, 100).Serialize()) + .SetState(Addresses.AssetMinters, new List(_minters.Select(m => m.Serialize()))) + ); + + var sheets = TableSheetsImporter.ImportSheets(); + foreach (var (key, value) in sheets) + { + _prevState = _prevState.SetState(Addresses.TableSheet.Derive(key), value.Serialize()); + } + + _tableSheets = new TableSheets(sheets); + } + + [Fact] + public void PlainValue() + { + var r = new List() + { + new (default, _ncgCurrency * 100, null), + new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), + }; + var act = new MintAssets(r, null); + var expected = Dictionary.Empty + .Add("type_id", MintAssets.TypeIdentifier) + .Add("values", List.Empty + .Add(Null.Value) + .Add(new List(default(Address).Bencoded, (_ncgCurrency * 100).Serialize(), default(Null))) + .Add(new List(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde").Bencoded, (_ncgCurrency * 1000).Serialize(), default(Null)))); + Assert.Equal( + expected, + act.PlainValue + ); + + var act2 = new MintAssets(r, "memo"); + var expected2 = Dictionary.Empty + .Add("type_id", MintAssets.TypeIdentifier) + .Add("values", List.Empty + .Add((Text)"memo") + .Add(new List(default(Address).Bencoded, (_ncgCurrency * 100).Serialize(), default(Null))) + .Add(new List(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde").Bencoded, (_ncgCurrency * 1000).Serialize(), default(Null)))); + Assert.Equal( + expected2, + act2.PlainValue + ); + } + + [Fact] + public void LoadPlainValue() + { + var pv = Dictionary.Empty + .Add("type_id", "mint_assets") + .Add("values", List.Empty + .Add(default(Null)) + .Add(new List(default(Address).Bencoded, (_ncgCurrency * 100).Serialize(), default(Null))) + .Add(new List(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde").Bencoded, (_ncgCurrency * 1000).Serialize(), default(Null)))); + var act = new MintAssets(); + act.LoadPlainValue(pv); + + var expected = new List() + { + new (default, _ncgCurrency * 100, null), + new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), + }; + Assert.Equal(expected, act.MintSpecs); + Assert.Null(act.Memo); + + var pv2 = Dictionary.Empty + .Add("type_id", "mint_assets") + .Add("values", List.Empty + .Add((Text)"memo") + .Add(new List(default(Address).Bencoded, (_ncgCurrency * 100).Serialize(), default(Null))) + .Add(new List(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde").Bencoded, (_ncgCurrency * 1000).Serialize(), default(Null)))); + var act2 = new MintAssets(); + act2.LoadPlainValue(pv2); + Assert.Equal("memo", act2.Memo); + } + + [Fact] + public void Execute_With_FungibleAssetValue() + { + var action = new MintAssets( + new List() + { + new (default, _ncgCurrency * 100, null), + new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), + }, + null + ); + IAccount nextState = action.Execute( + new ActionContext() + { + PreviousState = _prevState, + Signer = _minters.First(), + BlockIndex = 1, + } + ); + + Assert.Equal( + _ncgCurrency * 100, + nextState.GetBalance(default, _ncgCurrency) + ); + Assert.Equal( + _ncgCurrency * 1000, + nextState.GetBalance(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency) + ); + } + + [Fact] + public void Execute_With_FungibleItemValue() + { + IAccount prevState = GenerateAvatar(_prevState, out Address avatarAddress); + HashDigest fungibleId = HashDigest.FromString( + "7f5d25371e58c0f3d5a33511450f73c2e0fa4fac32a92e1cbe64d3bf2fef6328" + ); + + var action = new MintAssets( + new List() + { + new ( + avatarAddress, + null, + new FungibleItemValue(fungibleId, 42) + ), + }, + "Execute_With_FungibleItemValue" + ); + IAccount nextState = action.Execute( + new ActionContext() + { + PreviousState = prevState, + Signer = _minters.First(), + BlockIndex = 1, + } + ); + + var inventory = nextState.GetInventory(avatarAddress.Derive(SerializeKeys.LegacyInventoryKey)); + Assert.Contains(inventory.Items, i => i.count == 42 && i.item is Material m && m.FungibleId.Equals(fungibleId)); + + var avatarDict = Assert.IsType(nextState.GetState(avatarAddress)); + var mailBox = new MailBox((List)avatarDict[SerializeKeys.MailBoxKey]); + Assert.Single(mailBox); + var mail = Assert.IsType(mailBox.First()); + Assert.Equal(new[] { (fungibleId, 42) }, mail.FungibleIdAndCounts); + Assert.Equal(action.Memo, mail.Memo); + } + + [Fact] + public void Execute_With_Mixed() + { + IAccount prevState = GenerateAvatar(_prevState, out Address avatarAddress); + HashDigest fungibleId = HashDigest.FromString( + "7f5d25371e58c0f3d5a33511450f73c2e0fa4fac32a92e1cbe64d3bf2fef6328" + ); + + var action = new MintAssets( + new List() + { + new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), + new ( + avatarAddress, + Currencies.StakeRune * 123, + null + ), + new ( + avatarAddress, + null, + new FungibleItemValue(fungibleId, 42) + ), + }, + "Execute_With_FungibleItemValue" + ); + IAccount nextState = action.Execute( + new ActionContext() + { + PreviousState = prevState, + Signer = _minters.First(), + BlockIndex = 1, + } + ); + + var inventory = nextState.GetInventory(avatarAddress.Derive(SerializeKeys.LegacyInventoryKey)); + Assert.Contains(inventory.Items, i => i.count == 42 && i.item is Material m && m.FungibleId.Equals(fungibleId)); + + var avatarDict = Assert.IsType(nextState.GetState(avatarAddress)); + var mailBox = new MailBox((List)avatarDict[SerializeKeys.MailBoxKey]); + Assert.Single(mailBox); + var mail = Assert.IsType(mailBox.First()); + Assert.Equal(new[] { (fungibleId, 42) }, mail.FungibleIdAndCounts); + Assert.Equal(new[] { (avatarAddress, Currencies.StakeRune * 123) }, mail.FungibleAssetValues); + Assert.Equal(action.Memo, mail.Memo); + } + + [Fact] + public void Execute_Throws_InvalidMinterException() + { + var action = new MintAssets( + new List() + { + new (default, _ncgCurrency * 100, null), + new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), + }, + null + ); + + // Allows admin + _ = action.Execute( + new ActionContext() + { + PreviousState = _prevState, + Signer = _adminAddress, + BlockIndex = 1, + } + ); + + // Allows minters + foreach (Address m in _minters) + { + _ = action.Execute( + new ActionContext() + { + PreviousState = _prevState, + Signer = m, + BlockIndex = 1, + } + ); + } + + // Denies others + Assert.Throws(() => action.Execute( + new ActionContext() + { + PreviousState = _prevState, + Signer = default, + BlockIndex = 1, + } + )); + } + + [Fact] + public void Execute_Crystal() + { + var tx = Transaction.Deserialize(Convert.FromBase64String( + "ZDE6UzcxOjBFAiEAhzt5mDMzPwi6y+W+DJ53T4TKwt6YMaFTi38rKYqf7ZMCICV36ngA3Gi+rXkdG5hCUtlLXjAz8H2IKMNaCdCy/N90MTphbGR1Nzp0eXBlX2lkdTExOm1pbnRfYXNzZXRzdTY6dmFsdWVzbHU3Mzp7ImlhcCI6IHsiZ19za3UiOiAiZ19wa2dfYmxhY2tmcmlkYXkwMSIsICJhX3NrdSI6ICJhX3BrZ19ibGFja2ZyaWRheTAxIn19bDIwOgNS/yy36WH9ZHgDqZJiTdhQeCGFbGR1MTM6ZGVjaW1hbFBsYWNlczE6EnU3Om1pbnRlcnNudTY6dGlja2VydTc6Q1JZU1RBTGVpMjUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGVlbmVsMjA6H3yZ4KY1m33Wn0P0t+LAvTf5oidubDMyOjmR4E3YCNwLwksh9a23vxmXMS+HANrxM0vzSTbooIE6aTMwMDAwZWVlbDIwOh98meCmNZt91p9D9LfiwL03+aInbmwzMjr4+vksnA0OjgZpQ2Hqh7/IspqK6N6TBEuYRwpXY27Q4Gk0MDBlZWVlZWUxOmczMjpyn6JpWGSKNbU+jjkF0R7FOxtJKb9fSZiErtffYW9ZEzE6bGk0ZTE6bWxkdTEzOmRlY2ltYWxQbGFjZXMxOhJ1NzptaW50ZXJzbnU2OnRpY2tlcnU0Ok1lYWRlaTEwMDAwMDAwMDAwMDAwMDAwMDBlZTE6bmkxMTU3N2UxOnA2NToEq54xog2Nv1BCv8Js6dntmg4yrXh6HlqjroGI+lFDhhU1rMcTLNjnTUwfC5T4Q1deOt1piNPMsfVNfFn7lTXXiTE6czIwOhwq6XOAz7T3MgSeRU9tmiXUlnxvMTp0dTI3OjIyMDEtMDEtMzFUMjM6NTk6NTkuOTk5MDAwWjE6dWxlZQ==")); + var a = tx.Actions.First(); + var action = new MintAssets(); + action.LoadPlainValue(a); + var address = action.MintSpecs!.First().Recipient; + var avatarAddress = action.MintSpecs.Last().Recipient; + IAccount prevState = GenerateAvatar(_prevState, address, avatarAddress); + IAccount nextState = action.Execute( + new ActionContext() + { + PreviousState = prevState, + Signer = _minters.First(), + BlockIndex = 1, + } + ); + + var inventory = nextState.GetInventory(avatarAddress.Derive(SerializeKeys.LegacyInventoryKey)); + var avatarDict = Assert.IsType(nextState.GetState(avatarAddress)); + var mailBox = new MailBox((List)avatarDict[SerializeKeys.MailBoxKey]); + Assert.Single(mailBox); + var mail = Assert.IsType(mailBox.First()); + Assert.Equal(action.Memo, mail.Memo); + + foreach (var mintSpec in action.MintSpecs) + { + if (mintSpec.Assets.HasValue) + { + var fav = mintSpec.Assets.Value; + Assert.Equal(fav, nextState.GetBalance(address, fav.Currency)); + Assert.Contains(mail.FungibleAssetValues, tuple => tuple.value == fav && tuple.balanceAddr.Equals(address)); + } + + if (mintSpec.Items.HasValue) + { + var item = mintSpec.Items.Value; + var fungibleId = item.Id; + var itemCount = item.Count; + Assert.Contains(inventory.Items, i => i.count == itemCount && i.item is Material m && m.FungibleId.Equals(fungibleId)); + Assert.Contains( + mail.FungibleIdAndCounts, + tuple => tuple.count == itemCount && tuple.fungibleId.Equals(fungibleId) + ); + } + } + } + + private IAccount GenerateAvatar(IAccount state, out Address avatarAddress) + { + var address = new PrivateKey().Address; + var agentState = new AgentState(address); + avatarAddress = address.Derive("avatar"); + var rankingMapAddress = new PrivateKey().Address; + var avatarState = new AvatarState( + avatarAddress, + address, + 0, + _tableSheets.GetAvatarSheets(), + new GameConfigState(), + rankingMapAddress) + { + worldInformation = new WorldInformation( + 0, + _tableSheets.WorldSheet, + GameConfig.RequireClearedStageLevel.ActionsInShop), + }; + agentState.avatarAddresses[0] = avatarAddress; + + state = state + .SetState(address, agentState.Serialize()) + .SetState(avatarAddress, avatarState.SerializeV2()) + .SetState( + avatarAddress.Derive(SerializeKeys.LegacyInventoryKey), + avatarState.inventory.Serialize()); + + return state; + } + + private IAccount GenerateAvatar(IAccount state, Address address, Address avatarAddress) + { + var agentState = new AgentState(address); + var rankingMapAddress = new PrivateKey().Address; + var avatarState = new AvatarState( + avatarAddress, + address, + 0, + _tableSheets.GetAvatarSheets(), + new GameConfigState(), + rankingMapAddress) + { + worldInformation = new WorldInformation( + 0, + _tableSheets.WorldSheet, + GameConfig.RequireClearedStageLevel.ActionsInShop), + }; + agentState.avatarAddresses[0] = avatarAddress; + + state = state + .SetState(address, agentState.Serialize()) + .SetState(avatarAddress, avatarState.SerializeV2()) + .SetState( + avatarAddress.Derive(SerializeKeys.LegacyInventoryKey), + avatarState.inventory.Serialize()); + + return state; + } + } +} diff --git a/Lib9c/Action/MintAssets.cs b/Lib9c/Action/MintAssets.cs new file mode 100644 index 0000000000..03c0ccd6bb --- /dev/null +++ b/Lib9c/Action/MintAssets.cs @@ -0,0 +1,241 @@ +#nullable enable + +using System; +using System.Collections.Generic; +using System.Linq; +using Bencodex.Types; +using Lib9c; +using Libplanet.Action; +using Libplanet.Action.State; +using Libplanet.Crypto; +using Libplanet.Types.Assets; +using Nekoyume.Model; +using Nekoyume.Model.Item; +using Nekoyume.Model.Mail; +using Nekoyume.Model.State; +using Nekoyume.TableData; + +namespace Nekoyume.Action +{ + [ActionType(TypeIdentifier)] + public class MintAssets : ActionBase + { + public const string TypeIdentifier = "mint_assets2"; + + public MintAssets() + { + } + + public MintAssets(IEnumerable specs, string? memo) + { + MintSpecs = specs.ToList(); + Memo = memo; + } + + public override IAccount Execute(IActionContext context) + { + context.UseGas(1); + + if (MintSpecs is null) + { + throw new InvalidOperationException(); + } + + IAccount state = context.PreviousState; + HashSet
allowed = new(); + + if (state.TryGetState(Addresses.Admin, out Dictionary rawDict)) + { + allowed.Add(new AdminState(rawDict).AdminAddress); + } + + if (state.TryGetState(Addresses.AssetMinters, out List minters)) + { + allowed.UnionWith(minters.Select(m => m.ToAddress())); + } + + if (!allowed.Contains(context.Signer)) + { + throw new InvalidMinterException(context.Signer); + } + + Dictionary, List)> mailRecords = new(); + + foreach (var (recipient, assets, items) in MintSpecs) + { + if (!mailRecords.TryGetValue(recipient, out var records)) + { + mailRecords[recipient] = records = new( + new List(), + new List() + ); + } + + (List favs, List fivs) = records; + + if (assets is { } assetsNotNull) + { + state = state.MintAsset(context, recipient, assetsNotNull); + favs.Add(assetsNotNull); + } + + if (items is { } itemsNotNull) + { + Address inventoryAddr = recipient.Derive(SerializeKeys.LegacyInventoryKey); + Inventory inventory = state.GetInventory(inventoryAddr); + MaterialItemSheet itemSheet = state.GetSheet(); + if (itemSheet is null || itemSheet.OrderedList is null) + { + throw new InvalidOperationException(); + } + + foreach (MaterialItemSheet.Row row in itemSheet.OrderedList) + { + if (row.ItemId.Equals(itemsNotNull.Id)) + { + Material item = ItemFactory.CreateMaterial(row); + inventory.AddFungibleItem(item, itemsNotNull.Count); + } + } + + state = state.SetState(inventoryAddr, inventory.Serialize()); + fivs.Add(itemsNotNull); + } + } + + IRandom rng = context.GetRandom(); + foreach (var recipient in mailRecords.Keys) + { + if ( + state.GetState(recipient) is Dictionary dict && + dict.TryGetValue((Text)SerializeKeys.MailBoxKey, out IValue rawMailBox) && + dict.TryGetValue((Text)SerializeKeys.AgentAddressKey, out IValue rawAgentAddress) + ) + { + var agentAddress = rawAgentAddress.ToAddress(); + var mailBox = new MailBox((List)rawMailBox); + (List favs, List fivs) = mailRecords[recipient]; + List<(Address recipient, FungibleAssetValue v)> mailFavs = + favs.Select(v => (recipient, v)) + .ToList(); + + if (mailRecords.TryGetValue(agentAddress, out (List agentFavs, List _) agentRecords)) + { + mailFavs.AddRange(agentRecords.agentFavs.Select(v => (agentAddress, v))); + } + mailBox.Add( + new UnloadFromMyGaragesRecipientMail( + context.BlockIndex, + rng.GenerateRandomGuid(), + context.BlockIndex, + mailFavs, + fivs.Select(v => (v.Id, v.Count)), + Memo + ) + ); + mailBox.CleanUp(); + dict = dict.SetItem(SerializeKeys.MailBoxKey, mailBox.Serialize()); + state = state.SetState(recipient, dict); + } + } + + return state; + } + + public override void LoadPlainValue(IValue plainValue) + { + var asDict = (Dictionary)plainValue; + var asList = (List)asDict["values"]; + + if (asList[0] is Text memo) + { + Memo = memo; + } + else + { + Memo = null; + } + + MintSpecs = asList.Skip(1).Select(v => + { + return new MintSpec((List)v); + }).ToList(); + } + + public override IValue PlainValue + { + get + { + var values = new List + { + Memo is { } memoNotNull ? (Text)memoNotNull : Null.Value + }; + if (MintSpecs is { } mintSpecsNotNull) + { + values.AddRange(mintSpecsNotNull.Select(s => s.Serialize())); + } + + return new Dictionary( + new[] + { + new KeyValuePair((Text)"type_id", (Text)TypeIdentifier), + new KeyValuePair((Text)"values", new List(values)) + } + ); + } + } + + public List? MintSpecs + { + get; + private set; + } + + public string? Memo { get; private set; } + + public readonly struct MintSpec + { + public MintSpec(List bencoded) + : this( + bencoded[0].ToAddress(), + bencoded[1] is List rawAssets ? rawAssets.ToFungibleAssetValue() : null, + bencoded[2] is List rawItems ? new FungibleItemValue(rawItems) : null + ) + { + } + + public MintSpec( + Address recipient, + FungibleAssetValue? assets, + FungibleItemValue? items + ) + { + Recipient = recipient; + Assets = assets; + Items = items; + } + + public IValue Serialize() => new List( + Recipient.Serialize(), + Assets?.Serialize() ?? Null.Value, + Items?.Serialize() ?? Null.Value + ); + + internal void Deconstruct( + out Address recipient, + out FungibleAssetValue? assets, + out FungibleItemValue? items + ) + { + recipient = Recipient; + assets = Assets; + items = Items; + } + + public Address Recipient { get; } + public FungibleAssetValue? Assets { get; } + public FungibleItemValue? Items { get; } + + } + } +} From 87316703929223c327ef19e79501c5399d696059 Mon Sep 17 00:00:00 2001 From: Yang Chun Ung Date: Wed, 29 Nov 2023 21:48:31 +0900 Subject: [PATCH 44/70] Extract method for replayable --- .Lib9c.Tests/Action/Summon/RuneSummonTest.cs | 18 +++---- Lib9c/Action/RuneSummon.cs | 49 +++++++++++++++----- 2 files changed, 46 insertions(+), 21 deletions(-) diff --git a/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs b/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs index beb1e6e4f3..1c55a553ad 100644 --- a/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs +++ b/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs @@ -167,20 +167,20 @@ Type expectedExc }; ctx.SetRandom(random); var nextState = action.Execute(ctx); - var currencies = - nextState.TotalUpdatedFungibleAssets.Where(t => t.Item1 == _avatarAddress).Select(t => t.Item2).ToList(); - var totalBalance = 0; - var count = summonCount == 10 ? 11 : summonCount; - var expectedBalance = RuneSummon.RuneQuantity * count; - foreach (var currency in currencies) + var result = RuneSummon.SimulateSummon( + _tableSheets.RuneSheet, + _tableSheets.SummonSheet[groupId], + summonCount, + new TestRandom(seed) + ); + foreach (var pair in result) { + var currency = pair.Key; var prevBalance = state.GetBalance(_avatarAddress, currency); var balance = nextState.GetBalance(_avatarAddress, currency); - totalBalance += (int)(balance - prevBalance).RawValue; + Assert.Equal(currency * pair.Value, balance - prevBalance); } - Assert.Equal(expectedBalance, totalBalance); - nextState.GetAvatarStateV2(_avatarAddress).inventory .TryGetItem((int)materialId!, out var resultMaterial); Assert.Equal(0, resultMaterial?.count ?? 0); diff --git a/Lib9c/Action/RuneSummon.cs b/Lib9c/Action/RuneSummon.cs index 5d78674344..2a028d4ebf 100644 --- a/Lib9c/Action/RuneSummon.cs +++ b/Lib9c/Action/RuneSummon.cs @@ -9,6 +9,7 @@ using Libplanet.Action; using Libplanet.Action.State; using Libplanet.Crypto; +using Libplanet.Types.Assets; using Nekoyume.Action.Exceptions; using Nekoyume.Extensions; using Nekoyume.Model.State; @@ -44,7 +45,8 @@ public override IAccount Execute(IActionContext context) var started = DateTimeOffset.UtcNow; Log.Debug($"{addressesHex} RuneSummon Exec. Started."); - if (!states.TryGetAvatarStateV2(context.Signer, AvatarAddress, out var avatarState, out _)) + if (!states.TryGetAvatarStateV2(context.Signer, AvatarAddress, out var avatarState, + out _)) { throw new FailedLoadStateException( $"{addressesHex} Aborted as the avatar state of the signer was failed to load."); @@ -103,9 +105,8 @@ public override IAccount Execute(IActionContext context) } var random = context.GetRandom(); - states = SimulateSummon( + states = Summon( context, - addressesHex, AvatarAddress, runeSheet, summonRow, @@ -130,25 +131,24 @@ public override IAccount Execute(IActionContext context) new Dictionary { [AvatarAddressKey] = AvatarAddress.Serialize(), - [GroupIdKey] = (Integer)GroupId, - [SummonCountKey] = (Integer)SummonCount, + [GroupIdKey] = (Integer) GroupId, + [SummonCountKey] = (Integer) SummonCount, }.ToImmutableDictionary(); protected override void LoadPlainValueInternal( IImmutableDictionary plainValue) { AvatarAddress = plainValue[AvatarAddressKey].ToAddress(); - GroupId = (Integer)plainValue[GroupIdKey]; - SummonCount = (Integer)plainValue[SummonCountKey]; + GroupId = (Integer) plainValue[GroupIdKey]; + SummonCount = (Integer) plainValue[SummonCountKey]; } Address IRuneSummonV1.AvatarAddress => AvatarAddress; int IRuneSummonV1.GroupId => GroupId; int IRuneSummonV1.SummonCount => SummonCount; - public static IAccount SimulateSummon( + public static IAccount Summon( IActionContext context, - string addressesHex, Address avatarAddress, RuneSheet runeSheet, SummonSheet.Row summonRow, @@ -163,6 +163,31 @@ IAccount states summonCount += 1; } + var result = SimulateSummon(runeSheet, summonRow, summonCount, random); +#pragma warning disable LAA1002 + foreach (var pair in result) +#pragma warning restore LAA1002 + { + states = states.MintAsset(context, avatarAddress, pair.Key * pair.Value); + } + + return states; + } + + public static Dictionary SimulateSummon( + RuneSheet runeSheet, + SummonSheet.Row summonRow, + int summonCount, + IRandom random + ) + { + // Ten plus one + if (summonCount == 10) + { + summonCount += 1; + } + + var result = new Dictionary(); for (var i = 0; i < summonCount; i++) { var recipeId = 0; @@ -181,7 +206,6 @@ IAccount states if (runeRow is null) { throw new SheetRowNotFoundException( - addressesHex, nameof(RuneSheet), recipeId ); @@ -189,10 +213,11 @@ IAccount states var ticker = runeRow.Ticker; var currency = Currencies.GetRune(ticker); - states = states.MintAsset(context, avatarAddress, RuneQuantity * currency); + result.TryAdd(currency, 0); + result[currency] += RuneQuantity; } - return states; + return result; } } } From f55c1645c31158a4cce53ee03957e6b006e1854e Mon Sep 17 00:00:00 2001 From: Yang Chun Ung Date: Wed, 29 Nov 2023 22:46:10 +0900 Subject: [PATCH 45/70] Avoid exception in unity --- Lib9c.Abstractions/IRuneSummonV1.cs | 13 +++++++------ Lib9c/Model/FungibleItemValue.cs | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Lib9c.Abstractions/IRuneSummonV1.cs b/Lib9c.Abstractions/IRuneSummonV1.cs index 51646c8794..2ae332e5be 100644 --- a/Lib9c.Abstractions/IRuneSummonV1.cs +++ b/Lib9c.Abstractions/IRuneSummonV1.cs @@ -1,11 +1,12 @@ using Libplanet.Crypto; -namespace Lib9c.Abstractions; - -public interface IRuneSummonV1 +namespace Lib9c.Abstractions { - Address AvatarAddress { get; } - int GroupId { get; } + public interface IRuneSummonV1 + { + Address AvatarAddress { get; } + int GroupId { get; } - int SummonCount { get; } + int SummonCount { get; } + } } diff --git a/Lib9c/Model/FungibleItemValue.cs b/Lib9c/Model/FungibleItemValue.cs index 30779794df..0c0398440b 100644 --- a/Lib9c/Model/FungibleItemValue.cs +++ b/Lib9c/Model/FungibleItemValue.cs @@ -9,7 +9,7 @@ public readonly struct FungibleItemValue { public FungibleItemValue(List bencoded) : this( - new HashDigest((Binary)bencoded[0]), + new HashDigest(bencoded[0]), (Integer)bencoded[1] ) { From 7d3b796a20a9fabd2e9bb227cc73a8054fe255a5 Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Thu, 30 Nov 2023 15:03:44 +0900 Subject: [PATCH 46/70] add ArenaTick --- Lib9c/Model/BattleStatus/Arena/ArenaTick.cs | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Lib9c/Model/BattleStatus/Arena/ArenaTick.cs diff --git a/Lib9c/Model/BattleStatus/Arena/ArenaTick.cs b/Lib9c/Model/BattleStatus/Arena/ArenaTick.cs new file mode 100644 index 0000000000..fa84017b5d --- /dev/null +++ b/Lib9c/Model/BattleStatus/Arena/ArenaTick.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Nekoyume.Model.BattleStatus.Arena +{ + [Serializable] + public class ArenaTick : ArenaSkill + { + public ArenaTick(ArenaCharacter character) : this( + character, + ArraySegment.Empty, + ArraySegment.Empty) + { + } + + public ArenaTick(ArenaCharacter character, IEnumerable skillInfos, IEnumerable buffInfos) + : base(character, skillInfos, buffInfos) + { + } + + public override IEnumerator CoExecute(IArena arena) + { + yield return null; + } + } +} From d4f74f243b4f0303708fd15873a2295dd595d0f0 Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Thu, 30 Nov 2023 15:04:06 +0900 Subject: [PATCH 47/70] fix ArenaCharacter.Act and OnPreSkill for reflect Stun --- Lib9c/Model/Character/ArenaCharacter.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Lib9c/Model/Character/ArenaCharacter.cs b/Lib9c/Model/Character/ArenaCharacter.cs index 53ab676d17..0d268c8eee 100644 --- a/Lib9c/Model/Character/ArenaCharacter.cs +++ b/Lib9c/Model/Character/ArenaCharacter.cs @@ -566,8 +566,17 @@ private void Act() ReduceDurationOfBuffs(); ReduceSkillCooldown(); - OnPreSkill(); - var usedSkill = UseSkill(); + ArenaSkill usedSkill; + if (OnPreSkill()) + { + usedSkill = new ArenaTick((ArenaCharacter)Clone()); + _simulator.Log.Add(usedSkill); + } + else + { + usedSkill = UseSkill(); + } + if (usedSkill != null) { OnPostSkill(usedSkill); @@ -603,9 +612,9 @@ private void ActV2() RemoveBuffs(); } - protected virtual void OnPreSkill() + protected virtual bool OnPreSkill() { - + return Buffs.Values.Any(buff => buff is Stun); } protected virtual void OnPostSkill(BattleStatus.Arena.ArenaSkill usedSkill) From 046643e03cd00b831cca52c62db608e51f1f4942 Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Thu, 30 Nov 2023 17:09:29 +0900 Subject: [PATCH 48/70] change Stun.GiveEffect and GiveEffectForArena remove throw exception, return null. not using code --- Lib9c/Model/Buff/Stun.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Lib9c/Model/Buff/Stun.cs b/Lib9c/Model/Buff/Stun.cs index bd0d93a60b..8431df1c3d 100644 --- a/Lib9c/Model/Buff/Stun.cs +++ b/Lib9c/Model/Buff/Stun.cs @@ -27,12 +27,14 @@ public override object Clone() public override BattleStatus.Skill GiveEffect(CharacterBase affectedCharacter, int simulatorWaveTurn, bool copyCharacter = true) { - throw new NotImplementedException(); + // Do not anything + return null; } public override ArenaSkill GiveEffectForArena(ArenaCharacter affectedCharacter, int simulatorWaveTurn) { - throw new NotImplementedException(); + // Do not anything + return null; } } } From 0d5c718c61a851f5782a512079cf77574b257a8f Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Thu, 30 Nov 2023 17:27:05 +0900 Subject: [PATCH 49/70] change Tick.CoExecute to return CoTickDamage --- Lib9c/Model/BattleStatus/Arena/ArenaTick.cs | 2 +- Lib9c/Model/BattleStatus/Tick.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib9c/Model/BattleStatus/Arena/ArenaTick.cs b/Lib9c/Model/BattleStatus/Arena/ArenaTick.cs index fa84017b5d..56287ab473 100644 --- a/Lib9c/Model/BattleStatus/Arena/ArenaTick.cs +++ b/Lib9c/Model/BattleStatus/Arena/ArenaTick.cs @@ -21,7 +21,7 @@ public ArenaTick(ArenaCharacter character, IEnumerable skillInfo public override IEnumerator CoExecute(IArena arena) { - yield return null; + yield return arena.CoTickDamage(Character, SkillInfos); } } } diff --git a/Lib9c/Model/BattleStatus/Tick.cs b/Lib9c/Model/BattleStatus/Tick.cs index 505b7e59b2..a0d6330032 100644 --- a/Lib9c/Model/BattleStatus/Tick.cs +++ b/Lib9c/Model/BattleStatus/Tick.cs @@ -22,7 +22,7 @@ public Tick(int skillId, CharacterBase character, IEnumerable skillIn public override IEnumerator CoExecute(IStage stage) { - yield return null; + yield return stage.CoTickDamage(Character, SkillId, SkillInfos); } } } From f280f532a22700043ad599df9ebcb0377e90f603 Mon Sep 17 00:00:00 2001 From: Suho Lee Date: Thu, 30 Nov 2023 17:55:30 +0900 Subject: [PATCH 50/70] ci: for plugin upload `Lib9c.Plugin` is not yet exist but will prepared. --- .../lib9c_plugin_build_and_push_s3.yaml | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/lib9c_plugin_build_and_push_s3.yaml diff --git a/.github/workflows/lib9c_plugin_build_and_push_s3.yaml b/.github/workflows/lib9c_plugin_build_and_push_s3.yaml new file mode 100644 index 0000000000..4634826a63 --- /dev/null +++ b/.github/workflows/lib9c_plugin_build_and_push_s3.yaml @@ -0,0 +1,30 @@ +name: lib9c plugin build and push s3 + +on: + workflow_dispatch: + +jobs: + s3-lib9c-plugin: + strategy: + matrix: + runtime: [ "osx-arm64", "linux-arm64", "linux-x64", "win-x64" ] + name: Publish Lib9c.Plugin (${{ matrix.runtime }}) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - uses: actions/setup-dotnet@v3 + with: + dotnet-version: 6.0.400 + - name: Publish Lib9c.Plugin + run: dotnet publish ./.Lib9c.Plugin/Lib9c.Plugin.csproj -o out -r ${{ matrix.runtime }} + - name: Compress the build result + run: zip -r ../${{ matrix.runtime }}.zip . + working-directory: ./out + - name: Upload S3 + run: aws s3 cp ${{ matrix.runtime }}.zip s3://9c-dx/Lib9c.Plugin/${{ github.sha }}/ + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: "us-east-2" From aa7dff07b4d9bd2cb40f6da8a776bfca892077fb Mon Sep 17 00:00:00 2001 From: Yang Chun Ung Date: Mon, 4 Dec 2023 15:11:22 +0900 Subject: [PATCH 51/70] Update actual data --- .Lib9c.Tests/Action/Summon/AuraSummonTest.cs | 2 +- .Lib9c.Tests/Action/Summon/RuneSummonTest.cs | 52 ++----------------- .../TableCSV/Summon/SummonSheetFixtures.cs | 6 +-- Lib9c/Action/RuneSummon.cs | 2 +- Lib9c/TableCSV/RuneListSheet.csv | 10 +++- Lib9c/TableCSV/RuneSheet.csv | 10 +++- Lib9c/TableCSV/Summon/SummonSheet.csv | 3 +- 7 files changed, 28 insertions(+), 57 deletions(-) diff --git a/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs b/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs index 4821cfd063..7f7ebfce4d 100644 --- a/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs +++ b/.Lib9c.Tests/Action/Summon/AuraSummonTest.cs @@ -178,7 +178,7 @@ public void CumulativeRatio(string version, int groupId) // 15 recipes [InlineData("V2", 10002, 1, 600201, 1, 5341, new[] { 10650006 }, null)] // 15 recipes - [InlineData("V3", 20002, 1, 600201, 1, 5341, new int[] { }, typeof(SheetRowNotFoundException))] + [InlineData("V3", 20001, 1, 600201, 1, 5341, new int[] { }, typeof(SheetRowNotFoundException))] public void Execute( string version, int groupId, diff --git a/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs b/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs index 1c55a553ad..6dd8c8e024 100644 --- a/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs +++ b/.Lib9c.Tests/Action/Summon/RuneSummonTest.cs @@ -85,7 +85,6 @@ public RuneSummonTest() [Theory] [InlineData(20001)] - [InlineData(20002)] public void CumulativeRatio(int groupId) { var sheet = _tableSheets.SummonSheet; @@ -207,35 +206,17 @@ private class ExecuteMemeber : IEnumerable { new object[] { - 20001, 1, 800201, 1, 1, null, + 20001, 1, 600201, 1, 1, null, }, new object[] { - 20001, 2, 800201, 2, 54, null, - }, - // success second group - new object[] - { - 20002, 1, 600201, 1, 1, null, - }, - new object[] - { - 20002, 2, 600201, 2, 4, null, + 20001, 2, 600201, 2, 54, null, }, // Nine plus zero new object[] { 20001, 9, - 800201, - 9, - 0, - null, - }, - new object[] - { - 20002, - 9, 600201, 9, 0, @@ -246,15 +227,6 @@ private class ExecuteMemeber : IEnumerable { 20001, 10, - 800201, - 10, - 0, - null, - }, - new object[] - { - 20002, - 10, 600201, 10, 0, @@ -268,30 +240,16 @@ private class ExecuteMemeber : IEnumerable // fail by not enough material new object[] { - 20001, 1, 800201, 0, 0, typeof(NotEnoughMaterialException), - }, - new object[] - { - 20001, 2, 800201, 0, 0, typeof(NotEnoughMaterialException), + 20001, 1, 600201, 0, 0, typeof(NotEnoughMaterialException), }, // Fail by exceeding summon limit new object[] { - 20001, 11, 800201, 22, 1, typeof(InvalidSummonCountException), - }, - // 15 recipes - new object[] - { - 20002, 1, 600201, 1, 5341, null, - }, - // success first group - new object[] - { - 20001, 1, 800201, 1, 1, null, + 20001, 11, 600201, 22, 1, typeof(InvalidSummonCountException), }, new object[] { - 10001, 1, 800201, 1, 1, typeof(SheetRowNotFoundException), + 10002, 1, 600201, 1, 1, typeof(SheetRowNotFoundException), }, }; diff --git a/.Lib9c.Tests/Fixtures/TableCSV/Summon/SummonSheetFixtures.cs b/.Lib9c.Tests/Fixtures/TableCSV/Summon/SummonSheetFixtures.cs index 65f4f467f4..338025e8b2 100644 --- a/.Lib9c.Tests/Fixtures/TableCSV/Summon/SummonSheetFixtures.cs +++ b/.Lib9c.Tests/Fixtures/TableCSV/Summon/SummonSheetFixtures.cs @@ -12,12 +12,10 @@ public class SummonSheetFixtures 10001,800201,10,0,171,70,172,29,173,1,,,,,,,,,,,,,,,,,,,,,,,, 10002,600201,20,0,174,6500,175,2940,176,510,177,45,178,5,179,6500,180,2940,181,510,182,45,183,5,184,6500,185,2940,186,510,187,45,188,5"; - public const string V3 = - @"groupID,cost_material,cost_material_count,cost_ncg,recipe1ID,recipe1ratio,recipe2ID,recipe2ratio,recipe3ID,recipe3ratio,recipe4ID,recipe4ratio,recipe5ID,recipe5ratio,recipe6ID,recipe6ratio,recipe7ID,recipe7ratio,recipe8ID,recipe8ratio,recipe9ID,recipe9ratio,recipe10ID,recipe10ratio,recipe11ID,recipe11ratio,recipe12ID,recipe12ratio,recipe13ID,recipe13ratio,recipe14ID,recipe14ratio,recipe15ID,recipe15ratio + public const string V3 = @"groupID,cost_material,cost_material_count,cost_ncg,recipe1ID,recipe1ratio,recipe2ID,recipe2ratio,recipe3ID,recipe3ratio,recipe4ID,recipe4ratio,recipe5ID,recipe5ratio,recipe6ID,recipe6ratio,recipe7ID,recipe7ratio,recipe8ID,recipe8ratio,recipe9ID,recipe9ratio,recipe10ID,recipe10ratio,recipe11ID,recipe11ratio,recipe12ID,recipe12ratio,recipe13ID,recipe13ratio,recipe14ID,recipe14ratio,recipe15ID,recipe15ratio 10001,800201,10,0,171,70,172,29,173,1,,,,,,,,,,,,,,,,,,,,,,,, 10002,600201,20,0,174,6500,175,2940,176,510,177,45,178,5,179,6500,180,2940,181,510,182,45,183,5,184,6500,185,2940,186,510,187,45,188,5 -20001,800201,10,0,10001,70,10002,29,10003,1,,,,,,,,,,,,,,,,,,,,,,,, -20002,600201,20,0,10001,30,10002,10,10003,10,10011,10,10012,10,10013,10,30001,10,20001,10,,,,,,,,,,,,,, +20001,600201,10,0,10021,20,10022,20,10023,20,10024,20,10025,60,10026,60,10027,60,10028,60,10001,40,10002,100,10003,200,10011,40,10012,100,10013,200,, "; } } diff --git a/Lib9c/Action/RuneSummon.cs b/Lib9c/Action/RuneSummon.cs index 2a028d4ebf..9255b34fc5 100644 --- a/Lib9c/Action/RuneSummon.cs +++ b/Lib9c/Action/RuneSummon.cs @@ -33,7 +33,7 @@ public class RuneSummon : GameAction, IRuneSummonV1 public int SummonCount; private const int SummonLimit = 10; - public const int RuneQuantity = 100; + public const int RuneQuantity = 10; public override IAccount Execute(IActionContext context) { diff --git a/Lib9c/TableCSV/RuneListSheet.csv b/Lib9c/TableCSV/RuneListSheet.csv index 49109f5d79..744533a570 100644 --- a/Lib9c/TableCSV/RuneListSheet.csv +++ b/Lib9c/TableCSV/RuneListSheet.csv @@ -6,4 +6,12 @@ id,_name,grade,rune_type,required_level,use_place 10011,Saehrimnir HIT Rune,2,1,1,7 10012,Saehrimnir DEF Rune,3,1,1,3 10013,Saehrimnir Skill Rune,5,2,1,7 -20001,Golden leaf Rune,5,2,1,7 \ No newline at end of file +20001,Golden leaf Rune,5,2,1,7 +10021,Adventure Stun Rune,5,2,1,1 +10022,Arena Stun Rune,5,2,1,2 +10023,Adventure Vampiric Rune,5,2,1,1 +10024,World Boss Vampiric Rune,5,2,1,4 +10025,Adventure Stamina Rune,3,1,1,1 +10026,Arena Stamina Rune,3,1,1,2 +10027,Adventure Quick Rune,3,1,1,1 +10028,World Boss Quick Rune,3,1,1,4 diff --git a/Lib9c/TableCSV/RuneSheet.csv b/Lib9c/TableCSV/RuneSheet.csv index cbe409846f..0f5a665d96 100644 --- a/Lib9c/TableCSV/RuneSheet.csv +++ b/Lib9c/TableCSV/RuneSheet.csv @@ -6,4 +6,12 @@ id,_name,ticker 10012,Saehrimnir DEF Rune,RUNESTONE_SAEHRIMNIR2 10013,Saehrimnir Skill Rune,RUNESTONE_SAEHRIMNIR3 30001,Adventurer's Rune,RUNE_ADVENTURER -20001,Golden leaf Rune,RUNE_GOLDENLEAF \ No newline at end of file +20001,Golden leaf Rune,RUNE_GOLDENLEAF +10021,Adventure Stun Rune,RUNESTONE_STUN1 +10022,Arena Stun Rune,RUNESTONE_STUN2 +10023,Adventure Vampiric Rune,RUNESTONE_VAMPIRIC1 +10024,World Boss Vampiric Rune,RUNESTONE_VAMPIRIC2 +10025,Adventure Stamina Rune,RUNESTONE_STAMINA1 +10026,Arena Stamina Rune,RUNESTONE_STAMINA2 +10027,Adventure Quick Rune,RUNESTONE_QUICK1 +10028,World Boss Quick Rune,RUNESTONE_QUICK2 diff --git a/Lib9c/TableCSV/Summon/SummonSheet.csv b/Lib9c/TableCSV/Summon/SummonSheet.csv index eeebd0d0a4..a15f64a265 100644 --- a/Lib9c/TableCSV/Summon/SummonSheet.csv +++ b/Lib9c/TableCSV/Summon/SummonSheet.csv @@ -1,5 +1,4 @@ groupID,cost_material,cost_material_count,cost_ncg,recipe1ID,recipe1ratio,recipe2ID,recipe2ratio,recipe3ID,recipe3ratio,recipe4ID,recipe4ratio,recipe5ID,recipe5ratio,recipe6ID,recipe6ratio,recipe7ID,recipe7ratio,recipe8ID,recipe8ratio,recipe9ID,recipe9ratio,recipe10ID,recipe10ratio,recipe11ID,recipe11ratio,recipe12ID,recipe12ratio,recipe13ID,recipe13ratio,recipe14ID,recipe14ratio,recipe15ID,recipe15ratio 10001,800201,10,0,171,70,172,29,173,1,,,,,,,,,,,,,,,,,,,,,,,, 10002,600201,20,0,174,6500,175,2940,176,510,177,45,178,5,179,6500,180,2940,181,510,182,45,183,5,184,6500,185,2940,186,510,187,45,188,5 -20001,800201,10,0,10001,70,10002,29,10003,1,,,,,,,,,,,,,,,,,,,,,,,, -20002,600201,20,0,10001,30,10002,10,10003,10,10011,10,10012,10,10013,10,30001,10,20001,10,,,,,,,,,,,,,, +20001,600201,10,0,10021,20,10022,20,10023,20,10024,20,10025,60,10026,60,10027,60,10028,60,10001,40,10002,100,10003,200,10011,40,10012,100,10013,200,, From f69be6fadcf21cf9011dcdce2ded475f2aabbcff Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Mon, 4 Dec 2023 19:09:07 +0900 Subject: [PATCH 52/70] Do not allow negative gas price or negative gas limit --- Lib9c.Policy/Policy/BlockPolicySource.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Lib9c.Policy/Policy/BlockPolicySource.cs b/Lib9c.Policy/Policy/BlockPolicySource.cs index 28df6ce2ec..634274d7bf 100644 --- a/Lib9c.Policy/Policy/BlockPolicySource.cs +++ b/Lib9c.Policy/Policy/BlockPolicySource.cs @@ -229,12 +229,21 @@ internal static TxPolicyViolationException ValidateNextBlockTxRaw( return null; } } - if (transaction.MaxGasPrice is null || transaction.GasLimit is null) + + if (!(transaction.MaxGasPrice is { } gasPrice && transaction.GasLimit is { } gasLimit)) + { + return new TxPolicyViolationException( + "Transaction has no gas price or limit.", + transaction.Id); + } + + if (gasPrice.Sign < 0 || gasLimit < 0) { - return new - TxPolicyViolationException("Transaction has no gas price or limit.", + return new TxPolicyViolationException( + "Transaction has negative gas price or limit.", transaction.Id); } + if (transaction.MaxGasPrice * transaction.GasLimit > blockChain.GetBalance(transaction.Signer, Currencies.Mead)) { return new TxPolicyViolationException( From 09182e6878648b2d168db412257c75bd7aff3792 Mon Sep 17 00:00:00 2001 From: ilgyu Date: Tue, 5 Dec 2023 11:50:17 +0900 Subject: [PATCH 53/70] bump: Libplanet 3.8.1 --- .Libplanet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.Libplanet b/.Libplanet index 115a4231a8..ec81596b15 160000 --- a/.Libplanet +++ b/.Libplanet @@ -1 +1 @@ -Subproject commit 115a4231a838e45a141426ede38a5d933c9a432c +Subproject commit ec81596b15cb57c12acfe87a3a2d66ceed366b6d From f948ffadab0d53025dff5b056a60e69735c57cb3 Mon Sep 17 00:00:00 2001 From: Suho Lee Date: Tue, 5 Dec 2023 13:19:30 +0900 Subject: [PATCH 54/70] chore: cleanup `StateService` and `Libplanet.Extensions.RemoteActionEvaluator` --- .../Lib9c.StateService.Shared.csproj | 9 --- .../RemoteEvaluationRequest.cs | 8 --- .../RemoteEvaluationResponse.cs | 6 -- .../Controllers/RemoteEvaluationController.cs | 62 ------------------- .Lib9c.StateService/Lib9c.StateService.csproj | 21 ------- .Lib9c.StateService/Program.cs | 39 ------------ .../Properties/launchSettings.json | 41 ------------ .Lib9c.StateService/appsettings-schema.json | 11 ---- .../appsettings.Development.json | 8 --- .Lib9c.StateService/appsettings.json | 10 --- ...ensions.RemoteActionEvaluator.Tests.csproj | 29 --------- .../Usings.cs | 1 - .../AssemblyInfo.cs | 3 - ...et.Extensions.RemoteActionEvaluator.csproj | 15 ----- .../RemoteActionEvaluator.cs | 42 ------------- Lib9c.sln | 24 ------- 16 files changed, 329 deletions(-) delete mode 100644 .Lib9c.StateService.Shared/Lib9c.StateService.Shared.csproj delete mode 100644 .Lib9c.StateService.Shared/RemoteEvaluationRequest.cs delete mode 100644 .Lib9c.StateService.Shared/RemoteEvaluationResponse.cs delete mode 100644 .Lib9c.StateService/Controllers/RemoteEvaluationController.cs delete mode 100644 .Lib9c.StateService/Lib9c.StateService.csproj delete mode 100644 .Lib9c.StateService/Program.cs delete mode 100644 .Lib9c.StateService/Properties/launchSettings.json delete mode 100644 .Lib9c.StateService/appsettings-schema.json delete mode 100644 .Lib9c.StateService/appsettings.Development.json delete mode 100644 .Lib9c.StateService/appsettings.json delete mode 100644 .Libplanet.Extensions.RemoteActionEvaluator.Tests/Libplanet.Extensions.RemoteActionEvaluator.Tests.csproj delete mode 100644 .Libplanet.Extensions.RemoteActionEvaluator.Tests/Usings.cs delete mode 100644 .Libplanet.Extensions.RemoteActionEvaluator/AssemblyInfo.cs delete mode 100644 .Libplanet.Extensions.RemoteActionEvaluator/Libplanet.Extensions.RemoteActionEvaluator.csproj delete mode 100644 .Libplanet.Extensions.RemoteActionEvaluator/RemoteActionEvaluator.cs diff --git a/.Lib9c.StateService.Shared/Lib9c.StateService.Shared.csproj b/.Lib9c.StateService.Shared/Lib9c.StateService.Shared.csproj deleted file mode 100644 index 132c02c59c..0000000000 --- a/.Lib9c.StateService.Shared/Lib9c.StateService.Shared.csproj +++ /dev/null @@ -1,9 +0,0 @@ - - - - net6.0 - enable - enable - - - diff --git a/.Lib9c.StateService.Shared/RemoteEvaluationRequest.cs b/.Lib9c.StateService.Shared/RemoteEvaluationRequest.cs deleted file mode 100644 index f2b3409160..0000000000 --- a/.Lib9c.StateService.Shared/RemoteEvaluationRequest.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Lib9c.StateService.Shared; - -public class RemoteEvaluationRequest -{ - public byte[] PreEvaluationBlock { get; set; } - - public byte[] BaseStateRootHash { get; set; } -} diff --git a/.Lib9c.StateService.Shared/RemoteEvaluationResponse.cs b/.Lib9c.StateService.Shared/RemoteEvaluationResponse.cs deleted file mode 100644 index 8aed77d193..0000000000 --- a/.Lib9c.StateService.Shared/RemoteEvaluationResponse.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Lib9c.StateService.Shared; - -public class RemoteEvaluationResponse -{ - public byte[][] Evaluations { get; set; } -} diff --git a/.Lib9c.StateService/Controllers/RemoteEvaluationController.cs b/.Lib9c.StateService/Controllers/RemoteEvaluationController.cs deleted file mode 100644 index db9eb743cb..0000000000 --- a/.Lib9c.StateService/Controllers/RemoteEvaluationController.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System.Security.Cryptography; -using Bencodex; -using Bencodex.Types; -using Lib9c.StateService.Shared; -using Libplanet.Action; -using Libplanet.Common; -using Libplanet.Extensions.ActionEvaluatorCommonComponents; -using Libplanet.Store; -using Microsoft.AspNetCore.Mvc; -using Nekoyume.Action; -using Nekoyume.Action.Loader; - -namespace Lib9c.StateService.Controllers; - -[ApiController] -[Route("/evaluation")] -public class RemoteEvaluationController : ControllerBase -{ - private readonly IActionEvaluator _actionEvaluator; - private readonly ILogger _logger; - private readonly Codec _codec; - - public RemoteEvaluationController( - IStateStore stateStore, - ILogger logger, - Codec codec) - { - _actionEvaluator = new ActionEvaluator( - _ => new RewardGold(), - stateStore, - new NCActionLoader()); - _logger = logger; - _codec = codec; - } - - [HttpPost] - public ActionResult GetEvaluation([FromBody] RemoteEvaluationRequest request) - { - var decoded = _codec.Decode(request.PreEvaluationBlock); - if (decoded is not Dictionary dictionary) - { - return StatusCode(StatusCodes.Status400BadRequest); - } - - var decodedStateRootHash = _codec.Decode(request.BaseStateRootHash); - if (decodedStateRootHash is not Binary binary) - { - return StatusCode(StatusCodes.Status400BadRequest); - } - - var preEvaluationBlock = PreEvaluationBlockMarshaller.Unmarshal(dictionary); - var baseStateRootHash = new HashDigest(binary); - - return Ok(new RemoteEvaluationResponse - { - Evaluations = _actionEvaluator - .Evaluate(preEvaluationBlock, baseStateRootHash) - .Select(ActionEvaluationMarshaller.Serialize) - .ToArray(), - }); - } -} diff --git a/.Lib9c.StateService/Lib9c.StateService.csproj b/.Lib9c.StateService/Lib9c.StateService.csproj deleted file mode 100644 index 92810d8d38..0000000000 --- a/.Lib9c.StateService/Lib9c.StateService.csproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - net6.0 - enable - Exe - enable - - - - - - - - - - - - - - diff --git a/.Lib9c.StateService/Program.cs b/.Lib9c.StateService/Program.cs deleted file mode 100644 index ba2b8de7bd..0000000000 --- a/.Lib9c.StateService/Program.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Bencodex; -using Libplanet.RocksDBStore; -using Libplanet.Store; - -var builder = WebApplication.CreateBuilder(args); - -builder.Configuration.AddEnvironmentVariables(); - -// Add services to the container. - -builder.Services.AddControllers(); -// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle -builder.Services.AddEndpointsApiExplorer(); -builder.Services.AddSwaggerGen(); - -builder.Services.AddSingleton(); - -builder.Services.AddSingleton(_ => -{ - var path = builder.Configuration.GetValue("StateStorePath"); - return new TrieStateStore(new RocksDBKeyValueStore(path)); -}); - -var app = builder.Build(); - -// Configure the HTTP request pipeline. -if (app.Environment.IsDevelopment()) -{ - app.UseSwagger(); - app.UseSwaggerUI(); -} - -app.UseHttpsRedirection(); - -app.UseAuthorization(); - -app.MapControllers(); - -app.Run(); diff --git a/.Lib9c.StateService/Properties/launchSettings.json b/.Lib9c.StateService/Properties/launchSettings.json deleted file mode 100644 index 6a1d8fda1b..0000000000 --- a/.Lib9c.StateService/Properties/launchSettings.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:25712", - "sslPort": 44330 - } - }, - "profiles": { - "http": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "launchUrl": "swagger", - "applicationUrl": "http://localhost:5157", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "https": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "launchUrl": "swagger", - "applicationUrl": "https://localhost:7140;http://localhost:5157", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "swagger", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} diff --git a/.Lib9c.StateService/appsettings-schema.json b/.Lib9c.StateService/appsettings-schema.json deleted file mode 100644 index 168a36a46b..0000000000 --- a/.Lib9c.StateService/appsettings-schema.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "object", - "description": "appsettings.json to configure application.", - "properties": { - "RemoteBlockChainStatesEndpoint": { - "type": "string", - "description": "The headless' Libplanet.Explorer GraphQL endpoint. (e.g., http://localhost/graphql/explorer)" - } - }, - "required": ["RemoteBlockChainStatesEndpoint"] -} diff --git a/.Lib9c.StateService/appsettings.Development.json b/.Lib9c.StateService/appsettings.Development.json deleted file mode 100644 index 0c208ae918..0000000000 --- a/.Lib9c.StateService/appsettings.Development.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} diff --git a/.Lib9c.StateService/appsettings.json b/.Lib9c.StateService/appsettings.json deleted file mode 100644 index e3001fa1aa..0000000000 --- a/.Lib9c.StateService/appsettings.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "./appsettings-schema.json", - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*" -} diff --git a/.Libplanet.Extensions.RemoteActionEvaluator.Tests/Libplanet.Extensions.RemoteActionEvaluator.Tests.csproj b/.Libplanet.Extensions.RemoteActionEvaluator.Tests/Libplanet.Extensions.RemoteActionEvaluator.Tests.csproj deleted file mode 100644 index bf79b854ef..0000000000 --- a/.Libplanet.Extensions.RemoteActionEvaluator.Tests/Libplanet.Extensions.RemoteActionEvaluator.Tests.csproj +++ /dev/null @@ -1,29 +0,0 @@ - - - - net6.0 - enable - enable - - false - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - - diff --git a/.Libplanet.Extensions.RemoteActionEvaluator.Tests/Usings.cs b/.Libplanet.Extensions.RemoteActionEvaluator.Tests/Usings.cs deleted file mode 100644 index c802f4480b..0000000000 --- a/.Libplanet.Extensions.RemoteActionEvaluator.Tests/Usings.cs +++ /dev/null @@ -1 +0,0 @@ -global using Xunit; diff --git a/.Libplanet.Extensions.RemoteActionEvaluator/AssemblyInfo.cs b/.Libplanet.Extensions.RemoteActionEvaluator/AssemblyInfo.cs deleted file mode 100644 index 632c7b0189..0000000000 --- a/.Libplanet.Extensions.RemoteActionEvaluator/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using System.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Libplanet.Extensions.RemoteActionEvaluator.Tests")] diff --git a/.Libplanet.Extensions.RemoteActionEvaluator/Libplanet.Extensions.RemoteActionEvaluator.csproj b/.Libplanet.Extensions.RemoteActionEvaluator/Libplanet.Extensions.RemoteActionEvaluator.csproj deleted file mode 100644 index 3e68102fea..0000000000 --- a/.Libplanet.Extensions.RemoteActionEvaluator/Libplanet.Extensions.RemoteActionEvaluator.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - net6.0 - enable - enable - - - - - - - - - diff --git a/.Libplanet.Extensions.RemoteActionEvaluator/RemoteActionEvaluator.cs b/.Libplanet.Extensions.RemoteActionEvaluator/RemoteActionEvaluator.cs deleted file mode 100644 index 1b2ec2afee..0000000000 --- a/.Libplanet.Extensions.RemoteActionEvaluator/RemoteActionEvaluator.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.Collections.Immutable; -using System.Net.Http.Json; -using System.Security.Cryptography; -using Lib9c.StateService.Shared; -using Libplanet.Action; -using Libplanet.Action.Loader; -using Libplanet.Types.Blocks; -using Libplanet.Extensions.ActionEvaluatorCommonComponents; -using Libplanet.Common; - -namespace Libplanet.Extensions.RemoteActionEvaluator; - -public class RemoteActionEvaluator : IActionEvaluator -{ - private readonly Uri _endpoint; - - public RemoteActionEvaluator(Uri endpoint) - { - _endpoint = endpoint; - } - - public IActionLoader ActionLoader => throw new NotSupportedException(); - - public IReadOnlyList Evaluate( - IPreEvaluationBlock block, HashDigest? baseStateRootHash) - { - using var httpClient = new HttpClient(); - var response = httpClient.PostAsJsonAsync(_endpoint, new RemoteEvaluationRequest - { - PreEvaluationBlock = PreEvaluationBlockMarshaller.Serialize(block), - BaseStateRootHash = baseStateRootHash is null - ? new byte[]{} - : baseStateRootHash.Value.ToByteArray(), - }).Result; - var evaluationResponse = response.Content.ReadFromJsonAsync().Result; - - var actionEvaluations = evaluationResponse.Evaluations.Select(ActionEvaluationMarshaller.Deserialize) - .ToImmutableList(); - - return actionEvaluations; - } -} diff --git a/Lib9c.sln b/Lib9c.sln index b2c1c6bf76..79f6d8b418 100644 --- a/Lib9c.sln +++ b/Lib9c.sln @@ -64,16 +64,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Libplanet.Extensions.Action EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests", ".Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests\Libplanet.Extensions.ActionEvaluatorCommonComponents.Tests.csproj", "{EACB2E8D-9A13-491C-BACD-5D79C6C13783}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Libplanet.Extensions.RemoteActionEvaluator", ".Libplanet.Extensions.RemoteActionEvaluator\Libplanet.Extensions.RemoteActionEvaluator.csproj", "{0ED5DBA2-C334-40F2-8EB6-2B4D15C1AB4B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Libplanet.Extensions.RemoteActionEvaluator.Tests", ".Libplanet.Extensions.RemoteActionEvaluator.Tests\Libplanet.Extensions.RemoteActionEvaluator.Tests.csproj", "{3608A63A-A52D-4EB5-A96D-36C8F11CE603}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Libplanet.Extensions.RemoteBlockChainStates", ".Libplanet.Extensions.RemoteBlockChainStates\Libplanet.Extensions.RemoteBlockChainStates.csproj", "{63544447-4FCD-48D1-898C-974FBA6834AD}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lib9c.StateService", ".Lib9c.StateService\Lib9c.StateService.csproj", "{EB97AB26-1C8F-48F5-97FF-8A6DF8FAB879}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lib9c.StateService.Shared", ".Lib9c.StateService.Shared\Lib9c.StateService.Shared.csproj", "{5D3489AE-A403-4ADD-94E9-48463A42643E}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lib9c.Plugin", ".Lib9c.Plugin\Lib9c.Plugin.csproj", "{484A5A5B-D610-42D4-9CAC-B19EA1A71281}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lib9c.Plugin.Shared", ".Lib9c.Plugin.Shared\Lib9c.Plugin.Shared.csproj", "{76F6C25E-94D2-4EA9-B88D-0249F44D1D16}" @@ -192,26 +184,10 @@ Global {EACB2E8D-9A13-491C-BACD-5D79C6C13783}.Debug|Any CPU.Build.0 = Debug|Any CPU {EACB2E8D-9A13-491C-BACD-5D79C6C13783}.Release|Any CPU.ActiveCfg = Release|Any CPU {EACB2E8D-9A13-491C-BACD-5D79C6C13783}.Release|Any CPU.Build.0 = Release|Any CPU - {0ED5DBA2-C334-40F2-8EB6-2B4D15C1AB4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0ED5DBA2-C334-40F2-8EB6-2B4D15C1AB4B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0ED5DBA2-C334-40F2-8EB6-2B4D15C1AB4B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0ED5DBA2-C334-40F2-8EB6-2B4D15C1AB4B}.Release|Any CPU.Build.0 = Release|Any CPU - {3608A63A-A52D-4EB5-A96D-36C8F11CE603}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3608A63A-A52D-4EB5-A96D-36C8F11CE603}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3608A63A-A52D-4EB5-A96D-36C8F11CE603}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3608A63A-A52D-4EB5-A96D-36C8F11CE603}.Release|Any CPU.Build.0 = Release|Any CPU {63544447-4FCD-48D1-898C-974FBA6834AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {63544447-4FCD-48D1-898C-974FBA6834AD}.Debug|Any CPU.Build.0 = Debug|Any CPU {63544447-4FCD-48D1-898C-974FBA6834AD}.Release|Any CPU.ActiveCfg = Release|Any CPU {63544447-4FCD-48D1-898C-974FBA6834AD}.Release|Any CPU.Build.0 = Release|Any CPU - {EB97AB26-1C8F-48F5-97FF-8A6DF8FAB879}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EB97AB26-1C8F-48F5-97FF-8A6DF8FAB879}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EB97AB26-1C8F-48F5-97FF-8A6DF8FAB879}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EB97AB26-1C8F-48F5-97FF-8A6DF8FAB879}.Release|Any CPU.Build.0 = Release|Any CPU - {5D3489AE-A403-4ADD-94E9-48463A42643E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5D3489AE-A403-4ADD-94E9-48463A42643E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5D3489AE-A403-4ADD-94E9-48463A42643E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5D3489AE-A403-4ADD-94E9-48463A42643E}.Release|Any CPU.Build.0 = Release|Any CPU {484A5A5B-D610-42D4-9CAC-B19EA1A71281}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {484A5A5B-D610-42D4-9CAC-B19EA1A71281}.Debug|Any CPU.Build.0 = Debug|Any CPU {484A5A5B-D610-42D4-9CAC-B19EA1A71281}.Release|Any CPU.ActiveCfg = Release|Any CPU From 049c1fd3883e17f86b752dcd1d94ceeb2513ee7b Mon Sep 17 00:00:00 2001 From: Suho Lee Date: Tue, 5 Dec 2023 13:21:01 +0900 Subject: [PATCH 55/70] ci: remove `Lib9c.StateService` publish --- .../lib9c_plugin_build_and_push_s3.yaml | 4 ++++ .github/workflows/publish.yml | 24 ------------------- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/.github/workflows/lib9c_plugin_build_and_push_s3.yaml b/.github/workflows/lib9c_plugin_build_and_push_s3.yaml index 4634826a63..041d349dfc 100644 --- a/.github/workflows/lib9c_plugin_build_and_push_s3.yaml +++ b/.github/workflows/lib9c_plugin_build_and_push_s3.yaml @@ -1,6 +1,10 @@ name: lib9c plugin build and push s3 on: + push: + branches: + - development + - main workflow_dispatch: jobs: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8191a59ac9..9de2193edd 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -41,27 +41,3 @@ jobs: fi env: NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} - s3-lib9c-stateservice: - strategy: - matrix: - runtime: ["osx-arm64", "linux-arm64", "linux-x64", "win-x64"] - name: Publish Lib9c.StateService (${{ matrix.runtime }}) - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - submodules: true - - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 6.0.400 - - name: Publish Lib9c.StateService - run: dotnet publish ./.Lib9c.StateService/Lib9c.StateService.csproj -o out -r ${{ matrix.runtime }} - - name: Compress the build result - run: zip -r ../${{ matrix.runtime }}.zip . - working-directory: ./out - - name: Upload S3 - run: aws s3 cp ${{ matrix.runtime }}.zip s3://9c-dx/lib9c-stateservices/${{ github.sha }}/ - env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_REGION: "us-east-2" From f0e59e3daad61e58eb439ef2e60fc191762bcd87 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Tue, 5 Dec 2023 14:20:53 +0900 Subject: [PATCH 56/70] Bump libplanet to 3.9.0 --- .Libplanet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.Libplanet b/.Libplanet index ec81596b15..f5762f93ba 160000 --- a/.Libplanet +++ b/.Libplanet @@ -1 +1 @@ -Subproject commit ec81596b15cb57c12acfe87a3a2d66ceed366b6d +Subproject commit f5762f93ba0366280c8aa7f7b7b6e3331ad8fe86 From cb34878dce246fb1c60931e3b9d5764e6fa427bf Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Tue, 5 Dec 2023 14:27:11 +0900 Subject: [PATCH 57/70] Accommodate API changes for libplanet 3.9.0 --- .../Snapshot/TransferAsset0SnapshotTest.cs | 18 +++-------- Lib9c.MessagePack/AccountStateDelta.cs | 31 ------------------- 2 files changed, 4 insertions(+), 45 deletions(-) diff --git a/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs b/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs index 92baeeacef..c3ae23ceef 100644 --- a/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs +++ b/.Lib9c.Tests/Action/Snapshot/TransferAsset0SnapshotTest.cs @@ -55,11 +55,7 @@ public Task TransferCrystal() var inputTrie = stateStore.GetStateRoot(null); IAccount state = new Account(new AccountState(inputTrie)) .MintAsset(context, senderAddress, crystal * 100); - - // NOTE: Temporary measure using IAccountDelta. - // Will be removed once Libplanet moves to ITrie based IAccouns. - inputTrie = inputTrie.Set(state.Delta.ToRawDelta()); - inputTrie = stateStore.Commit(inputTrie); + inputTrie = stateStore.Commit(state.Trie); state = new Account(new AccountState(inputTrie)); var actionContext = new ActionContext @@ -73,8 +69,7 @@ public Task TransferCrystal() crystal * 20); var outputState = action.Execute(actionContext); - var outputTrie = inputTrie.Set(outputState.Delta.ToRawDelta()); - outputTrie = stateStore.Commit(outputTrie); + var outputTrie = stateStore.Commit(outputState.Trie); var trieDiff = outputTrie.Diff(inputTrie) .Select(elem => new object[] @@ -112,11 +107,7 @@ public Task TransferWithMemo() var inputTrie = stateStore.GetStateRoot(null); IAccount state = new Account(new AccountState(inputTrie)) .MintAsset(context, senderAddress, crystal * 100); - - // NOTE: Temporary measure using IAccountDelta. - // Will be removed once Libplanet moves to ITrie based IAccouns. - inputTrie = inputTrie.Set(state.Delta.ToRawDelta()); - inputTrie = stateStore.Commit(inputTrie); + inputTrie = stateStore.Commit(state.Trie); state = new Account(new AccountState(inputTrie)); var actionContext = new ActionContext @@ -130,8 +121,7 @@ public Task TransferWithMemo() crystal * 20, "MEMO"); var outputState = action.Execute(actionContext); - var outputTrie = inputTrie.Set(outputState.Delta.ToRawDelta()); - outputTrie = stateStore.Commit(outputTrie); + var outputTrie = stateStore.Commit(outputState.Trie); var trieDiff = outputTrie.Diff(inputTrie) .Select(elem => new object[] diff --git a/Lib9c.MessagePack/AccountStateDelta.cs b/Lib9c.MessagePack/AccountStateDelta.cs index 14bb3cda23..1c55157581 100644 --- a/Lib9c.MessagePack/AccountStateDelta.cs +++ b/Lib9c.MessagePack/AccountStateDelta.cs @@ -19,7 +19,6 @@ public struct AccountStateDelta : IAccount private IImmutableDictionary _states; private IImmutableDictionary<(Address, Currency), BigInteger> _balances; private IImmutableDictionary _totalSupplies; - private MockAccountDelta _delta; public IImmutableSet<(Address, Currency)> TotalUpdatedFungibleAssets => ImmutableHashSet<(Address, Currency)>.Empty; @@ -30,7 +29,6 @@ public AccountStateDelta( IImmutableDictionary totalSupplies ) { - _delta = new MockAccountDelta(states, balances, totalSupplies); _states = states; _balances = balances; _totalSupplies = totalSupplies; @@ -66,8 +64,6 @@ public AccountStateDelta(byte[] bytes) public ITrie Trie => throw new NotSupportedException(); - public IAccountDelta Delta => _delta; - public IValue? GetState(Address address) => _states.ContainsKey(address) ? _states[address] @@ -231,32 +227,5 @@ public ValidatorSet GetValidatorSet() { return new ValidatorSet(); } - - private class MockAccountDelta : IAccountDelta - { - private IImmutableDictionary _states; - private IImmutableDictionary<(Address, Currency), BigInteger> _fungibles; - private IImmutableDictionary _totalSupplies; - - public MockAccountDelta( - IImmutableDictionary states, - IImmutableDictionary<(Address, Currency), BigInteger> balances, - IImmutableDictionary totalSupplies) - { - _states = states; - _fungibles = balances; - _totalSupplies = totalSupplies; - } - - public IImmutableSet
UpdatedAddresses => StateUpdatedAddresses.Union(FungibleUpdatedAddresses); - public IImmutableSet
StateUpdatedAddresses => _states.Keys.ToImmutableHashSet(); - public IImmutableDictionary States => _states; - public IImmutableSet
FungibleUpdatedAddresses => _fungibles.Keys.Select(pair => pair.Item1).ToImmutableHashSet(); - public IImmutableSet<(Address, Currency)> UpdatedFungibleAssets => _fungibles.Keys.ToImmutableHashSet(); - public IImmutableDictionary<(Address, Currency), BigInteger> Fungibles => _fungibles; - public IImmutableSet UpdatedTotalSupplyCurrencies => _totalSupplies.Keys.ToImmutableHashSet(); - public IImmutableDictionary TotalSupplies => _totalSupplies; - public ValidatorSet? ValidatorSet => null; - } } } From 23303118a25f044446e52e9db5821107f1b4b842 Mon Sep 17 00:00:00 2001 From: Syu Date: Tue, 5 Dec 2023 16:30:38 +0900 Subject: [PATCH 58/70] Update New Rune data Add --- Lib9c/TableCSV/Rune/RuneOptionSheet.csv | 2402 ++++++++++++++++- Lib9c/TableCSV/RuneCostSheet.csv | 2402 ++++++++++++++++- Lib9c/TableCSV/RuneListSheet.csv | 10 +- Lib9c/TableCSV/RuneSheet.csv | 16 +- Lib9c/TableCSV/Skill/ActionBuffSheet.csv | 1 + Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv | 1 + Lib9c/TableCSV/Skill/SkillSheet.csv | 1 + 7 files changed, 4818 insertions(+), 15 deletions(-) diff --git a/Lib9c/TableCSV/Rune/RuneOptionSheet.csv b/Lib9c/TableCSV/Rune/RuneOptionSheet.csv index 27e37bbf16..78ca8bce43 100644 --- a/Lib9c/TableCSV/Rune/RuneOptionSheet.csv +++ b/Lib9c/TableCSV/Rune/RuneOptionSheet.csv @@ -2398,4 +2398,2404 @@ rune_id,_name,level,total_cp,stat_type_1,value_1,value_type_1,stat_type_2,value_ 20001,Golden leaf Rune,297,223958,HIT,36171,Add,ATK,10624,Add,NONE,0,Add,700002,16,30,7005,Add,NONE,Caster,12 20001,Golden leaf Rune,298,225238,HIT,36331,Add,ATK,10695,Add,NONE,0,Add,700002,16,30,7015,Add,NONE,Caster,12 20001,Golden leaf Rune,299,226519,HIT,36491,Add,ATK,10766,Add,NONE,0,Add,700002,16,30,7025,Add,NONE,Caster,12 -20001,Golden leaf Rune,300,227799,HIT,36651,Add,ATK,10837,Add,NONE,0,Add,700002,16,30,7035,Add,NONE,Caster,12 \ No newline at end of file +20001,Golden leaf Rune,300,227799,HIT,36651,Add,ATK,10837,Add,NONE,0,Add,700002,16,30,7035,Add,NONE,Caster,12 +10021,Adventure Stun Rune,1,1,ATK,310,Add,DEF,33,Add,NONE,0,Add,700005,14,100,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,2,,ATK,335,Add,DEF,41,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,3,,ATK,360,Add,DEF,49,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,4,,ATK,385,Add,DEF,57,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,5,,ATK,410,Add,DEF,65,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,6,,ATK,435,Add,DEF,73,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,7,,ATK,460,Add,DEF,81,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,8,,ATK,485,Add,DEF,89,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,9,,ATK,510,Add,DEF,97,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,10,,ATK,535,Add,DEF,105,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,11,,ATK,560,Add,DEF,113,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,12,,ATK,585,Add,DEF,121,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,13,,ATK,610,Add,DEF,129,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,14,,ATK,635,Add,DEF,137,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,15,,ATK,660,Add,DEF,145,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,16,,ATK,685,Add,DEF,153,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,17,,ATK,710,Add,DEF,161,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,18,,ATK,735,Add,DEF,169,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,19,,ATK,760,Add,DEF,177,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,20,,ATK,785,Add,DEF,185,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,21,,ATK,810,Add,DEF,193,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,22,,ATK,835,Add,DEF,201,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,23,,ATK,860,Add,DEF,209,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,24,,ATK,885,Add,DEF,217,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,25,,ATK,910,Add,DEF,225,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,26,,ATK,935,Add,DEF,233,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,27,,ATK,960,Add,DEF,241,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,28,,ATK,985,Add,DEF,249,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,29,,ATK,1010,Add,DEF,257,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,30,,ATK,1035,Add,DEF,265,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,31,,ATK,1060,Add,DEF,273,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,32,,ATK,1085,Add,DEF,281,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,33,,ATK,1110,Add,DEF,289,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,34,,ATK,1135,Add,DEF,297,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,35,,ATK,1160,Add,DEF,305,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,36,,ATK,1185,Add,DEF,313,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,37,,ATK,1210,Add,DEF,321,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,38,,ATK,1235,Add,DEF,329,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,39,,ATK,1260,Add,DEF,337,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,40,,ATK,1285,Add,DEF,345,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,41,,ATK,1310,Add,DEF,353,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,42,,ATK,1335,Add,DEF,361,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,43,,ATK,1360,Add,DEF,369,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,44,,ATK,1385,Add,DEF,377,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,45,,ATK,1410,Add,DEF,385,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,46,,ATK,1435,Add,DEF,393,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,47,,ATK,1460,Add,DEF,401,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,48,,ATK,1485,Add,DEF,409,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,49,,ATK,1510,Add,DEF,417,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,50,,ATK,1535,Add,DEF,425,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,51,,ATK,1572,Add,DEF,435,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,52,,ATK,1609,Add,DEF,445,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,53,,ATK,1646,Add,DEF,455,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,54,,ATK,1683,Add,DEF,465,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,55,,ATK,1720,Add,DEF,475,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,56,,ATK,1757,Add,DEF,485,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,57,,ATK,1794,Add,DEF,495,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,58,,ATK,1831,Add,DEF,505,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,59,,ATK,1868,Add,DEF,515,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,60,,ATK,1905,Add,DEF,525,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,61,,ATK,1942,Add,DEF,535,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,62,,ATK,1979,Add,DEF,545,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,63,,ATK,2016,Add,DEF,555,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,64,,ATK,2053,Add,DEF,565,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,65,,ATK,2090,Add,DEF,575,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,66,,ATK,2127,Add,DEF,585,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,67,,ATK,2164,Add,DEF,595,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,68,,ATK,2201,Add,DEF,605,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,69,,ATK,2238,Add,DEF,615,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,70,,ATK,2275,Add,DEF,625,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,71,,ATK,2312,Add,DEF,635,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,72,,ATK,2349,Add,DEF,645,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,73,,ATK,2386,Add,DEF,655,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,74,,ATK,2423,Add,DEF,665,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,75,,ATK,2460,Add,DEF,675,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,76,,ATK,2497,Add,DEF,685,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,77,,ATK,2534,Add,DEF,695,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,78,,ATK,2571,Add,DEF,705,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,79,,ATK,2608,Add,DEF,715,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,80,,ATK,2645,Add,DEF,725,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,81,,ATK,2682,Add,DEF,735,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,82,,ATK,2719,Add,DEF,745,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,83,,ATK,2756,Add,DEF,755,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,84,,ATK,2793,Add,DEF,765,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,85,,ATK,2830,Add,DEF,775,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,86,,ATK,2867,Add,DEF,785,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,87,,ATK,2904,Add,DEF,795,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,88,,ATK,2941,Add,DEF,805,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,89,,ATK,2978,Add,DEF,815,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,90,,ATK,3015,Add,DEF,825,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,91,,ATK,3052,Add,DEF,835,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,92,,ATK,3089,Add,DEF,845,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,93,,ATK,3126,Add,DEF,855,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,94,,ATK,3163,Add,DEF,865,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,95,,ATK,3200,Add,DEF,875,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,96,,ATK,3237,Add,DEF,885,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,97,,ATK,3274,Add,DEF,895,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,98,,ATK,3311,Add,DEF,905,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,99,,ATK,3348,Add,DEF,915,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,100,,ATK,3385,Add,DEF,925,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,101,,ATK,3445,Add,DEF,938,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,102,,ATK,3505,Add,DEF,951,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,103,,ATK,3565,Add,DEF,964,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,104,,ATK,3625,Add,DEF,977,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,105,,ATK,3685,Add,DEF,990,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,106,,ATK,3745,Add,DEF,1003,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,107,,ATK,3805,Add,DEF,1016,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,108,,ATK,3865,Add,DEF,1029,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,109,,ATK,3925,Add,DEF,1042,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,110,,ATK,3985,Add,DEF,1055,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,111,,ATK,4045,Add,DEF,1068,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,112,,ATK,4105,Add,DEF,1081,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,113,,ATK,4165,Add,DEF,1094,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,114,,ATK,4225,Add,DEF,1107,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,115,,ATK,4285,Add,DEF,1120,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,116,,ATK,4345,Add,DEF,1133,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,117,,ATK,4405,Add,DEF,1146,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,118,,ATK,4465,Add,DEF,1159,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,119,,ATK,4525,Add,DEF,1172,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,120,,ATK,4585,Add,DEF,1185,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,121,,ATK,4645,Add,DEF,1198,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,122,,ATK,4705,Add,DEF,1211,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,123,,ATK,4765,Add,DEF,1224,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,124,,ATK,4825,Add,DEF,1237,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,125,,ATK,4885,Add,DEF,1250,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,126,,ATK,4945,Add,DEF,1263,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,127,,ATK,5005,Add,DEF,1276,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,128,,ATK,5065,Add,DEF,1289,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,129,,ATK,5125,Add,DEF,1302,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,130,,ATK,5185,Add,DEF,1315,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,131,,ATK,5245,Add,DEF,1328,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,132,,ATK,5305,Add,DEF,1341,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,133,,ATK,5365,Add,DEF,1354,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,134,,ATK,5425,Add,DEF,1367,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,135,,ATK,5485,Add,DEF,1380,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,136,,ATK,5545,Add,DEF,1393,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,137,,ATK,5605,Add,DEF,1406,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,138,,ATK,5665,Add,DEF,1419,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,139,,ATK,5725,Add,DEF,1432,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,140,,ATK,5785,Add,DEF,1445,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,141,,ATK,5845,Add,DEF,1458,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,142,,ATK,5905,Add,DEF,1471,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,143,,ATK,5965,Add,DEF,1484,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,144,,ATK,6025,Add,DEF,1497,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,145,,ATK,6085,Add,DEF,1510,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,146,,ATK,6145,Add,DEF,1523,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,147,,ATK,6205,Add,DEF,1536,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,148,,ATK,6265,Add,DEF,1549,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,149,,ATK,6325,Add,DEF,1562,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,150,,ATK,6385,Add,DEF,1575,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,151,,ATK,6480,Add,DEF,1595,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,152,,ATK,6575,Add,DEF,1615,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,153,,ATK,6670,Add,DEF,1635,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,154,,ATK,6765,Add,DEF,1655,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,155,,ATK,6860,Add,DEF,1675,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,156,,ATK,6955,Add,DEF,1695,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,157,,ATK,7050,Add,DEF,1715,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,158,,ATK,7145,Add,DEF,1735,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,159,,ATK,7240,Add,DEF,1755,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,160,,ATK,7335,Add,DEF,1775,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,161,,ATK,7430,Add,DEF,1795,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,162,,ATK,7525,Add,DEF,1815,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,163,,ATK,7620,Add,DEF,1835,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,164,,ATK,7715,Add,DEF,1855,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,165,,ATK,7810,Add,DEF,1875,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,166,,ATK,7905,Add,DEF,1895,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,167,,ATK,8000,Add,DEF,1915,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,168,,ATK,8095,Add,DEF,1935,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,169,,ATK,8190,Add,DEF,1955,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,170,,ATK,8285,Add,DEF,1975,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,171,,ATK,8380,Add,DEF,1995,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,172,,ATK,8475,Add,DEF,2015,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,173,,ATK,8570,Add,DEF,2035,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,174,,ATK,8665,Add,DEF,2055,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,175,,ATK,8760,Add,DEF,2075,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,176,,ATK,8855,Add,DEF,2095,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,177,,ATK,8950,Add,DEF,2115,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,178,,ATK,9045,Add,DEF,2135,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,179,,ATK,9140,Add,DEF,2155,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,180,,ATK,9235,Add,DEF,2175,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,181,,ATK,9330,Add,DEF,2195,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,182,,ATK,9425,Add,DEF,2215,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,183,,ATK,9520,Add,DEF,2235,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,184,,ATK,9615,Add,DEF,2255,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,185,,ATK,9710,Add,DEF,2275,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,186,,ATK,9805,Add,DEF,2295,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,187,,ATK,9900,Add,DEF,2315,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,188,,ATK,9995,Add,DEF,2335,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,189,,ATK,10090,Add,DEF,2355,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,190,,ATK,10185,Add,DEF,2375,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,191,,ATK,10280,Add,DEF,2395,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,192,,ATK,10375,Add,DEF,2415,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,193,,ATK,10470,Add,DEF,2435,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,194,,ATK,10565,Add,DEF,2455,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,195,,ATK,10660,Add,DEF,2475,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,196,,ATK,10755,Add,DEF,2495,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,197,,ATK,10850,Add,DEF,2515,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,198,,ATK,10945,Add,DEF,2535,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,199,,ATK,11040,Add,DEF,2555,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,200,,ATK,11135,Add,DEF,2575,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,201,,ATK,11250,Add,DEF,2596,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,202,,ATK,11365,Add,DEF,2617,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,203,,ATK,11480,Add,DEF,2638,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,204,,ATK,11595,Add,DEF,2659,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,205,,ATK,11710,Add,DEF,2680,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,206,,ATK,11825,Add,DEF,2701,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,207,,ATK,11940,Add,DEF,2722,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,208,,ATK,12055,Add,DEF,2743,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,209,,ATK,12170,Add,DEF,2764,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,210,,ATK,12285,Add,DEF,2785,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,211,,ATK,12400,Add,DEF,2806,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,212,,ATK,12515,Add,DEF,2827,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,213,,ATK,12630,Add,DEF,2848,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,214,,ATK,12745,Add,DEF,2869,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,215,,ATK,12860,Add,DEF,2890,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,216,,ATK,12975,Add,DEF,2911,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,217,,ATK,13090,Add,DEF,2932,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,218,,ATK,13205,Add,DEF,2953,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,219,,ATK,13320,Add,DEF,2974,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,220,,ATK,13435,Add,DEF,2995,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,221,,ATK,13550,Add,DEF,3016,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,222,,ATK,13665,Add,DEF,3037,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,223,,ATK,13780,Add,DEF,3058,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,224,,ATK,13895,Add,DEF,3079,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,225,,ATK,14010,Add,DEF,3100,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,226,,ATK,14125,Add,DEF,3121,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,227,,ATK,14240,Add,DEF,3142,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,228,,ATK,14355,Add,DEF,3163,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,229,,ATK,14470,Add,DEF,3184,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,230,,ATK,14585,Add,DEF,3205,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,231,,ATK,14700,Add,DEF,3226,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,232,,ATK,14815,Add,DEF,3247,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,233,,ATK,14930,Add,DEF,3268,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,234,,ATK,15045,Add,DEF,3289,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,235,,ATK,15160,Add,DEF,3310,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,236,,ATK,15275,Add,DEF,3331,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,237,,ATK,15390,Add,DEF,3352,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,238,,ATK,15505,Add,DEF,3373,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,239,,ATK,15620,Add,DEF,3394,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,240,,ATK,15735,Add,DEF,3415,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,241,,ATK,15850,Add,DEF,3436,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,242,,ATK,15965,Add,DEF,3457,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,243,,ATK,16080,Add,DEF,3478,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,244,,ATK,16195,Add,DEF,3499,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,245,,ATK,16310,Add,DEF,3520,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,246,,ATK,16425,Add,DEF,3541,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,247,,ATK,16540,Add,DEF,3562,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,248,,ATK,16655,Add,DEF,3583,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,249,,ATK,16770,Add,DEF,3604,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,250,,ATK,16885,Add,DEF,3625,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,251,,ATK,17054,Add,DEF,3651,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,252,,ATK,17223,Add,DEF,3677,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,253,,ATK,17392,Add,DEF,3703,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,254,,ATK,17561,Add,DEF,3729,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,255,,ATK,17730,Add,DEF,3755,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,256,,ATK,17899,Add,DEF,3781,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,257,,ATK,18068,Add,DEF,3807,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,258,,ATK,18237,Add,DEF,3833,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,259,,ATK,18406,Add,DEF,3859,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,260,,ATK,18575,Add,DEF,3885,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,261,,ATK,18744,Add,DEF,3911,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,262,,ATK,18913,Add,DEF,3937,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,263,,ATK,19082,Add,DEF,3963,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,264,,ATK,19251,Add,DEF,3989,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,265,,ATK,19420,Add,DEF,4015,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,266,,ATK,19589,Add,DEF,4041,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,267,,ATK,19758,Add,DEF,4067,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,268,,ATK,19927,Add,DEF,4093,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,269,,ATK,20096,Add,DEF,4119,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,270,,ATK,20265,Add,DEF,4145,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,271,,ATK,20434,Add,DEF,4171,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,272,,ATK,20603,Add,DEF,4197,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,273,,ATK,20772,Add,DEF,4223,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,274,,ATK,20941,Add,DEF,4249,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,275,,ATK,21110,Add,DEF,4275,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,276,,ATK,21279,Add,DEF,4301,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,277,,ATK,21448,Add,DEF,4327,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,278,,ATK,21617,Add,DEF,4353,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,279,,ATK,21786,Add,DEF,4379,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,280,,ATK,21955,Add,DEF,4405,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,281,,ATK,22124,Add,DEF,4431,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,282,,ATK,22293,Add,DEF,4457,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,283,,ATK,22462,Add,DEF,4483,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,284,,ATK,22631,Add,DEF,4509,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,285,,ATK,22800,Add,DEF,4535,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,286,,ATK,22969,Add,DEF,4561,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,287,,ATK,23138,Add,DEF,4587,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,288,,ATK,23307,Add,DEF,4613,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,289,,ATK,23476,Add,DEF,4639,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,290,,ATK,23645,Add,DEF,4665,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,291,,ATK,23814,Add,DEF,4691,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,292,,ATK,23983,Add,DEF,4717,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,293,,ATK,24152,Add,DEF,4743,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,294,,ATK,24321,Add,DEF,4769,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,295,,ATK,24490,Add,DEF,4795,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,296,,ATK,24659,Add,DEF,4821,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,297,,ATK,24828,Add,DEF,4847,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,298,,ATK,24997,Add,DEF,4873,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,299,,ATK,25166,Add,DEF,4899,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,300,,ATK,25335,Add,DEF,4925,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,1,1,ATK,310,Add,DEF,33,Add,NONE,0,Add,700004,14,100,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,2,,ATK,335,Add,DEF,41,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,3,,ATK,360,Add,DEF,49,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,4,,ATK,385,Add,DEF,57,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,5,,ATK,410,Add,DEF,65,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,6,,ATK,435,Add,DEF,73,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,7,,ATK,460,Add,DEF,81,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,8,,ATK,485,Add,DEF,89,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,9,,ATK,510,Add,DEF,97,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,10,,ATK,535,Add,DEF,105,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,11,,ATK,560,Add,DEF,113,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,12,,ATK,585,Add,DEF,121,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,13,,ATK,610,Add,DEF,129,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,14,,ATK,635,Add,DEF,137,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,15,,ATK,660,Add,DEF,145,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,16,,ATK,685,Add,DEF,153,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,17,,ATK,710,Add,DEF,161,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,18,,ATK,735,Add,DEF,169,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,19,,ATK,760,Add,DEF,177,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,20,,ATK,785,Add,DEF,185,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,21,,ATK,810,Add,DEF,193,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,22,,ATK,835,Add,DEF,201,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,23,,ATK,860,Add,DEF,209,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,24,,ATK,885,Add,DEF,217,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,25,,ATK,910,Add,DEF,225,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,26,,ATK,935,Add,DEF,233,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,27,,ATK,960,Add,DEF,241,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,28,,ATK,985,Add,DEF,249,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,29,,ATK,1010,Add,DEF,257,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,30,,ATK,1035,Add,DEF,265,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,31,,ATK,1060,Add,DEF,273,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,32,,ATK,1085,Add,DEF,281,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,33,,ATK,1110,Add,DEF,289,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,34,,ATK,1135,Add,DEF,297,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,35,,ATK,1160,Add,DEF,305,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,36,,ATK,1185,Add,DEF,313,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,37,,ATK,1210,Add,DEF,321,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,38,,ATK,1235,Add,DEF,329,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,39,,ATK,1260,Add,DEF,337,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,40,,ATK,1285,Add,DEF,345,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,41,,ATK,1310,Add,DEF,353,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,42,,ATK,1335,Add,DEF,361,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,43,,ATK,1360,Add,DEF,369,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,44,,ATK,1385,Add,DEF,377,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,45,,ATK,1410,Add,DEF,385,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,46,,ATK,1435,Add,DEF,393,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,47,,ATK,1460,Add,DEF,401,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,48,,ATK,1485,Add,DEF,409,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,49,,ATK,1510,Add,DEF,417,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,50,,ATK,1535,Add,DEF,425,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,51,,ATK,1572,Add,DEF,435,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,52,,ATK,1609,Add,DEF,445,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,53,,ATK,1646,Add,DEF,455,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,54,,ATK,1683,Add,DEF,465,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,55,,ATK,1720,Add,DEF,475,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,56,,ATK,1757,Add,DEF,485,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,57,,ATK,1794,Add,DEF,495,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,58,,ATK,1831,Add,DEF,505,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,59,,ATK,1868,Add,DEF,515,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,60,,ATK,1905,Add,DEF,525,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,61,,ATK,1942,Add,DEF,535,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,62,,ATK,1979,Add,DEF,545,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,63,,ATK,2016,Add,DEF,555,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,64,,ATK,2053,Add,DEF,565,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,65,,ATK,2090,Add,DEF,575,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,66,,ATK,2127,Add,DEF,585,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,67,,ATK,2164,Add,DEF,595,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,68,,ATK,2201,Add,DEF,605,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,69,,ATK,2238,Add,DEF,615,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,70,,ATK,2275,Add,DEF,625,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,71,,ATK,2312,Add,DEF,635,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,72,,ATK,2349,Add,DEF,645,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,73,,ATK,2386,Add,DEF,655,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,74,,ATK,2423,Add,DEF,665,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,75,,ATK,2460,Add,DEF,675,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,76,,ATK,2497,Add,DEF,685,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,77,,ATK,2534,Add,DEF,695,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,78,,ATK,2571,Add,DEF,705,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,79,,ATK,2608,Add,DEF,715,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,80,,ATK,2645,Add,DEF,725,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,81,,ATK,2682,Add,DEF,735,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,82,,ATK,2719,Add,DEF,745,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,83,,ATK,2756,Add,DEF,755,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,84,,ATK,2793,Add,DEF,765,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,85,,ATK,2830,Add,DEF,775,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,86,,ATK,2867,Add,DEF,785,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,87,,ATK,2904,Add,DEF,795,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,88,,ATK,2941,Add,DEF,805,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,89,,ATK,2978,Add,DEF,815,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,90,,ATK,3015,Add,DEF,825,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,91,,ATK,3052,Add,DEF,835,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,92,,ATK,3089,Add,DEF,845,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,93,,ATK,3126,Add,DEF,855,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,94,,ATK,3163,Add,DEF,865,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,95,,ATK,3200,Add,DEF,875,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,96,,ATK,3237,Add,DEF,885,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,97,,ATK,3274,Add,DEF,895,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,98,,ATK,3311,Add,DEF,905,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,99,,ATK,3348,Add,DEF,915,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,100,,ATK,3385,Add,DEF,925,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,101,,ATK,3445,Add,DEF,938,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,102,,ATK,3505,Add,DEF,951,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,103,,ATK,3565,Add,DEF,964,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,104,,ATK,3625,Add,DEF,977,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,105,,ATK,3685,Add,DEF,990,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,106,,ATK,3745,Add,DEF,1003,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,107,,ATK,3805,Add,DEF,1016,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,108,,ATK,3865,Add,DEF,1029,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,109,,ATK,3925,Add,DEF,1042,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,110,,ATK,3985,Add,DEF,1055,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,111,,ATK,4045,Add,DEF,1068,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,112,,ATK,4105,Add,DEF,1081,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,113,,ATK,4165,Add,DEF,1094,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,114,,ATK,4225,Add,DEF,1107,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,115,,ATK,4285,Add,DEF,1120,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,116,,ATK,4345,Add,DEF,1133,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,117,,ATK,4405,Add,DEF,1146,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,118,,ATK,4465,Add,DEF,1159,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,119,,ATK,4525,Add,DEF,1172,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,120,,ATK,4585,Add,DEF,1185,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,121,,ATK,4645,Add,DEF,1198,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,122,,ATK,4705,Add,DEF,1211,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,123,,ATK,4765,Add,DEF,1224,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,124,,ATK,4825,Add,DEF,1237,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,125,,ATK,4885,Add,DEF,1250,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,126,,ATK,4945,Add,DEF,1263,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,127,,ATK,5005,Add,DEF,1276,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,128,,ATK,5065,Add,DEF,1289,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,129,,ATK,5125,Add,DEF,1302,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,130,,ATK,5185,Add,DEF,1315,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,131,,ATK,5245,Add,DEF,1328,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,132,,ATK,5305,Add,DEF,1341,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,133,,ATK,5365,Add,DEF,1354,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,134,,ATK,5425,Add,DEF,1367,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,135,,ATK,5485,Add,DEF,1380,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,136,,ATK,5545,Add,DEF,1393,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,137,,ATK,5605,Add,DEF,1406,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,138,,ATK,5665,Add,DEF,1419,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,139,,ATK,5725,Add,DEF,1432,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,140,,ATK,5785,Add,DEF,1445,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,141,,ATK,5845,Add,DEF,1458,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,142,,ATK,5905,Add,DEF,1471,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,143,,ATK,5965,Add,DEF,1484,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,144,,ATK,6025,Add,DEF,1497,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,145,,ATK,6085,Add,DEF,1510,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,146,,ATK,6145,Add,DEF,1523,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,147,,ATK,6205,Add,DEF,1536,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,148,,ATK,6265,Add,DEF,1549,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,149,,ATK,6325,Add,DEF,1562,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,150,,ATK,6385,Add,DEF,1575,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,151,,ATK,6480,Add,DEF,1595,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,152,,ATK,6575,Add,DEF,1615,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,153,,ATK,6670,Add,DEF,1635,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,154,,ATK,6765,Add,DEF,1655,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,155,,ATK,6860,Add,DEF,1675,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,156,,ATK,6955,Add,DEF,1695,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,157,,ATK,7050,Add,DEF,1715,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,158,,ATK,7145,Add,DEF,1735,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,159,,ATK,7240,Add,DEF,1755,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,160,,ATK,7335,Add,DEF,1775,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,161,,ATK,7430,Add,DEF,1795,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,162,,ATK,7525,Add,DEF,1815,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,163,,ATK,7620,Add,DEF,1835,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,164,,ATK,7715,Add,DEF,1855,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,165,,ATK,7810,Add,DEF,1875,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,166,,ATK,7905,Add,DEF,1895,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,167,,ATK,8000,Add,DEF,1915,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,168,,ATK,8095,Add,DEF,1935,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,169,,ATK,8190,Add,DEF,1955,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,170,,ATK,8285,Add,DEF,1975,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,171,,ATK,8380,Add,DEF,1995,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,172,,ATK,8475,Add,DEF,2015,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,173,,ATK,8570,Add,DEF,2035,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,174,,ATK,8665,Add,DEF,2055,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,175,,ATK,8760,Add,DEF,2075,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,176,,ATK,8855,Add,DEF,2095,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,177,,ATK,8950,Add,DEF,2115,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,178,,ATK,9045,Add,DEF,2135,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,179,,ATK,9140,Add,DEF,2155,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,180,,ATK,9235,Add,DEF,2175,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,181,,ATK,9330,Add,DEF,2195,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,182,,ATK,9425,Add,DEF,2215,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,183,,ATK,9520,Add,DEF,2235,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,184,,ATK,9615,Add,DEF,2255,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,185,,ATK,9710,Add,DEF,2275,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,186,,ATK,9805,Add,DEF,2295,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,187,,ATK,9900,Add,DEF,2315,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,188,,ATK,9995,Add,DEF,2335,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,189,,ATK,10090,Add,DEF,2355,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,190,,ATK,10185,Add,DEF,2375,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,191,,ATK,10280,Add,DEF,2395,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,192,,ATK,10375,Add,DEF,2415,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,193,,ATK,10470,Add,DEF,2435,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,194,,ATK,10565,Add,DEF,2455,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,195,,ATK,10660,Add,DEF,2475,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,196,,ATK,10755,Add,DEF,2495,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,197,,ATK,10850,Add,DEF,2515,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,198,,ATK,10945,Add,DEF,2535,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,199,,ATK,11040,Add,DEF,2555,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,200,,ATK,11135,Add,DEF,2575,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,201,,ATK,11250,Add,DEF,2596,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,202,,ATK,11365,Add,DEF,2617,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,203,,ATK,11480,Add,DEF,2638,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,204,,ATK,11595,Add,DEF,2659,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,205,,ATK,11710,Add,DEF,2680,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,206,,ATK,11825,Add,DEF,2701,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,207,,ATK,11940,Add,DEF,2722,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,208,,ATK,12055,Add,DEF,2743,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,209,,ATK,12170,Add,DEF,2764,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,210,,ATK,12285,Add,DEF,2785,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,211,,ATK,12400,Add,DEF,2806,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,212,,ATK,12515,Add,DEF,2827,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,213,,ATK,12630,Add,DEF,2848,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,214,,ATK,12745,Add,DEF,2869,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,215,,ATK,12860,Add,DEF,2890,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,216,,ATK,12975,Add,DEF,2911,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,217,,ATK,13090,Add,DEF,2932,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,218,,ATK,13205,Add,DEF,2953,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,219,,ATK,13320,Add,DEF,2974,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,220,,ATK,13435,Add,DEF,2995,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,221,,ATK,13550,Add,DEF,3016,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,222,,ATK,13665,Add,DEF,3037,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,223,,ATK,13780,Add,DEF,3058,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,224,,ATK,13895,Add,DEF,3079,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,225,,ATK,14010,Add,DEF,3100,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,226,,ATK,14125,Add,DEF,3121,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,227,,ATK,14240,Add,DEF,3142,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,228,,ATK,14355,Add,DEF,3163,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,229,,ATK,14470,Add,DEF,3184,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,230,,ATK,14585,Add,DEF,3205,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,231,,ATK,14700,Add,DEF,3226,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,232,,ATK,14815,Add,DEF,3247,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,233,,ATK,14930,Add,DEF,3268,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,234,,ATK,15045,Add,DEF,3289,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,235,,ATK,15160,Add,DEF,3310,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,236,,ATK,15275,Add,DEF,3331,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,237,,ATK,15390,Add,DEF,3352,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,238,,ATK,15505,Add,DEF,3373,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,239,,ATK,15620,Add,DEF,3394,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,240,,ATK,15735,Add,DEF,3415,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,241,,ATK,15850,Add,DEF,3436,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,242,,ATK,15965,Add,DEF,3457,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,243,,ATK,16080,Add,DEF,3478,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,244,,ATK,16195,Add,DEF,3499,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,245,,ATK,16310,Add,DEF,3520,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,246,,ATK,16425,Add,DEF,3541,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,247,,ATK,16540,Add,DEF,3562,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,248,,ATK,16655,Add,DEF,3583,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,249,,ATK,16770,Add,DEF,3604,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,250,,ATK,16885,Add,DEF,3625,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,251,,ATK,17054,Add,DEF,3651,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,252,,ATK,17223,Add,DEF,3677,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,253,,ATK,17392,Add,DEF,3703,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,254,,ATK,17561,Add,DEF,3729,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,255,,ATK,17730,Add,DEF,3755,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,256,,ATK,17899,Add,DEF,3781,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,257,,ATK,18068,Add,DEF,3807,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,258,,ATK,18237,Add,DEF,3833,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,259,,ATK,18406,Add,DEF,3859,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,260,,ATK,18575,Add,DEF,3885,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,261,,ATK,18744,Add,DEF,3911,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,262,,ATK,18913,Add,DEF,3937,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,263,,ATK,19082,Add,DEF,3963,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,264,,ATK,19251,Add,DEF,3989,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,265,,ATK,19420,Add,DEF,4015,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,266,,ATK,19589,Add,DEF,4041,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,267,,ATK,19758,Add,DEF,4067,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,268,,ATK,19927,Add,DEF,4093,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,269,,ATK,20096,Add,DEF,4119,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,270,,ATK,20265,Add,DEF,4145,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,271,,ATK,20434,Add,DEF,4171,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,272,,ATK,20603,Add,DEF,4197,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,273,,ATK,20772,Add,DEF,4223,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,274,,ATK,20941,Add,DEF,4249,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,275,,ATK,21110,Add,DEF,4275,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,276,,ATK,21279,Add,DEF,4301,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,277,,ATK,21448,Add,DEF,4327,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,278,,ATK,21617,Add,DEF,4353,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,279,,ATK,21786,Add,DEF,4379,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,280,,ATK,21955,Add,DEF,4405,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,281,,ATK,22124,Add,DEF,4431,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,282,,ATK,22293,Add,DEF,4457,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,283,,ATK,22462,Add,DEF,4483,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,284,,ATK,22631,Add,DEF,4509,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,285,,ATK,22800,Add,DEF,4535,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,286,,ATK,22969,Add,DEF,4561,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,287,,ATK,23138,Add,DEF,4587,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,288,,ATK,23307,Add,DEF,4613,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,289,,ATK,23476,Add,DEF,4639,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,290,,ATK,23645,Add,DEF,4665,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,291,,ATK,23814,Add,DEF,4691,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,292,,ATK,23983,Add,DEF,4717,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,293,,ATK,24152,Add,DEF,4743,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,294,,ATK,24321,Add,DEF,4769,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,295,,ATK,24490,Add,DEF,4795,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,296,,ATK,24659,Add,DEF,4821,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,297,,ATK,24828,Add,DEF,4847,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,298,,ATK,24997,Add,DEF,4873,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,299,,ATK,25166,Add,DEF,4899,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,300,,ATK,25335,Add,DEF,4925,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,1,1,DEF,101,Add,HP,792,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,2,,DEF,126,Add,HP,944,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,3,,DEF,151,Add,HP,1096,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,4,,DEF,176,Add,HP,1248,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,5,,DEF,201,Add,HP,1400,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,6,,DEF,226,Add,HP,1552,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,7,,DEF,251,Add,HP,1704,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,8,,DEF,276,Add,HP,1856,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,9,,DEF,301,Add,HP,2008,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,10,,DEF,326,Add,HP,2160,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,11,,DEF,351,Add,HP,2312,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,12,,DEF,376,Add,HP,2464,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,13,,DEF,401,Add,HP,2616,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,14,,DEF,426,Add,HP,2768,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,15,,DEF,451,Add,HP,2920,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,16,,DEF,476,Add,HP,3072,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,17,,DEF,501,Add,HP,3224,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,18,,DEF,526,Add,HP,3376,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,19,,DEF,551,Add,HP,3528,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,20,,DEF,576,Add,HP,3680,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,21,,DEF,601,Add,HP,3832,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,22,,DEF,626,Add,HP,3984,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,23,,DEF,651,Add,HP,4136,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,24,,DEF,676,Add,HP,4288,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,25,,DEF,701,Add,HP,4440,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,26,,DEF,726,Add,HP,4592,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,27,,DEF,751,Add,HP,4744,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,28,,DEF,776,Add,HP,4896,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,29,,DEF,801,Add,HP,5048,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,30,,DEF,826,Add,HP,5200,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,31,,DEF,851,Add,HP,5352,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,32,,DEF,876,Add,HP,5504,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,33,,DEF,901,Add,HP,5656,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,34,,DEF,926,Add,HP,5808,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,35,,DEF,951,Add,HP,5960,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,36,,DEF,976,Add,HP,6112,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,37,,DEF,1001,Add,HP,6264,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,38,,DEF,1026,Add,HP,6416,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,39,,DEF,1051,Add,HP,6568,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,40,,DEF,1076,Add,HP,6720,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,41,,DEF,1101,Add,HP,6872,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,42,,DEF,1126,Add,HP,7024,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,43,,DEF,1151,Add,HP,7176,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,44,,DEF,1176,Add,HP,7328,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,45,,DEF,1201,Add,HP,7480,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,46,,DEF,1226,Add,HP,7632,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,47,,DEF,1251,Add,HP,7784,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,48,,DEF,1276,Add,HP,7936,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,49,,DEF,1301,Add,HP,8088,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,50,,DEF,1326,Add,HP,8240,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,51,,DEF,1356,Add,HP,8401,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,52,,DEF,1386,Add,HP,8562,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,53,,DEF,1416,Add,HP,8723,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,54,,DEF,1446,Add,HP,8884,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,55,,DEF,1476,Add,HP,9045,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,56,,DEF,1506,Add,HP,9206,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,57,,DEF,1536,Add,HP,9367,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,58,,DEF,1566,Add,HP,9528,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,59,,DEF,1596,Add,HP,9689,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,60,,DEF,1626,Add,HP,9850,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,61,,DEF,1656,Add,HP,10011,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,62,,DEF,1686,Add,HP,10172,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,63,,DEF,1716,Add,HP,10333,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,64,,DEF,1746,Add,HP,10494,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,65,,DEF,1776,Add,HP,10655,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,66,,DEF,1806,Add,HP,10816,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,67,,DEF,1836,Add,HP,10977,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,68,,DEF,1866,Add,HP,11138,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,69,,DEF,1896,Add,HP,11299,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,70,,DEF,1926,Add,HP,11460,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,71,,DEF,1956,Add,HP,11621,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,72,,DEF,1986,Add,HP,11782,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,73,,DEF,2016,Add,HP,11943,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,74,,DEF,2046,Add,HP,12104,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,75,,DEF,2076,Add,HP,12265,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,76,,DEF,2106,Add,HP,12426,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,77,,DEF,2136,Add,HP,12587,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,78,,DEF,2166,Add,HP,12748,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,79,,DEF,2196,Add,HP,12909,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,80,,DEF,2226,Add,HP,13070,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,81,,DEF,2256,Add,HP,13231,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,82,,DEF,2286,Add,HP,13392,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,83,,DEF,2316,Add,HP,13553,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,84,,DEF,2346,Add,HP,13714,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,85,,DEF,2376,Add,HP,13875,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,86,,DEF,2406,Add,HP,14036,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,87,,DEF,2436,Add,HP,14197,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,88,,DEF,2466,Add,HP,14358,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,89,,DEF,2496,Add,HP,14519,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,90,,DEF,2526,Add,HP,14680,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,91,,DEF,2556,Add,HP,14841,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,92,,DEF,2586,Add,HP,15002,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,93,,DEF,2616,Add,HP,15163,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,94,,DEF,2646,Add,HP,15324,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,95,,DEF,2676,Add,HP,15485,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,96,,DEF,2706,Add,HP,15646,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,97,,DEF,2736,Add,HP,15807,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,98,,DEF,2766,Add,HP,15968,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,99,,DEF,2796,Add,HP,16129,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,100,,DEF,2826,Add,HP,16290,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,101,,DEF,2867,Add,HP,16494,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,102,,DEF,2908,Add,HP,16698,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,103,,DEF,2949,Add,HP,16902,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,104,,DEF,2990,Add,HP,17106,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,105,,DEF,3031,Add,HP,17310,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,106,,DEF,3072,Add,HP,17514,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,107,,DEF,3113,Add,HP,17718,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,108,,DEF,3154,Add,HP,17922,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,109,,DEF,3195,Add,HP,18126,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,110,,DEF,3236,Add,HP,18330,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,111,,DEF,3277,Add,HP,18534,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,112,,DEF,3318,Add,HP,18738,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,113,,DEF,3359,Add,HP,18942,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,114,,DEF,3400,Add,HP,19146,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,115,,DEF,3441,Add,HP,19350,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,116,,DEF,3482,Add,HP,19554,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,117,,DEF,3523,Add,HP,19758,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,118,,DEF,3564,Add,HP,19962,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,119,,DEF,3605,Add,HP,20166,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,120,,DEF,3646,Add,HP,20370,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,121,,DEF,3687,Add,HP,20574,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,122,,DEF,3728,Add,HP,20778,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,123,,DEF,3769,Add,HP,20982,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,124,,DEF,3810,Add,HP,21186,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,125,,DEF,3851,Add,HP,21390,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,126,,DEF,3892,Add,HP,21594,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,127,,DEF,3933,Add,HP,21798,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,128,,DEF,3974,Add,HP,22002,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,129,,DEF,4015,Add,HP,22206,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,130,,DEF,4056,Add,HP,22410,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,131,,DEF,4097,Add,HP,22614,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,132,,DEF,4138,Add,HP,22818,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,133,,DEF,4179,Add,HP,23022,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,134,,DEF,4220,Add,HP,23226,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,135,,DEF,4261,Add,HP,23430,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,136,,DEF,4302,Add,HP,23634,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,137,,DEF,4343,Add,HP,23838,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,138,,DEF,4384,Add,HP,24042,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,139,,DEF,4425,Add,HP,24246,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,140,,DEF,4466,Add,HP,24450,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,141,,DEF,4507,Add,HP,24654,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,142,,DEF,4548,Add,HP,24858,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,143,,DEF,4589,Add,HP,25062,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,144,,DEF,4630,Add,HP,25266,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,145,,DEF,4671,Add,HP,25470,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,146,,DEF,4712,Add,HP,25674,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,147,,DEF,4753,Add,HP,25878,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,148,,DEF,4794,Add,HP,26082,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,149,,DEF,4835,Add,HP,26286,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,150,,DEF,4876,Add,HP,26490,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,151,,DEF,4936,Add,HP,27580,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,152,,DEF,4996,Add,HP,28670,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,153,,DEF,5056,Add,HP,29760,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,154,,DEF,5116,Add,HP,30850,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,155,,DEF,5176,Add,HP,31940,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,156,,DEF,5236,Add,HP,33030,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,157,,DEF,5296,Add,HP,34120,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,158,,DEF,5356,Add,HP,35210,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,159,,DEF,5416,Add,HP,36300,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,160,,DEF,5476,Add,HP,37390,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,161,,DEF,5536,Add,HP,38480,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,162,,DEF,5596,Add,HP,39570,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,163,,DEF,5656,Add,HP,40660,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,164,,DEF,5716,Add,HP,41750,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,165,,DEF,5776,Add,HP,42840,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,166,,DEF,5836,Add,HP,43930,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,167,,DEF,5896,Add,HP,45020,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,168,,DEF,5956,Add,HP,46110,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,169,,DEF,6016,Add,HP,47200,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,170,,DEF,6076,Add,HP,48290,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,171,,DEF,6136,Add,HP,49380,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,172,,DEF,6196,Add,HP,50470,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,173,,DEF,6256,Add,HP,51560,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,174,,DEF,6316,Add,HP,52650,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,175,,DEF,6376,Add,HP,53740,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,176,,DEF,6436,Add,HP,54830,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,177,,DEF,6496,Add,HP,55920,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,178,,DEF,6556,Add,HP,57010,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,179,,DEF,6616,Add,HP,58100,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,180,,DEF,6676,Add,HP,59190,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,181,,DEF,6736,Add,HP,60280,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,182,,DEF,6796,Add,HP,61370,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,183,,DEF,6856,Add,HP,62460,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,184,,DEF,6916,Add,HP,63550,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,185,,DEF,6976,Add,HP,64640,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,186,,DEF,7036,Add,HP,65730,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,187,,DEF,7096,Add,HP,66820,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,188,,DEF,7156,Add,HP,67910,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,189,,DEF,7216,Add,HP,69000,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,190,,DEF,7276,Add,HP,70090,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,191,,DEF,7336,Add,HP,71180,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,192,,DEF,7396,Add,HP,72270,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,193,,DEF,7456,Add,HP,73360,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,194,,DEF,7516,Add,HP,74450,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,195,,DEF,7576,Add,HP,75540,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,196,,DEF,7636,Add,HP,76630,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,197,,DEF,7696,Add,HP,77720,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,198,,DEF,7756,Add,HP,78810,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,199,,DEF,7816,Add,HP,79900,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,200,,DEF,7876,Add,HP,80990,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,201,,DEF,7940,Add,HP,82625,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,202,,DEF,8004,Add,HP,84260,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,203,,DEF,8068,Add,HP,85895,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,204,,DEF,8132,Add,HP,87530,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,205,,DEF,8196,Add,HP,89165,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,206,,DEF,8260,Add,HP,90800,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,207,,DEF,8324,Add,HP,92435,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,208,,DEF,8388,Add,HP,94070,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,209,,DEF,8452,Add,HP,95705,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,210,,DEF,8516,Add,HP,97340,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,211,,DEF,8580,Add,HP,98975,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,212,,DEF,8644,Add,HP,100610,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,213,,DEF,8708,Add,HP,102245,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,214,,DEF,8772,Add,HP,103880,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,215,,DEF,8836,Add,HP,105515,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,216,,DEF,8900,Add,HP,107150,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,217,,DEF,8964,Add,HP,108785,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,218,,DEF,9028,Add,HP,110420,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,219,,DEF,9092,Add,HP,112055,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,220,,DEF,9156,Add,HP,113690,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,221,,DEF,9220,Add,HP,115325,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,222,,DEF,9284,Add,HP,116960,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,223,,DEF,9348,Add,HP,118595,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,224,,DEF,9412,Add,HP,120230,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,225,,DEF,9476,Add,HP,121865,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,226,,DEF,9540,Add,HP,123500,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,227,,DEF,9604,Add,HP,125135,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,228,,DEF,9668,Add,HP,126770,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,229,,DEF,9732,Add,HP,128405,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,230,,DEF,9796,Add,HP,130040,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,231,,DEF,9860,Add,HP,131675,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,232,,DEF,9924,Add,HP,133310,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,233,,DEF,9988,Add,HP,134945,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,234,,DEF,10052,Add,HP,136580,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,235,,DEF,10116,Add,HP,138215,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,236,,DEF,10180,Add,HP,139850,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,237,,DEF,10244,Add,HP,141485,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,238,,DEF,10308,Add,HP,143120,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,239,,DEF,10372,Add,HP,144755,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,240,,DEF,10436,Add,HP,146390,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,241,,DEF,10500,Add,HP,148025,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,242,,DEF,10564,Add,HP,149660,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,243,,DEF,10628,Add,HP,151295,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,244,,DEF,10692,Add,HP,152930,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,245,,DEF,10756,Add,HP,154565,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,246,,DEF,10820,Add,HP,156200,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,247,,DEF,10884,Add,HP,157835,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,248,,DEF,10948,Add,HP,159470,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,249,,DEF,11012,Add,HP,161105,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,250,,DEF,11076,Add,HP,162740,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,251,,DEF,11155,Add,HP,164506,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,252,,DEF,11234,Add,HP,166272,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,253,,DEF,11313,Add,HP,168038,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,254,,DEF,11392,Add,HP,169804,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,255,,DEF,11471,Add,HP,171570,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,256,,DEF,11550,Add,HP,173336,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,257,,DEF,11629,Add,HP,175102,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,258,,DEF,11708,Add,HP,176868,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,259,,DEF,11787,Add,HP,178634,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,260,,DEF,11866,Add,HP,180400,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,261,,DEF,11945,Add,HP,182166,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,262,,DEF,12024,Add,HP,183932,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,263,,DEF,12103,Add,HP,185698,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,264,,DEF,12182,Add,HP,187464,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,265,,DEF,12261,Add,HP,189230,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,266,,DEF,12340,Add,HP,190996,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,267,,DEF,12419,Add,HP,192762,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,268,,DEF,12498,Add,HP,194528,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,269,,DEF,12577,Add,HP,196294,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,270,,DEF,12656,Add,HP,198060,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,271,,DEF,12735,Add,HP,199826,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,272,,DEF,12814,Add,HP,201592,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,273,,DEF,12893,Add,HP,203358,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,274,,DEF,12972,Add,HP,205124,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,275,,DEF,13051,Add,HP,206890,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,276,,DEF,13130,Add,HP,208656,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,277,,DEF,13209,Add,HP,210422,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,278,,DEF,13288,Add,HP,212188,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,279,,DEF,13367,Add,HP,213954,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,280,,DEF,13446,Add,HP,215720,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,281,,DEF,13525,Add,HP,217486,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,282,,DEF,13604,Add,HP,219252,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,283,,DEF,13683,Add,HP,221018,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,284,,DEF,13762,Add,HP,222784,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,285,,DEF,13841,Add,HP,224550,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,286,,DEF,13920,Add,HP,226316,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,287,,DEF,13999,Add,HP,228082,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,288,,DEF,14078,Add,HP,229848,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,289,,DEF,14157,Add,HP,231614,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,290,,DEF,14236,Add,HP,233380,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,291,,DEF,14315,Add,HP,235146,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,292,,DEF,14394,Add,HP,236912,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,293,,DEF,14473,Add,HP,238678,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,294,,DEF,14552,Add,HP,240444,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,295,,DEF,14631,Add,HP,242210,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,296,,DEF,14710,Add,HP,243976,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,297,,DEF,14789,Add,HP,245742,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,298,,DEF,14868,Add,HP,247508,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,299,,DEF,14947,Add,HP,249274,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,300,,DEF,15026,Add,HP,251040,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,1,1,DEF,101,Add,HP,792,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,2,,DEF,126,Add,HP,944,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,3,,DEF,151,Add,HP,1096,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,4,,DEF,176,Add,HP,1248,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,5,,DEF,201,Add,HP,1400,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,6,,DEF,226,Add,HP,1552,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,7,,DEF,251,Add,HP,1704,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,8,,DEF,276,Add,HP,1856,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,9,,DEF,301,Add,HP,2008,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,10,,DEF,326,Add,HP,2160,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,11,,DEF,351,Add,HP,2312,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,12,,DEF,376,Add,HP,2464,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,13,,DEF,401,Add,HP,2616,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,14,,DEF,426,Add,HP,2768,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,15,,DEF,451,Add,HP,2920,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,16,,DEF,476,Add,HP,3072,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,17,,DEF,501,Add,HP,3224,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,18,,DEF,526,Add,HP,3376,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,19,,DEF,551,Add,HP,3528,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,20,,DEF,576,Add,HP,3680,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,21,,DEF,601,Add,HP,3832,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,22,,DEF,626,Add,HP,3984,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,23,,DEF,651,Add,HP,4136,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,24,,DEF,676,Add,HP,4288,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,25,,DEF,701,Add,HP,4440,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,26,,DEF,726,Add,HP,4592,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,27,,DEF,751,Add,HP,4744,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,28,,DEF,776,Add,HP,4896,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,29,,DEF,801,Add,HP,5048,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,30,,DEF,826,Add,HP,5200,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,31,,DEF,851,Add,HP,5352,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,32,,DEF,876,Add,HP,5504,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,33,,DEF,901,Add,HP,5656,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,34,,DEF,926,Add,HP,5808,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,35,,DEF,951,Add,HP,5960,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,36,,DEF,976,Add,HP,6112,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,37,,DEF,1001,Add,HP,6264,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,38,,DEF,1026,Add,HP,6416,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,39,,DEF,1051,Add,HP,6568,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,40,,DEF,1076,Add,HP,6720,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,41,,DEF,1101,Add,HP,6872,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,42,,DEF,1126,Add,HP,7024,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,43,,DEF,1151,Add,HP,7176,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,44,,DEF,1176,Add,HP,7328,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,45,,DEF,1201,Add,HP,7480,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,46,,DEF,1226,Add,HP,7632,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,47,,DEF,1251,Add,HP,7784,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,48,,DEF,1276,Add,HP,7936,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,49,,DEF,1301,Add,HP,8088,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,50,,DEF,1326,Add,HP,8240,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,51,,DEF,1356,Add,HP,8401,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,52,,DEF,1386,Add,HP,8562,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,53,,DEF,1416,Add,HP,8723,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,54,,DEF,1446,Add,HP,8884,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,55,,DEF,1476,Add,HP,9045,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,56,,DEF,1506,Add,HP,9206,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,57,,DEF,1536,Add,HP,9367,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,58,,DEF,1566,Add,HP,9528,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,59,,DEF,1596,Add,HP,9689,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,60,,DEF,1626,Add,HP,9850,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,61,,DEF,1656,Add,HP,10011,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,62,,DEF,1686,Add,HP,10172,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,63,,DEF,1716,Add,HP,10333,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,64,,DEF,1746,Add,HP,10494,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,65,,DEF,1776,Add,HP,10655,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,66,,DEF,1806,Add,HP,10816,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,67,,DEF,1836,Add,HP,10977,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,68,,DEF,1866,Add,HP,11138,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,69,,DEF,1896,Add,HP,11299,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,70,,DEF,1926,Add,HP,11460,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,71,,DEF,1956,Add,HP,11621,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,72,,DEF,1986,Add,HP,11782,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,73,,DEF,2016,Add,HP,11943,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,74,,DEF,2046,Add,HP,12104,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,75,,DEF,2076,Add,HP,12265,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,76,,DEF,2106,Add,HP,12426,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,77,,DEF,2136,Add,HP,12587,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,78,,DEF,2166,Add,HP,12748,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,79,,DEF,2196,Add,HP,12909,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,80,,DEF,2226,Add,HP,13070,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,81,,DEF,2256,Add,HP,13231,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,82,,DEF,2286,Add,HP,13392,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,83,,DEF,2316,Add,HP,13553,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,84,,DEF,2346,Add,HP,13714,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,85,,DEF,2376,Add,HP,13875,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,86,,DEF,2406,Add,HP,14036,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,87,,DEF,2436,Add,HP,14197,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,88,,DEF,2466,Add,HP,14358,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,89,,DEF,2496,Add,HP,14519,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,90,,DEF,2526,Add,HP,14680,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,91,,DEF,2556,Add,HP,14841,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,92,,DEF,2586,Add,HP,15002,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,93,,DEF,2616,Add,HP,15163,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,94,,DEF,2646,Add,HP,15324,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,95,,DEF,2676,Add,HP,15485,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,96,,DEF,2706,Add,HP,15646,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,97,,DEF,2736,Add,HP,15807,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,98,,DEF,2766,Add,HP,15968,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,99,,DEF,2796,Add,HP,16129,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,100,,DEF,2826,Add,HP,16290,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,101,,DEF,2867,Add,HP,16494,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,102,,DEF,2908,Add,HP,16698,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,103,,DEF,2949,Add,HP,16902,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,104,,DEF,2990,Add,HP,17106,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,105,,DEF,3031,Add,HP,17310,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,106,,DEF,3072,Add,HP,17514,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,107,,DEF,3113,Add,HP,17718,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,108,,DEF,3154,Add,HP,17922,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,109,,DEF,3195,Add,HP,18126,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,110,,DEF,3236,Add,HP,18330,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,111,,DEF,3277,Add,HP,18534,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,112,,DEF,3318,Add,HP,18738,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,113,,DEF,3359,Add,HP,18942,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,114,,DEF,3400,Add,HP,19146,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,115,,DEF,3441,Add,HP,19350,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,116,,DEF,3482,Add,HP,19554,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,117,,DEF,3523,Add,HP,19758,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,118,,DEF,3564,Add,HP,19962,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,119,,DEF,3605,Add,HP,20166,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,120,,DEF,3646,Add,HP,20370,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,121,,DEF,3687,Add,HP,20574,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,122,,DEF,3728,Add,HP,20778,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,123,,DEF,3769,Add,HP,20982,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,124,,DEF,3810,Add,HP,21186,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,125,,DEF,3851,Add,HP,21390,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,126,,DEF,3892,Add,HP,21594,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,127,,DEF,3933,Add,HP,21798,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,128,,DEF,3974,Add,HP,22002,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,129,,DEF,4015,Add,HP,22206,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,130,,DEF,4056,Add,HP,22410,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,131,,DEF,4097,Add,HP,22614,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,132,,DEF,4138,Add,HP,22818,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,133,,DEF,4179,Add,HP,23022,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,134,,DEF,4220,Add,HP,23226,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,135,,DEF,4261,Add,HP,23430,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,136,,DEF,4302,Add,HP,23634,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,137,,DEF,4343,Add,HP,23838,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,138,,DEF,4384,Add,HP,24042,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,139,,DEF,4425,Add,HP,24246,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,140,,DEF,4466,Add,HP,24450,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,141,,DEF,4507,Add,HP,24654,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,142,,DEF,4548,Add,HP,24858,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,143,,DEF,4589,Add,HP,25062,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,144,,DEF,4630,Add,HP,25266,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,145,,DEF,4671,Add,HP,25470,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,146,,DEF,4712,Add,HP,25674,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,147,,DEF,4753,Add,HP,25878,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,148,,DEF,4794,Add,HP,26082,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,149,,DEF,4835,Add,HP,26286,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,150,,DEF,4876,Add,HP,26490,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,151,,DEF,4936,Add,HP,27580,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,152,,DEF,4996,Add,HP,28670,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,153,,DEF,5056,Add,HP,29760,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,154,,DEF,5116,Add,HP,30850,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,155,,DEF,5176,Add,HP,31940,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,156,,DEF,5236,Add,HP,33030,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,157,,DEF,5296,Add,HP,34120,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,158,,DEF,5356,Add,HP,35210,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,159,,DEF,5416,Add,HP,36300,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,160,,DEF,5476,Add,HP,37390,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,161,,DEF,5536,Add,HP,38480,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,162,,DEF,5596,Add,HP,39570,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,163,,DEF,5656,Add,HP,40660,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,164,,DEF,5716,Add,HP,41750,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,165,,DEF,5776,Add,HP,42840,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,166,,DEF,5836,Add,HP,43930,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,167,,DEF,5896,Add,HP,45020,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,168,,DEF,5956,Add,HP,46110,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,169,,DEF,6016,Add,HP,47200,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,170,,DEF,6076,Add,HP,48290,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,171,,DEF,6136,Add,HP,49380,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,172,,DEF,6196,Add,HP,50470,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,173,,DEF,6256,Add,HP,51560,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,174,,DEF,6316,Add,HP,52650,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,175,,DEF,6376,Add,HP,53740,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,176,,DEF,6436,Add,HP,54830,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,177,,DEF,6496,Add,HP,55920,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,178,,DEF,6556,Add,HP,57010,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,179,,DEF,6616,Add,HP,58100,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,180,,DEF,6676,Add,HP,59190,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,181,,DEF,6736,Add,HP,60280,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,182,,DEF,6796,Add,HP,61370,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,183,,DEF,6856,Add,HP,62460,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,184,,DEF,6916,Add,HP,63550,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,185,,DEF,6976,Add,HP,64640,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,186,,DEF,7036,Add,HP,65730,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,187,,DEF,7096,Add,HP,66820,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,188,,DEF,7156,Add,HP,67910,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,189,,DEF,7216,Add,HP,69000,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,190,,DEF,7276,Add,HP,70090,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,191,,DEF,7336,Add,HP,71180,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,192,,DEF,7396,Add,HP,72270,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,193,,DEF,7456,Add,HP,73360,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,194,,DEF,7516,Add,HP,74450,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,195,,DEF,7576,Add,HP,75540,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,196,,DEF,7636,Add,HP,76630,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,197,,DEF,7696,Add,HP,77720,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,198,,DEF,7756,Add,HP,78810,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,199,,DEF,7816,Add,HP,79900,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,200,,DEF,7876,Add,HP,80990,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,201,,DEF,7940,Add,HP,82625,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,202,,DEF,8004,Add,HP,84260,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,203,,DEF,8068,Add,HP,85895,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,204,,DEF,8132,Add,HP,87530,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,205,,DEF,8196,Add,HP,89165,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,206,,DEF,8260,Add,HP,90800,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,207,,DEF,8324,Add,HP,92435,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,208,,DEF,8388,Add,HP,94070,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,209,,DEF,8452,Add,HP,95705,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,210,,DEF,8516,Add,HP,97340,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,211,,DEF,8580,Add,HP,98975,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,212,,DEF,8644,Add,HP,100610,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,213,,DEF,8708,Add,HP,102245,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,214,,DEF,8772,Add,HP,103880,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,215,,DEF,8836,Add,HP,105515,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,216,,DEF,8900,Add,HP,107150,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,217,,DEF,8964,Add,HP,108785,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,218,,DEF,9028,Add,HP,110420,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,219,,DEF,9092,Add,HP,112055,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,220,,DEF,9156,Add,HP,113690,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,221,,DEF,9220,Add,HP,115325,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,222,,DEF,9284,Add,HP,116960,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,223,,DEF,9348,Add,HP,118595,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,224,,DEF,9412,Add,HP,120230,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,225,,DEF,9476,Add,HP,121865,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,226,,DEF,9540,Add,HP,123500,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,227,,DEF,9604,Add,HP,125135,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,228,,DEF,9668,Add,HP,126770,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,229,,DEF,9732,Add,HP,128405,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,230,,DEF,9796,Add,HP,130040,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,231,,DEF,9860,Add,HP,131675,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,232,,DEF,9924,Add,HP,133310,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,233,,DEF,9988,Add,HP,134945,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,234,,DEF,10052,Add,HP,136580,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,235,,DEF,10116,Add,HP,138215,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,236,,DEF,10180,Add,HP,139850,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,237,,DEF,10244,Add,HP,141485,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,238,,DEF,10308,Add,HP,143120,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,239,,DEF,10372,Add,HP,144755,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,240,,DEF,10436,Add,HP,146390,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,241,,DEF,10500,Add,HP,148025,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,242,,DEF,10564,Add,HP,149660,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,243,,DEF,10628,Add,HP,151295,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,244,,DEF,10692,Add,HP,152930,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,245,,DEF,10756,Add,HP,154565,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,246,,DEF,10820,Add,HP,156200,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,247,,DEF,10884,Add,HP,157835,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,248,,DEF,10948,Add,HP,159470,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,249,,DEF,11012,Add,HP,161105,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,250,,DEF,11076,Add,HP,162740,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,251,,DEF,11155,Add,HP,164506,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,252,,DEF,11234,Add,HP,166272,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,253,,DEF,11313,Add,HP,168038,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,254,,DEF,11392,Add,HP,169804,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,255,,DEF,11471,Add,HP,171570,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,256,,DEF,11550,Add,HP,173336,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,257,,DEF,11629,Add,HP,175102,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,258,,DEF,11708,Add,HP,176868,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,259,,DEF,11787,Add,HP,178634,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,260,,DEF,11866,Add,HP,180400,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,261,,DEF,11945,Add,HP,182166,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,262,,DEF,12024,Add,HP,183932,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,263,,DEF,12103,Add,HP,185698,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,264,,DEF,12182,Add,HP,187464,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,265,,DEF,12261,Add,HP,189230,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,266,,DEF,12340,Add,HP,190996,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,267,,DEF,12419,Add,HP,192762,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,268,,DEF,12498,Add,HP,194528,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,269,,DEF,12577,Add,HP,196294,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,270,,DEF,12656,Add,HP,198060,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,271,,DEF,12735,Add,HP,199826,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,272,,DEF,12814,Add,HP,201592,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,273,,DEF,12893,Add,HP,203358,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,274,,DEF,12972,Add,HP,205124,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,275,,DEF,13051,Add,HP,206890,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,276,,DEF,13130,Add,HP,208656,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,277,,DEF,13209,Add,HP,210422,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,278,,DEF,13288,Add,HP,212188,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,279,,DEF,13367,Add,HP,213954,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,280,,DEF,13446,Add,HP,215720,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,281,,DEF,13525,Add,HP,217486,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,282,,DEF,13604,Add,HP,219252,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,283,,DEF,13683,Add,HP,221018,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,284,,DEF,13762,Add,HP,222784,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,285,,DEF,13841,Add,HP,224550,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,286,,DEF,13920,Add,HP,226316,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,287,,DEF,13999,Add,HP,228082,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,288,,DEF,14078,Add,HP,229848,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,289,,DEF,14157,Add,HP,231614,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,290,,DEF,14236,Add,HP,233380,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,291,,DEF,14315,Add,HP,235146,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,292,,DEF,14394,Add,HP,236912,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,293,,DEF,14473,Add,HP,238678,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,294,,DEF,14552,Add,HP,240444,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,295,,DEF,14631,Add,HP,242210,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,296,,DEF,14710,Add,HP,243976,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,297,,DEF,14789,Add,HP,245742,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,298,,DEF,14868,Add,HP,247508,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,299,,DEF,14947,Add,HP,249274,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,300,,DEF,15026,Add,HP,251040,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,1,1,HP,724,Add,HIT,249,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,2,,HP,914,Add,HIT,306,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,3,,HP,1104,Add,HIT,363,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,4,,HP,1294,Add,HIT,420,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,5,,HP,1484,Add,HIT,477,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,6,,HP,1674,Add,HIT,534,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,7,,HP,1864,Add,HIT,591,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,8,,HP,2054,Add,HIT,648,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,9,,HP,2244,Add,HIT,705,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,10,,HP,2434,Add,HIT,762,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,11,,HP,2624,Add,HIT,819,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,12,,HP,2814,Add,HIT,876,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,13,,HP,3004,Add,HIT,933,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,14,,HP,3194,Add,HIT,990,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,15,,HP,3384,Add,HIT,1047,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,16,,HP,3574,Add,HIT,1104,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,17,,HP,3764,Add,HIT,1161,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,18,,HP,3954,Add,HIT,1218,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,19,,HP,4144,Add,HIT,1275,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,20,,HP,4334,Add,HIT,1332,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,21,,HP,4524,Add,HIT,1389,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,22,,HP,4714,Add,HIT,1446,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,23,,HP,4904,Add,HIT,1503,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,24,,HP,5094,Add,HIT,1560,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,25,,HP,5284,Add,HIT,1617,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,26,,HP,5474,Add,HIT,1674,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,27,,HP,5664,Add,HIT,1731,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,28,,HP,5854,Add,HIT,1788,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,29,,HP,6044,Add,HIT,1845,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,30,,HP,6234,Add,HIT,1902,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,31,,HP,6424,Add,HIT,1959,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,32,,HP,6614,Add,HIT,2016,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,33,,HP,6804,Add,HIT,2073,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,34,,HP,6994,Add,HIT,2130,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,35,,HP,7184,Add,HIT,2187,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,36,,HP,7374,Add,HIT,2244,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,37,,HP,7564,Add,HIT,2301,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,38,,HP,7754,Add,HIT,2358,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,39,,HP,7944,Add,HIT,2415,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,40,,HP,8134,Add,HIT,2472,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,41,,HP,8324,Add,HIT,2529,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,42,,HP,8514,Add,HIT,2586,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,43,,HP,8704,Add,HIT,2643,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,44,,HP,8894,Add,HIT,2700,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,45,,HP,9084,Add,HIT,2757,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,46,,HP,9274,Add,HIT,2814,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,47,,HP,9464,Add,HIT,2871,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,48,,HP,9654,Add,HIT,2928,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,49,,HP,9844,Add,HIT,2985,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,50,,HP,10034,Add,HIT,3042,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,51,,HP,10235,Add,HIT,3132,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,52,,HP,10436,Add,HIT,3222,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,53,,HP,10637,Add,HIT,3312,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,54,,HP,10838,Add,HIT,3402,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,55,,HP,11039,Add,HIT,3492,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,56,,HP,11240,Add,HIT,3582,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,57,,HP,11441,Add,HIT,3672,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,58,,HP,11642,Add,HIT,3762,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,59,,HP,11843,Add,HIT,3852,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,60,,HP,12044,Add,HIT,3942,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,61,,HP,12245,Add,HIT,4032,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,62,,HP,12446,Add,HIT,4122,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,63,,HP,12647,Add,HIT,4212,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,64,,HP,12848,Add,HIT,4302,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,65,,HP,13049,Add,HIT,4392,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,66,,HP,13250,Add,HIT,4482,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,67,,HP,13451,Add,HIT,4572,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,68,,HP,13652,Add,HIT,4662,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,69,,HP,13853,Add,HIT,4752,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,70,,HP,14054,Add,HIT,4842,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,71,,HP,14255,Add,HIT,4932,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,72,,HP,14456,Add,HIT,5022,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,73,,HP,14657,Add,HIT,5112,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,74,,HP,14858,Add,HIT,5202,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,75,,HP,15059,Add,HIT,5292,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,76,,HP,15260,Add,HIT,5382,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,77,,HP,15461,Add,HIT,5472,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,78,,HP,15662,Add,HIT,5562,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,79,,HP,15863,Add,HIT,5652,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,80,,HP,16064,Add,HIT,5742,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,81,,HP,16265,Add,HIT,5832,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,82,,HP,16466,Add,HIT,5922,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,83,,HP,16667,Add,HIT,6012,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,84,,HP,16868,Add,HIT,6102,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,85,,HP,17069,Add,HIT,6192,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,86,,HP,17270,Add,HIT,6282,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,87,,HP,17471,Add,HIT,6372,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,88,,HP,17672,Add,HIT,6462,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,89,,HP,17873,Add,HIT,6552,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,90,,HP,18074,Add,HIT,6642,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,91,,HP,18275,Add,HIT,6732,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,92,,HP,18476,Add,HIT,6822,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,93,,HP,18677,Add,HIT,6912,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,94,,HP,18878,Add,HIT,7002,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,95,,HP,19079,Add,HIT,7092,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,96,,HP,19280,Add,HIT,7182,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,97,,HP,19481,Add,HIT,7272,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,98,,HP,19682,Add,HIT,7362,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,99,,HP,19883,Add,HIT,7452,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,100,,HP,20084,Add,HIT,7542,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,101,,HP,20339,Add,HIT,7653,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,102,,HP,20594,Add,HIT,7764,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,103,,HP,20849,Add,HIT,7875,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,104,,HP,21104,Add,HIT,7986,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,105,,HP,21359,Add,HIT,8097,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,106,,HP,21614,Add,HIT,8208,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,107,,HP,21869,Add,HIT,8319,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,108,,HP,22124,Add,HIT,8430,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,109,,HP,22379,Add,HIT,8541,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,110,,HP,22634,Add,HIT,8652,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,111,,HP,22889,Add,HIT,8763,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,112,,HP,23144,Add,HIT,8874,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,113,,HP,23399,Add,HIT,8985,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,114,,HP,23654,Add,HIT,9096,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,115,,HP,23909,Add,HIT,9207,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,116,,HP,24164,Add,HIT,9318,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,117,,HP,24419,Add,HIT,9429,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,118,,HP,24674,Add,HIT,9540,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,119,,HP,24929,Add,HIT,9651,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,120,,HP,25184,Add,HIT,9762,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,121,,HP,25439,Add,HIT,9873,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,122,,HP,25694,Add,HIT,9984,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,123,,HP,25949,Add,HIT,10095,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,124,,HP,26204,Add,HIT,10206,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,125,,HP,26459,Add,HIT,10317,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,126,,HP,26714,Add,HIT,10428,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,127,,HP,26969,Add,HIT,10539,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,128,,HP,27224,Add,HIT,10650,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,129,,HP,27479,Add,HIT,10761,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,130,,HP,27734,Add,HIT,10872,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,131,,HP,27989,Add,HIT,10983,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,132,,HP,28244,Add,HIT,11094,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,133,,HP,28499,Add,HIT,11205,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,134,,HP,28754,Add,HIT,11316,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,135,,HP,29009,Add,HIT,11427,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,136,,HP,29264,Add,HIT,11538,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,137,,HP,29519,Add,HIT,11649,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,138,,HP,29774,Add,HIT,11760,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,139,,HP,30029,Add,HIT,11871,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,140,,HP,30284,Add,HIT,11982,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,141,,HP,30539,Add,HIT,12093,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,142,,HP,30794,Add,HIT,12204,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,143,,HP,31049,Add,HIT,12315,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,144,,HP,31304,Add,HIT,12426,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,145,,HP,31559,Add,HIT,12537,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,146,,HP,31814,Add,HIT,12648,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,147,,HP,32069,Add,HIT,12759,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,148,,HP,32324,Add,HIT,12870,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,149,,HP,32579,Add,HIT,12981,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,150,,HP,32834,Add,HIT,13092,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,151,,HP,34196,Add,HIT,13227,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,152,,HP,35558,Add,HIT,13362,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,153,,HP,36920,Add,HIT,13497,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,154,,HP,38282,Add,HIT,13632,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,155,,HP,39644,Add,HIT,13767,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,156,,HP,41006,Add,HIT,13902,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,157,,HP,42368,Add,HIT,14037,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,158,,HP,43730,Add,HIT,14172,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,159,,HP,45092,Add,HIT,14307,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,160,,HP,46454,Add,HIT,14442,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,161,,HP,47816,Add,HIT,14577,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,162,,HP,49178,Add,HIT,14712,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,163,,HP,50540,Add,HIT,14847,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,164,,HP,51902,Add,HIT,14982,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,165,,HP,53264,Add,HIT,15117,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,166,,HP,54626,Add,HIT,15252,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,167,,HP,55988,Add,HIT,15387,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,168,,HP,57350,Add,HIT,15522,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,169,,HP,58712,Add,HIT,15657,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,170,,HP,60074,Add,HIT,15792,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,171,,HP,61436,Add,HIT,15927,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,172,,HP,62798,Add,HIT,16062,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,173,,HP,64160,Add,HIT,16197,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,174,,HP,65522,Add,HIT,16332,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,175,,HP,66884,Add,HIT,16467,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,176,,HP,68246,Add,HIT,16602,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,177,,HP,69608,Add,HIT,16737,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,178,,HP,70970,Add,HIT,16872,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,179,,HP,72332,Add,HIT,17007,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,180,,HP,73694,Add,HIT,17142,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,181,,HP,75056,Add,HIT,17277,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,182,,HP,76418,Add,HIT,17412,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,183,,HP,77780,Add,HIT,17547,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,184,,HP,79142,Add,HIT,17682,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,185,,HP,80504,Add,HIT,17817,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,186,,HP,81866,Add,HIT,17952,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,187,,HP,83228,Add,HIT,18087,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,188,,HP,84590,Add,HIT,18222,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,189,,HP,85952,Add,HIT,18357,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,190,,HP,87314,Add,HIT,18492,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,191,,HP,88676,Add,HIT,18627,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,192,,HP,90038,Add,HIT,18762,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,193,,HP,91400,Add,HIT,18897,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,194,,HP,92762,Add,HIT,19032,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,195,,HP,94124,Add,HIT,19167,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,196,,HP,95486,Add,HIT,19302,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,197,,HP,96848,Add,HIT,19437,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,198,,HP,98210,Add,HIT,19572,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,199,,HP,99572,Add,HIT,19707,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,200,,HP,100934,Add,HIT,19842,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,201,,HP,102978,Add,HIT,19984,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,202,,HP,105022,Add,HIT,20126,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,203,,HP,107066,Add,HIT,20268,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,204,,HP,109110,Add,HIT,20410,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,205,,HP,111154,Add,HIT,20552,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,206,,HP,113198,Add,HIT,20694,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,207,,HP,115242,Add,HIT,20836,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,208,,HP,117286,Add,HIT,20978,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,209,,HP,119330,Add,HIT,21120,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,210,,HP,121374,Add,HIT,21262,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,211,,HP,123418,Add,HIT,21404,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,212,,HP,125462,Add,HIT,21546,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,213,,HP,127506,Add,HIT,21688,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,214,,HP,129550,Add,HIT,21830,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,215,,HP,131594,Add,HIT,21972,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,216,,HP,133638,Add,HIT,22114,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,217,,HP,135682,Add,HIT,22256,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,218,,HP,137726,Add,HIT,22398,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,219,,HP,139770,Add,HIT,22540,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,220,,HP,141814,Add,HIT,22682,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,221,,HP,143858,Add,HIT,22824,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,222,,HP,145902,Add,HIT,22966,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,223,,HP,147946,Add,HIT,23108,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,224,,HP,149990,Add,HIT,23250,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,225,,HP,152034,Add,HIT,23392,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,226,,HP,154078,Add,HIT,23534,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,227,,HP,156122,Add,HIT,23676,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,228,,HP,158166,Add,HIT,23818,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,229,,HP,160210,Add,HIT,23960,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,230,,HP,162254,Add,HIT,24102,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,231,,HP,164298,Add,HIT,24244,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,232,,HP,166342,Add,HIT,24386,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,233,,HP,168386,Add,HIT,24528,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,234,,HP,170430,Add,HIT,24670,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,235,,HP,172474,Add,HIT,24812,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,236,,HP,174518,Add,HIT,24954,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,237,,HP,176562,Add,HIT,25096,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,238,,HP,178606,Add,HIT,25238,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,239,,HP,180650,Add,HIT,25380,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,240,,HP,182694,Add,HIT,25522,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,241,,HP,184738,Add,HIT,25664,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,242,,HP,186782,Add,HIT,25806,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,243,,HP,188826,Add,HIT,25948,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,244,,HP,190870,Add,HIT,26090,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,245,,HP,192914,Add,HIT,26232,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,246,,HP,194958,Add,HIT,26374,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,247,,HP,197002,Add,HIT,26516,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,248,,HP,199046,Add,HIT,26658,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,249,,HP,201090,Add,HIT,26800,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,250,,HP,203134,Add,HIT,26942,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,251,,HP,205342,Add,HIT,27095,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,252,,HP,207550,Add,HIT,27248,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,253,,HP,209758,Add,HIT,27401,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,254,,HP,211966,Add,HIT,27554,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,255,,HP,214174,Add,HIT,27707,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,256,,HP,216382,Add,HIT,27860,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,257,,HP,218590,Add,HIT,28013,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,258,,HP,220798,Add,HIT,28166,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,259,,HP,223006,Add,HIT,28319,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,260,,HP,225214,Add,HIT,28472,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,261,,HP,227422,Add,HIT,28625,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,262,,HP,229630,Add,HIT,28778,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,263,,HP,231838,Add,HIT,28931,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,264,,HP,234046,Add,HIT,29084,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,265,,HP,236254,Add,HIT,29237,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,266,,HP,238462,Add,HIT,29390,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,267,,HP,240670,Add,HIT,29543,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,268,,HP,242878,Add,HIT,29696,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,269,,HP,245086,Add,HIT,29849,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,270,,HP,247294,Add,HIT,30002,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,271,,HP,249502,Add,HIT,30155,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,272,,HP,251710,Add,HIT,30308,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,273,,HP,253918,Add,HIT,30461,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,274,,HP,256126,Add,HIT,30614,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,275,,HP,258334,Add,HIT,30767,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,276,,HP,260542,Add,HIT,30920,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,277,,HP,262750,Add,HIT,31073,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,278,,HP,264958,Add,HIT,31226,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,279,,HP,267166,Add,HIT,31379,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,280,,HP,269374,Add,HIT,31532,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,281,,HP,271582,Add,HIT,31685,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,282,,HP,273790,Add,HIT,31838,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,283,,HP,275998,Add,HIT,31991,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,284,,HP,278206,Add,HIT,32144,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,285,,HP,280414,Add,HIT,32297,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,286,,HP,282622,Add,HIT,32450,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,287,,HP,284830,Add,HIT,32603,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,288,,HP,287038,Add,HIT,32756,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,289,,HP,289246,Add,HIT,32909,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,290,,HP,291454,Add,HIT,33062,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,291,,HP,293662,Add,HIT,33215,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,292,,HP,295870,Add,HIT,33368,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,293,,HP,298078,Add,HIT,33521,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,294,,HP,300286,Add,HIT,33674,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,295,,HP,302494,Add,HIT,33827,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,296,,HP,304702,Add,HIT,33980,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,297,,HP,306910,Add,HIT,34133,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,298,,HP,309118,Add,HIT,34286,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,299,,HP,311326,Add,HIT,34439,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,300,,HP,313534,Add,HIT,34592,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,1,1,HP,724,Add,HIT,249,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,2,,HP,914,Add,HIT,306,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,3,,HP,1104,Add,HIT,363,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,4,,HP,1294,Add,HIT,420,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,5,,HP,1484,Add,HIT,477,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,6,,HP,1674,Add,HIT,534,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,7,,HP,1864,Add,HIT,591,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,8,,HP,2054,Add,HIT,648,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,9,,HP,2244,Add,HIT,705,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,10,,HP,2434,Add,HIT,762,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,11,,HP,2624,Add,HIT,819,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,12,,HP,2814,Add,HIT,876,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,13,,HP,3004,Add,HIT,933,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,14,,HP,3194,Add,HIT,990,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,15,,HP,3384,Add,HIT,1047,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,16,,HP,3574,Add,HIT,1104,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,17,,HP,3764,Add,HIT,1161,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,18,,HP,3954,Add,HIT,1218,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,19,,HP,4144,Add,HIT,1275,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,20,,HP,4334,Add,HIT,1332,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,21,,HP,4524,Add,HIT,1389,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,22,,HP,4714,Add,HIT,1446,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,23,,HP,4904,Add,HIT,1503,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,24,,HP,5094,Add,HIT,1560,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,25,,HP,5284,Add,HIT,1617,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,26,,HP,5474,Add,HIT,1674,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,27,,HP,5664,Add,HIT,1731,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,28,,HP,5854,Add,HIT,1788,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,29,,HP,6044,Add,HIT,1845,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,30,,HP,6234,Add,HIT,1902,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,31,,HP,6424,Add,HIT,1959,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,32,,HP,6614,Add,HIT,2016,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,33,,HP,6804,Add,HIT,2073,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,34,,HP,6994,Add,HIT,2130,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,35,,HP,7184,Add,HIT,2187,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,36,,HP,7374,Add,HIT,2244,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,37,,HP,7564,Add,HIT,2301,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,38,,HP,7754,Add,HIT,2358,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,39,,HP,7944,Add,HIT,2415,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,40,,HP,8134,Add,HIT,2472,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,41,,HP,8324,Add,HIT,2529,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,42,,HP,8514,Add,HIT,2586,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,43,,HP,8704,Add,HIT,2643,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,44,,HP,8894,Add,HIT,2700,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,45,,HP,9084,Add,HIT,2757,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,46,,HP,9274,Add,HIT,2814,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,47,,HP,9464,Add,HIT,2871,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,48,,HP,9654,Add,HIT,2928,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,49,,HP,9844,Add,HIT,2985,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,50,,HP,10034,Add,HIT,3042,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,51,,HP,10235,Add,HIT,3132,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,52,,HP,10436,Add,HIT,3222,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,53,,HP,10637,Add,HIT,3312,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,54,,HP,10838,Add,HIT,3402,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,55,,HP,11039,Add,HIT,3492,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,56,,HP,11240,Add,HIT,3582,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,57,,HP,11441,Add,HIT,3672,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,58,,HP,11642,Add,HIT,3762,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,59,,HP,11843,Add,HIT,3852,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,60,,HP,12044,Add,HIT,3942,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,61,,HP,12245,Add,HIT,4032,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,62,,HP,12446,Add,HIT,4122,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,63,,HP,12647,Add,HIT,4212,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,64,,HP,12848,Add,HIT,4302,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,65,,HP,13049,Add,HIT,4392,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,66,,HP,13250,Add,HIT,4482,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,67,,HP,13451,Add,HIT,4572,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,68,,HP,13652,Add,HIT,4662,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,69,,HP,13853,Add,HIT,4752,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,70,,HP,14054,Add,HIT,4842,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,71,,HP,14255,Add,HIT,4932,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,72,,HP,14456,Add,HIT,5022,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,73,,HP,14657,Add,HIT,5112,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,74,,HP,14858,Add,HIT,5202,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,75,,HP,15059,Add,HIT,5292,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,76,,HP,15260,Add,HIT,5382,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,77,,HP,15461,Add,HIT,5472,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,78,,HP,15662,Add,HIT,5562,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,79,,HP,15863,Add,HIT,5652,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,80,,HP,16064,Add,HIT,5742,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,81,,HP,16265,Add,HIT,5832,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,82,,HP,16466,Add,HIT,5922,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,83,,HP,16667,Add,HIT,6012,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,84,,HP,16868,Add,HIT,6102,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,85,,HP,17069,Add,HIT,6192,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,86,,HP,17270,Add,HIT,6282,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,87,,HP,17471,Add,HIT,6372,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,88,,HP,17672,Add,HIT,6462,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,89,,HP,17873,Add,HIT,6552,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,90,,HP,18074,Add,HIT,6642,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,91,,HP,18275,Add,HIT,6732,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,92,,HP,18476,Add,HIT,6822,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,93,,HP,18677,Add,HIT,6912,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,94,,HP,18878,Add,HIT,7002,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,95,,HP,19079,Add,HIT,7092,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,96,,HP,19280,Add,HIT,7182,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,97,,HP,19481,Add,HIT,7272,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,98,,HP,19682,Add,HIT,7362,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,99,,HP,19883,Add,HIT,7452,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,100,,HP,20084,Add,HIT,7542,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,101,,HP,20339,Add,HIT,7653,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,102,,HP,20594,Add,HIT,7764,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,103,,HP,20849,Add,HIT,7875,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,104,,HP,21104,Add,HIT,7986,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,105,,HP,21359,Add,HIT,8097,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,106,,HP,21614,Add,HIT,8208,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,107,,HP,21869,Add,HIT,8319,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,108,,HP,22124,Add,HIT,8430,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,109,,HP,22379,Add,HIT,8541,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,110,,HP,22634,Add,HIT,8652,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,111,,HP,22889,Add,HIT,8763,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,112,,HP,23144,Add,HIT,8874,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,113,,HP,23399,Add,HIT,8985,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,114,,HP,23654,Add,HIT,9096,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,115,,HP,23909,Add,HIT,9207,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,116,,HP,24164,Add,HIT,9318,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,117,,HP,24419,Add,HIT,9429,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,118,,HP,24674,Add,HIT,9540,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,119,,HP,24929,Add,HIT,9651,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,120,,HP,25184,Add,HIT,9762,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,121,,HP,25439,Add,HIT,9873,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,122,,HP,25694,Add,HIT,9984,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,123,,HP,25949,Add,HIT,10095,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,124,,HP,26204,Add,HIT,10206,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,125,,HP,26459,Add,HIT,10317,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,126,,HP,26714,Add,HIT,10428,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,127,,HP,26969,Add,HIT,10539,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,128,,HP,27224,Add,HIT,10650,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,129,,HP,27479,Add,HIT,10761,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,130,,HP,27734,Add,HIT,10872,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,131,,HP,27989,Add,HIT,10983,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,132,,HP,28244,Add,HIT,11094,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,133,,HP,28499,Add,HIT,11205,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,134,,HP,28754,Add,HIT,11316,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,135,,HP,29009,Add,HIT,11427,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,136,,HP,29264,Add,HIT,11538,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,137,,HP,29519,Add,HIT,11649,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,138,,HP,29774,Add,HIT,11760,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,139,,HP,30029,Add,HIT,11871,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,140,,HP,30284,Add,HIT,11982,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,141,,HP,30539,Add,HIT,12093,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,142,,HP,30794,Add,HIT,12204,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,143,,HP,31049,Add,HIT,12315,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,144,,HP,31304,Add,HIT,12426,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,145,,HP,31559,Add,HIT,12537,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,146,,HP,31814,Add,HIT,12648,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,147,,HP,32069,Add,HIT,12759,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,148,,HP,32324,Add,HIT,12870,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,149,,HP,32579,Add,HIT,12981,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,150,,HP,32834,Add,HIT,13092,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,151,,HP,34196,Add,HIT,13227,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,152,,HP,35558,Add,HIT,13362,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,153,,HP,36920,Add,HIT,13497,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,154,,HP,38282,Add,HIT,13632,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,155,,HP,39644,Add,HIT,13767,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,156,,HP,41006,Add,HIT,13902,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,157,,HP,42368,Add,HIT,14037,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,158,,HP,43730,Add,HIT,14172,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,159,,HP,45092,Add,HIT,14307,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,160,,HP,46454,Add,HIT,14442,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,161,,HP,47816,Add,HIT,14577,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,162,,HP,49178,Add,HIT,14712,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,163,,HP,50540,Add,HIT,14847,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,164,,HP,51902,Add,HIT,14982,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,165,,HP,53264,Add,HIT,15117,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,166,,HP,54626,Add,HIT,15252,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,167,,HP,55988,Add,HIT,15387,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,168,,HP,57350,Add,HIT,15522,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,169,,HP,58712,Add,HIT,15657,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,170,,HP,60074,Add,HIT,15792,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,171,,HP,61436,Add,HIT,15927,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,172,,HP,62798,Add,HIT,16062,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,173,,HP,64160,Add,HIT,16197,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,174,,HP,65522,Add,HIT,16332,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,175,,HP,66884,Add,HIT,16467,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,176,,HP,68246,Add,HIT,16602,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,177,,HP,69608,Add,HIT,16737,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,178,,HP,70970,Add,HIT,16872,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,179,,HP,72332,Add,HIT,17007,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,180,,HP,73694,Add,HIT,17142,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,181,,HP,75056,Add,HIT,17277,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,182,,HP,76418,Add,HIT,17412,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,183,,HP,77780,Add,HIT,17547,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,184,,HP,79142,Add,HIT,17682,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,185,,HP,80504,Add,HIT,17817,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,186,,HP,81866,Add,HIT,17952,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,187,,HP,83228,Add,HIT,18087,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,188,,HP,84590,Add,HIT,18222,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,189,,HP,85952,Add,HIT,18357,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,190,,HP,87314,Add,HIT,18492,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,191,,HP,88676,Add,HIT,18627,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,192,,HP,90038,Add,HIT,18762,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,193,,HP,91400,Add,HIT,18897,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,194,,HP,92762,Add,HIT,19032,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,195,,HP,94124,Add,HIT,19167,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,196,,HP,95486,Add,HIT,19302,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,197,,HP,96848,Add,HIT,19437,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,198,,HP,98210,Add,HIT,19572,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,199,,HP,99572,Add,HIT,19707,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,200,,HP,100934,Add,HIT,19842,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,201,,HP,102978,Add,HIT,19984,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,202,,HP,105022,Add,HIT,20126,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,203,,HP,107066,Add,HIT,20268,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,204,,HP,109110,Add,HIT,20410,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,205,,HP,111154,Add,HIT,20552,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,206,,HP,113198,Add,HIT,20694,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,207,,HP,115242,Add,HIT,20836,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,208,,HP,117286,Add,HIT,20978,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,209,,HP,119330,Add,HIT,21120,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,210,,HP,121374,Add,HIT,21262,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,211,,HP,123418,Add,HIT,21404,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,212,,HP,125462,Add,HIT,21546,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,213,,HP,127506,Add,HIT,21688,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,214,,HP,129550,Add,HIT,21830,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,215,,HP,131594,Add,HIT,21972,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,216,,HP,133638,Add,HIT,22114,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,217,,HP,135682,Add,HIT,22256,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,218,,HP,137726,Add,HIT,22398,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,219,,HP,139770,Add,HIT,22540,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,220,,HP,141814,Add,HIT,22682,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,221,,HP,143858,Add,HIT,22824,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,222,,HP,145902,Add,HIT,22966,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,223,,HP,147946,Add,HIT,23108,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,224,,HP,149990,Add,HIT,23250,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,225,,HP,152034,Add,HIT,23392,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,226,,HP,154078,Add,HIT,23534,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,227,,HP,156122,Add,HIT,23676,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,228,,HP,158166,Add,HIT,23818,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,229,,HP,160210,Add,HIT,23960,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,230,,HP,162254,Add,HIT,24102,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,231,,HP,164298,Add,HIT,24244,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,232,,HP,166342,Add,HIT,24386,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,233,,HP,168386,Add,HIT,24528,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,234,,HP,170430,Add,HIT,24670,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,235,,HP,172474,Add,HIT,24812,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,236,,HP,174518,Add,HIT,24954,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,237,,HP,176562,Add,HIT,25096,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,238,,HP,178606,Add,HIT,25238,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,239,,HP,180650,Add,HIT,25380,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,240,,HP,182694,Add,HIT,25522,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,241,,HP,184738,Add,HIT,25664,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,242,,HP,186782,Add,HIT,25806,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,243,,HP,188826,Add,HIT,25948,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,244,,HP,190870,Add,HIT,26090,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,245,,HP,192914,Add,HIT,26232,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,246,,HP,194958,Add,HIT,26374,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,247,,HP,197002,Add,HIT,26516,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,248,,HP,199046,Add,HIT,26658,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,249,,HP,201090,Add,HIT,26800,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,250,,HP,203134,Add,HIT,26942,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,251,,HP,205342,Add,HIT,27095,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,252,,HP,207550,Add,HIT,27248,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,253,,HP,209758,Add,HIT,27401,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,254,,HP,211966,Add,HIT,27554,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,255,,HP,214174,Add,HIT,27707,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,256,,HP,216382,Add,HIT,27860,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,257,,HP,218590,Add,HIT,28013,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,258,,HP,220798,Add,HIT,28166,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,259,,HP,223006,Add,HIT,28319,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,260,,HP,225214,Add,HIT,28472,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,261,,HP,227422,Add,HIT,28625,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,262,,HP,229630,Add,HIT,28778,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,263,,HP,231838,Add,HIT,28931,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,264,,HP,234046,Add,HIT,29084,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,265,,HP,236254,Add,HIT,29237,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,266,,HP,238462,Add,HIT,29390,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,267,,HP,240670,Add,HIT,29543,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,268,,HP,242878,Add,HIT,29696,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,269,,HP,245086,Add,HIT,29849,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,270,,HP,247294,Add,HIT,30002,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,271,,HP,249502,Add,HIT,30155,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,272,,HP,251710,Add,HIT,30308,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,273,,HP,253918,Add,HIT,30461,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,274,,HP,256126,Add,HIT,30614,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,275,,HP,258334,Add,HIT,30767,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,276,,HP,260542,Add,HIT,30920,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,277,,HP,262750,Add,HIT,31073,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,278,,HP,264958,Add,HIT,31226,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,279,,HP,267166,Add,HIT,31379,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,280,,HP,269374,Add,HIT,31532,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,281,,HP,271582,Add,HIT,31685,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,282,,HP,273790,Add,HIT,31838,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,283,,HP,275998,Add,HIT,31991,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,284,,HP,278206,Add,HIT,32144,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,285,,HP,280414,Add,HIT,32297,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,286,,HP,282622,Add,HIT,32450,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,287,,HP,284830,Add,HIT,32603,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,288,,HP,287038,Add,HIT,32756,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,289,,HP,289246,Add,HIT,32909,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,290,,HP,291454,Add,HIT,33062,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,291,,HP,293662,Add,HIT,33215,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,292,,HP,295870,Add,HIT,33368,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,293,,HP,298078,Add,HIT,33521,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,294,,HP,300286,Add,HIT,33674,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,295,,HP,302494,Add,HIT,33827,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,296,,HP,304702,Add,HIT,33980,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,297,,HP,306910,Add,HIT,34133,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,298,,HP,309118,Add,HIT,34286,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,299,,HP,311326,Add,HIT,34439,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,300,,HP,313534,Add,HIT,34592,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,1,1,ATK,188,Add,SPD,105,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,2,,ATK,210,Add,SPD,120,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,3,,ATK,232,Add,SPD,135,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,4,,ATK,254,Add,SPD,150,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,5,,ATK,276,Add,SPD,165,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,6,,ATK,298,Add,SPD,180,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,7,,ATK,320,Add,SPD,195,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,8,,ATK,342,Add,SPD,210,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,9,,ATK,364,Add,SPD,225,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,10,,ATK,386,Add,SPD,240,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,11,,ATK,408,Add,SPD,255,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,12,,ATK,430,Add,SPD,270,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,13,,ATK,452,Add,SPD,285,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,14,,ATK,474,Add,SPD,300,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,15,,ATK,496,Add,SPD,315,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,16,,ATK,518,Add,SPD,330,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,17,,ATK,540,Add,SPD,345,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,18,,ATK,562,Add,SPD,360,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,19,,ATK,584,Add,SPD,375,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,20,,ATK,606,Add,SPD,390,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,21,,ATK,628,Add,SPD,405,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,22,,ATK,650,Add,SPD,420,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,23,,ATK,672,Add,SPD,435,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,24,,ATK,694,Add,SPD,450,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,25,,ATK,716,Add,SPD,465,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,26,,ATK,738,Add,SPD,480,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,27,,ATK,760,Add,SPD,495,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,28,,ATK,782,Add,SPD,510,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,29,,ATK,804,Add,SPD,525,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,30,,ATK,826,Add,SPD,540,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,31,,ATK,848,Add,SPD,555,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,32,,ATK,870,Add,SPD,570,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,33,,ATK,892,Add,SPD,585,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,34,,ATK,914,Add,SPD,600,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,35,,ATK,936,Add,SPD,615,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,36,,ATK,958,Add,SPD,630,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,37,,ATK,980,Add,SPD,645,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,38,,ATK,1002,Add,SPD,660,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,39,,ATK,1024,Add,SPD,675,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,40,,ATK,1046,Add,SPD,690,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,41,,ATK,1068,Add,SPD,705,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,42,,ATK,1090,Add,SPD,720,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,43,,ATK,1112,Add,SPD,735,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,44,,ATK,1134,Add,SPD,750,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,45,,ATK,1156,Add,SPD,765,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,46,,ATK,1178,Add,SPD,780,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,47,,ATK,1200,Add,SPD,795,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,48,,ATK,1222,Add,SPD,810,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,49,,ATK,1244,Add,SPD,825,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,50,,ATK,1266,Add,SPD,840,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,51,,ATK,1298,Add,SPD,876,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,52,,ATK,1330,Add,SPD,912,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,53,,ATK,1362,Add,SPD,948,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,54,,ATK,1394,Add,SPD,984,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,55,,ATK,1426,Add,SPD,1020,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,56,,ATK,1458,Add,SPD,1056,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,57,,ATK,1490,Add,SPD,1092,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,58,,ATK,1522,Add,SPD,1128,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,59,,ATK,1554,Add,SPD,1164,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,60,,ATK,1586,Add,SPD,1200,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,61,,ATK,1618,Add,SPD,1236,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,62,,ATK,1650,Add,SPD,1272,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,63,,ATK,1682,Add,SPD,1308,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,64,,ATK,1714,Add,SPD,1344,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,65,,ATK,1746,Add,SPD,1380,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,66,,ATK,1778,Add,SPD,1416,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,67,,ATK,1810,Add,SPD,1452,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,68,,ATK,1842,Add,SPD,1488,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,69,,ATK,1874,Add,SPD,1524,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,70,,ATK,1906,Add,SPD,1560,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,71,,ATK,1938,Add,SPD,1596,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,72,,ATK,1970,Add,SPD,1632,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,73,,ATK,2002,Add,SPD,1668,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,74,,ATK,2034,Add,SPD,1704,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,75,,ATK,2066,Add,SPD,1740,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,76,,ATK,2098,Add,SPD,1776,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,77,,ATK,2130,Add,SPD,1812,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,78,,ATK,2162,Add,SPD,1848,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,79,,ATK,2194,Add,SPD,1884,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,80,,ATK,2226,Add,SPD,1920,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,81,,ATK,2258,Add,SPD,1956,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,82,,ATK,2290,Add,SPD,1992,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,83,,ATK,2322,Add,SPD,2028,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,84,,ATK,2354,Add,SPD,2064,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,85,,ATK,2386,Add,SPD,2100,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,86,,ATK,2418,Add,SPD,2136,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,87,,ATK,2450,Add,SPD,2172,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,88,,ATK,2482,Add,SPD,2208,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,89,,ATK,2514,Add,SPD,2244,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,90,,ATK,2546,Add,SPD,2280,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,91,,ATK,2578,Add,SPD,2316,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,92,,ATK,2610,Add,SPD,2352,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,93,,ATK,2642,Add,SPD,2388,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,94,,ATK,2674,Add,SPD,2424,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,95,,ATK,2706,Add,SPD,2460,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,96,,ATK,2738,Add,SPD,2496,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,97,,ATK,2770,Add,SPD,2532,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,98,,ATK,2802,Add,SPD,2568,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,99,,ATK,2834,Add,SPD,2604,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,100,,ATK,2866,Add,SPD,2640,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,101,,ATK,2918,Add,SPD,2681,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,102,,ATK,2970,Add,SPD,2722,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,103,,ATK,3022,Add,SPD,2763,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,104,,ATK,3074,Add,SPD,2804,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,105,,ATK,3126,Add,SPD,2845,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,106,,ATK,3178,Add,SPD,2886,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,107,,ATK,3230,Add,SPD,2927,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,108,,ATK,3282,Add,SPD,2968,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,109,,ATK,3334,Add,SPD,3009,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,110,,ATK,3386,Add,SPD,3050,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,111,,ATK,3438,Add,SPD,3091,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,112,,ATK,3490,Add,SPD,3132,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,113,,ATK,3542,Add,SPD,3173,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,114,,ATK,3594,Add,SPD,3214,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,115,,ATK,3646,Add,SPD,3255,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,116,,ATK,3698,Add,SPD,3296,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,117,,ATK,3750,Add,SPD,3337,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,118,,ATK,3802,Add,SPD,3378,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,119,,ATK,3854,Add,SPD,3419,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,120,,ATK,3906,Add,SPD,3460,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,121,,ATK,3958,Add,SPD,3501,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,122,,ATK,4010,Add,SPD,3542,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,123,,ATK,4062,Add,SPD,3583,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,124,,ATK,4114,Add,SPD,3624,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,125,,ATK,4166,Add,SPD,3665,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,126,,ATK,4218,Add,SPD,3706,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,127,,ATK,4270,Add,SPD,3747,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,128,,ATK,4322,Add,SPD,3788,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,129,,ATK,4374,Add,SPD,3829,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,130,,ATK,4426,Add,SPD,3870,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,131,,ATK,4478,Add,SPD,3911,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,132,,ATK,4530,Add,SPD,3952,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,133,,ATK,4582,Add,SPD,3993,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,134,,ATK,4634,Add,SPD,4034,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,135,,ATK,4686,Add,SPD,4075,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,136,,ATK,4738,Add,SPD,4116,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,137,,ATK,4790,Add,SPD,4157,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,138,,ATK,4842,Add,SPD,4198,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,139,,ATK,4894,Add,SPD,4239,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,140,,ATK,4946,Add,SPD,4280,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,141,,ATK,4998,Add,SPD,4321,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,142,,ATK,5050,Add,SPD,4362,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,143,,ATK,5102,Add,SPD,4403,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,144,,ATK,5154,Add,SPD,4444,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,145,,ATK,5206,Add,SPD,4485,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,146,,ATK,5258,Add,SPD,4526,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,147,,ATK,5310,Add,SPD,4567,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,148,,ATK,5362,Add,SPD,4608,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,149,,ATK,5414,Add,SPD,4649,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,150,,ATK,5466,Add,SPD,4690,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,151,,ATK,5549,Add,SPD,4750,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,152,,ATK,5632,Add,SPD,4810,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,153,,ATK,5715,Add,SPD,4870,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,154,,ATK,5798,Add,SPD,4930,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,155,,ATK,5881,Add,SPD,4990,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,156,,ATK,5964,Add,SPD,5050,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,157,,ATK,6047,Add,SPD,5110,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,158,,ATK,6130,Add,SPD,5170,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,159,,ATK,6213,Add,SPD,5230,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,160,,ATK,6296,Add,SPD,5290,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,161,,ATK,6379,Add,SPD,5350,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,162,,ATK,6462,Add,SPD,5410,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,163,,ATK,6545,Add,SPD,5470,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,164,,ATK,6628,Add,SPD,5530,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,165,,ATK,6711,Add,SPD,5590,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,166,,ATK,6794,Add,SPD,5650,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,167,,ATK,6877,Add,SPD,5710,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,168,,ATK,6960,Add,SPD,5770,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,169,,ATK,7043,Add,SPD,5830,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,170,,ATK,7126,Add,SPD,5890,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,171,,ATK,7209,Add,SPD,5950,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,172,,ATK,7292,Add,SPD,6010,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,173,,ATK,7375,Add,SPD,6070,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,174,,ATK,7458,Add,SPD,6130,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,175,,ATK,7541,Add,SPD,6190,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,176,,ATK,7624,Add,SPD,6250,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,177,,ATK,7707,Add,SPD,6310,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,178,,ATK,7790,Add,SPD,6370,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,179,,ATK,7873,Add,SPD,6430,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,180,,ATK,7956,Add,SPD,6490,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,181,,ATK,8039,Add,SPD,6550,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,182,,ATK,8122,Add,SPD,6610,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,183,,ATK,8205,Add,SPD,6670,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,184,,ATK,8288,Add,SPD,6730,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,185,,ATK,8371,Add,SPD,6790,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,186,,ATK,8454,Add,SPD,6850,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,187,,ATK,8537,Add,SPD,6910,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,188,,ATK,8620,Add,SPD,6970,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,189,,ATK,8703,Add,SPD,7030,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,190,,ATK,8786,Add,SPD,7090,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,191,,ATK,8869,Add,SPD,7150,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,192,,ATK,8952,Add,SPD,7210,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,193,,ATK,9035,Add,SPD,7270,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,194,,ATK,9118,Add,SPD,7330,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,195,,ATK,9201,Add,SPD,7390,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,196,,ATK,9284,Add,SPD,7450,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,197,,ATK,9367,Add,SPD,7510,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,198,,ATK,9450,Add,SPD,7570,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,199,,ATK,9533,Add,SPD,7630,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,200,,ATK,9616,Add,SPD,7690,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,201,,ATK,9716,Add,SPD,7787,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,202,,ATK,9816,Add,SPD,7884,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,203,,ATK,9916,Add,SPD,7981,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,204,,ATK,10016,Add,SPD,8078,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,205,,ATK,10116,Add,SPD,8175,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,206,,ATK,10216,Add,SPD,8272,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,207,,ATK,10316,Add,SPD,8369,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,208,,ATK,10416,Add,SPD,8466,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,209,,ATK,10516,Add,SPD,8563,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,210,,ATK,10616,Add,SPD,8660,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,211,,ATK,10716,Add,SPD,8757,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,212,,ATK,10816,Add,SPD,8854,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,213,,ATK,10916,Add,SPD,8951,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,214,,ATK,11016,Add,SPD,9048,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,215,,ATK,11116,Add,SPD,9145,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,216,,ATK,11216,Add,SPD,9242,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,217,,ATK,11316,Add,SPD,9339,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,218,,ATK,11416,Add,SPD,9436,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,219,,ATK,11516,Add,SPD,9533,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,220,,ATK,11616,Add,SPD,9630,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,221,,ATK,11716,Add,SPD,9727,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,222,,ATK,11816,Add,SPD,9824,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,223,,ATK,11916,Add,SPD,9921,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,224,,ATK,12016,Add,SPD,10018,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,225,,ATK,12116,Add,SPD,10115,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,226,,ATK,12216,Add,SPD,10212,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,227,,ATK,12316,Add,SPD,10309,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,228,,ATK,12416,Add,SPD,10406,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,229,,ATK,12516,Add,SPD,10503,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,230,,ATK,12616,Add,SPD,10600,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,231,,ATK,12716,Add,SPD,10697,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,232,,ATK,12816,Add,SPD,10794,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,233,,ATK,12916,Add,SPD,10891,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,234,,ATK,13016,Add,SPD,10988,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,235,,ATK,13116,Add,SPD,11085,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,236,,ATK,13216,Add,SPD,11182,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,237,,ATK,13316,Add,SPD,11279,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,238,,ATK,13416,Add,SPD,11376,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,239,,ATK,13516,Add,SPD,11473,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,240,,ATK,13616,Add,SPD,11570,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,241,,ATK,13716,Add,SPD,11667,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,242,,ATK,13816,Add,SPD,11764,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,243,,ATK,13916,Add,SPD,11861,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,244,,ATK,14016,Add,SPD,11958,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,245,,ATK,14116,Add,SPD,12055,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,246,,ATK,14216,Add,SPD,12152,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,247,,ATK,14316,Add,SPD,12249,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,248,,ATK,14416,Add,SPD,12346,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,249,,ATK,14516,Add,SPD,12443,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,250,,ATK,14616,Add,SPD,12540,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,251,,ATK,14764,Add,SPD,12673,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,252,,ATK,14912,Add,SPD,12806,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,253,,ATK,15060,Add,SPD,12939,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,254,,ATK,15208,Add,SPD,13072,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,255,,ATK,15356,Add,SPD,13205,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,256,,ATK,15504,Add,SPD,13338,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,257,,ATK,15652,Add,SPD,13471,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,258,,ATK,15800,Add,SPD,13604,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,259,,ATK,15948,Add,SPD,13737,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,260,,ATK,16096,Add,SPD,13870,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,261,,ATK,16244,Add,SPD,14003,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,262,,ATK,16392,Add,SPD,14136,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,263,,ATK,16540,Add,SPD,14269,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,264,,ATK,16688,Add,SPD,14402,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,265,,ATK,16836,Add,SPD,14535,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,266,,ATK,16984,Add,SPD,14668,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,267,,ATK,17132,Add,SPD,14801,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,268,,ATK,17280,Add,SPD,14934,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,269,,ATK,17428,Add,SPD,15067,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,270,,ATK,17576,Add,SPD,15200,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,271,,ATK,17724,Add,SPD,15333,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,272,,ATK,17872,Add,SPD,15466,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,273,,ATK,18020,Add,SPD,15599,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,274,,ATK,18168,Add,SPD,15732,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,275,,ATK,18316,Add,SPD,15865,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,276,,ATK,18464,Add,SPD,15998,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,277,,ATK,18612,Add,SPD,16131,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,278,,ATK,18760,Add,SPD,16264,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,279,,ATK,18908,Add,SPD,16397,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,280,,ATK,19056,Add,SPD,16530,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,281,,ATK,19204,Add,SPD,16663,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,282,,ATK,19352,Add,SPD,16796,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,283,,ATK,19500,Add,SPD,16929,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,284,,ATK,19648,Add,SPD,17062,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,285,,ATK,19796,Add,SPD,17195,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,286,,ATK,19944,Add,SPD,17328,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,287,,ATK,20092,Add,SPD,17461,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,288,,ATK,20240,Add,SPD,17594,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,289,,ATK,20388,Add,SPD,17727,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,290,,ATK,20536,Add,SPD,17860,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,291,,ATK,20684,Add,SPD,17993,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,292,,ATK,20832,Add,SPD,18126,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,293,,ATK,20980,Add,SPD,18259,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,294,,ATK,21128,Add,SPD,18392,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,295,,ATK,21276,Add,SPD,18525,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,296,,ATK,21424,Add,SPD,18658,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,297,,ATK,21572,Add,SPD,18791,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,298,,ATK,21720,Add,SPD,18924,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,299,,ATK,21868,Add,SPD,19057,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,300,,ATK,22016,Add,SPD,19190,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,1,1,ATK,188,Add,SPD,105,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,2,,ATK,210,Add,SPD,120,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,3,,ATK,232,Add,SPD,135,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,4,,ATK,254,Add,SPD,150,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,5,,ATK,276,Add,SPD,165,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,6,,ATK,298,Add,SPD,180,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,7,,ATK,320,Add,SPD,195,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,8,,ATK,342,Add,SPD,210,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,9,,ATK,364,Add,SPD,225,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,10,,ATK,386,Add,SPD,240,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,11,,ATK,408,Add,SPD,255,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,12,,ATK,430,Add,SPD,270,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,13,,ATK,452,Add,SPD,285,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,14,,ATK,474,Add,SPD,300,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,15,,ATK,496,Add,SPD,315,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,16,,ATK,518,Add,SPD,330,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,17,,ATK,540,Add,SPD,345,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,18,,ATK,562,Add,SPD,360,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,19,,ATK,584,Add,SPD,375,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,20,,ATK,606,Add,SPD,390,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,21,,ATK,628,Add,SPD,405,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,22,,ATK,650,Add,SPD,420,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,23,,ATK,672,Add,SPD,435,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,24,,ATK,694,Add,SPD,450,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,25,,ATK,716,Add,SPD,465,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,26,,ATK,738,Add,SPD,480,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,27,,ATK,760,Add,SPD,495,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,28,,ATK,782,Add,SPD,510,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,29,,ATK,804,Add,SPD,525,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,30,,ATK,826,Add,SPD,540,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,31,,ATK,848,Add,SPD,555,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,32,,ATK,870,Add,SPD,570,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,33,,ATK,892,Add,SPD,585,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,34,,ATK,914,Add,SPD,600,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,35,,ATK,936,Add,SPD,615,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,36,,ATK,958,Add,SPD,630,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,37,,ATK,980,Add,SPD,645,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,38,,ATK,1002,Add,SPD,660,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,39,,ATK,1024,Add,SPD,675,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,40,,ATK,1046,Add,SPD,690,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,41,,ATK,1068,Add,SPD,705,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,42,,ATK,1090,Add,SPD,720,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,43,,ATK,1112,Add,SPD,735,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,44,,ATK,1134,Add,SPD,750,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,45,,ATK,1156,Add,SPD,765,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,46,,ATK,1178,Add,SPD,780,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,47,,ATK,1200,Add,SPD,795,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,48,,ATK,1222,Add,SPD,810,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,49,,ATK,1244,Add,SPD,825,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,50,,ATK,1266,Add,SPD,840,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,51,,ATK,1298,Add,SPD,876,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,52,,ATK,1330,Add,SPD,912,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,53,,ATK,1362,Add,SPD,948,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,54,,ATK,1394,Add,SPD,984,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,55,,ATK,1426,Add,SPD,1020,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,56,,ATK,1458,Add,SPD,1056,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,57,,ATK,1490,Add,SPD,1092,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,58,,ATK,1522,Add,SPD,1128,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,59,,ATK,1554,Add,SPD,1164,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,60,,ATK,1586,Add,SPD,1200,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,61,,ATK,1618,Add,SPD,1236,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,62,,ATK,1650,Add,SPD,1272,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,63,,ATK,1682,Add,SPD,1308,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,64,,ATK,1714,Add,SPD,1344,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,65,,ATK,1746,Add,SPD,1380,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,66,,ATK,1778,Add,SPD,1416,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,67,,ATK,1810,Add,SPD,1452,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,68,,ATK,1842,Add,SPD,1488,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,69,,ATK,1874,Add,SPD,1524,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,70,,ATK,1906,Add,SPD,1560,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,71,,ATK,1938,Add,SPD,1596,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,72,,ATK,1970,Add,SPD,1632,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,73,,ATK,2002,Add,SPD,1668,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,74,,ATK,2034,Add,SPD,1704,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,75,,ATK,2066,Add,SPD,1740,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,76,,ATK,2098,Add,SPD,1776,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,77,,ATK,2130,Add,SPD,1812,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,78,,ATK,2162,Add,SPD,1848,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,79,,ATK,2194,Add,SPD,1884,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,80,,ATK,2226,Add,SPD,1920,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,81,,ATK,2258,Add,SPD,1956,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,82,,ATK,2290,Add,SPD,1992,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,83,,ATK,2322,Add,SPD,2028,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,84,,ATK,2354,Add,SPD,2064,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,85,,ATK,2386,Add,SPD,2100,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,86,,ATK,2418,Add,SPD,2136,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,87,,ATK,2450,Add,SPD,2172,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,88,,ATK,2482,Add,SPD,2208,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,89,,ATK,2514,Add,SPD,2244,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,90,,ATK,2546,Add,SPD,2280,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,91,,ATK,2578,Add,SPD,2316,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,92,,ATK,2610,Add,SPD,2352,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,93,,ATK,2642,Add,SPD,2388,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,94,,ATK,2674,Add,SPD,2424,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,95,,ATK,2706,Add,SPD,2460,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,96,,ATK,2738,Add,SPD,2496,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,97,,ATK,2770,Add,SPD,2532,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,98,,ATK,2802,Add,SPD,2568,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,99,,ATK,2834,Add,SPD,2604,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,100,,ATK,2866,Add,SPD,2640,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,101,,ATK,2918,Add,SPD,2681,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,102,,ATK,2970,Add,SPD,2722,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,103,,ATK,3022,Add,SPD,2763,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,104,,ATK,3074,Add,SPD,2804,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,105,,ATK,3126,Add,SPD,2845,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,106,,ATK,3178,Add,SPD,2886,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,107,,ATK,3230,Add,SPD,2927,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,108,,ATK,3282,Add,SPD,2968,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,109,,ATK,3334,Add,SPD,3009,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,110,,ATK,3386,Add,SPD,3050,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,111,,ATK,3438,Add,SPD,3091,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,112,,ATK,3490,Add,SPD,3132,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,113,,ATK,3542,Add,SPD,3173,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,114,,ATK,3594,Add,SPD,3214,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,115,,ATK,3646,Add,SPD,3255,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,116,,ATK,3698,Add,SPD,3296,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,117,,ATK,3750,Add,SPD,3337,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,118,,ATK,3802,Add,SPD,3378,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,119,,ATK,3854,Add,SPD,3419,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,120,,ATK,3906,Add,SPD,3460,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,121,,ATK,3958,Add,SPD,3501,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,122,,ATK,4010,Add,SPD,3542,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,123,,ATK,4062,Add,SPD,3583,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,124,,ATK,4114,Add,SPD,3624,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,125,,ATK,4166,Add,SPD,3665,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,126,,ATK,4218,Add,SPD,3706,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,127,,ATK,4270,Add,SPD,3747,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,128,,ATK,4322,Add,SPD,3788,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,129,,ATK,4374,Add,SPD,3829,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,130,,ATK,4426,Add,SPD,3870,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,131,,ATK,4478,Add,SPD,3911,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,132,,ATK,4530,Add,SPD,3952,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,133,,ATK,4582,Add,SPD,3993,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,134,,ATK,4634,Add,SPD,4034,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,135,,ATK,4686,Add,SPD,4075,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,136,,ATK,4738,Add,SPD,4116,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,137,,ATK,4790,Add,SPD,4157,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,138,,ATK,4842,Add,SPD,4198,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,139,,ATK,4894,Add,SPD,4239,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,140,,ATK,4946,Add,SPD,4280,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,141,,ATK,4998,Add,SPD,4321,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,142,,ATK,5050,Add,SPD,4362,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,143,,ATK,5102,Add,SPD,4403,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,144,,ATK,5154,Add,SPD,4444,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,145,,ATK,5206,Add,SPD,4485,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,146,,ATK,5258,Add,SPD,4526,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,147,,ATK,5310,Add,SPD,4567,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,148,,ATK,5362,Add,SPD,4608,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,149,,ATK,5414,Add,SPD,4649,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,150,,ATK,5466,Add,SPD,4690,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,151,,ATK,5549,Add,SPD,4750,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,152,,ATK,5632,Add,SPD,4810,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,153,,ATK,5715,Add,SPD,4870,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,154,,ATK,5798,Add,SPD,4930,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,155,,ATK,5881,Add,SPD,4990,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,156,,ATK,5964,Add,SPD,5050,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,157,,ATK,6047,Add,SPD,5110,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,158,,ATK,6130,Add,SPD,5170,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,159,,ATK,6213,Add,SPD,5230,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,160,,ATK,6296,Add,SPD,5290,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,161,,ATK,6379,Add,SPD,5350,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,162,,ATK,6462,Add,SPD,5410,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,163,,ATK,6545,Add,SPD,5470,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,164,,ATK,6628,Add,SPD,5530,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,165,,ATK,6711,Add,SPD,5590,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,166,,ATK,6794,Add,SPD,5650,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,167,,ATK,6877,Add,SPD,5710,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,168,,ATK,6960,Add,SPD,5770,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,169,,ATK,7043,Add,SPD,5830,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,170,,ATK,7126,Add,SPD,5890,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,171,,ATK,7209,Add,SPD,5950,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,172,,ATK,7292,Add,SPD,6010,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,173,,ATK,7375,Add,SPD,6070,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,174,,ATK,7458,Add,SPD,6130,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,175,,ATK,7541,Add,SPD,6190,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,176,,ATK,7624,Add,SPD,6250,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,177,,ATK,7707,Add,SPD,6310,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,178,,ATK,7790,Add,SPD,6370,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,179,,ATK,7873,Add,SPD,6430,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,180,,ATK,7956,Add,SPD,6490,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,181,,ATK,8039,Add,SPD,6550,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,182,,ATK,8122,Add,SPD,6610,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,183,,ATK,8205,Add,SPD,6670,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,184,,ATK,8288,Add,SPD,6730,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,185,,ATK,8371,Add,SPD,6790,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,186,,ATK,8454,Add,SPD,6850,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,187,,ATK,8537,Add,SPD,6910,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,188,,ATK,8620,Add,SPD,6970,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,189,,ATK,8703,Add,SPD,7030,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,190,,ATK,8786,Add,SPD,7090,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,191,,ATK,8869,Add,SPD,7150,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,192,,ATK,8952,Add,SPD,7210,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,193,,ATK,9035,Add,SPD,7270,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,194,,ATK,9118,Add,SPD,7330,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,195,,ATK,9201,Add,SPD,7390,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,196,,ATK,9284,Add,SPD,7450,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,197,,ATK,9367,Add,SPD,7510,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,198,,ATK,9450,Add,SPD,7570,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,199,,ATK,9533,Add,SPD,7630,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,200,,ATK,9616,Add,SPD,7690,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,201,,ATK,9716,Add,SPD,7787,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,202,,ATK,9816,Add,SPD,7884,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,203,,ATK,9916,Add,SPD,7981,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,204,,ATK,10016,Add,SPD,8078,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,205,,ATK,10116,Add,SPD,8175,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,206,,ATK,10216,Add,SPD,8272,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,207,,ATK,10316,Add,SPD,8369,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,208,,ATK,10416,Add,SPD,8466,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,209,,ATK,10516,Add,SPD,8563,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,210,,ATK,10616,Add,SPD,8660,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,211,,ATK,10716,Add,SPD,8757,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,212,,ATK,10816,Add,SPD,8854,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,213,,ATK,10916,Add,SPD,8951,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,214,,ATK,11016,Add,SPD,9048,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,215,,ATK,11116,Add,SPD,9145,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,216,,ATK,11216,Add,SPD,9242,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,217,,ATK,11316,Add,SPD,9339,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,218,,ATK,11416,Add,SPD,9436,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,219,,ATK,11516,Add,SPD,9533,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,220,,ATK,11616,Add,SPD,9630,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,221,,ATK,11716,Add,SPD,9727,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,222,,ATK,11816,Add,SPD,9824,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,223,,ATK,11916,Add,SPD,9921,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,224,,ATK,12016,Add,SPD,10018,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,225,,ATK,12116,Add,SPD,10115,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,226,,ATK,12216,Add,SPD,10212,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,227,,ATK,12316,Add,SPD,10309,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,228,,ATK,12416,Add,SPD,10406,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,229,,ATK,12516,Add,SPD,10503,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,230,,ATK,12616,Add,SPD,10600,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,231,,ATK,12716,Add,SPD,10697,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,232,,ATK,12816,Add,SPD,10794,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,233,,ATK,12916,Add,SPD,10891,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,234,,ATK,13016,Add,SPD,10988,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,235,,ATK,13116,Add,SPD,11085,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,236,,ATK,13216,Add,SPD,11182,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,237,,ATK,13316,Add,SPD,11279,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,238,,ATK,13416,Add,SPD,11376,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,239,,ATK,13516,Add,SPD,11473,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,240,,ATK,13616,Add,SPD,11570,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,241,,ATK,13716,Add,SPD,11667,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,242,,ATK,13816,Add,SPD,11764,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,243,,ATK,13916,Add,SPD,11861,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,244,,ATK,14016,Add,SPD,11958,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,245,,ATK,14116,Add,SPD,12055,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,246,,ATK,14216,Add,SPD,12152,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,247,,ATK,14316,Add,SPD,12249,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,248,,ATK,14416,Add,SPD,12346,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,249,,ATK,14516,Add,SPD,12443,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,250,,ATK,14616,Add,SPD,12540,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,251,,ATK,14764,Add,SPD,12673,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,252,,ATK,14912,Add,SPD,12806,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,253,,ATK,15060,Add,SPD,12939,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,254,,ATK,15208,Add,SPD,13072,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,255,,ATK,15356,Add,SPD,13205,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,256,,ATK,15504,Add,SPD,13338,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,257,,ATK,15652,Add,SPD,13471,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,258,,ATK,15800,Add,SPD,13604,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,259,,ATK,15948,Add,SPD,13737,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,260,,ATK,16096,Add,SPD,13870,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,261,,ATK,16244,Add,SPD,14003,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,262,,ATK,16392,Add,SPD,14136,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,263,,ATK,16540,Add,SPD,14269,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,264,,ATK,16688,Add,SPD,14402,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,265,,ATK,16836,Add,SPD,14535,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,266,,ATK,16984,Add,SPD,14668,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,267,,ATK,17132,Add,SPD,14801,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,268,,ATK,17280,Add,SPD,14934,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,269,,ATK,17428,Add,SPD,15067,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,270,,ATK,17576,Add,SPD,15200,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,271,,ATK,17724,Add,SPD,15333,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,272,,ATK,17872,Add,SPD,15466,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,273,,ATK,18020,Add,SPD,15599,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,274,,ATK,18168,Add,SPD,15732,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,275,,ATK,18316,Add,SPD,15865,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,276,,ATK,18464,Add,SPD,15998,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,277,,ATK,18612,Add,SPD,16131,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,278,,ATK,18760,Add,SPD,16264,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,279,,ATK,18908,Add,SPD,16397,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,280,,ATK,19056,Add,SPD,16530,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,281,,ATK,19204,Add,SPD,16663,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,282,,ATK,19352,Add,SPD,16796,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,283,,ATK,19500,Add,SPD,16929,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,284,,ATK,19648,Add,SPD,17062,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,285,,ATK,19796,Add,SPD,17195,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,286,,ATK,19944,Add,SPD,17328,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,287,,ATK,20092,Add,SPD,17461,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,288,,ATK,20240,Add,SPD,17594,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,289,,ATK,20388,Add,SPD,17727,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,290,,ATK,20536,Add,SPD,17860,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,291,,ATK,20684,Add,SPD,17993,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,292,,ATK,20832,Add,SPD,18126,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,293,,ATK,20980,Add,SPD,18259,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,294,,ATK,21128,Add,SPD,18392,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,295,,ATK,21276,Add,SPD,18525,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,296,,ATK,21424,Add,SPD,18658,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,297,,ATK,21572,Add,SPD,18791,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,298,,ATK,21720,Add,SPD,18924,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,299,,ATK,21868,Add,SPD,19057,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,300,,ATK,22016,Add,SPD,19190,Add,NONE,0,Add,,,,,,,, \ No newline at end of file diff --git a/Lib9c/TableCSV/RuneCostSheet.csv b/Lib9c/TableCSV/RuneCostSheet.csv index 9e1bbd8134..1b37f1beaa 100644 --- a/Lib9c/TableCSV/RuneCostSheet.csv +++ b/Lib9c/TableCSV/RuneCostSheet.csv @@ -2398,4 +2398,2404 @@ id,_name,rune_level,rune_stone_quantity,crystal_quantity,ncg_quantity,level_up_s 20001,Golden leaf Rune,297,80,800000,0,10000 20001,Golden leaf Rune,298,80,800000,0,9000 20001,Golden leaf Rune,299,80,800000,0,8000 -20001,Golden leaf Rune,300,0,5000000,0,5000 \ No newline at end of file +20001,Golden leaf Rune,300,0,5000000,0,5000 +10021,Adventure Stun Rune,1,1,0,0,10000 +10021,Adventure Stun Rune,2,1,0,0,10000 +10021,Adventure Stun Rune,3,1,0,0,10000 +10021,Adventure Stun Rune,4,1,0,0,10000 +10021,Adventure Stun Rune,5,1,0,0,10000 +10021,Adventure Stun Rune,6,1,0,0,10000 +10021,Adventure Stun Rune,7,1,0,0,10000 +10021,Adventure Stun Rune,8,1,0,0,10000 +10021,Adventure Stun Rune,9,1,0,0,10000 +10021,Adventure Stun Rune,10,1,0,0,10000 +10021,Adventure Stun Rune,11,1,1,0,10000 +10021,Adventure Stun Rune,12,1,1,0,10000 +10021,Adventure Stun Rune,13,1,1,0,10000 +10021,Adventure Stun Rune,14,1,1,0,10000 +10021,Adventure Stun Rune,15,1,1,0,10000 +10021,Adventure Stun Rune,16,1,1,0,10000 +10021,Adventure Stun Rune,17,1,1,0,10000 +10021,Adventure Stun Rune,18,1,1,0,10000 +10021,Adventure Stun Rune,19,1,1,0,10000 +10021,Adventure Stun Rune,20,1,1,0,10000 +10021,Adventure Stun Rune,21,1,1,0,10000 +10021,Adventure Stun Rune,22,1,1,0,10000 +10021,Adventure Stun Rune,23,1,1,0,10000 +10021,Adventure Stun Rune,24,1,1,0,10000 +10021,Adventure Stun Rune,25,1,1,0,10000 +10021,Adventure Stun Rune,26,1,1,0,10000 +10021,Adventure Stun Rune,27,1,1,0,10000 +10021,Adventure Stun Rune,28,1,1,0,10000 +10021,Adventure Stun Rune,29,1,1,0,10000 +10021,Adventure Stun Rune,30,1,1,0,10000 +10021,Adventure Stun Rune,31,2,10,0,10000 +10021,Adventure Stun Rune,32,2,10,0,10000 +10021,Adventure Stun Rune,33,2,10,0,10000 +10021,Adventure Stun Rune,34,2,10,0,10000 +10021,Adventure Stun Rune,35,2,10,0,10000 +10021,Adventure Stun Rune,36,2,10,0,10000 +10021,Adventure Stun Rune,37,2,10,0,10000 +10021,Adventure Stun Rune,38,2,10,0,10000 +10021,Adventure Stun Rune,39,2,10,0,10000 +10021,Adventure Stun Rune,40,2,10,0,10000 +10021,Adventure Stun Rune,41,2,10,0,10000 +10021,Adventure Stun Rune,42,2,10,0,10000 +10021,Adventure Stun Rune,43,2,10,0,10000 +10021,Adventure Stun Rune,44,2,10,0,10000 +10021,Adventure Stun Rune,45,2,10,0,10000 +10021,Adventure Stun Rune,46,2,10,0,10000 +10021,Adventure Stun Rune,47,2,10,0,10000 +10021,Adventure Stun Rune,48,2,10,0,10000 +10021,Adventure Stun Rune,49,2,10,0,10000 +10021,Adventure Stun Rune,50,2,10,0,10000 +10021,Adventure Stun Rune,51,2,10,1,10000 +10021,Adventure Stun Rune,52,2,10,0,10000 +10021,Adventure Stun Rune,53,2,10,0,10000 +10021,Adventure Stun Rune,54,2,10,0,10000 +10021,Adventure Stun Rune,55,2,10,0,10000 +10021,Adventure Stun Rune,56,2,10,0,10000 +10021,Adventure Stun Rune,57,2,10,0,10000 +10021,Adventure Stun Rune,58,2,10,0,10000 +10021,Adventure Stun Rune,59,2,10,0,10000 +10021,Adventure Stun Rune,60,2,10,0,10000 +10021,Adventure Stun Rune,61,2,10,1,10000 +10021,Adventure Stun Rune,62,2,10,0,10000 +10021,Adventure Stun Rune,63,2,10,0,10000 +10021,Adventure Stun Rune,64,2,10,0,10000 +10021,Adventure Stun Rune,65,2,10,0,10000 +10021,Adventure Stun Rune,66,2,10,0,10000 +10021,Adventure Stun Rune,67,2,10,0,10000 +10021,Adventure Stun Rune,68,2,10,0,10000 +10021,Adventure Stun Rune,69,2,10,0,10000 +10021,Adventure Stun Rune,70,2,10,0,10000 +10021,Adventure Stun Rune,71,3,20,1,10000 +10021,Adventure Stun Rune,72,3,20,0,10000 +10021,Adventure Stun Rune,73,3,20,0,10000 +10021,Adventure Stun Rune,74,3,20,0,10000 +10021,Adventure Stun Rune,75,3,20,0,10000 +10021,Adventure Stun Rune,76,3,20,0,10000 +10021,Adventure Stun Rune,77,3,20,0,10000 +10021,Adventure Stun Rune,78,3,20,0,10000 +10021,Adventure Stun Rune,79,3,20,0,10000 +10021,Adventure Stun Rune,80,3,20,0,10000 +10021,Adventure Stun Rune,81,3,20,1,10000 +10021,Adventure Stun Rune,82,3,20,0,10000 +10021,Adventure Stun Rune,83,3,20,0,10000 +10021,Adventure Stun Rune,84,3,20,0,10000 +10021,Adventure Stun Rune,85,3,20,0,10000 +10021,Adventure Stun Rune,86,3,20,0,10000 +10021,Adventure Stun Rune,87,3,20,0,10000 +10021,Adventure Stun Rune,88,3,20,0,10000 +10021,Adventure Stun Rune,89,3,20,0,10000 +10021,Adventure Stun Rune,90,3,20,0,10000 +10021,Adventure Stun Rune,91,3,20,2,10000 +10021,Adventure Stun Rune,92,3,20,0,10000 +10021,Adventure Stun Rune,93,3,20,0,10000 +10021,Adventure Stun Rune,94,3,20,0,10000 +10021,Adventure Stun Rune,95,3,20,0,10000 +10021,Adventure Stun Rune,96,3,20,0,10000 +10021,Adventure Stun Rune,97,3,20,0,10000 +10021,Adventure Stun Rune,98,3,20,0,10000 +10021,Adventure Stun Rune,99,3,20,0,10000 +10021,Adventure Stun Rune,100,3,20,0,10000 +10021,Adventure Stun Rune,101,3,20,2,10000 +10021,Adventure Stun Rune,102,3,20,0,8000 +10021,Adventure Stun Rune,103,3,20,0,8000 +10021,Adventure Stun Rune,104,3,20,0,8000 +10021,Adventure Stun Rune,105,3,20,0,8000 +10021,Adventure Stun Rune,106,3,20,0,8000 +10021,Adventure Stun Rune,107,3,20,0,8000 +10021,Adventure Stun Rune,108,3,20,0,8000 +10021,Adventure Stun Rune,109,3,20,0,8000 +10021,Adventure Stun Rune,110,3,20,0,8000 +10021,Adventure Stun Rune,111,3,20,2,10000 +10021,Adventure Stun Rune,112,3,20,0,8000 +10021,Adventure Stun Rune,113,3,20,0,8000 +10021,Adventure Stun Rune,114,3,20,0,8000 +10021,Adventure Stun Rune,115,3,20,0,8000 +10021,Adventure Stun Rune,116,3,20,0,8000 +10021,Adventure Stun Rune,117,3,20,0,8000 +10021,Adventure Stun Rune,118,3,20,0,8000 +10021,Adventure Stun Rune,119,3,20,0,8000 +10021,Adventure Stun Rune,120,3,20,0,8000 +10021,Adventure Stun Rune,121,3,20,2,10000 +10021,Adventure Stun Rune,122,3,20,0,8000 +10021,Adventure Stun Rune,123,3,20,0,8000 +10021,Adventure Stun Rune,124,3,20,0,8000 +10021,Adventure Stun Rune,125,3,20,0,8000 +10021,Adventure Stun Rune,126,10,500,0,8000 +10021,Adventure Stun Rune,127,10,500,0,8000 +10021,Adventure Stun Rune,128,10,500,0,8000 +10021,Adventure Stun Rune,129,10,500,0,8000 +10021,Adventure Stun Rune,130,10,500,0,8000 +10021,Adventure Stun Rune,131,10,500,5,10000 +10021,Adventure Stun Rune,132,10,500,0,8000 +10021,Adventure Stun Rune,133,10,500,0,8000 +10021,Adventure Stun Rune,134,10,500,0,8000 +10021,Adventure Stun Rune,135,10,500,0,8000 +10021,Adventure Stun Rune,136,10,500,0,8000 +10021,Adventure Stun Rune,137,10,500,0,8000 +10021,Adventure Stun Rune,138,10,500,0,8000 +10021,Adventure Stun Rune,139,10,500,0,8000 +10021,Adventure Stun Rune,140,10,500,0,8000 +10021,Adventure Stun Rune,141,10,500,5,10000 +10021,Adventure Stun Rune,142,10,500,0,8000 +10021,Adventure Stun Rune,143,10,500,0,8000 +10021,Adventure Stun Rune,144,10,500,0,8000 +10021,Adventure Stun Rune,145,10,500,0,8000 +10021,Adventure Stun Rune,146,10,500,0,8000 +10021,Adventure Stun Rune,147,10,500,0,8000 +10021,Adventure Stun Rune,148,10,500,0,8000 +10021,Adventure Stun Rune,149,10,500,0,8000 +10021,Adventure Stun Rune,150,10,500,0,8000 +10021,Adventure Stun Rune,151,10,500,5,10000 +10021,Adventure Stun Rune,152,10,500,0,8000 +10021,Adventure Stun Rune,153,10,500,0,8000 +10021,Adventure Stun Rune,154,10,500,0,8000 +10021,Adventure Stun Rune,155,10,500,0,8000 +10021,Adventure Stun Rune,156,10,500,0,8000 +10021,Adventure Stun Rune,157,10,500,0,8000 +10021,Adventure Stun Rune,158,10,500,0,8000 +10021,Adventure Stun Rune,159,10,500,0,8000 +10021,Adventure Stun Rune,160,10,500,0,8000 +10021,Adventure Stun Rune,161,10,500,5,10000 +10021,Adventure Stun Rune,162,10,500,0,8000 +10021,Adventure Stun Rune,163,10,500,0,8000 +10021,Adventure Stun Rune,164,10,500,0,8000 +10021,Adventure Stun Rune,165,10,500,0,8000 +10021,Adventure Stun Rune,166,10,500,0,8000 +10021,Adventure Stun Rune,167,10,500,0,8000 +10021,Adventure Stun Rune,168,10,500,0,8000 +10021,Adventure Stun Rune,169,10,500,0,8000 +10021,Adventure Stun Rune,170,10,500,0,8000 +10021,Adventure Stun Rune,171,10,500,5,10000 +10021,Adventure Stun Rune,172,10,500,0,8000 +10021,Adventure Stun Rune,173,10,500,0,8000 +10021,Adventure Stun Rune,174,10,500,0,8000 +10021,Adventure Stun Rune,175,10,500,0,8000 +10021,Adventure Stun Rune,176,10,500,0,8000 +10021,Adventure Stun Rune,177,10,500,0,8000 +10021,Adventure Stun Rune,178,10,500,0,8000 +10021,Adventure Stun Rune,179,10,500,0,8000 +10021,Adventure Stun Rune,180,10,500,0,8000 +10021,Adventure Stun Rune,181,10,500,5,10000 +10021,Adventure Stun Rune,182,10,500,0,8000 +10021,Adventure Stun Rune,183,10,500,0,8000 +10021,Adventure Stun Rune,184,10,500,0,8000 +10021,Adventure Stun Rune,185,10,500,0,8000 +10021,Adventure Stun Rune,186,10,500,0,8000 +10021,Adventure Stun Rune,187,10,500,0,8000 +10021,Adventure Stun Rune,188,10,500,0,8000 +10021,Adventure Stun Rune,189,10,500,0,8000 +10021,Adventure Stun Rune,190,10,500,0,8000 +10021,Adventure Stun Rune,191,10,500,5,10000 +10021,Adventure Stun Rune,192,10,500,0,8000 +10021,Adventure Stun Rune,193,10,500,0,8000 +10021,Adventure Stun Rune,194,10,500,0,8000 +10021,Adventure Stun Rune,195,10,500,0,8000 +10021,Adventure Stun Rune,196,10,500,0,8000 +10021,Adventure Stun Rune,197,10,500,0,8000 +10021,Adventure Stun Rune,198,10,500,0,8000 +10021,Adventure Stun Rune,199,10,500,0,8000 +10021,Adventure Stun Rune,200,10,500,0,8000 +10021,Adventure Stun Rune,201,20,500,10,10000 +10021,Adventure Stun Rune,202,20,500,0,6000 +10021,Adventure Stun Rune,203,20,500,0,6000 +10021,Adventure Stun Rune,204,20,500,0,6000 +10021,Adventure Stun Rune,205,20,500,0,6000 +10021,Adventure Stun Rune,206,20,500,0,6000 +10021,Adventure Stun Rune,207,20,500,0,6000 +10021,Adventure Stun Rune,208,20,500,0,6000 +10021,Adventure Stun Rune,209,20,500,0,6000 +10021,Adventure Stun Rune,210,20,500,0,6000 +10021,Adventure Stun Rune,211,20,500,10,10000 +10021,Adventure Stun Rune,212,20,500,0,6000 +10021,Adventure Stun Rune,213,20,500,0,6000 +10021,Adventure Stun Rune,214,20,500,0,6000 +10021,Adventure Stun Rune,215,20,500,0,6000 +10021,Adventure Stun Rune,216,20,500,0,6000 +10021,Adventure Stun Rune,217,20,500,0,6000 +10021,Adventure Stun Rune,218,20,500,0,6000 +10021,Adventure Stun Rune,219,20,500,0,6000 +10021,Adventure Stun Rune,220,20,500,0,6000 +10021,Adventure Stun Rune,221,20,500,10,10000 +10021,Adventure Stun Rune,222,20,500,0,6000 +10021,Adventure Stun Rune,223,20,500,0,6000 +10021,Adventure Stun Rune,224,20,500,0,6000 +10021,Adventure Stun Rune,225,20,500,0,6000 +10021,Adventure Stun Rune,226,20,500,0,6000 +10021,Adventure Stun Rune,227,20,500,0,6000 +10021,Adventure Stun Rune,228,20,500,0,6000 +10021,Adventure Stun Rune,229,20,500,0,6000 +10021,Adventure Stun Rune,230,20,500,0,6000 +10021,Adventure Stun Rune,231,20,500,10,10000 +10021,Adventure Stun Rune,232,20,500,0,6000 +10021,Adventure Stun Rune,233,20,500,0,6000 +10021,Adventure Stun Rune,234,20,500,0,6000 +10021,Adventure Stun Rune,235,20,500,0,6000 +10021,Adventure Stun Rune,236,20,500,0,6000 +10021,Adventure Stun Rune,237,20,500,0,6000 +10021,Adventure Stun Rune,238,20,500,0,6000 +10021,Adventure Stun Rune,239,20,500,0,6000 +10021,Adventure Stun Rune,240,20,500,0,6000 +10021,Adventure Stun Rune,241,20,500,10,10000 +10021,Adventure Stun Rune,242,20,500,0,6000 +10021,Adventure Stun Rune,243,20,500,0,6000 +10021,Adventure Stun Rune,244,20,500,0,6000 +10021,Adventure Stun Rune,245,20,500,0,6000 +10021,Adventure Stun Rune,246,20,500,0,6000 +10021,Adventure Stun Rune,247,20,500,0,6000 +10021,Adventure Stun Rune,248,20,500,0,6000 +10021,Adventure Stun Rune,249,20,500,0,6000 +10021,Adventure Stun Rune,250,20,500,0,6000 +10021,Adventure Stun Rune,251,20,500,10,10000 +10021,Adventure Stun Rune,252,20,500,0,6000 +10021,Adventure Stun Rune,253,20,500,0,6000 +10021,Adventure Stun Rune,254,20,500,0,6000 +10021,Adventure Stun Rune,255,20,500,0,6000 +10021,Adventure Stun Rune,256,20,500,0,6000 +10021,Adventure Stun Rune,257,20,500,0,6000 +10021,Adventure Stun Rune,258,20,500,0,6000 +10021,Adventure Stun Rune,259,20,500,0,6000 +10021,Adventure Stun Rune,260,20,500,0,6000 +10021,Adventure Stun Rune,261,20,500,10,10000 +10021,Adventure Stun Rune,262,20,500,0,6000 +10021,Adventure Stun Rune,263,20,500,0,6000 +10021,Adventure Stun Rune,264,20,500,0,6000 +10021,Adventure Stun Rune,265,20,500,0,6000 +10021,Adventure Stun Rune,266,20,500,0,6000 +10021,Adventure Stun Rune,267,20,500,0,6000 +10021,Adventure Stun Rune,268,20,500,0,6000 +10021,Adventure Stun Rune,269,20,500,0,6000 +10021,Adventure Stun Rune,270,20,500,0,6000 +10021,Adventure Stun Rune,271,20,500,10,10000 +10021,Adventure Stun Rune,272,20,500,0,6000 +10021,Adventure Stun Rune,273,20,500,0,6000 +10021,Adventure Stun Rune,274,20,500,0,6000 +10021,Adventure Stun Rune,275,20,500,0,6000 +10021,Adventure Stun Rune,276,20,500,0,6000 +10021,Adventure Stun Rune,277,20,500,0,6000 +10021,Adventure Stun Rune,278,20,500,0,6000 +10021,Adventure Stun Rune,279,20,500,0,6000 +10021,Adventure Stun Rune,280,20,500,0,6000 +10021,Adventure Stun Rune,281,20,500,10,10000 +10021,Adventure Stun Rune,282,20,500,0,6000 +10021,Adventure Stun Rune,283,20,500,0,6000 +10021,Adventure Stun Rune,284,20,500,0,6000 +10021,Adventure Stun Rune,285,20,500,0,6000 +10021,Adventure Stun Rune,286,20,500,0,6000 +10021,Adventure Stun Rune,287,20,500,0,6000 +10021,Adventure Stun Rune,288,20,500,0,6000 +10021,Adventure Stun Rune,289,20,500,0,6000 +10021,Adventure Stun Rune,290,20,500,0,6000 +10021,Adventure Stun Rune,291,20,500,10,10000 +10021,Adventure Stun Rune,292,20,500,0,6000 +10021,Adventure Stun Rune,293,20,500,0,6000 +10021,Adventure Stun Rune,294,20,500,0,6000 +10021,Adventure Stun Rune,295,20,500,0,6000 +10021,Adventure Stun Rune,296,20,500,0,6000 +10021,Adventure Stun Rune,297,20,500,0,6000 +10021,Adventure Stun Rune,298,20,500,0,6000 +10021,Adventure Stun Rune,299,20,500,0,6000 +10021,Adventure Stun Rune,300,20,500,0,6000 +10022,Arena Stun Rune,1,100,2000,0,10000 +10022,Arena Stun Rune,2,10,2000,0,8000 +10022,Arena Stun Rune,3,10,2000,0,6000 +10022,Arena Stun Rune,4,10,2000,0,10000 +10022,Arena Stun Rune,5,10,2000,0,8000 +10022,Arena Stun Rune,6,10,2000,0,6000 +10022,Arena Stun Rune,7,10,2000,0,10000 +10022,Arena Stun Rune,8,10,2000,0,8000 +10022,Arena Stun Rune,9,10,2000,0,6000 +10022,Arena Stun Rune,10,100,2000,0,5000 +10022,Arena Stun Rune,11,10,2000,0,8000 +10022,Arena Stun Rune,12,10,2000,0,8000 +10022,Arena Stun Rune,13,10,2000,0,6000 +10022,Arena Stun Rune,14,10,2000,0,10000 +10022,Arena Stun Rune,15,10,2000,0,8000 +10022,Arena Stun Rune,16,10,2000,0,6000 +10022,Arena Stun Rune,17,10,2000,0,10000 +10022,Arena Stun Rune,18,10,2000,0,8000 +10022,Arena Stun Rune,19,10,2000,0,6000 +10022,Arena Stun Rune,20,100,2000,0,5000 +10022,Arena Stun Rune,21,10,2000,0,8000 +10022,Arena Stun Rune,22,10,2000,0,8000 +10022,Arena Stun Rune,23,10,2000,0,6000 +10022,Arena Stun Rune,24,10,2000,0,10000 +10022,Arena Stun Rune,25,10,2000,0,8000 +10022,Arena Stun Rune,26,10,2000,0,6000 +10022,Arena Stun Rune,27,10,2000,0,10000 +10022,Arena Stun Rune,28,10,2000,0,8000 +10022,Arena Stun Rune,29,10,2000,0,6000 +10022,Arena Stun Rune,30,100,2000,0,5000 +10022,Arena Stun Rune,31,30,10000,0,8000 +10022,Arena Stun Rune,32,30,10000,0,8000 +10022,Arena Stun Rune,33,30,10000,0,6000 +10022,Arena Stun Rune,34,30,10000,0,10000 +10022,Arena Stun Rune,35,30,10000,0,8000 +10022,Arena Stun Rune,36,30,10000,0,6000 +10022,Arena Stun Rune,37,30,10000,0,10000 +10022,Arena Stun Rune,38,30,10000,0,8000 +10022,Arena Stun Rune,39,30,10000,0,6000 +10022,Arena Stun Rune,40,300,10000,0,5000 +10022,Arena Stun Rune,41,30,10000,0,8000 +10022,Arena Stun Rune,42,30,10000,0,8000 +10022,Arena Stun Rune,43,30,10000,0,6000 +10022,Arena Stun Rune,44,30,10000,0,10000 +10022,Arena Stun Rune,45,30,10000,0,8000 +10022,Arena Stun Rune,46,30,10000,0,6000 +10022,Arena Stun Rune,47,30,10000,0,10000 +10022,Arena Stun Rune,48,30,10000,0,8000 +10022,Arena Stun Rune,49,30,10000,0,6000 +10022,Arena Stun Rune,50,300,10000,0,5000 +10022,Arena Stun Rune,51,30,10000,20,8000 +10022,Arena Stun Rune,52,30,10000,0,8000 +10022,Arena Stun Rune,53,30,10000,0,6000 +10022,Arena Stun Rune,54,30,10000,0,10000 +10022,Arena Stun Rune,55,30,10000,0,8000 +10022,Arena Stun Rune,56,30,10000,0,6000 +10022,Arena Stun Rune,57,30,10000,0,10000 +10022,Arena Stun Rune,58,30,10000,0,8000 +10022,Arena Stun Rune,59,30,10000,0,6000 +10022,Arena Stun Rune,60,300,10000,0,5000 +10022,Arena Stun Rune,61,30,10000,20,8000 +10022,Arena Stun Rune,62,30,10000,0,8000 +10022,Arena Stun Rune,63,30,10000,0,6000 +10022,Arena Stun Rune,64,30,10000,0,10000 +10022,Arena Stun Rune,65,30,10000,0,8000 +10022,Arena Stun Rune,66,30,10000,0,6000 +10022,Arena Stun Rune,67,30,10000,0,10000 +10022,Arena Stun Rune,68,30,10000,0,8000 +10022,Arena Stun Rune,69,30,10000,0,6000 +10022,Arena Stun Rune,70,300,10000,0,5000 +10022,Arena Stun Rune,71,60,50000,20,8000 +10022,Arena Stun Rune,72,60,50000,0,9000 +10022,Arena Stun Rune,73,60,50000,0,8000 +10022,Arena Stun Rune,74,60,50000,0,7000 +10022,Arena Stun Rune,75,60,50000,0,6000 +10022,Arena Stun Rune,76,60,50000,0,5000 +10022,Arena Stun Rune,77,60,50000,0,4000 +10022,Arena Stun Rune,78,60,50000,0,3000 +10022,Arena Stun Rune,79,60,50000,0,2000 +10022,Arena Stun Rune,80,300,50000,0,1000 +10022,Arena Stun Rune,81,60,50000,20,8000 +10022,Arena Stun Rune,82,60,50000,0,9000 +10022,Arena Stun Rune,83,60,50000,0,8000 +10022,Arena Stun Rune,84,60,50000,0,7000 +10022,Arena Stun Rune,85,60,50000,0,6000 +10022,Arena Stun Rune,86,60,50000,0,5000 +10022,Arena Stun Rune,87,60,50000,0,4000 +10022,Arena Stun Rune,88,60,50000,0,3000 +10022,Arena Stun Rune,89,60,50000,0,2000 +10022,Arena Stun Rune,90,300,50000,0,1000 +10022,Arena Stun Rune,91,60,50000,50,8000 +10022,Arena Stun Rune,92,60,50000,0,9000 +10022,Arena Stun Rune,93,60,50000,0,8000 +10022,Arena Stun Rune,94,60,50000,0,7000 +10022,Arena Stun Rune,95,60,50000,0,6000 +10022,Arena Stun Rune,96,60,50000,0,5000 +10022,Arena Stun Rune,97,60,50000,0,4000 +10022,Arena Stun Rune,98,60,50000,0,3000 +10022,Arena Stun Rune,99,60,50000,0,2000 +10022,Arena Stun Rune,100,300,50000,0,1000 +10022,Arena Stun Rune,101,60,50000,50,8000 +10022,Arena Stun Rune,102,60,50000,0,9000 +10022,Arena Stun Rune,103,60,50000,0,8000 +10022,Arena Stun Rune,104,60,50000,0,7000 +10022,Arena Stun Rune,105,60,50000,0,6000 +10022,Arena Stun Rune,106,60,50000,0,5000 +10022,Arena Stun Rune,107,60,50000,0,4000 +10022,Arena Stun Rune,108,60,50000,0,3000 +10022,Arena Stun Rune,109,60,50000,0,2000 +10022,Arena Stun Rune,110,300,50000,0,1000 +10022,Arena Stun Rune,111,60,50000,50,8000 +10022,Arena Stun Rune,112,60,50000,0,9000 +10022,Arena Stun Rune,113,60,50000,0,8000 +10022,Arena Stun Rune,114,60,50000,0,7000 +10022,Arena Stun Rune,115,60,50000,0,6000 +10022,Arena Stun Rune,116,60,50000,0,5000 +10022,Arena Stun Rune,117,60,50000,0,4000 +10022,Arena Stun Rune,118,60,50000,0,3000 +10022,Arena Stun Rune,119,60,50000,0,2000 +10022,Arena Stun Rune,120,300,50000,0,1000 +10022,Arena Stun Rune,121,60,50000,50,8000 +10022,Arena Stun Rune,122,60,50000,0,9000 +10022,Arena Stun Rune,123,60,50000,0,8000 +10022,Arena Stun Rune,124,60,50000,0,7000 +10022,Arena Stun Rune,125,60,50000,0,6000 +10022,Arena Stun Rune,126,60,200000,0,5000 +10022,Arena Stun Rune,127,60,200000,0,4000 +10022,Arena Stun Rune,128,60,200000,0,3000 +10022,Arena Stun Rune,129,60,200000,0,2000 +10022,Arena Stun Rune,130,300,200000,0,1000 +10022,Arena Stun Rune,131,80,200000,50,8000 +10022,Arena Stun Rune,132,80,200000,0,8000 +10022,Arena Stun Rune,133,80,200000,0,6000 +10022,Arena Stun Rune,134,80,200000,0,4000 +10022,Arena Stun Rune,135,400,200000,0,1000 +10022,Arena Stun Rune,136,80,200000,0,10000 +10022,Arena Stun Rune,137,80,200000,0,8000 +10022,Arena Stun Rune,138,80,200000,0,6000 +10022,Arena Stun Rune,139,80,200000,0,4000 +10022,Arena Stun Rune,140,400,200000,0,1000 +10022,Arena Stun Rune,141,80,200000,50,10000 +10022,Arena Stun Rune,142,80,200000,0,9000 +10022,Arena Stun Rune,143,80,200000,0,8000 +10022,Arena Stun Rune,144,80,200000,0,7000 +10022,Arena Stun Rune,145,80,200000,0,6000 +10022,Arena Stun Rune,146,80,200000,0,5000 +10022,Arena Stun Rune,147,80,200000,0,4000 +10022,Arena Stun Rune,148,80,200000,0,3000 +10022,Arena Stun Rune,149,80,200000,0,2000 +10022,Arena Stun Rune,150,400,200000,0,1000 +10022,Arena Stun Rune,151,80,200000,50,10000 +10022,Arena Stun Rune,152,80,200000,0,9000 +10022,Arena Stun Rune,153,80,200000,0,8000 +10022,Arena Stun Rune,154,80,200000,0,7000 +10022,Arena Stun Rune,155,80,200000,0,6000 +10022,Arena Stun Rune,156,80,200000,0,5000 +10022,Arena Stun Rune,157,80,200000,0,4000 +10022,Arena Stun Rune,158,80,200000,0,3000 +10022,Arena Stun Rune,159,80,200000,0,2000 +10022,Arena Stun Rune,160,400,200000,0,1000 +10022,Arena Stun Rune,161,80,200000,50,10000 +10022,Arena Stun Rune,162,80,200000,0,9000 +10022,Arena Stun Rune,163,80,200000,0,8000 +10022,Arena Stun Rune,164,80,200000,0,7000 +10022,Arena Stun Rune,165,80,200000,0,6000 +10022,Arena Stun Rune,166,80,200000,0,5000 +10022,Arena Stun Rune,167,80,200000,0,4000 +10022,Arena Stun Rune,168,80,200000,0,3000 +10022,Arena Stun Rune,169,80,200000,0,2000 +10022,Arena Stun Rune,170,400,200000,0,1000 +10022,Arena Stun Rune,171,80,200000,50,10000 +10022,Arena Stun Rune,172,80,200000,0,9000 +10022,Arena Stun Rune,173,80,200000,0,8000 +10022,Arena Stun Rune,174,80,200000,0,7000 +10022,Arena Stun Rune,175,80,200000,0,6000 +10022,Arena Stun Rune,176,80,200000,0,5000 +10022,Arena Stun Rune,177,80,200000,0,4000 +10022,Arena Stun Rune,178,80,200000,0,3000 +10022,Arena Stun Rune,179,80,200000,0,2000 +10022,Arena Stun Rune,180,400,200000,0,1000 +10022,Arena Stun Rune,181,80,200000,100,10000 +10022,Arena Stun Rune,182,80,200000,0,9000 +10022,Arena Stun Rune,183,80,200000,0,8000 +10022,Arena Stun Rune,184,80,200000,0,7000 +10022,Arena Stun Rune,185,80,200000,0,6000 +10022,Arena Stun Rune,186,80,200000,0,5000 +10022,Arena Stun Rune,187,80,200000,0,4000 +10022,Arena Stun Rune,188,80,200000,0,3000 +10022,Arena Stun Rune,189,80,200000,0,2000 +10022,Arena Stun Rune,190,400,200000,0,1000 +10022,Arena Stun Rune,191,80,200000,100,10000 +10022,Arena Stun Rune,192,80,200000,0,9000 +10022,Arena Stun Rune,193,80,200000,0,8000 +10022,Arena Stun Rune,194,80,200000,0,7000 +10022,Arena Stun Rune,195,80,200000,0,6000 +10022,Arena Stun Rune,196,80,200000,0,5000 +10022,Arena Stun Rune,197,80,200000,0,4000 +10022,Arena Stun Rune,198,80,200000,0,3000 +10022,Arena Stun Rune,199,80,200000,0,2000 +10022,Arena Stun Rune,200,400,200000,0,1000 +10022,Arena Stun Rune,201,100,500000,100,10000 +10022,Arena Stun Rune,202,100,500000,0,9000 +10022,Arena Stun Rune,203,100,500000,0,8000 +10022,Arena Stun Rune,204,100,500000,0,7000 +10022,Arena Stun Rune,205,100,500000,0,6000 +10022,Arena Stun Rune,206,100,500000,0,5000 +10022,Arena Stun Rune,207,100,500000,0,4000 +10022,Arena Stun Rune,208,100,500000,0,3000 +10022,Arena Stun Rune,209,100,500000,0,2000 +10022,Arena Stun Rune,210,800,500000,0,1000 +10022,Arena Stun Rune,211,100,500000,100,10000 +10022,Arena Stun Rune,212,100,500000,0,9000 +10022,Arena Stun Rune,213,100,500000,0,8000 +10022,Arena Stun Rune,214,100,500000,0,7000 +10022,Arena Stun Rune,215,100,500000,0,6000 +10022,Arena Stun Rune,216,100,500000,0,5000 +10022,Arena Stun Rune,217,100,500000,0,4000 +10022,Arena Stun Rune,218,100,500000,0,3000 +10022,Arena Stun Rune,219,100,500000,0,2000 +10022,Arena Stun Rune,220,800,500000,0,1000 +10022,Arena Stun Rune,221,100,500000,100,10000 +10022,Arena Stun Rune,222,100,500000,0,9000 +10022,Arena Stun Rune,223,100,500000,0,8000 +10022,Arena Stun Rune,224,100,500000,0,7000 +10022,Arena Stun Rune,225,100,500000,0,6000 +10022,Arena Stun Rune,226,100,500000,0,5000 +10022,Arena Stun Rune,227,100,500000,0,4000 +10022,Arena Stun Rune,228,100,500000,0,3000 +10022,Arena Stun Rune,229,100,500000,0,2000 +10022,Arena Stun Rune,230,800,500000,0,1000 +10022,Arena Stun Rune,231,100,500000,100,10000 +10022,Arena Stun Rune,232,100,500000,0,9000 +10022,Arena Stun Rune,233,100,500000,0,8000 +10022,Arena Stun Rune,234,100,500000,0,7000 +10022,Arena Stun Rune,235,100,500000,0,6000 +10022,Arena Stun Rune,236,100,500000,0,5000 +10022,Arena Stun Rune,237,100,500000,0,4000 +10022,Arena Stun Rune,238,100,500000,0,3000 +10022,Arena Stun Rune,239,100,500000,0,2000 +10022,Arena Stun Rune,240,800,500000,0,1000 +10022,Arena Stun Rune,241,100,500000,100,10000 +10022,Arena Stun Rune,242,100,500000,0,9000 +10022,Arena Stun Rune,243,100,500000,0,8000 +10022,Arena Stun Rune,244,100,500000,0,7000 +10022,Arena Stun Rune,245,100,500000,0,6000 +10022,Arena Stun Rune,246,100,500000,0,5000 +10022,Arena Stun Rune,247,100,500000,0,4000 +10022,Arena Stun Rune,248,100,500000,0,3000 +10022,Arena Stun Rune,249,100,500000,0,2000 +10022,Arena Stun Rune,250,800,500000,0,1000 +10022,Arena Stun Rune,251,100,1000000,200,10000 +10022,Arena Stun Rune,252,100,1000000,0,9000 +10022,Arena Stun Rune,253,100,1000000,0,8000 +10022,Arena Stun Rune,254,100,1000000,0,7000 +10022,Arena Stun Rune,255,100,1000000,0,6000 +10022,Arena Stun Rune,256,100,1000000,0,5000 +10022,Arena Stun Rune,257,100,1000000,0,4000 +10022,Arena Stun Rune,258,100,1000000,0,3000 +10022,Arena Stun Rune,259,100,1000000,0,2000 +10022,Arena Stun Rune,260,800,1000000,0,1000 +10022,Arena Stun Rune,261,100,1000000,200,10000 +10022,Arena Stun Rune,262,100,1000000,0,9000 +10022,Arena Stun Rune,263,100,1000000,0,8000 +10022,Arena Stun Rune,264,100,1000000,0,7000 +10022,Arena Stun Rune,265,100,1000000,0,6000 +10022,Arena Stun Rune,266,100,1000000,0,5000 +10022,Arena Stun Rune,267,100,1000000,0,4000 +10022,Arena Stun Rune,268,100,1000000,0,3000 +10022,Arena Stun Rune,269,100,1000000,0,2000 +10022,Arena Stun Rune,270,800,1000000,0,1000 +10022,Arena Stun Rune,271,100,1000000,200,10000 +10022,Arena Stun Rune,272,100,1000000,0,9000 +10022,Arena Stun Rune,273,100,1000000,0,8000 +10022,Arena Stun Rune,274,100,1000000,0,7000 +10022,Arena Stun Rune,275,100,1000000,0,6000 +10022,Arena Stun Rune,276,100,1000000,0,5000 +10022,Arena Stun Rune,277,100,1000000,0,4000 +10022,Arena Stun Rune,278,100,1000000,0,3000 +10022,Arena Stun Rune,279,100,1000000,0,2000 +10022,Arena Stun Rune,280,800,1000000,0,1000 +10022,Arena Stun Rune,281,100,1000000,200,10000 +10022,Arena Stun Rune,282,100,1000000,0,9000 +10022,Arena Stun Rune,283,100,1000000,0,8000 +10022,Arena Stun Rune,284,100,1000000,0,7000 +10022,Arena Stun Rune,285,100,1000000,0,6000 +10022,Arena Stun Rune,286,100,1000000,0,5000 +10022,Arena Stun Rune,287,100,1000000,0,4000 +10022,Arena Stun Rune,288,100,1000000,0,3000 +10022,Arena Stun Rune,289,100,1000000,0,2000 +10022,Arena Stun Rune,290,800,1000000,0,1000 +10022,Arena Stun Rune,291,100,1000000,200,10000 +10022,Arena Stun Rune,292,100,1000000,0,9000 +10022,Arena Stun Rune,293,100,1000000,0,8000 +10022,Arena Stun Rune,294,100,1000000,0,7000 +10022,Arena Stun Rune,295,100,1000000,0,6000 +10022,Arena Stun Rune,296,100,1000000,0,5000 +10022,Arena Stun Rune,297,100,1000000,0,4000 +10022,Arena Stun Rune,298,100,1000000,0,3000 +10022,Arena Stun Rune,299,100,1000000,0,2000 +10022,Arena Stun Rune,300,800,1000000,0,1000 +10023,Adventure Vampiric Rune,1,50,5000,0,10000 +10023,Adventure Vampiric Rune,2,5,5000,0,8000 +10023,Adventure Vampiric Rune,3,5,5000,0,6000 +10023,Adventure Vampiric Rune,4,5,5000,0,10000 +10023,Adventure Vampiric Rune,5,5,5000,0,8000 +10023,Adventure Vampiric Rune,6,5,5000,0,6000 +10023,Adventure Vampiric Rune,7,5,5000,0,10000 +10023,Adventure Vampiric Rune,8,5,5000,0,8000 +10023,Adventure Vampiric Rune,9,5,5000,0,6000 +10023,Adventure Vampiric Rune,10,50,50000,0,5000 +10023,Adventure Vampiric Rune,11,5,5000,0,8000 +10023,Adventure Vampiric Rune,12,5,5000,0,8000 +10023,Adventure Vampiric Rune,13,5,5000,0,6000 +10023,Adventure Vampiric Rune,14,5,5000,0,10000 +10023,Adventure Vampiric Rune,15,5,5000,0,8000 +10023,Adventure Vampiric Rune,16,5,5000,0,6000 +10023,Adventure Vampiric Rune,17,5,5000,0,10000 +10023,Adventure Vampiric Rune,18,5,5000,0,8000 +10023,Adventure Vampiric Rune,19,5,5000,0,6000 +10023,Adventure Vampiric Rune,20,50,50000,0,5000 +10023,Adventure Vampiric Rune,21,5,5000,0,8000 +10023,Adventure Vampiric Rune,22,5,5000,0,8000 +10023,Adventure Vampiric Rune,23,5,5000,0,6000 +10023,Adventure Vampiric Rune,24,5,5000,0,10000 +10023,Adventure Vampiric Rune,25,5,5000,0,8000 +10023,Adventure Vampiric Rune,26,5,5000,0,6000 +10023,Adventure Vampiric Rune,27,5,5000,0,10000 +10023,Adventure Vampiric Rune,28,5,5000,0,8000 +10023,Adventure Vampiric Rune,29,5,5000,0,6000 +10023,Adventure Vampiric Rune,30,50,50000,0,5000 +10023,Adventure Vampiric Rune,31,10,20000,0,8000 +10023,Adventure Vampiric Rune,32,10,20000,0,8000 +10023,Adventure Vampiric Rune,33,10,20000,0,6000 +10023,Adventure Vampiric Rune,34,10,20000,0,10000 +10023,Adventure Vampiric Rune,35,10,20000,0,8000 +10023,Adventure Vampiric Rune,36,10,20000,0,6000 +10023,Adventure Vampiric Rune,37,10,20000,0,10000 +10023,Adventure Vampiric Rune,38,10,20000,0,8000 +10023,Adventure Vampiric Rune,39,10,20000,0,6000 +10023,Adventure Vampiric Rune,40,100,100000,0,5000 +10023,Adventure Vampiric Rune,41,10,20000,0,8000 +10023,Adventure Vampiric Rune,42,10,20000,0,8000 +10023,Adventure Vampiric Rune,43,10,20000,0,6000 +10023,Adventure Vampiric Rune,44,10,20000,0,10000 +10023,Adventure Vampiric Rune,45,10,20000,0,8000 +10023,Adventure Vampiric Rune,46,10,20000,0,6000 +10023,Adventure Vampiric Rune,47,10,20000,0,10000 +10023,Adventure Vampiric Rune,48,10,20000,0,8000 +10023,Adventure Vampiric Rune,49,10,20000,0,6000 +10023,Adventure Vampiric Rune,50,100,100000,0,5000 +10023,Adventure Vampiric Rune,51,15,20000,60,8000 +10023,Adventure Vampiric Rune,52,15,20000,0,8000 +10023,Adventure Vampiric Rune,53,15,20000,0,6000 +10023,Adventure Vampiric Rune,54,15,20000,0,10000 +10023,Adventure Vampiric Rune,55,15,20000,0,8000 +10023,Adventure Vampiric Rune,56,15,20000,0,6000 +10023,Adventure Vampiric Rune,57,15,20000,0,10000 +10023,Adventure Vampiric Rune,58,15,20000,0,8000 +10023,Adventure Vampiric Rune,59,15,20000,0,6000 +10023,Adventure Vampiric Rune,60,150,100000,0,5000 +10023,Adventure Vampiric Rune,61,15,20000,60,8000 +10023,Adventure Vampiric Rune,62,15,20000,0,8000 +10023,Adventure Vampiric Rune,63,15,20000,0,6000 +10023,Adventure Vampiric Rune,64,15,20000,0,10000 +10023,Adventure Vampiric Rune,65,15,20000,0,8000 +10023,Adventure Vampiric Rune,66,15,20000,0,6000 +10023,Adventure Vampiric Rune,67,15,20000,0,10000 +10023,Adventure Vampiric Rune,68,15,20000,0,8000 +10023,Adventure Vampiric Rune,69,15,20000,0,6000 +10023,Adventure Vampiric Rune,70,150,100000,0,5000 +10023,Adventure Vampiric Rune,71,20,50000,60,8000 +10023,Adventure Vampiric Rune,72,20,50000,0,9000 +10023,Adventure Vampiric Rune,73,20,50000,0,8000 +10023,Adventure Vampiric Rune,74,20,50000,0,7000 +10023,Adventure Vampiric Rune,75,20,50000,0,6000 +10023,Adventure Vampiric Rune,76,20,50000,0,5000 +10023,Adventure Vampiric Rune,77,20,50000,0,4000 +10023,Adventure Vampiric Rune,78,20,50000,0,3000 +10023,Adventure Vampiric Rune,79,20,50000,0,2000 +10023,Adventure Vampiric Rune,80,150,300000,0,1000 +10023,Adventure Vampiric Rune,81,20,50000,60,8000 +10023,Adventure Vampiric Rune,82,20,50000,0,9000 +10023,Adventure Vampiric Rune,83,20,50000,0,8000 +10023,Adventure Vampiric Rune,84,20,50000,0,7000 +10023,Adventure Vampiric Rune,85,20,50000,0,6000 +10023,Adventure Vampiric Rune,86,20,50000,0,5000 +10023,Adventure Vampiric Rune,87,20,50000,0,4000 +10023,Adventure Vampiric Rune,88,20,50000,0,3000 +10023,Adventure Vampiric Rune,89,20,50000,0,2000 +10023,Adventure Vampiric Rune,90,150,300000,0,1000 +10023,Adventure Vampiric Rune,91,20,50000,150,8000 +10023,Adventure Vampiric Rune,92,20,50000,0,9000 +10023,Adventure Vampiric Rune,93,20,50000,0,8000 +10023,Adventure Vampiric Rune,94,20,50000,0,7000 +10023,Adventure Vampiric Rune,95,20,50000,0,6000 +10023,Adventure Vampiric Rune,96,20,50000,0,5000 +10023,Adventure Vampiric Rune,97,20,50000,0,4000 +10023,Adventure Vampiric Rune,98,20,50000,0,3000 +10023,Adventure Vampiric Rune,99,20,50000,0,2000 +10023,Adventure Vampiric Rune,100,150,300000,0,1000 +10023,Adventure Vampiric Rune,101,30,50000,150,8000 +10023,Adventure Vampiric Rune,102,30,50000,0,9000 +10023,Adventure Vampiric Rune,103,30,50000,0,8000 +10023,Adventure Vampiric Rune,104,30,50000,0,7000 +10023,Adventure Vampiric Rune,105,30,50000,0,6000 +10023,Adventure Vampiric Rune,106,30,50000,0,5000 +10023,Adventure Vampiric Rune,107,30,50000,0,4000 +10023,Adventure Vampiric Rune,108,30,50000,0,3000 +10023,Adventure Vampiric Rune,109,30,50000,0,2000 +10023,Adventure Vampiric Rune,110,150,300000,0,1000 +10023,Adventure Vampiric Rune,111,30,50000,150,8000 +10023,Adventure Vampiric Rune,112,30,50000,0,9000 +10023,Adventure Vampiric Rune,113,30,50000,0,8000 +10023,Adventure Vampiric Rune,114,30,50000,0,7000 +10023,Adventure Vampiric Rune,115,30,50000,0,6000 +10023,Adventure Vampiric Rune,116,30,50000,0,5000 +10023,Adventure Vampiric Rune,117,30,50000,0,4000 +10023,Adventure Vampiric Rune,118,30,50000,0,3000 +10023,Adventure Vampiric Rune,119,30,50000,0,2000 +10023,Adventure Vampiric Rune,120,150,300000,0,1000 +10023,Adventure Vampiric Rune,121,30,50000,150,8000 +10023,Adventure Vampiric Rune,122,30,50000,0,9000 +10023,Adventure Vampiric Rune,123,30,50000,0,8000 +10023,Adventure Vampiric Rune,124,30,50000,0,7000 +10023,Adventure Vampiric Rune,125,30,50000,0,6000 +10023,Adventure Vampiric Rune,126,30,50000,0,5000 +10023,Adventure Vampiric Rune,127,30,50000,0,4000 +10023,Adventure Vampiric Rune,128,30,50000,0,3000 +10023,Adventure Vampiric Rune,129,30,50000,0,2000 +10023,Adventure Vampiric Rune,130,150,300000,0,1000 +10023,Adventure Vampiric Rune,131,40,300000,150,8000 +10023,Adventure Vampiric Rune,132,40,300000,0,8000 +10023,Adventure Vampiric Rune,133,40,300000,0,6000 +10023,Adventure Vampiric Rune,134,40,300000,0,4000 +10023,Adventure Vampiric Rune,135,200,1000000,0,1000 +10023,Adventure Vampiric Rune,136,40,300000,0,10000 +10023,Adventure Vampiric Rune,137,40,300000,0,8000 +10023,Adventure Vampiric Rune,138,40,300000,0,6000 +10023,Adventure Vampiric Rune,139,40,300000,0,4000 +10023,Adventure Vampiric Rune,140,200,1000000,0,1000 +10023,Adventure Vampiric Rune,141,40,300000,150,10000 +10023,Adventure Vampiric Rune,142,40,300000,0,9000 +10023,Adventure Vampiric Rune,143,40,300000,0,8000 +10023,Adventure Vampiric Rune,144,40,300000,0,7000 +10023,Adventure Vampiric Rune,145,40,300000,0,6000 +10023,Adventure Vampiric Rune,146,40,300000,0,5000 +10023,Adventure Vampiric Rune,147,40,300000,0,4000 +10023,Adventure Vampiric Rune,148,40,300000,0,3000 +10023,Adventure Vampiric Rune,149,40,300000,0,2000 +10023,Adventure Vampiric Rune,150,200,1000000,0,1000 +10023,Adventure Vampiric Rune,151,40,300000,150,10000 +10023,Adventure Vampiric Rune,152,40,300000,0,9000 +10023,Adventure Vampiric Rune,153,40,300000,0,8000 +10023,Adventure Vampiric Rune,154,40,300000,0,7000 +10023,Adventure Vampiric Rune,155,40,300000,0,6000 +10023,Adventure Vampiric Rune,156,40,300000,0,5000 +10023,Adventure Vampiric Rune,157,40,300000,0,4000 +10023,Adventure Vampiric Rune,158,40,300000,0,3000 +10023,Adventure Vampiric Rune,159,40,300000,0,2000 +10023,Adventure Vampiric Rune,160,200,1000000,0,1000 +10023,Adventure Vampiric Rune,161,40,300000,150,10000 +10023,Adventure Vampiric Rune,162,40,300000,0,9000 +10023,Adventure Vampiric Rune,163,40,300000,0,8000 +10023,Adventure Vampiric Rune,164,40,300000,0,7000 +10023,Adventure Vampiric Rune,165,40,300000,0,6000 +10023,Adventure Vampiric Rune,166,40,300000,0,5000 +10023,Adventure Vampiric Rune,167,40,300000,0,4000 +10023,Adventure Vampiric Rune,168,40,300000,0,3000 +10023,Adventure Vampiric Rune,169,40,300000,0,2000 +10023,Adventure Vampiric Rune,170,200,1000000,0,1000 +10023,Adventure Vampiric Rune,171,40,300000,150,10000 +10023,Adventure Vampiric Rune,172,40,300000,0,9000 +10023,Adventure Vampiric Rune,173,40,300000,0,8000 +10023,Adventure Vampiric Rune,174,40,300000,0,7000 +10023,Adventure Vampiric Rune,175,40,300000,0,6000 +10023,Adventure Vampiric Rune,176,40,300000,0,5000 +10023,Adventure Vampiric Rune,177,40,300000,0,4000 +10023,Adventure Vampiric Rune,178,40,300000,0,3000 +10023,Adventure Vampiric Rune,179,40,300000,0,2000 +10023,Adventure Vampiric Rune,180,200,1000000,0,1000 +10023,Adventure Vampiric Rune,181,40,300000,300,10000 +10023,Adventure Vampiric Rune,182,40,300000,0,9000 +10023,Adventure Vampiric Rune,183,40,300000,0,8000 +10023,Adventure Vampiric Rune,184,40,300000,0,7000 +10023,Adventure Vampiric Rune,185,40,300000,0,6000 +10023,Adventure Vampiric Rune,186,40,300000,0,5000 +10023,Adventure Vampiric Rune,187,40,300000,0,4000 +10023,Adventure Vampiric Rune,188,40,300000,0,3000 +10023,Adventure Vampiric Rune,189,40,300000,0,2000 +10023,Adventure Vampiric Rune,190,200,1000000,0,1000 +10023,Adventure Vampiric Rune,191,40,300000,300,10000 +10023,Adventure Vampiric Rune,192,40,300000,0,9000 +10023,Adventure Vampiric Rune,193,40,300000,0,8000 +10023,Adventure Vampiric Rune,194,40,300000,0,7000 +10023,Adventure Vampiric Rune,195,40,300000,0,6000 +10023,Adventure Vampiric Rune,196,40,300000,0,5000 +10023,Adventure Vampiric Rune,197,40,300000,0,4000 +10023,Adventure Vampiric Rune,198,40,300000,0,3000 +10023,Adventure Vampiric Rune,199,40,300000,0,2000 +10023,Adventure Vampiric Rune,200,200,1000000,0,1000 +10023,Adventure Vampiric Rune,201,50,500000,300,10000 +10023,Adventure Vampiric Rune,202,50,500000,0,9000 +10023,Adventure Vampiric Rune,203,50,500000,0,8000 +10023,Adventure Vampiric Rune,204,50,500000,0,7000 +10023,Adventure Vampiric Rune,205,50,500000,0,6000 +10023,Adventure Vampiric Rune,206,50,500000,0,5000 +10023,Adventure Vampiric Rune,207,50,500000,0,4000 +10023,Adventure Vampiric Rune,208,50,500000,0,3000 +10023,Adventure Vampiric Rune,209,50,500000,0,2000 +10023,Adventure Vampiric Rune,210,400,2000000,0,1000 +10023,Adventure Vampiric Rune,211,50,500000,300,10000 +10023,Adventure Vampiric Rune,212,50,500000,0,9000 +10023,Adventure Vampiric Rune,213,50,500000,0,8000 +10023,Adventure Vampiric Rune,214,50,500000,0,7000 +10023,Adventure Vampiric Rune,215,50,500000,0,6000 +10023,Adventure Vampiric Rune,216,50,500000,0,5000 +10023,Adventure Vampiric Rune,217,50,500000,0,4000 +10023,Adventure Vampiric Rune,218,50,500000,0,3000 +10023,Adventure Vampiric Rune,219,50,500000,0,2000 +10023,Adventure Vampiric Rune,220,400,2000000,0,1000 +10023,Adventure Vampiric Rune,221,50,500000,300,10000 +10023,Adventure Vampiric Rune,222,50,500000,0,9000 +10023,Adventure Vampiric Rune,223,50,500000,0,8000 +10023,Adventure Vampiric Rune,224,50,500000,0,7000 +10023,Adventure Vampiric Rune,225,50,500000,0,6000 +10023,Adventure Vampiric Rune,226,50,500000,0,5000 +10023,Adventure Vampiric Rune,227,50,500000,0,4000 +10023,Adventure Vampiric Rune,228,50,500000,0,3000 +10023,Adventure Vampiric Rune,229,50,500000,0,2000 +10023,Adventure Vampiric Rune,230,400,2000000,0,1000 +10023,Adventure Vampiric Rune,231,50,500000,300,10000 +10023,Adventure Vampiric Rune,232,50,500000,0,9000 +10023,Adventure Vampiric Rune,233,50,500000,0,8000 +10023,Adventure Vampiric Rune,234,50,500000,0,7000 +10023,Adventure Vampiric Rune,235,50,500000,0,6000 +10023,Adventure Vampiric Rune,236,50,500000,0,5000 +10023,Adventure Vampiric Rune,237,50,500000,0,4000 +10023,Adventure Vampiric Rune,238,50,500000,0,3000 +10023,Adventure Vampiric Rune,239,50,500000,0,2000 +10023,Adventure Vampiric Rune,240,400,2000000,0,1000 +10023,Adventure Vampiric Rune,241,50,500000,300,10000 +10023,Adventure Vampiric Rune,242,50,500000,0,9000 +10023,Adventure Vampiric Rune,243,50,500000,0,8000 +10023,Adventure Vampiric Rune,244,50,500000,0,7000 +10023,Adventure Vampiric Rune,245,50,500000,0,6000 +10023,Adventure Vampiric Rune,246,50,500000,0,5000 +10023,Adventure Vampiric Rune,247,50,500000,0,4000 +10023,Adventure Vampiric Rune,248,50,500000,0,3000 +10023,Adventure Vampiric Rune,249,50,500000,0,2000 +10023,Adventure Vampiric Rune,250,400,2000000,0,1000 +10023,Adventure Vampiric Rune,251,50,500000,600,10000 +10023,Adventure Vampiric Rune,252,50,500000,0,9000 +10023,Adventure Vampiric Rune,253,50,500000,0,8000 +10023,Adventure Vampiric Rune,254,50,500000,0,7000 +10023,Adventure Vampiric Rune,255,50,500000,0,6000 +10023,Adventure Vampiric Rune,256,50,500000,0,5000 +10023,Adventure Vampiric Rune,257,50,500000,0,4000 +10023,Adventure Vampiric Rune,258,50,500000,0,3000 +10023,Adventure Vampiric Rune,259,50,500000,0,2000 +10023,Adventure Vampiric Rune,260,400,2000000,0,1000 +10023,Adventure Vampiric Rune,261,50,500000,600,10000 +10023,Adventure Vampiric Rune,262,50,500000,0,9000 +10023,Adventure Vampiric Rune,263,50,500000,0,8000 +10023,Adventure Vampiric Rune,264,50,500000,0,7000 +10023,Adventure Vampiric Rune,265,50,500000,0,6000 +10023,Adventure Vampiric Rune,266,50,500000,0,5000 +10023,Adventure Vampiric Rune,267,50,500000,0,4000 +10023,Adventure Vampiric Rune,268,50,500000,0,3000 +10023,Adventure Vampiric Rune,269,50,500000,0,2000 +10023,Adventure Vampiric Rune,270,400,2000000,0,1000 +10023,Adventure Vampiric Rune,271,50,500000,600,10000 +10023,Adventure Vampiric Rune,272,50,500000,0,9000 +10023,Adventure Vampiric Rune,273,50,500000,0,8000 +10023,Adventure Vampiric Rune,274,50,500000,0,7000 +10023,Adventure Vampiric Rune,275,50,500000,0,6000 +10023,Adventure Vampiric Rune,276,50,500000,0,5000 +10023,Adventure Vampiric Rune,277,50,500000,0,4000 +10023,Adventure Vampiric Rune,278,50,500000,0,3000 +10023,Adventure Vampiric Rune,279,50,500000,0,2000 +10023,Adventure Vampiric Rune,280,400,2000000,0,1000 +10023,Adventure Vampiric Rune,281,50,500000,600,10000 +10023,Adventure Vampiric Rune,282,50,500000,0,9000 +10023,Adventure Vampiric Rune,283,50,500000,0,8000 +10023,Adventure Vampiric Rune,284,50,500000,0,7000 +10023,Adventure Vampiric Rune,285,50,500000,0,6000 +10023,Adventure Vampiric Rune,286,50,500000,0,5000 +10023,Adventure Vampiric Rune,287,50,500000,0,4000 +10023,Adventure Vampiric Rune,288,50,500000,0,3000 +10023,Adventure Vampiric Rune,289,50,500000,0,2000 +10023,Adventure Vampiric Rune,290,400,2000000,0,1000 +10023,Adventure Vampiric Rune,291,50,500000,600,10000 +10023,Adventure Vampiric Rune,292,50,500000,0,9000 +10023,Adventure Vampiric Rune,293,50,500000,0,8000 +10023,Adventure Vampiric Rune,294,50,500000,0,7000 +10023,Adventure Vampiric Rune,295,50,500000,0,6000 +10023,Adventure Vampiric Rune,296,50,500000,0,5000 +10023,Adventure Vampiric Rune,297,50,500000,0,4000 +10023,Adventure Vampiric Rune,298,50,500000,0,3000 +10023,Adventure Vampiric Rune,299,50,500000,0,2000 +10023,Adventure Vampiric Rune,300,400,2000000,0,1000 +10024,WorldBoss Vampiric Rune,1,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,2,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,3,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,4,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,5,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,6,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,7,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,8,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,9,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,10,10,2000000,0,10000 +10024,WorldBoss Vampiric Rune,11,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,12,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,13,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,14,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,15,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,16,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,17,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,18,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,19,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,20,10,2000000,0,10000 +10024,WorldBoss Vampiric Rune,21,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,22,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,23,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,24,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,25,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,26,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,27,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,28,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,29,10,400000,0,10000 +10024,WorldBoss Vampiric Rune,30,10,2000000,0,10000 +10024,WorldBoss Vampiric Rune,31,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,32,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,33,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,34,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,35,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,36,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,37,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,38,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,39,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,40,30,3000000,0,10000 +10024,WorldBoss Vampiric Rune,41,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,42,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,43,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,44,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,45,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,46,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,47,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,48,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,49,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,50,30,3000000,0,10000 +10024,WorldBoss Vampiric Rune,51,30,600000,100,10000 +10024,WorldBoss Vampiric Rune,52,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,53,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,54,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,55,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,56,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,57,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,58,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,59,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,60,30,3000000,0,10000 +10024,WorldBoss Vampiric Rune,61,30,600000,100,10000 +10024,WorldBoss Vampiric Rune,62,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,63,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,64,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,65,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,66,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,67,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,68,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,69,30,600000,0,10000 +10024,WorldBoss Vampiric Rune,70,30,3000000,0,10000 +10024,WorldBoss Vampiric Rune,71,40,1000000,150,10000 +10024,WorldBoss Vampiric Rune,72,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,73,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,74,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,75,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,76,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,77,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,78,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,79,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,80,40,5000000,0,10000 +10024,WorldBoss Vampiric Rune,81,40,1000000,150,10000 +10024,WorldBoss Vampiric Rune,82,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,83,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,84,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,85,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,86,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,87,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,88,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,89,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,90,40,5000000,0,10000 +10024,WorldBoss Vampiric Rune,91,40,1000000,150,10000 +10024,WorldBoss Vampiric Rune,92,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,93,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,94,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,95,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,96,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,97,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,98,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,99,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,100,40,5000000,0,10000 +10024,WorldBoss Vampiric Rune,101,40,1000000,200,10000 +10024,WorldBoss Vampiric Rune,102,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,103,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,104,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,105,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,106,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,107,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,108,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,109,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,110,40,5000000,0,10000 +10024,WorldBoss Vampiric Rune,111,40,1000000,200,10000 +10024,WorldBoss Vampiric Rune,112,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,113,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,114,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,115,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,116,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,117,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,118,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,119,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,120,40,5000000,0,10000 +10024,WorldBoss Vampiric Rune,121,40,1000000,200,10000 +10024,WorldBoss Vampiric Rune,122,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,123,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,124,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,125,40,1000000,0,10000 +10024,WorldBoss Vampiric Rune,126,50,1000000,0,10000 +10024,WorldBoss Vampiric Rune,127,50,1000000,0,10000 +10024,WorldBoss Vampiric Rune,128,50,1000000,0,10000 +10024,WorldBoss Vampiric Rune,129,50,1000000,0,10000 +10024,WorldBoss Vampiric Rune,130,50,5000000,0,10000 +10024,WorldBoss Vampiric Rune,131,50,1500000,200,10000 +10024,WorldBoss Vampiric Rune,132,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,133,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,134,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,135,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,136,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,137,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,138,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,139,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,140,50,6000000,0,10000 +10024,WorldBoss Vampiric Rune,141,50,1500000,200,10000 +10024,WorldBoss Vampiric Rune,142,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,143,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,144,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,145,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,146,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,147,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,148,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,149,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,150,50,6000000,0,10000 +10024,WorldBoss Vampiric Rune,151,50,1500000,200,10000 +10024,WorldBoss Vampiric Rune,152,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,153,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,154,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,155,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,156,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,157,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,158,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,159,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,160,50,6000000,0,10000 +10024,WorldBoss Vampiric Rune,161,50,1500000,200,10000 +10024,WorldBoss Vampiric Rune,162,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,163,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,164,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,165,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,166,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,167,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,168,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,169,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,170,50,6000000,0,10000 +10024,WorldBoss Vampiric Rune,171,50,1500000,200,10000 +10024,WorldBoss Vampiric Rune,172,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,173,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,174,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,175,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,176,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,177,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,178,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,179,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,180,50,6000000,0,10000 +10024,WorldBoss Vampiric Rune,181,50,1500000,300,10000 +10024,WorldBoss Vampiric Rune,182,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,183,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,184,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,185,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,186,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,187,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,188,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,189,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,190,50,6000000,0,10000 +10024,WorldBoss Vampiric Rune,191,50,1500000,300,10000 +10024,WorldBoss Vampiric Rune,192,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,193,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,194,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,195,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,196,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,197,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,198,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,199,50,1500000,0,10000 +10024,WorldBoss Vampiric Rune,200,50,6000000,0,10000 +10024,WorldBoss Vampiric Rune,201,80,2000000,300,10000 +10024,WorldBoss Vampiric Rune,202,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,203,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,204,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,205,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,206,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,207,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,208,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,209,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,210,80,8000000,0,10000 +10024,WorldBoss Vampiric Rune,211,80,2000000,500,10000 +10024,WorldBoss Vampiric Rune,212,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,213,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,214,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,215,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,216,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,217,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,218,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,219,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,220,80,8000000,0,10000 +10024,WorldBoss Vampiric Rune,221,80,2000000,500,10000 +10024,WorldBoss Vampiric Rune,222,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,223,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,224,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,225,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,226,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,227,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,228,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,229,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,230,80,8000000,0,10000 +10024,WorldBoss Vampiric Rune,231,80,2000000,500,10000 +10024,WorldBoss Vampiric Rune,232,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,233,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,234,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,235,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,236,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,237,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,238,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,239,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,240,80,8000000,0,10000 +10024,WorldBoss Vampiric Rune,241,80,2000000,500,10000 +10024,WorldBoss Vampiric Rune,242,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,243,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,244,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,245,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,246,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,247,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,248,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,249,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,250,80,8000000,0,10000 +10024,WorldBoss Vampiric Rune,251,80,2000000,500,10000 +10024,WorldBoss Vampiric Rune,252,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,253,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,254,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,255,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,256,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,257,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,258,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,259,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,260,80,8000000,0,10000 +10024,WorldBoss Vampiric Rune,261,80,2000000,1000,10000 +10024,WorldBoss Vampiric Rune,262,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,263,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,264,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,265,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,266,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,267,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,268,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,269,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,270,80,8000000,0,10000 +10024,WorldBoss Vampiric Rune,271,80,2000000,1000,10000 +10024,WorldBoss Vampiric Rune,272,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,273,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,274,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,275,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,276,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,277,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,278,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,279,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,280,80,8000000,0,10000 +10024,WorldBoss Vampiric Rune,281,80,2000000,1000,10000 +10024,WorldBoss Vampiric Rune,282,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,283,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,284,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,285,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,286,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,287,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,288,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,289,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,290,80,8000000,0,10000 +10024,WorldBoss Vampiric Rune,291,80,2000000,1000,10000 +10024,WorldBoss Vampiric Rune,292,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,293,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,294,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,295,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,296,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,297,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,298,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,299,80,2000000,0,10000 +10024,WorldBoss Vampiric Rune,300,80,8000000,0,10000 +10025,Adventure Stamina Rune,1,100,2000,0,10000 +10025,Adventure Stamina Rune,2,10,2000,0,8000 +10025,Adventure Stamina Rune,3,10,2000,0,6000 +10025,Adventure Stamina Rune,4,10,2000,0,10000 +10025,Adventure Stamina Rune,5,10,2000,0,8000 +10025,Adventure Stamina Rune,6,10,2000,0,6000 +10025,Adventure Stamina Rune,7,10,2000,0,10000 +10025,Adventure Stamina Rune,8,10,2000,0,8000 +10025,Adventure Stamina Rune,9,10,2000,0,6000 +10025,Adventure Stamina Rune,10,100,2000,0,5000 +10025,Adventure Stamina Rune,11,10,2000,0,10000 +10025,Adventure Stamina Rune,12,10,2000,0,8000 +10025,Adventure Stamina Rune,13,10,2000,0,6000 +10025,Adventure Stamina Rune,14,10,2000,0,10000 +10025,Adventure Stamina Rune,15,10,2000,0,8000 +10025,Adventure Stamina Rune,16,10,2000,0,6000 +10025,Adventure Stamina Rune,17,10,2000,0,10000 +10025,Adventure Stamina Rune,18,10,2000,0,8000 +10025,Adventure Stamina Rune,19,10,2000,0,6000 +10025,Adventure Stamina Rune,20,100,2000,0,5000 +10025,Adventure Stamina Rune,21,10,2000,0,10000 +10025,Adventure Stamina Rune,22,10,2000,0,8000 +10025,Adventure Stamina Rune,23,10,2000,0,6000 +10025,Adventure Stamina Rune,24,10,2000,0,10000 +10025,Adventure Stamina Rune,25,10,2000,0,8000 +10025,Adventure Stamina Rune,26,10,2000,0,6000 +10025,Adventure Stamina Rune,27,10,2000,0,10000 +10025,Adventure Stamina Rune,28,10,2000,0,8000 +10025,Adventure Stamina Rune,29,10,2000,0,6000 +10025,Adventure Stamina Rune,30,100,2000,0,5000 +10025,Adventure Stamina Rune,31,30,10000,0,10000 +10025,Adventure Stamina Rune,32,30,10000,0,8000 +10025,Adventure Stamina Rune,33,30,10000,0,6000 +10025,Adventure Stamina Rune,34,30,10000,0,10000 +10025,Adventure Stamina Rune,35,30,10000,0,8000 +10025,Adventure Stamina Rune,36,30,10000,0,6000 +10025,Adventure Stamina Rune,37,30,10000,0,10000 +10025,Adventure Stamina Rune,38,30,10000,0,8000 +10025,Adventure Stamina Rune,39,30,10000,0,6000 +10025,Adventure Stamina Rune,40,300,10000,0,5000 +10025,Adventure Stamina Rune,41,30,10000,0,10000 +10025,Adventure Stamina Rune,42,30,10000,0,8000 +10025,Adventure Stamina Rune,43,30,10000,0,6000 +10025,Adventure Stamina Rune,44,30,10000,0,10000 +10025,Adventure Stamina Rune,45,30,10000,0,8000 +10025,Adventure Stamina Rune,46,30,10000,0,6000 +10025,Adventure Stamina Rune,47,30,10000,0,10000 +10025,Adventure Stamina Rune,48,30,10000,0,8000 +10025,Adventure Stamina Rune,49,30,10000,0,6000 +10025,Adventure Stamina Rune,50,300,10000,0,5000 +10025,Adventure Stamina Rune,51,30,10000,20,10000 +10025,Adventure Stamina Rune,52,30,10000,0,8000 +10025,Adventure Stamina Rune,53,30,10000,0,6000 +10025,Adventure Stamina Rune,54,30,10000,0,10000 +10025,Adventure Stamina Rune,55,30,10000,0,8000 +10025,Adventure Stamina Rune,56,30,10000,0,6000 +10025,Adventure Stamina Rune,57,30,10000,0,10000 +10025,Adventure Stamina Rune,58,30,10000,0,8000 +10025,Adventure Stamina Rune,59,30,10000,0,6000 +10025,Adventure Stamina Rune,60,300,10000,0,5000 +10025,Adventure Stamina Rune,61,30,10000,20,10000 +10025,Adventure Stamina Rune,62,30,10000,0,8000 +10025,Adventure Stamina Rune,63,30,10000,0,6000 +10025,Adventure Stamina Rune,64,30,10000,0,10000 +10025,Adventure Stamina Rune,65,30,10000,0,8000 +10025,Adventure Stamina Rune,66,30,10000,0,6000 +10025,Adventure Stamina Rune,67,30,10000,0,10000 +10025,Adventure Stamina Rune,68,30,10000,0,8000 +10025,Adventure Stamina Rune,69,30,10000,0,6000 +10025,Adventure Stamina Rune,70,300,10000,0,5000 +10025,Adventure Stamina Rune,71,60,50000,20,10000 +10025,Adventure Stamina Rune,72,60,50000,0,9000 +10025,Adventure Stamina Rune,73,60,50000,0,8000 +10025,Adventure Stamina Rune,74,60,50000,0,7000 +10025,Adventure Stamina Rune,75,60,50000,0,6000 +10025,Adventure Stamina Rune,76,60,50000,0,5000 +10025,Adventure Stamina Rune,77,60,50000,0,4000 +10025,Adventure Stamina Rune,78,60,50000,0,3000 +10025,Adventure Stamina Rune,79,60,50000,0,2000 +10025,Adventure Stamina Rune,80,300,50000,0,1000 +10025,Adventure Stamina Rune,81,60,50000,20,10000 +10025,Adventure Stamina Rune,82,60,50000,0,9000 +10025,Adventure Stamina Rune,83,60,50000,0,8000 +10025,Adventure Stamina Rune,84,60,50000,0,7000 +10025,Adventure Stamina Rune,85,60,50000,0,6000 +10025,Adventure Stamina Rune,86,60,50000,0,5000 +10025,Adventure Stamina Rune,87,60,50000,0,4000 +10025,Adventure Stamina Rune,88,60,50000,0,3000 +10025,Adventure Stamina Rune,89,60,50000,0,2000 +10025,Adventure Stamina Rune,90,300,50000,0,1000 +10025,Adventure Stamina Rune,91,60,50000,50,10000 +10025,Adventure Stamina Rune,92,60,50000,0,9000 +10025,Adventure Stamina Rune,93,60,50000,0,8000 +10025,Adventure Stamina Rune,94,60,50000,0,7000 +10025,Adventure Stamina Rune,95,60,50000,0,6000 +10025,Adventure Stamina Rune,96,60,50000,0,5000 +10025,Adventure Stamina Rune,97,60,50000,0,4000 +10025,Adventure Stamina Rune,98,60,50000,0,3000 +10025,Adventure Stamina Rune,99,60,50000,0,2000 +10025,Adventure Stamina Rune,100,300,50000,0,1000 +10025,Adventure Stamina Rune,101,60,50000,50,10000 +10025,Adventure Stamina Rune,102,60,50000,0,9000 +10025,Adventure Stamina Rune,103,60,50000,0,8000 +10025,Adventure Stamina Rune,104,60,50000,0,7000 +10025,Adventure Stamina Rune,105,60,50000,0,6000 +10025,Adventure Stamina Rune,106,60,50000,0,5000 +10025,Adventure Stamina Rune,107,60,50000,0,4000 +10025,Adventure Stamina Rune,108,60,50000,0,3000 +10025,Adventure Stamina Rune,109,60,50000,0,2000 +10025,Adventure Stamina Rune,110,300,50000,0,1000 +10025,Adventure Stamina Rune,111,60,50000,50,10000 +10025,Adventure Stamina Rune,112,60,50000,0,9000 +10025,Adventure Stamina Rune,113,60,50000,0,8000 +10025,Adventure Stamina Rune,114,60,50000,0,7000 +10025,Adventure Stamina Rune,115,60,50000,0,6000 +10025,Adventure Stamina Rune,116,60,50000,0,5000 +10025,Adventure Stamina Rune,117,60,50000,0,4000 +10025,Adventure Stamina Rune,118,60,50000,0,3000 +10025,Adventure Stamina Rune,119,60,50000,0,2000 +10025,Adventure Stamina Rune,120,300,50000,0,1000 +10025,Adventure Stamina Rune,121,60,50000,50,10000 +10025,Adventure Stamina Rune,122,60,50000,0,9000 +10025,Adventure Stamina Rune,123,60,50000,0,8000 +10025,Adventure Stamina Rune,124,60,50000,0,7000 +10025,Adventure Stamina Rune,125,60,50000,0,6000 +10025,Adventure Stamina Rune,126,60,200000,0,5000 +10025,Adventure Stamina Rune,127,60,200000,0,4000 +10025,Adventure Stamina Rune,128,60,200000,0,3000 +10025,Adventure Stamina Rune,129,60,200000,0,2000 +10025,Adventure Stamina Rune,130,300,200000,0,1000 +10025,Adventure Stamina Rune,131,80,200000,50,10000 +10025,Adventure Stamina Rune,132,80,200000,0,8000 +10025,Adventure Stamina Rune,133,80,200000,0,6000 +10025,Adventure Stamina Rune,134,80,200000,0,4000 +10025,Adventure Stamina Rune,135,400,200000,0,1000 +10025,Adventure Stamina Rune,136,80,200000,0,10000 +10025,Adventure Stamina Rune,137,80,200000,0,8000 +10025,Adventure Stamina Rune,138,80,200000,0,6000 +10025,Adventure Stamina Rune,139,80,200000,0,4000 +10025,Adventure Stamina Rune,140,400,200000,0,1000 +10025,Adventure Stamina Rune,141,80,200000,50,10000 +10025,Adventure Stamina Rune,142,80,200000,0,9000 +10025,Adventure Stamina Rune,143,80,200000,0,8000 +10025,Adventure Stamina Rune,144,80,200000,0,7000 +10025,Adventure Stamina Rune,145,80,200000,0,6000 +10025,Adventure Stamina Rune,146,80,200000,0,5000 +10025,Adventure Stamina Rune,147,80,200000,0,4000 +10025,Adventure Stamina Rune,148,80,200000,0,3000 +10025,Adventure Stamina Rune,149,80,200000,0,2000 +10025,Adventure Stamina Rune,150,400,200000,0,1000 +10025,Adventure Stamina Rune,151,80,200000,50,10000 +10025,Adventure Stamina Rune,152,80,200000,0,9000 +10025,Adventure Stamina Rune,153,80,200000,0,8000 +10025,Adventure Stamina Rune,154,80,200000,0,7000 +10025,Adventure Stamina Rune,155,80,200000,0,6000 +10025,Adventure Stamina Rune,156,80,200000,0,5000 +10025,Adventure Stamina Rune,157,80,200000,0,4000 +10025,Adventure Stamina Rune,158,80,200000,0,3000 +10025,Adventure Stamina Rune,159,80,200000,0,2000 +10025,Adventure Stamina Rune,160,400,200000,0,1000 +10025,Adventure Stamina Rune,161,80,200000,50,10000 +10025,Adventure Stamina Rune,162,80,200000,0,9000 +10025,Adventure Stamina Rune,163,80,200000,0,8000 +10025,Adventure Stamina Rune,164,80,200000,0,7000 +10025,Adventure Stamina Rune,165,80,200000,0,6000 +10025,Adventure Stamina Rune,166,80,200000,0,5000 +10025,Adventure Stamina Rune,167,80,200000,0,4000 +10025,Adventure Stamina Rune,168,80,200000,0,3000 +10025,Adventure Stamina Rune,169,80,200000,0,2000 +10025,Adventure Stamina Rune,170,400,200000,0,1000 +10025,Adventure Stamina Rune,171,80,200000,50,10000 +10025,Adventure Stamina Rune,172,80,200000,0,9000 +10025,Adventure Stamina Rune,173,80,200000,0,8000 +10025,Adventure Stamina Rune,174,80,200000,0,7000 +10025,Adventure Stamina Rune,175,80,200000,0,6000 +10025,Adventure Stamina Rune,176,80,200000,0,5000 +10025,Adventure Stamina Rune,177,80,200000,0,4000 +10025,Adventure Stamina Rune,178,80,200000,0,3000 +10025,Adventure Stamina Rune,179,80,200000,0,2000 +10025,Adventure Stamina Rune,180,400,200000,0,1000 +10025,Adventure Stamina Rune,181,80,200000,100,10000 +10025,Adventure Stamina Rune,182,80,200000,0,9000 +10025,Adventure Stamina Rune,183,80,200000,0,8000 +10025,Adventure Stamina Rune,184,80,200000,0,7000 +10025,Adventure Stamina Rune,185,80,200000,0,6000 +10025,Adventure Stamina Rune,186,80,200000,0,5000 +10025,Adventure Stamina Rune,187,80,200000,0,4000 +10025,Adventure Stamina Rune,188,80,200000,0,3000 +10025,Adventure Stamina Rune,189,80,200000,0,2000 +10025,Adventure Stamina Rune,190,400,200000,0,1000 +10025,Adventure Stamina Rune,191,80,200000,100,10000 +10025,Adventure Stamina Rune,192,80,200000,0,9000 +10025,Adventure Stamina Rune,193,80,200000,0,8000 +10025,Adventure Stamina Rune,194,80,200000,0,7000 +10025,Adventure Stamina Rune,195,80,200000,0,6000 +10025,Adventure Stamina Rune,196,80,200000,0,5000 +10025,Adventure Stamina Rune,197,80,200000,0,4000 +10025,Adventure Stamina Rune,198,80,200000,0,3000 +10025,Adventure Stamina Rune,199,80,200000,0,2000 +10025,Adventure Stamina Rune,200,400,200000,0,1000 +10025,Adventure Stamina Rune,201,100,500000,100,10000 +10025,Adventure Stamina Rune,202,100,500000,0,9000 +10025,Adventure Stamina Rune,203,100,500000,0,8000 +10025,Adventure Stamina Rune,204,100,500000,0,7000 +10025,Adventure Stamina Rune,205,100,500000,0,6000 +10025,Adventure Stamina Rune,206,100,500000,0,5000 +10025,Adventure Stamina Rune,207,100,500000,0,4000 +10025,Adventure Stamina Rune,208,100,500000,0,3000 +10025,Adventure Stamina Rune,209,100,500000,0,2000 +10025,Adventure Stamina Rune,210,800,500000,0,1000 +10025,Adventure Stamina Rune,211,100,500000,100,10000 +10025,Adventure Stamina Rune,212,100,500000,0,9000 +10025,Adventure Stamina Rune,213,100,500000,0,8000 +10025,Adventure Stamina Rune,214,100,500000,0,7000 +10025,Adventure Stamina Rune,215,100,500000,0,6000 +10025,Adventure Stamina Rune,216,100,500000,0,5000 +10025,Adventure Stamina Rune,217,100,500000,0,4000 +10025,Adventure Stamina Rune,218,100,500000,0,3000 +10025,Adventure Stamina Rune,219,100,500000,0,2000 +10025,Adventure Stamina Rune,220,800,500000,0,1000 +10025,Adventure Stamina Rune,221,100,500000,100,10000 +10025,Adventure Stamina Rune,222,100,500000,0,9000 +10025,Adventure Stamina Rune,223,100,500000,0,8000 +10025,Adventure Stamina Rune,224,100,500000,0,7000 +10025,Adventure Stamina Rune,225,100,500000,0,6000 +10025,Adventure Stamina Rune,226,100,500000,0,5000 +10025,Adventure Stamina Rune,227,100,500000,0,4000 +10025,Adventure Stamina Rune,228,100,500000,0,3000 +10025,Adventure Stamina Rune,229,100,500000,0,2000 +10025,Adventure Stamina Rune,230,800,500000,0,1000 +10025,Adventure Stamina Rune,231,100,500000,100,10000 +10025,Adventure Stamina Rune,232,100,500000,0,9000 +10025,Adventure Stamina Rune,233,100,500000,0,8000 +10025,Adventure Stamina Rune,234,100,500000,0,7000 +10025,Adventure Stamina Rune,235,100,500000,0,6000 +10025,Adventure Stamina Rune,236,100,500000,0,5000 +10025,Adventure Stamina Rune,237,100,500000,0,4000 +10025,Adventure Stamina Rune,238,100,500000,0,3000 +10025,Adventure Stamina Rune,239,100,500000,0,2000 +10025,Adventure Stamina Rune,240,800,500000,0,1000 +10025,Adventure Stamina Rune,241,100,500000,100,10000 +10025,Adventure Stamina Rune,242,100,500000,0,9000 +10025,Adventure Stamina Rune,243,100,500000,0,8000 +10025,Adventure Stamina Rune,244,100,500000,0,7000 +10025,Adventure Stamina Rune,245,100,500000,0,6000 +10025,Adventure Stamina Rune,246,100,500000,0,5000 +10025,Adventure Stamina Rune,247,100,500000,0,4000 +10025,Adventure Stamina Rune,248,100,500000,0,3000 +10025,Adventure Stamina Rune,249,100,500000,0,2000 +10025,Adventure Stamina Rune,250,800,500000,0,1000 +10025,Adventure Stamina Rune,251,100,1000000,200,10000 +10025,Adventure Stamina Rune,252,100,1000000,0,9000 +10025,Adventure Stamina Rune,253,100,1000000,0,8000 +10025,Adventure Stamina Rune,254,100,1000000,0,7000 +10025,Adventure Stamina Rune,255,100,1000000,0,6000 +10025,Adventure Stamina Rune,256,100,1000000,0,5000 +10025,Adventure Stamina Rune,257,100,1000000,0,4000 +10025,Adventure Stamina Rune,258,100,1000000,0,3000 +10025,Adventure Stamina Rune,259,100,1000000,0,2000 +10025,Adventure Stamina Rune,260,800,1000000,0,1000 +10025,Adventure Stamina Rune,261,100,1000000,200,10000 +10025,Adventure Stamina Rune,262,100,1000000,0,9000 +10025,Adventure Stamina Rune,263,100,1000000,0,8000 +10025,Adventure Stamina Rune,264,100,1000000,0,7000 +10025,Adventure Stamina Rune,265,100,1000000,0,6000 +10025,Adventure Stamina Rune,266,100,1000000,0,5000 +10025,Adventure Stamina Rune,267,100,1000000,0,4000 +10025,Adventure Stamina Rune,268,100,1000000,0,3000 +10025,Adventure Stamina Rune,269,100,1000000,0,2000 +10025,Adventure Stamina Rune,270,800,1000000,0,1000 +10025,Adventure Stamina Rune,271,100,1000000,200,10000 +10025,Adventure Stamina Rune,272,100,1000000,0,9000 +10025,Adventure Stamina Rune,273,100,1000000,0,8000 +10025,Adventure Stamina Rune,274,100,1000000,0,7000 +10025,Adventure Stamina Rune,275,100,1000000,0,6000 +10025,Adventure Stamina Rune,276,100,1000000,0,5000 +10025,Adventure Stamina Rune,277,100,1000000,0,4000 +10025,Adventure Stamina Rune,278,100,1000000,0,3000 +10025,Adventure Stamina Rune,279,100,1000000,0,2000 +10025,Adventure Stamina Rune,280,800,1000000,0,1000 +10025,Adventure Stamina Rune,281,100,1000000,200,10000 +10025,Adventure Stamina Rune,282,100,1000000,0,9000 +10025,Adventure Stamina Rune,283,100,1000000,0,8000 +10025,Adventure Stamina Rune,284,100,1000000,0,7000 +10025,Adventure Stamina Rune,285,100,1000000,0,6000 +10025,Adventure Stamina Rune,286,100,1000000,0,5000 +10025,Adventure Stamina Rune,287,100,1000000,0,4000 +10025,Adventure Stamina Rune,288,100,1000000,0,3000 +10025,Adventure Stamina Rune,289,100,1000000,0,2000 +10025,Adventure Stamina Rune,290,800,1000000,0,1000 +10025,Adventure Stamina Rune,291,100,1000000,200,10000 +10025,Adventure Stamina Rune,292,100,1000000,0,9000 +10025,Adventure Stamina Rune,293,100,1000000,0,8000 +10025,Adventure Stamina Rune,294,100,1000000,0,7000 +10025,Adventure Stamina Rune,295,100,1000000,0,6000 +10025,Adventure Stamina Rune,296,100,1000000,0,5000 +10025,Adventure Stamina Rune,297,100,1000000,0,4000 +10025,Adventure Stamina Rune,298,100,1000000,0,3000 +10025,Adventure Stamina Rune,299,100,1000000,0,2000 +10025,Adventure Stamina Rune,300,800,1000000,0,1000 +10026,Arena Stamina Rune,1,50,5000,0,10000 +10026,Arena Stamina Rune,2,5,5000,0,8000 +10026,Arena Stamina Rune,3,5,5000,0,6000 +10026,Arena Stamina Rune,4,5,5000,0,10000 +10026,Arena Stamina Rune,5,5,5000,0,8000 +10026,Arena Stamina Rune,6,5,5000,0,6000 +10026,Arena Stamina Rune,7,5,5000,0,10000 +10026,Arena Stamina Rune,8,5,5000,0,8000 +10026,Arena Stamina Rune,9,5,5000,0,6000 +10026,Arena Stamina Rune,10,50,50000,0,5000 +10026,Arena Stamina Rune,11,5,5000,0,10000 +10026,Arena Stamina Rune,12,5,5000,0,8000 +10026,Arena Stamina Rune,13,5,5000,0,6000 +10026,Arena Stamina Rune,14,5,5000,0,10000 +10026,Arena Stamina Rune,15,5,5000,0,8000 +10026,Arena Stamina Rune,16,5,5000,0,6000 +10026,Arena Stamina Rune,17,5,5000,0,10000 +10026,Arena Stamina Rune,18,5,5000,0,8000 +10026,Arena Stamina Rune,19,5,5000,0,6000 +10026,Arena Stamina Rune,20,50,50000,0,5000 +10026,Arena Stamina Rune,21,5,5000,0,10000 +10026,Arena Stamina Rune,22,5,5000,0,8000 +10026,Arena Stamina Rune,23,5,5000,0,6000 +10026,Arena Stamina Rune,24,5,5000,0,10000 +10026,Arena Stamina Rune,25,5,5000,0,8000 +10026,Arena Stamina Rune,26,5,5000,0,6000 +10026,Arena Stamina Rune,27,5,5000,0,10000 +10026,Arena Stamina Rune,28,5,5000,0,8000 +10026,Arena Stamina Rune,29,5,5000,0,6000 +10026,Arena Stamina Rune,30,50,50000,0,5000 +10026,Arena Stamina Rune,31,10,20000,0,10000 +10026,Arena Stamina Rune,32,10,20000,0,8000 +10026,Arena Stamina Rune,33,10,20000,0,6000 +10026,Arena Stamina Rune,34,10,20000,0,10000 +10026,Arena Stamina Rune,35,10,20000,0,8000 +10026,Arena Stamina Rune,36,10,20000,0,6000 +10026,Arena Stamina Rune,37,10,20000,0,10000 +10026,Arena Stamina Rune,38,10,20000,0,8000 +10026,Arena Stamina Rune,39,10,20000,0,6000 +10026,Arena Stamina Rune,40,100,100000,0,5000 +10026,Arena Stamina Rune,41,10,20000,0,10000 +10026,Arena Stamina Rune,42,10,20000,0,8000 +10026,Arena Stamina Rune,43,10,20000,0,6000 +10026,Arena Stamina Rune,44,10,20000,0,10000 +10026,Arena Stamina Rune,45,10,20000,0,8000 +10026,Arena Stamina Rune,46,10,20000,0,6000 +10026,Arena Stamina Rune,47,10,20000,0,10000 +10026,Arena Stamina Rune,48,10,20000,0,8000 +10026,Arena Stamina Rune,49,10,20000,0,6000 +10026,Arena Stamina Rune,50,100,100000,0,5000 +10026,Arena Stamina Rune,51,15,20000,60,10000 +10026,Arena Stamina Rune,52,15,20000,0,8000 +10026,Arena Stamina Rune,53,15,20000,0,6000 +10026,Arena Stamina Rune,54,15,20000,0,10000 +10026,Arena Stamina Rune,55,15,20000,0,8000 +10026,Arena Stamina Rune,56,15,20000,0,6000 +10026,Arena Stamina Rune,57,15,20000,0,10000 +10026,Arena Stamina Rune,58,15,20000,0,8000 +10026,Arena Stamina Rune,59,15,20000,0,6000 +10026,Arena Stamina Rune,60,150,100000,0,5000 +10026,Arena Stamina Rune,61,15,20000,60,10000 +10026,Arena Stamina Rune,62,15,20000,0,8000 +10026,Arena Stamina Rune,63,15,20000,0,6000 +10026,Arena Stamina Rune,64,15,20000,0,10000 +10026,Arena Stamina Rune,65,15,20000,0,8000 +10026,Arena Stamina Rune,66,15,20000,0,6000 +10026,Arena Stamina Rune,67,15,20000,0,10000 +10026,Arena Stamina Rune,68,15,20000,0,8000 +10026,Arena Stamina Rune,69,15,20000,0,6000 +10026,Arena Stamina Rune,70,150,100000,0,5000 +10026,Arena Stamina Rune,71,20,50000,60,10000 +10026,Arena Stamina Rune,72,20,50000,0,9000 +10026,Arena Stamina Rune,73,20,50000,0,8000 +10026,Arena Stamina Rune,74,20,50000,0,7000 +10026,Arena Stamina Rune,75,20,50000,0,6000 +10026,Arena Stamina Rune,76,20,50000,0,5000 +10026,Arena Stamina Rune,77,20,50000,0,4000 +10026,Arena Stamina Rune,78,20,50000,0,3000 +10026,Arena Stamina Rune,79,20,50000,0,2000 +10026,Arena Stamina Rune,80,150,300000,0,1000 +10026,Arena Stamina Rune,81,20,50000,60,10000 +10026,Arena Stamina Rune,82,20,50000,0,9000 +10026,Arena Stamina Rune,83,20,50000,0,8000 +10026,Arena Stamina Rune,84,20,50000,0,7000 +10026,Arena Stamina Rune,85,20,50000,0,6000 +10026,Arena Stamina Rune,86,20,50000,0,5000 +10026,Arena Stamina Rune,87,20,50000,0,4000 +10026,Arena Stamina Rune,88,20,50000,0,3000 +10026,Arena Stamina Rune,89,20,50000,0,2000 +10026,Arena Stamina Rune,90,150,300000,0,1000 +10026,Arena Stamina Rune,91,20,50000,150,10000 +10026,Arena Stamina Rune,92,20,50000,0,9000 +10026,Arena Stamina Rune,93,20,50000,0,8000 +10026,Arena Stamina Rune,94,20,50000,0,7000 +10026,Arena Stamina Rune,95,20,50000,0,6000 +10026,Arena Stamina Rune,96,20,50000,0,5000 +10026,Arena Stamina Rune,97,20,50000,0,4000 +10026,Arena Stamina Rune,98,20,50000,0,3000 +10026,Arena Stamina Rune,99,20,50000,0,2000 +10026,Arena Stamina Rune,100,150,300000,0,1000 +10026,Arena Stamina Rune,101,30,50000,150,10000 +10026,Arena Stamina Rune,102,30,50000,0,9000 +10026,Arena Stamina Rune,103,30,50000,0,8000 +10026,Arena Stamina Rune,104,30,50000,0,7000 +10026,Arena Stamina Rune,105,30,50000,0,6000 +10026,Arena Stamina Rune,106,30,50000,0,5000 +10026,Arena Stamina Rune,107,30,50000,0,4000 +10026,Arena Stamina Rune,108,30,50000,0,3000 +10026,Arena Stamina Rune,109,30,50000,0,2000 +10026,Arena Stamina Rune,110,150,300000,0,1000 +10026,Arena Stamina Rune,111,30,50000,150,10000 +10026,Arena Stamina Rune,112,30,50000,0,9000 +10026,Arena Stamina Rune,113,30,50000,0,8000 +10026,Arena Stamina Rune,114,30,50000,0,7000 +10026,Arena Stamina Rune,115,30,50000,0,6000 +10026,Arena Stamina Rune,116,30,50000,0,5000 +10026,Arena Stamina Rune,117,30,50000,0,4000 +10026,Arena Stamina Rune,118,30,50000,0,3000 +10026,Arena Stamina Rune,119,30,50000,0,2000 +10026,Arena Stamina Rune,120,150,300000,0,1000 +10026,Arena Stamina Rune,121,30,50000,150,10000 +10026,Arena Stamina Rune,122,30,50000,0,9000 +10026,Arena Stamina Rune,123,30,50000,0,8000 +10026,Arena Stamina Rune,124,30,50000,0,7000 +10026,Arena Stamina Rune,125,30,50000,0,6000 +10026,Arena Stamina Rune,126,30,50000,0,5000 +10026,Arena Stamina Rune,127,30,50000,0,4000 +10026,Arena Stamina Rune,128,30,50000,0,3000 +10026,Arena Stamina Rune,129,30,50000,0,2000 +10026,Arena Stamina Rune,130,150,300000,0,1000 +10026,Arena Stamina Rune,131,40,300000,150,10000 +10026,Arena Stamina Rune,132,40,300000,0,8000 +10026,Arena Stamina Rune,133,40,300000,0,6000 +10026,Arena Stamina Rune,134,40,300000,0,4000 +10026,Arena Stamina Rune,135,200,1000000,0,1000 +10026,Arena Stamina Rune,136,40,300000,0,10000 +10026,Arena Stamina Rune,137,40,300000,0,8000 +10026,Arena Stamina Rune,138,40,300000,0,6000 +10026,Arena Stamina Rune,139,40,300000,0,4000 +10026,Arena Stamina Rune,140,200,1000000,0,1000 +10026,Arena Stamina Rune,141,40,300000,150,10000 +10026,Arena Stamina Rune,142,40,300000,0,9000 +10026,Arena Stamina Rune,143,40,300000,0,8000 +10026,Arena Stamina Rune,144,40,300000,0,7000 +10026,Arena Stamina Rune,145,40,300000,0,6000 +10026,Arena Stamina Rune,146,40,300000,0,5000 +10026,Arena Stamina Rune,147,40,300000,0,4000 +10026,Arena Stamina Rune,148,40,300000,0,3000 +10026,Arena Stamina Rune,149,40,300000,0,2000 +10026,Arena Stamina Rune,150,200,1000000,0,1000 +10026,Arena Stamina Rune,151,40,300000,150,10000 +10026,Arena Stamina Rune,152,40,300000,0,9000 +10026,Arena Stamina Rune,153,40,300000,0,8000 +10026,Arena Stamina Rune,154,40,300000,0,7000 +10026,Arena Stamina Rune,155,40,300000,0,6000 +10026,Arena Stamina Rune,156,40,300000,0,5000 +10026,Arena Stamina Rune,157,40,300000,0,4000 +10026,Arena Stamina Rune,158,40,300000,0,3000 +10026,Arena Stamina Rune,159,40,300000,0,2000 +10026,Arena Stamina Rune,160,200,1000000,0,1000 +10026,Arena Stamina Rune,161,40,300000,150,10000 +10026,Arena Stamina Rune,162,40,300000,0,9000 +10026,Arena Stamina Rune,163,40,300000,0,8000 +10026,Arena Stamina Rune,164,40,300000,0,7000 +10026,Arena Stamina Rune,165,40,300000,0,6000 +10026,Arena Stamina Rune,166,40,300000,0,5000 +10026,Arena Stamina Rune,167,40,300000,0,4000 +10026,Arena Stamina Rune,168,40,300000,0,3000 +10026,Arena Stamina Rune,169,40,300000,0,2000 +10026,Arena Stamina Rune,170,200,1000000,0,1000 +10026,Arena Stamina Rune,171,40,300000,150,10000 +10026,Arena Stamina Rune,172,40,300000,0,9000 +10026,Arena Stamina Rune,173,40,300000,0,8000 +10026,Arena Stamina Rune,174,40,300000,0,7000 +10026,Arena Stamina Rune,175,40,300000,0,6000 +10026,Arena Stamina Rune,176,40,300000,0,5000 +10026,Arena Stamina Rune,177,40,300000,0,4000 +10026,Arena Stamina Rune,178,40,300000,0,3000 +10026,Arena Stamina Rune,179,40,300000,0,2000 +10026,Arena Stamina Rune,180,200,1000000,0,1000 +10026,Arena Stamina Rune,181,40,300000,300,10000 +10026,Arena Stamina Rune,182,40,300000,0,9000 +10026,Arena Stamina Rune,183,40,300000,0,8000 +10026,Arena Stamina Rune,184,40,300000,0,7000 +10026,Arena Stamina Rune,185,40,300000,0,6000 +10026,Arena Stamina Rune,186,40,300000,0,5000 +10026,Arena Stamina Rune,187,40,300000,0,4000 +10026,Arena Stamina Rune,188,40,300000,0,3000 +10026,Arena Stamina Rune,189,40,300000,0,2000 +10026,Arena Stamina Rune,190,200,1000000,0,1000 +10026,Arena Stamina Rune,191,40,300000,300,10000 +10026,Arena Stamina Rune,192,40,300000,0,9000 +10026,Arena Stamina Rune,193,40,300000,0,8000 +10026,Arena Stamina Rune,194,40,300000,0,7000 +10026,Arena Stamina Rune,195,40,300000,0,6000 +10026,Arena Stamina Rune,196,40,300000,0,5000 +10026,Arena Stamina Rune,197,40,300000,0,4000 +10026,Arena Stamina Rune,198,40,300000,0,3000 +10026,Arena Stamina Rune,199,40,300000,0,2000 +10026,Arena Stamina Rune,200,200,1000000,0,1000 +10026,Arena Stamina Rune,201,50,500000,300,10000 +10026,Arena Stamina Rune,202,50,500000,0,9000 +10026,Arena Stamina Rune,203,50,500000,0,8000 +10026,Arena Stamina Rune,204,50,500000,0,7000 +10026,Arena Stamina Rune,205,50,500000,0,6000 +10026,Arena Stamina Rune,206,50,500000,0,5000 +10026,Arena Stamina Rune,207,50,500000,0,4000 +10026,Arena Stamina Rune,208,50,500000,0,3000 +10026,Arena Stamina Rune,209,50,500000,0,2000 +10026,Arena Stamina Rune,210,400,2000000,0,1000 +10026,Arena Stamina Rune,211,50,500000,300,10000 +10026,Arena Stamina Rune,212,50,500000,0,9000 +10026,Arena Stamina Rune,213,50,500000,0,8000 +10026,Arena Stamina Rune,214,50,500000,0,7000 +10026,Arena Stamina Rune,215,50,500000,0,6000 +10026,Arena Stamina Rune,216,50,500000,0,5000 +10026,Arena Stamina Rune,217,50,500000,0,4000 +10026,Arena Stamina Rune,218,50,500000,0,3000 +10026,Arena Stamina Rune,219,50,500000,0,2000 +10026,Arena Stamina Rune,220,400,2000000,0,1000 +10026,Arena Stamina Rune,221,50,500000,300,10000 +10026,Arena Stamina Rune,222,50,500000,0,9000 +10026,Arena Stamina Rune,223,50,500000,0,8000 +10026,Arena Stamina Rune,224,50,500000,0,7000 +10026,Arena Stamina Rune,225,50,500000,0,6000 +10026,Arena Stamina Rune,226,50,500000,0,5000 +10026,Arena Stamina Rune,227,50,500000,0,4000 +10026,Arena Stamina Rune,228,50,500000,0,3000 +10026,Arena Stamina Rune,229,50,500000,0,2000 +10026,Arena Stamina Rune,230,400,2000000,0,1000 +10026,Arena Stamina Rune,231,50,500000,300,10000 +10026,Arena Stamina Rune,232,50,500000,0,9000 +10026,Arena Stamina Rune,233,50,500000,0,8000 +10026,Arena Stamina Rune,234,50,500000,0,7000 +10026,Arena Stamina Rune,235,50,500000,0,6000 +10026,Arena Stamina Rune,236,50,500000,0,5000 +10026,Arena Stamina Rune,237,50,500000,0,4000 +10026,Arena Stamina Rune,238,50,500000,0,3000 +10026,Arena Stamina Rune,239,50,500000,0,2000 +10026,Arena Stamina Rune,240,400,2000000,0,1000 +10026,Arena Stamina Rune,241,50,500000,300,10000 +10026,Arena Stamina Rune,242,50,500000,0,9000 +10026,Arena Stamina Rune,243,50,500000,0,8000 +10026,Arena Stamina Rune,244,50,500000,0,7000 +10026,Arena Stamina Rune,245,50,500000,0,6000 +10026,Arena Stamina Rune,246,50,500000,0,5000 +10026,Arena Stamina Rune,247,50,500000,0,4000 +10026,Arena Stamina Rune,248,50,500000,0,3000 +10026,Arena Stamina Rune,249,50,500000,0,2000 +10026,Arena Stamina Rune,250,400,2000000,0,1000 +10026,Arena Stamina Rune,251,50,500000,600,10000 +10026,Arena Stamina Rune,252,50,500000,0,9000 +10026,Arena Stamina Rune,253,50,500000,0,8000 +10026,Arena Stamina Rune,254,50,500000,0,7000 +10026,Arena Stamina Rune,255,50,500000,0,6000 +10026,Arena Stamina Rune,256,50,500000,0,5000 +10026,Arena Stamina Rune,257,50,500000,0,4000 +10026,Arena Stamina Rune,258,50,500000,0,3000 +10026,Arena Stamina Rune,259,50,500000,0,2000 +10026,Arena Stamina Rune,260,400,2000000,0,1000 +10026,Arena Stamina Rune,261,50,500000,600,10000 +10026,Arena Stamina Rune,262,50,500000,0,9000 +10026,Arena Stamina Rune,263,50,500000,0,8000 +10026,Arena Stamina Rune,264,50,500000,0,7000 +10026,Arena Stamina Rune,265,50,500000,0,6000 +10026,Arena Stamina Rune,266,50,500000,0,5000 +10026,Arena Stamina Rune,267,50,500000,0,4000 +10026,Arena Stamina Rune,268,50,500000,0,3000 +10026,Arena Stamina Rune,269,50,500000,0,2000 +10026,Arena Stamina Rune,270,400,2000000,0,1000 +10026,Arena Stamina Rune,271,50,500000,600,10000 +10026,Arena Stamina Rune,272,50,500000,0,9000 +10026,Arena Stamina Rune,273,50,500000,0,8000 +10026,Arena Stamina Rune,274,50,500000,0,7000 +10026,Arena Stamina Rune,275,50,500000,0,6000 +10026,Arena Stamina Rune,276,50,500000,0,5000 +10026,Arena Stamina Rune,277,50,500000,0,4000 +10026,Arena Stamina Rune,278,50,500000,0,3000 +10026,Arena Stamina Rune,279,50,500000,0,2000 +10026,Arena Stamina Rune,280,400,2000000,0,1000 +10026,Arena Stamina Rune,281,50,500000,600,10000 +10026,Arena Stamina Rune,282,50,500000,0,9000 +10026,Arena Stamina Rune,283,50,500000,0,8000 +10026,Arena Stamina Rune,284,50,500000,0,7000 +10026,Arena Stamina Rune,285,50,500000,0,6000 +10026,Arena Stamina Rune,286,50,500000,0,5000 +10026,Arena Stamina Rune,287,50,500000,0,4000 +10026,Arena Stamina Rune,288,50,500000,0,3000 +10026,Arena Stamina Rune,289,50,500000,0,2000 +10026,Arena Stamina Rune,290,400,2000000,0,1000 +10026,Arena Stamina Rune,291,50,500000,600,10000 +10026,Arena Stamina Rune,292,50,500000,0,9000 +10026,Arena Stamina Rune,293,50,500000,0,8000 +10026,Arena Stamina Rune,294,50,500000,0,7000 +10026,Arena Stamina Rune,295,50,500000,0,6000 +10026,Arena Stamina Rune,296,50,500000,0,5000 +10026,Arena Stamina Rune,297,50,500000,0,4000 +10026,Arena Stamina Rune,298,50,500000,0,3000 +10026,Arena Stamina Rune,299,50,500000,0,2000 +10026,Arena Stamina Rune,300,400,2000000,0,1000 +10027,Arena Quick Rune,1,10,400000,0,10000 +10027,Arena Quick Rune,2,10,400000,0,10000 +10027,Arena Quick Rune,3,10,400000,0,10000 +10027,Arena Quick Rune,4,10,400000,0,10000 +10027,Arena Quick Rune,5,10,400000,0,10000 +10027,Arena Quick Rune,6,10,400000,0,10000 +10027,Arena Quick Rune,7,10,400000,0,10000 +10027,Arena Quick Rune,8,10,400000,0,10000 +10027,Arena Quick Rune,9,10,400000,0,10000 +10027,Arena Quick Rune,10,10,2000000,0,10000 +10027,Arena Quick Rune,11,10,400000,0,10000 +10027,Arena Quick Rune,12,10,400000,0,10000 +10027,Arena Quick Rune,13,10,400000,0,10000 +10027,Arena Quick Rune,14,10,400000,0,10000 +10027,Arena Quick Rune,15,10,400000,0,10000 +10027,Arena Quick Rune,16,10,400000,0,10000 +10027,Arena Quick Rune,17,10,400000,0,10000 +10027,Arena Quick Rune,18,10,400000,0,10000 +10027,Arena Quick Rune,19,10,400000,0,10000 +10027,Arena Quick Rune,20,10,2000000,0,10000 +10027,Arena Quick Rune,21,10,400000,0,10000 +10027,Arena Quick Rune,22,10,400000,0,10000 +10027,Arena Quick Rune,23,10,400000,0,10000 +10027,Arena Quick Rune,24,10,400000,0,10000 +10027,Arena Quick Rune,25,10,400000,0,10000 +10027,Arena Quick Rune,26,10,400000,0,10000 +10027,Arena Quick Rune,27,10,400000,0,10000 +10027,Arena Quick Rune,28,10,400000,0,10000 +10027,Arena Quick Rune,29,10,400000,0,10000 +10027,Arena Quick Rune,30,10,2000000,0,10000 +10027,Arena Quick Rune,31,30,600000,0,10000 +10027,Arena Quick Rune,32,30,600000,0,10000 +10027,Arena Quick Rune,33,30,600000,0,10000 +10027,Arena Quick Rune,34,30,600000,0,10000 +10027,Arena Quick Rune,35,30,600000,0,10000 +10027,Arena Quick Rune,36,30,600000,0,10000 +10027,Arena Quick Rune,37,30,600000,0,10000 +10027,Arena Quick Rune,38,30,600000,0,10000 +10027,Arena Quick Rune,39,30,600000,0,10000 +10027,Arena Quick Rune,40,30,3000000,0,10000 +10027,Arena Quick Rune,41,30,600000,0,10000 +10027,Arena Quick Rune,42,30,600000,0,10000 +10027,Arena Quick Rune,43,30,600000,0,10000 +10027,Arena Quick Rune,44,30,600000,0,10000 +10027,Arena Quick Rune,45,30,600000,0,10000 +10027,Arena Quick Rune,46,30,600000,0,10000 +10027,Arena Quick Rune,47,30,600000,0,10000 +10027,Arena Quick Rune,48,30,600000,0,10000 +10027,Arena Quick Rune,49,30,600000,0,10000 +10027,Arena Quick Rune,50,30,3000000,0,10000 +10027,Arena Quick Rune,51,30,600000,100,10000 +10027,Arena Quick Rune,52,30,600000,0,10000 +10027,Arena Quick Rune,53,30,600000,0,10000 +10027,Arena Quick Rune,54,30,600000,0,10000 +10027,Arena Quick Rune,55,30,600000,0,10000 +10027,Arena Quick Rune,56,30,600000,0,10000 +10027,Arena Quick Rune,57,30,600000,0,10000 +10027,Arena Quick Rune,58,30,600000,0,10000 +10027,Arena Quick Rune,59,30,600000,0,10000 +10027,Arena Quick Rune,60,30,3000000,0,10000 +10027,Arena Quick Rune,61,30,600000,100,10000 +10027,Arena Quick Rune,62,30,600000,0,10000 +10027,Arena Quick Rune,63,30,600000,0,10000 +10027,Arena Quick Rune,64,30,600000,0,10000 +10027,Arena Quick Rune,65,30,600000,0,10000 +10027,Arena Quick Rune,66,30,600000,0,10000 +10027,Arena Quick Rune,67,30,600000,0,10000 +10027,Arena Quick Rune,68,30,600000,0,10000 +10027,Arena Quick Rune,69,30,600000,0,10000 +10027,Arena Quick Rune,70,30,3000000,0,10000 +10027,Arena Quick Rune,71,40,1000000,150,10000 +10027,Arena Quick Rune,72,40,1000000,0,10000 +10027,Arena Quick Rune,73,40,1000000,0,10000 +10027,Arena Quick Rune,74,40,1000000,0,10000 +10027,Arena Quick Rune,75,40,1000000,0,10000 +10027,Arena Quick Rune,76,40,1000000,0,10000 +10027,Arena Quick Rune,77,40,1000000,0,10000 +10027,Arena Quick Rune,78,40,1000000,0,10000 +10027,Arena Quick Rune,79,40,1000000,0,10000 +10027,Arena Quick Rune,80,40,5000000,0,10000 +10027,Arena Quick Rune,81,40,1000000,150,10000 +10027,Arena Quick Rune,82,40,1000000,0,10000 +10027,Arena Quick Rune,83,40,1000000,0,10000 +10027,Arena Quick Rune,84,40,1000000,0,10000 +10027,Arena Quick Rune,85,40,1000000,0,10000 +10027,Arena Quick Rune,86,40,1000000,0,10000 +10027,Arena Quick Rune,87,40,1000000,0,10000 +10027,Arena Quick Rune,88,40,1000000,0,10000 +10027,Arena Quick Rune,89,40,1000000,0,10000 +10027,Arena Quick Rune,90,40,5000000,0,10000 +10027,Arena Quick Rune,91,40,1000000,150,10000 +10027,Arena Quick Rune,92,40,1000000,0,10000 +10027,Arena Quick Rune,93,40,1000000,0,10000 +10027,Arena Quick Rune,94,40,1000000,0,10000 +10027,Arena Quick Rune,95,40,1000000,0,10000 +10027,Arena Quick Rune,96,40,1000000,0,10000 +10027,Arena Quick Rune,97,40,1000000,0,10000 +10027,Arena Quick Rune,98,40,1000000,0,10000 +10027,Arena Quick Rune,99,40,1000000,0,10000 +10027,Arena Quick Rune,100,40,5000000,0,10000 +10027,Arena Quick Rune,101,40,1000000,200,10000 +10027,Arena Quick Rune,102,40,1000000,0,10000 +10027,Arena Quick Rune,103,40,1000000,0,10000 +10027,Arena Quick Rune,104,40,1000000,0,10000 +10027,Arena Quick Rune,105,40,1000000,0,10000 +10027,Arena Quick Rune,106,40,1000000,0,10000 +10027,Arena Quick Rune,107,40,1000000,0,10000 +10027,Arena Quick Rune,108,40,1000000,0,10000 +10027,Arena Quick Rune,109,40,1000000,0,10000 +10027,Arena Quick Rune,110,40,5000000,0,10000 +10027,Arena Quick Rune,111,40,1000000,200,10000 +10027,Arena Quick Rune,112,40,1000000,0,10000 +10027,Arena Quick Rune,113,40,1000000,0,10000 +10027,Arena Quick Rune,114,40,1000000,0,10000 +10027,Arena Quick Rune,115,40,1000000,0,10000 +10027,Arena Quick Rune,116,40,1000000,0,10000 +10027,Arena Quick Rune,117,40,1000000,0,10000 +10027,Arena Quick Rune,118,40,1000000,0,10000 +10027,Arena Quick Rune,119,40,1000000,0,10000 +10027,Arena Quick Rune,120,40,5000000,0,10000 +10027,Arena Quick Rune,121,40,1000000,200,10000 +10027,Arena Quick Rune,122,40,1000000,0,10000 +10027,Arena Quick Rune,123,40,1000000,0,10000 +10027,Arena Quick Rune,124,40,1000000,0,10000 +10027,Arena Quick Rune,125,40,1000000,0,10000 +10027,Arena Quick Rune,126,50,1000000,0,10000 +10027,Arena Quick Rune,127,50,1000000,0,10000 +10027,Arena Quick Rune,128,50,1000000,0,10000 +10027,Arena Quick Rune,129,50,1000000,0,10000 +10027,Arena Quick Rune,130,50,5000000,0,10000 +10027,Arena Quick Rune,131,50,1500000,200,10000 +10027,Arena Quick Rune,132,50,1500000,0,10000 +10027,Arena Quick Rune,133,50,1500000,0,10000 +10027,Arena Quick Rune,134,50,1500000,0,10000 +10027,Arena Quick Rune,135,50,1500000,0,10000 +10027,Arena Quick Rune,136,50,1500000,0,10000 +10027,Arena Quick Rune,137,50,1500000,0,10000 +10027,Arena Quick Rune,138,50,1500000,0,10000 +10027,Arena Quick Rune,139,50,1500000,0,10000 +10027,Arena Quick Rune,140,50,6000000,0,10000 +10027,Arena Quick Rune,141,50,1500000,200,10000 +10027,Arena Quick Rune,142,50,1500000,0,10000 +10027,Arena Quick Rune,143,50,1500000,0,10000 +10027,Arena Quick Rune,144,50,1500000,0,10000 +10027,Arena Quick Rune,145,50,1500000,0,10000 +10027,Arena Quick Rune,146,50,1500000,0,10000 +10027,Arena Quick Rune,147,50,1500000,0,10000 +10027,Arena Quick Rune,148,50,1500000,0,10000 +10027,Arena Quick Rune,149,50,1500000,0,10000 +10027,Arena Quick Rune,150,50,6000000,0,10000 +10027,Arena Quick Rune,151,50,1500000,200,10000 +10027,Arena Quick Rune,152,50,1500000,0,10000 +10027,Arena Quick Rune,153,50,1500000,0,10000 +10027,Arena Quick Rune,154,50,1500000,0,10000 +10027,Arena Quick Rune,155,50,1500000,0,10000 +10027,Arena Quick Rune,156,50,1500000,0,10000 +10027,Arena Quick Rune,157,50,1500000,0,10000 +10027,Arena Quick Rune,158,50,1500000,0,10000 +10027,Arena Quick Rune,159,50,1500000,0,10000 +10027,Arena Quick Rune,160,50,6000000,0,10000 +10027,Arena Quick Rune,161,50,1500000,200,10000 +10027,Arena Quick Rune,162,50,1500000,0,10000 +10027,Arena Quick Rune,163,50,1500000,0,10000 +10027,Arena Quick Rune,164,50,1500000,0,10000 +10027,Arena Quick Rune,165,50,1500000,0,10000 +10027,Arena Quick Rune,166,50,1500000,0,10000 +10027,Arena Quick Rune,167,50,1500000,0,10000 +10027,Arena Quick Rune,168,50,1500000,0,10000 +10027,Arena Quick Rune,169,50,1500000,0,10000 +10027,Arena Quick Rune,170,50,6000000,0,10000 +10027,Arena Quick Rune,171,50,1500000,200,10000 +10027,Arena Quick Rune,172,50,1500000,0,10000 +10027,Arena Quick Rune,173,50,1500000,0,10000 +10027,Arena Quick Rune,174,50,1500000,0,10000 +10027,Arena Quick Rune,175,50,1500000,0,10000 +10027,Arena Quick Rune,176,50,1500000,0,10000 +10027,Arena Quick Rune,177,50,1500000,0,10000 +10027,Arena Quick Rune,178,50,1500000,0,10000 +10027,Arena Quick Rune,179,50,1500000,0,10000 +10027,Arena Quick Rune,180,50,6000000,0,10000 +10027,Arena Quick Rune,181,50,1500000,300,10000 +10027,Arena Quick Rune,182,50,1500000,0,10000 +10027,Arena Quick Rune,183,50,1500000,0,10000 +10027,Arena Quick Rune,184,50,1500000,0,10000 +10027,Arena Quick Rune,185,50,1500000,0,10000 +10027,Arena Quick Rune,186,50,1500000,0,10000 +10027,Arena Quick Rune,187,50,1500000,0,10000 +10027,Arena Quick Rune,188,50,1500000,0,10000 +10027,Arena Quick Rune,189,50,1500000,0,10000 +10027,Arena Quick Rune,190,50,6000000,0,10000 +10027,Arena Quick Rune,191,50,1500000,300,10000 +10027,Arena Quick Rune,192,50,1500000,0,10000 +10027,Arena Quick Rune,193,50,1500000,0,10000 +10027,Arena Quick Rune,194,50,1500000,0,10000 +10027,Arena Quick Rune,195,50,1500000,0,10000 +10027,Arena Quick Rune,196,50,1500000,0,10000 +10027,Arena Quick Rune,197,50,1500000,0,10000 +10027,Arena Quick Rune,198,50,1500000,0,10000 +10027,Arena Quick Rune,199,50,1500000,0,10000 +10027,Arena Quick Rune,200,50,6000000,0,10000 +10027,Arena Quick Rune,201,80,2000000,300,10000 +10027,Arena Quick Rune,202,80,2000000,0,10000 +10027,Arena Quick Rune,203,80,2000000,0,10000 +10027,Arena Quick Rune,204,80,2000000,0,10000 +10027,Arena Quick Rune,205,80,2000000,0,10000 +10027,Arena Quick Rune,206,80,2000000,0,10000 +10027,Arena Quick Rune,207,80,2000000,0,10000 +10027,Arena Quick Rune,208,80,2000000,0,10000 +10027,Arena Quick Rune,209,80,2000000,0,10000 +10027,Arena Quick Rune,210,80,8000000,0,10000 +10027,Arena Quick Rune,211,80,2000000,500,10000 +10027,Arena Quick Rune,212,80,2000000,0,10000 +10027,Arena Quick Rune,213,80,2000000,0,10000 +10027,Arena Quick Rune,214,80,2000000,0,10000 +10027,Arena Quick Rune,215,80,2000000,0,10000 +10027,Arena Quick Rune,216,80,2000000,0,10000 +10027,Arena Quick Rune,217,80,2000000,0,10000 +10027,Arena Quick Rune,218,80,2000000,0,10000 +10027,Arena Quick Rune,219,80,2000000,0,10000 +10027,Arena Quick Rune,220,80,8000000,0,10000 +10027,Arena Quick Rune,221,80,2000000,500,10000 +10027,Arena Quick Rune,222,80,2000000,0,10000 +10027,Arena Quick Rune,223,80,2000000,0,10000 +10027,Arena Quick Rune,224,80,2000000,0,10000 +10027,Arena Quick Rune,225,80,2000000,0,10000 +10027,Arena Quick Rune,226,80,2000000,0,10000 +10027,Arena Quick Rune,227,80,2000000,0,10000 +10027,Arena Quick Rune,228,80,2000000,0,10000 +10027,Arena Quick Rune,229,80,2000000,0,10000 +10027,Arena Quick Rune,230,80,8000000,0,10000 +10027,Arena Quick Rune,231,80,2000000,500,10000 +10027,Arena Quick Rune,232,80,2000000,0,10000 +10027,Arena Quick Rune,233,80,2000000,0,10000 +10027,Arena Quick Rune,234,80,2000000,0,10000 +10027,Arena Quick Rune,235,80,2000000,0,10000 +10027,Arena Quick Rune,236,80,2000000,0,10000 +10027,Arena Quick Rune,237,80,2000000,0,10000 +10027,Arena Quick Rune,238,80,2000000,0,10000 +10027,Arena Quick Rune,239,80,2000000,0,10000 +10027,Arena Quick Rune,240,80,8000000,0,10000 +10027,Arena Quick Rune,241,80,2000000,500,10000 +10027,Arena Quick Rune,242,80,2000000,0,10000 +10027,Arena Quick Rune,243,80,2000000,0,10000 +10027,Arena Quick Rune,244,80,2000000,0,10000 +10027,Arena Quick Rune,245,80,2000000,0,10000 +10027,Arena Quick Rune,246,80,2000000,0,10000 +10027,Arena Quick Rune,247,80,2000000,0,10000 +10027,Arena Quick Rune,248,80,2000000,0,10000 +10027,Arena Quick Rune,249,80,2000000,0,10000 +10027,Arena Quick Rune,250,80,8000000,0,10000 +10027,Arena Quick Rune,251,80,2000000,500,10000 +10027,Arena Quick Rune,252,80,2000000,0,10000 +10027,Arena Quick Rune,253,80,2000000,0,10000 +10027,Arena Quick Rune,254,80,2000000,0,10000 +10027,Arena Quick Rune,255,80,2000000,0,10000 +10027,Arena Quick Rune,256,80,2000000,0,10000 +10027,Arena Quick Rune,257,80,2000000,0,10000 +10027,Arena Quick Rune,258,80,2000000,0,10000 +10027,Arena Quick Rune,259,80,2000000,0,10000 +10027,Arena Quick Rune,260,80,8000000,0,10000 +10027,Arena Quick Rune,261,80,2000000,1000,10000 +10027,Arena Quick Rune,262,80,2000000,0,10000 +10027,Arena Quick Rune,263,80,2000000,0,10000 +10027,Arena Quick Rune,264,80,2000000,0,10000 +10027,Arena Quick Rune,265,80,2000000,0,10000 +10027,Arena Quick Rune,266,80,2000000,0,10000 +10027,Arena Quick Rune,267,80,2000000,0,10000 +10027,Arena Quick Rune,268,80,2000000,0,10000 +10027,Arena Quick Rune,269,80,2000000,0,10000 +10027,Arena Quick Rune,270,80,8000000,0,10000 +10027,Arena Quick Rune,271,80,2000000,1000,10000 +10027,Arena Quick Rune,272,80,2000000,0,10000 +10027,Arena Quick Rune,273,80,2000000,0,10000 +10027,Arena Quick Rune,274,80,2000000,0,10000 +10027,Arena Quick Rune,275,80,2000000,0,10000 +10027,Arena Quick Rune,276,80,2000000,0,10000 +10027,Arena Quick Rune,277,80,2000000,0,10000 +10027,Arena Quick Rune,278,80,2000000,0,10000 +10027,Arena Quick Rune,279,80,2000000,0,10000 +10027,Arena Quick Rune,280,80,8000000,0,10000 +10027,Arena Quick Rune,281,80,2000000,1000,10000 +10027,Arena Quick Rune,282,80,2000000,0,10000 +10027,Arena Quick Rune,283,80,2000000,0,10000 +10027,Arena Quick Rune,284,80,2000000,0,10000 +10027,Arena Quick Rune,285,80,2000000,0,10000 +10027,Arena Quick Rune,286,80,2000000,0,10000 +10027,Arena Quick Rune,287,80,2000000,0,10000 +10027,Arena Quick Rune,288,80,2000000,0,10000 +10027,Arena Quick Rune,289,80,2000000,0,10000 +10027,Arena Quick Rune,290,80,8000000,0,10000 +10027,Arena Quick Rune,291,80,2000000,1000,10000 +10027,Arena Quick Rune,292,80,2000000,0,10000 +10027,Arena Quick Rune,293,80,2000000,0,10000 +10027,Arena Quick Rune,294,80,2000000,0,10000 +10027,Arena Quick Rune,295,80,2000000,0,10000 +10027,Arena Quick Rune,296,80,2000000,0,10000 +10027,Arena Quick Rune,297,80,2000000,0,10000 +10027,Arena Quick Rune,298,80,2000000,0,10000 +10027,Arena Quick Rune,299,80,2000000,0,10000 +10027,Arena Quick Rune,300,80,8000000,0,10000 +10028,WorldBoss Quick Rune,1,4,200000,0,10000 +10028,WorldBoss Quick Rune,2,2,200000,0,10000 +10028,WorldBoss Quick Rune,3,2,200000,0,10000 +10028,WorldBoss Quick Rune,4,2,200000,0,10000 +10028,WorldBoss Quick Rune,5,2,200000,0,10000 +10028,WorldBoss Quick Rune,6,2,200000,0,10000 +10028,WorldBoss Quick Rune,7,2,200000,0,10000 +10028,WorldBoss Quick Rune,8,2,200000,0,10000 +10028,WorldBoss Quick Rune,9,2,200000,0,10000 +10028,WorldBoss Quick Rune,10,0,1000000,0,5000 +10028,WorldBoss Quick Rune,11,10,200000,0,10000 +10028,WorldBoss Quick Rune,12,10,200000,0,10000 +10028,WorldBoss Quick Rune,13,10,200000,0,10000 +10028,WorldBoss Quick Rune,14,10,200000,0,10000 +10028,WorldBoss Quick Rune,15,10,200000,0,10000 +10028,WorldBoss Quick Rune,16,10,200000,0,10000 +10028,WorldBoss Quick Rune,17,10,200000,0,10000 +10028,WorldBoss Quick Rune,18,10,200000,0,10000 +10028,WorldBoss Quick Rune,19,10,200000,0,10000 +10028,WorldBoss Quick Rune,20,0,1000000,0,5000 +10028,WorldBoss Quick Rune,21,15,200000,0,10000 +10028,WorldBoss Quick Rune,22,15,200000,0,10000 +10028,WorldBoss Quick Rune,23,15,200000,0,10000 +10028,WorldBoss Quick Rune,24,15,200000,0,10000 +10028,WorldBoss Quick Rune,25,15,200000,0,10000 +10028,WorldBoss Quick Rune,26,15,200000,0,10000 +10028,WorldBoss Quick Rune,27,15,200000,0,10000 +10028,WorldBoss Quick Rune,28,15,200000,0,10000 +10028,WorldBoss Quick Rune,29,15,200000,0,10000 +10028,WorldBoss Quick Rune,30,0,1000000,0,5000 +10028,WorldBoss Quick Rune,31,20,200000,0,10000 +10028,WorldBoss Quick Rune,32,20,200000,0,10000 +10028,WorldBoss Quick Rune,33,20,200000,0,10000 +10028,WorldBoss Quick Rune,34,20,200000,0,10000 +10028,WorldBoss Quick Rune,35,20,200000,0,10000 +10028,WorldBoss Quick Rune,36,20,200000,0,10000 +10028,WorldBoss Quick Rune,37,20,200000,0,10000 +10028,WorldBoss Quick Rune,38,20,200000,0,10000 +10028,WorldBoss Quick Rune,39,20,200000,0,10000 +10028,WorldBoss Quick Rune,40,0,1000000,0,5000 +10028,WorldBoss Quick Rune,41,25,200000,0,10000 +10028,WorldBoss Quick Rune,42,25,200000,0,10000 +10028,WorldBoss Quick Rune,43,25,200000,0,10000 +10028,WorldBoss Quick Rune,44,25,200000,0,10000 +10028,WorldBoss Quick Rune,45,25,200000,0,10000 +10028,WorldBoss Quick Rune,46,25,200000,0,10000 +10028,WorldBoss Quick Rune,47,25,200000,0,10000 +10028,WorldBoss Quick Rune,48,25,200000,0,10000 +10028,WorldBoss Quick Rune,49,25,200000,0,10000 +10028,WorldBoss Quick Rune,50,0,1000000,0,5000 +10028,WorldBoss Quick Rune,51,30,200000,100,10000 +10028,WorldBoss Quick Rune,52,30,200000,0,10000 +10028,WorldBoss Quick Rune,53,30,200000,0,10000 +10028,WorldBoss Quick Rune,54,30,200000,0,10000 +10028,WorldBoss Quick Rune,55,30,200000,0,10000 +10028,WorldBoss Quick Rune,56,30,200000,0,10000 +10028,WorldBoss Quick Rune,57,30,200000,0,10000 +10028,WorldBoss Quick Rune,58,30,200000,0,10000 +10028,WorldBoss Quick Rune,59,30,200000,0,10000 +10028,WorldBoss Quick Rune,60,0,1000000,0,5000 +10028,WorldBoss Quick Rune,61,35,200000,100,10000 +10028,WorldBoss Quick Rune,62,35,200000,0,10000 +10028,WorldBoss Quick Rune,63,35,200000,0,10000 +10028,WorldBoss Quick Rune,64,35,200000,0,10000 +10028,WorldBoss Quick Rune,65,35,200000,0,10000 +10028,WorldBoss Quick Rune,66,35,200000,0,10000 +10028,WorldBoss Quick Rune,67,35,200000,0,10000 +10028,WorldBoss Quick Rune,68,35,200000,0,10000 +10028,WorldBoss Quick Rune,69,35,200000,0,10000 +10028,WorldBoss Quick Rune,70,0,1000000,0,5000 +10028,WorldBoss Quick Rune,71,40,500000,200,10000 +10028,WorldBoss Quick Rune,72,40,500000,0,9000 +10028,WorldBoss Quick Rune,73,40,500000,0,8000 +10028,WorldBoss Quick Rune,74,40,500000,0,10000 +10028,WorldBoss Quick Rune,75,40,500000,0,9000 +10028,WorldBoss Quick Rune,76,40,500000,0,8000 +10028,WorldBoss Quick Rune,77,40,500000,0,10000 +10028,WorldBoss Quick Rune,78,40,500000,0,9000 +10028,WorldBoss Quick Rune,79,40,500000,0,8000 +10028,WorldBoss Quick Rune,80,0,3000000,0,5000 +10028,WorldBoss Quick Rune,81,45,500000,200,10000 +10028,WorldBoss Quick Rune,82,45,500000,0,9000 +10028,WorldBoss Quick Rune,83,45,500000,0,8000 +10028,WorldBoss Quick Rune,84,45,500000,0,10000 +10028,WorldBoss Quick Rune,85,45,500000,0,9000 +10028,WorldBoss Quick Rune,86,45,500000,0,8000 +10028,WorldBoss Quick Rune,87,45,500000,0,10000 +10028,WorldBoss Quick Rune,88,45,500000,0,9000 +10028,WorldBoss Quick Rune,89,45,500000,0,8000 +10028,WorldBoss Quick Rune,90,0,3000000,0,5000 +10028,WorldBoss Quick Rune,91,50,500000,200,10000 +10028,WorldBoss Quick Rune,92,50,500000,0,9000 +10028,WorldBoss Quick Rune,93,50,500000,0,8000 +10028,WorldBoss Quick Rune,94,50,500000,0,10000 +10028,WorldBoss Quick Rune,95,50,500000,0,9000 +10028,WorldBoss Quick Rune,96,50,500000,0,8000 +10028,WorldBoss Quick Rune,97,50,500000,0,10000 +10028,WorldBoss Quick Rune,98,50,500000,0,9000 +10028,WorldBoss Quick Rune,99,50,500000,0,8000 +10028,WorldBoss Quick Rune,100,0,3000000,0,5000 +10028,WorldBoss Quick Rune,101,55,500000,200,10000 +10028,WorldBoss Quick Rune,102,55,500000,0,9000 +10028,WorldBoss Quick Rune,103,55,500000,0,8000 +10028,WorldBoss Quick Rune,104,55,500000,0,10000 +10028,WorldBoss Quick Rune,105,55,500000,0,9000 +10028,WorldBoss Quick Rune,106,55,500000,0,8000 +10028,WorldBoss Quick Rune,107,55,500000,0,10000 +10028,WorldBoss Quick Rune,108,55,500000,0,9000 +10028,WorldBoss Quick Rune,109,55,500000,0,8000 +10028,WorldBoss Quick Rune,110,0,3000000,0,5000 +10028,WorldBoss Quick Rune,111,60,500000,200,10000 +10028,WorldBoss Quick Rune,112,60,500000,0,9000 +10028,WorldBoss Quick Rune,113,60,500000,0,8000 +10028,WorldBoss Quick Rune,114,60,500000,0,10000 +10028,WorldBoss Quick Rune,115,60,500000,0,9000 +10028,WorldBoss Quick Rune,116,60,500000,0,8000 +10028,WorldBoss Quick Rune,117,60,500000,0,10000 +10028,WorldBoss Quick Rune,118,60,500000,0,9000 +10028,WorldBoss Quick Rune,119,60,500000,0,8000 +10028,WorldBoss Quick Rune,120,0,3000000,0,5000 +10028,WorldBoss Quick Rune,121,65,500000,200,10000 +10028,WorldBoss Quick Rune,122,65,500000,0,9000 +10028,WorldBoss Quick Rune,123,65,500000,0,8000 +10028,WorldBoss Quick Rune,124,65,500000,0,10000 +10028,WorldBoss Quick Rune,125,65,500000,0,9000 +10028,WorldBoss Quick Rune,126,65,500000,0,8000 +10028,WorldBoss Quick Rune,127,65,500000,0,10000 +10028,WorldBoss Quick Rune,128,65,500000,0,9000 +10028,WorldBoss Quick Rune,129,65,500000,0,8000 +10028,WorldBoss Quick Rune,130,0,3000000,0,5000 +10028,WorldBoss Quick Rune,131,70,500000,200,10000 +10028,WorldBoss Quick Rune,132,70,500000,0,9000 +10028,WorldBoss Quick Rune,133,70,500000,0,8000 +10028,WorldBoss Quick Rune,134,70,500000,0,10000 +10028,WorldBoss Quick Rune,135,70,500000,0,9000 +10028,WorldBoss Quick Rune,136,70,500000,0,8000 +10028,WorldBoss Quick Rune,137,70,500000,0,10000 +10028,WorldBoss Quick Rune,138,70,500000,0,9000 +10028,WorldBoss Quick Rune,139,70,500000,0,8000 +10028,WorldBoss Quick Rune,140,0,3000000,0,5000 +10028,WorldBoss Quick Rune,141,75,500000,200,10000 +10028,WorldBoss Quick Rune,142,75,500000,0,9000 +10028,WorldBoss Quick Rune,143,75,500000,0,8000 +10028,WorldBoss Quick Rune,144,75,500000,0,10000 +10028,WorldBoss Quick Rune,145,75,500000,0,9000 +10028,WorldBoss Quick Rune,146,75,500000,0,8000 +10028,WorldBoss Quick Rune,147,75,500000,0,10000 +10028,WorldBoss Quick Rune,148,75,500000,0,9000 +10028,WorldBoss Quick Rune,149,75,500000,0,8000 +10028,WorldBoss Quick Rune,150,0,3000000,0,5000 +10028,WorldBoss Quick Rune,151,80,500000,200,10000 +10028,WorldBoss Quick Rune,152,80,500000,0,9000 +10028,WorldBoss Quick Rune,153,80,500000,0,8000 +10028,WorldBoss Quick Rune,154,80,500000,0,10000 +10028,WorldBoss Quick Rune,155,80,500000,0,9000 +10028,WorldBoss Quick Rune,156,80,500000,0,8000 +10028,WorldBoss Quick Rune,157,80,500000,0,10000 +10028,WorldBoss Quick Rune,158,80,500000,0,9000 +10028,WorldBoss Quick Rune,159,80,500000,0,8000 +10028,WorldBoss Quick Rune,160,0,3000000,0,5000 +10028,WorldBoss Quick Rune,161,80,500000,200,10000 +10028,WorldBoss Quick Rune,162,80,500000,0,9000 +10028,WorldBoss Quick Rune,163,80,500000,0,8000 +10028,WorldBoss Quick Rune,164,80,500000,0,10000 +10028,WorldBoss Quick Rune,165,80,500000,0,9000 +10028,WorldBoss Quick Rune,166,80,500000,0,8000 +10028,WorldBoss Quick Rune,167,80,500000,0,10000 +10028,WorldBoss Quick Rune,168,80,500000,0,9000 +10028,WorldBoss Quick Rune,169,80,500000,0,8000 +10028,WorldBoss Quick Rune,170,0,3000000,0,5000 +10028,WorldBoss Quick Rune,171,80,500000,200,10000 +10028,WorldBoss Quick Rune,172,80,500000,0,9000 +10028,WorldBoss Quick Rune,173,80,500000,0,8000 +10028,WorldBoss Quick Rune,174,80,500000,0,10000 +10028,WorldBoss Quick Rune,175,80,500000,0,9000 +10028,WorldBoss Quick Rune,176,80,500000,0,8000 +10028,WorldBoss Quick Rune,177,80,500000,0,10000 +10028,WorldBoss Quick Rune,178,80,500000,0,9000 +10028,WorldBoss Quick Rune,179,80,500000,0,8000 +10028,WorldBoss Quick Rune,180,0,3000000,0,5000 +10028,WorldBoss Quick Rune,181,80,500000,200,10000 +10028,WorldBoss Quick Rune,182,80,500000,0,9000 +10028,WorldBoss Quick Rune,183,80,500000,0,8000 +10028,WorldBoss Quick Rune,184,80,500000,0,10000 +10028,WorldBoss Quick Rune,185,80,500000,0,9000 +10028,WorldBoss Quick Rune,186,80,500000,0,8000 +10028,WorldBoss Quick Rune,187,80,500000,0,10000 +10028,WorldBoss Quick Rune,188,80,500000,0,9000 +10028,WorldBoss Quick Rune,189,80,500000,0,8000 +10028,WorldBoss Quick Rune,190,0,3000000,0,5000 +10028,WorldBoss Quick Rune,191,80,500000,200,10000 +10028,WorldBoss Quick Rune,192,80,500000,0,9000 +10028,WorldBoss Quick Rune,193,80,500000,0,8000 +10028,WorldBoss Quick Rune,194,80,500000,0,10000 +10028,WorldBoss Quick Rune,195,80,500000,0,9000 +10028,WorldBoss Quick Rune,196,80,500000,0,8000 +10028,WorldBoss Quick Rune,197,80,500000,0,10000 +10028,WorldBoss Quick Rune,198,80,500000,0,9000 +10028,WorldBoss Quick Rune,199,80,500000,0,8000 +10028,WorldBoss Quick Rune,200,0,3000000,0,5000 +10028,WorldBoss Quick Rune,201,80,800000,800,10000 +10028,WorldBoss Quick Rune,202,80,800000,0,9000 +10028,WorldBoss Quick Rune,203,80,800000,0,8000 +10028,WorldBoss Quick Rune,204,80,800000,0,10000 +10028,WorldBoss Quick Rune,205,80,800000,0,9000 +10028,WorldBoss Quick Rune,206,80,800000,0,8000 +10028,WorldBoss Quick Rune,207,80,800000,0,10000 +10028,WorldBoss Quick Rune,208,80,800000,0,9000 +10028,WorldBoss Quick Rune,209,80,800000,0,8000 +10028,WorldBoss Quick Rune,210,0,5000000,0,5000 +10028,WorldBoss Quick Rune,211,80,800000,800,10000 +10028,WorldBoss Quick Rune,212,80,800000,0,9000 +10028,WorldBoss Quick Rune,213,80,800000,0,8000 +10028,WorldBoss Quick Rune,214,80,800000,0,10000 +10028,WorldBoss Quick Rune,215,80,800000,0,9000 +10028,WorldBoss Quick Rune,216,80,800000,0,8000 +10028,WorldBoss Quick Rune,217,80,800000,0,10000 +10028,WorldBoss Quick Rune,218,80,800000,0,9000 +10028,WorldBoss Quick Rune,219,80,800000,0,8000 +10028,WorldBoss Quick Rune,220,0,5000000,0,5000 +10028,WorldBoss Quick Rune,221,80,800000,800,10000 +10028,WorldBoss Quick Rune,222,80,800000,0,9000 +10028,WorldBoss Quick Rune,223,80,800000,0,8000 +10028,WorldBoss Quick Rune,224,80,800000,0,10000 +10028,WorldBoss Quick Rune,225,80,800000,0,9000 +10028,WorldBoss Quick Rune,226,80,800000,0,8000 +10028,WorldBoss Quick Rune,227,80,800000,0,10000 +10028,WorldBoss Quick Rune,228,80,800000,0,9000 +10028,WorldBoss Quick Rune,229,80,800000,0,8000 +10028,WorldBoss Quick Rune,230,0,5000000,0,5000 +10028,WorldBoss Quick Rune,231,80,800000,800,10000 +10028,WorldBoss Quick Rune,232,80,800000,0,9000 +10028,WorldBoss Quick Rune,233,80,800000,0,8000 +10028,WorldBoss Quick Rune,234,80,800000,0,10000 +10028,WorldBoss Quick Rune,235,80,800000,0,9000 +10028,WorldBoss Quick Rune,236,80,800000,0,8000 +10028,WorldBoss Quick Rune,237,80,800000,0,10000 +10028,WorldBoss Quick Rune,238,80,800000,0,9000 +10028,WorldBoss Quick Rune,239,80,800000,0,8000 +10028,WorldBoss Quick Rune,240,0,5000000,0,5000 +10028,WorldBoss Quick Rune,241,80,800000,800,10000 +10028,WorldBoss Quick Rune,242,80,800000,0,9000 +10028,WorldBoss Quick Rune,243,80,800000,0,8000 +10028,WorldBoss Quick Rune,244,80,800000,0,10000 +10028,WorldBoss Quick Rune,245,80,800000,0,9000 +10028,WorldBoss Quick Rune,246,80,800000,0,8000 +10028,WorldBoss Quick Rune,247,80,800000,0,10000 +10028,WorldBoss Quick Rune,248,80,800000,0,9000 +10028,WorldBoss Quick Rune,249,80,800000,0,8000 +10028,WorldBoss Quick Rune,250,0,5000000,0,5000 +10028,WorldBoss Quick Rune,251,80,800000,800,10000 +10028,WorldBoss Quick Rune,252,80,800000,0,9000 +10028,WorldBoss Quick Rune,253,80,800000,0,8000 +10028,WorldBoss Quick Rune,254,80,800000,0,10000 +10028,WorldBoss Quick Rune,255,80,800000,0,9000 +10028,WorldBoss Quick Rune,256,80,800000,0,8000 +10028,WorldBoss Quick Rune,257,80,800000,0,10000 +10028,WorldBoss Quick Rune,258,80,800000,0,9000 +10028,WorldBoss Quick Rune,259,80,800000,0,8000 +10028,WorldBoss Quick Rune,260,0,5000000,0,5000 +10028,WorldBoss Quick Rune,261,80,800000,800,10000 +10028,WorldBoss Quick Rune,262,80,800000,0,9000 +10028,WorldBoss Quick Rune,263,80,800000,0,8000 +10028,WorldBoss Quick Rune,264,80,800000,0,10000 +10028,WorldBoss Quick Rune,265,80,800000,0,9000 +10028,WorldBoss Quick Rune,266,80,800000,0,8000 +10028,WorldBoss Quick Rune,267,80,800000,0,10000 +10028,WorldBoss Quick Rune,268,80,800000,0,9000 +10028,WorldBoss Quick Rune,269,80,800000,0,8000 +10028,WorldBoss Quick Rune,270,0,5000000,0,5000 +10028,WorldBoss Quick Rune,271,80,800000,800,10000 +10028,WorldBoss Quick Rune,272,80,800000,0,9000 +10028,WorldBoss Quick Rune,273,80,800000,0,8000 +10028,WorldBoss Quick Rune,274,80,800000,0,10000 +10028,WorldBoss Quick Rune,275,80,800000,0,9000 +10028,WorldBoss Quick Rune,276,80,800000,0,8000 +10028,WorldBoss Quick Rune,277,80,800000,0,10000 +10028,WorldBoss Quick Rune,278,80,800000,0,9000 +10028,WorldBoss Quick Rune,279,80,800000,0,8000 +10028,WorldBoss Quick Rune,280,0,5000000,0,5000 +10028,WorldBoss Quick Rune,281,80,800000,800,10000 +10028,WorldBoss Quick Rune,282,80,800000,0,9000 +10028,WorldBoss Quick Rune,283,80,800000,0,8000 +10028,WorldBoss Quick Rune,284,80,800000,0,10000 +10028,WorldBoss Quick Rune,285,80,800000,0,9000 +10028,WorldBoss Quick Rune,286,80,800000,0,8000 +10028,WorldBoss Quick Rune,287,80,800000,0,10000 +10028,WorldBoss Quick Rune,288,80,800000,0,9000 +10028,WorldBoss Quick Rune,289,80,800000,0,8000 +10028,WorldBoss Quick Rune,290,0,5000000,0,5000 +10028,WorldBoss Quick Rune,291,80,800000,800,10000 +10028,WorldBoss Quick Rune,292,80,800000,0,9000 +10028,WorldBoss Quick Rune,293,80,800000,0,8000 +10028,WorldBoss Quick Rune,294,80,800000,0,10000 +10028,WorldBoss Quick Rune,295,80,800000,0,9000 +10028,WorldBoss Quick Rune,296,80,800000,0,8000 +10028,WorldBoss Quick Rune,297,80,800000,0,10000 +10028,WorldBoss Quick Rune,298,80,800000,0,9000 +10028,WorldBoss Quick Rune,299,80,800000,0,8000 +10028,WorldBoss Quick Rune,300,0,5000000,0,5000 \ No newline at end of file diff --git a/Lib9c/TableCSV/RuneListSheet.csv b/Lib9c/TableCSV/RuneListSheet.csv index 744533a570..79469f7819 100644 --- a/Lib9c/TableCSV/RuneListSheet.csv +++ b/Lib9c/TableCSV/RuneListSheet.csv @@ -10,8 +10,8 @@ id,_name,grade,rune_type,required_level,use_place 10021,Adventure Stun Rune,5,2,1,1 10022,Arena Stun Rune,5,2,1,2 10023,Adventure Vampiric Rune,5,2,1,1 -10024,World Boss Vampiric Rune,5,2,1,4 -10025,Adventure Stamina Rune,3,1,1,1 -10026,Arena Stamina Rune,3,1,1,2 -10027,Adventure Quick Rune,3,1,1,1 -10028,World Boss Quick Rune,3,1,1,4 +10024,WorldBoss Vampiric Rune,5,2,1,4 +10025,Adventure Stamina Rune,4,1,1,1 +10026,Arena Stamina Rune,4,1,1,2 +10027,Arena Quick Rune,4,1,1,2 +10028,WorldBoss Quick Rune,4,1,1,4 \ No newline at end of file diff --git a/Lib9c/TableCSV/RuneSheet.csv b/Lib9c/TableCSV/RuneSheet.csv index 0f5a665d96..f2cbcabe52 100644 --- a/Lib9c/TableCSV/RuneSheet.csv +++ b/Lib9c/TableCSV/RuneSheet.csv @@ -7,11 +7,11 @@ id,_name,ticker 10013,Saehrimnir Skill Rune,RUNESTONE_SAEHRIMNIR3 30001,Adventurer's Rune,RUNE_ADVENTURER 20001,Golden leaf Rune,RUNE_GOLDENLEAF -10021,Adventure Stun Rune,RUNESTONE_STUN1 -10022,Arena Stun Rune,RUNESTONE_STUN2 -10023,Adventure Vampiric Rune,RUNESTONE_VAMPIRIC1 -10024,World Boss Vampiric Rune,RUNESTONE_VAMPIRIC2 -10025,Adventure Stamina Rune,RUNESTONE_STAMINA1 -10026,Arena Stamina Rune,RUNESTONE_STAMINA2 -10027,Adventure Quick Rune,RUNESTONE_QUICK1 -10028,World Boss Quick Rune,RUNESTONE_QUICK2 +10021,Adventure Stun Rune,RUNESTONE_STUN_ADVENTURE +10022,Arena Stun Rune,RUNESTONE_STUN_ARENA +10023,Adventure Vampiric Rune,RUNESTONE_VAMPIRIC_ADVENTURE +10024,WorldBoss Vampiric Rune,RUNESTONE_VAMPIRIC_WORLDBOSS +10025,Adventure Stamina Rune,RUNESTONE_STAMINA_ADVENTURE +10026,Arena Stamina Rune,RUNESTONE_STAMINA_ARENA +10027,Arena Quick Rune,RUNESTONE_QUICK_ARENA +10028,WorldBoss Quick Rune,RUNESTONE_QUICK_WORLDBOSS \ No newline at end of file diff --git a/Lib9c/TableCSV/Skill/ActionBuffSheet.csv b/Lib9c/TableCSV/Skill/ActionBuffSheet.csv index 8111723706..39991d0e6f 100644 --- a/Lib9c/TableCSV/Skill/ActionBuffSheet.csv +++ b/Lib9c/TableCSV/Skill/ActionBuffSheet.csv @@ -4,3 +4,4 @@ id,group,_name,chance,duration,target_type,buff_type,elemental_type,atk_power_ra 500003,500001,출혈(0.2),100,10,Enemy,Bleed,Normal,0.2 600001,600001,출혈,100,0,Enemies,Bleed,Normal,1 704000,704000,기절,100,0,Enemy,Stun,Normal,0 +704001,704000,기절,100,0,Enemies,Stun,Normal,0 \ No newline at end of file diff --git a/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv b/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv index d462e5b892..cc114caa3c 100644 --- a/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv +++ b/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv @@ -4,3 +4,4 @@ skill_id,buff_id 500005,500003 600001,600001 700004,704000 +700005,704001 \ No newline at end of file diff --git a/Lib9c/TableCSV/Skill/SkillSheet.csv b/Lib9c/TableCSV/Skill/SkillSheet.csv index a9ed44380a..ab3ecf8142 100644 --- a/Lib9c/TableCSV/Skill/SkillSheet.csv +++ b/Lib9c/TableCSV/Skill/SkillSheet.csv @@ -168,3 +168,4 @@ _250001,속도 증가(전체),Normal,Buff,SpeedBuff,Ally,1,1 // 미구현 700002,피해 감소 (비율),Normal,Buff,DamageReductionBuff,Self,1,15 700003,치명 데미지 증가,Normal,Buff,CriticalDamageBuff,Self,1,15 700004,기절,Normal,Debuff,Buff,Enemy,1,15 +700005,기절,Normal,Debuff,Buff,Enemies,1,15 \ No newline at end of file From 5eef375f1ac226dc5a69950c7612a9eaba614f9a Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Tue, 5 Dec 2023 15:51:58 +0900 Subject: [PATCH 59/70] Fix tests --- .Lib9c.Tests/AccountExtensions.cs | 62 +++++++++++++++++++ .../Action/AccountStateViewExtensionsTest.cs | 2 +- .Lib9c.Tests/Action/BattleArena4Test.cs | 2 +- .Lib9c.Tests/Action/Buy11Test.cs | 4 +- .../Action/CombinationEquipment11Test.cs | 2 +- .Lib9c.Tests/Action/HackAndSlash10Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash11Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash12Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash13Test.cs | 8 +-- .Lib9c.Tests/Action/HackAndSlash15Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash16Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash17Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash18Test.cs | 8 +-- .Lib9c.Tests/Action/HackAndSlash19Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash20Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash21Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash6Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash7Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash8Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlash9Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlashSweep1Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlashSweep2Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlashSweep3Test.cs | 8 +-- .Lib9c.Tests/Action/HackAndSlashSweep4Test.cs | 8 +-- .Lib9c.Tests/Action/HackAndSlashSweep5Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlashSweep6Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlashSweep7Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlashSweep8Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlashSweep9Test.cs | 6 +- .Lib9c.Tests/Action/HackAndSlashTest14.cs | 6 +- .Lib9c.Tests/Action/ItemEnhancement10Test.cs | 2 +- .Lib9c.Tests/Action/ItemEnhancement11Test.cs | 2 +- .../Action/MimisbrunnrBattle10Test.cs | 2 +- .Lib9c.Tests/Action/RankingBattle11Test.cs | 2 +- 34 files changed, 150 insertions(+), 88 deletions(-) create mode 100644 .Lib9c.Tests/AccountExtensions.cs diff --git a/.Lib9c.Tests/AccountExtensions.cs b/.Lib9c.Tests/AccountExtensions.cs new file mode 100644 index 0000000000..5dd4c6efc7 --- /dev/null +++ b/.Lib9c.Tests/AccountExtensions.cs @@ -0,0 +1,62 @@ +namespace Lib9c.Tests +{ + using Lib9c.Tests.Action; + using Libplanet.Action.State; + using Libplanet.Crypto; + using Libplanet.Store.Trie; + + public static class AccountExtensions + { + private static readonly byte[] _conversionTable = + { + 48, // '0' + 49, // '1' + 50, // '2' + 51, // '3' + 52, // '4' + 53, // '5' + 54, // '6' + 55, // '7' + 56, // '8' + 57, // '9' + 97, // 'a' + 98, // 'b' + 99, // 'c' + 100, // 'd' + 101, // 'e' + 102, // 'f' + }; + + /// + /// A rather shrewed method of removing value from an account. + /// This can be very slow depending on the size of the state. + /// For test backward compatibility only. Should not be used in production. + /// + public static IAccount SetNull(this IAccount account, Address address) + { + var trie = MockState.Empty.Trie; + var path = ToStateKey(address); + foreach (var kv in account.Trie.IterateValues()) + { + trie = kv.Path.Equals(path) + ? trie + : trie.Set(kv.Path, kv.Value); + } + + return new Account(new AccountState(trie)); + } + + private static KeyBytes ToStateKey(Address address) + { + var addressBytes = address.ByteArray; + byte[] buffer = new byte[addressBytes.Length * 2]; + for (int i = 0; i < addressBytes.Length; i++) + { + buffer[i * 2] = _conversionTable[addressBytes[i] >> 4]; + buffer[i * 2 + 1] = _conversionTable[addressBytes[i] & 0xf]; + } + + return new KeyBytes(buffer); + } + } +} diff --git a/.Lib9c.Tests/Action/AccountStateViewExtensionsTest.cs b/.Lib9c.Tests/Action/AccountStateViewExtensionsTest.cs index 7bdd6a395e..f233512f74 100644 --- a/.Lib9c.Tests/Action/AccountStateViewExtensionsTest.cs +++ b/.Lib9c.Tests/Action/AccountStateViewExtensionsTest.cs @@ -129,7 +129,7 @@ public void GetAvatarStateV2_Throw_FailedLoadStateException(string key) .SetState(_avatarAddress.Derive(LegacyInventoryKey), _avatarState.inventory.Serialize()) .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), _avatarState.worldInformation.Serialize()) .SetState(_avatarAddress.Derive(LegacyQuestListKey), _avatarState.questList.Serialize()); - states = states.SetState(_avatarAddress.Derive(key), null); + states = states.SetNull(_avatarAddress.Derive(key)); var exc = Assert.Throws(() => states.GetAvatarStateV2(_avatarAddress)); Assert.Contains(key, exc.Message); } diff --git a/.Lib9c.Tests/Action/BattleArena4Test.cs b/.Lib9c.Tests/Action/BattleArena4Test.cs index ce71aa91ae..acbfc0f972 100644 --- a/.Lib9c.Tests/Action/BattleArena4Test.cs +++ b/.Lib9c.Tests/Action/BattleArena4Test.cs @@ -862,7 +862,7 @@ public void Execute_v100291() { if (keys.Contains(key)) { - _state = _state.SetState(Addresses.TableSheet.Derive(key), null!); + _state = _state.SetNull(Addresses.TableSheet.Derive(key)); } } diff --git a/.Lib9c.Tests/Action/Buy11Test.cs b/.Lib9c.Tests/Action/Buy11Test.cs index 05e9f25362..1928b096a4 100644 --- a/.Lib9c.Tests/Action/Buy11Test.cs +++ b/.Lib9c.Tests/Action/Buy11Test.cs @@ -111,7 +111,7 @@ public Buy11Test(ITestOutputHelper outputHelper) var arenaSheetAddress = Addresses.GetSheetAddress(); _arenaSheetState = _initialState.GetState(arenaSheetAddress); - _initialState = _initialState.SetState(arenaSheetAddress, null); + _initialState = _initialState.SetNull(arenaSheetAddress); } public static IEnumerable GetExecuteMemberData() @@ -809,7 +809,7 @@ public void Execute_With_Testbed() }; var arenaSheetAddress = Addresses.GetSheetAddress(); - nextState = nextState.SetState(arenaSheetAddress, null); + nextState = nextState.SetNull(arenaSheetAddress); nextState = buyAction.Execute(new ActionContext() { diff --git a/.Lib9c.Tests/Action/CombinationEquipment11Test.cs b/.Lib9c.Tests/Action/CombinationEquipment11Test.cs index 257f911221..d2e9bf83b1 100644 --- a/.Lib9c.Tests/Action/CombinationEquipment11Test.cs +++ b/.Lib9c.Tests/Action/CombinationEquipment11Test.cs @@ -92,7 +92,7 @@ public CombinationEquipment11Test(ITestOutputHelper outputHelper) var arenaSheetAddress = Addresses.GetSheetAddress(); _arenaSheetState = _initialState.GetState(arenaSheetAddress); - _initialState = _initialState.SetState(arenaSheetAddress, null); + _initialState = _initialState.SetNull(arenaSheetAddress); } [Theory] diff --git a/.Lib9c.Tests/Action/HackAndSlash10Test.cs b/.Lib9c.Tests/Action/HackAndSlash10Test.cs index c400a5f61c..48ff30b877 100644 --- a/.Lib9c.Tests/Action/HackAndSlash10Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash10Test.cs @@ -487,9 +487,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlash11Test.cs b/.Lib9c.Tests/Action/HackAndSlash11Test.cs index ec93ce2504..4fb9d9a866 100644 --- a/.Lib9c.Tests/Action/HackAndSlash11Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash11Test.cs @@ -446,9 +446,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlash12Test.cs b/.Lib9c.Tests/Action/HackAndSlash12Test.cs index a9114aa6b7..f18f21a45e 100644 --- a/.Lib9c.Tests/Action/HackAndSlash12Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash12Test.cs @@ -430,9 +430,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext diff --git a/.Lib9c.Tests/Action/HackAndSlash13Test.cs b/.Lib9c.Tests/Action/HackAndSlash13Test.cs index a6eca5bc22..f0ed23c4c5 100644 --- a/.Lib9c.Tests/Action/HackAndSlash13Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash13Test.cs @@ -96,7 +96,7 @@ public HackAndSlash13Test() } var arenaSheetAddress = Addresses.GetSheetAddress(); - _initialState = _initialState.SetState(arenaSheetAddress, null); + _initialState = _initialState.SetNull(arenaSheetAddress); foreach (var address in _avatarState.combinationSlotAddresses) { @@ -437,9 +437,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext diff --git a/.Lib9c.Tests/Action/HackAndSlash15Test.cs b/.Lib9c.Tests/Action/HackAndSlash15Test.cs index 58d16cf399..0adb82db6a 100644 --- a/.Lib9c.Tests/Action/HackAndSlash15Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash15Test.cs @@ -432,9 +432,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext diff --git a/.Lib9c.Tests/Action/HackAndSlash16Test.cs b/.Lib9c.Tests/Action/HackAndSlash16Test.cs index 5b0efdbdbc..44adceecc0 100644 --- a/.Lib9c.Tests/Action/HackAndSlash16Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash16Test.cs @@ -433,9 +433,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext diff --git a/.Lib9c.Tests/Action/HackAndSlash17Test.cs b/.Lib9c.Tests/Action/HackAndSlash17Test.cs index 139869a918..a0c2bd92b8 100644 --- a/.Lib9c.Tests/Action/HackAndSlash17Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash17Test.cs @@ -433,9 +433,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext diff --git a/.Lib9c.Tests/Action/HackAndSlash18Test.cs b/.Lib9c.Tests/Action/HackAndSlash18Test.cs index 94cc781601..d4f3a3d892 100644 --- a/.Lib9c.Tests/Action/HackAndSlash18Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash18Test.cs @@ -431,9 +431,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext @@ -933,7 +933,7 @@ public void Execute_V100291() { if (keys.Contains(key)) { - initialState = initialState.SetState(Addresses.TableSheet.Derive(key), null!); + initialState = initialState.SetNull(Addresses.TableSheet.Derive(key)); } } diff --git a/.Lib9c.Tests/Action/HackAndSlash19Test.cs b/.Lib9c.Tests/Action/HackAndSlash19Test.cs index d560ff3f85..32de6cb2fe 100644 --- a/.Lib9c.Tests/Action/HackAndSlash19Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash19Test.cs @@ -435,9 +435,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext diff --git a/.Lib9c.Tests/Action/HackAndSlash20Test.cs b/.Lib9c.Tests/Action/HackAndSlash20Test.cs index 206512de76..3b4bb6b0ad 100644 --- a/.Lib9c.Tests/Action/HackAndSlash20Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash20Test.cs @@ -436,9 +436,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext diff --git a/.Lib9c.Tests/Action/HackAndSlash21Test.cs b/.Lib9c.Tests/Action/HackAndSlash21Test.cs index d5c1cecea4..7b5c751c3f 100644 --- a/.Lib9c.Tests/Action/HackAndSlash21Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash21Test.cs @@ -437,9 +437,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext diff --git a/.Lib9c.Tests/Action/HackAndSlash6Test.cs b/.Lib9c.Tests/Action/HackAndSlash6Test.cs index 32031d3071..a5eeea5f23 100644 --- a/.Lib9c.Tests/Action/HackAndSlash6Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash6Test.cs @@ -396,9 +396,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlash7Test.cs b/.Lib9c.Tests/Action/HackAndSlash7Test.cs index a9a712b89e..87858225d4 100644 --- a/.Lib9c.Tests/Action/HackAndSlash7Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash7Test.cs @@ -497,9 +497,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlash8Test.cs b/.Lib9c.Tests/Action/HackAndSlash8Test.cs index 47425439a2..788f4d1cab 100644 --- a/.Lib9c.Tests/Action/HackAndSlash8Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash8Test.cs @@ -490,9 +490,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlash9Test.cs b/.Lib9c.Tests/Action/HackAndSlash9Test.cs index c79a785865..a1616c6137 100644 --- a/.Lib9c.Tests/Action/HackAndSlash9Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlash9Test.cs @@ -510,9 +510,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep1Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep1Test.cs index 36402c5348..5e2808597a 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep1Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep1Test.cs @@ -201,9 +201,9 @@ public void Execute_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep2Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep2Test.cs index e937d835c2..c8d888b9a3 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep2Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep2Test.cs @@ -201,9 +201,9 @@ public void Execute_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep3Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep3Test.cs index c01739081a..3cc15193c3 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep3Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep3Test.cs @@ -83,7 +83,7 @@ public HackAndSlashSweep3Test() } var arenaSheetAddress = Addresses.GetSheetAddress(); - _initialState = _initialState.SetState(arenaSheetAddress, null); + _initialState = _initialState.SetNull(arenaSheetAddress); foreach (var address in _avatarState.combinationSlotAddresses) { @@ -231,9 +231,9 @@ public void Execute_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep4Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep4Test.cs index 189a2b22e7..25b7c1d8d9 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep4Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep4Test.cs @@ -83,7 +83,7 @@ public HackAndSlashSweep4Test() } var arenaSheetAddress = Addresses.GetSheetAddress(); - _initialState = _initialState.SetState(arenaSheetAddress, null); + _initialState = _initialState.SetNull(arenaSheetAddress); foreach (var address in _avatarState.combinationSlotAddresses) { @@ -251,9 +251,9 @@ public void Execute_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep5Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep5Test.cs index 8bea6566ca..8a43e545e6 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep5Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep5Test.cs @@ -254,9 +254,9 @@ public void Execute_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep6Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep6Test.cs index 7e78117ab3..014f088d3c 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep6Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep6Test.cs @@ -261,9 +261,9 @@ public void Execute_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep7Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep7Test.cs index 99d5cacdce..c60000516e 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep7Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep7Test.cs @@ -264,9 +264,9 @@ public void Execute_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep8Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep8Test.cs index ee7106ad59..7a05febbee 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep8Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep8Test.cs @@ -266,9 +266,9 @@ public void Execute_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlashSweep9Test.cs b/.Lib9c.Tests/Action/HackAndSlashSweep9Test.cs index 7f9d2dcfdf..53a7dafbed 100644 --- a/.Lib9c.Tests/Action/HackAndSlashSweep9Test.cs +++ b/.Lib9c.Tests/Action/HackAndSlashSweep9Test.cs @@ -267,9 +267,9 @@ public void Execute_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } Assert.Throws(() => action.Execute(new ActionContext() diff --git a/.Lib9c.Tests/Action/HackAndSlashTest14.cs b/.Lib9c.Tests/Action/HackAndSlashTest14.cs index 38bd1031f1..c3f4bc54fc 100644 --- a/.Lib9c.Tests/Action/HackAndSlashTest14.cs +++ b/.Lib9c.Tests/Action/HackAndSlashTest14.cs @@ -423,9 +423,9 @@ public void Execute_Throw_FailedLoadStateException(bool backward) { state = _initialState .SetState(_avatarAddress, _avatarState.SerializeV2()) - .SetState(_avatarAddress.Derive(LegacyInventoryKey), null!) - .SetState(_avatarAddress.Derive(LegacyWorldInformationKey), null!) - .SetState(_avatarAddress.Derive(LegacyQuestListKey), null!); + .SetNull(_avatarAddress.Derive(LegacyInventoryKey)) + .SetNull(_avatarAddress.Derive(LegacyWorldInformationKey)) + .SetNull(_avatarAddress.Derive(LegacyQuestListKey)); } var exec = Assert.Throws(() => action.Execute(new ActionContext diff --git a/.Lib9c.Tests/Action/ItemEnhancement10Test.cs b/.Lib9c.Tests/Action/ItemEnhancement10Test.cs index c007a0fd14..f1258d13a3 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement10Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement10Test.cs @@ -80,7 +80,7 @@ public ItemEnhancement10Test() var arenaSheetAddress = Addresses.GetSheetAddress(); _arenaSheetState = _initialState.GetState(arenaSheetAddress); - _initialState = _initialState.SetState(arenaSheetAddress, null); + _initialState = _initialState.SetNull(arenaSheetAddress); } [Theory] diff --git a/.Lib9c.Tests/Action/ItemEnhancement11Test.cs b/.Lib9c.Tests/Action/ItemEnhancement11Test.cs index cf9d03e4a8..886f8af74e 100644 --- a/.Lib9c.Tests/Action/ItemEnhancement11Test.cs +++ b/.Lib9c.Tests/Action/ItemEnhancement11Test.cs @@ -77,7 +77,7 @@ public ItemEnhancement11Test() } var costV3SheetAddress = Addresses.GetSheetAddress(); - _initialState = _initialState.SetState(costV3SheetAddress, null); + _initialState = _initialState.SetNull(costV3SheetAddress); } [Theory] diff --git a/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs b/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs index b702813dea..8d6a632633 100644 --- a/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs +++ b/.Lib9c.Tests/Action/MimisbrunnrBattle10Test.cs @@ -688,7 +688,7 @@ public void Execute_v100291() { if (keys.Contains(key)) { - state = state.SetState(Addresses.TableSheet.Derive(key), null!); + state = state.SetNull(Addresses.TableSheet.Derive(key)); } } diff --git a/.Lib9c.Tests/Action/RankingBattle11Test.cs b/.Lib9c.Tests/Action/RankingBattle11Test.cs index 2d364e01ea..ff9b1aba9a 100644 --- a/.Lib9c.Tests/Action/RankingBattle11Test.cs +++ b/.Lib9c.Tests/Action/RankingBattle11Test.cs @@ -88,7 +88,7 @@ public RankingBattle11Test(ITestOutputHelper outputHelper) var arenaSheetAddress = Addresses.GetSheetAddress(); _arenaSheetState = _initialState.GetState(arenaSheetAddress); - _initialState = _initialState.SetState(arenaSheetAddress, null); + _initialState = _initialState.SetNull(arenaSheetAddress); Log.Logger = new LoggerConfiguration() .MinimumLevel.Verbose() From def8af8510e3bba5978987f3e86fc68a9164fd83 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Tue, 5 Dec 2023 16:40:07 +0900 Subject: [PATCH 60/70] Fix MockState --- .Lib9c.Tests/Action/MockState.cs | 229 ++++++++++++++++++++----------- 1 file changed, 152 insertions(+), 77 deletions(-) diff --git a/.Lib9c.Tests/Action/MockState.cs b/.Lib9c.Tests/Action/MockState.cs index f8df30ca1a..b68be47bcf 100644 --- a/.Lib9c.Tests/Action/MockState.cs +++ b/.Lib9c.Tests/Action/MockState.cs @@ -1,15 +1,15 @@ -namespace Lib9c.Tests.Action -{ #nullable enable +namespace Lib9c.Tests.Action +{ using System; using System.Collections.Generic; - using System.Collections.Immutable; using System.Linq; using System.Numerics; using Bencodex.Types; using Libplanet.Action.State; using Libplanet.Crypto; + using Libplanet.Store; using Libplanet.Store.Trie; using Libplanet.Types.Assets; using Libplanet.Types.Consensus; @@ -52,116 +52,102 @@ namespace Lib9c.Tests.Action public class MockState : IAccountState { private static readonly MockState _empty = new MockState(); - private readonly IImmutableDictionary _states; - private readonly IImmutableDictionary<(Address, Currency), BigInteger> _fungibles; - private readonly IImmutableDictionary _totalSupplies; - private readonly ValidatorSet _validatorSet; private MockState() - : this( - ImmutableDictionary.Empty, - ImmutableDictionary<(Address Address, Currency Currency), BigInteger>.Empty, - ImmutableDictionary.Empty, - new ValidatorSet()) + : this(new TrieStateStore(new MemoryKeyValueStore()).GetStateRoot(null)) { } - private MockState( - IImmutableDictionary state, - IImmutableDictionary<(Address Address, Currency Currency), BigInteger> balance, - IImmutableDictionary totalSupplies, - ValidatorSet validatorSet) + private MockState(ITrie trie) { - _states = state; - _fungibles = balance; - _totalSupplies = totalSupplies; - _validatorSet = validatorSet; + Trie = trie; } public static MockState Empty => _empty; - public ITrie Trie => new MerkleTrie(new MemoryKeyValueStore()); - - public IImmutableDictionary States => _states; - - public IImmutableDictionary<(Address, Currency), BigInteger> Fungibles => _fungibles; - - public IImmutableDictionary TotalSupplies => _totalSupplies; + public ITrie Trie { get; } - public ValidatorSet ValidatorSet => _validatorSet; - - public IValue? GetState(Address address) => _states.TryGetValue(address, out IValue? value) - ? value - : null; + public IValue? GetState(Address address) => Trie.Get(KeyConverters.ToStateKey(address)); public IReadOnlyList GetStates(IReadOnlyList
addresses) => - addresses.Select(GetState).ToArray(); + addresses.Select(GetState).ToList(); public FungibleAssetValue GetBalance(Address address, Currency currency) => - _fungibles.TryGetValue((address, currency), out BigInteger rawValue) + Trie.Get(KeyConverters.ToFungibleAssetKey(address, currency)) is Integer rawValue ? FungibleAssetValue.FromRawValue(currency, rawValue) - : FungibleAssetValue.FromRawValue(currency, 0); + : currency * 0; public FungibleAssetValue GetTotalSupply(Currency currency) { if (!currency.TotalSupplyTrackable) { var msg = - $"The total supply value of the currency {currency} is not trackable" - + " because it is a legacy untracked currency which might have been" - + " established before the introduction of total supply tracking support."; + $"The total supply value of the currency {currency} is not trackable " + + "because it is a legacy untracked currency which might have been" + + "established before the introduction of total supply tracking support."; throw new TotalSupplyNotTrackableException(msg, currency); } - return _totalSupplies.TryGetValue(currency, out var rawValue) + return Trie.Get(KeyConverters.ToTotalSupplyKey(currency)) is Integer rawValue ? FungibleAssetValue.FromRawValue(currency, rawValue) - : FungibleAssetValue.FromRawValue(currency, 0); + : currency * 0; } - public ValidatorSet GetValidatorSet() => _validatorSet; + public ValidatorSet GetValidatorSet() => + Trie.Get(KeyConverters.ValidatorSetKey) is List list + ? new ValidatorSet(list) + : new ValidatorSet(); public MockState SetState(Address address, IValue state) => - new MockState( - _states.SetItem(address, state), - _fungibles, - _totalSupplies, - _validatorSet); + new MockState(Trie.Set(KeyConverters.ToStateKey(address), state)); - public MockState SetBalance(Address address, FungibleAssetValue amount) => + public MockState SetBalance( + Address address, FungibleAssetValue amount) => SetBalance((address, amount.Currency), amount.RawValue); - public MockState SetBalance(Address address, Currency currency, BigInteger rawAmount) => + public MockState SetBalance( + Address address, Currency currency, BigInteger rawAmount) => SetBalance((address, currency), rawAmount); - public MockState SetBalance((Address Address, Currency Currency) pair, BigInteger rawAmount) => - new MockState( - _states, - _fungibles.SetItem(pair, rawAmount), - _totalSupplies, - _validatorSet); + public MockState SetBalance( + (Address Address, Currency Currency) pair, BigInteger rawAmount) => + new MockState(Trie.Set( + KeyConverters.ToFungibleAssetKey(pair.Address, pair.Currency), + new Integer(rawAmount))); public MockState AddBalance(Address address, FungibleAssetValue amount) => AddBalance((address, amount.Currency), amount.RawValue); - public MockState AddBalance(Address address, Currency currency, BigInteger rawAmount) => + public MockState AddBalance( + Address address, Currency currency, BigInteger rawAmount) => AddBalance((address, currency), rawAmount); - public MockState AddBalance((Address Address, Currency Currency) pair, BigInteger rawAmount) => - SetBalance(pair, (_fungibles.TryGetValue(pair, out BigInteger amount) ? amount : 0) + rawAmount); + public MockState AddBalance( + (Address Address, Currency Currency) pair, BigInteger rawAmount) => + SetBalance( + pair, + (Trie.Get(KeyConverters.ToFungibleAssetKey(pair.Address, pair.Currency)) is Integer amount ? amount : 0) + rawAmount); - public MockState SubtractBalance(Address address, FungibleAssetValue amount) => + public MockState SubtractBalance( + Address address, FungibleAssetValue amount) => SubtractBalance((address, amount.Currency), amount.RawValue); - public MockState SubtractBalance(Address address, Currency currency, BigInteger rawAmount) => + public MockState SubtractBalance( + Address address, Currency currency, BigInteger rawAmount) => SubtractBalance((address, currency), rawAmount); - public MockState SubtractBalance((Address Address, Currency Currency) pair, BigInteger rawAmount) => - SetBalance(pair, (_fungibles.TryGetValue(pair, out BigInteger amount) ? amount : 0) - rawAmount); + public MockState SubtractBalance( + (Address Address, Currency Currency) pair, BigInteger rawAmount) => + SetBalance( + pair, + (Trie.Get(KeyConverters.ToFungibleAssetKey(pair.Address, pair.Currency)) is Integer amount ? amount : 0) - rawAmount); - public MockState TransferBalance(Address sender, Address recipient, FungibleAssetValue amount) => + public MockState TransferBalance( + Address sender, Address recipient, FungibleAssetValue amount) => TransferBalance(sender, recipient, amount.Currency, amount.RawValue); - public MockState TransferBalance(Address sender, Address recipient, Currency currency, BigInteger rawAmount) => + public MockState TransferBalance( + Address sender, Address recipient, Currency currency, BigInteger rawAmount) => SubtractBalance(sender, currency, rawAmount).AddBalance(recipient, currency, rawAmount); public MockState SetTotalSupply(FungibleAssetValue amount) => @@ -169,15 +155,13 @@ public MockState SetTotalSupply(FungibleAssetValue amount) => public MockState SetTotalSupply(Currency currency, BigInteger rawAmount) => currency.TotalSupplyTrackable - ? !(currency.MaximumSupply is { } maximumSupply) || rawAmount <= maximumSupply.RawValue + ? !(currency.MaximumSupply is FungibleAssetValue maximumSupply) || + rawAmount <= maximumSupply.RawValue ? new MockState( - _states, - _fungibles, - _totalSupplies.SetItem(currency, rawAmount), - _validatorSet) + Trie.Set(KeyConverters.ToTotalSupplyKey(currency), new Integer(rawAmount))) : throw new ArgumentException( - $"Given {currency}'s total supply is capped at {maximumSupply.RawValue} and " + - $"cannot be set to {rawAmount}.") + $"Given {currency}'s total supply is capped at {maximumSupply.RawValue} " + + $"and cannot be set to {rawAmount}.") : throw new ArgumentException( $"Given {currency} is not trackable."); @@ -185,19 +169,110 @@ public MockState AddTotalSupply(FungibleAssetValue amount) => AddTotalSupply(amount.Currency, amount.RawValue); public MockState AddTotalSupply(Currency currency, BigInteger rawAmount) => - SetTotalSupply(currency, (_totalSupplies.TryGetValue(currency, out BigInteger amount) ? amount : 0) + rawAmount); + SetTotalSupply( + currency, + (Trie.Get(KeyConverters.ToTotalSupplyKey(currency)) is Integer amount ? amount : 0) + rawAmount); public MockState SubtractTotalSupply(FungibleAssetValue amount) => SubtractTotalSupply(amount.Currency, amount.RawValue); public MockState SubtractTotalSupply(Currency currency, BigInteger rawAmount) => - SetTotalSupply(currency, (_totalSupplies.TryGetValue(currency, out BigInteger amount) ? amount : 0) - rawAmount); + SetTotalSupply( + currency, + (Trie.Get(KeyConverters.ToTotalSupplyKey(currency)) is Integer amount ? amount : 0) - rawAmount); public MockState SetValidator(Validator validator) => new MockState( - _states, - _fungibles, - _totalSupplies, - _validatorSet.Update(validator)); + Trie.Set(KeyConverters.ValidatorSetKey, GetValidatorSet().Update(validator).Bencoded)); + + private static class KeyConverters + { + // "___" + internal static readonly KeyBytes ValidatorSetKey = + new KeyBytes(new byte[] { _underScore, _underScore, _underScore }); + + private const byte _underScore = 95; // '_' + + private static readonly byte[] _conversionTable = + { + 48, // '0' + 49, // '1' + 50, // '2' + 51, // '3' + 52, // '4' + 53, // '5' + 54, // '6' + 55, // '7' + 56, // '8' + 57, // '9' + 97, // 'a' + 98, // 'b' + 99, // 'c' + 100, // 'd' + 101, // 'e' + 102, // 'f' + }; + + // $"{ByteUtil.Hex(address.ByteArray)}" + internal static KeyBytes ToStateKey(Address address) + { + var addressBytes = address.ByteArray; + byte[] buffer = new byte[addressBytes.Length * 2]; + for (int i = 0; i < addressBytes.Length; i++) + { + buffer[i * 2] = _conversionTable[addressBytes[i] >> 4]; + buffer[i * 2 + 1] = _conversionTable[addressBytes[i] & 0xf]; + } + + return new KeyBytes(buffer); + } + + // $"_{ByteUtil.Hex(address.ByteArray)}_{ByteUtil.Hex(currency.Hash.ByteArray)}" + internal static KeyBytes ToFungibleAssetKey(Address address, Currency currency) + { + var addressBytes = address.ByteArray; + var currencyBytes = currency.Hash.ByteArray; + byte[] buffer = new byte[addressBytes.Length * 2 + currencyBytes.Length * 2 + 2]; + + buffer[0] = _underScore; + for (int i = 0; i < addressBytes.Length; i++) + { + buffer[1 + i * 2] = _conversionTable[addressBytes[i] >> 4]; + buffer[1 + i * 2 + 1] = _conversionTable[addressBytes[i] & 0xf]; + } + + var offset = addressBytes.Length * 2; + buffer[offset + 1] = _underScore; + for (int i = 0; i < currencyBytes.Length; i++) + { + buffer[offset + 2 + i * 2] = _conversionTable[currencyBytes[i] >> 4]; + buffer[offset + 2 + i * 2 + 1] = _conversionTable[currencyBytes[i] & 0xf]; + } + + return new KeyBytes(buffer); + } + + internal static KeyBytes ToFungibleAssetKey( + (Address Address, Currency Currency) pair) => + ToFungibleAssetKey(pair.Address, pair.Currency); + + // $"__{ByteUtil.Hex(currency.Hash.ByteArray)}" + internal static KeyBytes ToTotalSupplyKey(Currency currency) + { + var currencyBytes = currency.Hash.ByteArray; + byte[] buffer = new byte[currencyBytes.Length * 2 + 2]; + + buffer[0] = _underScore; + buffer[1] = _underScore; + + for (int i = 0; i < currencyBytes.Length; i++) + { + buffer[2 + i * 2] = _conversionTable[currencyBytes[i] >> 4]; + buffer[2 + i * 2 + 1] = _conversionTable[currencyBytes[i] & 0xf]; + } + + return new KeyBytes(buffer); + } + } } } From 43b28e966e352e1698052016b383503524ad503b Mon Sep 17 00:00:00 2001 From: Syu Date: Tue, 5 Dec 2023 18:56:24 +0900 Subject: [PATCH 61/70] Rune total_Cp Change --- Lib9c/TableCSV/Rune/RuneOptionSheet.csv | 4784 +++++++++++------------ 1 file changed, 2392 insertions(+), 2392 deletions(-) diff --git a/Lib9c/TableCSV/Rune/RuneOptionSheet.csv b/Lib9c/TableCSV/Rune/RuneOptionSheet.csv index 78ca8bce43..b245a0e31b 100644 --- a/Lib9c/TableCSV/Rune/RuneOptionSheet.csv +++ b/Lib9c/TableCSV/Rune/RuneOptionSheet.csv @@ -2400,2402 +2400,2402 @@ rune_id,_name,level,total_cp,stat_type_1,value_1,value_type_1,stat_type_2,value_ 20001,Golden leaf Rune,299,226519,HIT,36491,Add,ATK,10766,Add,NONE,0,Add,700002,16,30,7025,Add,NONE,Caster,12 20001,Golden leaf Rune,300,227799,HIT,36651,Add,ATK,10837,Add,NONE,0,Add,700002,16,30,7035,Add,NONE,Caster,12 10021,Adventure Stun Rune,1,1,ATK,310,Add,DEF,33,Add,NONE,0,Add,700005,14,100,1,Add,NONE,Caster,3 -10021,Adventure Stun Rune,2,,ATK,335,Add,DEF,41,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,3,,ATK,360,Add,DEF,49,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,4,,ATK,385,Add,DEF,57,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,5,,ATK,410,Add,DEF,65,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,6,,ATK,435,Add,DEF,73,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,7,,ATK,460,Add,DEF,81,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,8,,ATK,485,Add,DEF,89,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,9,,ATK,510,Add,DEF,97,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,10,,ATK,535,Add,DEF,105,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,11,,ATK,560,Add,DEF,113,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,12,,ATK,585,Add,DEF,121,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,13,,ATK,610,Add,DEF,129,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,14,,ATK,635,Add,DEF,137,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,15,,ATK,660,Add,DEF,145,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,16,,ATK,685,Add,DEF,153,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,17,,ATK,710,Add,DEF,161,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,18,,ATK,735,Add,DEF,169,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,19,,ATK,760,Add,DEF,177,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,20,,ATK,785,Add,DEF,185,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,21,,ATK,810,Add,DEF,193,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,22,,ATK,835,Add,DEF,201,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,23,,ATK,860,Add,DEF,209,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,24,,ATK,885,Add,DEF,217,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,25,,ATK,910,Add,DEF,225,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,26,,ATK,935,Add,DEF,233,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,27,,ATK,960,Add,DEF,241,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,28,,ATK,985,Add,DEF,249,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,29,,ATK,1010,Add,DEF,257,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,30,,ATK,1035,Add,DEF,265,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,31,,ATK,1060,Add,DEF,273,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,32,,ATK,1085,Add,DEF,281,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,33,,ATK,1110,Add,DEF,289,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,34,,ATK,1135,Add,DEF,297,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,35,,ATK,1160,Add,DEF,305,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,36,,ATK,1185,Add,DEF,313,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,37,,ATK,1210,Add,DEF,321,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,38,,ATK,1235,Add,DEF,329,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,39,,ATK,1260,Add,DEF,337,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,40,,ATK,1285,Add,DEF,345,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,41,,ATK,1310,Add,DEF,353,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,42,,ATK,1335,Add,DEF,361,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,43,,ATK,1360,Add,DEF,369,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,44,,ATK,1385,Add,DEF,377,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,45,,ATK,1410,Add,DEF,385,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,46,,ATK,1435,Add,DEF,393,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,47,,ATK,1460,Add,DEF,401,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,48,,ATK,1485,Add,DEF,409,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,49,,ATK,1510,Add,DEF,417,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,50,,ATK,1535,Add,DEF,425,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,51,,ATK,1572,Add,DEF,435,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,52,,ATK,1609,Add,DEF,445,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,53,,ATK,1646,Add,DEF,455,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,54,,ATK,1683,Add,DEF,465,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,55,,ATK,1720,Add,DEF,475,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,56,,ATK,1757,Add,DEF,485,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,57,,ATK,1794,Add,DEF,495,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,58,,ATK,1831,Add,DEF,505,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,59,,ATK,1868,Add,DEF,515,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,60,,ATK,1905,Add,DEF,525,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,61,,ATK,1942,Add,DEF,535,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,62,,ATK,1979,Add,DEF,545,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,63,,ATK,2016,Add,DEF,555,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,64,,ATK,2053,Add,DEF,565,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,65,,ATK,2090,Add,DEF,575,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,66,,ATK,2127,Add,DEF,585,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,67,,ATK,2164,Add,DEF,595,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,68,,ATK,2201,Add,DEF,605,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,69,,ATK,2238,Add,DEF,615,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,70,,ATK,2275,Add,DEF,625,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,71,,ATK,2312,Add,DEF,635,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,72,,ATK,2349,Add,DEF,645,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,73,,ATK,2386,Add,DEF,655,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,74,,ATK,2423,Add,DEF,665,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,75,,ATK,2460,Add,DEF,675,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,76,,ATK,2497,Add,DEF,685,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,77,,ATK,2534,Add,DEF,695,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,78,,ATK,2571,Add,DEF,705,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,79,,ATK,2608,Add,DEF,715,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,80,,ATK,2645,Add,DEF,725,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,81,,ATK,2682,Add,DEF,735,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,82,,ATK,2719,Add,DEF,745,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,83,,ATK,2756,Add,DEF,755,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,84,,ATK,2793,Add,DEF,765,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,85,,ATK,2830,Add,DEF,775,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,86,,ATK,2867,Add,DEF,785,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,87,,ATK,2904,Add,DEF,795,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,88,,ATK,2941,Add,DEF,805,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,89,,ATK,2978,Add,DEF,815,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,90,,ATK,3015,Add,DEF,825,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,91,,ATK,3052,Add,DEF,835,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,92,,ATK,3089,Add,DEF,845,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,93,,ATK,3126,Add,DEF,855,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,94,,ATK,3163,Add,DEF,865,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,95,,ATK,3200,Add,DEF,875,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,96,,ATK,3237,Add,DEF,885,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,97,,ATK,3274,Add,DEF,895,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,98,,ATK,3311,Add,DEF,905,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,99,,ATK,3348,Add,DEF,915,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,100,,ATK,3385,Add,DEF,925,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,101,,ATK,3445,Add,DEF,938,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,102,,ATK,3505,Add,DEF,951,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,103,,ATK,3565,Add,DEF,964,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,104,,ATK,3625,Add,DEF,977,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,105,,ATK,3685,Add,DEF,990,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,106,,ATK,3745,Add,DEF,1003,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,107,,ATK,3805,Add,DEF,1016,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,108,,ATK,3865,Add,DEF,1029,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,109,,ATK,3925,Add,DEF,1042,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,110,,ATK,3985,Add,DEF,1055,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,111,,ATK,4045,Add,DEF,1068,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,112,,ATK,4105,Add,DEF,1081,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,113,,ATK,4165,Add,DEF,1094,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,114,,ATK,4225,Add,DEF,1107,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,115,,ATK,4285,Add,DEF,1120,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,116,,ATK,4345,Add,DEF,1133,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,117,,ATK,4405,Add,DEF,1146,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,118,,ATK,4465,Add,DEF,1159,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,119,,ATK,4525,Add,DEF,1172,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,120,,ATK,4585,Add,DEF,1185,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,121,,ATK,4645,Add,DEF,1198,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,122,,ATK,4705,Add,DEF,1211,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,123,,ATK,4765,Add,DEF,1224,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,124,,ATK,4825,Add,DEF,1237,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,125,,ATK,4885,Add,DEF,1250,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,126,,ATK,4945,Add,DEF,1263,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,127,,ATK,5005,Add,DEF,1276,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,128,,ATK,5065,Add,DEF,1289,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,129,,ATK,5125,Add,DEF,1302,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,130,,ATK,5185,Add,DEF,1315,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,131,,ATK,5245,Add,DEF,1328,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,132,,ATK,5305,Add,DEF,1341,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,133,,ATK,5365,Add,DEF,1354,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,134,,ATK,5425,Add,DEF,1367,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,135,,ATK,5485,Add,DEF,1380,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,136,,ATK,5545,Add,DEF,1393,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,137,,ATK,5605,Add,DEF,1406,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,138,,ATK,5665,Add,DEF,1419,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,139,,ATK,5725,Add,DEF,1432,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,140,,ATK,5785,Add,DEF,1445,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,141,,ATK,5845,Add,DEF,1458,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,142,,ATK,5905,Add,DEF,1471,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,143,,ATK,5965,Add,DEF,1484,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,144,,ATK,6025,Add,DEF,1497,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,145,,ATK,6085,Add,DEF,1510,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,146,,ATK,6145,Add,DEF,1523,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,147,,ATK,6205,Add,DEF,1536,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,148,,ATK,6265,Add,DEF,1549,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,149,,ATK,6325,Add,DEF,1562,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,150,,ATK,6385,Add,DEF,1575,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,151,,ATK,6480,Add,DEF,1595,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,152,,ATK,6575,Add,DEF,1615,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,153,,ATK,6670,Add,DEF,1635,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,154,,ATK,6765,Add,DEF,1655,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,155,,ATK,6860,Add,DEF,1675,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,156,,ATK,6955,Add,DEF,1695,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,157,,ATK,7050,Add,DEF,1715,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,158,,ATK,7145,Add,DEF,1735,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,159,,ATK,7240,Add,DEF,1755,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,160,,ATK,7335,Add,DEF,1775,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,161,,ATK,7430,Add,DEF,1795,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,162,,ATK,7525,Add,DEF,1815,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,163,,ATK,7620,Add,DEF,1835,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,164,,ATK,7715,Add,DEF,1855,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,165,,ATK,7810,Add,DEF,1875,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,166,,ATK,7905,Add,DEF,1895,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,167,,ATK,8000,Add,DEF,1915,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,168,,ATK,8095,Add,DEF,1935,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,169,,ATK,8190,Add,DEF,1955,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,170,,ATK,8285,Add,DEF,1975,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,171,,ATK,8380,Add,DEF,1995,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,172,,ATK,8475,Add,DEF,2015,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,173,,ATK,8570,Add,DEF,2035,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,174,,ATK,8665,Add,DEF,2055,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,175,,ATK,8760,Add,DEF,2075,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,176,,ATK,8855,Add,DEF,2095,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,177,,ATK,8950,Add,DEF,2115,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,178,,ATK,9045,Add,DEF,2135,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,179,,ATK,9140,Add,DEF,2155,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,180,,ATK,9235,Add,DEF,2175,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,181,,ATK,9330,Add,DEF,2195,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,182,,ATK,9425,Add,DEF,2215,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,183,,ATK,9520,Add,DEF,2235,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,184,,ATK,9615,Add,DEF,2255,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,185,,ATK,9710,Add,DEF,2275,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,186,,ATK,9805,Add,DEF,2295,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,187,,ATK,9900,Add,DEF,2315,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,188,,ATK,9995,Add,DEF,2335,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,189,,ATK,10090,Add,DEF,2355,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,190,,ATK,10185,Add,DEF,2375,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,191,,ATK,10280,Add,DEF,2395,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,192,,ATK,10375,Add,DEF,2415,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,193,,ATK,10470,Add,DEF,2435,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,194,,ATK,10565,Add,DEF,2455,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,195,,ATK,10660,Add,DEF,2475,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,196,,ATK,10755,Add,DEF,2495,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,197,,ATK,10850,Add,DEF,2515,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,198,,ATK,10945,Add,DEF,2535,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,199,,ATK,11040,Add,DEF,2555,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,200,,ATK,11135,Add,DEF,2575,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,201,,ATK,11250,Add,DEF,2596,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,202,,ATK,11365,Add,DEF,2617,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,203,,ATK,11480,Add,DEF,2638,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,204,,ATK,11595,Add,DEF,2659,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,205,,ATK,11710,Add,DEF,2680,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,206,,ATK,11825,Add,DEF,2701,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,207,,ATK,11940,Add,DEF,2722,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,208,,ATK,12055,Add,DEF,2743,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,209,,ATK,12170,Add,DEF,2764,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,210,,ATK,12285,Add,DEF,2785,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,211,,ATK,12400,Add,DEF,2806,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,212,,ATK,12515,Add,DEF,2827,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,213,,ATK,12630,Add,DEF,2848,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,214,,ATK,12745,Add,DEF,2869,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,215,,ATK,12860,Add,DEF,2890,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,216,,ATK,12975,Add,DEF,2911,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,217,,ATK,13090,Add,DEF,2932,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,218,,ATK,13205,Add,DEF,2953,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,219,,ATK,13320,Add,DEF,2974,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,220,,ATK,13435,Add,DEF,2995,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,221,,ATK,13550,Add,DEF,3016,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,222,,ATK,13665,Add,DEF,3037,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,223,,ATK,13780,Add,DEF,3058,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,224,,ATK,13895,Add,DEF,3079,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,225,,ATK,14010,Add,DEF,3100,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,226,,ATK,14125,Add,DEF,3121,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,227,,ATK,14240,Add,DEF,3142,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,228,,ATK,14355,Add,DEF,3163,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,229,,ATK,14470,Add,DEF,3184,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,230,,ATK,14585,Add,DEF,3205,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,231,,ATK,14700,Add,DEF,3226,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,232,,ATK,14815,Add,DEF,3247,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,233,,ATK,14930,Add,DEF,3268,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,234,,ATK,15045,Add,DEF,3289,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,235,,ATK,15160,Add,DEF,3310,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,236,,ATK,15275,Add,DEF,3331,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,237,,ATK,15390,Add,DEF,3352,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,238,,ATK,15505,Add,DEF,3373,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,239,,ATK,15620,Add,DEF,3394,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,240,,ATK,15735,Add,DEF,3415,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,241,,ATK,15850,Add,DEF,3436,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,242,,ATK,15965,Add,DEF,3457,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,243,,ATK,16080,Add,DEF,3478,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,244,,ATK,16195,Add,DEF,3499,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,245,,ATK,16310,Add,DEF,3520,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,246,,ATK,16425,Add,DEF,3541,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,247,,ATK,16540,Add,DEF,3562,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,248,,ATK,16655,Add,DEF,3583,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,249,,ATK,16770,Add,DEF,3604,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,250,,ATK,16885,Add,DEF,3625,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,251,,ATK,17054,Add,DEF,3651,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,252,,ATK,17223,Add,DEF,3677,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,253,,ATK,17392,Add,DEF,3703,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,254,,ATK,17561,Add,DEF,3729,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,255,,ATK,17730,Add,DEF,3755,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,256,,ATK,17899,Add,DEF,3781,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,257,,ATK,18068,Add,DEF,3807,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,258,,ATK,18237,Add,DEF,3833,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,259,,ATK,18406,Add,DEF,3859,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,260,,ATK,18575,Add,DEF,3885,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,261,,ATK,18744,Add,DEF,3911,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,262,,ATK,18913,Add,DEF,3937,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,263,,ATK,19082,Add,DEF,3963,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,264,,ATK,19251,Add,DEF,3989,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,265,,ATK,19420,Add,DEF,4015,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,266,,ATK,19589,Add,DEF,4041,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,267,,ATK,19758,Add,DEF,4067,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,268,,ATK,19927,Add,DEF,4093,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,269,,ATK,20096,Add,DEF,4119,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,270,,ATK,20265,Add,DEF,4145,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,271,,ATK,20434,Add,DEF,4171,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,272,,ATK,20603,Add,DEF,4197,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,273,,ATK,20772,Add,DEF,4223,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,274,,ATK,20941,Add,DEF,4249,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,275,,ATK,21110,Add,DEF,4275,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,276,,ATK,21279,Add,DEF,4301,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,277,,ATK,21448,Add,DEF,4327,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,278,,ATK,21617,Add,DEF,4353,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,279,,ATK,21786,Add,DEF,4379,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,280,,ATK,21955,Add,DEF,4405,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,281,,ATK,22124,Add,DEF,4431,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,282,,ATK,22293,Add,DEF,4457,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,283,,ATK,22462,Add,DEF,4483,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,284,,ATK,22631,Add,DEF,4509,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,285,,ATK,22800,Add,DEF,4535,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,286,,ATK,22969,Add,DEF,4561,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,287,,ATK,23138,Add,DEF,4587,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,288,,ATK,23307,Add,DEF,4613,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,289,,ATK,23476,Add,DEF,4639,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,290,,ATK,23645,Add,DEF,4665,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,291,,ATK,23814,Add,DEF,4691,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,292,,ATK,23983,Add,DEF,4717,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,293,,ATK,24152,Add,DEF,4743,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,294,,ATK,24321,Add,DEF,4769,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,295,,ATK,24490,Add,DEF,4795,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,296,,ATK,24659,Add,DEF,4821,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,297,,ATK,24828,Add,DEF,4847,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,298,,ATK,24997,Add,DEF,4873,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,299,,ATK,25166,Add,DEF,4899,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,300,,ATK,25335,Add,DEF,4925,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,2,1,ATK,335,Add,DEF,41,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,3,1,ATK,360,Add,DEF,49,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,4,1,ATK,385,Add,DEF,57,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,5,1,ATK,410,Add,DEF,65,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,6,1,ATK,435,Add,DEF,73,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,7,1,ATK,460,Add,DEF,81,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,8,1,ATK,485,Add,DEF,89,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,9,1,ATK,510,Add,DEF,97,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,10,1,ATK,535,Add,DEF,105,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,11,1,ATK,560,Add,DEF,113,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,12,1,ATK,585,Add,DEF,121,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,13,1,ATK,610,Add,DEF,129,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,14,1,ATK,635,Add,DEF,137,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,15,1,ATK,660,Add,DEF,145,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,16,1,ATK,685,Add,DEF,153,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,17,1,ATK,710,Add,DEF,161,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,18,1,ATK,735,Add,DEF,169,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,19,1,ATK,760,Add,DEF,177,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,20,1,ATK,785,Add,DEF,185,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,21,1,ATK,810,Add,DEF,193,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,22,1,ATK,835,Add,DEF,201,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,23,1,ATK,860,Add,DEF,209,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,24,1,ATK,885,Add,DEF,217,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,25,1,ATK,910,Add,DEF,225,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,26,1,ATK,935,Add,DEF,233,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,27,1,ATK,960,Add,DEF,241,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,28,1,ATK,985,Add,DEF,249,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,29,1,ATK,1010,Add,DEF,257,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,30,1,ATK,1035,Add,DEF,265,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,31,1,ATK,1060,Add,DEF,273,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,32,1,ATK,1085,Add,DEF,281,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,33,1,ATK,1110,Add,DEF,289,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,34,1,ATK,1135,Add,DEF,297,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,35,1,ATK,1160,Add,DEF,305,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,36,1,ATK,1185,Add,DEF,313,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,37,1,ATK,1210,Add,DEF,321,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,38,1,ATK,1235,Add,DEF,329,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,39,1,ATK,1260,Add,DEF,337,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,40,1,ATK,1285,Add,DEF,345,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,41,1,ATK,1310,Add,DEF,353,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,42,1,ATK,1335,Add,DEF,361,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,43,1,ATK,1360,Add,DEF,369,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,44,1,ATK,1385,Add,DEF,377,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,45,1,ATK,1410,Add,DEF,385,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,46,1,ATK,1435,Add,DEF,393,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,47,1,ATK,1460,Add,DEF,401,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,48,1,ATK,1485,Add,DEF,409,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,49,1,ATK,1510,Add,DEF,417,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,50,1,ATK,1535,Add,DEF,425,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,51,1,ATK,1572,Add,DEF,435,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,52,1,ATK,1609,Add,DEF,445,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,53,1,ATK,1646,Add,DEF,455,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,54,1,ATK,1683,Add,DEF,465,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,55,1,ATK,1720,Add,DEF,475,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,56,1,ATK,1757,Add,DEF,485,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,57,1,ATK,1794,Add,DEF,495,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,58,1,ATK,1831,Add,DEF,505,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,59,1,ATK,1868,Add,DEF,515,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,60,1,ATK,1905,Add,DEF,525,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,61,1,ATK,1942,Add,DEF,535,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,62,1,ATK,1979,Add,DEF,545,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,63,1,ATK,2016,Add,DEF,555,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,64,1,ATK,2053,Add,DEF,565,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,65,1,ATK,2090,Add,DEF,575,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,66,1,ATK,2127,Add,DEF,585,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,67,1,ATK,2164,Add,DEF,595,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,68,1,ATK,2201,Add,DEF,605,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,69,1,ATK,2238,Add,DEF,615,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,70,1,ATK,2275,Add,DEF,625,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,71,1,ATK,2312,Add,DEF,635,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,72,1,ATK,2349,Add,DEF,645,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,73,1,ATK,2386,Add,DEF,655,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,74,1,ATK,2423,Add,DEF,665,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,75,1,ATK,2460,Add,DEF,675,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,76,1,ATK,2497,Add,DEF,685,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,77,1,ATK,2534,Add,DEF,695,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,78,1,ATK,2571,Add,DEF,705,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,79,1,ATK,2608,Add,DEF,715,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,80,1,ATK,2645,Add,DEF,725,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,81,1,ATK,2682,Add,DEF,735,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,82,1,ATK,2719,Add,DEF,745,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,83,1,ATK,2756,Add,DEF,755,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,84,1,ATK,2793,Add,DEF,765,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,85,1,ATK,2830,Add,DEF,775,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,86,1,ATK,2867,Add,DEF,785,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,87,1,ATK,2904,Add,DEF,795,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,88,1,ATK,2941,Add,DEF,805,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,89,1,ATK,2978,Add,DEF,815,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,90,1,ATK,3015,Add,DEF,825,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,91,1,ATK,3052,Add,DEF,835,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,92,1,ATK,3089,Add,DEF,845,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,93,1,ATK,3126,Add,DEF,855,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,94,1,ATK,3163,Add,DEF,865,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,95,1,ATK,3200,Add,DEF,875,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,96,1,ATK,3237,Add,DEF,885,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,97,1,ATK,3274,Add,DEF,895,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,98,1,ATK,3311,Add,DEF,905,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,99,1,ATK,3348,Add,DEF,915,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,100,1,ATK,3385,Add,DEF,925,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,101,1,ATK,3445,Add,DEF,938,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,102,1,ATK,3505,Add,DEF,951,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,103,1,ATK,3565,Add,DEF,964,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,104,1,ATK,3625,Add,DEF,977,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,105,1,ATK,3685,Add,DEF,990,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,106,1,ATK,3745,Add,DEF,1003,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,107,1,ATK,3805,Add,DEF,1016,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,108,1,ATK,3865,Add,DEF,1029,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,109,1,ATK,3925,Add,DEF,1042,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,110,1,ATK,3985,Add,DEF,1055,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,111,1,ATK,4045,Add,DEF,1068,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,112,1,ATK,4105,Add,DEF,1081,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,113,1,ATK,4165,Add,DEF,1094,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,114,1,ATK,4225,Add,DEF,1107,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,115,1,ATK,4285,Add,DEF,1120,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,116,1,ATK,4345,Add,DEF,1133,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,117,1,ATK,4405,Add,DEF,1146,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,118,1,ATK,4465,Add,DEF,1159,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,119,1,ATK,4525,Add,DEF,1172,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,120,1,ATK,4585,Add,DEF,1185,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,121,1,ATK,4645,Add,DEF,1198,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,122,1,ATK,4705,Add,DEF,1211,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,123,1,ATK,4765,Add,DEF,1224,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,124,1,ATK,4825,Add,DEF,1237,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,125,1,ATK,4885,Add,DEF,1250,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,126,1,ATK,4945,Add,DEF,1263,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,127,1,ATK,5005,Add,DEF,1276,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,128,1,ATK,5065,Add,DEF,1289,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,129,1,ATK,5125,Add,DEF,1302,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,130,1,ATK,5185,Add,DEF,1315,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,131,1,ATK,5245,Add,DEF,1328,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,132,1,ATK,5305,Add,DEF,1341,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,133,1,ATK,5365,Add,DEF,1354,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,134,1,ATK,5425,Add,DEF,1367,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,135,1,ATK,5485,Add,DEF,1380,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,136,1,ATK,5545,Add,DEF,1393,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,137,1,ATK,5605,Add,DEF,1406,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,138,1,ATK,5665,Add,DEF,1419,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,139,1,ATK,5725,Add,DEF,1432,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,140,1,ATK,5785,Add,DEF,1445,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,141,1,ATK,5845,Add,DEF,1458,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,142,1,ATK,5905,Add,DEF,1471,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,143,1,ATK,5965,Add,DEF,1484,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,144,1,ATK,6025,Add,DEF,1497,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,145,1,ATK,6085,Add,DEF,1510,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,146,1,ATK,6145,Add,DEF,1523,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,147,1,ATK,6205,Add,DEF,1536,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,148,1,ATK,6265,Add,DEF,1549,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,149,1,ATK,6325,Add,DEF,1562,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,150,1,ATK,6385,Add,DEF,1575,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,151,1,ATK,6480,Add,DEF,1595,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,152,1,ATK,6575,Add,DEF,1615,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,153,1,ATK,6670,Add,DEF,1635,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,154,1,ATK,6765,Add,DEF,1655,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,155,1,ATK,6860,Add,DEF,1675,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,156,1,ATK,6955,Add,DEF,1695,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,157,1,ATK,7050,Add,DEF,1715,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,158,1,ATK,7145,Add,DEF,1735,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,159,1,ATK,7240,Add,DEF,1755,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,160,1,ATK,7335,Add,DEF,1775,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,161,1,ATK,7430,Add,DEF,1795,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,162,1,ATK,7525,Add,DEF,1815,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,163,1,ATK,7620,Add,DEF,1835,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,164,1,ATK,7715,Add,DEF,1855,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,165,1,ATK,7810,Add,DEF,1875,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,166,1,ATK,7905,Add,DEF,1895,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,167,1,ATK,8000,Add,DEF,1915,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,168,1,ATK,8095,Add,DEF,1935,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,169,1,ATK,8190,Add,DEF,1955,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,170,1,ATK,8285,Add,DEF,1975,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,171,1,ATK,8380,Add,DEF,1995,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,172,1,ATK,8475,Add,DEF,2015,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,173,1,ATK,8570,Add,DEF,2035,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,174,1,ATK,8665,Add,DEF,2055,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,175,1,ATK,8760,Add,DEF,2075,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,176,1,ATK,8855,Add,DEF,2095,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,177,1,ATK,8950,Add,DEF,2115,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,178,1,ATK,9045,Add,DEF,2135,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,179,1,ATK,9140,Add,DEF,2155,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,180,1,ATK,9235,Add,DEF,2175,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,181,1,ATK,9330,Add,DEF,2195,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,182,1,ATK,9425,Add,DEF,2215,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,183,1,ATK,9520,Add,DEF,2235,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,184,1,ATK,9615,Add,DEF,2255,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,185,1,ATK,9710,Add,DEF,2275,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,186,1,ATK,9805,Add,DEF,2295,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,187,1,ATK,9900,Add,DEF,2315,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,188,1,ATK,9995,Add,DEF,2335,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,189,1,ATK,10090,Add,DEF,2355,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,190,1,ATK,10185,Add,DEF,2375,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,191,1,ATK,10280,Add,DEF,2395,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,192,1,ATK,10375,Add,DEF,2415,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,193,1,ATK,10470,Add,DEF,2435,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,194,1,ATK,10565,Add,DEF,2455,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,195,1,ATK,10660,Add,DEF,2475,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,196,1,ATK,10755,Add,DEF,2495,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,197,1,ATK,10850,Add,DEF,2515,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,198,1,ATK,10945,Add,DEF,2535,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,199,1,ATK,11040,Add,DEF,2555,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,200,1,ATK,11135,Add,DEF,2575,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,201,1,ATK,11250,Add,DEF,2596,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,202,1,ATK,11365,Add,DEF,2617,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,203,1,ATK,11480,Add,DEF,2638,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,204,1,ATK,11595,Add,DEF,2659,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,205,1,ATK,11710,Add,DEF,2680,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,206,1,ATK,11825,Add,DEF,2701,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,207,1,ATK,11940,Add,DEF,2722,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,208,1,ATK,12055,Add,DEF,2743,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,209,1,ATK,12170,Add,DEF,2764,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,210,1,ATK,12285,Add,DEF,2785,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,211,1,ATK,12400,Add,DEF,2806,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,212,1,ATK,12515,Add,DEF,2827,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,213,1,ATK,12630,Add,DEF,2848,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,214,1,ATK,12745,Add,DEF,2869,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,215,1,ATK,12860,Add,DEF,2890,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,216,1,ATK,12975,Add,DEF,2911,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,217,1,ATK,13090,Add,DEF,2932,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,218,1,ATK,13205,Add,DEF,2953,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,219,1,ATK,13320,Add,DEF,2974,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,220,1,ATK,13435,Add,DEF,2995,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,221,1,ATK,13550,Add,DEF,3016,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,222,1,ATK,13665,Add,DEF,3037,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,223,1,ATK,13780,Add,DEF,3058,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,224,1,ATK,13895,Add,DEF,3079,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,225,1,ATK,14010,Add,DEF,3100,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,226,1,ATK,14125,Add,DEF,3121,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,227,1,ATK,14240,Add,DEF,3142,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,228,1,ATK,14355,Add,DEF,3163,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,229,1,ATK,14470,Add,DEF,3184,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,230,1,ATK,14585,Add,DEF,3205,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,231,1,ATK,14700,Add,DEF,3226,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,232,1,ATK,14815,Add,DEF,3247,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,233,1,ATK,14930,Add,DEF,3268,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,234,1,ATK,15045,Add,DEF,3289,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,235,1,ATK,15160,Add,DEF,3310,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,236,1,ATK,15275,Add,DEF,3331,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,237,1,ATK,15390,Add,DEF,3352,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,238,1,ATK,15505,Add,DEF,3373,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,239,1,ATK,15620,Add,DEF,3394,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,240,1,ATK,15735,Add,DEF,3415,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,241,1,ATK,15850,Add,DEF,3436,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,242,1,ATK,15965,Add,DEF,3457,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,243,1,ATK,16080,Add,DEF,3478,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,244,1,ATK,16195,Add,DEF,3499,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,245,1,ATK,16310,Add,DEF,3520,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,246,1,ATK,16425,Add,DEF,3541,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,247,1,ATK,16540,Add,DEF,3562,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,248,1,ATK,16655,Add,DEF,3583,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,249,1,ATK,16770,Add,DEF,3604,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,250,1,ATK,16885,Add,DEF,3625,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,251,1,ATK,17054,Add,DEF,3651,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,252,1,ATK,17223,Add,DEF,3677,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,253,1,ATK,17392,Add,DEF,3703,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,254,1,ATK,17561,Add,DEF,3729,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,255,1,ATK,17730,Add,DEF,3755,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,256,1,ATK,17899,Add,DEF,3781,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,257,1,ATK,18068,Add,DEF,3807,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,258,1,ATK,18237,Add,DEF,3833,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,259,1,ATK,18406,Add,DEF,3859,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,260,1,ATK,18575,Add,DEF,3885,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,261,1,ATK,18744,Add,DEF,3911,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,262,1,ATK,18913,Add,DEF,3937,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,263,1,ATK,19082,Add,DEF,3963,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,264,1,ATK,19251,Add,DEF,3989,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,265,1,ATK,19420,Add,DEF,4015,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,266,1,ATK,19589,Add,DEF,4041,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,267,1,ATK,19758,Add,DEF,4067,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,268,1,ATK,19927,Add,DEF,4093,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,269,1,ATK,20096,Add,DEF,4119,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,270,1,ATK,20265,Add,DEF,4145,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,271,1,ATK,20434,Add,DEF,4171,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,272,1,ATK,20603,Add,DEF,4197,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,273,1,ATK,20772,Add,DEF,4223,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,274,1,ATK,20941,Add,DEF,4249,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,275,1,ATK,21110,Add,DEF,4275,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,276,1,ATK,21279,Add,DEF,4301,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,277,1,ATK,21448,Add,DEF,4327,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,278,1,ATK,21617,Add,DEF,4353,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,279,1,ATK,21786,Add,DEF,4379,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,280,1,ATK,21955,Add,DEF,4405,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,281,1,ATK,22124,Add,DEF,4431,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,282,1,ATK,22293,Add,DEF,4457,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,283,1,ATK,22462,Add,DEF,4483,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,284,1,ATK,22631,Add,DEF,4509,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,285,1,ATK,22800,Add,DEF,4535,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,286,1,ATK,22969,Add,DEF,4561,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,287,1,ATK,23138,Add,DEF,4587,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,288,1,ATK,23307,Add,DEF,4613,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,289,1,ATK,23476,Add,DEF,4639,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,290,1,ATK,23645,Add,DEF,4665,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,291,1,ATK,23814,Add,DEF,4691,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,292,1,ATK,23983,Add,DEF,4717,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,293,1,ATK,24152,Add,DEF,4743,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,294,1,ATK,24321,Add,DEF,4769,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,295,1,ATK,24490,Add,DEF,4795,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,296,1,ATK,24659,Add,DEF,4821,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,297,1,ATK,24828,Add,DEF,4847,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,298,1,ATK,24997,Add,DEF,4873,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,299,1,ATK,25166,Add,DEF,4899,Add,NONE,0,Add,,,,,,,, +10021,Adventure Stun Rune,300,1,ATK,25335,Add,DEF,4925,Add,NONE,0,Add,,,,,,,, 10022,Arena Stun Rune,1,1,ATK,310,Add,DEF,33,Add,NONE,0,Add,700004,14,100,1,Add,NONE,Caster,3 -10022,Arena Stun Rune,2,,ATK,335,Add,DEF,41,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,3,,ATK,360,Add,DEF,49,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,4,,ATK,385,Add,DEF,57,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,5,,ATK,410,Add,DEF,65,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,6,,ATK,435,Add,DEF,73,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,7,,ATK,460,Add,DEF,81,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,8,,ATK,485,Add,DEF,89,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,9,,ATK,510,Add,DEF,97,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,10,,ATK,535,Add,DEF,105,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,11,,ATK,560,Add,DEF,113,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,12,,ATK,585,Add,DEF,121,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,13,,ATK,610,Add,DEF,129,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,14,,ATK,635,Add,DEF,137,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,15,,ATK,660,Add,DEF,145,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,16,,ATK,685,Add,DEF,153,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,17,,ATK,710,Add,DEF,161,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,18,,ATK,735,Add,DEF,169,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,19,,ATK,760,Add,DEF,177,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,20,,ATK,785,Add,DEF,185,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,21,,ATK,810,Add,DEF,193,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,22,,ATK,835,Add,DEF,201,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,23,,ATK,860,Add,DEF,209,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,24,,ATK,885,Add,DEF,217,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,25,,ATK,910,Add,DEF,225,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,26,,ATK,935,Add,DEF,233,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,27,,ATK,960,Add,DEF,241,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,28,,ATK,985,Add,DEF,249,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,29,,ATK,1010,Add,DEF,257,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,30,,ATK,1035,Add,DEF,265,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,31,,ATK,1060,Add,DEF,273,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,32,,ATK,1085,Add,DEF,281,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,33,,ATK,1110,Add,DEF,289,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,34,,ATK,1135,Add,DEF,297,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,35,,ATK,1160,Add,DEF,305,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,36,,ATK,1185,Add,DEF,313,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,37,,ATK,1210,Add,DEF,321,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,38,,ATK,1235,Add,DEF,329,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,39,,ATK,1260,Add,DEF,337,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,40,,ATK,1285,Add,DEF,345,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,41,,ATK,1310,Add,DEF,353,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,42,,ATK,1335,Add,DEF,361,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,43,,ATK,1360,Add,DEF,369,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,44,,ATK,1385,Add,DEF,377,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,45,,ATK,1410,Add,DEF,385,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,46,,ATK,1435,Add,DEF,393,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,47,,ATK,1460,Add,DEF,401,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,48,,ATK,1485,Add,DEF,409,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,49,,ATK,1510,Add,DEF,417,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,50,,ATK,1535,Add,DEF,425,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,51,,ATK,1572,Add,DEF,435,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,52,,ATK,1609,Add,DEF,445,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,53,,ATK,1646,Add,DEF,455,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,54,,ATK,1683,Add,DEF,465,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,55,,ATK,1720,Add,DEF,475,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,56,,ATK,1757,Add,DEF,485,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,57,,ATK,1794,Add,DEF,495,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,58,,ATK,1831,Add,DEF,505,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,59,,ATK,1868,Add,DEF,515,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,60,,ATK,1905,Add,DEF,525,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,61,,ATK,1942,Add,DEF,535,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,62,,ATK,1979,Add,DEF,545,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,63,,ATK,2016,Add,DEF,555,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,64,,ATK,2053,Add,DEF,565,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,65,,ATK,2090,Add,DEF,575,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,66,,ATK,2127,Add,DEF,585,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,67,,ATK,2164,Add,DEF,595,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,68,,ATK,2201,Add,DEF,605,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,69,,ATK,2238,Add,DEF,615,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,70,,ATK,2275,Add,DEF,625,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,71,,ATK,2312,Add,DEF,635,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,72,,ATK,2349,Add,DEF,645,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,73,,ATK,2386,Add,DEF,655,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,74,,ATK,2423,Add,DEF,665,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,75,,ATK,2460,Add,DEF,675,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,76,,ATK,2497,Add,DEF,685,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,77,,ATK,2534,Add,DEF,695,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,78,,ATK,2571,Add,DEF,705,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,79,,ATK,2608,Add,DEF,715,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,80,,ATK,2645,Add,DEF,725,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,81,,ATK,2682,Add,DEF,735,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,82,,ATK,2719,Add,DEF,745,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,83,,ATK,2756,Add,DEF,755,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,84,,ATK,2793,Add,DEF,765,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,85,,ATK,2830,Add,DEF,775,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,86,,ATK,2867,Add,DEF,785,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,87,,ATK,2904,Add,DEF,795,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,88,,ATK,2941,Add,DEF,805,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,89,,ATK,2978,Add,DEF,815,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,90,,ATK,3015,Add,DEF,825,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,91,,ATK,3052,Add,DEF,835,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,92,,ATK,3089,Add,DEF,845,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,93,,ATK,3126,Add,DEF,855,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,94,,ATK,3163,Add,DEF,865,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,95,,ATK,3200,Add,DEF,875,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,96,,ATK,3237,Add,DEF,885,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,97,,ATK,3274,Add,DEF,895,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,98,,ATK,3311,Add,DEF,905,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,99,,ATK,3348,Add,DEF,915,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,100,,ATK,3385,Add,DEF,925,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,101,,ATK,3445,Add,DEF,938,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,102,,ATK,3505,Add,DEF,951,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,103,,ATK,3565,Add,DEF,964,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,104,,ATK,3625,Add,DEF,977,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,105,,ATK,3685,Add,DEF,990,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,106,,ATK,3745,Add,DEF,1003,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,107,,ATK,3805,Add,DEF,1016,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,108,,ATK,3865,Add,DEF,1029,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,109,,ATK,3925,Add,DEF,1042,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,110,,ATK,3985,Add,DEF,1055,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,111,,ATK,4045,Add,DEF,1068,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,112,,ATK,4105,Add,DEF,1081,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,113,,ATK,4165,Add,DEF,1094,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,114,,ATK,4225,Add,DEF,1107,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,115,,ATK,4285,Add,DEF,1120,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,116,,ATK,4345,Add,DEF,1133,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,117,,ATK,4405,Add,DEF,1146,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,118,,ATK,4465,Add,DEF,1159,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,119,,ATK,4525,Add,DEF,1172,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,120,,ATK,4585,Add,DEF,1185,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,121,,ATK,4645,Add,DEF,1198,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,122,,ATK,4705,Add,DEF,1211,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,123,,ATK,4765,Add,DEF,1224,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,124,,ATK,4825,Add,DEF,1237,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,125,,ATK,4885,Add,DEF,1250,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,126,,ATK,4945,Add,DEF,1263,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,127,,ATK,5005,Add,DEF,1276,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,128,,ATK,5065,Add,DEF,1289,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,129,,ATK,5125,Add,DEF,1302,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,130,,ATK,5185,Add,DEF,1315,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,131,,ATK,5245,Add,DEF,1328,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,132,,ATK,5305,Add,DEF,1341,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,133,,ATK,5365,Add,DEF,1354,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,134,,ATK,5425,Add,DEF,1367,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,135,,ATK,5485,Add,DEF,1380,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,136,,ATK,5545,Add,DEF,1393,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,137,,ATK,5605,Add,DEF,1406,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,138,,ATK,5665,Add,DEF,1419,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,139,,ATK,5725,Add,DEF,1432,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,140,,ATK,5785,Add,DEF,1445,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,141,,ATK,5845,Add,DEF,1458,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,142,,ATK,5905,Add,DEF,1471,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,143,,ATK,5965,Add,DEF,1484,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,144,,ATK,6025,Add,DEF,1497,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,145,,ATK,6085,Add,DEF,1510,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,146,,ATK,6145,Add,DEF,1523,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,147,,ATK,6205,Add,DEF,1536,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,148,,ATK,6265,Add,DEF,1549,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,149,,ATK,6325,Add,DEF,1562,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,150,,ATK,6385,Add,DEF,1575,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,151,,ATK,6480,Add,DEF,1595,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,152,,ATK,6575,Add,DEF,1615,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,153,,ATK,6670,Add,DEF,1635,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,154,,ATK,6765,Add,DEF,1655,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,155,,ATK,6860,Add,DEF,1675,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,156,,ATK,6955,Add,DEF,1695,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,157,,ATK,7050,Add,DEF,1715,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,158,,ATK,7145,Add,DEF,1735,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,159,,ATK,7240,Add,DEF,1755,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,160,,ATK,7335,Add,DEF,1775,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,161,,ATK,7430,Add,DEF,1795,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,162,,ATK,7525,Add,DEF,1815,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,163,,ATK,7620,Add,DEF,1835,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,164,,ATK,7715,Add,DEF,1855,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,165,,ATK,7810,Add,DEF,1875,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,166,,ATK,7905,Add,DEF,1895,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,167,,ATK,8000,Add,DEF,1915,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,168,,ATK,8095,Add,DEF,1935,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,169,,ATK,8190,Add,DEF,1955,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,170,,ATK,8285,Add,DEF,1975,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,171,,ATK,8380,Add,DEF,1995,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,172,,ATK,8475,Add,DEF,2015,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,173,,ATK,8570,Add,DEF,2035,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,174,,ATK,8665,Add,DEF,2055,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,175,,ATK,8760,Add,DEF,2075,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,176,,ATK,8855,Add,DEF,2095,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,177,,ATK,8950,Add,DEF,2115,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,178,,ATK,9045,Add,DEF,2135,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,179,,ATK,9140,Add,DEF,2155,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,180,,ATK,9235,Add,DEF,2175,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,181,,ATK,9330,Add,DEF,2195,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,182,,ATK,9425,Add,DEF,2215,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,183,,ATK,9520,Add,DEF,2235,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,184,,ATK,9615,Add,DEF,2255,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,185,,ATK,9710,Add,DEF,2275,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,186,,ATK,9805,Add,DEF,2295,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,187,,ATK,9900,Add,DEF,2315,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,188,,ATK,9995,Add,DEF,2335,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,189,,ATK,10090,Add,DEF,2355,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,190,,ATK,10185,Add,DEF,2375,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,191,,ATK,10280,Add,DEF,2395,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,192,,ATK,10375,Add,DEF,2415,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,193,,ATK,10470,Add,DEF,2435,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,194,,ATK,10565,Add,DEF,2455,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,195,,ATK,10660,Add,DEF,2475,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,196,,ATK,10755,Add,DEF,2495,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,197,,ATK,10850,Add,DEF,2515,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,198,,ATK,10945,Add,DEF,2535,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,199,,ATK,11040,Add,DEF,2555,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,200,,ATK,11135,Add,DEF,2575,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,201,,ATK,11250,Add,DEF,2596,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,202,,ATK,11365,Add,DEF,2617,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,203,,ATK,11480,Add,DEF,2638,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,204,,ATK,11595,Add,DEF,2659,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,205,,ATK,11710,Add,DEF,2680,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,206,,ATK,11825,Add,DEF,2701,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,207,,ATK,11940,Add,DEF,2722,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,208,,ATK,12055,Add,DEF,2743,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,209,,ATK,12170,Add,DEF,2764,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,210,,ATK,12285,Add,DEF,2785,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,211,,ATK,12400,Add,DEF,2806,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,212,,ATK,12515,Add,DEF,2827,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,213,,ATK,12630,Add,DEF,2848,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,214,,ATK,12745,Add,DEF,2869,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,215,,ATK,12860,Add,DEF,2890,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,216,,ATK,12975,Add,DEF,2911,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,217,,ATK,13090,Add,DEF,2932,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,218,,ATK,13205,Add,DEF,2953,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,219,,ATK,13320,Add,DEF,2974,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,220,,ATK,13435,Add,DEF,2995,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,221,,ATK,13550,Add,DEF,3016,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,222,,ATK,13665,Add,DEF,3037,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,223,,ATK,13780,Add,DEF,3058,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,224,,ATK,13895,Add,DEF,3079,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,225,,ATK,14010,Add,DEF,3100,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,226,,ATK,14125,Add,DEF,3121,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,227,,ATK,14240,Add,DEF,3142,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,228,,ATK,14355,Add,DEF,3163,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,229,,ATK,14470,Add,DEF,3184,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,230,,ATK,14585,Add,DEF,3205,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,231,,ATK,14700,Add,DEF,3226,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,232,,ATK,14815,Add,DEF,3247,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,233,,ATK,14930,Add,DEF,3268,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,234,,ATK,15045,Add,DEF,3289,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,235,,ATK,15160,Add,DEF,3310,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,236,,ATK,15275,Add,DEF,3331,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,237,,ATK,15390,Add,DEF,3352,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,238,,ATK,15505,Add,DEF,3373,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,239,,ATK,15620,Add,DEF,3394,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,240,,ATK,15735,Add,DEF,3415,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,241,,ATK,15850,Add,DEF,3436,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,242,,ATK,15965,Add,DEF,3457,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,243,,ATK,16080,Add,DEF,3478,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,244,,ATK,16195,Add,DEF,3499,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,245,,ATK,16310,Add,DEF,3520,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,246,,ATK,16425,Add,DEF,3541,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,247,,ATK,16540,Add,DEF,3562,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,248,,ATK,16655,Add,DEF,3583,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,249,,ATK,16770,Add,DEF,3604,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,250,,ATK,16885,Add,DEF,3625,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,251,,ATK,17054,Add,DEF,3651,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,252,,ATK,17223,Add,DEF,3677,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,253,,ATK,17392,Add,DEF,3703,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,254,,ATK,17561,Add,DEF,3729,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,255,,ATK,17730,Add,DEF,3755,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,256,,ATK,17899,Add,DEF,3781,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,257,,ATK,18068,Add,DEF,3807,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,258,,ATK,18237,Add,DEF,3833,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,259,,ATK,18406,Add,DEF,3859,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,260,,ATK,18575,Add,DEF,3885,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,261,,ATK,18744,Add,DEF,3911,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,262,,ATK,18913,Add,DEF,3937,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,263,,ATK,19082,Add,DEF,3963,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,264,,ATK,19251,Add,DEF,3989,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,265,,ATK,19420,Add,DEF,4015,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,266,,ATK,19589,Add,DEF,4041,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,267,,ATK,19758,Add,DEF,4067,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,268,,ATK,19927,Add,DEF,4093,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,269,,ATK,20096,Add,DEF,4119,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,270,,ATK,20265,Add,DEF,4145,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,271,,ATK,20434,Add,DEF,4171,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,272,,ATK,20603,Add,DEF,4197,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,273,,ATK,20772,Add,DEF,4223,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,274,,ATK,20941,Add,DEF,4249,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,275,,ATK,21110,Add,DEF,4275,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,276,,ATK,21279,Add,DEF,4301,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,277,,ATK,21448,Add,DEF,4327,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,278,,ATK,21617,Add,DEF,4353,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,279,,ATK,21786,Add,DEF,4379,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,280,,ATK,21955,Add,DEF,4405,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,281,,ATK,22124,Add,DEF,4431,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,282,,ATK,22293,Add,DEF,4457,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,283,,ATK,22462,Add,DEF,4483,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,284,,ATK,22631,Add,DEF,4509,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,285,,ATK,22800,Add,DEF,4535,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,286,,ATK,22969,Add,DEF,4561,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,287,,ATK,23138,Add,DEF,4587,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,288,,ATK,23307,Add,DEF,4613,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,289,,ATK,23476,Add,DEF,4639,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,290,,ATK,23645,Add,DEF,4665,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,291,,ATK,23814,Add,DEF,4691,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,292,,ATK,23983,Add,DEF,4717,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,293,,ATK,24152,Add,DEF,4743,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,294,,ATK,24321,Add,DEF,4769,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,295,,ATK,24490,Add,DEF,4795,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,296,,ATK,24659,Add,DEF,4821,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,297,,ATK,24828,Add,DEF,4847,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,298,,ATK,24997,Add,DEF,4873,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,299,,ATK,25166,Add,DEF,4899,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,300,,ATK,25335,Add,DEF,4925,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,2,1,ATK,335,Add,DEF,41,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,3,1,ATK,360,Add,DEF,49,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,4,1,ATK,385,Add,DEF,57,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,5,1,ATK,410,Add,DEF,65,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,6,1,ATK,435,Add,DEF,73,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,7,1,ATK,460,Add,DEF,81,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,8,1,ATK,485,Add,DEF,89,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,9,1,ATK,510,Add,DEF,97,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,10,1,ATK,535,Add,DEF,105,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,11,1,ATK,560,Add,DEF,113,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,12,1,ATK,585,Add,DEF,121,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,13,1,ATK,610,Add,DEF,129,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,14,1,ATK,635,Add,DEF,137,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,15,1,ATK,660,Add,DEF,145,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,16,1,ATK,685,Add,DEF,153,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,17,1,ATK,710,Add,DEF,161,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,18,1,ATK,735,Add,DEF,169,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,19,1,ATK,760,Add,DEF,177,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,20,1,ATK,785,Add,DEF,185,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,21,1,ATK,810,Add,DEF,193,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,22,1,ATK,835,Add,DEF,201,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,23,1,ATK,860,Add,DEF,209,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,24,1,ATK,885,Add,DEF,217,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,25,1,ATK,910,Add,DEF,225,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,26,1,ATK,935,Add,DEF,233,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,27,1,ATK,960,Add,DEF,241,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,28,1,ATK,985,Add,DEF,249,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,29,1,ATK,1010,Add,DEF,257,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,30,1,ATK,1035,Add,DEF,265,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,31,1,ATK,1060,Add,DEF,273,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,32,1,ATK,1085,Add,DEF,281,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,33,1,ATK,1110,Add,DEF,289,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,34,1,ATK,1135,Add,DEF,297,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,35,1,ATK,1160,Add,DEF,305,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,36,1,ATK,1185,Add,DEF,313,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,37,1,ATK,1210,Add,DEF,321,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,38,1,ATK,1235,Add,DEF,329,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,39,1,ATK,1260,Add,DEF,337,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,40,1,ATK,1285,Add,DEF,345,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,41,1,ATK,1310,Add,DEF,353,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,42,1,ATK,1335,Add,DEF,361,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,43,1,ATK,1360,Add,DEF,369,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,44,1,ATK,1385,Add,DEF,377,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,45,1,ATK,1410,Add,DEF,385,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,46,1,ATK,1435,Add,DEF,393,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,47,1,ATK,1460,Add,DEF,401,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,48,1,ATK,1485,Add,DEF,409,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,49,1,ATK,1510,Add,DEF,417,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,50,1,ATK,1535,Add,DEF,425,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,51,1,ATK,1572,Add,DEF,435,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,52,1,ATK,1609,Add,DEF,445,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,53,1,ATK,1646,Add,DEF,455,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,54,1,ATK,1683,Add,DEF,465,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,55,1,ATK,1720,Add,DEF,475,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,56,1,ATK,1757,Add,DEF,485,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,57,1,ATK,1794,Add,DEF,495,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,58,1,ATK,1831,Add,DEF,505,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,59,1,ATK,1868,Add,DEF,515,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,60,1,ATK,1905,Add,DEF,525,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,61,1,ATK,1942,Add,DEF,535,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,62,1,ATK,1979,Add,DEF,545,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,63,1,ATK,2016,Add,DEF,555,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,64,1,ATK,2053,Add,DEF,565,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,65,1,ATK,2090,Add,DEF,575,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,66,1,ATK,2127,Add,DEF,585,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,67,1,ATK,2164,Add,DEF,595,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,68,1,ATK,2201,Add,DEF,605,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,69,1,ATK,2238,Add,DEF,615,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,70,1,ATK,2275,Add,DEF,625,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,71,1,ATK,2312,Add,DEF,635,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,72,1,ATK,2349,Add,DEF,645,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,73,1,ATK,2386,Add,DEF,655,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,74,1,ATK,2423,Add,DEF,665,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,75,1,ATK,2460,Add,DEF,675,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,76,1,ATK,2497,Add,DEF,685,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,77,1,ATK,2534,Add,DEF,695,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,78,1,ATK,2571,Add,DEF,705,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,79,1,ATK,2608,Add,DEF,715,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,80,1,ATK,2645,Add,DEF,725,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,81,1,ATK,2682,Add,DEF,735,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,82,1,ATK,2719,Add,DEF,745,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,83,1,ATK,2756,Add,DEF,755,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,84,1,ATK,2793,Add,DEF,765,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,85,1,ATK,2830,Add,DEF,775,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,86,1,ATK,2867,Add,DEF,785,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,87,1,ATK,2904,Add,DEF,795,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,88,1,ATK,2941,Add,DEF,805,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,89,1,ATK,2978,Add,DEF,815,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,90,1,ATK,3015,Add,DEF,825,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,91,1,ATK,3052,Add,DEF,835,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,92,1,ATK,3089,Add,DEF,845,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,93,1,ATK,3126,Add,DEF,855,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,94,1,ATK,3163,Add,DEF,865,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,95,1,ATK,3200,Add,DEF,875,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,96,1,ATK,3237,Add,DEF,885,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,97,1,ATK,3274,Add,DEF,895,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,98,1,ATK,3311,Add,DEF,905,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,99,1,ATK,3348,Add,DEF,915,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,100,1,ATK,3385,Add,DEF,925,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,101,1,ATK,3445,Add,DEF,938,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,102,1,ATK,3505,Add,DEF,951,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,103,1,ATK,3565,Add,DEF,964,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,104,1,ATK,3625,Add,DEF,977,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,105,1,ATK,3685,Add,DEF,990,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,106,1,ATK,3745,Add,DEF,1003,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,107,1,ATK,3805,Add,DEF,1016,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,108,1,ATK,3865,Add,DEF,1029,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,109,1,ATK,3925,Add,DEF,1042,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,110,1,ATK,3985,Add,DEF,1055,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,111,1,ATK,4045,Add,DEF,1068,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,112,1,ATK,4105,Add,DEF,1081,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,113,1,ATK,4165,Add,DEF,1094,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,114,1,ATK,4225,Add,DEF,1107,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,115,1,ATK,4285,Add,DEF,1120,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,116,1,ATK,4345,Add,DEF,1133,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,117,1,ATK,4405,Add,DEF,1146,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,118,1,ATK,4465,Add,DEF,1159,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,119,1,ATK,4525,Add,DEF,1172,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,120,1,ATK,4585,Add,DEF,1185,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,121,1,ATK,4645,Add,DEF,1198,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,122,1,ATK,4705,Add,DEF,1211,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,123,1,ATK,4765,Add,DEF,1224,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,124,1,ATK,4825,Add,DEF,1237,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,125,1,ATK,4885,Add,DEF,1250,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,126,1,ATK,4945,Add,DEF,1263,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,127,1,ATK,5005,Add,DEF,1276,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,128,1,ATK,5065,Add,DEF,1289,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,129,1,ATK,5125,Add,DEF,1302,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,130,1,ATK,5185,Add,DEF,1315,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,131,1,ATK,5245,Add,DEF,1328,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,132,1,ATK,5305,Add,DEF,1341,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,133,1,ATK,5365,Add,DEF,1354,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,134,1,ATK,5425,Add,DEF,1367,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,135,1,ATK,5485,Add,DEF,1380,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,136,1,ATK,5545,Add,DEF,1393,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,137,1,ATK,5605,Add,DEF,1406,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,138,1,ATK,5665,Add,DEF,1419,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,139,1,ATK,5725,Add,DEF,1432,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,140,1,ATK,5785,Add,DEF,1445,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,141,1,ATK,5845,Add,DEF,1458,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,142,1,ATK,5905,Add,DEF,1471,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,143,1,ATK,5965,Add,DEF,1484,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,144,1,ATK,6025,Add,DEF,1497,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,145,1,ATK,6085,Add,DEF,1510,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,146,1,ATK,6145,Add,DEF,1523,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,147,1,ATK,6205,Add,DEF,1536,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,148,1,ATK,6265,Add,DEF,1549,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,149,1,ATK,6325,Add,DEF,1562,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,150,1,ATK,6385,Add,DEF,1575,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,151,1,ATK,6480,Add,DEF,1595,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,152,1,ATK,6575,Add,DEF,1615,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,153,1,ATK,6670,Add,DEF,1635,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,154,1,ATK,6765,Add,DEF,1655,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,155,1,ATK,6860,Add,DEF,1675,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,156,1,ATK,6955,Add,DEF,1695,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,157,1,ATK,7050,Add,DEF,1715,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,158,1,ATK,7145,Add,DEF,1735,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,159,1,ATK,7240,Add,DEF,1755,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,160,1,ATK,7335,Add,DEF,1775,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,161,1,ATK,7430,Add,DEF,1795,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,162,1,ATK,7525,Add,DEF,1815,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,163,1,ATK,7620,Add,DEF,1835,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,164,1,ATK,7715,Add,DEF,1855,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,165,1,ATK,7810,Add,DEF,1875,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,166,1,ATK,7905,Add,DEF,1895,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,167,1,ATK,8000,Add,DEF,1915,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,168,1,ATK,8095,Add,DEF,1935,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,169,1,ATK,8190,Add,DEF,1955,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,170,1,ATK,8285,Add,DEF,1975,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,171,1,ATK,8380,Add,DEF,1995,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,172,1,ATK,8475,Add,DEF,2015,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,173,1,ATK,8570,Add,DEF,2035,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,174,1,ATK,8665,Add,DEF,2055,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,175,1,ATK,8760,Add,DEF,2075,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,176,1,ATK,8855,Add,DEF,2095,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,177,1,ATK,8950,Add,DEF,2115,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,178,1,ATK,9045,Add,DEF,2135,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,179,1,ATK,9140,Add,DEF,2155,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,180,1,ATK,9235,Add,DEF,2175,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,181,1,ATK,9330,Add,DEF,2195,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,182,1,ATK,9425,Add,DEF,2215,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,183,1,ATK,9520,Add,DEF,2235,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,184,1,ATK,9615,Add,DEF,2255,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,185,1,ATK,9710,Add,DEF,2275,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,186,1,ATK,9805,Add,DEF,2295,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,187,1,ATK,9900,Add,DEF,2315,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,188,1,ATK,9995,Add,DEF,2335,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,189,1,ATK,10090,Add,DEF,2355,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,190,1,ATK,10185,Add,DEF,2375,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,191,1,ATK,10280,Add,DEF,2395,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,192,1,ATK,10375,Add,DEF,2415,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,193,1,ATK,10470,Add,DEF,2435,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,194,1,ATK,10565,Add,DEF,2455,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,195,1,ATK,10660,Add,DEF,2475,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,196,1,ATK,10755,Add,DEF,2495,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,197,1,ATK,10850,Add,DEF,2515,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,198,1,ATK,10945,Add,DEF,2535,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,199,1,ATK,11040,Add,DEF,2555,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,200,1,ATK,11135,Add,DEF,2575,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,201,1,ATK,11250,Add,DEF,2596,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,202,1,ATK,11365,Add,DEF,2617,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,203,1,ATK,11480,Add,DEF,2638,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,204,1,ATK,11595,Add,DEF,2659,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,205,1,ATK,11710,Add,DEF,2680,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,206,1,ATK,11825,Add,DEF,2701,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,207,1,ATK,11940,Add,DEF,2722,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,208,1,ATK,12055,Add,DEF,2743,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,209,1,ATK,12170,Add,DEF,2764,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,210,1,ATK,12285,Add,DEF,2785,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,211,1,ATK,12400,Add,DEF,2806,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,212,1,ATK,12515,Add,DEF,2827,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,213,1,ATK,12630,Add,DEF,2848,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,214,1,ATK,12745,Add,DEF,2869,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,215,1,ATK,12860,Add,DEF,2890,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,216,1,ATK,12975,Add,DEF,2911,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,217,1,ATK,13090,Add,DEF,2932,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,218,1,ATK,13205,Add,DEF,2953,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,219,1,ATK,13320,Add,DEF,2974,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,220,1,ATK,13435,Add,DEF,2995,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,221,1,ATK,13550,Add,DEF,3016,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,222,1,ATK,13665,Add,DEF,3037,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,223,1,ATK,13780,Add,DEF,3058,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,224,1,ATK,13895,Add,DEF,3079,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,225,1,ATK,14010,Add,DEF,3100,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,226,1,ATK,14125,Add,DEF,3121,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,227,1,ATK,14240,Add,DEF,3142,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,228,1,ATK,14355,Add,DEF,3163,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,229,1,ATK,14470,Add,DEF,3184,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,230,1,ATK,14585,Add,DEF,3205,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,231,1,ATK,14700,Add,DEF,3226,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,232,1,ATK,14815,Add,DEF,3247,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,233,1,ATK,14930,Add,DEF,3268,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,234,1,ATK,15045,Add,DEF,3289,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,235,1,ATK,15160,Add,DEF,3310,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,236,1,ATK,15275,Add,DEF,3331,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,237,1,ATK,15390,Add,DEF,3352,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,238,1,ATK,15505,Add,DEF,3373,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,239,1,ATK,15620,Add,DEF,3394,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,240,1,ATK,15735,Add,DEF,3415,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,241,1,ATK,15850,Add,DEF,3436,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,242,1,ATK,15965,Add,DEF,3457,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,243,1,ATK,16080,Add,DEF,3478,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,244,1,ATK,16195,Add,DEF,3499,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,245,1,ATK,16310,Add,DEF,3520,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,246,1,ATK,16425,Add,DEF,3541,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,247,1,ATK,16540,Add,DEF,3562,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,248,1,ATK,16655,Add,DEF,3583,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,249,1,ATK,16770,Add,DEF,3604,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,250,1,ATK,16885,Add,DEF,3625,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,251,1,ATK,17054,Add,DEF,3651,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,252,1,ATK,17223,Add,DEF,3677,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,253,1,ATK,17392,Add,DEF,3703,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,254,1,ATK,17561,Add,DEF,3729,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,255,1,ATK,17730,Add,DEF,3755,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,256,1,ATK,17899,Add,DEF,3781,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,257,1,ATK,18068,Add,DEF,3807,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,258,1,ATK,18237,Add,DEF,3833,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,259,1,ATK,18406,Add,DEF,3859,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,260,1,ATK,18575,Add,DEF,3885,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,261,1,ATK,18744,Add,DEF,3911,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,262,1,ATK,18913,Add,DEF,3937,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,263,1,ATK,19082,Add,DEF,3963,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,264,1,ATK,19251,Add,DEF,3989,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,265,1,ATK,19420,Add,DEF,4015,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,266,1,ATK,19589,Add,DEF,4041,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,267,1,ATK,19758,Add,DEF,4067,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,268,1,ATK,19927,Add,DEF,4093,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,269,1,ATK,20096,Add,DEF,4119,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,270,1,ATK,20265,Add,DEF,4145,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,271,1,ATK,20434,Add,DEF,4171,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,272,1,ATK,20603,Add,DEF,4197,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,273,1,ATK,20772,Add,DEF,4223,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,274,1,ATK,20941,Add,DEF,4249,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,275,1,ATK,21110,Add,DEF,4275,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,276,1,ATK,21279,Add,DEF,4301,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,277,1,ATK,21448,Add,DEF,4327,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,278,1,ATK,21617,Add,DEF,4353,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,279,1,ATK,21786,Add,DEF,4379,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,280,1,ATK,21955,Add,DEF,4405,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,281,1,ATK,22124,Add,DEF,4431,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,282,1,ATK,22293,Add,DEF,4457,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,283,1,ATK,22462,Add,DEF,4483,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,284,1,ATK,22631,Add,DEF,4509,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,285,1,ATK,22800,Add,DEF,4535,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,286,1,ATK,22969,Add,DEF,4561,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,287,1,ATK,23138,Add,DEF,4587,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,288,1,ATK,23307,Add,DEF,4613,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,289,1,ATK,23476,Add,DEF,4639,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,290,1,ATK,23645,Add,DEF,4665,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,291,1,ATK,23814,Add,DEF,4691,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,292,1,ATK,23983,Add,DEF,4717,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,293,1,ATK,24152,Add,DEF,4743,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,294,1,ATK,24321,Add,DEF,4769,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,295,1,ATK,24490,Add,DEF,4795,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,296,1,ATK,24659,Add,DEF,4821,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,297,1,ATK,24828,Add,DEF,4847,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,298,1,ATK,24997,Add,DEF,4873,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,299,1,ATK,25166,Add,DEF,4899,Add,NONE,0,Add,,,,,,,, +10022,Arena Stun Rune,300,1,ATK,25335,Add,DEF,4925,Add,NONE,0,Add,,,,,,,, 10023,Adventure Vampiric Rune,1,1,DEF,101,Add,HP,792,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,2,,DEF,126,Add,HP,944,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,3,,DEF,151,Add,HP,1096,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,4,,DEF,176,Add,HP,1248,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,5,,DEF,201,Add,HP,1400,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,6,,DEF,226,Add,HP,1552,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,7,,DEF,251,Add,HP,1704,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,8,,DEF,276,Add,HP,1856,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,9,,DEF,301,Add,HP,2008,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,10,,DEF,326,Add,HP,2160,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,11,,DEF,351,Add,HP,2312,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,12,,DEF,376,Add,HP,2464,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,13,,DEF,401,Add,HP,2616,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,14,,DEF,426,Add,HP,2768,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,15,,DEF,451,Add,HP,2920,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,16,,DEF,476,Add,HP,3072,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,17,,DEF,501,Add,HP,3224,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,18,,DEF,526,Add,HP,3376,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,19,,DEF,551,Add,HP,3528,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,20,,DEF,576,Add,HP,3680,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,21,,DEF,601,Add,HP,3832,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,22,,DEF,626,Add,HP,3984,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,23,,DEF,651,Add,HP,4136,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,24,,DEF,676,Add,HP,4288,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,25,,DEF,701,Add,HP,4440,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,26,,DEF,726,Add,HP,4592,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,27,,DEF,751,Add,HP,4744,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,28,,DEF,776,Add,HP,4896,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,29,,DEF,801,Add,HP,5048,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,30,,DEF,826,Add,HP,5200,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,31,,DEF,851,Add,HP,5352,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,32,,DEF,876,Add,HP,5504,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,33,,DEF,901,Add,HP,5656,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,34,,DEF,926,Add,HP,5808,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,35,,DEF,951,Add,HP,5960,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,36,,DEF,976,Add,HP,6112,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,37,,DEF,1001,Add,HP,6264,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,38,,DEF,1026,Add,HP,6416,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,39,,DEF,1051,Add,HP,6568,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,40,,DEF,1076,Add,HP,6720,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,41,,DEF,1101,Add,HP,6872,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,42,,DEF,1126,Add,HP,7024,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,43,,DEF,1151,Add,HP,7176,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,44,,DEF,1176,Add,HP,7328,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,45,,DEF,1201,Add,HP,7480,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,46,,DEF,1226,Add,HP,7632,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,47,,DEF,1251,Add,HP,7784,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,48,,DEF,1276,Add,HP,7936,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,49,,DEF,1301,Add,HP,8088,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,50,,DEF,1326,Add,HP,8240,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,51,,DEF,1356,Add,HP,8401,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,52,,DEF,1386,Add,HP,8562,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,53,,DEF,1416,Add,HP,8723,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,54,,DEF,1446,Add,HP,8884,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,55,,DEF,1476,Add,HP,9045,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,56,,DEF,1506,Add,HP,9206,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,57,,DEF,1536,Add,HP,9367,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,58,,DEF,1566,Add,HP,9528,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,59,,DEF,1596,Add,HP,9689,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,60,,DEF,1626,Add,HP,9850,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,61,,DEF,1656,Add,HP,10011,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,62,,DEF,1686,Add,HP,10172,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,63,,DEF,1716,Add,HP,10333,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,64,,DEF,1746,Add,HP,10494,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,65,,DEF,1776,Add,HP,10655,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,66,,DEF,1806,Add,HP,10816,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,67,,DEF,1836,Add,HP,10977,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,68,,DEF,1866,Add,HP,11138,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,69,,DEF,1896,Add,HP,11299,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,70,,DEF,1926,Add,HP,11460,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,71,,DEF,1956,Add,HP,11621,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,72,,DEF,1986,Add,HP,11782,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,73,,DEF,2016,Add,HP,11943,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,74,,DEF,2046,Add,HP,12104,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,75,,DEF,2076,Add,HP,12265,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,76,,DEF,2106,Add,HP,12426,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,77,,DEF,2136,Add,HP,12587,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,78,,DEF,2166,Add,HP,12748,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,79,,DEF,2196,Add,HP,12909,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,80,,DEF,2226,Add,HP,13070,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,81,,DEF,2256,Add,HP,13231,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,82,,DEF,2286,Add,HP,13392,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,83,,DEF,2316,Add,HP,13553,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,84,,DEF,2346,Add,HP,13714,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,85,,DEF,2376,Add,HP,13875,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,86,,DEF,2406,Add,HP,14036,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,87,,DEF,2436,Add,HP,14197,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,88,,DEF,2466,Add,HP,14358,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,89,,DEF,2496,Add,HP,14519,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,90,,DEF,2526,Add,HP,14680,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,91,,DEF,2556,Add,HP,14841,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,92,,DEF,2586,Add,HP,15002,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,93,,DEF,2616,Add,HP,15163,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,94,,DEF,2646,Add,HP,15324,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,95,,DEF,2676,Add,HP,15485,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,96,,DEF,2706,Add,HP,15646,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,97,,DEF,2736,Add,HP,15807,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,98,,DEF,2766,Add,HP,15968,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,99,,DEF,2796,Add,HP,16129,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,100,,DEF,2826,Add,HP,16290,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,101,,DEF,2867,Add,HP,16494,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,102,,DEF,2908,Add,HP,16698,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,103,,DEF,2949,Add,HP,16902,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,104,,DEF,2990,Add,HP,17106,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,105,,DEF,3031,Add,HP,17310,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,106,,DEF,3072,Add,HP,17514,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,107,,DEF,3113,Add,HP,17718,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,108,,DEF,3154,Add,HP,17922,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,109,,DEF,3195,Add,HP,18126,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,110,,DEF,3236,Add,HP,18330,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,111,,DEF,3277,Add,HP,18534,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,112,,DEF,3318,Add,HP,18738,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,113,,DEF,3359,Add,HP,18942,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,114,,DEF,3400,Add,HP,19146,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,115,,DEF,3441,Add,HP,19350,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,116,,DEF,3482,Add,HP,19554,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,117,,DEF,3523,Add,HP,19758,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,118,,DEF,3564,Add,HP,19962,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,119,,DEF,3605,Add,HP,20166,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,120,,DEF,3646,Add,HP,20370,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,121,,DEF,3687,Add,HP,20574,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,122,,DEF,3728,Add,HP,20778,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,123,,DEF,3769,Add,HP,20982,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,124,,DEF,3810,Add,HP,21186,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,125,,DEF,3851,Add,HP,21390,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,126,,DEF,3892,Add,HP,21594,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,127,,DEF,3933,Add,HP,21798,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,128,,DEF,3974,Add,HP,22002,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,129,,DEF,4015,Add,HP,22206,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,130,,DEF,4056,Add,HP,22410,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,131,,DEF,4097,Add,HP,22614,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,132,,DEF,4138,Add,HP,22818,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,133,,DEF,4179,Add,HP,23022,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,134,,DEF,4220,Add,HP,23226,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,135,,DEF,4261,Add,HP,23430,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,136,,DEF,4302,Add,HP,23634,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,137,,DEF,4343,Add,HP,23838,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,138,,DEF,4384,Add,HP,24042,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,139,,DEF,4425,Add,HP,24246,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,140,,DEF,4466,Add,HP,24450,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,141,,DEF,4507,Add,HP,24654,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,142,,DEF,4548,Add,HP,24858,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,143,,DEF,4589,Add,HP,25062,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,144,,DEF,4630,Add,HP,25266,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,145,,DEF,4671,Add,HP,25470,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,146,,DEF,4712,Add,HP,25674,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,147,,DEF,4753,Add,HP,25878,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,148,,DEF,4794,Add,HP,26082,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,149,,DEF,4835,Add,HP,26286,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,150,,DEF,4876,Add,HP,26490,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,151,,DEF,4936,Add,HP,27580,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,152,,DEF,4996,Add,HP,28670,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,153,,DEF,5056,Add,HP,29760,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,154,,DEF,5116,Add,HP,30850,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,155,,DEF,5176,Add,HP,31940,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,156,,DEF,5236,Add,HP,33030,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,157,,DEF,5296,Add,HP,34120,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,158,,DEF,5356,Add,HP,35210,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,159,,DEF,5416,Add,HP,36300,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,160,,DEF,5476,Add,HP,37390,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,161,,DEF,5536,Add,HP,38480,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,162,,DEF,5596,Add,HP,39570,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,163,,DEF,5656,Add,HP,40660,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,164,,DEF,5716,Add,HP,41750,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,165,,DEF,5776,Add,HP,42840,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,166,,DEF,5836,Add,HP,43930,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,167,,DEF,5896,Add,HP,45020,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,168,,DEF,5956,Add,HP,46110,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,169,,DEF,6016,Add,HP,47200,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,170,,DEF,6076,Add,HP,48290,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,171,,DEF,6136,Add,HP,49380,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,172,,DEF,6196,Add,HP,50470,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,173,,DEF,6256,Add,HP,51560,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,174,,DEF,6316,Add,HP,52650,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,175,,DEF,6376,Add,HP,53740,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,176,,DEF,6436,Add,HP,54830,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,177,,DEF,6496,Add,HP,55920,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,178,,DEF,6556,Add,HP,57010,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,179,,DEF,6616,Add,HP,58100,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,180,,DEF,6676,Add,HP,59190,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,181,,DEF,6736,Add,HP,60280,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,182,,DEF,6796,Add,HP,61370,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,183,,DEF,6856,Add,HP,62460,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,184,,DEF,6916,Add,HP,63550,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,185,,DEF,6976,Add,HP,64640,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,186,,DEF,7036,Add,HP,65730,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,187,,DEF,7096,Add,HP,66820,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,188,,DEF,7156,Add,HP,67910,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,189,,DEF,7216,Add,HP,69000,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,190,,DEF,7276,Add,HP,70090,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,191,,DEF,7336,Add,HP,71180,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,192,,DEF,7396,Add,HP,72270,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,193,,DEF,7456,Add,HP,73360,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,194,,DEF,7516,Add,HP,74450,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,195,,DEF,7576,Add,HP,75540,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,196,,DEF,7636,Add,HP,76630,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,197,,DEF,7696,Add,HP,77720,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,198,,DEF,7756,Add,HP,78810,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,199,,DEF,7816,Add,HP,79900,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,200,,DEF,7876,Add,HP,80990,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,201,,DEF,7940,Add,HP,82625,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,202,,DEF,8004,Add,HP,84260,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,203,,DEF,8068,Add,HP,85895,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,204,,DEF,8132,Add,HP,87530,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,205,,DEF,8196,Add,HP,89165,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,206,,DEF,8260,Add,HP,90800,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,207,,DEF,8324,Add,HP,92435,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,208,,DEF,8388,Add,HP,94070,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,209,,DEF,8452,Add,HP,95705,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,210,,DEF,8516,Add,HP,97340,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,211,,DEF,8580,Add,HP,98975,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,212,,DEF,8644,Add,HP,100610,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,213,,DEF,8708,Add,HP,102245,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,214,,DEF,8772,Add,HP,103880,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,215,,DEF,8836,Add,HP,105515,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,216,,DEF,8900,Add,HP,107150,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,217,,DEF,8964,Add,HP,108785,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,218,,DEF,9028,Add,HP,110420,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,219,,DEF,9092,Add,HP,112055,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,220,,DEF,9156,Add,HP,113690,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,221,,DEF,9220,Add,HP,115325,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,222,,DEF,9284,Add,HP,116960,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,223,,DEF,9348,Add,HP,118595,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,224,,DEF,9412,Add,HP,120230,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,225,,DEF,9476,Add,HP,121865,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,226,,DEF,9540,Add,HP,123500,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,227,,DEF,9604,Add,HP,125135,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,228,,DEF,9668,Add,HP,126770,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,229,,DEF,9732,Add,HP,128405,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,230,,DEF,9796,Add,HP,130040,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,231,,DEF,9860,Add,HP,131675,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,232,,DEF,9924,Add,HP,133310,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,233,,DEF,9988,Add,HP,134945,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,234,,DEF,10052,Add,HP,136580,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,235,,DEF,10116,Add,HP,138215,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,236,,DEF,10180,Add,HP,139850,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,237,,DEF,10244,Add,HP,141485,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,238,,DEF,10308,Add,HP,143120,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,239,,DEF,10372,Add,HP,144755,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,240,,DEF,10436,Add,HP,146390,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,241,,DEF,10500,Add,HP,148025,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,242,,DEF,10564,Add,HP,149660,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,243,,DEF,10628,Add,HP,151295,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,244,,DEF,10692,Add,HP,152930,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,245,,DEF,10756,Add,HP,154565,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,246,,DEF,10820,Add,HP,156200,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,247,,DEF,10884,Add,HP,157835,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,248,,DEF,10948,Add,HP,159470,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,249,,DEF,11012,Add,HP,161105,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,250,,DEF,11076,Add,HP,162740,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,251,,DEF,11155,Add,HP,164506,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,252,,DEF,11234,Add,HP,166272,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,253,,DEF,11313,Add,HP,168038,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,254,,DEF,11392,Add,HP,169804,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,255,,DEF,11471,Add,HP,171570,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,256,,DEF,11550,Add,HP,173336,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,257,,DEF,11629,Add,HP,175102,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,258,,DEF,11708,Add,HP,176868,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,259,,DEF,11787,Add,HP,178634,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,260,,DEF,11866,Add,HP,180400,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,261,,DEF,11945,Add,HP,182166,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,262,,DEF,12024,Add,HP,183932,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,263,,DEF,12103,Add,HP,185698,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,264,,DEF,12182,Add,HP,187464,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,265,,DEF,12261,Add,HP,189230,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,266,,DEF,12340,Add,HP,190996,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,267,,DEF,12419,Add,HP,192762,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,268,,DEF,12498,Add,HP,194528,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,269,,DEF,12577,Add,HP,196294,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,270,,DEF,12656,Add,HP,198060,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,271,,DEF,12735,Add,HP,199826,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,272,,DEF,12814,Add,HP,201592,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,273,,DEF,12893,Add,HP,203358,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,274,,DEF,12972,Add,HP,205124,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,275,,DEF,13051,Add,HP,206890,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,276,,DEF,13130,Add,HP,208656,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,277,,DEF,13209,Add,HP,210422,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,278,,DEF,13288,Add,HP,212188,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,279,,DEF,13367,Add,HP,213954,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,280,,DEF,13446,Add,HP,215720,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,281,,DEF,13525,Add,HP,217486,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,282,,DEF,13604,Add,HP,219252,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,283,,DEF,13683,Add,HP,221018,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,284,,DEF,13762,Add,HP,222784,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,285,,DEF,13841,Add,HP,224550,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,286,,DEF,13920,Add,HP,226316,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,287,,DEF,13999,Add,HP,228082,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,288,,DEF,14078,Add,HP,229848,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,289,,DEF,14157,Add,HP,231614,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,290,,DEF,14236,Add,HP,233380,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,291,,DEF,14315,Add,HP,235146,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,292,,DEF,14394,Add,HP,236912,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,293,,DEF,14473,Add,HP,238678,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,294,,DEF,14552,Add,HP,240444,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,295,,DEF,14631,Add,HP,242210,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,296,,DEF,14710,Add,HP,243976,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,297,,DEF,14789,Add,HP,245742,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,298,,DEF,14868,Add,HP,247508,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,299,,DEF,14947,Add,HP,249274,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,300,,DEF,15026,Add,HP,251040,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,2,1,DEF,126,Add,HP,944,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,3,1,DEF,151,Add,HP,1096,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,4,1,DEF,176,Add,HP,1248,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,5,1,DEF,201,Add,HP,1400,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,6,1,DEF,226,Add,HP,1552,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,7,1,DEF,251,Add,HP,1704,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,8,1,DEF,276,Add,HP,1856,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,9,1,DEF,301,Add,HP,2008,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,10,1,DEF,326,Add,HP,2160,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,11,1,DEF,351,Add,HP,2312,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,12,1,DEF,376,Add,HP,2464,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,13,1,DEF,401,Add,HP,2616,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,14,1,DEF,426,Add,HP,2768,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,15,1,DEF,451,Add,HP,2920,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,16,1,DEF,476,Add,HP,3072,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,17,1,DEF,501,Add,HP,3224,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,18,1,DEF,526,Add,HP,3376,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,19,1,DEF,551,Add,HP,3528,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,20,1,DEF,576,Add,HP,3680,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,21,1,DEF,601,Add,HP,3832,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,22,1,DEF,626,Add,HP,3984,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,23,1,DEF,651,Add,HP,4136,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,24,1,DEF,676,Add,HP,4288,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,25,1,DEF,701,Add,HP,4440,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,26,1,DEF,726,Add,HP,4592,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,27,1,DEF,751,Add,HP,4744,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,28,1,DEF,776,Add,HP,4896,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,29,1,DEF,801,Add,HP,5048,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,30,1,DEF,826,Add,HP,5200,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,31,1,DEF,851,Add,HP,5352,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,32,1,DEF,876,Add,HP,5504,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,33,1,DEF,901,Add,HP,5656,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,34,1,DEF,926,Add,HP,5808,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,35,1,DEF,951,Add,HP,5960,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,36,1,DEF,976,Add,HP,6112,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,37,1,DEF,1001,Add,HP,6264,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,38,1,DEF,1026,Add,HP,6416,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,39,1,DEF,1051,Add,HP,6568,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,40,1,DEF,1076,Add,HP,6720,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,41,1,DEF,1101,Add,HP,6872,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,42,1,DEF,1126,Add,HP,7024,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,43,1,DEF,1151,Add,HP,7176,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,44,1,DEF,1176,Add,HP,7328,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,45,1,DEF,1201,Add,HP,7480,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,46,1,DEF,1226,Add,HP,7632,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,47,1,DEF,1251,Add,HP,7784,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,48,1,DEF,1276,Add,HP,7936,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,49,1,DEF,1301,Add,HP,8088,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,50,1,DEF,1326,Add,HP,8240,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,51,1,DEF,1356,Add,HP,8401,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,52,1,DEF,1386,Add,HP,8562,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,53,1,DEF,1416,Add,HP,8723,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,54,1,DEF,1446,Add,HP,8884,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,55,1,DEF,1476,Add,HP,9045,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,56,1,DEF,1506,Add,HP,9206,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,57,1,DEF,1536,Add,HP,9367,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,58,1,DEF,1566,Add,HP,9528,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,59,1,DEF,1596,Add,HP,9689,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,60,1,DEF,1626,Add,HP,9850,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,61,1,DEF,1656,Add,HP,10011,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,62,1,DEF,1686,Add,HP,10172,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,63,1,DEF,1716,Add,HP,10333,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,64,1,DEF,1746,Add,HP,10494,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,65,1,DEF,1776,Add,HP,10655,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,66,1,DEF,1806,Add,HP,10816,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,67,1,DEF,1836,Add,HP,10977,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,68,1,DEF,1866,Add,HP,11138,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,69,1,DEF,1896,Add,HP,11299,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,70,1,DEF,1926,Add,HP,11460,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,71,1,DEF,1956,Add,HP,11621,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,72,1,DEF,1986,Add,HP,11782,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,73,1,DEF,2016,Add,HP,11943,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,74,1,DEF,2046,Add,HP,12104,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,75,1,DEF,2076,Add,HP,12265,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,76,1,DEF,2106,Add,HP,12426,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,77,1,DEF,2136,Add,HP,12587,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,78,1,DEF,2166,Add,HP,12748,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,79,1,DEF,2196,Add,HP,12909,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,80,1,DEF,2226,Add,HP,13070,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,81,1,DEF,2256,Add,HP,13231,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,82,1,DEF,2286,Add,HP,13392,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,83,1,DEF,2316,Add,HP,13553,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,84,1,DEF,2346,Add,HP,13714,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,85,1,DEF,2376,Add,HP,13875,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,86,1,DEF,2406,Add,HP,14036,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,87,1,DEF,2436,Add,HP,14197,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,88,1,DEF,2466,Add,HP,14358,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,89,1,DEF,2496,Add,HP,14519,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,90,1,DEF,2526,Add,HP,14680,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,91,1,DEF,2556,Add,HP,14841,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,92,1,DEF,2586,Add,HP,15002,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,93,1,DEF,2616,Add,HP,15163,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,94,1,DEF,2646,Add,HP,15324,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,95,1,DEF,2676,Add,HP,15485,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,96,1,DEF,2706,Add,HP,15646,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,97,1,DEF,2736,Add,HP,15807,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,98,1,DEF,2766,Add,HP,15968,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,99,1,DEF,2796,Add,HP,16129,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,100,1,DEF,2826,Add,HP,16290,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,101,1,DEF,2867,Add,HP,16494,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,102,1,DEF,2908,Add,HP,16698,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,103,1,DEF,2949,Add,HP,16902,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,104,1,DEF,2990,Add,HP,17106,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,105,1,DEF,3031,Add,HP,17310,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,106,1,DEF,3072,Add,HP,17514,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,107,1,DEF,3113,Add,HP,17718,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,108,1,DEF,3154,Add,HP,17922,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,109,1,DEF,3195,Add,HP,18126,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,110,1,DEF,3236,Add,HP,18330,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,111,1,DEF,3277,Add,HP,18534,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,112,1,DEF,3318,Add,HP,18738,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,113,1,DEF,3359,Add,HP,18942,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,114,1,DEF,3400,Add,HP,19146,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,115,1,DEF,3441,Add,HP,19350,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,116,1,DEF,3482,Add,HP,19554,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,117,1,DEF,3523,Add,HP,19758,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,118,1,DEF,3564,Add,HP,19962,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,119,1,DEF,3605,Add,HP,20166,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,120,1,DEF,3646,Add,HP,20370,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,121,1,DEF,3687,Add,HP,20574,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,122,1,DEF,3728,Add,HP,20778,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,123,1,DEF,3769,Add,HP,20982,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,124,1,DEF,3810,Add,HP,21186,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,125,1,DEF,3851,Add,HP,21390,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,126,1,DEF,3892,Add,HP,21594,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,127,1,DEF,3933,Add,HP,21798,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,128,1,DEF,3974,Add,HP,22002,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,129,1,DEF,4015,Add,HP,22206,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,130,1,DEF,4056,Add,HP,22410,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,131,1,DEF,4097,Add,HP,22614,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,132,1,DEF,4138,Add,HP,22818,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,133,1,DEF,4179,Add,HP,23022,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,134,1,DEF,4220,Add,HP,23226,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,135,1,DEF,4261,Add,HP,23430,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,136,1,DEF,4302,Add,HP,23634,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,137,1,DEF,4343,Add,HP,23838,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,138,1,DEF,4384,Add,HP,24042,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,139,1,DEF,4425,Add,HP,24246,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,140,1,DEF,4466,Add,HP,24450,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,141,1,DEF,4507,Add,HP,24654,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,142,1,DEF,4548,Add,HP,24858,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,143,1,DEF,4589,Add,HP,25062,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,144,1,DEF,4630,Add,HP,25266,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,145,1,DEF,4671,Add,HP,25470,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,146,1,DEF,4712,Add,HP,25674,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,147,1,DEF,4753,Add,HP,25878,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,148,1,DEF,4794,Add,HP,26082,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,149,1,DEF,4835,Add,HP,26286,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,150,1,DEF,4876,Add,HP,26490,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,151,1,DEF,4936,Add,HP,27580,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,152,1,DEF,4996,Add,HP,28670,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,153,1,DEF,5056,Add,HP,29760,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,154,1,DEF,5116,Add,HP,30850,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,155,1,DEF,5176,Add,HP,31940,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,156,1,DEF,5236,Add,HP,33030,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,157,1,DEF,5296,Add,HP,34120,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,158,1,DEF,5356,Add,HP,35210,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,159,1,DEF,5416,Add,HP,36300,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,160,1,DEF,5476,Add,HP,37390,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,161,1,DEF,5536,Add,HP,38480,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,162,1,DEF,5596,Add,HP,39570,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,163,1,DEF,5656,Add,HP,40660,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,164,1,DEF,5716,Add,HP,41750,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,165,1,DEF,5776,Add,HP,42840,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,166,1,DEF,5836,Add,HP,43930,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,167,1,DEF,5896,Add,HP,45020,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,168,1,DEF,5956,Add,HP,46110,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,169,1,DEF,6016,Add,HP,47200,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,170,1,DEF,6076,Add,HP,48290,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,171,1,DEF,6136,Add,HP,49380,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,172,1,DEF,6196,Add,HP,50470,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,173,1,DEF,6256,Add,HP,51560,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,174,1,DEF,6316,Add,HP,52650,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,175,1,DEF,6376,Add,HP,53740,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,176,1,DEF,6436,Add,HP,54830,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,177,1,DEF,6496,Add,HP,55920,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,178,1,DEF,6556,Add,HP,57010,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,179,1,DEF,6616,Add,HP,58100,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,180,1,DEF,6676,Add,HP,59190,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,181,1,DEF,6736,Add,HP,60280,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,182,1,DEF,6796,Add,HP,61370,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,183,1,DEF,6856,Add,HP,62460,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,184,1,DEF,6916,Add,HP,63550,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,185,1,DEF,6976,Add,HP,64640,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,186,1,DEF,7036,Add,HP,65730,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,187,1,DEF,7096,Add,HP,66820,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,188,1,DEF,7156,Add,HP,67910,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,189,1,DEF,7216,Add,HP,69000,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,190,1,DEF,7276,Add,HP,70090,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,191,1,DEF,7336,Add,HP,71180,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,192,1,DEF,7396,Add,HP,72270,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,193,1,DEF,7456,Add,HP,73360,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,194,1,DEF,7516,Add,HP,74450,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,195,1,DEF,7576,Add,HP,75540,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,196,1,DEF,7636,Add,HP,76630,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,197,1,DEF,7696,Add,HP,77720,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,198,1,DEF,7756,Add,HP,78810,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,199,1,DEF,7816,Add,HP,79900,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,200,1,DEF,7876,Add,HP,80990,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,201,1,DEF,7940,Add,HP,82625,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,202,1,DEF,8004,Add,HP,84260,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,203,1,DEF,8068,Add,HP,85895,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,204,1,DEF,8132,Add,HP,87530,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,205,1,DEF,8196,Add,HP,89165,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,206,1,DEF,8260,Add,HP,90800,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,207,1,DEF,8324,Add,HP,92435,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,208,1,DEF,8388,Add,HP,94070,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,209,1,DEF,8452,Add,HP,95705,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,210,1,DEF,8516,Add,HP,97340,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,211,1,DEF,8580,Add,HP,98975,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,212,1,DEF,8644,Add,HP,100610,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,213,1,DEF,8708,Add,HP,102245,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,214,1,DEF,8772,Add,HP,103880,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,215,1,DEF,8836,Add,HP,105515,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,216,1,DEF,8900,Add,HP,107150,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,217,1,DEF,8964,Add,HP,108785,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,218,1,DEF,9028,Add,HP,110420,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,219,1,DEF,9092,Add,HP,112055,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,220,1,DEF,9156,Add,HP,113690,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,221,1,DEF,9220,Add,HP,115325,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,222,1,DEF,9284,Add,HP,116960,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,223,1,DEF,9348,Add,HP,118595,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,224,1,DEF,9412,Add,HP,120230,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,225,1,DEF,9476,Add,HP,121865,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,226,1,DEF,9540,Add,HP,123500,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,227,1,DEF,9604,Add,HP,125135,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,228,1,DEF,9668,Add,HP,126770,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,229,1,DEF,9732,Add,HP,128405,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,230,1,DEF,9796,Add,HP,130040,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,231,1,DEF,9860,Add,HP,131675,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,232,1,DEF,9924,Add,HP,133310,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,233,1,DEF,9988,Add,HP,134945,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,234,1,DEF,10052,Add,HP,136580,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,235,1,DEF,10116,Add,HP,138215,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,236,1,DEF,10180,Add,HP,139850,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,237,1,DEF,10244,Add,HP,141485,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,238,1,DEF,10308,Add,HP,143120,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,239,1,DEF,10372,Add,HP,144755,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,240,1,DEF,10436,Add,HP,146390,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,241,1,DEF,10500,Add,HP,148025,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,242,1,DEF,10564,Add,HP,149660,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,243,1,DEF,10628,Add,HP,151295,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,244,1,DEF,10692,Add,HP,152930,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,245,1,DEF,10756,Add,HP,154565,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,246,1,DEF,10820,Add,HP,156200,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,247,1,DEF,10884,Add,HP,157835,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,248,1,DEF,10948,Add,HP,159470,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,249,1,DEF,11012,Add,HP,161105,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,250,1,DEF,11076,Add,HP,162740,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,251,1,DEF,11155,Add,HP,164506,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,252,1,DEF,11234,Add,HP,166272,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,253,1,DEF,11313,Add,HP,168038,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,254,1,DEF,11392,Add,HP,169804,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,255,1,DEF,11471,Add,HP,171570,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,256,1,DEF,11550,Add,HP,173336,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,257,1,DEF,11629,Add,HP,175102,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,258,1,DEF,11708,Add,HP,176868,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,259,1,DEF,11787,Add,HP,178634,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,260,1,DEF,11866,Add,HP,180400,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,261,1,DEF,11945,Add,HP,182166,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,262,1,DEF,12024,Add,HP,183932,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,263,1,DEF,12103,Add,HP,185698,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,264,1,DEF,12182,Add,HP,187464,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,265,1,DEF,12261,Add,HP,189230,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,266,1,DEF,12340,Add,HP,190996,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,267,1,DEF,12419,Add,HP,192762,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,268,1,DEF,12498,Add,HP,194528,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,269,1,DEF,12577,Add,HP,196294,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,270,1,DEF,12656,Add,HP,198060,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,271,1,DEF,12735,Add,HP,199826,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,272,1,DEF,12814,Add,HP,201592,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,273,1,DEF,12893,Add,HP,203358,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,274,1,DEF,12972,Add,HP,205124,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,275,1,DEF,13051,Add,HP,206890,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,276,1,DEF,13130,Add,HP,208656,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,277,1,DEF,13209,Add,HP,210422,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,278,1,DEF,13288,Add,HP,212188,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,279,1,DEF,13367,Add,HP,213954,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,280,1,DEF,13446,Add,HP,215720,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,281,1,DEF,13525,Add,HP,217486,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,282,1,DEF,13604,Add,HP,219252,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,283,1,DEF,13683,Add,HP,221018,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,284,1,DEF,13762,Add,HP,222784,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,285,1,DEF,13841,Add,HP,224550,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,286,1,DEF,13920,Add,HP,226316,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,287,1,DEF,13999,Add,HP,228082,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,288,1,DEF,14078,Add,HP,229848,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,289,1,DEF,14157,Add,HP,231614,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,290,1,DEF,14236,Add,HP,233380,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,291,1,DEF,14315,Add,HP,235146,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,292,1,DEF,14394,Add,HP,236912,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,293,1,DEF,14473,Add,HP,238678,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,294,1,DEF,14552,Add,HP,240444,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,295,1,DEF,14631,Add,HP,242210,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,296,1,DEF,14710,Add,HP,243976,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,297,1,DEF,14789,Add,HP,245742,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,298,1,DEF,14868,Add,HP,247508,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,299,1,DEF,14947,Add,HP,249274,Add,NONE,0,Add,,,,,,,, +10023,Adventure Vampiric Rune,300,1,DEF,15026,Add,HP,251040,Add,NONE,0,Add,,,,,,,, 10024,WorldBoss Vampiric Rune,1,1,DEF,101,Add,HP,792,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,2,,DEF,126,Add,HP,944,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,3,,DEF,151,Add,HP,1096,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,4,,DEF,176,Add,HP,1248,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,5,,DEF,201,Add,HP,1400,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,6,,DEF,226,Add,HP,1552,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,7,,DEF,251,Add,HP,1704,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,8,,DEF,276,Add,HP,1856,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,9,,DEF,301,Add,HP,2008,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,10,,DEF,326,Add,HP,2160,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,11,,DEF,351,Add,HP,2312,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,12,,DEF,376,Add,HP,2464,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,13,,DEF,401,Add,HP,2616,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,14,,DEF,426,Add,HP,2768,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,15,,DEF,451,Add,HP,2920,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,16,,DEF,476,Add,HP,3072,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,17,,DEF,501,Add,HP,3224,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,18,,DEF,526,Add,HP,3376,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,19,,DEF,551,Add,HP,3528,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,20,,DEF,576,Add,HP,3680,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,21,,DEF,601,Add,HP,3832,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,22,,DEF,626,Add,HP,3984,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,23,,DEF,651,Add,HP,4136,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,24,,DEF,676,Add,HP,4288,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,25,,DEF,701,Add,HP,4440,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,26,,DEF,726,Add,HP,4592,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,27,,DEF,751,Add,HP,4744,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,28,,DEF,776,Add,HP,4896,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,29,,DEF,801,Add,HP,5048,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,30,,DEF,826,Add,HP,5200,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,31,,DEF,851,Add,HP,5352,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,32,,DEF,876,Add,HP,5504,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,33,,DEF,901,Add,HP,5656,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,34,,DEF,926,Add,HP,5808,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,35,,DEF,951,Add,HP,5960,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,36,,DEF,976,Add,HP,6112,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,37,,DEF,1001,Add,HP,6264,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,38,,DEF,1026,Add,HP,6416,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,39,,DEF,1051,Add,HP,6568,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,40,,DEF,1076,Add,HP,6720,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,41,,DEF,1101,Add,HP,6872,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,42,,DEF,1126,Add,HP,7024,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,43,,DEF,1151,Add,HP,7176,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,44,,DEF,1176,Add,HP,7328,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,45,,DEF,1201,Add,HP,7480,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,46,,DEF,1226,Add,HP,7632,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,47,,DEF,1251,Add,HP,7784,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,48,,DEF,1276,Add,HP,7936,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,49,,DEF,1301,Add,HP,8088,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,50,,DEF,1326,Add,HP,8240,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,51,,DEF,1356,Add,HP,8401,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,52,,DEF,1386,Add,HP,8562,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,53,,DEF,1416,Add,HP,8723,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,54,,DEF,1446,Add,HP,8884,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,55,,DEF,1476,Add,HP,9045,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,56,,DEF,1506,Add,HP,9206,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,57,,DEF,1536,Add,HP,9367,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,58,,DEF,1566,Add,HP,9528,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,59,,DEF,1596,Add,HP,9689,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,60,,DEF,1626,Add,HP,9850,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,61,,DEF,1656,Add,HP,10011,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,62,,DEF,1686,Add,HP,10172,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,63,,DEF,1716,Add,HP,10333,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,64,,DEF,1746,Add,HP,10494,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,65,,DEF,1776,Add,HP,10655,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,66,,DEF,1806,Add,HP,10816,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,67,,DEF,1836,Add,HP,10977,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,68,,DEF,1866,Add,HP,11138,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,69,,DEF,1896,Add,HP,11299,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,70,,DEF,1926,Add,HP,11460,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,71,,DEF,1956,Add,HP,11621,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,72,,DEF,1986,Add,HP,11782,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,73,,DEF,2016,Add,HP,11943,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,74,,DEF,2046,Add,HP,12104,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,75,,DEF,2076,Add,HP,12265,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,76,,DEF,2106,Add,HP,12426,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,77,,DEF,2136,Add,HP,12587,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,78,,DEF,2166,Add,HP,12748,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,79,,DEF,2196,Add,HP,12909,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,80,,DEF,2226,Add,HP,13070,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,81,,DEF,2256,Add,HP,13231,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,82,,DEF,2286,Add,HP,13392,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,83,,DEF,2316,Add,HP,13553,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,84,,DEF,2346,Add,HP,13714,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,85,,DEF,2376,Add,HP,13875,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,86,,DEF,2406,Add,HP,14036,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,87,,DEF,2436,Add,HP,14197,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,88,,DEF,2466,Add,HP,14358,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,89,,DEF,2496,Add,HP,14519,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,90,,DEF,2526,Add,HP,14680,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,91,,DEF,2556,Add,HP,14841,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,92,,DEF,2586,Add,HP,15002,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,93,,DEF,2616,Add,HP,15163,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,94,,DEF,2646,Add,HP,15324,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,95,,DEF,2676,Add,HP,15485,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,96,,DEF,2706,Add,HP,15646,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,97,,DEF,2736,Add,HP,15807,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,98,,DEF,2766,Add,HP,15968,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,99,,DEF,2796,Add,HP,16129,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,100,,DEF,2826,Add,HP,16290,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,101,,DEF,2867,Add,HP,16494,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,102,,DEF,2908,Add,HP,16698,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,103,,DEF,2949,Add,HP,16902,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,104,,DEF,2990,Add,HP,17106,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,105,,DEF,3031,Add,HP,17310,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,106,,DEF,3072,Add,HP,17514,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,107,,DEF,3113,Add,HP,17718,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,108,,DEF,3154,Add,HP,17922,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,109,,DEF,3195,Add,HP,18126,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,110,,DEF,3236,Add,HP,18330,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,111,,DEF,3277,Add,HP,18534,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,112,,DEF,3318,Add,HP,18738,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,113,,DEF,3359,Add,HP,18942,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,114,,DEF,3400,Add,HP,19146,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,115,,DEF,3441,Add,HP,19350,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,116,,DEF,3482,Add,HP,19554,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,117,,DEF,3523,Add,HP,19758,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,118,,DEF,3564,Add,HP,19962,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,119,,DEF,3605,Add,HP,20166,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,120,,DEF,3646,Add,HP,20370,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,121,,DEF,3687,Add,HP,20574,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,122,,DEF,3728,Add,HP,20778,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,123,,DEF,3769,Add,HP,20982,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,124,,DEF,3810,Add,HP,21186,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,125,,DEF,3851,Add,HP,21390,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,126,,DEF,3892,Add,HP,21594,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,127,,DEF,3933,Add,HP,21798,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,128,,DEF,3974,Add,HP,22002,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,129,,DEF,4015,Add,HP,22206,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,130,,DEF,4056,Add,HP,22410,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,131,,DEF,4097,Add,HP,22614,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,132,,DEF,4138,Add,HP,22818,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,133,,DEF,4179,Add,HP,23022,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,134,,DEF,4220,Add,HP,23226,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,135,,DEF,4261,Add,HP,23430,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,136,,DEF,4302,Add,HP,23634,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,137,,DEF,4343,Add,HP,23838,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,138,,DEF,4384,Add,HP,24042,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,139,,DEF,4425,Add,HP,24246,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,140,,DEF,4466,Add,HP,24450,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,141,,DEF,4507,Add,HP,24654,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,142,,DEF,4548,Add,HP,24858,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,143,,DEF,4589,Add,HP,25062,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,144,,DEF,4630,Add,HP,25266,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,145,,DEF,4671,Add,HP,25470,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,146,,DEF,4712,Add,HP,25674,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,147,,DEF,4753,Add,HP,25878,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,148,,DEF,4794,Add,HP,26082,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,149,,DEF,4835,Add,HP,26286,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,150,,DEF,4876,Add,HP,26490,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,151,,DEF,4936,Add,HP,27580,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,152,,DEF,4996,Add,HP,28670,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,153,,DEF,5056,Add,HP,29760,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,154,,DEF,5116,Add,HP,30850,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,155,,DEF,5176,Add,HP,31940,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,156,,DEF,5236,Add,HP,33030,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,157,,DEF,5296,Add,HP,34120,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,158,,DEF,5356,Add,HP,35210,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,159,,DEF,5416,Add,HP,36300,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,160,,DEF,5476,Add,HP,37390,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,161,,DEF,5536,Add,HP,38480,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,162,,DEF,5596,Add,HP,39570,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,163,,DEF,5656,Add,HP,40660,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,164,,DEF,5716,Add,HP,41750,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,165,,DEF,5776,Add,HP,42840,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,166,,DEF,5836,Add,HP,43930,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,167,,DEF,5896,Add,HP,45020,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,168,,DEF,5956,Add,HP,46110,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,169,,DEF,6016,Add,HP,47200,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,170,,DEF,6076,Add,HP,48290,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,171,,DEF,6136,Add,HP,49380,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,172,,DEF,6196,Add,HP,50470,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,173,,DEF,6256,Add,HP,51560,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,174,,DEF,6316,Add,HP,52650,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,175,,DEF,6376,Add,HP,53740,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,176,,DEF,6436,Add,HP,54830,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,177,,DEF,6496,Add,HP,55920,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,178,,DEF,6556,Add,HP,57010,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,179,,DEF,6616,Add,HP,58100,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,180,,DEF,6676,Add,HP,59190,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,181,,DEF,6736,Add,HP,60280,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,182,,DEF,6796,Add,HP,61370,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,183,,DEF,6856,Add,HP,62460,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,184,,DEF,6916,Add,HP,63550,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,185,,DEF,6976,Add,HP,64640,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,186,,DEF,7036,Add,HP,65730,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,187,,DEF,7096,Add,HP,66820,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,188,,DEF,7156,Add,HP,67910,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,189,,DEF,7216,Add,HP,69000,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,190,,DEF,7276,Add,HP,70090,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,191,,DEF,7336,Add,HP,71180,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,192,,DEF,7396,Add,HP,72270,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,193,,DEF,7456,Add,HP,73360,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,194,,DEF,7516,Add,HP,74450,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,195,,DEF,7576,Add,HP,75540,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,196,,DEF,7636,Add,HP,76630,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,197,,DEF,7696,Add,HP,77720,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,198,,DEF,7756,Add,HP,78810,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,199,,DEF,7816,Add,HP,79900,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,200,,DEF,7876,Add,HP,80990,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,201,,DEF,7940,Add,HP,82625,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,202,,DEF,8004,Add,HP,84260,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,203,,DEF,8068,Add,HP,85895,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,204,,DEF,8132,Add,HP,87530,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,205,,DEF,8196,Add,HP,89165,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,206,,DEF,8260,Add,HP,90800,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,207,,DEF,8324,Add,HP,92435,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,208,,DEF,8388,Add,HP,94070,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,209,,DEF,8452,Add,HP,95705,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,210,,DEF,8516,Add,HP,97340,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,211,,DEF,8580,Add,HP,98975,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,212,,DEF,8644,Add,HP,100610,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,213,,DEF,8708,Add,HP,102245,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,214,,DEF,8772,Add,HP,103880,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,215,,DEF,8836,Add,HP,105515,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,216,,DEF,8900,Add,HP,107150,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,217,,DEF,8964,Add,HP,108785,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,218,,DEF,9028,Add,HP,110420,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,219,,DEF,9092,Add,HP,112055,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,220,,DEF,9156,Add,HP,113690,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,221,,DEF,9220,Add,HP,115325,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,222,,DEF,9284,Add,HP,116960,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,223,,DEF,9348,Add,HP,118595,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,224,,DEF,9412,Add,HP,120230,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,225,,DEF,9476,Add,HP,121865,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,226,,DEF,9540,Add,HP,123500,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,227,,DEF,9604,Add,HP,125135,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,228,,DEF,9668,Add,HP,126770,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,229,,DEF,9732,Add,HP,128405,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,230,,DEF,9796,Add,HP,130040,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,231,,DEF,9860,Add,HP,131675,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,232,,DEF,9924,Add,HP,133310,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,233,,DEF,9988,Add,HP,134945,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,234,,DEF,10052,Add,HP,136580,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,235,,DEF,10116,Add,HP,138215,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,236,,DEF,10180,Add,HP,139850,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,237,,DEF,10244,Add,HP,141485,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,238,,DEF,10308,Add,HP,143120,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,239,,DEF,10372,Add,HP,144755,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,240,,DEF,10436,Add,HP,146390,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,241,,DEF,10500,Add,HP,148025,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,242,,DEF,10564,Add,HP,149660,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,243,,DEF,10628,Add,HP,151295,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,244,,DEF,10692,Add,HP,152930,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,245,,DEF,10756,Add,HP,154565,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,246,,DEF,10820,Add,HP,156200,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,247,,DEF,10884,Add,HP,157835,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,248,,DEF,10948,Add,HP,159470,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,249,,DEF,11012,Add,HP,161105,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,250,,DEF,11076,Add,HP,162740,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,251,,DEF,11155,Add,HP,164506,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,252,,DEF,11234,Add,HP,166272,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,253,,DEF,11313,Add,HP,168038,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,254,,DEF,11392,Add,HP,169804,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,255,,DEF,11471,Add,HP,171570,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,256,,DEF,11550,Add,HP,173336,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,257,,DEF,11629,Add,HP,175102,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,258,,DEF,11708,Add,HP,176868,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,259,,DEF,11787,Add,HP,178634,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,260,,DEF,11866,Add,HP,180400,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,261,,DEF,11945,Add,HP,182166,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,262,,DEF,12024,Add,HP,183932,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,263,,DEF,12103,Add,HP,185698,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,264,,DEF,12182,Add,HP,187464,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,265,,DEF,12261,Add,HP,189230,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,266,,DEF,12340,Add,HP,190996,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,267,,DEF,12419,Add,HP,192762,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,268,,DEF,12498,Add,HP,194528,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,269,,DEF,12577,Add,HP,196294,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,270,,DEF,12656,Add,HP,198060,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,271,,DEF,12735,Add,HP,199826,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,272,,DEF,12814,Add,HP,201592,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,273,,DEF,12893,Add,HP,203358,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,274,,DEF,12972,Add,HP,205124,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,275,,DEF,13051,Add,HP,206890,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,276,,DEF,13130,Add,HP,208656,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,277,,DEF,13209,Add,HP,210422,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,278,,DEF,13288,Add,HP,212188,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,279,,DEF,13367,Add,HP,213954,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,280,,DEF,13446,Add,HP,215720,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,281,,DEF,13525,Add,HP,217486,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,282,,DEF,13604,Add,HP,219252,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,283,,DEF,13683,Add,HP,221018,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,284,,DEF,13762,Add,HP,222784,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,285,,DEF,13841,Add,HP,224550,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,286,,DEF,13920,Add,HP,226316,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,287,,DEF,13999,Add,HP,228082,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,288,,DEF,14078,Add,HP,229848,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,289,,DEF,14157,Add,HP,231614,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,290,,DEF,14236,Add,HP,233380,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,291,,DEF,14315,Add,HP,235146,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,292,,DEF,14394,Add,HP,236912,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,293,,DEF,14473,Add,HP,238678,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,294,,DEF,14552,Add,HP,240444,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,295,,DEF,14631,Add,HP,242210,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,296,,DEF,14710,Add,HP,243976,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,297,,DEF,14789,Add,HP,245742,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,298,,DEF,14868,Add,HP,247508,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,299,,DEF,14947,Add,HP,249274,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,300,,DEF,15026,Add,HP,251040,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,2,1,DEF,126,Add,HP,944,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,3,1,DEF,151,Add,HP,1096,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,4,1,DEF,176,Add,HP,1248,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,5,1,DEF,201,Add,HP,1400,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,6,1,DEF,226,Add,HP,1552,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,7,1,DEF,251,Add,HP,1704,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,8,1,DEF,276,Add,HP,1856,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,9,1,DEF,301,Add,HP,2008,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,10,1,DEF,326,Add,HP,2160,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,11,1,DEF,351,Add,HP,2312,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,12,1,DEF,376,Add,HP,2464,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,13,1,DEF,401,Add,HP,2616,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,14,1,DEF,426,Add,HP,2768,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,15,1,DEF,451,Add,HP,2920,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,16,1,DEF,476,Add,HP,3072,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,17,1,DEF,501,Add,HP,3224,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,18,1,DEF,526,Add,HP,3376,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,19,1,DEF,551,Add,HP,3528,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,20,1,DEF,576,Add,HP,3680,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,21,1,DEF,601,Add,HP,3832,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,22,1,DEF,626,Add,HP,3984,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,23,1,DEF,651,Add,HP,4136,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,24,1,DEF,676,Add,HP,4288,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,25,1,DEF,701,Add,HP,4440,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,26,1,DEF,726,Add,HP,4592,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,27,1,DEF,751,Add,HP,4744,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,28,1,DEF,776,Add,HP,4896,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,29,1,DEF,801,Add,HP,5048,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,30,1,DEF,826,Add,HP,5200,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,31,1,DEF,851,Add,HP,5352,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,32,1,DEF,876,Add,HP,5504,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,33,1,DEF,901,Add,HP,5656,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,34,1,DEF,926,Add,HP,5808,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,35,1,DEF,951,Add,HP,5960,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,36,1,DEF,976,Add,HP,6112,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,37,1,DEF,1001,Add,HP,6264,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,38,1,DEF,1026,Add,HP,6416,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,39,1,DEF,1051,Add,HP,6568,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,40,1,DEF,1076,Add,HP,6720,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,41,1,DEF,1101,Add,HP,6872,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,42,1,DEF,1126,Add,HP,7024,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,43,1,DEF,1151,Add,HP,7176,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,44,1,DEF,1176,Add,HP,7328,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,45,1,DEF,1201,Add,HP,7480,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,46,1,DEF,1226,Add,HP,7632,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,47,1,DEF,1251,Add,HP,7784,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,48,1,DEF,1276,Add,HP,7936,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,49,1,DEF,1301,Add,HP,8088,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,50,1,DEF,1326,Add,HP,8240,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,51,1,DEF,1356,Add,HP,8401,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,52,1,DEF,1386,Add,HP,8562,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,53,1,DEF,1416,Add,HP,8723,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,54,1,DEF,1446,Add,HP,8884,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,55,1,DEF,1476,Add,HP,9045,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,56,1,DEF,1506,Add,HP,9206,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,57,1,DEF,1536,Add,HP,9367,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,58,1,DEF,1566,Add,HP,9528,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,59,1,DEF,1596,Add,HP,9689,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,60,1,DEF,1626,Add,HP,9850,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,61,1,DEF,1656,Add,HP,10011,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,62,1,DEF,1686,Add,HP,10172,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,63,1,DEF,1716,Add,HP,10333,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,64,1,DEF,1746,Add,HP,10494,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,65,1,DEF,1776,Add,HP,10655,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,66,1,DEF,1806,Add,HP,10816,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,67,1,DEF,1836,Add,HP,10977,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,68,1,DEF,1866,Add,HP,11138,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,69,1,DEF,1896,Add,HP,11299,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,70,1,DEF,1926,Add,HP,11460,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,71,1,DEF,1956,Add,HP,11621,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,72,1,DEF,1986,Add,HP,11782,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,73,1,DEF,2016,Add,HP,11943,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,74,1,DEF,2046,Add,HP,12104,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,75,1,DEF,2076,Add,HP,12265,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,76,1,DEF,2106,Add,HP,12426,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,77,1,DEF,2136,Add,HP,12587,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,78,1,DEF,2166,Add,HP,12748,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,79,1,DEF,2196,Add,HP,12909,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,80,1,DEF,2226,Add,HP,13070,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,81,1,DEF,2256,Add,HP,13231,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,82,1,DEF,2286,Add,HP,13392,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,83,1,DEF,2316,Add,HP,13553,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,84,1,DEF,2346,Add,HP,13714,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,85,1,DEF,2376,Add,HP,13875,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,86,1,DEF,2406,Add,HP,14036,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,87,1,DEF,2436,Add,HP,14197,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,88,1,DEF,2466,Add,HP,14358,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,89,1,DEF,2496,Add,HP,14519,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,90,1,DEF,2526,Add,HP,14680,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,91,1,DEF,2556,Add,HP,14841,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,92,1,DEF,2586,Add,HP,15002,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,93,1,DEF,2616,Add,HP,15163,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,94,1,DEF,2646,Add,HP,15324,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,95,1,DEF,2676,Add,HP,15485,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,96,1,DEF,2706,Add,HP,15646,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,97,1,DEF,2736,Add,HP,15807,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,98,1,DEF,2766,Add,HP,15968,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,99,1,DEF,2796,Add,HP,16129,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,100,1,DEF,2826,Add,HP,16290,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,101,1,DEF,2867,Add,HP,16494,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,102,1,DEF,2908,Add,HP,16698,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,103,1,DEF,2949,Add,HP,16902,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,104,1,DEF,2990,Add,HP,17106,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,105,1,DEF,3031,Add,HP,17310,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,106,1,DEF,3072,Add,HP,17514,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,107,1,DEF,3113,Add,HP,17718,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,108,1,DEF,3154,Add,HP,17922,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,109,1,DEF,3195,Add,HP,18126,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,110,1,DEF,3236,Add,HP,18330,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,111,1,DEF,3277,Add,HP,18534,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,112,1,DEF,3318,Add,HP,18738,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,113,1,DEF,3359,Add,HP,18942,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,114,1,DEF,3400,Add,HP,19146,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,115,1,DEF,3441,Add,HP,19350,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,116,1,DEF,3482,Add,HP,19554,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,117,1,DEF,3523,Add,HP,19758,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,118,1,DEF,3564,Add,HP,19962,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,119,1,DEF,3605,Add,HP,20166,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,120,1,DEF,3646,Add,HP,20370,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,121,1,DEF,3687,Add,HP,20574,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,122,1,DEF,3728,Add,HP,20778,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,123,1,DEF,3769,Add,HP,20982,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,124,1,DEF,3810,Add,HP,21186,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,125,1,DEF,3851,Add,HP,21390,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,126,1,DEF,3892,Add,HP,21594,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,127,1,DEF,3933,Add,HP,21798,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,128,1,DEF,3974,Add,HP,22002,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,129,1,DEF,4015,Add,HP,22206,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,130,1,DEF,4056,Add,HP,22410,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,131,1,DEF,4097,Add,HP,22614,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,132,1,DEF,4138,Add,HP,22818,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,133,1,DEF,4179,Add,HP,23022,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,134,1,DEF,4220,Add,HP,23226,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,135,1,DEF,4261,Add,HP,23430,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,136,1,DEF,4302,Add,HP,23634,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,137,1,DEF,4343,Add,HP,23838,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,138,1,DEF,4384,Add,HP,24042,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,139,1,DEF,4425,Add,HP,24246,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,140,1,DEF,4466,Add,HP,24450,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,141,1,DEF,4507,Add,HP,24654,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,142,1,DEF,4548,Add,HP,24858,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,143,1,DEF,4589,Add,HP,25062,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,144,1,DEF,4630,Add,HP,25266,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,145,1,DEF,4671,Add,HP,25470,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,146,1,DEF,4712,Add,HP,25674,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,147,1,DEF,4753,Add,HP,25878,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,148,1,DEF,4794,Add,HP,26082,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,149,1,DEF,4835,Add,HP,26286,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,150,1,DEF,4876,Add,HP,26490,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,151,1,DEF,4936,Add,HP,27580,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,152,1,DEF,4996,Add,HP,28670,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,153,1,DEF,5056,Add,HP,29760,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,154,1,DEF,5116,Add,HP,30850,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,155,1,DEF,5176,Add,HP,31940,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,156,1,DEF,5236,Add,HP,33030,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,157,1,DEF,5296,Add,HP,34120,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,158,1,DEF,5356,Add,HP,35210,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,159,1,DEF,5416,Add,HP,36300,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,160,1,DEF,5476,Add,HP,37390,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,161,1,DEF,5536,Add,HP,38480,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,162,1,DEF,5596,Add,HP,39570,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,163,1,DEF,5656,Add,HP,40660,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,164,1,DEF,5716,Add,HP,41750,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,165,1,DEF,5776,Add,HP,42840,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,166,1,DEF,5836,Add,HP,43930,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,167,1,DEF,5896,Add,HP,45020,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,168,1,DEF,5956,Add,HP,46110,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,169,1,DEF,6016,Add,HP,47200,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,170,1,DEF,6076,Add,HP,48290,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,171,1,DEF,6136,Add,HP,49380,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,172,1,DEF,6196,Add,HP,50470,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,173,1,DEF,6256,Add,HP,51560,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,174,1,DEF,6316,Add,HP,52650,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,175,1,DEF,6376,Add,HP,53740,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,176,1,DEF,6436,Add,HP,54830,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,177,1,DEF,6496,Add,HP,55920,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,178,1,DEF,6556,Add,HP,57010,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,179,1,DEF,6616,Add,HP,58100,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,180,1,DEF,6676,Add,HP,59190,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,181,1,DEF,6736,Add,HP,60280,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,182,1,DEF,6796,Add,HP,61370,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,183,1,DEF,6856,Add,HP,62460,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,184,1,DEF,6916,Add,HP,63550,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,185,1,DEF,6976,Add,HP,64640,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,186,1,DEF,7036,Add,HP,65730,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,187,1,DEF,7096,Add,HP,66820,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,188,1,DEF,7156,Add,HP,67910,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,189,1,DEF,7216,Add,HP,69000,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,190,1,DEF,7276,Add,HP,70090,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,191,1,DEF,7336,Add,HP,71180,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,192,1,DEF,7396,Add,HP,72270,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,193,1,DEF,7456,Add,HP,73360,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,194,1,DEF,7516,Add,HP,74450,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,195,1,DEF,7576,Add,HP,75540,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,196,1,DEF,7636,Add,HP,76630,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,197,1,DEF,7696,Add,HP,77720,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,198,1,DEF,7756,Add,HP,78810,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,199,1,DEF,7816,Add,HP,79900,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,200,1,DEF,7876,Add,HP,80990,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,201,1,DEF,7940,Add,HP,82625,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,202,1,DEF,8004,Add,HP,84260,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,203,1,DEF,8068,Add,HP,85895,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,204,1,DEF,8132,Add,HP,87530,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,205,1,DEF,8196,Add,HP,89165,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,206,1,DEF,8260,Add,HP,90800,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,207,1,DEF,8324,Add,HP,92435,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,208,1,DEF,8388,Add,HP,94070,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,209,1,DEF,8452,Add,HP,95705,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,210,1,DEF,8516,Add,HP,97340,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,211,1,DEF,8580,Add,HP,98975,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,212,1,DEF,8644,Add,HP,100610,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,213,1,DEF,8708,Add,HP,102245,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,214,1,DEF,8772,Add,HP,103880,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,215,1,DEF,8836,Add,HP,105515,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,216,1,DEF,8900,Add,HP,107150,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,217,1,DEF,8964,Add,HP,108785,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,218,1,DEF,9028,Add,HP,110420,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,219,1,DEF,9092,Add,HP,112055,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,220,1,DEF,9156,Add,HP,113690,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,221,1,DEF,9220,Add,HP,115325,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,222,1,DEF,9284,Add,HP,116960,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,223,1,DEF,9348,Add,HP,118595,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,224,1,DEF,9412,Add,HP,120230,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,225,1,DEF,9476,Add,HP,121865,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,226,1,DEF,9540,Add,HP,123500,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,227,1,DEF,9604,Add,HP,125135,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,228,1,DEF,9668,Add,HP,126770,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,229,1,DEF,9732,Add,HP,128405,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,230,1,DEF,9796,Add,HP,130040,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,231,1,DEF,9860,Add,HP,131675,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,232,1,DEF,9924,Add,HP,133310,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,233,1,DEF,9988,Add,HP,134945,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,234,1,DEF,10052,Add,HP,136580,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,235,1,DEF,10116,Add,HP,138215,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,236,1,DEF,10180,Add,HP,139850,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,237,1,DEF,10244,Add,HP,141485,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,238,1,DEF,10308,Add,HP,143120,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,239,1,DEF,10372,Add,HP,144755,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,240,1,DEF,10436,Add,HP,146390,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,241,1,DEF,10500,Add,HP,148025,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,242,1,DEF,10564,Add,HP,149660,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,243,1,DEF,10628,Add,HP,151295,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,244,1,DEF,10692,Add,HP,152930,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,245,1,DEF,10756,Add,HP,154565,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,246,1,DEF,10820,Add,HP,156200,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,247,1,DEF,10884,Add,HP,157835,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,248,1,DEF,10948,Add,HP,159470,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,249,1,DEF,11012,Add,HP,161105,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,250,1,DEF,11076,Add,HP,162740,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,251,1,DEF,11155,Add,HP,164506,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,252,1,DEF,11234,Add,HP,166272,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,253,1,DEF,11313,Add,HP,168038,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,254,1,DEF,11392,Add,HP,169804,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,255,1,DEF,11471,Add,HP,171570,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,256,1,DEF,11550,Add,HP,173336,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,257,1,DEF,11629,Add,HP,175102,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,258,1,DEF,11708,Add,HP,176868,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,259,1,DEF,11787,Add,HP,178634,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,260,1,DEF,11866,Add,HP,180400,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,261,1,DEF,11945,Add,HP,182166,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,262,1,DEF,12024,Add,HP,183932,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,263,1,DEF,12103,Add,HP,185698,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,264,1,DEF,12182,Add,HP,187464,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,265,1,DEF,12261,Add,HP,189230,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,266,1,DEF,12340,Add,HP,190996,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,267,1,DEF,12419,Add,HP,192762,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,268,1,DEF,12498,Add,HP,194528,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,269,1,DEF,12577,Add,HP,196294,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,270,1,DEF,12656,Add,HP,198060,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,271,1,DEF,12735,Add,HP,199826,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,272,1,DEF,12814,Add,HP,201592,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,273,1,DEF,12893,Add,HP,203358,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,274,1,DEF,12972,Add,HP,205124,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,275,1,DEF,13051,Add,HP,206890,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,276,1,DEF,13130,Add,HP,208656,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,277,1,DEF,13209,Add,HP,210422,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,278,1,DEF,13288,Add,HP,212188,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,279,1,DEF,13367,Add,HP,213954,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,280,1,DEF,13446,Add,HP,215720,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,281,1,DEF,13525,Add,HP,217486,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,282,1,DEF,13604,Add,HP,219252,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,283,1,DEF,13683,Add,HP,221018,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,284,1,DEF,13762,Add,HP,222784,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,285,1,DEF,13841,Add,HP,224550,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,286,1,DEF,13920,Add,HP,226316,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,287,1,DEF,13999,Add,HP,228082,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,288,1,DEF,14078,Add,HP,229848,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,289,1,DEF,14157,Add,HP,231614,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,290,1,DEF,14236,Add,HP,233380,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,291,1,DEF,14315,Add,HP,235146,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,292,1,DEF,14394,Add,HP,236912,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,293,1,DEF,14473,Add,HP,238678,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,294,1,DEF,14552,Add,HP,240444,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,295,1,DEF,14631,Add,HP,242210,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,296,1,DEF,14710,Add,HP,243976,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,297,1,DEF,14789,Add,HP,245742,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,298,1,DEF,14868,Add,HP,247508,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,299,1,DEF,14947,Add,HP,249274,Add,NONE,0,Add,,,,,,,, +10024,WorldBoss Vampiric Rune,300,1,DEF,15026,Add,HP,251040,Add,NONE,0,Add,,,,,,,, 10025,Adventure Stamina Rune,1,1,HP,724,Add,HIT,249,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,2,,HP,914,Add,HIT,306,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,3,,HP,1104,Add,HIT,363,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,4,,HP,1294,Add,HIT,420,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,5,,HP,1484,Add,HIT,477,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,6,,HP,1674,Add,HIT,534,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,7,,HP,1864,Add,HIT,591,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,8,,HP,2054,Add,HIT,648,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,9,,HP,2244,Add,HIT,705,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,10,,HP,2434,Add,HIT,762,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,11,,HP,2624,Add,HIT,819,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,12,,HP,2814,Add,HIT,876,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,13,,HP,3004,Add,HIT,933,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,14,,HP,3194,Add,HIT,990,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,15,,HP,3384,Add,HIT,1047,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,16,,HP,3574,Add,HIT,1104,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,17,,HP,3764,Add,HIT,1161,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,18,,HP,3954,Add,HIT,1218,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,19,,HP,4144,Add,HIT,1275,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,20,,HP,4334,Add,HIT,1332,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,21,,HP,4524,Add,HIT,1389,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,22,,HP,4714,Add,HIT,1446,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,23,,HP,4904,Add,HIT,1503,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,24,,HP,5094,Add,HIT,1560,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,25,,HP,5284,Add,HIT,1617,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,26,,HP,5474,Add,HIT,1674,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,27,,HP,5664,Add,HIT,1731,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,28,,HP,5854,Add,HIT,1788,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,29,,HP,6044,Add,HIT,1845,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,30,,HP,6234,Add,HIT,1902,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,31,,HP,6424,Add,HIT,1959,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,32,,HP,6614,Add,HIT,2016,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,33,,HP,6804,Add,HIT,2073,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,34,,HP,6994,Add,HIT,2130,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,35,,HP,7184,Add,HIT,2187,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,36,,HP,7374,Add,HIT,2244,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,37,,HP,7564,Add,HIT,2301,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,38,,HP,7754,Add,HIT,2358,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,39,,HP,7944,Add,HIT,2415,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,40,,HP,8134,Add,HIT,2472,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,41,,HP,8324,Add,HIT,2529,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,42,,HP,8514,Add,HIT,2586,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,43,,HP,8704,Add,HIT,2643,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,44,,HP,8894,Add,HIT,2700,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,45,,HP,9084,Add,HIT,2757,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,46,,HP,9274,Add,HIT,2814,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,47,,HP,9464,Add,HIT,2871,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,48,,HP,9654,Add,HIT,2928,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,49,,HP,9844,Add,HIT,2985,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,50,,HP,10034,Add,HIT,3042,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,51,,HP,10235,Add,HIT,3132,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,52,,HP,10436,Add,HIT,3222,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,53,,HP,10637,Add,HIT,3312,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,54,,HP,10838,Add,HIT,3402,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,55,,HP,11039,Add,HIT,3492,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,56,,HP,11240,Add,HIT,3582,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,57,,HP,11441,Add,HIT,3672,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,58,,HP,11642,Add,HIT,3762,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,59,,HP,11843,Add,HIT,3852,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,60,,HP,12044,Add,HIT,3942,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,61,,HP,12245,Add,HIT,4032,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,62,,HP,12446,Add,HIT,4122,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,63,,HP,12647,Add,HIT,4212,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,64,,HP,12848,Add,HIT,4302,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,65,,HP,13049,Add,HIT,4392,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,66,,HP,13250,Add,HIT,4482,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,67,,HP,13451,Add,HIT,4572,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,68,,HP,13652,Add,HIT,4662,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,69,,HP,13853,Add,HIT,4752,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,70,,HP,14054,Add,HIT,4842,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,71,,HP,14255,Add,HIT,4932,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,72,,HP,14456,Add,HIT,5022,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,73,,HP,14657,Add,HIT,5112,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,74,,HP,14858,Add,HIT,5202,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,75,,HP,15059,Add,HIT,5292,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,76,,HP,15260,Add,HIT,5382,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,77,,HP,15461,Add,HIT,5472,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,78,,HP,15662,Add,HIT,5562,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,79,,HP,15863,Add,HIT,5652,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,80,,HP,16064,Add,HIT,5742,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,81,,HP,16265,Add,HIT,5832,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,82,,HP,16466,Add,HIT,5922,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,83,,HP,16667,Add,HIT,6012,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,84,,HP,16868,Add,HIT,6102,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,85,,HP,17069,Add,HIT,6192,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,86,,HP,17270,Add,HIT,6282,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,87,,HP,17471,Add,HIT,6372,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,88,,HP,17672,Add,HIT,6462,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,89,,HP,17873,Add,HIT,6552,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,90,,HP,18074,Add,HIT,6642,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,91,,HP,18275,Add,HIT,6732,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,92,,HP,18476,Add,HIT,6822,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,93,,HP,18677,Add,HIT,6912,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,94,,HP,18878,Add,HIT,7002,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,95,,HP,19079,Add,HIT,7092,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,96,,HP,19280,Add,HIT,7182,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,97,,HP,19481,Add,HIT,7272,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,98,,HP,19682,Add,HIT,7362,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,99,,HP,19883,Add,HIT,7452,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,100,,HP,20084,Add,HIT,7542,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,101,,HP,20339,Add,HIT,7653,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,102,,HP,20594,Add,HIT,7764,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,103,,HP,20849,Add,HIT,7875,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,104,,HP,21104,Add,HIT,7986,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,105,,HP,21359,Add,HIT,8097,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,106,,HP,21614,Add,HIT,8208,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,107,,HP,21869,Add,HIT,8319,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,108,,HP,22124,Add,HIT,8430,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,109,,HP,22379,Add,HIT,8541,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,110,,HP,22634,Add,HIT,8652,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,111,,HP,22889,Add,HIT,8763,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,112,,HP,23144,Add,HIT,8874,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,113,,HP,23399,Add,HIT,8985,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,114,,HP,23654,Add,HIT,9096,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,115,,HP,23909,Add,HIT,9207,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,116,,HP,24164,Add,HIT,9318,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,117,,HP,24419,Add,HIT,9429,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,118,,HP,24674,Add,HIT,9540,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,119,,HP,24929,Add,HIT,9651,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,120,,HP,25184,Add,HIT,9762,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,121,,HP,25439,Add,HIT,9873,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,122,,HP,25694,Add,HIT,9984,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,123,,HP,25949,Add,HIT,10095,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,124,,HP,26204,Add,HIT,10206,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,125,,HP,26459,Add,HIT,10317,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,126,,HP,26714,Add,HIT,10428,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,127,,HP,26969,Add,HIT,10539,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,128,,HP,27224,Add,HIT,10650,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,129,,HP,27479,Add,HIT,10761,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,130,,HP,27734,Add,HIT,10872,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,131,,HP,27989,Add,HIT,10983,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,132,,HP,28244,Add,HIT,11094,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,133,,HP,28499,Add,HIT,11205,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,134,,HP,28754,Add,HIT,11316,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,135,,HP,29009,Add,HIT,11427,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,136,,HP,29264,Add,HIT,11538,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,137,,HP,29519,Add,HIT,11649,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,138,,HP,29774,Add,HIT,11760,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,139,,HP,30029,Add,HIT,11871,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,140,,HP,30284,Add,HIT,11982,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,141,,HP,30539,Add,HIT,12093,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,142,,HP,30794,Add,HIT,12204,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,143,,HP,31049,Add,HIT,12315,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,144,,HP,31304,Add,HIT,12426,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,145,,HP,31559,Add,HIT,12537,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,146,,HP,31814,Add,HIT,12648,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,147,,HP,32069,Add,HIT,12759,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,148,,HP,32324,Add,HIT,12870,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,149,,HP,32579,Add,HIT,12981,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,150,,HP,32834,Add,HIT,13092,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,151,,HP,34196,Add,HIT,13227,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,152,,HP,35558,Add,HIT,13362,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,153,,HP,36920,Add,HIT,13497,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,154,,HP,38282,Add,HIT,13632,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,155,,HP,39644,Add,HIT,13767,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,156,,HP,41006,Add,HIT,13902,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,157,,HP,42368,Add,HIT,14037,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,158,,HP,43730,Add,HIT,14172,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,159,,HP,45092,Add,HIT,14307,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,160,,HP,46454,Add,HIT,14442,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,161,,HP,47816,Add,HIT,14577,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,162,,HP,49178,Add,HIT,14712,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,163,,HP,50540,Add,HIT,14847,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,164,,HP,51902,Add,HIT,14982,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,165,,HP,53264,Add,HIT,15117,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,166,,HP,54626,Add,HIT,15252,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,167,,HP,55988,Add,HIT,15387,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,168,,HP,57350,Add,HIT,15522,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,169,,HP,58712,Add,HIT,15657,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,170,,HP,60074,Add,HIT,15792,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,171,,HP,61436,Add,HIT,15927,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,172,,HP,62798,Add,HIT,16062,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,173,,HP,64160,Add,HIT,16197,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,174,,HP,65522,Add,HIT,16332,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,175,,HP,66884,Add,HIT,16467,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,176,,HP,68246,Add,HIT,16602,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,177,,HP,69608,Add,HIT,16737,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,178,,HP,70970,Add,HIT,16872,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,179,,HP,72332,Add,HIT,17007,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,180,,HP,73694,Add,HIT,17142,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,181,,HP,75056,Add,HIT,17277,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,182,,HP,76418,Add,HIT,17412,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,183,,HP,77780,Add,HIT,17547,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,184,,HP,79142,Add,HIT,17682,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,185,,HP,80504,Add,HIT,17817,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,186,,HP,81866,Add,HIT,17952,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,187,,HP,83228,Add,HIT,18087,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,188,,HP,84590,Add,HIT,18222,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,189,,HP,85952,Add,HIT,18357,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,190,,HP,87314,Add,HIT,18492,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,191,,HP,88676,Add,HIT,18627,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,192,,HP,90038,Add,HIT,18762,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,193,,HP,91400,Add,HIT,18897,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,194,,HP,92762,Add,HIT,19032,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,195,,HP,94124,Add,HIT,19167,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,196,,HP,95486,Add,HIT,19302,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,197,,HP,96848,Add,HIT,19437,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,198,,HP,98210,Add,HIT,19572,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,199,,HP,99572,Add,HIT,19707,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,200,,HP,100934,Add,HIT,19842,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,201,,HP,102978,Add,HIT,19984,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,202,,HP,105022,Add,HIT,20126,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,203,,HP,107066,Add,HIT,20268,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,204,,HP,109110,Add,HIT,20410,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,205,,HP,111154,Add,HIT,20552,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,206,,HP,113198,Add,HIT,20694,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,207,,HP,115242,Add,HIT,20836,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,208,,HP,117286,Add,HIT,20978,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,209,,HP,119330,Add,HIT,21120,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,210,,HP,121374,Add,HIT,21262,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,211,,HP,123418,Add,HIT,21404,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,212,,HP,125462,Add,HIT,21546,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,213,,HP,127506,Add,HIT,21688,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,214,,HP,129550,Add,HIT,21830,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,215,,HP,131594,Add,HIT,21972,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,216,,HP,133638,Add,HIT,22114,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,217,,HP,135682,Add,HIT,22256,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,218,,HP,137726,Add,HIT,22398,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,219,,HP,139770,Add,HIT,22540,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,220,,HP,141814,Add,HIT,22682,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,221,,HP,143858,Add,HIT,22824,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,222,,HP,145902,Add,HIT,22966,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,223,,HP,147946,Add,HIT,23108,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,224,,HP,149990,Add,HIT,23250,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,225,,HP,152034,Add,HIT,23392,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,226,,HP,154078,Add,HIT,23534,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,227,,HP,156122,Add,HIT,23676,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,228,,HP,158166,Add,HIT,23818,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,229,,HP,160210,Add,HIT,23960,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,230,,HP,162254,Add,HIT,24102,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,231,,HP,164298,Add,HIT,24244,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,232,,HP,166342,Add,HIT,24386,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,233,,HP,168386,Add,HIT,24528,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,234,,HP,170430,Add,HIT,24670,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,235,,HP,172474,Add,HIT,24812,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,236,,HP,174518,Add,HIT,24954,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,237,,HP,176562,Add,HIT,25096,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,238,,HP,178606,Add,HIT,25238,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,239,,HP,180650,Add,HIT,25380,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,240,,HP,182694,Add,HIT,25522,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,241,,HP,184738,Add,HIT,25664,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,242,,HP,186782,Add,HIT,25806,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,243,,HP,188826,Add,HIT,25948,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,244,,HP,190870,Add,HIT,26090,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,245,,HP,192914,Add,HIT,26232,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,246,,HP,194958,Add,HIT,26374,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,247,,HP,197002,Add,HIT,26516,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,248,,HP,199046,Add,HIT,26658,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,249,,HP,201090,Add,HIT,26800,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,250,,HP,203134,Add,HIT,26942,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,251,,HP,205342,Add,HIT,27095,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,252,,HP,207550,Add,HIT,27248,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,253,,HP,209758,Add,HIT,27401,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,254,,HP,211966,Add,HIT,27554,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,255,,HP,214174,Add,HIT,27707,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,256,,HP,216382,Add,HIT,27860,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,257,,HP,218590,Add,HIT,28013,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,258,,HP,220798,Add,HIT,28166,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,259,,HP,223006,Add,HIT,28319,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,260,,HP,225214,Add,HIT,28472,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,261,,HP,227422,Add,HIT,28625,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,262,,HP,229630,Add,HIT,28778,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,263,,HP,231838,Add,HIT,28931,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,264,,HP,234046,Add,HIT,29084,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,265,,HP,236254,Add,HIT,29237,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,266,,HP,238462,Add,HIT,29390,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,267,,HP,240670,Add,HIT,29543,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,268,,HP,242878,Add,HIT,29696,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,269,,HP,245086,Add,HIT,29849,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,270,,HP,247294,Add,HIT,30002,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,271,,HP,249502,Add,HIT,30155,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,272,,HP,251710,Add,HIT,30308,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,273,,HP,253918,Add,HIT,30461,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,274,,HP,256126,Add,HIT,30614,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,275,,HP,258334,Add,HIT,30767,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,276,,HP,260542,Add,HIT,30920,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,277,,HP,262750,Add,HIT,31073,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,278,,HP,264958,Add,HIT,31226,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,279,,HP,267166,Add,HIT,31379,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,280,,HP,269374,Add,HIT,31532,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,281,,HP,271582,Add,HIT,31685,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,282,,HP,273790,Add,HIT,31838,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,283,,HP,275998,Add,HIT,31991,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,284,,HP,278206,Add,HIT,32144,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,285,,HP,280414,Add,HIT,32297,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,286,,HP,282622,Add,HIT,32450,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,287,,HP,284830,Add,HIT,32603,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,288,,HP,287038,Add,HIT,32756,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,289,,HP,289246,Add,HIT,32909,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,290,,HP,291454,Add,HIT,33062,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,291,,HP,293662,Add,HIT,33215,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,292,,HP,295870,Add,HIT,33368,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,293,,HP,298078,Add,HIT,33521,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,294,,HP,300286,Add,HIT,33674,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,295,,HP,302494,Add,HIT,33827,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,296,,HP,304702,Add,HIT,33980,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,297,,HP,306910,Add,HIT,34133,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,298,,HP,309118,Add,HIT,34286,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,299,,HP,311326,Add,HIT,34439,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,300,,HP,313534,Add,HIT,34592,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,2,1,HP,914,Add,HIT,306,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,3,1,HP,1104,Add,HIT,363,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,4,1,HP,1294,Add,HIT,420,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,5,1,HP,1484,Add,HIT,477,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,6,1,HP,1674,Add,HIT,534,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,7,1,HP,1864,Add,HIT,591,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,8,1,HP,2054,Add,HIT,648,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,9,1,HP,2244,Add,HIT,705,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,10,1,HP,2434,Add,HIT,762,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,11,1,HP,2624,Add,HIT,819,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,12,1,HP,2814,Add,HIT,876,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,13,1,HP,3004,Add,HIT,933,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,14,1,HP,3194,Add,HIT,990,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,15,1,HP,3384,Add,HIT,1047,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,16,1,HP,3574,Add,HIT,1104,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,17,1,HP,3764,Add,HIT,1161,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,18,1,HP,3954,Add,HIT,1218,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,19,1,HP,4144,Add,HIT,1275,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,20,1,HP,4334,Add,HIT,1332,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,21,1,HP,4524,Add,HIT,1389,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,22,1,HP,4714,Add,HIT,1446,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,23,1,HP,4904,Add,HIT,1503,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,24,1,HP,5094,Add,HIT,1560,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,25,1,HP,5284,Add,HIT,1617,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,26,1,HP,5474,Add,HIT,1674,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,27,1,HP,5664,Add,HIT,1731,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,28,1,HP,5854,Add,HIT,1788,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,29,1,HP,6044,Add,HIT,1845,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,30,1,HP,6234,Add,HIT,1902,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,31,1,HP,6424,Add,HIT,1959,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,32,1,HP,6614,Add,HIT,2016,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,33,1,HP,6804,Add,HIT,2073,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,34,1,HP,6994,Add,HIT,2130,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,35,1,HP,7184,Add,HIT,2187,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,36,1,HP,7374,Add,HIT,2244,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,37,1,HP,7564,Add,HIT,2301,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,38,1,HP,7754,Add,HIT,2358,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,39,1,HP,7944,Add,HIT,2415,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,40,1,HP,8134,Add,HIT,2472,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,41,1,HP,8324,Add,HIT,2529,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,42,1,HP,8514,Add,HIT,2586,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,43,1,HP,8704,Add,HIT,2643,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,44,1,HP,8894,Add,HIT,2700,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,45,1,HP,9084,Add,HIT,2757,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,46,1,HP,9274,Add,HIT,2814,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,47,1,HP,9464,Add,HIT,2871,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,48,1,HP,9654,Add,HIT,2928,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,49,1,HP,9844,Add,HIT,2985,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,50,1,HP,10034,Add,HIT,3042,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,51,1,HP,10235,Add,HIT,3132,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,52,1,HP,10436,Add,HIT,3222,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,53,1,HP,10637,Add,HIT,3312,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,54,1,HP,10838,Add,HIT,3402,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,55,1,HP,11039,Add,HIT,3492,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,56,1,HP,11240,Add,HIT,3582,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,57,1,HP,11441,Add,HIT,3672,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,58,1,HP,11642,Add,HIT,3762,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,59,1,HP,11843,Add,HIT,3852,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,60,1,HP,12044,Add,HIT,3942,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,61,1,HP,12245,Add,HIT,4032,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,62,1,HP,12446,Add,HIT,4122,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,63,1,HP,12647,Add,HIT,4212,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,64,1,HP,12848,Add,HIT,4302,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,65,1,HP,13049,Add,HIT,4392,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,66,1,HP,13250,Add,HIT,4482,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,67,1,HP,13451,Add,HIT,4572,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,68,1,HP,13652,Add,HIT,4662,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,69,1,HP,13853,Add,HIT,4752,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,70,1,HP,14054,Add,HIT,4842,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,71,1,HP,14255,Add,HIT,4932,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,72,1,HP,14456,Add,HIT,5022,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,73,1,HP,14657,Add,HIT,5112,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,74,1,HP,14858,Add,HIT,5202,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,75,1,HP,15059,Add,HIT,5292,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,76,1,HP,15260,Add,HIT,5382,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,77,1,HP,15461,Add,HIT,5472,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,78,1,HP,15662,Add,HIT,5562,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,79,1,HP,15863,Add,HIT,5652,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,80,1,HP,16064,Add,HIT,5742,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,81,1,HP,16265,Add,HIT,5832,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,82,1,HP,16466,Add,HIT,5922,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,83,1,HP,16667,Add,HIT,6012,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,84,1,HP,16868,Add,HIT,6102,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,85,1,HP,17069,Add,HIT,6192,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,86,1,HP,17270,Add,HIT,6282,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,87,1,HP,17471,Add,HIT,6372,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,88,1,HP,17672,Add,HIT,6462,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,89,1,HP,17873,Add,HIT,6552,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,90,1,HP,18074,Add,HIT,6642,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,91,1,HP,18275,Add,HIT,6732,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,92,1,HP,18476,Add,HIT,6822,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,93,1,HP,18677,Add,HIT,6912,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,94,1,HP,18878,Add,HIT,7002,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,95,1,HP,19079,Add,HIT,7092,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,96,1,HP,19280,Add,HIT,7182,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,97,1,HP,19481,Add,HIT,7272,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,98,1,HP,19682,Add,HIT,7362,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,99,1,HP,19883,Add,HIT,7452,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,100,1,HP,20084,Add,HIT,7542,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,101,1,HP,20339,Add,HIT,7653,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,102,1,HP,20594,Add,HIT,7764,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,103,1,HP,20849,Add,HIT,7875,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,104,1,HP,21104,Add,HIT,7986,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,105,1,HP,21359,Add,HIT,8097,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,106,1,HP,21614,Add,HIT,8208,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,107,1,HP,21869,Add,HIT,8319,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,108,1,HP,22124,Add,HIT,8430,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,109,1,HP,22379,Add,HIT,8541,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,110,1,HP,22634,Add,HIT,8652,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,111,1,HP,22889,Add,HIT,8763,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,112,1,HP,23144,Add,HIT,8874,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,113,1,HP,23399,Add,HIT,8985,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,114,1,HP,23654,Add,HIT,9096,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,115,1,HP,23909,Add,HIT,9207,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,116,1,HP,24164,Add,HIT,9318,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,117,1,HP,24419,Add,HIT,9429,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,118,1,HP,24674,Add,HIT,9540,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,119,1,HP,24929,Add,HIT,9651,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,120,1,HP,25184,Add,HIT,9762,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,121,1,HP,25439,Add,HIT,9873,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,122,1,HP,25694,Add,HIT,9984,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,123,1,HP,25949,Add,HIT,10095,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,124,1,HP,26204,Add,HIT,10206,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,125,1,HP,26459,Add,HIT,10317,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,126,1,HP,26714,Add,HIT,10428,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,127,1,HP,26969,Add,HIT,10539,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,128,1,HP,27224,Add,HIT,10650,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,129,1,HP,27479,Add,HIT,10761,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,130,1,HP,27734,Add,HIT,10872,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,131,1,HP,27989,Add,HIT,10983,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,132,1,HP,28244,Add,HIT,11094,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,133,1,HP,28499,Add,HIT,11205,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,134,1,HP,28754,Add,HIT,11316,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,135,1,HP,29009,Add,HIT,11427,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,136,1,HP,29264,Add,HIT,11538,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,137,1,HP,29519,Add,HIT,11649,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,138,1,HP,29774,Add,HIT,11760,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,139,1,HP,30029,Add,HIT,11871,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,140,1,HP,30284,Add,HIT,11982,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,141,1,HP,30539,Add,HIT,12093,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,142,1,HP,30794,Add,HIT,12204,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,143,1,HP,31049,Add,HIT,12315,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,144,1,HP,31304,Add,HIT,12426,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,145,1,HP,31559,Add,HIT,12537,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,146,1,HP,31814,Add,HIT,12648,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,147,1,HP,32069,Add,HIT,12759,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,148,1,HP,32324,Add,HIT,12870,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,149,1,HP,32579,Add,HIT,12981,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,150,1,HP,32834,Add,HIT,13092,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,151,1,HP,34196,Add,HIT,13227,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,152,1,HP,35558,Add,HIT,13362,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,153,1,HP,36920,Add,HIT,13497,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,154,1,HP,38282,Add,HIT,13632,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,155,1,HP,39644,Add,HIT,13767,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,156,1,HP,41006,Add,HIT,13902,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,157,1,HP,42368,Add,HIT,14037,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,158,1,HP,43730,Add,HIT,14172,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,159,1,HP,45092,Add,HIT,14307,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,160,1,HP,46454,Add,HIT,14442,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,161,1,HP,47816,Add,HIT,14577,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,162,1,HP,49178,Add,HIT,14712,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,163,1,HP,50540,Add,HIT,14847,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,164,1,HP,51902,Add,HIT,14982,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,165,1,HP,53264,Add,HIT,15117,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,166,1,HP,54626,Add,HIT,15252,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,167,1,HP,55988,Add,HIT,15387,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,168,1,HP,57350,Add,HIT,15522,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,169,1,HP,58712,Add,HIT,15657,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,170,1,HP,60074,Add,HIT,15792,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,171,1,HP,61436,Add,HIT,15927,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,172,1,HP,62798,Add,HIT,16062,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,173,1,HP,64160,Add,HIT,16197,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,174,1,HP,65522,Add,HIT,16332,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,175,1,HP,66884,Add,HIT,16467,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,176,1,HP,68246,Add,HIT,16602,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,177,1,HP,69608,Add,HIT,16737,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,178,1,HP,70970,Add,HIT,16872,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,179,1,HP,72332,Add,HIT,17007,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,180,1,HP,73694,Add,HIT,17142,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,181,1,HP,75056,Add,HIT,17277,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,182,1,HP,76418,Add,HIT,17412,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,183,1,HP,77780,Add,HIT,17547,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,184,1,HP,79142,Add,HIT,17682,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,185,1,HP,80504,Add,HIT,17817,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,186,1,HP,81866,Add,HIT,17952,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,187,1,HP,83228,Add,HIT,18087,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,188,1,HP,84590,Add,HIT,18222,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,189,1,HP,85952,Add,HIT,18357,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,190,1,HP,87314,Add,HIT,18492,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,191,1,HP,88676,Add,HIT,18627,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,192,1,HP,90038,Add,HIT,18762,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,193,1,HP,91400,Add,HIT,18897,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,194,1,HP,92762,Add,HIT,19032,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,195,1,HP,94124,Add,HIT,19167,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,196,1,HP,95486,Add,HIT,19302,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,197,1,HP,96848,Add,HIT,19437,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,198,1,HP,98210,Add,HIT,19572,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,199,1,HP,99572,Add,HIT,19707,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,200,1,HP,100934,Add,HIT,19842,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,201,1,HP,102978,Add,HIT,19984,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,202,1,HP,105022,Add,HIT,20126,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,203,1,HP,107066,Add,HIT,20268,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,204,1,HP,109110,Add,HIT,20410,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,205,1,HP,111154,Add,HIT,20552,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,206,1,HP,113198,Add,HIT,20694,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,207,1,HP,115242,Add,HIT,20836,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,208,1,HP,117286,Add,HIT,20978,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,209,1,HP,119330,Add,HIT,21120,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,210,1,HP,121374,Add,HIT,21262,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,211,1,HP,123418,Add,HIT,21404,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,212,1,HP,125462,Add,HIT,21546,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,213,1,HP,127506,Add,HIT,21688,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,214,1,HP,129550,Add,HIT,21830,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,215,1,HP,131594,Add,HIT,21972,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,216,1,HP,133638,Add,HIT,22114,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,217,1,HP,135682,Add,HIT,22256,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,218,1,HP,137726,Add,HIT,22398,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,219,1,HP,139770,Add,HIT,22540,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,220,1,HP,141814,Add,HIT,22682,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,221,1,HP,143858,Add,HIT,22824,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,222,1,HP,145902,Add,HIT,22966,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,223,1,HP,147946,Add,HIT,23108,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,224,1,HP,149990,Add,HIT,23250,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,225,1,HP,152034,Add,HIT,23392,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,226,1,HP,154078,Add,HIT,23534,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,227,1,HP,156122,Add,HIT,23676,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,228,1,HP,158166,Add,HIT,23818,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,229,1,HP,160210,Add,HIT,23960,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,230,1,HP,162254,Add,HIT,24102,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,231,1,HP,164298,Add,HIT,24244,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,232,1,HP,166342,Add,HIT,24386,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,233,1,HP,168386,Add,HIT,24528,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,234,1,HP,170430,Add,HIT,24670,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,235,1,HP,172474,Add,HIT,24812,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,236,1,HP,174518,Add,HIT,24954,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,237,1,HP,176562,Add,HIT,25096,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,238,1,HP,178606,Add,HIT,25238,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,239,1,HP,180650,Add,HIT,25380,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,240,1,HP,182694,Add,HIT,25522,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,241,1,HP,184738,Add,HIT,25664,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,242,1,HP,186782,Add,HIT,25806,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,243,1,HP,188826,Add,HIT,25948,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,244,1,HP,190870,Add,HIT,26090,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,245,1,HP,192914,Add,HIT,26232,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,246,1,HP,194958,Add,HIT,26374,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,247,1,HP,197002,Add,HIT,26516,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,248,1,HP,199046,Add,HIT,26658,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,249,1,HP,201090,Add,HIT,26800,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,250,1,HP,203134,Add,HIT,26942,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,251,1,HP,205342,Add,HIT,27095,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,252,1,HP,207550,Add,HIT,27248,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,253,1,HP,209758,Add,HIT,27401,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,254,1,HP,211966,Add,HIT,27554,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,255,1,HP,214174,Add,HIT,27707,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,256,1,HP,216382,Add,HIT,27860,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,257,1,HP,218590,Add,HIT,28013,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,258,1,HP,220798,Add,HIT,28166,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,259,1,HP,223006,Add,HIT,28319,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,260,1,HP,225214,Add,HIT,28472,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,261,1,HP,227422,Add,HIT,28625,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,262,1,HP,229630,Add,HIT,28778,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,263,1,HP,231838,Add,HIT,28931,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,264,1,HP,234046,Add,HIT,29084,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,265,1,HP,236254,Add,HIT,29237,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,266,1,HP,238462,Add,HIT,29390,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,267,1,HP,240670,Add,HIT,29543,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,268,1,HP,242878,Add,HIT,29696,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,269,1,HP,245086,Add,HIT,29849,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,270,1,HP,247294,Add,HIT,30002,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,271,1,HP,249502,Add,HIT,30155,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,272,1,HP,251710,Add,HIT,30308,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,273,1,HP,253918,Add,HIT,30461,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,274,1,HP,256126,Add,HIT,30614,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,275,1,HP,258334,Add,HIT,30767,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,276,1,HP,260542,Add,HIT,30920,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,277,1,HP,262750,Add,HIT,31073,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,278,1,HP,264958,Add,HIT,31226,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,279,1,HP,267166,Add,HIT,31379,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,280,1,HP,269374,Add,HIT,31532,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,281,1,HP,271582,Add,HIT,31685,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,282,1,HP,273790,Add,HIT,31838,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,283,1,HP,275998,Add,HIT,31991,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,284,1,HP,278206,Add,HIT,32144,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,285,1,HP,280414,Add,HIT,32297,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,286,1,HP,282622,Add,HIT,32450,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,287,1,HP,284830,Add,HIT,32603,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,288,1,HP,287038,Add,HIT,32756,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,289,1,HP,289246,Add,HIT,32909,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,290,1,HP,291454,Add,HIT,33062,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,291,1,HP,293662,Add,HIT,33215,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,292,1,HP,295870,Add,HIT,33368,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,293,1,HP,298078,Add,HIT,33521,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,294,1,HP,300286,Add,HIT,33674,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,295,1,HP,302494,Add,HIT,33827,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,296,1,HP,304702,Add,HIT,33980,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,297,1,HP,306910,Add,HIT,34133,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,298,1,HP,309118,Add,HIT,34286,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,299,1,HP,311326,Add,HIT,34439,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,300,1,HP,313534,Add,HIT,34592,Add,NONE,0,Add,,,,,,,, 10026,Arena Stamina Rune,1,1,HP,724,Add,HIT,249,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,2,,HP,914,Add,HIT,306,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,3,,HP,1104,Add,HIT,363,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,4,,HP,1294,Add,HIT,420,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,5,,HP,1484,Add,HIT,477,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,6,,HP,1674,Add,HIT,534,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,7,,HP,1864,Add,HIT,591,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,8,,HP,2054,Add,HIT,648,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,9,,HP,2244,Add,HIT,705,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,10,,HP,2434,Add,HIT,762,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,11,,HP,2624,Add,HIT,819,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,12,,HP,2814,Add,HIT,876,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,13,,HP,3004,Add,HIT,933,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,14,,HP,3194,Add,HIT,990,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,15,,HP,3384,Add,HIT,1047,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,16,,HP,3574,Add,HIT,1104,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,17,,HP,3764,Add,HIT,1161,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,18,,HP,3954,Add,HIT,1218,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,19,,HP,4144,Add,HIT,1275,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,20,,HP,4334,Add,HIT,1332,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,21,,HP,4524,Add,HIT,1389,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,22,,HP,4714,Add,HIT,1446,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,23,,HP,4904,Add,HIT,1503,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,24,,HP,5094,Add,HIT,1560,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,25,,HP,5284,Add,HIT,1617,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,26,,HP,5474,Add,HIT,1674,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,27,,HP,5664,Add,HIT,1731,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,28,,HP,5854,Add,HIT,1788,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,29,,HP,6044,Add,HIT,1845,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,30,,HP,6234,Add,HIT,1902,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,31,,HP,6424,Add,HIT,1959,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,32,,HP,6614,Add,HIT,2016,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,33,,HP,6804,Add,HIT,2073,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,34,,HP,6994,Add,HIT,2130,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,35,,HP,7184,Add,HIT,2187,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,36,,HP,7374,Add,HIT,2244,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,37,,HP,7564,Add,HIT,2301,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,38,,HP,7754,Add,HIT,2358,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,39,,HP,7944,Add,HIT,2415,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,40,,HP,8134,Add,HIT,2472,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,41,,HP,8324,Add,HIT,2529,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,42,,HP,8514,Add,HIT,2586,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,43,,HP,8704,Add,HIT,2643,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,44,,HP,8894,Add,HIT,2700,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,45,,HP,9084,Add,HIT,2757,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,46,,HP,9274,Add,HIT,2814,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,47,,HP,9464,Add,HIT,2871,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,48,,HP,9654,Add,HIT,2928,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,49,,HP,9844,Add,HIT,2985,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,50,,HP,10034,Add,HIT,3042,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,51,,HP,10235,Add,HIT,3132,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,52,,HP,10436,Add,HIT,3222,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,53,,HP,10637,Add,HIT,3312,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,54,,HP,10838,Add,HIT,3402,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,55,,HP,11039,Add,HIT,3492,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,56,,HP,11240,Add,HIT,3582,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,57,,HP,11441,Add,HIT,3672,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,58,,HP,11642,Add,HIT,3762,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,59,,HP,11843,Add,HIT,3852,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,60,,HP,12044,Add,HIT,3942,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,61,,HP,12245,Add,HIT,4032,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,62,,HP,12446,Add,HIT,4122,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,63,,HP,12647,Add,HIT,4212,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,64,,HP,12848,Add,HIT,4302,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,65,,HP,13049,Add,HIT,4392,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,66,,HP,13250,Add,HIT,4482,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,67,,HP,13451,Add,HIT,4572,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,68,,HP,13652,Add,HIT,4662,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,69,,HP,13853,Add,HIT,4752,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,70,,HP,14054,Add,HIT,4842,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,71,,HP,14255,Add,HIT,4932,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,72,,HP,14456,Add,HIT,5022,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,73,,HP,14657,Add,HIT,5112,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,74,,HP,14858,Add,HIT,5202,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,75,,HP,15059,Add,HIT,5292,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,76,,HP,15260,Add,HIT,5382,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,77,,HP,15461,Add,HIT,5472,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,78,,HP,15662,Add,HIT,5562,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,79,,HP,15863,Add,HIT,5652,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,80,,HP,16064,Add,HIT,5742,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,81,,HP,16265,Add,HIT,5832,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,82,,HP,16466,Add,HIT,5922,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,83,,HP,16667,Add,HIT,6012,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,84,,HP,16868,Add,HIT,6102,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,85,,HP,17069,Add,HIT,6192,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,86,,HP,17270,Add,HIT,6282,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,87,,HP,17471,Add,HIT,6372,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,88,,HP,17672,Add,HIT,6462,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,89,,HP,17873,Add,HIT,6552,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,90,,HP,18074,Add,HIT,6642,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,91,,HP,18275,Add,HIT,6732,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,92,,HP,18476,Add,HIT,6822,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,93,,HP,18677,Add,HIT,6912,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,94,,HP,18878,Add,HIT,7002,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,95,,HP,19079,Add,HIT,7092,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,96,,HP,19280,Add,HIT,7182,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,97,,HP,19481,Add,HIT,7272,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,98,,HP,19682,Add,HIT,7362,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,99,,HP,19883,Add,HIT,7452,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,100,,HP,20084,Add,HIT,7542,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,101,,HP,20339,Add,HIT,7653,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,102,,HP,20594,Add,HIT,7764,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,103,,HP,20849,Add,HIT,7875,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,104,,HP,21104,Add,HIT,7986,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,105,,HP,21359,Add,HIT,8097,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,106,,HP,21614,Add,HIT,8208,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,107,,HP,21869,Add,HIT,8319,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,108,,HP,22124,Add,HIT,8430,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,109,,HP,22379,Add,HIT,8541,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,110,,HP,22634,Add,HIT,8652,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,111,,HP,22889,Add,HIT,8763,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,112,,HP,23144,Add,HIT,8874,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,113,,HP,23399,Add,HIT,8985,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,114,,HP,23654,Add,HIT,9096,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,115,,HP,23909,Add,HIT,9207,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,116,,HP,24164,Add,HIT,9318,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,117,,HP,24419,Add,HIT,9429,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,118,,HP,24674,Add,HIT,9540,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,119,,HP,24929,Add,HIT,9651,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,120,,HP,25184,Add,HIT,9762,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,121,,HP,25439,Add,HIT,9873,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,122,,HP,25694,Add,HIT,9984,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,123,,HP,25949,Add,HIT,10095,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,124,,HP,26204,Add,HIT,10206,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,125,,HP,26459,Add,HIT,10317,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,126,,HP,26714,Add,HIT,10428,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,127,,HP,26969,Add,HIT,10539,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,128,,HP,27224,Add,HIT,10650,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,129,,HP,27479,Add,HIT,10761,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,130,,HP,27734,Add,HIT,10872,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,131,,HP,27989,Add,HIT,10983,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,132,,HP,28244,Add,HIT,11094,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,133,,HP,28499,Add,HIT,11205,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,134,,HP,28754,Add,HIT,11316,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,135,,HP,29009,Add,HIT,11427,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,136,,HP,29264,Add,HIT,11538,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,137,,HP,29519,Add,HIT,11649,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,138,,HP,29774,Add,HIT,11760,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,139,,HP,30029,Add,HIT,11871,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,140,,HP,30284,Add,HIT,11982,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,141,,HP,30539,Add,HIT,12093,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,142,,HP,30794,Add,HIT,12204,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,143,,HP,31049,Add,HIT,12315,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,144,,HP,31304,Add,HIT,12426,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,145,,HP,31559,Add,HIT,12537,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,146,,HP,31814,Add,HIT,12648,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,147,,HP,32069,Add,HIT,12759,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,148,,HP,32324,Add,HIT,12870,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,149,,HP,32579,Add,HIT,12981,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,150,,HP,32834,Add,HIT,13092,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,151,,HP,34196,Add,HIT,13227,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,152,,HP,35558,Add,HIT,13362,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,153,,HP,36920,Add,HIT,13497,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,154,,HP,38282,Add,HIT,13632,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,155,,HP,39644,Add,HIT,13767,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,156,,HP,41006,Add,HIT,13902,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,157,,HP,42368,Add,HIT,14037,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,158,,HP,43730,Add,HIT,14172,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,159,,HP,45092,Add,HIT,14307,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,160,,HP,46454,Add,HIT,14442,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,161,,HP,47816,Add,HIT,14577,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,162,,HP,49178,Add,HIT,14712,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,163,,HP,50540,Add,HIT,14847,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,164,,HP,51902,Add,HIT,14982,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,165,,HP,53264,Add,HIT,15117,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,166,,HP,54626,Add,HIT,15252,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,167,,HP,55988,Add,HIT,15387,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,168,,HP,57350,Add,HIT,15522,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,169,,HP,58712,Add,HIT,15657,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,170,,HP,60074,Add,HIT,15792,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,171,,HP,61436,Add,HIT,15927,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,172,,HP,62798,Add,HIT,16062,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,173,,HP,64160,Add,HIT,16197,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,174,,HP,65522,Add,HIT,16332,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,175,,HP,66884,Add,HIT,16467,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,176,,HP,68246,Add,HIT,16602,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,177,,HP,69608,Add,HIT,16737,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,178,,HP,70970,Add,HIT,16872,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,179,,HP,72332,Add,HIT,17007,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,180,,HP,73694,Add,HIT,17142,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,181,,HP,75056,Add,HIT,17277,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,182,,HP,76418,Add,HIT,17412,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,183,,HP,77780,Add,HIT,17547,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,184,,HP,79142,Add,HIT,17682,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,185,,HP,80504,Add,HIT,17817,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,186,,HP,81866,Add,HIT,17952,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,187,,HP,83228,Add,HIT,18087,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,188,,HP,84590,Add,HIT,18222,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,189,,HP,85952,Add,HIT,18357,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,190,,HP,87314,Add,HIT,18492,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,191,,HP,88676,Add,HIT,18627,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,192,,HP,90038,Add,HIT,18762,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,193,,HP,91400,Add,HIT,18897,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,194,,HP,92762,Add,HIT,19032,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,195,,HP,94124,Add,HIT,19167,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,196,,HP,95486,Add,HIT,19302,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,197,,HP,96848,Add,HIT,19437,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,198,,HP,98210,Add,HIT,19572,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,199,,HP,99572,Add,HIT,19707,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,200,,HP,100934,Add,HIT,19842,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,201,,HP,102978,Add,HIT,19984,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,202,,HP,105022,Add,HIT,20126,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,203,,HP,107066,Add,HIT,20268,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,204,,HP,109110,Add,HIT,20410,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,205,,HP,111154,Add,HIT,20552,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,206,,HP,113198,Add,HIT,20694,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,207,,HP,115242,Add,HIT,20836,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,208,,HP,117286,Add,HIT,20978,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,209,,HP,119330,Add,HIT,21120,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,210,,HP,121374,Add,HIT,21262,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,211,,HP,123418,Add,HIT,21404,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,212,,HP,125462,Add,HIT,21546,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,213,,HP,127506,Add,HIT,21688,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,214,,HP,129550,Add,HIT,21830,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,215,,HP,131594,Add,HIT,21972,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,216,,HP,133638,Add,HIT,22114,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,217,,HP,135682,Add,HIT,22256,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,218,,HP,137726,Add,HIT,22398,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,219,,HP,139770,Add,HIT,22540,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,220,,HP,141814,Add,HIT,22682,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,221,,HP,143858,Add,HIT,22824,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,222,,HP,145902,Add,HIT,22966,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,223,,HP,147946,Add,HIT,23108,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,224,,HP,149990,Add,HIT,23250,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,225,,HP,152034,Add,HIT,23392,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,226,,HP,154078,Add,HIT,23534,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,227,,HP,156122,Add,HIT,23676,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,228,,HP,158166,Add,HIT,23818,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,229,,HP,160210,Add,HIT,23960,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,230,,HP,162254,Add,HIT,24102,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,231,,HP,164298,Add,HIT,24244,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,232,,HP,166342,Add,HIT,24386,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,233,,HP,168386,Add,HIT,24528,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,234,,HP,170430,Add,HIT,24670,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,235,,HP,172474,Add,HIT,24812,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,236,,HP,174518,Add,HIT,24954,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,237,,HP,176562,Add,HIT,25096,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,238,,HP,178606,Add,HIT,25238,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,239,,HP,180650,Add,HIT,25380,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,240,,HP,182694,Add,HIT,25522,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,241,,HP,184738,Add,HIT,25664,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,242,,HP,186782,Add,HIT,25806,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,243,,HP,188826,Add,HIT,25948,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,244,,HP,190870,Add,HIT,26090,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,245,,HP,192914,Add,HIT,26232,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,246,,HP,194958,Add,HIT,26374,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,247,,HP,197002,Add,HIT,26516,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,248,,HP,199046,Add,HIT,26658,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,249,,HP,201090,Add,HIT,26800,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,250,,HP,203134,Add,HIT,26942,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,251,,HP,205342,Add,HIT,27095,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,252,,HP,207550,Add,HIT,27248,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,253,,HP,209758,Add,HIT,27401,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,254,,HP,211966,Add,HIT,27554,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,255,,HP,214174,Add,HIT,27707,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,256,,HP,216382,Add,HIT,27860,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,257,,HP,218590,Add,HIT,28013,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,258,,HP,220798,Add,HIT,28166,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,259,,HP,223006,Add,HIT,28319,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,260,,HP,225214,Add,HIT,28472,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,261,,HP,227422,Add,HIT,28625,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,262,,HP,229630,Add,HIT,28778,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,263,,HP,231838,Add,HIT,28931,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,264,,HP,234046,Add,HIT,29084,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,265,,HP,236254,Add,HIT,29237,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,266,,HP,238462,Add,HIT,29390,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,267,,HP,240670,Add,HIT,29543,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,268,,HP,242878,Add,HIT,29696,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,269,,HP,245086,Add,HIT,29849,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,270,,HP,247294,Add,HIT,30002,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,271,,HP,249502,Add,HIT,30155,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,272,,HP,251710,Add,HIT,30308,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,273,,HP,253918,Add,HIT,30461,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,274,,HP,256126,Add,HIT,30614,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,275,,HP,258334,Add,HIT,30767,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,276,,HP,260542,Add,HIT,30920,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,277,,HP,262750,Add,HIT,31073,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,278,,HP,264958,Add,HIT,31226,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,279,,HP,267166,Add,HIT,31379,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,280,,HP,269374,Add,HIT,31532,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,281,,HP,271582,Add,HIT,31685,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,282,,HP,273790,Add,HIT,31838,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,283,,HP,275998,Add,HIT,31991,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,284,,HP,278206,Add,HIT,32144,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,285,,HP,280414,Add,HIT,32297,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,286,,HP,282622,Add,HIT,32450,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,287,,HP,284830,Add,HIT,32603,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,288,,HP,287038,Add,HIT,32756,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,289,,HP,289246,Add,HIT,32909,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,290,,HP,291454,Add,HIT,33062,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,291,,HP,293662,Add,HIT,33215,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,292,,HP,295870,Add,HIT,33368,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,293,,HP,298078,Add,HIT,33521,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,294,,HP,300286,Add,HIT,33674,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,295,,HP,302494,Add,HIT,33827,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,296,,HP,304702,Add,HIT,33980,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,297,,HP,306910,Add,HIT,34133,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,298,,HP,309118,Add,HIT,34286,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,299,,HP,311326,Add,HIT,34439,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,300,,HP,313534,Add,HIT,34592,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,2,1,HP,914,Add,HIT,306,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,3,1,HP,1104,Add,HIT,363,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,4,1,HP,1294,Add,HIT,420,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,5,1,HP,1484,Add,HIT,477,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,6,1,HP,1674,Add,HIT,534,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,7,1,HP,1864,Add,HIT,591,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,8,1,HP,2054,Add,HIT,648,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,9,1,HP,2244,Add,HIT,705,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,10,1,HP,2434,Add,HIT,762,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,11,1,HP,2624,Add,HIT,819,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,12,1,HP,2814,Add,HIT,876,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,13,1,HP,3004,Add,HIT,933,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,14,1,HP,3194,Add,HIT,990,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,15,1,HP,3384,Add,HIT,1047,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,16,1,HP,3574,Add,HIT,1104,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,17,1,HP,3764,Add,HIT,1161,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,18,1,HP,3954,Add,HIT,1218,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,19,1,HP,4144,Add,HIT,1275,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,20,1,HP,4334,Add,HIT,1332,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,21,1,HP,4524,Add,HIT,1389,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,22,1,HP,4714,Add,HIT,1446,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,23,1,HP,4904,Add,HIT,1503,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,24,1,HP,5094,Add,HIT,1560,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,25,1,HP,5284,Add,HIT,1617,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,26,1,HP,5474,Add,HIT,1674,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,27,1,HP,5664,Add,HIT,1731,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,28,1,HP,5854,Add,HIT,1788,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,29,1,HP,6044,Add,HIT,1845,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,30,1,HP,6234,Add,HIT,1902,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,31,1,HP,6424,Add,HIT,1959,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,32,1,HP,6614,Add,HIT,2016,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,33,1,HP,6804,Add,HIT,2073,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,34,1,HP,6994,Add,HIT,2130,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,35,1,HP,7184,Add,HIT,2187,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,36,1,HP,7374,Add,HIT,2244,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,37,1,HP,7564,Add,HIT,2301,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,38,1,HP,7754,Add,HIT,2358,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,39,1,HP,7944,Add,HIT,2415,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,40,1,HP,8134,Add,HIT,2472,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,41,1,HP,8324,Add,HIT,2529,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,42,1,HP,8514,Add,HIT,2586,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,43,1,HP,8704,Add,HIT,2643,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,44,1,HP,8894,Add,HIT,2700,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,45,1,HP,9084,Add,HIT,2757,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,46,1,HP,9274,Add,HIT,2814,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,47,1,HP,9464,Add,HIT,2871,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,48,1,HP,9654,Add,HIT,2928,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,49,1,HP,9844,Add,HIT,2985,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,50,1,HP,10034,Add,HIT,3042,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,51,1,HP,10235,Add,HIT,3132,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,52,1,HP,10436,Add,HIT,3222,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,53,1,HP,10637,Add,HIT,3312,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,54,1,HP,10838,Add,HIT,3402,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,55,1,HP,11039,Add,HIT,3492,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,56,1,HP,11240,Add,HIT,3582,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,57,1,HP,11441,Add,HIT,3672,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,58,1,HP,11642,Add,HIT,3762,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,59,1,HP,11843,Add,HIT,3852,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,60,1,HP,12044,Add,HIT,3942,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,61,1,HP,12245,Add,HIT,4032,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,62,1,HP,12446,Add,HIT,4122,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,63,1,HP,12647,Add,HIT,4212,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,64,1,HP,12848,Add,HIT,4302,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,65,1,HP,13049,Add,HIT,4392,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,66,1,HP,13250,Add,HIT,4482,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,67,1,HP,13451,Add,HIT,4572,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,68,1,HP,13652,Add,HIT,4662,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,69,1,HP,13853,Add,HIT,4752,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,70,1,HP,14054,Add,HIT,4842,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,71,1,HP,14255,Add,HIT,4932,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,72,1,HP,14456,Add,HIT,5022,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,73,1,HP,14657,Add,HIT,5112,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,74,1,HP,14858,Add,HIT,5202,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,75,1,HP,15059,Add,HIT,5292,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,76,1,HP,15260,Add,HIT,5382,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,77,1,HP,15461,Add,HIT,5472,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,78,1,HP,15662,Add,HIT,5562,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,79,1,HP,15863,Add,HIT,5652,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,80,1,HP,16064,Add,HIT,5742,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,81,1,HP,16265,Add,HIT,5832,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,82,1,HP,16466,Add,HIT,5922,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,83,1,HP,16667,Add,HIT,6012,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,84,1,HP,16868,Add,HIT,6102,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,85,1,HP,17069,Add,HIT,6192,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,86,1,HP,17270,Add,HIT,6282,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,87,1,HP,17471,Add,HIT,6372,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,88,1,HP,17672,Add,HIT,6462,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,89,1,HP,17873,Add,HIT,6552,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,90,1,HP,18074,Add,HIT,6642,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,91,1,HP,18275,Add,HIT,6732,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,92,1,HP,18476,Add,HIT,6822,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,93,1,HP,18677,Add,HIT,6912,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,94,1,HP,18878,Add,HIT,7002,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,95,1,HP,19079,Add,HIT,7092,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,96,1,HP,19280,Add,HIT,7182,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,97,1,HP,19481,Add,HIT,7272,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,98,1,HP,19682,Add,HIT,7362,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,99,1,HP,19883,Add,HIT,7452,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,100,1,HP,20084,Add,HIT,7542,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,101,1,HP,20339,Add,HIT,7653,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,102,1,HP,20594,Add,HIT,7764,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,103,1,HP,20849,Add,HIT,7875,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,104,1,HP,21104,Add,HIT,7986,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,105,1,HP,21359,Add,HIT,8097,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,106,1,HP,21614,Add,HIT,8208,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,107,1,HP,21869,Add,HIT,8319,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,108,1,HP,22124,Add,HIT,8430,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,109,1,HP,22379,Add,HIT,8541,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,110,1,HP,22634,Add,HIT,8652,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,111,1,HP,22889,Add,HIT,8763,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,112,1,HP,23144,Add,HIT,8874,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,113,1,HP,23399,Add,HIT,8985,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,114,1,HP,23654,Add,HIT,9096,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,115,1,HP,23909,Add,HIT,9207,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,116,1,HP,24164,Add,HIT,9318,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,117,1,HP,24419,Add,HIT,9429,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,118,1,HP,24674,Add,HIT,9540,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,119,1,HP,24929,Add,HIT,9651,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,120,1,HP,25184,Add,HIT,9762,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,121,1,HP,25439,Add,HIT,9873,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,122,1,HP,25694,Add,HIT,9984,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,123,1,HP,25949,Add,HIT,10095,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,124,1,HP,26204,Add,HIT,10206,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,125,1,HP,26459,Add,HIT,10317,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,126,1,HP,26714,Add,HIT,10428,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,127,1,HP,26969,Add,HIT,10539,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,128,1,HP,27224,Add,HIT,10650,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,129,1,HP,27479,Add,HIT,10761,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,130,1,HP,27734,Add,HIT,10872,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,131,1,HP,27989,Add,HIT,10983,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,132,1,HP,28244,Add,HIT,11094,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,133,1,HP,28499,Add,HIT,11205,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,134,1,HP,28754,Add,HIT,11316,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,135,1,HP,29009,Add,HIT,11427,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,136,1,HP,29264,Add,HIT,11538,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,137,1,HP,29519,Add,HIT,11649,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,138,1,HP,29774,Add,HIT,11760,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,139,1,HP,30029,Add,HIT,11871,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,140,1,HP,30284,Add,HIT,11982,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,141,1,HP,30539,Add,HIT,12093,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,142,1,HP,30794,Add,HIT,12204,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,143,1,HP,31049,Add,HIT,12315,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,144,1,HP,31304,Add,HIT,12426,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,145,1,HP,31559,Add,HIT,12537,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,146,1,HP,31814,Add,HIT,12648,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,147,1,HP,32069,Add,HIT,12759,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,148,1,HP,32324,Add,HIT,12870,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,149,1,HP,32579,Add,HIT,12981,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,150,1,HP,32834,Add,HIT,13092,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,151,1,HP,34196,Add,HIT,13227,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,152,1,HP,35558,Add,HIT,13362,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,153,1,HP,36920,Add,HIT,13497,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,154,1,HP,38282,Add,HIT,13632,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,155,1,HP,39644,Add,HIT,13767,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,156,1,HP,41006,Add,HIT,13902,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,157,1,HP,42368,Add,HIT,14037,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,158,1,HP,43730,Add,HIT,14172,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,159,1,HP,45092,Add,HIT,14307,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,160,1,HP,46454,Add,HIT,14442,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,161,1,HP,47816,Add,HIT,14577,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,162,1,HP,49178,Add,HIT,14712,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,163,1,HP,50540,Add,HIT,14847,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,164,1,HP,51902,Add,HIT,14982,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,165,1,HP,53264,Add,HIT,15117,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,166,1,HP,54626,Add,HIT,15252,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,167,1,HP,55988,Add,HIT,15387,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,168,1,HP,57350,Add,HIT,15522,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,169,1,HP,58712,Add,HIT,15657,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,170,1,HP,60074,Add,HIT,15792,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,171,1,HP,61436,Add,HIT,15927,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,172,1,HP,62798,Add,HIT,16062,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,173,1,HP,64160,Add,HIT,16197,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,174,1,HP,65522,Add,HIT,16332,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,175,1,HP,66884,Add,HIT,16467,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,176,1,HP,68246,Add,HIT,16602,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,177,1,HP,69608,Add,HIT,16737,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,178,1,HP,70970,Add,HIT,16872,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,179,1,HP,72332,Add,HIT,17007,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,180,1,HP,73694,Add,HIT,17142,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,181,1,HP,75056,Add,HIT,17277,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,182,1,HP,76418,Add,HIT,17412,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,183,1,HP,77780,Add,HIT,17547,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,184,1,HP,79142,Add,HIT,17682,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,185,1,HP,80504,Add,HIT,17817,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,186,1,HP,81866,Add,HIT,17952,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,187,1,HP,83228,Add,HIT,18087,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,188,1,HP,84590,Add,HIT,18222,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,189,1,HP,85952,Add,HIT,18357,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,190,1,HP,87314,Add,HIT,18492,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,191,1,HP,88676,Add,HIT,18627,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,192,1,HP,90038,Add,HIT,18762,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,193,1,HP,91400,Add,HIT,18897,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,194,1,HP,92762,Add,HIT,19032,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,195,1,HP,94124,Add,HIT,19167,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,196,1,HP,95486,Add,HIT,19302,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,197,1,HP,96848,Add,HIT,19437,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,198,1,HP,98210,Add,HIT,19572,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,199,1,HP,99572,Add,HIT,19707,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,200,1,HP,100934,Add,HIT,19842,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,201,1,HP,102978,Add,HIT,19984,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,202,1,HP,105022,Add,HIT,20126,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,203,1,HP,107066,Add,HIT,20268,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,204,1,HP,109110,Add,HIT,20410,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,205,1,HP,111154,Add,HIT,20552,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,206,1,HP,113198,Add,HIT,20694,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,207,1,HP,115242,Add,HIT,20836,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,208,1,HP,117286,Add,HIT,20978,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,209,1,HP,119330,Add,HIT,21120,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,210,1,HP,121374,Add,HIT,21262,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,211,1,HP,123418,Add,HIT,21404,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,212,1,HP,125462,Add,HIT,21546,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,213,1,HP,127506,Add,HIT,21688,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,214,1,HP,129550,Add,HIT,21830,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,215,1,HP,131594,Add,HIT,21972,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,216,1,HP,133638,Add,HIT,22114,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,217,1,HP,135682,Add,HIT,22256,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,218,1,HP,137726,Add,HIT,22398,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,219,1,HP,139770,Add,HIT,22540,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,220,1,HP,141814,Add,HIT,22682,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,221,1,HP,143858,Add,HIT,22824,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,222,1,HP,145902,Add,HIT,22966,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,223,1,HP,147946,Add,HIT,23108,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,224,1,HP,149990,Add,HIT,23250,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,225,1,HP,152034,Add,HIT,23392,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,226,1,HP,154078,Add,HIT,23534,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,227,1,HP,156122,Add,HIT,23676,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,228,1,HP,158166,Add,HIT,23818,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,229,1,HP,160210,Add,HIT,23960,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,230,1,HP,162254,Add,HIT,24102,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,231,1,HP,164298,Add,HIT,24244,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,232,1,HP,166342,Add,HIT,24386,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,233,1,HP,168386,Add,HIT,24528,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,234,1,HP,170430,Add,HIT,24670,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,235,1,HP,172474,Add,HIT,24812,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,236,1,HP,174518,Add,HIT,24954,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,237,1,HP,176562,Add,HIT,25096,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,238,1,HP,178606,Add,HIT,25238,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,239,1,HP,180650,Add,HIT,25380,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,240,1,HP,182694,Add,HIT,25522,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,241,1,HP,184738,Add,HIT,25664,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,242,1,HP,186782,Add,HIT,25806,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,243,1,HP,188826,Add,HIT,25948,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,244,1,HP,190870,Add,HIT,26090,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,245,1,HP,192914,Add,HIT,26232,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,246,1,HP,194958,Add,HIT,26374,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,247,1,HP,197002,Add,HIT,26516,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,248,1,HP,199046,Add,HIT,26658,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,249,1,HP,201090,Add,HIT,26800,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,250,1,HP,203134,Add,HIT,26942,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,251,1,HP,205342,Add,HIT,27095,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,252,1,HP,207550,Add,HIT,27248,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,253,1,HP,209758,Add,HIT,27401,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,254,1,HP,211966,Add,HIT,27554,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,255,1,HP,214174,Add,HIT,27707,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,256,1,HP,216382,Add,HIT,27860,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,257,1,HP,218590,Add,HIT,28013,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,258,1,HP,220798,Add,HIT,28166,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,259,1,HP,223006,Add,HIT,28319,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,260,1,HP,225214,Add,HIT,28472,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,261,1,HP,227422,Add,HIT,28625,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,262,1,HP,229630,Add,HIT,28778,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,263,1,HP,231838,Add,HIT,28931,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,264,1,HP,234046,Add,HIT,29084,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,265,1,HP,236254,Add,HIT,29237,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,266,1,HP,238462,Add,HIT,29390,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,267,1,HP,240670,Add,HIT,29543,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,268,1,HP,242878,Add,HIT,29696,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,269,1,HP,245086,Add,HIT,29849,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,270,1,HP,247294,Add,HIT,30002,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,271,1,HP,249502,Add,HIT,30155,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,272,1,HP,251710,Add,HIT,30308,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,273,1,HP,253918,Add,HIT,30461,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,274,1,HP,256126,Add,HIT,30614,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,275,1,HP,258334,Add,HIT,30767,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,276,1,HP,260542,Add,HIT,30920,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,277,1,HP,262750,Add,HIT,31073,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,278,1,HP,264958,Add,HIT,31226,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,279,1,HP,267166,Add,HIT,31379,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,280,1,HP,269374,Add,HIT,31532,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,281,1,HP,271582,Add,HIT,31685,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,282,1,HP,273790,Add,HIT,31838,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,283,1,HP,275998,Add,HIT,31991,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,284,1,HP,278206,Add,HIT,32144,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,285,1,HP,280414,Add,HIT,32297,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,286,1,HP,282622,Add,HIT,32450,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,287,1,HP,284830,Add,HIT,32603,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,288,1,HP,287038,Add,HIT,32756,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,289,1,HP,289246,Add,HIT,32909,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,290,1,HP,291454,Add,HIT,33062,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,291,1,HP,293662,Add,HIT,33215,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,292,1,HP,295870,Add,HIT,33368,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,293,1,HP,298078,Add,HIT,33521,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,294,1,HP,300286,Add,HIT,33674,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,295,1,HP,302494,Add,HIT,33827,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,296,1,HP,304702,Add,HIT,33980,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,297,1,HP,306910,Add,HIT,34133,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,298,1,HP,309118,Add,HIT,34286,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,299,1,HP,311326,Add,HIT,34439,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,300,1,HP,313534,Add,HIT,34592,Add,NONE,0,Add,,,,,,,, 10027,Arena Quick Rune,1,1,ATK,188,Add,SPD,105,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,2,,ATK,210,Add,SPD,120,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,3,,ATK,232,Add,SPD,135,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,4,,ATK,254,Add,SPD,150,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,5,,ATK,276,Add,SPD,165,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,6,,ATK,298,Add,SPD,180,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,7,,ATK,320,Add,SPD,195,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,8,,ATK,342,Add,SPD,210,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,9,,ATK,364,Add,SPD,225,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,10,,ATK,386,Add,SPD,240,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,11,,ATK,408,Add,SPD,255,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,12,,ATK,430,Add,SPD,270,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,13,,ATK,452,Add,SPD,285,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,14,,ATK,474,Add,SPD,300,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,15,,ATK,496,Add,SPD,315,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,16,,ATK,518,Add,SPD,330,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,17,,ATK,540,Add,SPD,345,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,18,,ATK,562,Add,SPD,360,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,19,,ATK,584,Add,SPD,375,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,20,,ATK,606,Add,SPD,390,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,21,,ATK,628,Add,SPD,405,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,22,,ATK,650,Add,SPD,420,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,23,,ATK,672,Add,SPD,435,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,24,,ATK,694,Add,SPD,450,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,25,,ATK,716,Add,SPD,465,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,26,,ATK,738,Add,SPD,480,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,27,,ATK,760,Add,SPD,495,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,28,,ATK,782,Add,SPD,510,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,29,,ATK,804,Add,SPD,525,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,30,,ATK,826,Add,SPD,540,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,31,,ATK,848,Add,SPD,555,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,32,,ATK,870,Add,SPD,570,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,33,,ATK,892,Add,SPD,585,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,34,,ATK,914,Add,SPD,600,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,35,,ATK,936,Add,SPD,615,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,36,,ATK,958,Add,SPD,630,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,37,,ATK,980,Add,SPD,645,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,38,,ATK,1002,Add,SPD,660,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,39,,ATK,1024,Add,SPD,675,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,40,,ATK,1046,Add,SPD,690,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,41,,ATK,1068,Add,SPD,705,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,42,,ATK,1090,Add,SPD,720,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,43,,ATK,1112,Add,SPD,735,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,44,,ATK,1134,Add,SPD,750,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,45,,ATK,1156,Add,SPD,765,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,46,,ATK,1178,Add,SPD,780,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,47,,ATK,1200,Add,SPD,795,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,48,,ATK,1222,Add,SPD,810,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,49,,ATK,1244,Add,SPD,825,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,50,,ATK,1266,Add,SPD,840,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,51,,ATK,1298,Add,SPD,876,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,52,,ATK,1330,Add,SPD,912,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,53,,ATK,1362,Add,SPD,948,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,54,,ATK,1394,Add,SPD,984,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,55,,ATK,1426,Add,SPD,1020,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,56,,ATK,1458,Add,SPD,1056,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,57,,ATK,1490,Add,SPD,1092,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,58,,ATK,1522,Add,SPD,1128,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,59,,ATK,1554,Add,SPD,1164,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,60,,ATK,1586,Add,SPD,1200,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,61,,ATK,1618,Add,SPD,1236,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,62,,ATK,1650,Add,SPD,1272,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,63,,ATK,1682,Add,SPD,1308,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,64,,ATK,1714,Add,SPD,1344,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,65,,ATK,1746,Add,SPD,1380,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,66,,ATK,1778,Add,SPD,1416,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,67,,ATK,1810,Add,SPD,1452,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,68,,ATK,1842,Add,SPD,1488,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,69,,ATK,1874,Add,SPD,1524,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,70,,ATK,1906,Add,SPD,1560,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,71,,ATK,1938,Add,SPD,1596,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,72,,ATK,1970,Add,SPD,1632,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,73,,ATK,2002,Add,SPD,1668,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,74,,ATK,2034,Add,SPD,1704,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,75,,ATK,2066,Add,SPD,1740,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,76,,ATK,2098,Add,SPD,1776,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,77,,ATK,2130,Add,SPD,1812,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,78,,ATK,2162,Add,SPD,1848,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,79,,ATK,2194,Add,SPD,1884,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,80,,ATK,2226,Add,SPD,1920,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,81,,ATK,2258,Add,SPD,1956,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,82,,ATK,2290,Add,SPD,1992,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,83,,ATK,2322,Add,SPD,2028,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,84,,ATK,2354,Add,SPD,2064,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,85,,ATK,2386,Add,SPD,2100,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,86,,ATK,2418,Add,SPD,2136,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,87,,ATK,2450,Add,SPD,2172,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,88,,ATK,2482,Add,SPD,2208,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,89,,ATK,2514,Add,SPD,2244,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,90,,ATK,2546,Add,SPD,2280,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,91,,ATK,2578,Add,SPD,2316,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,92,,ATK,2610,Add,SPD,2352,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,93,,ATK,2642,Add,SPD,2388,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,94,,ATK,2674,Add,SPD,2424,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,95,,ATK,2706,Add,SPD,2460,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,96,,ATK,2738,Add,SPD,2496,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,97,,ATK,2770,Add,SPD,2532,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,98,,ATK,2802,Add,SPD,2568,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,99,,ATK,2834,Add,SPD,2604,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,100,,ATK,2866,Add,SPD,2640,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,101,,ATK,2918,Add,SPD,2681,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,102,,ATK,2970,Add,SPD,2722,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,103,,ATK,3022,Add,SPD,2763,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,104,,ATK,3074,Add,SPD,2804,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,105,,ATK,3126,Add,SPD,2845,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,106,,ATK,3178,Add,SPD,2886,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,107,,ATK,3230,Add,SPD,2927,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,108,,ATK,3282,Add,SPD,2968,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,109,,ATK,3334,Add,SPD,3009,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,110,,ATK,3386,Add,SPD,3050,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,111,,ATK,3438,Add,SPD,3091,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,112,,ATK,3490,Add,SPD,3132,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,113,,ATK,3542,Add,SPD,3173,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,114,,ATK,3594,Add,SPD,3214,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,115,,ATK,3646,Add,SPD,3255,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,116,,ATK,3698,Add,SPD,3296,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,117,,ATK,3750,Add,SPD,3337,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,118,,ATK,3802,Add,SPD,3378,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,119,,ATK,3854,Add,SPD,3419,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,120,,ATK,3906,Add,SPD,3460,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,121,,ATK,3958,Add,SPD,3501,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,122,,ATK,4010,Add,SPD,3542,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,123,,ATK,4062,Add,SPD,3583,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,124,,ATK,4114,Add,SPD,3624,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,125,,ATK,4166,Add,SPD,3665,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,126,,ATK,4218,Add,SPD,3706,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,127,,ATK,4270,Add,SPD,3747,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,128,,ATK,4322,Add,SPD,3788,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,129,,ATK,4374,Add,SPD,3829,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,130,,ATK,4426,Add,SPD,3870,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,131,,ATK,4478,Add,SPD,3911,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,132,,ATK,4530,Add,SPD,3952,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,133,,ATK,4582,Add,SPD,3993,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,134,,ATK,4634,Add,SPD,4034,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,135,,ATK,4686,Add,SPD,4075,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,136,,ATK,4738,Add,SPD,4116,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,137,,ATK,4790,Add,SPD,4157,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,138,,ATK,4842,Add,SPD,4198,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,139,,ATK,4894,Add,SPD,4239,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,140,,ATK,4946,Add,SPD,4280,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,141,,ATK,4998,Add,SPD,4321,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,142,,ATK,5050,Add,SPD,4362,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,143,,ATK,5102,Add,SPD,4403,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,144,,ATK,5154,Add,SPD,4444,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,145,,ATK,5206,Add,SPD,4485,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,146,,ATK,5258,Add,SPD,4526,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,147,,ATK,5310,Add,SPD,4567,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,148,,ATK,5362,Add,SPD,4608,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,149,,ATK,5414,Add,SPD,4649,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,150,,ATK,5466,Add,SPD,4690,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,151,,ATK,5549,Add,SPD,4750,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,152,,ATK,5632,Add,SPD,4810,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,153,,ATK,5715,Add,SPD,4870,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,154,,ATK,5798,Add,SPD,4930,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,155,,ATK,5881,Add,SPD,4990,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,156,,ATK,5964,Add,SPD,5050,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,157,,ATK,6047,Add,SPD,5110,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,158,,ATK,6130,Add,SPD,5170,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,159,,ATK,6213,Add,SPD,5230,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,160,,ATK,6296,Add,SPD,5290,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,161,,ATK,6379,Add,SPD,5350,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,162,,ATK,6462,Add,SPD,5410,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,163,,ATK,6545,Add,SPD,5470,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,164,,ATK,6628,Add,SPD,5530,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,165,,ATK,6711,Add,SPD,5590,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,166,,ATK,6794,Add,SPD,5650,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,167,,ATK,6877,Add,SPD,5710,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,168,,ATK,6960,Add,SPD,5770,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,169,,ATK,7043,Add,SPD,5830,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,170,,ATK,7126,Add,SPD,5890,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,171,,ATK,7209,Add,SPD,5950,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,172,,ATK,7292,Add,SPD,6010,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,173,,ATK,7375,Add,SPD,6070,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,174,,ATK,7458,Add,SPD,6130,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,175,,ATK,7541,Add,SPD,6190,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,176,,ATK,7624,Add,SPD,6250,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,177,,ATK,7707,Add,SPD,6310,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,178,,ATK,7790,Add,SPD,6370,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,179,,ATK,7873,Add,SPD,6430,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,180,,ATK,7956,Add,SPD,6490,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,181,,ATK,8039,Add,SPD,6550,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,182,,ATK,8122,Add,SPD,6610,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,183,,ATK,8205,Add,SPD,6670,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,184,,ATK,8288,Add,SPD,6730,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,185,,ATK,8371,Add,SPD,6790,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,186,,ATK,8454,Add,SPD,6850,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,187,,ATK,8537,Add,SPD,6910,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,188,,ATK,8620,Add,SPD,6970,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,189,,ATK,8703,Add,SPD,7030,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,190,,ATK,8786,Add,SPD,7090,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,191,,ATK,8869,Add,SPD,7150,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,192,,ATK,8952,Add,SPD,7210,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,193,,ATK,9035,Add,SPD,7270,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,194,,ATK,9118,Add,SPD,7330,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,195,,ATK,9201,Add,SPD,7390,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,196,,ATK,9284,Add,SPD,7450,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,197,,ATK,9367,Add,SPD,7510,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,198,,ATK,9450,Add,SPD,7570,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,199,,ATK,9533,Add,SPD,7630,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,200,,ATK,9616,Add,SPD,7690,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,201,,ATK,9716,Add,SPD,7787,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,202,,ATK,9816,Add,SPD,7884,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,203,,ATK,9916,Add,SPD,7981,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,204,,ATK,10016,Add,SPD,8078,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,205,,ATK,10116,Add,SPD,8175,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,206,,ATK,10216,Add,SPD,8272,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,207,,ATK,10316,Add,SPD,8369,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,208,,ATK,10416,Add,SPD,8466,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,209,,ATK,10516,Add,SPD,8563,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,210,,ATK,10616,Add,SPD,8660,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,211,,ATK,10716,Add,SPD,8757,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,212,,ATK,10816,Add,SPD,8854,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,213,,ATK,10916,Add,SPD,8951,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,214,,ATK,11016,Add,SPD,9048,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,215,,ATK,11116,Add,SPD,9145,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,216,,ATK,11216,Add,SPD,9242,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,217,,ATK,11316,Add,SPD,9339,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,218,,ATK,11416,Add,SPD,9436,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,219,,ATK,11516,Add,SPD,9533,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,220,,ATK,11616,Add,SPD,9630,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,221,,ATK,11716,Add,SPD,9727,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,222,,ATK,11816,Add,SPD,9824,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,223,,ATK,11916,Add,SPD,9921,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,224,,ATK,12016,Add,SPD,10018,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,225,,ATK,12116,Add,SPD,10115,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,226,,ATK,12216,Add,SPD,10212,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,227,,ATK,12316,Add,SPD,10309,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,228,,ATK,12416,Add,SPD,10406,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,229,,ATK,12516,Add,SPD,10503,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,230,,ATK,12616,Add,SPD,10600,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,231,,ATK,12716,Add,SPD,10697,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,232,,ATK,12816,Add,SPD,10794,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,233,,ATK,12916,Add,SPD,10891,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,234,,ATK,13016,Add,SPD,10988,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,235,,ATK,13116,Add,SPD,11085,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,236,,ATK,13216,Add,SPD,11182,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,237,,ATK,13316,Add,SPD,11279,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,238,,ATK,13416,Add,SPD,11376,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,239,,ATK,13516,Add,SPD,11473,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,240,,ATK,13616,Add,SPD,11570,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,241,,ATK,13716,Add,SPD,11667,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,242,,ATK,13816,Add,SPD,11764,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,243,,ATK,13916,Add,SPD,11861,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,244,,ATK,14016,Add,SPD,11958,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,245,,ATK,14116,Add,SPD,12055,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,246,,ATK,14216,Add,SPD,12152,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,247,,ATK,14316,Add,SPD,12249,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,248,,ATK,14416,Add,SPD,12346,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,249,,ATK,14516,Add,SPD,12443,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,250,,ATK,14616,Add,SPD,12540,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,251,,ATK,14764,Add,SPD,12673,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,252,,ATK,14912,Add,SPD,12806,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,253,,ATK,15060,Add,SPD,12939,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,254,,ATK,15208,Add,SPD,13072,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,255,,ATK,15356,Add,SPD,13205,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,256,,ATK,15504,Add,SPD,13338,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,257,,ATK,15652,Add,SPD,13471,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,258,,ATK,15800,Add,SPD,13604,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,259,,ATK,15948,Add,SPD,13737,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,260,,ATK,16096,Add,SPD,13870,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,261,,ATK,16244,Add,SPD,14003,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,262,,ATK,16392,Add,SPD,14136,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,263,,ATK,16540,Add,SPD,14269,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,264,,ATK,16688,Add,SPD,14402,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,265,,ATK,16836,Add,SPD,14535,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,266,,ATK,16984,Add,SPD,14668,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,267,,ATK,17132,Add,SPD,14801,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,268,,ATK,17280,Add,SPD,14934,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,269,,ATK,17428,Add,SPD,15067,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,270,,ATK,17576,Add,SPD,15200,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,271,,ATK,17724,Add,SPD,15333,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,272,,ATK,17872,Add,SPD,15466,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,273,,ATK,18020,Add,SPD,15599,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,274,,ATK,18168,Add,SPD,15732,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,275,,ATK,18316,Add,SPD,15865,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,276,,ATK,18464,Add,SPD,15998,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,277,,ATK,18612,Add,SPD,16131,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,278,,ATK,18760,Add,SPD,16264,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,279,,ATK,18908,Add,SPD,16397,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,280,,ATK,19056,Add,SPD,16530,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,281,,ATK,19204,Add,SPD,16663,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,282,,ATK,19352,Add,SPD,16796,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,283,,ATK,19500,Add,SPD,16929,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,284,,ATK,19648,Add,SPD,17062,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,285,,ATK,19796,Add,SPD,17195,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,286,,ATK,19944,Add,SPD,17328,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,287,,ATK,20092,Add,SPD,17461,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,288,,ATK,20240,Add,SPD,17594,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,289,,ATK,20388,Add,SPD,17727,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,290,,ATK,20536,Add,SPD,17860,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,291,,ATK,20684,Add,SPD,17993,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,292,,ATK,20832,Add,SPD,18126,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,293,,ATK,20980,Add,SPD,18259,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,294,,ATK,21128,Add,SPD,18392,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,295,,ATK,21276,Add,SPD,18525,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,296,,ATK,21424,Add,SPD,18658,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,297,,ATK,21572,Add,SPD,18791,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,298,,ATK,21720,Add,SPD,18924,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,299,,ATK,21868,Add,SPD,19057,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,300,,ATK,22016,Add,SPD,19190,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,2,1,ATK,210,Add,SPD,120,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,3,1,ATK,232,Add,SPD,135,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,4,1,ATK,254,Add,SPD,150,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,5,1,ATK,276,Add,SPD,165,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,6,1,ATK,298,Add,SPD,180,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,7,1,ATK,320,Add,SPD,195,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,8,1,ATK,342,Add,SPD,210,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,9,1,ATK,364,Add,SPD,225,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,10,1,ATK,386,Add,SPD,240,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,11,1,ATK,408,Add,SPD,255,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,12,1,ATK,430,Add,SPD,270,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,13,1,ATK,452,Add,SPD,285,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,14,1,ATK,474,Add,SPD,300,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,15,1,ATK,496,Add,SPD,315,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,16,1,ATK,518,Add,SPD,330,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,17,1,ATK,540,Add,SPD,345,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,18,1,ATK,562,Add,SPD,360,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,19,1,ATK,584,Add,SPD,375,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,20,1,ATK,606,Add,SPD,390,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,21,1,ATK,628,Add,SPD,405,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,22,1,ATK,650,Add,SPD,420,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,23,1,ATK,672,Add,SPD,435,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,24,1,ATK,694,Add,SPD,450,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,25,1,ATK,716,Add,SPD,465,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,26,1,ATK,738,Add,SPD,480,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,27,1,ATK,760,Add,SPD,495,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,28,1,ATK,782,Add,SPD,510,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,29,1,ATK,804,Add,SPD,525,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,30,1,ATK,826,Add,SPD,540,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,31,1,ATK,848,Add,SPD,555,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,32,1,ATK,870,Add,SPD,570,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,33,1,ATK,892,Add,SPD,585,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,34,1,ATK,914,Add,SPD,600,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,35,1,ATK,936,Add,SPD,615,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,36,1,ATK,958,Add,SPD,630,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,37,1,ATK,980,Add,SPD,645,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,38,1,ATK,1002,Add,SPD,660,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,39,1,ATK,1024,Add,SPD,675,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,40,1,ATK,1046,Add,SPD,690,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,41,1,ATK,1068,Add,SPD,705,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,42,1,ATK,1090,Add,SPD,720,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,43,1,ATK,1112,Add,SPD,735,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,44,1,ATK,1134,Add,SPD,750,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,45,1,ATK,1156,Add,SPD,765,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,46,1,ATK,1178,Add,SPD,780,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,47,1,ATK,1200,Add,SPD,795,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,48,1,ATK,1222,Add,SPD,810,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,49,1,ATK,1244,Add,SPD,825,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,50,1,ATK,1266,Add,SPD,840,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,51,1,ATK,1298,Add,SPD,876,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,52,1,ATK,1330,Add,SPD,912,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,53,1,ATK,1362,Add,SPD,948,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,54,1,ATK,1394,Add,SPD,984,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,55,1,ATK,1426,Add,SPD,1020,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,56,1,ATK,1458,Add,SPD,1056,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,57,1,ATK,1490,Add,SPD,1092,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,58,1,ATK,1522,Add,SPD,1128,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,59,1,ATK,1554,Add,SPD,1164,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,60,1,ATK,1586,Add,SPD,1200,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,61,1,ATK,1618,Add,SPD,1236,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,62,1,ATK,1650,Add,SPD,1272,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,63,1,ATK,1682,Add,SPD,1308,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,64,1,ATK,1714,Add,SPD,1344,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,65,1,ATK,1746,Add,SPD,1380,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,66,1,ATK,1778,Add,SPD,1416,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,67,1,ATK,1810,Add,SPD,1452,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,68,1,ATK,1842,Add,SPD,1488,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,69,1,ATK,1874,Add,SPD,1524,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,70,1,ATK,1906,Add,SPD,1560,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,71,1,ATK,1938,Add,SPD,1596,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,72,1,ATK,1970,Add,SPD,1632,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,73,1,ATK,2002,Add,SPD,1668,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,74,1,ATK,2034,Add,SPD,1704,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,75,1,ATK,2066,Add,SPD,1740,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,76,1,ATK,2098,Add,SPD,1776,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,77,1,ATK,2130,Add,SPD,1812,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,78,1,ATK,2162,Add,SPD,1848,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,79,1,ATK,2194,Add,SPD,1884,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,80,1,ATK,2226,Add,SPD,1920,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,81,1,ATK,2258,Add,SPD,1956,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,82,1,ATK,2290,Add,SPD,1992,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,83,1,ATK,2322,Add,SPD,2028,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,84,1,ATK,2354,Add,SPD,2064,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,85,1,ATK,2386,Add,SPD,2100,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,86,1,ATK,2418,Add,SPD,2136,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,87,1,ATK,2450,Add,SPD,2172,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,88,1,ATK,2482,Add,SPD,2208,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,89,1,ATK,2514,Add,SPD,2244,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,90,1,ATK,2546,Add,SPD,2280,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,91,1,ATK,2578,Add,SPD,2316,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,92,1,ATK,2610,Add,SPD,2352,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,93,1,ATK,2642,Add,SPD,2388,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,94,1,ATK,2674,Add,SPD,2424,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,95,1,ATK,2706,Add,SPD,2460,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,96,1,ATK,2738,Add,SPD,2496,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,97,1,ATK,2770,Add,SPD,2532,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,98,1,ATK,2802,Add,SPD,2568,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,99,1,ATK,2834,Add,SPD,2604,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,100,1,ATK,2866,Add,SPD,2640,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,101,1,ATK,2918,Add,SPD,2681,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,102,1,ATK,2970,Add,SPD,2722,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,103,1,ATK,3022,Add,SPD,2763,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,104,1,ATK,3074,Add,SPD,2804,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,105,1,ATK,3126,Add,SPD,2845,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,106,1,ATK,3178,Add,SPD,2886,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,107,1,ATK,3230,Add,SPD,2927,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,108,1,ATK,3282,Add,SPD,2968,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,109,1,ATK,3334,Add,SPD,3009,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,110,1,ATK,3386,Add,SPD,3050,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,111,1,ATK,3438,Add,SPD,3091,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,112,1,ATK,3490,Add,SPD,3132,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,113,1,ATK,3542,Add,SPD,3173,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,114,1,ATK,3594,Add,SPD,3214,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,115,1,ATK,3646,Add,SPD,3255,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,116,1,ATK,3698,Add,SPD,3296,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,117,1,ATK,3750,Add,SPD,3337,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,118,1,ATK,3802,Add,SPD,3378,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,119,1,ATK,3854,Add,SPD,3419,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,120,1,ATK,3906,Add,SPD,3460,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,121,1,ATK,3958,Add,SPD,3501,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,122,1,ATK,4010,Add,SPD,3542,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,123,1,ATK,4062,Add,SPD,3583,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,124,1,ATK,4114,Add,SPD,3624,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,125,1,ATK,4166,Add,SPD,3665,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,126,1,ATK,4218,Add,SPD,3706,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,127,1,ATK,4270,Add,SPD,3747,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,128,1,ATK,4322,Add,SPD,3788,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,129,1,ATK,4374,Add,SPD,3829,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,130,1,ATK,4426,Add,SPD,3870,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,131,1,ATK,4478,Add,SPD,3911,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,132,1,ATK,4530,Add,SPD,3952,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,133,1,ATK,4582,Add,SPD,3993,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,134,1,ATK,4634,Add,SPD,4034,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,135,1,ATK,4686,Add,SPD,4075,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,136,1,ATK,4738,Add,SPD,4116,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,137,1,ATK,4790,Add,SPD,4157,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,138,1,ATK,4842,Add,SPD,4198,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,139,1,ATK,4894,Add,SPD,4239,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,140,1,ATK,4946,Add,SPD,4280,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,141,1,ATK,4998,Add,SPD,4321,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,142,1,ATK,5050,Add,SPD,4362,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,143,1,ATK,5102,Add,SPD,4403,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,144,1,ATK,5154,Add,SPD,4444,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,145,1,ATK,5206,Add,SPD,4485,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,146,1,ATK,5258,Add,SPD,4526,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,147,1,ATK,5310,Add,SPD,4567,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,148,1,ATK,5362,Add,SPD,4608,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,149,1,ATK,5414,Add,SPD,4649,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,150,1,ATK,5466,Add,SPD,4690,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,151,1,ATK,5549,Add,SPD,4750,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,152,1,ATK,5632,Add,SPD,4810,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,153,1,ATK,5715,Add,SPD,4870,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,154,1,ATK,5798,Add,SPD,4930,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,155,1,ATK,5881,Add,SPD,4990,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,156,1,ATK,5964,Add,SPD,5050,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,157,1,ATK,6047,Add,SPD,5110,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,158,1,ATK,6130,Add,SPD,5170,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,159,1,ATK,6213,Add,SPD,5230,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,160,1,ATK,6296,Add,SPD,5290,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,161,1,ATK,6379,Add,SPD,5350,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,162,1,ATK,6462,Add,SPD,5410,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,163,1,ATK,6545,Add,SPD,5470,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,164,1,ATK,6628,Add,SPD,5530,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,165,1,ATK,6711,Add,SPD,5590,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,166,1,ATK,6794,Add,SPD,5650,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,167,1,ATK,6877,Add,SPD,5710,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,168,1,ATK,6960,Add,SPD,5770,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,169,1,ATK,7043,Add,SPD,5830,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,170,1,ATK,7126,Add,SPD,5890,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,171,1,ATK,7209,Add,SPD,5950,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,172,1,ATK,7292,Add,SPD,6010,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,173,1,ATK,7375,Add,SPD,6070,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,174,1,ATK,7458,Add,SPD,6130,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,175,1,ATK,7541,Add,SPD,6190,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,176,1,ATK,7624,Add,SPD,6250,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,177,1,ATK,7707,Add,SPD,6310,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,178,1,ATK,7790,Add,SPD,6370,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,179,1,ATK,7873,Add,SPD,6430,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,180,1,ATK,7956,Add,SPD,6490,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,181,1,ATK,8039,Add,SPD,6550,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,182,1,ATK,8122,Add,SPD,6610,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,183,1,ATK,8205,Add,SPD,6670,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,184,1,ATK,8288,Add,SPD,6730,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,185,1,ATK,8371,Add,SPD,6790,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,186,1,ATK,8454,Add,SPD,6850,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,187,1,ATK,8537,Add,SPD,6910,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,188,1,ATK,8620,Add,SPD,6970,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,189,1,ATK,8703,Add,SPD,7030,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,190,1,ATK,8786,Add,SPD,7090,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,191,1,ATK,8869,Add,SPD,7150,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,192,1,ATK,8952,Add,SPD,7210,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,193,1,ATK,9035,Add,SPD,7270,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,194,1,ATK,9118,Add,SPD,7330,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,195,1,ATK,9201,Add,SPD,7390,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,196,1,ATK,9284,Add,SPD,7450,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,197,1,ATK,9367,Add,SPD,7510,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,198,1,ATK,9450,Add,SPD,7570,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,199,1,ATK,9533,Add,SPD,7630,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,200,1,ATK,9616,Add,SPD,7690,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,201,1,ATK,9716,Add,SPD,7787,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,202,1,ATK,9816,Add,SPD,7884,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,203,1,ATK,9916,Add,SPD,7981,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,204,1,ATK,10016,Add,SPD,8078,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,205,1,ATK,10116,Add,SPD,8175,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,206,1,ATK,10216,Add,SPD,8272,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,207,1,ATK,10316,Add,SPD,8369,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,208,1,ATK,10416,Add,SPD,8466,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,209,1,ATK,10516,Add,SPD,8563,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,210,1,ATK,10616,Add,SPD,8660,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,211,1,ATK,10716,Add,SPD,8757,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,212,1,ATK,10816,Add,SPD,8854,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,213,1,ATK,10916,Add,SPD,8951,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,214,1,ATK,11016,Add,SPD,9048,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,215,1,ATK,11116,Add,SPD,9145,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,216,1,ATK,11216,Add,SPD,9242,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,217,1,ATK,11316,Add,SPD,9339,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,218,1,ATK,11416,Add,SPD,9436,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,219,1,ATK,11516,Add,SPD,9533,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,220,1,ATK,11616,Add,SPD,9630,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,221,1,ATK,11716,Add,SPD,9727,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,222,1,ATK,11816,Add,SPD,9824,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,223,1,ATK,11916,Add,SPD,9921,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,224,1,ATK,12016,Add,SPD,10018,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,225,1,ATK,12116,Add,SPD,10115,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,226,1,ATK,12216,Add,SPD,10212,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,227,1,ATK,12316,Add,SPD,10309,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,228,1,ATK,12416,Add,SPD,10406,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,229,1,ATK,12516,Add,SPD,10503,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,230,1,ATK,12616,Add,SPD,10600,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,231,1,ATK,12716,Add,SPD,10697,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,232,1,ATK,12816,Add,SPD,10794,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,233,1,ATK,12916,Add,SPD,10891,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,234,1,ATK,13016,Add,SPD,10988,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,235,1,ATK,13116,Add,SPD,11085,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,236,1,ATK,13216,Add,SPD,11182,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,237,1,ATK,13316,Add,SPD,11279,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,238,1,ATK,13416,Add,SPD,11376,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,239,1,ATK,13516,Add,SPD,11473,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,240,1,ATK,13616,Add,SPD,11570,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,241,1,ATK,13716,Add,SPD,11667,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,242,1,ATK,13816,Add,SPD,11764,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,243,1,ATK,13916,Add,SPD,11861,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,244,1,ATK,14016,Add,SPD,11958,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,245,1,ATK,14116,Add,SPD,12055,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,246,1,ATK,14216,Add,SPD,12152,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,247,1,ATK,14316,Add,SPD,12249,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,248,1,ATK,14416,Add,SPD,12346,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,249,1,ATK,14516,Add,SPD,12443,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,250,1,ATK,14616,Add,SPD,12540,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,251,1,ATK,14764,Add,SPD,12673,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,252,1,ATK,14912,Add,SPD,12806,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,253,1,ATK,15060,Add,SPD,12939,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,254,1,ATK,15208,Add,SPD,13072,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,255,1,ATK,15356,Add,SPD,13205,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,256,1,ATK,15504,Add,SPD,13338,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,257,1,ATK,15652,Add,SPD,13471,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,258,1,ATK,15800,Add,SPD,13604,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,259,1,ATK,15948,Add,SPD,13737,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,260,1,ATK,16096,Add,SPD,13870,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,261,1,ATK,16244,Add,SPD,14003,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,262,1,ATK,16392,Add,SPD,14136,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,263,1,ATK,16540,Add,SPD,14269,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,264,1,ATK,16688,Add,SPD,14402,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,265,1,ATK,16836,Add,SPD,14535,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,266,1,ATK,16984,Add,SPD,14668,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,267,1,ATK,17132,Add,SPD,14801,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,268,1,ATK,17280,Add,SPD,14934,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,269,1,ATK,17428,Add,SPD,15067,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,270,1,ATK,17576,Add,SPD,15200,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,271,1,ATK,17724,Add,SPD,15333,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,272,1,ATK,17872,Add,SPD,15466,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,273,1,ATK,18020,Add,SPD,15599,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,274,1,ATK,18168,Add,SPD,15732,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,275,1,ATK,18316,Add,SPD,15865,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,276,1,ATK,18464,Add,SPD,15998,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,277,1,ATK,18612,Add,SPD,16131,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,278,1,ATK,18760,Add,SPD,16264,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,279,1,ATK,18908,Add,SPD,16397,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,280,1,ATK,19056,Add,SPD,16530,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,281,1,ATK,19204,Add,SPD,16663,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,282,1,ATK,19352,Add,SPD,16796,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,283,1,ATK,19500,Add,SPD,16929,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,284,1,ATK,19648,Add,SPD,17062,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,285,1,ATK,19796,Add,SPD,17195,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,286,1,ATK,19944,Add,SPD,17328,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,287,1,ATK,20092,Add,SPD,17461,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,288,1,ATK,20240,Add,SPD,17594,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,289,1,ATK,20388,Add,SPD,17727,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,290,1,ATK,20536,Add,SPD,17860,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,291,1,ATK,20684,Add,SPD,17993,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,292,1,ATK,20832,Add,SPD,18126,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,293,1,ATK,20980,Add,SPD,18259,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,294,1,ATK,21128,Add,SPD,18392,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,295,1,ATK,21276,Add,SPD,18525,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,296,1,ATK,21424,Add,SPD,18658,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,297,1,ATK,21572,Add,SPD,18791,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,298,1,ATK,21720,Add,SPD,18924,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,299,1,ATK,21868,Add,SPD,19057,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,300,1,ATK,22016,Add,SPD,19190,Add,NONE,0,Add,,,,,,,, 10028,WorldBoss Quick Rune,1,1,ATK,188,Add,SPD,105,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,2,,ATK,210,Add,SPD,120,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,3,,ATK,232,Add,SPD,135,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,4,,ATK,254,Add,SPD,150,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,5,,ATK,276,Add,SPD,165,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,6,,ATK,298,Add,SPD,180,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,7,,ATK,320,Add,SPD,195,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,8,,ATK,342,Add,SPD,210,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,9,,ATK,364,Add,SPD,225,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,10,,ATK,386,Add,SPD,240,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,11,,ATK,408,Add,SPD,255,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,12,,ATK,430,Add,SPD,270,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,13,,ATK,452,Add,SPD,285,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,14,,ATK,474,Add,SPD,300,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,15,,ATK,496,Add,SPD,315,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,16,,ATK,518,Add,SPD,330,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,17,,ATK,540,Add,SPD,345,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,18,,ATK,562,Add,SPD,360,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,19,,ATK,584,Add,SPD,375,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,20,,ATK,606,Add,SPD,390,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,21,,ATK,628,Add,SPD,405,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,22,,ATK,650,Add,SPD,420,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,23,,ATK,672,Add,SPD,435,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,24,,ATK,694,Add,SPD,450,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,25,,ATK,716,Add,SPD,465,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,26,,ATK,738,Add,SPD,480,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,27,,ATK,760,Add,SPD,495,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,28,,ATK,782,Add,SPD,510,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,29,,ATK,804,Add,SPD,525,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,30,,ATK,826,Add,SPD,540,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,31,,ATK,848,Add,SPD,555,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,32,,ATK,870,Add,SPD,570,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,33,,ATK,892,Add,SPD,585,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,34,,ATK,914,Add,SPD,600,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,35,,ATK,936,Add,SPD,615,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,36,,ATK,958,Add,SPD,630,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,37,,ATK,980,Add,SPD,645,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,38,,ATK,1002,Add,SPD,660,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,39,,ATK,1024,Add,SPD,675,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,40,,ATK,1046,Add,SPD,690,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,41,,ATK,1068,Add,SPD,705,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,42,,ATK,1090,Add,SPD,720,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,43,,ATK,1112,Add,SPD,735,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,44,,ATK,1134,Add,SPD,750,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,45,,ATK,1156,Add,SPD,765,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,46,,ATK,1178,Add,SPD,780,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,47,,ATK,1200,Add,SPD,795,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,48,,ATK,1222,Add,SPD,810,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,49,,ATK,1244,Add,SPD,825,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,50,,ATK,1266,Add,SPD,840,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,51,,ATK,1298,Add,SPD,876,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,52,,ATK,1330,Add,SPD,912,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,53,,ATK,1362,Add,SPD,948,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,54,,ATK,1394,Add,SPD,984,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,55,,ATK,1426,Add,SPD,1020,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,56,,ATK,1458,Add,SPD,1056,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,57,,ATK,1490,Add,SPD,1092,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,58,,ATK,1522,Add,SPD,1128,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,59,,ATK,1554,Add,SPD,1164,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,60,,ATK,1586,Add,SPD,1200,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,61,,ATK,1618,Add,SPD,1236,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,62,,ATK,1650,Add,SPD,1272,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,63,,ATK,1682,Add,SPD,1308,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,64,,ATK,1714,Add,SPD,1344,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,65,,ATK,1746,Add,SPD,1380,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,66,,ATK,1778,Add,SPD,1416,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,67,,ATK,1810,Add,SPD,1452,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,68,,ATK,1842,Add,SPD,1488,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,69,,ATK,1874,Add,SPD,1524,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,70,,ATK,1906,Add,SPD,1560,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,71,,ATK,1938,Add,SPD,1596,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,72,,ATK,1970,Add,SPD,1632,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,73,,ATK,2002,Add,SPD,1668,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,74,,ATK,2034,Add,SPD,1704,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,75,,ATK,2066,Add,SPD,1740,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,76,,ATK,2098,Add,SPD,1776,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,77,,ATK,2130,Add,SPD,1812,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,78,,ATK,2162,Add,SPD,1848,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,79,,ATK,2194,Add,SPD,1884,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,80,,ATK,2226,Add,SPD,1920,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,81,,ATK,2258,Add,SPD,1956,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,82,,ATK,2290,Add,SPD,1992,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,83,,ATK,2322,Add,SPD,2028,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,84,,ATK,2354,Add,SPD,2064,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,85,,ATK,2386,Add,SPD,2100,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,86,,ATK,2418,Add,SPD,2136,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,87,,ATK,2450,Add,SPD,2172,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,88,,ATK,2482,Add,SPD,2208,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,89,,ATK,2514,Add,SPD,2244,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,90,,ATK,2546,Add,SPD,2280,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,91,,ATK,2578,Add,SPD,2316,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,92,,ATK,2610,Add,SPD,2352,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,93,,ATK,2642,Add,SPD,2388,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,94,,ATK,2674,Add,SPD,2424,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,95,,ATK,2706,Add,SPD,2460,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,96,,ATK,2738,Add,SPD,2496,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,97,,ATK,2770,Add,SPD,2532,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,98,,ATK,2802,Add,SPD,2568,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,99,,ATK,2834,Add,SPD,2604,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,100,,ATK,2866,Add,SPD,2640,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,101,,ATK,2918,Add,SPD,2681,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,102,,ATK,2970,Add,SPD,2722,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,103,,ATK,3022,Add,SPD,2763,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,104,,ATK,3074,Add,SPD,2804,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,105,,ATK,3126,Add,SPD,2845,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,106,,ATK,3178,Add,SPD,2886,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,107,,ATK,3230,Add,SPD,2927,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,108,,ATK,3282,Add,SPD,2968,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,109,,ATK,3334,Add,SPD,3009,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,110,,ATK,3386,Add,SPD,3050,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,111,,ATK,3438,Add,SPD,3091,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,112,,ATK,3490,Add,SPD,3132,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,113,,ATK,3542,Add,SPD,3173,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,114,,ATK,3594,Add,SPD,3214,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,115,,ATK,3646,Add,SPD,3255,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,116,,ATK,3698,Add,SPD,3296,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,117,,ATK,3750,Add,SPD,3337,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,118,,ATK,3802,Add,SPD,3378,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,119,,ATK,3854,Add,SPD,3419,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,120,,ATK,3906,Add,SPD,3460,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,121,,ATK,3958,Add,SPD,3501,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,122,,ATK,4010,Add,SPD,3542,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,123,,ATK,4062,Add,SPD,3583,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,124,,ATK,4114,Add,SPD,3624,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,125,,ATK,4166,Add,SPD,3665,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,126,,ATK,4218,Add,SPD,3706,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,127,,ATK,4270,Add,SPD,3747,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,128,,ATK,4322,Add,SPD,3788,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,129,,ATK,4374,Add,SPD,3829,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,130,,ATK,4426,Add,SPD,3870,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,131,,ATK,4478,Add,SPD,3911,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,132,,ATK,4530,Add,SPD,3952,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,133,,ATK,4582,Add,SPD,3993,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,134,,ATK,4634,Add,SPD,4034,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,135,,ATK,4686,Add,SPD,4075,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,136,,ATK,4738,Add,SPD,4116,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,137,,ATK,4790,Add,SPD,4157,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,138,,ATK,4842,Add,SPD,4198,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,139,,ATK,4894,Add,SPD,4239,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,140,,ATK,4946,Add,SPD,4280,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,141,,ATK,4998,Add,SPD,4321,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,142,,ATK,5050,Add,SPD,4362,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,143,,ATK,5102,Add,SPD,4403,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,144,,ATK,5154,Add,SPD,4444,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,145,,ATK,5206,Add,SPD,4485,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,146,,ATK,5258,Add,SPD,4526,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,147,,ATK,5310,Add,SPD,4567,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,148,,ATK,5362,Add,SPD,4608,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,149,,ATK,5414,Add,SPD,4649,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,150,,ATK,5466,Add,SPD,4690,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,151,,ATK,5549,Add,SPD,4750,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,152,,ATK,5632,Add,SPD,4810,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,153,,ATK,5715,Add,SPD,4870,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,154,,ATK,5798,Add,SPD,4930,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,155,,ATK,5881,Add,SPD,4990,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,156,,ATK,5964,Add,SPD,5050,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,157,,ATK,6047,Add,SPD,5110,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,158,,ATK,6130,Add,SPD,5170,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,159,,ATK,6213,Add,SPD,5230,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,160,,ATK,6296,Add,SPD,5290,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,161,,ATK,6379,Add,SPD,5350,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,162,,ATK,6462,Add,SPD,5410,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,163,,ATK,6545,Add,SPD,5470,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,164,,ATK,6628,Add,SPD,5530,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,165,,ATK,6711,Add,SPD,5590,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,166,,ATK,6794,Add,SPD,5650,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,167,,ATK,6877,Add,SPD,5710,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,168,,ATK,6960,Add,SPD,5770,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,169,,ATK,7043,Add,SPD,5830,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,170,,ATK,7126,Add,SPD,5890,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,171,,ATK,7209,Add,SPD,5950,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,172,,ATK,7292,Add,SPD,6010,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,173,,ATK,7375,Add,SPD,6070,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,174,,ATK,7458,Add,SPD,6130,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,175,,ATK,7541,Add,SPD,6190,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,176,,ATK,7624,Add,SPD,6250,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,177,,ATK,7707,Add,SPD,6310,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,178,,ATK,7790,Add,SPD,6370,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,179,,ATK,7873,Add,SPD,6430,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,180,,ATK,7956,Add,SPD,6490,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,181,,ATK,8039,Add,SPD,6550,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,182,,ATK,8122,Add,SPD,6610,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,183,,ATK,8205,Add,SPD,6670,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,184,,ATK,8288,Add,SPD,6730,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,185,,ATK,8371,Add,SPD,6790,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,186,,ATK,8454,Add,SPD,6850,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,187,,ATK,8537,Add,SPD,6910,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,188,,ATK,8620,Add,SPD,6970,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,189,,ATK,8703,Add,SPD,7030,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,190,,ATK,8786,Add,SPD,7090,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,191,,ATK,8869,Add,SPD,7150,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,192,,ATK,8952,Add,SPD,7210,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,193,,ATK,9035,Add,SPD,7270,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,194,,ATK,9118,Add,SPD,7330,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,195,,ATK,9201,Add,SPD,7390,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,196,,ATK,9284,Add,SPD,7450,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,197,,ATK,9367,Add,SPD,7510,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,198,,ATK,9450,Add,SPD,7570,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,199,,ATK,9533,Add,SPD,7630,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,200,,ATK,9616,Add,SPD,7690,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,201,,ATK,9716,Add,SPD,7787,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,202,,ATK,9816,Add,SPD,7884,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,203,,ATK,9916,Add,SPD,7981,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,204,,ATK,10016,Add,SPD,8078,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,205,,ATK,10116,Add,SPD,8175,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,206,,ATK,10216,Add,SPD,8272,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,207,,ATK,10316,Add,SPD,8369,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,208,,ATK,10416,Add,SPD,8466,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,209,,ATK,10516,Add,SPD,8563,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,210,,ATK,10616,Add,SPD,8660,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,211,,ATK,10716,Add,SPD,8757,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,212,,ATK,10816,Add,SPD,8854,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,213,,ATK,10916,Add,SPD,8951,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,214,,ATK,11016,Add,SPD,9048,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,215,,ATK,11116,Add,SPD,9145,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,216,,ATK,11216,Add,SPD,9242,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,217,,ATK,11316,Add,SPD,9339,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,218,,ATK,11416,Add,SPD,9436,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,219,,ATK,11516,Add,SPD,9533,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,220,,ATK,11616,Add,SPD,9630,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,221,,ATK,11716,Add,SPD,9727,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,222,,ATK,11816,Add,SPD,9824,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,223,,ATK,11916,Add,SPD,9921,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,224,,ATK,12016,Add,SPD,10018,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,225,,ATK,12116,Add,SPD,10115,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,226,,ATK,12216,Add,SPD,10212,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,227,,ATK,12316,Add,SPD,10309,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,228,,ATK,12416,Add,SPD,10406,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,229,,ATK,12516,Add,SPD,10503,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,230,,ATK,12616,Add,SPD,10600,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,231,,ATK,12716,Add,SPD,10697,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,232,,ATK,12816,Add,SPD,10794,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,233,,ATK,12916,Add,SPD,10891,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,234,,ATK,13016,Add,SPD,10988,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,235,,ATK,13116,Add,SPD,11085,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,236,,ATK,13216,Add,SPD,11182,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,237,,ATK,13316,Add,SPD,11279,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,238,,ATK,13416,Add,SPD,11376,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,239,,ATK,13516,Add,SPD,11473,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,240,,ATK,13616,Add,SPD,11570,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,241,,ATK,13716,Add,SPD,11667,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,242,,ATK,13816,Add,SPD,11764,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,243,,ATK,13916,Add,SPD,11861,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,244,,ATK,14016,Add,SPD,11958,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,245,,ATK,14116,Add,SPD,12055,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,246,,ATK,14216,Add,SPD,12152,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,247,,ATK,14316,Add,SPD,12249,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,248,,ATK,14416,Add,SPD,12346,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,249,,ATK,14516,Add,SPD,12443,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,250,,ATK,14616,Add,SPD,12540,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,251,,ATK,14764,Add,SPD,12673,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,252,,ATK,14912,Add,SPD,12806,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,253,,ATK,15060,Add,SPD,12939,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,254,,ATK,15208,Add,SPD,13072,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,255,,ATK,15356,Add,SPD,13205,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,256,,ATK,15504,Add,SPD,13338,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,257,,ATK,15652,Add,SPD,13471,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,258,,ATK,15800,Add,SPD,13604,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,259,,ATK,15948,Add,SPD,13737,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,260,,ATK,16096,Add,SPD,13870,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,261,,ATK,16244,Add,SPD,14003,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,262,,ATK,16392,Add,SPD,14136,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,263,,ATK,16540,Add,SPD,14269,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,264,,ATK,16688,Add,SPD,14402,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,265,,ATK,16836,Add,SPD,14535,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,266,,ATK,16984,Add,SPD,14668,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,267,,ATK,17132,Add,SPD,14801,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,268,,ATK,17280,Add,SPD,14934,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,269,,ATK,17428,Add,SPD,15067,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,270,,ATK,17576,Add,SPD,15200,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,271,,ATK,17724,Add,SPD,15333,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,272,,ATK,17872,Add,SPD,15466,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,273,,ATK,18020,Add,SPD,15599,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,274,,ATK,18168,Add,SPD,15732,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,275,,ATK,18316,Add,SPD,15865,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,276,,ATK,18464,Add,SPD,15998,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,277,,ATK,18612,Add,SPD,16131,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,278,,ATK,18760,Add,SPD,16264,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,279,,ATK,18908,Add,SPD,16397,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,280,,ATK,19056,Add,SPD,16530,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,281,,ATK,19204,Add,SPD,16663,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,282,,ATK,19352,Add,SPD,16796,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,283,,ATK,19500,Add,SPD,16929,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,284,,ATK,19648,Add,SPD,17062,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,285,,ATK,19796,Add,SPD,17195,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,286,,ATK,19944,Add,SPD,17328,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,287,,ATK,20092,Add,SPD,17461,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,288,,ATK,20240,Add,SPD,17594,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,289,,ATK,20388,Add,SPD,17727,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,290,,ATK,20536,Add,SPD,17860,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,291,,ATK,20684,Add,SPD,17993,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,292,,ATK,20832,Add,SPD,18126,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,293,,ATK,20980,Add,SPD,18259,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,294,,ATK,21128,Add,SPD,18392,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,295,,ATK,21276,Add,SPD,18525,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,296,,ATK,21424,Add,SPD,18658,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,297,,ATK,21572,Add,SPD,18791,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,298,,ATK,21720,Add,SPD,18924,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,299,,ATK,21868,Add,SPD,19057,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,300,,ATK,22016,Add,SPD,19190,Add,NONE,0,Add,,,,,,,, \ No newline at end of file +10028,WorldBoss Quick Rune,2,1,ATK,210,Add,SPD,120,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,3,1,ATK,232,Add,SPD,135,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,4,1,ATK,254,Add,SPD,150,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,5,1,ATK,276,Add,SPD,165,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,6,1,ATK,298,Add,SPD,180,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,7,1,ATK,320,Add,SPD,195,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,8,1,ATK,342,Add,SPD,210,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,9,1,ATK,364,Add,SPD,225,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,10,1,ATK,386,Add,SPD,240,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,11,1,ATK,408,Add,SPD,255,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,12,1,ATK,430,Add,SPD,270,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,13,1,ATK,452,Add,SPD,285,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,14,1,ATK,474,Add,SPD,300,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,15,1,ATK,496,Add,SPD,315,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,16,1,ATK,518,Add,SPD,330,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,17,1,ATK,540,Add,SPD,345,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,18,1,ATK,562,Add,SPD,360,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,19,1,ATK,584,Add,SPD,375,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,20,1,ATK,606,Add,SPD,390,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,21,1,ATK,628,Add,SPD,405,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,22,1,ATK,650,Add,SPD,420,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,23,1,ATK,672,Add,SPD,435,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,24,1,ATK,694,Add,SPD,450,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,25,1,ATK,716,Add,SPD,465,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,26,1,ATK,738,Add,SPD,480,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,27,1,ATK,760,Add,SPD,495,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,28,1,ATK,782,Add,SPD,510,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,29,1,ATK,804,Add,SPD,525,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,30,1,ATK,826,Add,SPD,540,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,31,1,ATK,848,Add,SPD,555,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,32,1,ATK,870,Add,SPD,570,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,33,1,ATK,892,Add,SPD,585,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,34,1,ATK,914,Add,SPD,600,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,35,1,ATK,936,Add,SPD,615,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,36,1,ATK,958,Add,SPD,630,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,37,1,ATK,980,Add,SPD,645,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,38,1,ATK,1002,Add,SPD,660,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,39,1,ATK,1024,Add,SPD,675,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,40,1,ATK,1046,Add,SPD,690,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,41,1,ATK,1068,Add,SPD,705,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,42,1,ATK,1090,Add,SPD,720,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,43,1,ATK,1112,Add,SPD,735,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,44,1,ATK,1134,Add,SPD,750,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,45,1,ATK,1156,Add,SPD,765,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,46,1,ATK,1178,Add,SPD,780,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,47,1,ATK,1200,Add,SPD,795,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,48,1,ATK,1222,Add,SPD,810,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,49,1,ATK,1244,Add,SPD,825,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,50,1,ATK,1266,Add,SPD,840,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,51,1,ATK,1298,Add,SPD,876,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,52,1,ATK,1330,Add,SPD,912,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,53,1,ATK,1362,Add,SPD,948,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,54,1,ATK,1394,Add,SPD,984,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,55,1,ATK,1426,Add,SPD,1020,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,56,1,ATK,1458,Add,SPD,1056,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,57,1,ATK,1490,Add,SPD,1092,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,58,1,ATK,1522,Add,SPD,1128,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,59,1,ATK,1554,Add,SPD,1164,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,60,1,ATK,1586,Add,SPD,1200,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,61,1,ATK,1618,Add,SPD,1236,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,62,1,ATK,1650,Add,SPD,1272,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,63,1,ATK,1682,Add,SPD,1308,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,64,1,ATK,1714,Add,SPD,1344,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,65,1,ATK,1746,Add,SPD,1380,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,66,1,ATK,1778,Add,SPD,1416,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,67,1,ATK,1810,Add,SPD,1452,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,68,1,ATK,1842,Add,SPD,1488,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,69,1,ATK,1874,Add,SPD,1524,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,70,1,ATK,1906,Add,SPD,1560,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,71,1,ATK,1938,Add,SPD,1596,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,72,1,ATK,1970,Add,SPD,1632,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,73,1,ATK,2002,Add,SPD,1668,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,74,1,ATK,2034,Add,SPD,1704,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,75,1,ATK,2066,Add,SPD,1740,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,76,1,ATK,2098,Add,SPD,1776,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,77,1,ATK,2130,Add,SPD,1812,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,78,1,ATK,2162,Add,SPD,1848,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,79,1,ATK,2194,Add,SPD,1884,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,80,1,ATK,2226,Add,SPD,1920,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,81,1,ATK,2258,Add,SPD,1956,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,82,1,ATK,2290,Add,SPD,1992,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,83,1,ATK,2322,Add,SPD,2028,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,84,1,ATK,2354,Add,SPD,2064,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,85,1,ATK,2386,Add,SPD,2100,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,86,1,ATK,2418,Add,SPD,2136,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,87,1,ATK,2450,Add,SPD,2172,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,88,1,ATK,2482,Add,SPD,2208,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,89,1,ATK,2514,Add,SPD,2244,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,90,1,ATK,2546,Add,SPD,2280,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,91,1,ATK,2578,Add,SPD,2316,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,92,1,ATK,2610,Add,SPD,2352,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,93,1,ATK,2642,Add,SPD,2388,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,94,1,ATK,2674,Add,SPD,2424,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,95,1,ATK,2706,Add,SPD,2460,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,96,1,ATK,2738,Add,SPD,2496,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,97,1,ATK,2770,Add,SPD,2532,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,98,1,ATK,2802,Add,SPD,2568,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,99,1,ATK,2834,Add,SPD,2604,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,100,1,ATK,2866,Add,SPD,2640,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,101,1,ATK,2918,Add,SPD,2681,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,102,1,ATK,2970,Add,SPD,2722,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,103,1,ATK,3022,Add,SPD,2763,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,104,1,ATK,3074,Add,SPD,2804,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,105,1,ATK,3126,Add,SPD,2845,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,106,1,ATK,3178,Add,SPD,2886,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,107,1,ATK,3230,Add,SPD,2927,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,108,1,ATK,3282,Add,SPD,2968,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,109,1,ATK,3334,Add,SPD,3009,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,110,1,ATK,3386,Add,SPD,3050,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,111,1,ATK,3438,Add,SPD,3091,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,112,1,ATK,3490,Add,SPD,3132,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,113,1,ATK,3542,Add,SPD,3173,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,114,1,ATK,3594,Add,SPD,3214,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,115,1,ATK,3646,Add,SPD,3255,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,116,1,ATK,3698,Add,SPD,3296,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,117,1,ATK,3750,Add,SPD,3337,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,118,1,ATK,3802,Add,SPD,3378,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,119,1,ATK,3854,Add,SPD,3419,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,120,1,ATK,3906,Add,SPD,3460,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,121,1,ATK,3958,Add,SPD,3501,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,122,1,ATK,4010,Add,SPD,3542,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,123,1,ATK,4062,Add,SPD,3583,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,124,1,ATK,4114,Add,SPD,3624,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,125,1,ATK,4166,Add,SPD,3665,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,126,1,ATK,4218,Add,SPD,3706,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,127,1,ATK,4270,Add,SPD,3747,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,128,1,ATK,4322,Add,SPD,3788,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,129,1,ATK,4374,Add,SPD,3829,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,130,1,ATK,4426,Add,SPD,3870,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,131,1,ATK,4478,Add,SPD,3911,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,132,1,ATK,4530,Add,SPD,3952,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,133,1,ATK,4582,Add,SPD,3993,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,134,1,ATK,4634,Add,SPD,4034,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,135,1,ATK,4686,Add,SPD,4075,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,136,1,ATK,4738,Add,SPD,4116,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,137,1,ATK,4790,Add,SPD,4157,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,138,1,ATK,4842,Add,SPD,4198,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,139,1,ATK,4894,Add,SPD,4239,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,140,1,ATK,4946,Add,SPD,4280,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,141,1,ATK,4998,Add,SPD,4321,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,142,1,ATK,5050,Add,SPD,4362,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,143,1,ATK,5102,Add,SPD,4403,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,144,1,ATK,5154,Add,SPD,4444,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,145,1,ATK,5206,Add,SPD,4485,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,146,1,ATK,5258,Add,SPD,4526,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,147,1,ATK,5310,Add,SPD,4567,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,148,1,ATK,5362,Add,SPD,4608,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,149,1,ATK,5414,Add,SPD,4649,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,150,1,ATK,5466,Add,SPD,4690,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,151,1,ATK,5549,Add,SPD,4750,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,152,1,ATK,5632,Add,SPD,4810,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,153,1,ATK,5715,Add,SPD,4870,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,154,1,ATK,5798,Add,SPD,4930,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,155,1,ATK,5881,Add,SPD,4990,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,156,1,ATK,5964,Add,SPD,5050,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,157,1,ATK,6047,Add,SPD,5110,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,158,1,ATK,6130,Add,SPD,5170,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,159,1,ATK,6213,Add,SPD,5230,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,160,1,ATK,6296,Add,SPD,5290,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,161,1,ATK,6379,Add,SPD,5350,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,162,1,ATK,6462,Add,SPD,5410,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,163,1,ATK,6545,Add,SPD,5470,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,164,1,ATK,6628,Add,SPD,5530,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,165,1,ATK,6711,Add,SPD,5590,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,166,1,ATK,6794,Add,SPD,5650,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,167,1,ATK,6877,Add,SPD,5710,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,168,1,ATK,6960,Add,SPD,5770,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,169,1,ATK,7043,Add,SPD,5830,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,170,1,ATK,7126,Add,SPD,5890,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,171,1,ATK,7209,Add,SPD,5950,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,172,1,ATK,7292,Add,SPD,6010,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,173,1,ATK,7375,Add,SPD,6070,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,174,1,ATK,7458,Add,SPD,6130,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,175,1,ATK,7541,Add,SPD,6190,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,176,1,ATK,7624,Add,SPD,6250,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,177,1,ATK,7707,Add,SPD,6310,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,178,1,ATK,7790,Add,SPD,6370,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,179,1,ATK,7873,Add,SPD,6430,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,180,1,ATK,7956,Add,SPD,6490,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,181,1,ATK,8039,Add,SPD,6550,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,182,1,ATK,8122,Add,SPD,6610,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,183,1,ATK,8205,Add,SPD,6670,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,184,1,ATK,8288,Add,SPD,6730,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,185,1,ATK,8371,Add,SPD,6790,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,186,1,ATK,8454,Add,SPD,6850,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,187,1,ATK,8537,Add,SPD,6910,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,188,1,ATK,8620,Add,SPD,6970,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,189,1,ATK,8703,Add,SPD,7030,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,190,1,ATK,8786,Add,SPD,7090,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,191,1,ATK,8869,Add,SPD,7150,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,192,1,ATK,8952,Add,SPD,7210,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,193,1,ATK,9035,Add,SPD,7270,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,194,1,ATK,9118,Add,SPD,7330,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,195,1,ATK,9201,Add,SPD,7390,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,196,1,ATK,9284,Add,SPD,7450,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,197,1,ATK,9367,Add,SPD,7510,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,198,1,ATK,9450,Add,SPD,7570,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,199,1,ATK,9533,Add,SPD,7630,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,200,1,ATK,9616,Add,SPD,7690,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,201,1,ATK,9716,Add,SPD,7787,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,202,1,ATK,9816,Add,SPD,7884,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,203,1,ATK,9916,Add,SPD,7981,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,204,1,ATK,10016,Add,SPD,8078,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,205,1,ATK,10116,Add,SPD,8175,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,206,1,ATK,10216,Add,SPD,8272,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,207,1,ATK,10316,Add,SPD,8369,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,208,1,ATK,10416,Add,SPD,8466,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,209,1,ATK,10516,Add,SPD,8563,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,210,1,ATK,10616,Add,SPD,8660,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,211,1,ATK,10716,Add,SPD,8757,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,212,1,ATK,10816,Add,SPD,8854,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,213,1,ATK,10916,Add,SPD,8951,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,214,1,ATK,11016,Add,SPD,9048,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,215,1,ATK,11116,Add,SPD,9145,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,216,1,ATK,11216,Add,SPD,9242,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,217,1,ATK,11316,Add,SPD,9339,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,218,1,ATK,11416,Add,SPD,9436,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,219,1,ATK,11516,Add,SPD,9533,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,220,1,ATK,11616,Add,SPD,9630,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,221,1,ATK,11716,Add,SPD,9727,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,222,1,ATK,11816,Add,SPD,9824,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,223,1,ATK,11916,Add,SPD,9921,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,224,1,ATK,12016,Add,SPD,10018,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,225,1,ATK,12116,Add,SPD,10115,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,226,1,ATK,12216,Add,SPD,10212,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,227,1,ATK,12316,Add,SPD,10309,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,228,1,ATK,12416,Add,SPD,10406,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,229,1,ATK,12516,Add,SPD,10503,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,230,1,ATK,12616,Add,SPD,10600,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,231,1,ATK,12716,Add,SPD,10697,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,232,1,ATK,12816,Add,SPD,10794,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,233,1,ATK,12916,Add,SPD,10891,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,234,1,ATK,13016,Add,SPD,10988,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,235,1,ATK,13116,Add,SPD,11085,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,236,1,ATK,13216,Add,SPD,11182,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,237,1,ATK,13316,Add,SPD,11279,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,238,1,ATK,13416,Add,SPD,11376,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,239,1,ATK,13516,Add,SPD,11473,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,240,1,ATK,13616,Add,SPD,11570,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,241,1,ATK,13716,Add,SPD,11667,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,242,1,ATK,13816,Add,SPD,11764,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,243,1,ATK,13916,Add,SPD,11861,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,244,1,ATK,14016,Add,SPD,11958,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,245,1,ATK,14116,Add,SPD,12055,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,246,1,ATK,14216,Add,SPD,12152,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,247,1,ATK,14316,Add,SPD,12249,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,248,1,ATK,14416,Add,SPD,12346,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,249,1,ATK,14516,Add,SPD,12443,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,250,1,ATK,14616,Add,SPD,12540,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,251,1,ATK,14764,Add,SPD,12673,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,252,1,ATK,14912,Add,SPD,12806,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,253,1,ATK,15060,Add,SPD,12939,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,254,1,ATK,15208,Add,SPD,13072,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,255,1,ATK,15356,Add,SPD,13205,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,256,1,ATK,15504,Add,SPD,13338,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,257,1,ATK,15652,Add,SPD,13471,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,258,1,ATK,15800,Add,SPD,13604,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,259,1,ATK,15948,Add,SPD,13737,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,260,1,ATK,16096,Add,SPD,13870,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,261,1,ATK,16244,Add,SPD,14003,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,262,1,ATK,16392,Add,SPD,14136,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,263,1,ATK,16540,Add,SPD,14269,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,264,1,ATK,16688,Add,SPD,14402,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,265,1,ATK,16836,Add,SPD,14535,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,266,1,ATK,16984,Add,SPD,14668,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,267,1,ATK,17132,Add,SPD,14801,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,268,1,ATK,17280,Add,SPD,14934,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,269,1,ATK,17428,Add,SPD,15067,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,270,1,ATK,17576,Add,SPD,15200,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,271,1,ATK,17724,Add,SPD,15333,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,272,1,ATK,17872,Add,SPD,15466,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,273,1,ATK,18020,Add,SPD,15599,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,274,1,ATK,18168,Add,SPD,15732,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,275,1,ATK,18316,Add,SPD,15865,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,276,1,ATK,18464,Add,SPD,15998,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,277,1,ATK,18612,Add,SPD,16131,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,278,1,ATK,18760,Add,SPD,16264,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,279,1,ATK,18908,Add,SPD,16397,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,280,1,ATK,19056,Add,SPD,16530,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,281,1,ATK,19204,Add,SPD,16663,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,282,1,ATK,19352,Add,SPD,16796,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,283,1,ATK,19500,Add,SPD,16929,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,284,1,ATK,19648,Add,SPD,17062,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,285,1,ATK,19796,Add,SPD,17195,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,286,1,ATK,19944,Add,SPD,17328,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,287,1,ATK,20092,Add,SPD,17461,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,288,1,ATK,20240,Add,SPD,17594,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,289,1,ATK,20388,Add,SPD,17727,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,290,1,ATK,20536,Add,SPD,17860,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,291,1,ATK,20684,Add,SPD,17993,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,292,1,ATK,20832,Add,SPD,18126,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,293,1,ATK,20980,Add,SPD,18259,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,294,1,ATK,21128,Add,SPD,18392,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,295,1,ATK,21276,Add,SPD,18525,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,296,1,ATK,21424,Add,SPD,18658,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,297,1,ATK,21572,Add,SPD,18791,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,298,1,ATK,21720,Add,SPD,18924,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,299,1,ATK,21868,Add,SPD,19057,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,300,1,ATK,22016,Add,SPD,19190,Add,NONE,0,Add,,,,,,,, \ No newline at end of file From cbeb656b7f32494fbb89002b822b352c9c5b9f8a Mon Sep 17 00:00:00 2001 From: Suho Lee Date: Wed, 6 Dec 2023 10:37:19 +0900 Subject: [PATCH 62/70] fix: add docs --- .Lib9c.Tests/AccountExtensions.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.Lib9c.Tests/AccountExtensions.cs b/.Lib9c.Tests/AccountExtensions.cs index 5dd4c6efc7..cb0b71035e 100644 --- a/.Lib9c.Tests/AccountExtensions.cs +++ b/.Lib9c.Tests/AccountExtensions.cs @@ -32,6 +32,11 @@ public static class AccountExtensions /// This can be very slow depending on the size of the state. /// For test backward compatibility only. Should not be used in production. /// + /// The account to remove the value from. + /// The address of the value to remove. + /// + /// A new instance with the value removed. + /// public static IAccount SetNull(this IAccount account, Address address) { var trie = MockState.Empty.Trie; From 25ae8ea3e53d5079a85d27259efa9515371606a6 Mon Sep 17 00:00:00 2001 From: moreal Date: Wed, 6 Dec 2023 11:27:17 +0900 Subject: [PATCH 63/70] Keep action type id instead of versioning up --- .Lib9c.Tests/Action/MintAssets0Test.cs | 390 ------------------------- Lib9c/Action/MintAssets.cs | 2 +- Lib9c/Action/MintAssets0.cs | 231 --------------- 3 files changed, 1 insertion(+), 622 deletions(-) delete mode 100644 .Lib9c.Tests/Action/MintAssets0Test.cs delete mode 100644 Lib9c/Action/MintAssets0.cs diff --git a/.Lib9c.Tests/Action/MintAssets0Test.cs b/.Lib9c.Tests/Action/MintAssets0Test.cs deleted file mode 100644 index 6c09f36eca..0000000000 --- a/.Lib9c.Tests/Action/MintAssets0Test.cs +++ /dev/null @@ -1,390 +0,0 @@ -namespace Lib9c.Tests.Action -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Security.Cryptography; - using Bencodex.Types; - using Libplanet.Action.State; - using Libplanet.Common; - using Libplanet.Crypto; - using Libplanet.Types.Assets; - using Libplanet.Types.Tx; - using Nekoyume; - using Nekoyume.Action; - using Nekoyume.Model; - using Nekoyume.Model.Item; - using Nekoyume.Model.Mail; - using Nekoyume.Model.State; - using Xunit; - - public class MintAssets0Test - { - private readonly Address _adminAddress; - private readonly ISet
_minters; - private readonly Currency _ncgCurrency; - private readonly IAccount _prevState; - - private readonly TableSheets _tableSheets; - - public MintAssets0Test() - { - _adminAddress = new PrivateKey().Address; - _ncgCurrency = Currency.Legacy("NCG", 2, null); - _minters = new HashSet
- { - new PrivateKey().Address, - new PrivateKey().Address, - new PrivateKey().Address, - }; - _prevState = new Account( - MockState.Empty - .SetState(AdminState.Address, new AdminState(_adminAddress, 100).Serialize()) - .SetState(Addresses.AssetMinters, new List(_minters.Select(m => m.Serialize()))) - ); - - var sheets = TableSheetsImporter.ImportSheets(); - foreach (var (key, value) in sheets) - { - _prevState = _prevState.SetState(Addresses.TableSheet.Derive(key), value.Serialize()); - } - - _tableSheets = new TableSheets(sheets); - } - - [Fact] - public void PlainValue() - { - var r = new List() - { - new (default, _ncgCurrency * 100, null), - new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), - }; - var act = new MintAssets0(r, null); - var expected = Dictionary.Empty - .Add("type_id", "mint_assets") - .Add("values", List.Empty - .Add(Null.Value) - .Add(new List(default(Address).Bencoded, (_ncgCurrency * 100).Serialize(), default(Null))) - .Add(new List(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde").Bencoded, (_ncgCurrency * 1000).Serialize(), default(Null)))); - Assert.Equal( - expected, - act.PlainValue - ); - - var act2 = new MintAssets0(r, "memo"); - var expected2 = Dictionary.Empty - .Add("type_id", "mint_assets") - .Add("values", List.Empty - .Add((Text)"memo") - .Add(new List(default(Address).Bencoded, (_ncgCurrency * 100).Serialize(), default(Null))) - .Add(new List(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde").Bencoded, (_ncgCurrency * 1000).Serialize(), default(Null)))); - Assert.Equal( - expected2, - act2.PlainValue - ); - } - - [Fact] - public void LoadPlainValue() - { - var pv = Dictionary.Empty - .Add("type_id", "mint_assets") - .Add("values", List.Empty - .Add(default(Null)) - .Add(new List(default(Address).Bencoded, (_ncgCurrency * 100).Serialize(), default(Null))) - .Add(new List(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde").Bencoded, (_ncgCurrency * 1000).Serialize(), default(Null)))); - var act = new MintAssets0(); - act.LoadPlainValue(pv); - - var expected = new List() - { - new (default, _ncgCurrency * 100, null), - new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), - }; - Assert.Equal(expected, act.MintSpecs); - Assert.Null(act.Memo); - - var pv2 = Dictionary.Empty - .Add("type_id", "mint_assets") - .Add("values", List.Empty - .Add((Text)"memo") - .Add(new List(default(Address).Bencoded, (_ncgCurrency * 100).Serialize(), default(Null))) - .Add(new List(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde").Bencoded, (_ncgCurrency * 1000).Serialize(), default(Null)))); - var act2 = new MintAssets0(); - act2.LoadPlainValue(pv2); - Assert.Equal("memo", act2.Memo); - } - - [Fact] - public void Execute_With_FungibleAssetValue() - { - var action = new MintAssets0( - new List() - { - new (default, _ncgCurrency * 100, null), - new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), - }, - null - ); - IAccount nextState = action.Execute( - new ActionContext() - { - PreviousState = _prevState, - Signer = _minters.First(), - BlockIndex = 1, - } - ); - - Assert.Equal( - _ncgCurrency * 100, - nextState.GetBalance(default, _ncgCurrency) - ); - Assert.Equal( - _ncgCurrency * 1000, - nextState.GetBalance(new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency) - ); - } - - [Fact] - public void Execute_With_FungibleItemValue() - { - IAccount prevState = GenerateAvatar(_prevState, out Address avatarAddress); - HashDigest fungibleId = HashDigest.FromString( - "7f5d25371e58c0f3d5a33511450f73c2e0fa4fac32a92e1cbe64d3bf2fef6328" - ); - - var action = new MintAssets0( - new List() - { - new ( - avatarAddress, - null, - new FungibleItemValue(fungibleId, 42) - ), - }, - "Execute_With_FungibleItemValue" - ); - IAccount nextState = action.Execute( - new ActionContext() - { - PreviousState = prevState, - Signer = _minters.First(), - BlockIndex = 1, - } - ); - - var inventory = nextState.GetInventory(avatarAddress.Derive(SerializeKeys.LegacyInventoryKey)); - Assert.Contains(inventory.Items, i => i.count == 42 && i.item is Material m && m.FungibleId.Equals(fungibleId)); - - var avatarDict = Assert.IsType(nextState.GetState(avatarAddress)); - var mailBox = new MailBox((List)avatarDict[SerializeKeys.MailBoxKey]); - Assert.Single(mailBox); - var mail = Assert.IsType(mailBox.First()); - Assert.Equal(new[] { (fungibleId, 42) }, mail.FungibleIdAndCounts); - Assert.Equal(action.Memo, mail.Memo); - } - - [Fact] - public void Execute_With_Mixed() - { - IAccount prevState = GenerateAvatar(_prevState, out Address avatarAddress); - HashDigest fungibleId = HashDigest.FromString( - "7f5d25371e58c0f3d5a33511450f73c2e0fa4fac32a92e1cbe64d3bf2fef6328" - ); - - var action = new MintAssets0( - new List() - { - new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), - new ( - avatarAddress, - Currencies.StakeRune * 123, - null - ), - new ( - avatarAddress, - null, - new FungibleItemValue(fungibleId, 42) - ), - }, - "Execute_With_FungibleItemValue" - ); - IAccount nextState = action.Execute( - new ActionContext() - { - PreviousState = prevState, - Signer = _minters.First(), - BlockIndex = 1, - } - ); - - var inventory = nextState.GetInventory(avatarAddress.Derive(SerializeKeys.LegacyInventoryKey)); - Assert.Contains(inventory.Items, i => i.count == 42 && i.item is Material m && m.FungibleId.Equals(fungibleId)); - - var avatarDict = Assert.IsType(nextState.GetState(avatarAddress)); - var mailBox = new MailBox((List)avatarDict[SerializeKeys.MailBoxKey]); - Assert.Single(mailBox); - var mail = Assert.IsType(mailBox.First()); - Assert.Equal(new[] { (fungibleId, 42) }, mail.FungibleIdAndCounts); - Assert.Equal(new[] { (avatarAddress, Currencies.StakeRune * 123) }, mail.FungibleAssetValues); - Assert.Equal(action.Memo, mail.Memo); - } - - [Fact] - public void Execute_Throws_InvalidMinterException() - { - var action = new MintAssets0( - new List() - { - new (default, _ncgCurrency * 100, null), - new (new Address("0x47d082a115c63e7b58b1532d20e631538eafadde"), _ncgCurrency * 1000, null), - }, - null - ); - - // Allows admin - _ = action.Execute( - new ActionContext() - { - PreviousState = _prevState, - Signer = _adminAddress, - BlockIndex = 1, - } - ); - - // Allows minters - foreach (Address m in _minters) - { - _ = action.Execute( - new ActionContext() - { - PreviousState = _prevState, - Signer = m, - BlockIndex = 1, - } - ); - } - - // Denies others - Assert.Throws(() => action.Execute( - new ActionContext() - { - PreviousState = _prevState, - Signer = default, - BlockIndex = 1, - } - )); - } - - [Fact] - public void Execute_Crystal() - { - var tx = Transaction.Deserialize(Convert.FromBase64String( - "ZDE6UzcxOjBFAiEAhzt5mDMzPwi6y+W+DJ53T4TKwt6YMaFTi38rKYqf7ZMCICV36ngA3Gi+rXkdG5hCUtlLXjAz8H2IKMNaCdCy/N90MTphbGR1Nzp0eXBlX2lkdTExOm1pbnRfYXNzZXRzdTY6dmFsdWVzbHU3Mzp7ImlhcCI6IHsiZ19za3UiOiAiZ19wa2dfYmxhY2tmcmlkYXkwMSIsICJhX3NrdSI6ICJhX3BrZ19ibGFja2ZyaWRheTAxIn19bDIwOgNS/yy36WH9ZHgDqZJiTdhQeCGFbGR1MTM6ZGVjaW1hbFBsYWNlczE6EnU3Om1pbnRlcnNudTY6dGlja2VydTc6Q1JZU1RBTGVpMjUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGVlbmVsMjA6H3yZ4KY1m33Wn0P0t+LAvTf5oidubDMyOjmR4E3YCNwLwksh9a23vxmXMS+HANrxM0vzSTbooIE6aTMwMDAwZWVlbDIwOh98meCmNZt91p9D9LfiwL03+aInbmwzMjr4+vksnA0OjgZpQ2Hqh7/IspqK6N6TBEuYRwpXY27Q4Gk0MDBlZWVlZWUxOmczMjpyn6JpWGSKNbU+jjkF0R7FOxtJKb9fSZiErtffYW9ZEzE6bGk0ZTE6bWxkdTEzOmRlY2ltYWxQbGFjZXMxOhJ1NzptaW50ZXJzbnU2OnRpY2tlcnU0Ok1lYWRlaTEwMDAwMDAwMDAwMDAwMDAwMDBlZTE6bmkxMTU3N2UxOnA2NToEq54xog2Nv1BCv8Js6dntmg4yrXh6HlqjroGI+lFDhhU1rMcTLNjnTUwfC5T4Q1deOt1piNPMsfVNfFn7lTXXiTE6czIwOhwq6XOAz7T3MgSeRU9tmiXUlnxvMTp0dTI3OjIyMDEtMDEtMzFUMjM6NTk6NTkuOTk5MDAwWjE6dWxlZQ==")); - var a = tx.Actions.First(); - var action = new MintAssets0(); - action.LoadPlainValue(a); - var address = action.MintSpecs!.First().Recipient; - var avatarAddress = action.MintSpecs.Last().Recipient; - IAccount prevState = GenerateAvatar(_prevState, address, avatarAddress); - IAccount nextState = action.Execute( - new ActionContext() - { - PreviousState = prevState, - Signer = _minters.First(), - BlockIndex = 1, - } - ); - - var inventory = nextState.GetInventory(avatarAddress.Derive(SerializeKeys.LegacyInventoryKey)); - var avatarDict = Assert.IsType(nextState.GetState(avatarAddress)); - var mailBox = new MailBox((List)avatarDict[SerializeKeys.MailBoxKey]); - Assert.Single(mailBox); - var mail = Assert.IsType(mailBox.First()); - Assert.Equal(action.Memo, mail.Memo); - - foreach (var mintSpec in action.MintSpecs) - { - if (mintSpec.Assets.HasValue) - { - var fav = mintSpec.Assets.Value; - Assert.Equal(fav, nextState.GetBalance(address, fav.Currency)); - Assert.Null(mail.FungibleAssetValues); - } - - if (mintSpec.Items.HasValue) - { - var item = mintSpec.Items.Value; - var fungibleId = item.Id; - var itemCount = item.Count; - Assert.Contains(inventory.Items, i => i.count == itemCount && i.item is Material m && m.FungibleId.Equals(fungibleId)); - Assert.Contains( - mail.FungibleIdAndCounts, - tuple => tuple.count == itemCount && tuple.fungibleId.Equals(fungibleId) - ); - } - } - } - - private IAccount GenerateAvatar(IAccount state, out Address avatarAddress) - { - var address = new PrivateKey().Address; - var agentState = new AgentState(address); - avatarAddress = address.Derive("avatar"); - var rankingMapAddress = new PrivateKey().Address; - var avatarState = new AvatarState( - avatarAddress, - address, - 0, - _tableSheets.GetAvatarSheets(), - new GameConfigState(), - rankingMapAddress) - { - worldInformation = new WorldInformation( - 0, - _tableSheets.WorldSheet, - GameConfig.RequireClearedStageLevel.ActionsInShop), - }; - agentState.avatarAddresses[0] = avatarAddress; - - state = state - .SetState(address, agentState.Serialize()) - .SetState(avatarAddress, avatarState.SerializeV2()) - .SetState( - avatarAddress.Derive(SerializeKeys.LegacyInventoryKey), - avatarState.inventory.Serialize()); - - return state; - } - - private IAccount GenerateAvatar(IAccount state, Address address, Address avatarAddress) - { - var agentState = new AgentState(address); - var rankingMapAddress = new PrivateKey().Address; - var avatarState = new AvatarState( - avatarAddress, - address, - 0, - _tableSheets.GetAvatarSheets(), - new GameConfigState(), - rankingMapAddress) - { - worldInformation = new WorldInformation( - 0, - _tableSheets.WorldSheet, - GameConfig.RequireClearedStageLevel.ActionsInShop), - }; - agentState.avatarAddresses[0] = avatarAddress; - - state = state - .SetState(address, agentState.Serialize()) - .SetState(avatarAddress, avatarState.SerializeV2()) - .SetState( - avatarAddress.Derive(SerializeKeys.LegacyInventoryKey), - avatarState.inventory.Serialize()); - - return state; - } - } -} diff --git a/Lib9c/Action/MintAssets.cs b/Lib9c/Action/MintAssets.cs index 03c0ccd6bb..dd82d6c3d9 100644 --- a/Lib9c/Action/MintAssets.cs +++ b/Lib9c/Action/MintAssets.cs @@ -20,7 +20,7 @@ namespace Nekoyume.Action [ActionType(TypeIdentifier)] public class MintAssets : ActionBase { - public const string TypeIdentifier = "mint_assets2"; + public const string TypeIdentifier = "mint_assets"; public MintAssets() { diff --git a/Lib9c/Action/MintAssets0.cs b/Lib9c/Action/MintAssets0.cs deleted file mode 100644 index ba65d1e82c..0000000000 --- a/Lib9c/Action/MintAssets0.cs +++ /dev/null @@ -1,231 +0,0 @@ -#nullable enable - -using System; -using System.Collections.Generic; -using System.Linq; -using Bencodex.Types; -using Lib9c; -using Libplanet.Action; -using Libplanet.Action.State; -using Libplanet.Crypto; -using Libplanet.Types.Assets; -using Nekoyume.Model; -using Nekoyume.Model.Item; -using Nekoyume.Model.Mail; -using Nekoyume.Model.State; -using Nekoyume.TableData; - -namespace Nekoyume.Action -{ - [ActionType(TypeIdentifier)] - public class MintAssets0 : ActionBase - { - public const string TypeIdentifier = "mint_assets"; - - public MintAssets0() - { - } - - public MintAssets0(IEnumerable specs, string? memo) - { - MintSpecs = specs.ToList(); - Memo = memo; - } - - public override IAccount Execute(IActionContext context) - { - context.UseGas(1); - - if (MintSpecs is null) - { - throw new InvalidOperationException(); - } - - IAccount state = context.PreviousState; - HashSet
allowed = new(); - - if (state.TryGetState(Addresses.Admin, out Dictionary rawDict)) - { - allowed.Add(new AdminState(rawDict).AdminAddress); - } - - if (state.TryGetState(Addresses.AssetMinters, out List minters)) - { - allowed.UnionWith(minters.Select(m => m.ToAddress())); - } - - if (!allowed.Contains(context.Signer)) - { - throw new InvalidMinterException(context.Signer); - } - - Dictionary, List)> mailRecords = new(); - - foreach (var (recipient, assets, items) in MintSpecs) - { - if (!mailRecords.TryGetValue(recipient, out var records)) - { - mailRecords[recipient] = records = new( - new List(), - new List() - ); - } - - (List favs, List fivs) = records; - - if (assets is { } assetsNotNull) - { - state = state.MintAsset(context, recipient, assetsNotNull); - favs.Add(assetsNotNull); - } - - if (items is { } itemsNotNull) - { - Address inventoryAddr = recipient.Derive(SerializeKeys.LegacyInventoryKey); - Inventory inventory = state.GetInventory(inventoryAddr); - MaterialItemSheet itemSheet = state.GetSheet(); - if (itemSheet is null || itemSheet.OrderedList is null) - { - throw new InvalidOperationException(); - } - - foreach (MaterialItemSheet.Row row in itemSheet.OrderedList) - { - if (row.ItemId.Equals(itemsNotNull.Id)) - { - Material item = ItemFactory.CreateMaterial(row); - inventory.AddFungibleItem(item, itemsNotNull.Count); - } - } - - state = state.SetState(inventoryAddr, inventory.Serialize()); - fivs.Add(itemsNotNull); - } - } - - IRandom rng = context.GetRandom(); - foreach (var recipient in mailRecords.Keys) - { - if ( - state.GetState(recipient) is Dictionary dict && - dict.TryGetValue((Text)SerializeKeys.MailBoxKey, out IValue rawMailBox) - ) - { - var mailBox = new MailBox((List)rawMailBox); - (List favs, List fivs) = mailRecords[recipient]; - mailBox.Add( - new UnloadFromMyGaragesRecipientMail( - context.BlockIndex, - rng.GenerateRandomGuid(), - context.BlockIndex, - favs.Select(v => (recipient, v)), - fivs.Select(v => (v.Id, v.Count)), - Memo - ) - ); - mailBox.CleanUp(); - dict = dict.SetItem(SerializeKeys.MailBoxKey, mailBox.Serialize()); - state = state.SetState(recipient, dict); - } - } - - return state; - } - - public override void LoadPlainValue(IValue plainValue) - { - var asDict = (Dictionary)plainValue; - var asList = (List)asDict["values"]; - - if (asList[0] is Text memo) - { - Memo = memo; - } - else - { - Memo = null; - } - - MintSpecs = asList.Skip(1).Select(v => - { - return new MintSpec((List)v); - }).ToList(); - } - - public override IValue PlainValue - { - get - { - var values = new List - { - Memo is { } memoNotNull ? (Text)memoNotNull : Null.Value - }; - if (MintSpecs is { } mintSpecsNotNull) - { - values.AddRange(mintSpecsNotNull.Select(s => s.Serialize())); - } - - return new Dictionary( - new[] - { - new KeyValuePair((Text)"type_id", (Text)TypeIdentifier), - new KeyValuePair((Text)"values", new List(values)) - } - ); - } - } - - public List? MintSpecs - { - get; - private set; - } - - public string? Memo { get; private set; } - - public readonly struct MintSpec - { - public MintSpec(List bencoded) - : this( - bencoded[0].ToAddress(), - bencoded[1] is List rawAssets ? rawAssets.ToFungibleAssetValue() : null, - bencoded[2] is List rawItems ? new FungibleItemValue(rawItems) : null - ) - { - } - - public MintSpec( - Address recipient, - FungibleAssetValue? assets, - FungibleItemValue? items - ) - { - Recipient = recipient; - Assets = assets; - Items = items; - } - - public IValue Serialize() => new List( - Recipient.Serialize(), - Assets?.Serialize() ?? Null.Value, - Items?.Serialize() ?? Null.Value - ); - - internal void Deconstruct( - out Address recipient, - out FungibleAssetValue? assets, - out FungibleItemValue? items - ) - { - recipient = Recipient; - assets = Assets; - items = Items; - } - - public Address Recipient { get; } - public FungibleAssetValue? Assets { get; } - public FungibleItemValue? Items { get; } - - } - } -} From 63ba334bde6aea7ec663f2b39fd7838ce2cd0a17 Mon Sep 17 00:00:00 2001 From: Kim sm Date: Wed, 6 Dec 2023 15:52:52 +0900 Subject: [PATCH 64/70] Merge pull request #2274 from planetarium/feature/vampire Introduce `Vampiric` : `ActionBuff` --- .Lib9c.Tests/Model/PlayerTest.cs | 89 + Lib9c/Model/BattleStatus/Arena/ArenaTick.cs | 2 +- Lib9c/Model/BattleStatus/Tick.cs | 2 +- Lib9c/Model/Buff/ActionBuff.cs | 8 - Lib9c/Model/Buff/Bleed.cs | 4 +- Lib9c/Model/Buff/BuffFactory.cs | 4 + Lib9c/Model/Buff/Stun.cs | 12 - Lib9c/Model/Buff/Vampiric.cs | 81 + Lib9c/Model/Character/ArenaCharacter.cs | 34 +- Lib9c/Model/Character/CharacterBase.cs | 35 +- Lib9c/Model/IArena.cs | 1 + Lib9c/Model/IStage.cs | 8 +- Lib9c/Model/Skill/ActionBuffType.cs | 1 + Lib9c/TableCSV/Rune/RuneOptionSheet.csv | 4802 ++++++++--------- Lib9c/TableCSV/Skill/ActionBuffSheet.csv | 3 +- Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv | 3 +- Lib9c/TableCSV/Skill/SkillSheet.csv | 3 +- 17 files changed, 2643 insertions(+), 2449 deletions(-) create mode 100644 Lib9c/Model/Buff/Vampiric.cs diff --git a/.Lib9c.Tests/Model/PlayerTest.cs b/.Lib9c.Tests/Model/PlayerTest.cs index 4d6098b05d..ead2f76dfe 100644 --- a/.Lib9c.Tests/Model/PlayerTest.cs +++ b/.Lib9c.Tests/Model/PlayerTest.cs @@ -570,5 +570,94 @@ public void GiveStun() Assert.Contains(logList, e => e is RemoveBuffs); Assert.Contains(logList, e => e is Nekoyume.Model.BattleStatus.NormalAttack); } + + [Theory] + [InlineData(1, 100)] + [InlineData(2, 10)] + [InlineData(1, 1)] + public void Vampiric(int duration, int percent) + { + var defaultAttack = SkillFactory.GetV1( + _tableSheets.SkillSheet.Values.First(r => r.Id == GameConfig.DefaultAttackId), + 100, + 100 + ); + + var simulator = new StageSimulator( + _random, + _avatarState, + new List(), + null, + new List(), + 1, + 1, + _tableSheets.StageSheet[1], + _tableSheets.StageWaveSheet[1], + false, + 20, + _tableSheets.GetSimulatorSheets(), + _tableSheets.EnemySkillSheet, + _tableSheets.CostumeStatSheet, + StageSimulator.GetWaveRewards( + _random, + _tableSheets.StageSheet[1], + _tableSheets.MaterialItemSheet) + ); + var player = simulator.Player; + var enemy = new Enemy(player, _tableSheets.CharacterSheet.Values.First(), 1); + player.Targets.Add(enemy); + simulator.Characters = new SimplePriorityQueue(); + simulator.Characters.Enqueue(enemy, 0); + player.InitAI(); + player.OverrideSkill(defaultAttack); + + var actionBuffSheet = _tableSheets.ActionBuffSheet; + // force add buff 'Vampiric' + // 705000 is ActionBuff id of Vampiric + var vampiric = (Vampiric)BuffFactory.GetCustomActionBuff( + new SkillCustomField { BuffDuration = duration, BuffValue = percent }, actionBuffSheet[705000]); + player.AddBuff(vampiric); + var row = actionBuffSheet.Values.First(); + var bleed = BuffFactory.GetActionBuff(enemy.Stats, row); + player.AddBuff(bleed); + player.Tick(); + player.Tick(); + Assert.NotEmpty(simulator.Log); + var log = simulator.Log; + var logCount = log.Count; + var logList = log.ToList(); + for (int i = 0; i < logCount; i++) + { + var currLog = logList[i]; + if (currLog is Nekoyume.Model.BattleStatus.NormalAttack) + { + var nextLog = logList[i + 1]; + if (currLog.Character.ActionBuffs.Any(actionBuff => actionBuff is Vampiric)) + { + Assert.True(nextLog is Tick); + } + else + { + Assert.True(nextLog is TickDamage); + } + } + else if (currLog is Tick healSkill) + { + Assert.Equal(vampiric.RowData.Id, healSkill.SkillId); + var healInfo = healSkill.SkillInfos.First(); + var prevAttack = logList.Take(i).OfType() + .Last(); + Assert.Equal( + (int)(prevAttack.SkillInfos.First().Effect * vampiric.BasisPoint / 10000m), + healInfo.Effect); + } + } + + Assert.True(logList.Count > 0); + Assert.Contains(logList, e => e is Nekoyume.Model.BattleStatus.NormalAttack); + Assert.Contains(logList, e => e is TickDamage); + Assert.Contains(logList, e => e is RemoveBuffs); + Assert.Contains(logList, e => e is Tick); + } } } diff --git a/Lib9c/Model/BattleStatus/Arena/ArenaTick.cs b/Lib9c/Model/BattleStatus/Arena/ArenaTick.cs index 56287ab473..980a806f4f 100644 --- a/Lib9c/Model/BattleStatus/Arena/ArenaTick.cs +++ b/Lib9c/Model/BattleStatus/Arena/ArenaTick.cs @@ -21,7 +21,7 @@ public ArenaTick(ArenaCharacter character, IEnumerable skillInfo public override IEnumerator CoExecute(IArena arena) { - yield return arena.CoTickDamage(Character, SkillInfos); + yield return arena.CoCustomEvent(Character, this); } } } diff --git a/Lib9c/Model/BattleStatus/Tick.cs b/Lib9c/Model/BattleStatus/Tick.cs index a0d6330032..75ee43dd15 100644 --- a/Lib9c/Model/BattleStatus/Tick.cs +++ b/Lib9c/Model/BattleStatus/Tick.cs @@ -22,7 +22,7 @@ public Tick(int skillId, CharacterBase character, IEnumerable skillIn public override IEnumerator CoExecute(IStage stage) { - yield return stage.CoTickDamage(Character, SkillId, SkillInfos); + yield return stage.CoCustomEvent(Character, this); } } } diff --git a/Lib9c/Model/Buff/ActionBuff.cs b/Lib9c/Model/Buff/ActionBuff.cs index 7f8723b365..91ecac20fd 100644 --- a/Lib9c/Model/Buff/ActionBuff.cs +++ b/Lib9c/Model/Buff/ActionBuff.cs @@ -27,13 +27,5 @@ protected ActionBuff(ActionBuff value) : base(value) RowData = value.RowData; CustomField = value.CustomField; } - - public abstract BattleStatus.Skill GiveEffect( - CharacterBase affectedCharacter, - int simulatorWaveTurn, bool copyCharacter = true); - - public abstract BattleStatus.Arena.ArenaSkill GiveEffectForArena( - ArenaCharacter affectedCharacter, - int simulatorWaveTurn); } } diff --git a/Lib9c/Model/Buff/Bleed.cs b/Lib9c/Model/Buff/Bleed.cs index 2cfb5b8f9a..e93e190617 100644 --- a/Lib9c/Model/Buff/Bleed.cs +++ b/Lib9c/Model/Buff/Bleed.cs @@ -31,7 +31,7 @@ public override object Clone() return new Bleed(this); } - public override BattleStatus.Skill GiveEffect(CharacterBase affectedCharacter, + public BattleStatus.Skill GiveEffect(CharacterBase affectedCharacter, int simulatorWaveTurn, bool copyCharacter = true) { var clone = copyCharacter ? (CharacterBase) affectedCharacter.Clone() : null; @@ -53,7 +53,7 @@ public override BattleStatus.Skill GiveEffect(CharacterBase affectedCharacter, null); } - public override ArenaSkill GiveEffectForArena( + public ArenaSkill GiveEffectForArena( ArenaCharacter affectedCharacter, int simulatorWaveTurn) { diff --git a/Lib9c/Model/Buff/BuffFactory.cs b/Lib9c/Model/Buff/BuffFactory.cs index eda605fb85..4435e32298 100644 --- a/Lib9c/Model/Buff/BuffFactory.cs +++ b/Lib9c/Model/Buff/BuffFactory.cs @@ -27,6 +27,8 @@ public static ActionBuff GetActionBuff(Stats stat, ActionBuffSheet.Row row) return new Bleed(row, power); case ActionBuffType.Stun: return new Stun(row); + case ActionBuffType.Vampiric: + return new Vampiric(row, 0); default: throw new ArgumentOutOfRangeException(); } @@ -40,6 +42,8 @@ public static ActionBuff GetCustomActionBuff(SkillCustomField customField, Actio return new Bleed(customField, row); case ActionBuffType.Stun: return new Stun(customField, row); + case ActionBuffType.Vampiric: + return new Vampiric(customField, row); default: throw new ArgumentOutOfRangeException(); } diff --git a/Lib9c/Model/Buff/Stun.cs b/Lib9c/Model/Buff/Stun.cs index 8431df1c3d..a4acb9ab2f 100644 --- a/Lib9c/Model/Buff/Stun.cs +++ b/Lib9c/Model/Buff/Stun.cs @@ -24,17 +24,5 @@ public override object Clone() { return new Stun(this); } - - public override BattleStatus.Skill GiveEffect(CharacterBase affectedCharacter, int simulatorWaveTurn, bool copyCharacter = true) - { - // Do not anything - return null; - } - - public override ArenaSkill GiveEffectForArena(ArenaCharacter affectedCharacter, int simulatorWaveTurn) - { - // Do not anything - return null; - } } } diff --git a/Lib9c/Model/Buff/Vampiric.cs b/Lib9c/Model/Buff/Vampiric.cs new file mode 100644 index 0000000000..e85f688875 --- /dev/null +++ b/Lib9c/Model/Buff/Vampiric.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using Nekoyume.Model.BattleStatus.Arena; +using Nekoyume.Model.Skill; +using Nekoyume.TableData; + +namespace Nekoyume.Model.Buff +{ + [Serializable] + public class Vampiric : ActionBuff + { + public int BasisPoint { get; } + + public Vampiric(ActionBuffSheet.Row row, int basisPoint) : base(row) + { + BasisPoint = basisPoint; + } + + public Vampiric(SkillCustomField customField, ActionBuffSheet.Row row) : base(customField, row) + { + BasisPoint = customField.BuffValue; + } + + protected Vampiric(Vampiric value) : base(value) + { + BasisPoint = value.BasisPoint; + } + + public override object Clone() + { + return new Vampiric(this); + } + + public BattleStatus.Skill GiveEffect(CharacterBase affectedCharacter, BattleStatus.Skill.SkillInfo skillInfo, int simulatorWaveTurn, bool copyCharacter = true) + { + var target = copyCharacter ? (CharacterBase) affectedCharacter.Clone() : null; + var effect = (int)(skillInfo.Effect * BasisPoint / 10000m); + affectedCharacter.Heal(effect); + // Copy new Character with healed. + var infos = new List + { + new(affectedCharacter.Id, + affectedCharacter.IsDead, + affectedCharacter.Thorn, + effect, + false, + SkillCategory.Heal, + simulatorWaveTurn, + RowData.ElementalType, + RowData.TargetType, + target: target) + }; + return new BattleStatus.Tick(RowData.Id, + target, + infos, + ArraySegment.Empty); + } + + public ArenaSkill GiveEffectForArena(ArenaCharacter affectedCharacter, ArenaSkill.ArenaSkillInfo skillInfo, int simulatorWaveTurn) + { + var clone = (ArenaCharacter)affectedCharacter.Clone(); + var effect = (int)(skillInfo.Effect * BasisPoint / 10000m); + affectedCharacter.Heal(effect); + // Copy new Character with healed. + var infos = new List + { + new(affectedCharacter, + effect, + false, + SkillCategory.Heal, + simulatorWaveTurn, + RowData.ElementalType, + RowData.TargetType) + }; + return new ArenaTick( + clone, + infos, + null); + } + } +} diff --git a/Lib9c/Model/Character/ArenaCharacter.cs b/Lib9c/Model/Character/ArenaCharacter.cs index 0d268c8eee..b2c3924c0a 100644 --- a/Lib9c/Model/Character/ArenaCharacter.cs +++ b/Lib9c/Model/Character/ArenaCharacter.cs @@ -619,6 +619,28 @@ protected virtual bool OnPreSkill() protected virtual void OnPostSkill(BattleStatus.Arena.ArenaSkill usedSkill) { + var attackSkills = usedSkill.SkillInfos + .Where(skillInfo => skillInfo.SkillCategory + is SkillCategory.NormalAttack + or SkillCategory.BlowAttack + or SkillCategory.DoubleAttack + or SkillCategory.AreaAttack + or SkillCategory.BuffRemovalAttack) + .ToList(); + if (Buffs.Values.OfType().OrderBy(x => x.BuffInfo.Id) is + { } vampirics) + { + foreach (var vampiric in vampirics) + { + foreach (var effect in attackSkills + .Select(skillInfo => + vampiric.GiveEffectForArena(this, skillInfo, _simulator.Turn))) + { + _simulator.Log.Add(effect); + } + } + } + var bleeds = Buffs.Values.OfType().OrderBy(x => x.BuffInfo.Id); foreach (var bleed in bleeds) { @@ -627,15 +649,9 @@ protected virtual void OnPostSkill(BattleStatus.Arena.ArenaSkill usedSkill) } // Apply thorn damage if target has thorn - foreach (var skillInfo in usedSkill.SkillInfos) - { - var isAttackSkill = - skillInfo.SkillCategory == SkillCategory.NormalAttack || - skillInfo.SkillCategory == SkillCategory.BlowAttack || - skillInfo.SkillCategory == SkillCategory.DoubleAttack || - skillInfo.SkillCategory == SkillCategory.AreaAttack || - skillInfo.SkillCategory == SkillCategory.BuffRemovalAttack; - if (isAttackSkill && skillInfo.Target.Thorn > 0) + foreach (var skillInfo in attackSkills) + { + if (skillInfo.Target.Thorn > 0) { var effect = GiveThornDamage(skillInfo.Target.Thorn); _simulator.Log.Add(effect); diff --git a/Lib9c/Model/Character/CharacterBase.cs b/Lib9c/Model/Character/CharacterBase.cs index 27b9610de9..0852828b8c 100644 --- a/Lib9c/Model/Character/CharacterBase.cs +++ b/Lib9c/Model/Character/CharacterBase.cs @@ -577,8 +577,31 @@ protected virtual bool OnPreSkill() protected virtual void OnPostSkill(BattleStatus.Skill usedSkill) { + var log = Simulator.LogEvent; + var attackSkills = usedSkill.SkillInfos + .Where(skillInfo => skillInfo.SkillCategory + is SkillCategory.NormalAttack + or SkillCategory.BlowAttack + or SkillCategory.DoubleAttack + or SkillCategory.AreaAttack + or SkillCategory.BuffRemovalAttack) + .ToList(); + if (Buffs.Values.OfType().OrderBy(x => x.BuffInfo.Id) is + { } vampirics) + { + foreach (var vampiric in vampirics) + { + foreach (var effect in attackSkills + .Select(skillInfo => + vampiric.GiveEffect(this, skillInfo, Simulator.WaveTurn, log)) + .Where(_ => log)) + { + Simulator.Log.Add(effect); + } + } + } + var bleeds = Buffs.Values.OfType().OrderBy(x => x.BuffInfo.Id); - bool log = Simulator.LogEvent; foreach (var bleed in bleeds) { var effect = bleed.GiveEffect(this, Simulator.WaveTurn, log); @@ -589,15 +612,9 @@ protected virtual void OnPostSkill(BattleStatus.Skill usedSkill) } // Apply thorn damage if target has thorn - foreach (var skillInfo in usedSkill.SkillInfos) + foreach (var skillInfo in attackSkills) { - var isAttackSkill = - skillInfo.SkillCategory == SkillCategory.NormalAttack || - skillInfo.SkillCategory == SkillCategory.BlowAttack || - skillInfo.SkillCategory == SkillCategory.DoubleAttack || - skillInfo.SkillCategory == SkillCategory.AreaAttack || - skillInfo.SkillCategory == SkillCategory.BuffRemovalAttack; - if (isAttackSkill && skillInfo.Thorn > 0) + if (skillInfo.Thorn > 0) { var effect = GiveThornDamage(skillInfo.Thorn); if (log) diff --git a/Lib9c/Model/IArena.cs b/Lib9c/Model/IArena.cs index 1ac549619c..71f96b6caa 100644 --- a/Lib9c/Model/IArena.cs +++ b/Lib9c/Model/IArena.cs @@ -19,5 +19,6 @@ public interface IArena IEnumerator CoRemoveBuffs(ArenaCharacter caster); IEnumerator CoDead(ArenaCharacter caster); IEnumerator CoTurnEnd(int turnNumber); + IEnumerator CoCustomEvent(ArenaCharacter caster, ArenaEventBase eventBase); } } diff --git a/Lib9c/Model/IStage.cs b/Lib9c/Model/IStage.cs index 1886575dd0..4a8f6c79d5 100644 --- a/Lib9c/Model/IStage.cs +++ b/Lib9c/Model/IStage.cs @@ -1,5 +1,6 @@ using System.Collections; using System.Collections.Generic; +using Nekoyume.Model.BattleStatus; using Nekoyume.Model.Item; namespace Nekoyume.Model @@ -19,16 +20,17 @@ public interface IStage IEnumerator CoHeal(CharacterBase caster, int skillId, IEnumerable skillInfos, IEnumerable buffInfos); IEnumerator CoBuff(CharacterBase caster, int skillId, IEnumerable skillInfos, IEnumerable buffInfos); IEnumerator CoTickDamage(CharacterBase affectedCharacter, int skillId, IEnumerable skillInfos); - + #endregion - + IEnumerator CoRemoveBuffs(CharacterBase caster); - + IEnumerator CoDropBox(List items); IEnumerator CoGetReward(List rewards); IEnumerator CoSpawnWave(int waveNumber, int waveTurn, List enemies, bool hasBoss); IEnumerator CoGetExp(long exp); IEnumerator CoWaveTurnEnd(int turnNumber, int waveTurn); IEnumerator CoDead(CharacterBase character); + IEnumerator CoCustomEvent(CharacterBase character, EventBase eventBase); } } diff --git a/Lib9c/Model/Skill/ActionBuffType.cs b/Lib9c/Model/Skill/ActionBuffType.cs index 652df29129..64662ef89b 100644 --- a/Lib9c/Model/Skill/ActionBuffType.cs +++ b/Lib9c/Model/Skill/ActionBuffType.cs @@ -5,5 +5,6 @@ public enum ActionBuffType { Bleed, Stun, + Vampiric, } } diff --git a/Lib9c/TableCSV/Rune/RuneOptionSheet.csv b/Lib9c/TableCSV/Rune/RuneOptionSheet.csv index b245a0e31b..8860af2387 100644 --- a/Lib9c/TableCSV/Rune/RuneOptionSheet.csv +++ b/Lib9c/TableCSV/Rune/RuneOptionSheet.csv @@ -1,5 +1,5 @@ rune_id,_name,level,total_cp,stat_type_1,value_1,value_type_1,stat_type_2,value_2,value_type_2,stat_type_3,value_3,value_type3,skillId,cooldown,chance,skill_value,skill_stat_ratio,skill_value_type,stat_reference_type,buff_duration -30001,Adventurer's Rune,1,364,HP,520,Add,NONE,0,Add,NONE,0,Add,,,,,,,, +30001,Adventurer's Rune,1,364,HP,520,Add,NONE,0,Add,NONE,0,Add,700006,14,30,3040,Add,NONE,Caster,20 30001,Adventurer's Rune,2,504,HP,720,Add,NONE,0,Add,NONE,0,Add,,,,,,,, 30001,Adventurer's Rune,3,644,HP,920,Add,NONE,0,Add,NONE,0,Add,,,,,,,, 30001,Adventurer's Rune,4,756,HP,1080,Add,NONE,0,Add,NONE,0,Add,,,,,,,, @@ -2399,2403 +2399,2403 @@ rune_id,_name,level,total_cp,stat_type_1,value_1,value_type_1,stat_type_2,value_ 20001,Golden leaf Rune,298,225238,HIT,36331,Add,ATK,10695,Add,NONE,0,Add,700002,16,30,7015,Add,NONE,Caster,12 20001,Golden leaf Rune,299,226519,HIT,36491,Add,ATK,10766,Add,NONE,0,Add,700002,16,30,7025,Add,NONE,Caster,12 20001,Golden leaf Rune,300,227799,HIT,36651,Add,ATK,10837,Add,NONE,0,Add,700002,16,30,7035,Add,NONE,Caster,12 -10021,Adventure Stun Rune,1,1,ATK,310,Add,DEF,33,Add,NONE,0,Add,700005,14,100,1,Add,NONE,Caster,3 -10021,Adventure Stun Rune,2,1,ATK,335,Add,DEF,41,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,3,1,ATK,360,Add,DEF,49,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,4,1,ATK,385,Add,DEF,57,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,5,1,ATK,410,Add,DEF,65,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,6,1,ATK,435,Add,DEF,73,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,7,1,ATK,460,Add,DEF,81,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,8,1,ATK,485,Add,DEF,89,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,9,1,ATK,510,Add,DEF,97,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,10,1,ATK,535,Add,DEF,105,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,11,1,ATK,560,Add,DEF,113,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,12,1,ATK,585,Add,DEF,121,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,13,1,ATK,610,Add,DEF,129,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,14,1,ATK,635,Add,DEF,137,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,15,1,ATK,660,Add,DEF,145,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,16,1,ATK,685,Add,DEF,153,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,17,1,ATK,710,Add,DEF,161,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,18,1,ATK,735,Add,DEF,169,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,19,1,ATK,760,Add,DEF,177,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,20,1,ATK,785,Add,DEF,185,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,21,1,ATK,810,Add,DEF,193,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,22,1,ATK,835,Add,DEF,201,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,23,1,ATK,860,Add,DEF,209,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,24,1,ATK,885,Add,DEF,217,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,25,1,ATK,910,Add,DEF,225,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,26,1,ATK,935,Add,DEF,233,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,27,1,ATK,960,Add,DEF,241,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,28,1,ATK,985,Add,DEF,249,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,29,1,ATK,1010,Add,DEF,257,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,30,1,ATK,1035,Add,DEF,265,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,31,1,ATK,1060,Add,DEF,273,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,32,1,ATK,1085,Add,DEF,281,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,33,1,ATK,1110,Add,DEF,289,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,34,1,ATK,1135,Add,DEF,297,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,35,1,ATK,1160,Add,DEF,305,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,36,1,ATK,1185,Add,DEF,313,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,37,1,ATK,1210,Add,DEF,321,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,38,1,ATK,1235,Add,DEF,329,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,39,1,ATK,1260,Add,DEF,337,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,40,1,ATK,1285,Add,DEF,345,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,41,1,ATK,1310,Add,DEF,353,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,42,1,ATK,1335,Add,DEF,361,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,43,1,ATK,1360,Add,DEF,369,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,44,1,ATK,1385,Add,DEF,377,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,45,1,ATK,1410,Add,DEF,385,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,46,1,ATK,1435,Add,DEF,393,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,47,1,ATK,1460,Add,DEF,401,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,48,1,ATK,1485,Add,DEF,409,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,49,1,ATK,1510,Add,DEF,417,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,50,1,ATK,1535,Add,DEF,425,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,51,1,ATK,1572,Add,DEF,435,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,52,1,ATK,1609,Add,DEF,445,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,53,1,ATK,1646,Add,DEF,455,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,54,1,ATK,1683,Add,DEF,465,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,55,1,ATK,1720,Add,DEF,475,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,56,1,ATK,1757,Add,DEF,485,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,57,1,ATK,1794,Add,DEF,495,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,58,1,ATK,1831,Add,DEF,505,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,59,1,ATK,1868,Add,DEF,515,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,60,1,ATK,1905,Add,DEF,525,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,61,1,ATK,1942,Add,DEF,535,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,62,1,ATK,1979,Add,DEF,545,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,63,1,ATK,2016,Add,DEF,555,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,64,1,ATK,2053,Add,DEF,565,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,65,1,ATK,2090,Add,DEF,575,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,66,1,ATK,2127,Add,DEF,585,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,67,1,ATK,2164,Add,DEF,595,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,68,1,ATK,2201,Add,DEF,605,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,69,1,ATK,2238,Add,DEF,615,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,70,1,ATK,2275,Add,DEF,625,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,71,1,ATK,2312,Add,DEF,635,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,72,1,ATK,2349,Add,DEF,645,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,73,1,ATK,2386,Add,DEF,655,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,74,1,ATK,2423,Add,DEF,665,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,75,1,ATK,2460,Add,DEF,675,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,76,1,ATK,2497,Add,DEF,685,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,77,1,ATK,2534,Add,DEF,695,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,78,1,ATK,2571,Add,DEF,705,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,79,1,ATK,2608,Add,DEF,715,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,80,1,ATK,2645,Add,DEF,725,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,81,1,ATK,2682,Add,DEF,735,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,82,1,ATK,2719,Add,DEF,745,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,83,1,ATK,2756,Add,DEF,755,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,84,1,ATK,2793,Add,DEF,765,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,85,1,ATK,2830,Add,DEF,775,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,86,1,ATK,2867,Add,DEF,785,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,87,1,ATK,2904,Add,DEF,795,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,88,1,ATK,2941,Add,DEF,805,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,89,1,ATK,2978,Add,DEF,815,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,90,1,ATK,3015,Add,DEF,825,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,91,1,ATK,3052,Add,DEF,835,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,92,1,ATK,3089,Add,DEF,845,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,93,1,ATK,3126,Add,DEF,855,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,94,1,ATK,3163,Add,DEF,865,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,95,1,ATK,3200,Add,DEF,875,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,96,1,ATK,3237,Add,DEF,885,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,97,1,ATK,3274,Add,DEF,895,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,98,1,ATK,3311,Add,DEF,905,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,99,1,ATK,3348,Add,DEF,915,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,100,1,ATK,3385,Add,DEF,925,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,101,1,ATK,3445,Add,DEF,938,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,102,1,ATK,3505,Add,DEF,951,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,103,1,ATK,3565,Add,DEF,964,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,104,1,ATK,3625,Add,DEF,977,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,105,1,ATK,3685,Add,DEF,990,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,106,1,ATK,3745,Add,DEF,1003,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,107,1,ATK,3805,Add,DEF,1016,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,108,1,ATK,3865,Add,DEF,1029,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,109,1,ATK,3925,Add,DEF,1042,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,110,1,ATK,3985,Add,DEF,1055,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,111,1,ATK,4045,Add,DEF,1068,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,112,1,ATK,4105,Add,DEF,1081,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,113,1,ATK,4165,Add,DEF,1094,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,114,1,ATK,4225,Add,DEF,1107,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,115,1,ATK,4285,Add,DEF,1120,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,116,1,ATK,4345,Add,DEF,1133,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,117,1,ATK,4405,Add,DEF,1146,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,118,1,ATK,4465,Add,DEF,1159,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,119,1,ATK,4525,Add,DEF,1172,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,120,1,ATK,4585,Add,DEF,1185,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,121,1,ATK,4645,Add,DEF,1198,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,122,1,ATK,4705,Add,DEF,1211,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,123,1,ATK,4765,Add,DEF,1224,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,124,1,ATK,4825,Add,DEF,1237,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,125,1,ATK,4885,Add,DEF,1250,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,126,1,ATK,4945,Add,DEF,1263,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,127,1,ATK,5005,Add,DEF,1276,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,128,1,ATK,5065,Add,DEF,1289,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,129,1,ATK,5125,Add,DEF,1302,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,130,1,ATK,5185,Add,DEF,1315,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,131,1,ATK,5245,Add,DEF,1328,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,132,1,ATK,5305,Add,DEF,1341,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,133,1,ATK,5365,Add,DEF,1354,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,134,1,ATK,5425,Add,DEF,1367,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,135,1,ATK,5485,Add,DEF,1380,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,136,1,ATK,5545,Add,DEF,1393,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,137,1,ATK,5605,Add,DEF,1406,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,138,1,ATK,5665,Add,DEF,1419,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,139,1,ATK,5725,Add,DEF,1432,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,140,1,ATK,5785,Add,DEF,1445,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,141,1,ATK,5845,Add,DEF,1458,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,142,1,ATK,5905,Add,DEF,1471,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,143,1,ATK,5965,Add,DEF,1484,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,144,1,ATK,6025,Add,DEF,1497,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,145,1,ATK,6085,Add,DEF,1510,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,146,1,ATK,6145,Add,DEF,1523,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,147,1,ATK,6205,Add,DEF,1536,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,148,1,ATK,6265,Add,DEF,1549,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,149,1,ATK,6325,Add,DEF,1562,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,150,1,ATK,6385,Add,DEF,1575,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,151,1,ATK,6480,Add,DEF,1595,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,152,1,ATK,6575,Add,DEF,1615,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,153,1,ATK,6670,Add,DEF,1635,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,154,1,ATK,6765,Add,DEF,1655,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,155,1,ATK,6860,Add,DEF,1675,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,156,1,ATK,6955,Add,DEF,1695,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,157,1,ATK,7050,Add,DEF,1715,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,158,1,ATK,7145,Add,DEF,1735,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,159,1,ATK,7240,Add,DEF,1755,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,160,1,ATK,7335,Add,DEF,1775,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,161,1,ATK,7430,Add,DEF,1795,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,162,1,ATK,7525,Add,DEF,1815,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,163,1,ATK,7620,Add,DEF,1835,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,164,1,ATK,7715,Add,DEF,1855,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,165,1,ATK,7810,Add,DEF,1875,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,166,1,ATK,7905,Add,DEF,1895,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,167,1,ATK,8000,Add,DEF,1915,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,168,1,ATK,8095,Add,DEF,1935,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,169,1,ATK,8190,Add,DEF,1955,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,170,1,ATK,8285,Add,DEF,1975,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,171,1,ATK,8380,Add,DEF,1995,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,172,1,ATK,8475,Add,DEF,2015,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,173,1,ATK,8570,Add,DEF,2035,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,174,1,ATK,8665,Add,DEF,2055,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,175,1,ATK,8760,Add,DEF,2075,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,176,1,ATK,8855,Add,DEF,2095,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,177,1,ATK,8950,Add,DEF,2115,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,178,1,ATK,9045,Add,DEF,2135,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,179,1,ATK,9140,Add,DEF,2155,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,180,1,ATK,9235,Add,DEF,2175,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,181,1,ATK,9330,Add,DEF,2195,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,182,1,ATK,9425,Add,DEF,2215,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,183,1,ATK,9520,Add,DEF,2235,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,184,1,ATK,9615,Add,DEF,2255,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,185,1,ATK,9710,Add,DEF,2275,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,186,1,ATK,9805,Add,DEF,2295,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,187,1,ATK,9900,Add,DEF,2315,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,188,1,ATK,9995,Add,DEF,2335,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,189,1,ATK,10090,Add,DEF,2355,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,190,1,ATK,10185,Add,DEF,2375,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,191,1,ATK,10280,Add,DEF,2395,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,192,1,ATK,10375,Add,DEF,2415,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,193,1,ATK,10470,Add,DEF,2435,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,194,1,ATK,10565,Add,DEF,2455,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,195,1,ATK,10660,Add,DEF,2475,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,196,1,ATK,10755,Add,DEF,2495,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,197,1,ATK,10850,Add,DEF,2515,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,198,1,ATK,10945,Add,DEF,2535,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,199,1,ATK,11040,Add,DEF,2555,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,200,1,ATK,11135,Add,DEF,2575,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,201,1,ATK,11250,Add,DEF,2596,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,202,1,ATK,11365,Add,DEF,2617,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,203,1,ATK,11480,Add,DEF,2638,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,204,1,ATK,11595,Add,DEF,2659,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,205,1,ATK,11710,Add,DEF,2680,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,206,1,ATK,11825,Add,DEF,2701,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,207,1,ATK,11940,Add,DEF,2722,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,208,1,ATK,12055,Add,DEF,2743,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,209,1,ATK,12170,Add,DEF,2764,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,210,1,ATK,12285,Add,DEF,2785,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,211,1,ATK,12400,Add,DEF,2806,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,212,1,ATK,12515,Add,DEF,2827,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,213,1,ATK,12630,Add,DEF,2848,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,214,1,ATK,12745,Add,DEF,2869,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,215,1,ATK,12860,Add,DEF,2890,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,216,1,ATK,12975,Add,DEF,2911,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,217,1,ATK,13090,Add,DEF,2932,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,218,1,ATK,13205,Add,DEF,2953,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,219,1,ATK,13320,Add,DEF,2974,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,220,1,ATK,13435,Add,DEF,2995,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,221,1,ATK,13550,Add,DEF,3016,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,222,1,ATK,13665,Add,DEF,3037,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,223,1,ATK,13780,Add,DEF,3058,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,224,1,ATK,13895,Add,DEF,3079,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,225,1,ATK,14010,Add,DEF,3100,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,226,1,ATK,14125,Add,DEF,3121,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,227,1,ATK,14240,Add,DEF,3142,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,228,1,ATK,14355,Add,DEF,3163,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,229,1,ATK,14470,Add,DEF,3184,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,230,1,ATK,14585,Add,DEF,3205,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,231,1,ATK,14700,Add,DEF,3226,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,232,1,ATK,14815,Add,DEF,3247,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,233,1,ATK,14930,Add,DEF,3268,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,234,1,ATK,15045,Add,DEF,3289,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,235,1,ATK,15160,Add,DEF,3310,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,236,1,ATK,15275,Add,DEF,3331,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,237,1,ATK,15390,Add,DEF,3352,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,238,1,ATK,15505,Add,DEF,3373,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,239,1,ATK,15620,Add,DEF,3394,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,240,1,ATK,15735,Add,DEF,3415,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,241,1,ATK,15850,Add,DEF,3436,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,242,1,ATK,15965,Add,DEF,3457,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,243,1,ATK,16080,Add,DEF,3478,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,244,1,ATK,16195,Add,DEF,3499,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,245,1,ATK,16310,Add,DEF,3520,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,246,1,ATK,16425,Add,DEF,3541,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,247,1,ATK,16540,Add,DEF,3562,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,248,1,ATK,16655,Add,DEF,3583,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,249,1,ATK,16770,Add,DEF,3604,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,250,1,ATK,16885,Add,DEF,3625,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,251,1,ATK,17054,Add,DEF,3651,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,252,1,ATK,17223,Add,DEF,3677,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,253,1,ATK,17392,Add,DEF,3703,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,254,1,ATK,17561,Add,DEF,3729,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,255,1,ATK,17730,Add,DEF,3755,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,256,1,ATK,17899,Add,DEF,3781,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,257,1,ATK,18068,Add,DEF,3807,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,258,1,ATK,18237,Add,DEF,3833,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,259,1,ATK,18406,Add,DEF,3859,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,260,1,ATK,18575,Add,DEF,3885,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,261,1,ATK,18744,Add,DEF,3911,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,262,1,ATK,18913,Add,DEF,3937,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,263,1,ATK,19082,Add,DEF,3963,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,264,1,ATK,19251,Add,DEF,3989,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,265,1,ATK,19420,Add,DEF,4015,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,266,1,ATK,19589,Add,DEF,4041,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,267,1,ATK,19758,Add,DEF,4067,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,268,1,ATK,19927,Add,DEF,4093,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,269,1,ATK,20096,Add,DEF,4119,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,270,1,ATK,20265,Add,DEF,4145,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,271,1,ATK,20434,Add,DEF,4171,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,272,1,ATK,20603,Add,DEF,4197,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,273,1,ATK,20772,Add,DEF,4223,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,274,1,ATK,20941,Add,DEF,4249,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,275,1,ATK,21110,Add,DEF,4275,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,276,1,ATK,21279,Add,DEF,4301,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,277,1,ATK,21448,Add,DEF,4327,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,278,1,ATK,21617,Add,DEF,4353,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,279,1,ATK,21786,Add,DEF,4379,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,280,1,ATK,21955,Add,DEF,4405,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,281,1,ATK,22124,Add,DEF,4431,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,282,1,ATK,22293,Add,DEF,4457,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,283,1,ATK,22462,Add,DEF,4483,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,284,1,ATK,22631,Add,DEF,4509,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,285,1,ATK,22800,Add,DEF,4535,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,286,1,ATK,22969,Add,DEF,4561,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,287,1,ATK,23138,Add,DEF,4587,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,288,1,ATK,23307,Add,DEF,4613,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,289,1,ATK,23476,Add,DEF,4639,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,290,1,ATK,23645,Add,DEF,4665,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,291,1,ATK,23814,Add,DEF,4691,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,292,1,ATK,23983,Add,DEF,4717,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,293,1,ATK,24152,Add,DEF,4743,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,294,1,ATK,24321,Add,DEF,4769,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,295,1,ATK,24490,Add,DEF,4795,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,296,1,ATK,24659,Add,DEF,4821,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,297,1,ATK,24828,Add,DEF,4847,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,298,1,ATK,24997,Add,DEF,4873,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,299,1,ATK,25166,Add,DEF,4899,Add,NONE,0,Add,,,,,,,, -10021,Adventure Stun Rune,300,1,ATK,25335,Add,DEF,4925,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,1,1,ATK,310,Add,DEF,33,Add,NONE,0,Add,700004,14,100,1,Add,NONE,Caster,3 -10022,Arena Stun Rune,2,1,ATK,335,Add,DEF,41,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,3,1,ATK,360,Add,DEF,49,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,4,1,ATK,385,Add,DEF,57,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,5,1,ATK,410,Add,DEF,65,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,6,1,ATK,435,Add,DEF,73,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,7,1,ATK,460,Add,DEF,81,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,8,1,ATK,485,Add,DEF,89,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,9,1,ATK,510,Add,DEF,97,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,10,1,ATK,535,Add,DEF,105,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,11,1,ATK,560,Add,DEF,113,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,12,1,ATK,585,Add,DEF,121,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,13,1,ATK,610,Add,DEF,129,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,14,1,ATK,635,Add,DEF,137,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,15,1,ATK,660,Add,DEF,145,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,16,1,ATK,685,Add,DEF,153,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,17,1,ATK,710,Add,DEF,161,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,18,1,ATK,735,Add,DEF,169,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,19,1,ATK,760,Add,DEF,177,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,20,1,ATK,785,Add,DEF,185,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,21,1,ATK,810,Add,DEF,193,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,22,1,ATK,835,Add,DEF,201,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,23,1,ATK,860,Add,DEF,209,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,24,1,ATK,885,Add,DEF,217,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,25,1,ATK,910,Add,DEF,225,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,26,1,ATK,935,Add,DEF,233,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,27,1,ATK,960,Add,DEF,241,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,28,1,ATK,985,Add,DEF,249,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,29,1,ATK,1010,Add,DEF,257,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,30,1,ATK,1035,Add,DEF,265,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,31,1,ATK,1060,Add,DEF,273,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,32,1,ATK,1085,Add,DEF,281,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,33,1,ATK,1110,Add,DEF,289,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,34,1,ATK,1135,Add,DEF,297,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,35,1,ATK,1160,Add,DEF,305,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,36,1,ATK,1185,Add,DEF,313,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,37,1,ATK,1210,Add,DEF,321,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,38,1,ATK,1235,Add,DEF,329,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,39,1,ATK,1260,Add,DEF,337,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,40,1,ATK,1285,Add,DEF,345,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,41,1,ATK,1310,Add,DEF,353,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,42,1,ATK,1335,Add,DEF,361,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,43,1,ATK,1360,Add,DEF,369,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,44,1,ATK,1385,Add,DEF,377,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,45,1,ATK,1410,Add,DEF,385,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,46,1,ATK,1435,Add,DEF,393,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,47,1,ATK,1460,Add,DEF,401,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,48,1,ATK,1485,Add,DEF,409,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,49,1,ATK,1510,Add,DEF,417,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,50,1,ATK,1535,Add,DEF,425,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,51,1,ATK,1572,Add,DEF,435,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,52,1,ATK,1609,Add,DEF,445,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,53,1,ATK,1646,Add,DEF,455,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,54,1,ATK,1683,Add,DEF,465,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,55,1,ATK,1720,Add,DEF,475,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,56,1,ATK,1757,Add,DEF,485,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,57,1,ATK,1794,Add,DEF,495,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,58,1,ATK,1831,Add,DEF,505,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,59,1,ATK,1868,Add,DEF,515,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,60,1,ATK,1905,Add,DEF,525,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,61,1,ATK,1942,Add,DEF,535,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,62,1,ATK,1979,Add,DEF,545,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,63,1,ATK,2016,Add,DEF,555,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,64,1,ATK,2053,Add,DEF,565,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,65,1,ATK,2090,Add,DEF,575,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,66,1,ATK,2127,Add,DEF,585,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,67,1,ATK,2164,Add,DEF,595,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,68,1,ATK,2201,Add,DEF,605,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,69,1,ATK,2238,Add,DEF,615,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,70,1,ATK,2275,Add,DEF,625,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,71,1,ATK,2312,Add,DEF,635,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,72,1,ATK,2349,Add,DEF,645,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,73,1,ATK,2386,Add,DEF,655,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,74,1,ATK,2423,Add,DEF,665,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,75,1,ATK,2460,Add,DEF,675,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,76,1,ATK,2497,Add,DEF,685,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,77,1,ATK,2534,Add,DEF,695,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,78,1,ATK,2571,Add,DEF,705,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,79,1,ATK,2608,Add,DEF,715,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,80,1,ATK,2645,Add,DEF,725,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,81,1,ATK,2682,Add,DEF,735,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,82,1,ATK,2719,Add,DEF,745,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,83,1,ATK,2756,Add,DEF,755,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,84,1,ATK,2793,Add,DEF,765,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,85,1,ATK,2830,Add,DEF,775,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,86,1,ATK,2867,Add,DEF,785,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,87,1,ATK,2904,Add,DEF,795,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,88,1,ATK,2941,Add,DEF,805,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,89,1,ATK,2978,Add,DEF,815,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,90,1,ATK,3015,Add,DEF,825,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,91,1,ATK,3052,Add,DEF,835,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,92,1,ATK,3089,Add,DEF,845,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,93,1,ATK,3126,Add,DEF,855,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,94,1,ATK,3163,Add,DEF,865,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,95,1,ATK,3200,Add,DEF,875,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,96,1,ATK,3237,Add,DEF,885,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,97,1,ATK,3274,Add,DEF,895,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,98,1,ATK,3311,Add,DEF,905,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,99,1,ATK,3348,Add,DEF,915,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,100,1,ATK,3385,Add,DEF,925,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,101,1,ATK,3445,Add,DEF,938,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,102,1,ATK,3505,Add,DEF,951,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,103,1,ATK,3565,Add,DEF,964,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,104,1,ATK,3625,Add,DEF,977,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,105,1,ATK,3685,Add,DEF,990,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,106,1,ATK,3745,Add,DEF,1003,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,107,1,ATK,3805,Add,DEF,1016,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,108,1,ATK,3865,Add,DEF,1029,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,109,1,ATK,3925,Add,DEF,1042,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,110,1,ATK,3985,Add,DEF,1055,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,111,1,ATK,4045,Add,DEF,1068,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,112,1,ATK,4105,Add,DEF,1081,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,113,1,ATK,4165,Add,DEF,1094,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,114,1,ATK,4225,Add,DEF,1107,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,115,1,ATK,4285,Add,DEF,1120,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,116,1,ATK,4345,Add,DEF,1133,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,117,1,ATK,4405,Add,DEF,1146,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,118,1,ATK,4465,Add,DEF,1159,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,119,1,ATK,4525,Add,DEF,1172,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,120,1,ATK,4585,Add,DEF,1185,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,121,1,ATK,4645,Add,DEF,1198,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,122,1,ATK,4705,Add,DEF,1211,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,123,1,ATK,4765,Add,DEF,1224,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,124,1,ATK,4825,Add,DEF,1237,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,125,1,ATK,4885,Add,DEF,1250,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,126,1,ATK,4945,Add,DEF,1263,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,127,1,ATK,5005,Add,DEF,1276,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,128,1,ATK,5065,Add,DEF,1289,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,129,1,ATK,5125,Add,DEF,1302,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,130,1,ATK,5185,Add,DEF,1315,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,131,1,ATK,5245,Add,DEF,1328,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,132,1,ATK,5305,Add,DEF,1341,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,133,1,ATK,5365,Add,DEF,1354,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,134,1,ATK,5425,Add,DEF,1367,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,135,1,ATK,5485,Add,DEF,1380,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,136,1,ATK,5545,Add,DEF,1393,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,137,1,ATK,5605,Add,DEF,1406,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,138,1,ATK,5665,Add,DEF,1419,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,139,1,ATK,5725,Add,DEF,1432,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,140,1,ATK,5785,Add,DEF,1445,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,141,1,ATK,5845,Add,DEF,1458,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,142,1,ATK,5905,Add,DEF,1471,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,143,1,ATK,5965,Add,DEF,1484,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,144,1,ATK,6025,Add,DEF,1497,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,145,1,ATK,6085,Add,DEF,1510,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,146,1,ATK,6145,Add,DEF,1523,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,147,1,ATK,6205,Add,DEF,1536,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,148,1,ATK,6265,Add,DEF,1549,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,149,1,ATK,6325,Add,DEF,1562,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,150,1,ATK,6385,Add,DEF,1575,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,151,1,ATK,6480,Add,DEF,1595,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,152,1,ATK,6575,Add,DEF,1615,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,153,1,ATK,6670,Add,DEF,1635,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,154,1,ATK,6765,Add,DEF,1655,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,155,1,ATK,6860,Add,DEF,1675,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,156,1,ATK,6955,Add,DEF,1695,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,157,1,ATK,7050,Add,DEF,1715,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,158,1,ATK,7145,Add,DEF,1735,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,159,1,ATK,7240,Add,DEF,1755,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,160,1,ATK,7335,Add,DEF,1775,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,161,1,ATK,7430,Add,DEF,1795,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,162,1,ATK,7525,Add,DEF,1815,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,163,1,ATK,7620,Add,DEF,1835,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,164,1,ATK,7715,Add,DEF,1855,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,165,1,ATK,7810,Add,DEF,1875,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,166,1,ATK,7905,Add,DEF,1895,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,167,1,ATK,8000,Add,DEF,1915,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,168,1,ATK,8095,Add,DEF,1935,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,169,1,ATK,8190,Add,DEF,1955,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,170,1,ATK,8285,Add,DEF,1975,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,171,1,ATK,8380,Add,DEF,1995,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,172,1,ATK,8475,Add,DEF,2015,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,173,1,ATK,8570,Add,DEF,2035,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,174,1,ATK,8665,Add,DEF,2055,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,175,1,ATK,8760,Add,DEF,2075,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,176,1,ATK,8855,Add,DEF,2095,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,177,1,ATK,8950,Add,DEF,2115,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,178,1,ATK,9045,Add,DEF,2135,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,179,1,ATK,9140,Add,DEF,2155,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,180,1,ATK,9235,Add,DEF,2175,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,181,1,ATK,9330,Add,DEF,2195,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,182,1,ATK,9425,Add,DEF,2215,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,183,1,ATK,9520,Add,DEF,2235,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,184,1,ATK,9615,Add,DEF,2255,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,185,1,ATK,9710,Add,DEF,2275,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,186,1,ATK,9805,Add,DEF,2295,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,187,1,ATK,9900,Add,DEF,2315,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,188,1,ATK,9995,Add,DEF,2335,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,189,1,ATK,10090,Add,DEF,2355,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,190,1,ATK,10185,Add,DEF,2375,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,191,1,ATK,10280,Add,DEF,2395,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,192,1,ATK,10375,Add,DEF,2415,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,193,1,ATK,10470,Add,DEF,2435,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,194,1,ATK,10565,Add,DEF,2455,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,195,1,ATK,10660,Add,DEF,2475,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,196,1,ATK,10755,Add,DEF,2495,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,197,1,ATK,10850,Add,DEF,2515,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,198,1,ATK,10945,Add,DEF,2535,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,199,1,ATK,11040,Add,DEF,2555,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,200,1,ATK,11135,Add,DEF,2575,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,201,1,ATK,11250,Add,DEF,2596,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,202,1,ATK,11365,Add,DEF,2617,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,203,1,ATK,11480,Add,DEF,2638,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,204,1,ATK,11595,Add,DEF,2659,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,205,1,ATK,11710,Add,DEF,2680,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,206,1,ATK,11825,Add,DEF,2701,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,207,1,ATK,11940,Add,DEF,2722,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,208,1,ATK,12055,Add,DEF,2743,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,209,1,ATK,12170,Add,DEF,2764,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,210,1,ATK,12285,Add,DEF,2785,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,211,1,ATK,12400,Add,DEF,2806,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,212,1,ATK,12515,Add,DEF,2827,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,213,1,ATK,12630,Add,DEF,2848,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,214,1,ATK,12745,Add,DEF,2869,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,215,1,ATK,12860,Add,DEF,2890,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,216,1,ATK,12975,Add,DEF,2911,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,217,1,ATK,13090,Add,DEF,2932,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,218,1,ATK,13205,Add,DEF,2953,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,219,1,ATK,13320,Add,DEF,2974,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,220,1,ATK,13435,Add,DEF,2995,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,221,1,ATK,13550,Add,DEF,3016,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,222,1,ATK,13665,Add,DEF,3037,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,223,1,ATK,13780,Add,DEF,3058,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,224,1,ATK,13895,Add,DEF,3079,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,225,1,ATK,14010,Add,DEF,3100,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,226,1,ATK,14125,Add,DEF,3121,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,227,1,ATK,14240,Add,DEF,3142,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,228,1,ATK,14355,Add,DEF,3163,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,229,1,ATK,14470,Add,DEF,3184,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,230,1,ATK,14585,Add,DEF,3205,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,231,1,ATK,14700,Add,DEF,3226,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,232,1,ATK,14815,Add,DEF,3247,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,233,1,ATK,14930,Add,DEF,3268,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,234,1,ATK,15045,Add,DEF,3289,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,235,1,ATK,15160,Add,DEF,3310,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,236,1,ATK,15275,Add,DEF,3331,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,237,1,ATK,15390,Add,DEF,3352,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,238,1,ATK,15505,Add,DEF,3373,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,239,1,ATK,15620,Add,DEF,3394,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,240,1,ATK,15735,Add,DEF,3415,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,241,1,ATK,15850,Add,DEF,3436,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,242,1,ATK,15965,Add,DEF,3457,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,243,1,ATK,16080,Add,DEF,3478,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,244,1,ATK,16195,Add,DEF,3499,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,245,1,ATK,16310,Add,DEF,3520,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,246,1,ATK,16425,Add,DEF,3541,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,247,1,ATK,16540,Add,DEF,3562,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,248,1,ATK,16655,Add,DEF,3583,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,249,1,ATK,16770,Add,DEF,3604,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,250,1,ATK,16885,Add,DEF,3625,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,251,1,ATK,17054,Add,DEF,3651,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,252,1,ATK,17223,Add,DEF,3677,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,253,1,ATK,17392,Add,DEF,3703,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,254,1,ATK,17561,Add,DEF,3729,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,255,1,ATK,17730,Add,DEF,3755,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,256,1,ATK,17899,Add,DEF,3781,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,257,1,ATK,18068,Add,DEF,3807,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,258,1,ATK,18237,Add,DEF,3833,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,259,1,ATK,18406,Add,DEF,3859,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,260,1,ATK,18575,Add,DEF,3885,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,261,1,ATK,18744,Add,DEF,3911,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,262,1,ATK,18913,Add,DEF,3937,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,263,1,ATK,19082,Add,DEF,3963,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,264,1,ATK,19251,Add,DEF,3989,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,265,1,ATK,19420,Add,DEF,4015,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,266,1,ATK,19589,Add,DEF,4041,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,267,1,ATK,19758,Add,DEF,4067,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,268,1,ATK,19927,Add,DEF,4093,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,269,1,ATK,20096,Add,DEF,4119,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,270,1,ATK,20265,Add,DEF,4145,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,271,1,ATK,20434,Add,DEF,4171,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,272,1,ATK,20603,Add,DEF,4197,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,273,1,ATK,20772,Add,DEF,4223,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,274,1,ATK,20941,Add,DEF,4249,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,275,1,ATK,21110,Add,DEF,4275,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,276,1,ATK,21279,Add,DEF,4301,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,277,1,ATK,21448,Add,DEF,4327,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,278,1,ATK,21617,Add,DEF,4353,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,279,1,ATK,21786,Add,DEF,4379,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,280,1,ATK,21955,Add,DEF,4405,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,281,1,ATK,22124,Add,DEF,4431,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,282,1,ATK,22293,Add,DEF,4457,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,283,1,ATK,22462,Add,DEF,4483,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,284,1,ATK,22631,Add,DEF,4509,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,285,1,ATK,22800,Add,DEF,4535,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,286,1,ATK,22969,Add,DEF,4561,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,287,1,ATK,23138,Add,DEF,4587,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,288,1,ATK,23307,Add,DEF,4613,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,289,1,ATK,23476,Add,DEF,4639,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,290,1,ATK,23645,Add,DEF,4665,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,291,1,ATK,23814,Add,DEF,4691,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,292,1,ATK,23983,Add,DEF,4717,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,293,1,ATK,24152,Add,DEF,4743,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,294,1,ATK,24321,Add,DEF,4769,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,295,1,ATK,24490,Add,DEF,4795,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,296,1,ATK,24659,Add,DEF,4821,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,297,1,ATK,24828,Add,DEF,4847,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,298,1,ATK,24997,Add,DEF,4873,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,299,1,ATK,25166,Add,DEF,4899,Add,NONE,0,Add,,,,,,,, -10022,Arena Stun Rune,300,1,ATK,25335,Add,DEF,4925,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,1,1,DEF,101,Add,HP,792,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,2,1,DEF,126,Add,HP,944,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,3,1,DEF,151,Add,HP,1096,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,4,1,DEF,176,Add,HP,1248,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,5,1,DEF,201,Add,HP,1400,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,6,1,DEF,226,Add,HP,1552,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,7,1,DEF,251,Add,HP,1704,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,8,1,DEF,276,Add,HP,1856,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,9,1,DEF,301,Add,HP,2008,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,10,1,DEF,326,Add,HP,2160,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,11,1,DEF,351,Add,HP,2312,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,12,1,DEF,376,Add,HP,2464,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,13,1,DEF,401,Add,HP,2616,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,14,1,DEF,426,Add,HP,2768,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,15,1,DEF,451,Add,HP,2920,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,16,1,DEF,476,Add,HP,3072,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,17,1,DEF,501,Add,HP,3224,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,18,1,DEF,526,Add,HP,3376,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,19,1,DEF,551,Add,HP,3528,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,20,1,DEF,576,Add,HP,3680,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,21,1,DEF,601,Add,HP,3832,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,22,1,DEF,626,Add,HP,3984,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,23,1,DEF,651,Add,HP,4136,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,24,1,DEF,676,Add,HP,4288,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,25,1,DEF,701,Add,HP,4440,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,26,1,DEF,726,Add,HP,4592,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,27,1,DEF,751,Add,HP,4744,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,28,1,DEF,776,Add,HP,4896,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,29,1,DEF,801,Add,HP,5048,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,30,1,DEF,826,Add,HP,5200,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,31,1,DEF,851,Add,HP,5352,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,32,1,DEF,876,Add,HP,5504,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,33,1,DEF,901,Add,HP,5656,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,34,1,DEF,926,Add,HP,5808,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,35,1,DEF,951,Add,HP,5960,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,36,1,DEF,976,Add,HP,6112,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,37,1,DEF,1001,Add,HP,6264,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,38,1,DEF,1026,Add,HP,6416,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,39,1,DEF,1051,Add,HP,6568,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,40,1,DEF,1076,Add,HP,6720,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,41,1,DEF,1101,Add,HP,6872,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,42,1,DEF,1126,Add,HP,7024,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,43,1,DEF,1151,Add,HP,7176,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,44,1,DEF,1176,Add,HP,7328,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,45,1,DEF,1201,Add,HP,7480,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,46,1,DEF,1226,Add,HP,7632,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,47,1,DEF,1251,Add,HP,7784,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,48,1,DEF,1276,Add,HP,7936,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,49,1,DEF,1301,Add,HP,8088,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,50,1,DEF,1326,Add,HP,8240,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,51,1,DEF,1356,Add,HP,8401,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,52,1,DEF,1386,Add,HP,8562,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,53,1,DEF,1416,Add,HP,8723,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,54,1,DEF,1446,Add,HP,8884,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,55,1,DEF,1476,Add,HP,9045,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,56,1,DEF,1506,Add,HP,9206,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,57,1,DEF,1536,Add,HP,9367,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,58,1,DEF,1566,Add,HP,9528,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,59,1,DEF,1596,Add,HP,9689,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,60,1,DEF,1626,Add,HP,9850,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,61,1,DEF,1656,Add,HP,10011,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,62,1,DEF,1686,Add,HP,10172,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,63,1,DEF,1716,Add,HP,10333,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,64,1,DEF,1746,Add,HP,10494,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,65,1,DEF,1776,Add,HP,10655,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,66,1,DEF,1806,Add,HP,10816,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,67,1,DEF,1836,Add,HP,10977,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,68,1,DEF,1866,Add,HP,11138,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,69,1,DEF,1896,Add,HP,11299,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,70,1,DEF,1926,Add,HP,11460,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,71,1,DEF,1956,Add,HP,11621,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,72,1,DEF,1986,Add,HP,11782,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,73,1,DEF,2016,Add,HP,11943,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,74,1,DEF,2046,Add,HP,12104,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,75,1,DEF,2076,Add,HP,12265,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,76,1,DEF,2106,Add,HP,12426,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,77,1,DEF,2136,Add,HP,12587,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,78,1,DEF,2166,Add,HP,12748,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,79,1,DEF,2196,Add,HP,12909,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,80,1,DEF,2226,Add,HP,13070,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,81,1,DEF,2256,Add,HP,13231,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,82,1,DEF,2286,Add,HP,13392,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,83,1,DEF,2316,Add,HP,13553,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,84,1,DEF,2346,Add,HP,13714,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,85,1,DEF,2376,Add,HP,13875,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,86,1,DEF,2406,Add,HP,14036,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,87,1,DEF,2436,Add,HP,14197,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,88,1,DEF,2466,Add,HP,14358,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,89,1,DEF,2496,Add,HP,14519,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,90,1,DEF,2526,Add,HP,14680,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,91,1,DEF,2556,Add,HP,14841,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,92,1,DEF,2586,Add,HP,15002,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,93,1,DEF,2616,Add,HP,15163,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,94,1,DEF,2646,Add,HP,15324,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,95,1,DEF,2676,Add,HP,15485,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,96,1,DEF,2706,Add,HP,15646,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,97,1,DEF,2736,Add,HP,15807,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,98,1,DEF,2766,Add,HP,15968,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,99,1,DEF,2796,Add,HP,16129,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,100,1,DEF,2826,Add,HP,16290,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,101,1,DEF,2867,Add,HP,16494,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,102,1,DEF,2908,Add,HP,16698,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,103,1,DEF,2949,Add,HP,16902,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,104,1,DEF,2990,Add,HP,17106,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,105,1,DEF,3031,Add,HP,17310,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,106,1,DEF,3072,Add,HP,17514,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,107,1,DEF,3113,Add,HP,17718,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,108,1,DEF,3154,Add,HP,17922,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,109,1,DEF,3195,Add,HP,18126,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,110,1,DEF,3236,Add,HP,18330,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,111,1,DEF,3277,Add,HP,18534,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,112,1,DEF,3318,Add,HP,18738,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,113,1,DEF,3359,Add,HP,18942,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,114,1,DEF,3400,Add,HP,19146,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,115,1,DEF,3441,Add,HP,19350,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,116,1,DEF,3482,Add,HP,19554,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,117,1,DEF,3523,Add,HP,19758,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,118,1,DEF,3564,Add,HP,19962,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,119,1,DEF,3605,Add,HP,20166,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,120,1,DEF,3646,Add,HP,20370,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,121,1,DEF,3687,Add,HP,20574,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,122,1,DEF,3728,Add,HP,20778,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,123,1,DEF,3769,Add,HP,20982,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,124,1,DEF,3810,Add,HP,21186,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,125,1,DEF,3851,Add,HP,21390,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,126,1,DEF,3892,Add,HP,21594,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,127,1,DEF,3933,Add,HP,21798,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,128,1,DEF,3974,Add,HP,22002,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,129,1,DEF,4015,Add,HP,22206,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,130,1,DEF,4056,Add,HP,22410,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,131,1,DEF,4097,Add,HP,22614,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,132,1,DEF,4138,Add,HP,22818,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,133,1,DEF,4179,Add,HP,23022,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,134,1,DEF,4220,Add,HP,23226,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,135,1,DEF,4261,Add,HP,23430,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,136,1,DEF,4302,Add,HP,23634,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,137,1,DEF,4343,Add,HP,23838,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,138,1,DEF,4384,Add,HP,24042,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,139,1,DEF,4425,Add,HP,24246,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,140,1,DEF,4466,Add,HP,24450,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,141,1,DEF,4507,Add,HP,24654,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,142,1,DEF,4548,Add,HP,24858,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,143,1,DEF,4589,Add,HP,25062,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,144,1,DEF,4630,Add,HP,25266,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,145,1,DEF,4671,Add,HP,25470,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,146,1,DEF,4712,Add,HP,25674,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,147,1,DEF,4753,Add,HP,25878,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,148,1,DEF,4794,Add,HP,26082,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,149,1,DEF,4835,Add,HP,26286,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,150,1,DEF,4876,Add,HP,26490,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,151,1,DEF,4936,Add,HP,27580,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,152,1,DEF,4996,Add,HP,28670,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,153,1,DEF,5056,Add,HP,29760,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,154,1,DEF,5116,Add,HP,30850,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,155,1,DEF,5176,Add,HP,31940,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,156,1,DEF,5236,Add,HP,33030,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,157,1,DEF,5296,Add,HP,34120,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,158,1,DEF,5356,Add,HP,35210,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,159,1,DEF,5416,Add,HP,36300,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,160,1,DEF,5476,Add,HP,37390,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,161,1,DEF,5536,Add,HP,38480,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,162,1,DEF,5596,Add,HP,39570,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,163,1,DEF,5656,Add,HP,40660,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,164,1,DEF,5716,Add,HP,41750,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,165,1,DEF,5776,Add,HP,42840,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,166,1,DEF,5836,Add,HP,43930,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,167,1,DEF,5896,Add,HP,45020,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,168,1,DEF,5956,Add,HP,46110,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,169,1,DEF,6016,Add,HP,47200,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,170,1,DEF,6076,Add,HP,48290,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,171,1,DEF,6136,Add,HP,49380,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,172,1,DEF,6196,Add,HP,50470,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,173,1,DEF,6256,Add,HP,51560,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,174,1,DEF,6316,Add,HP,52650,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,175,1,DEF,6376,Add,HP,53740,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,176,1,DEF,6436,Add,HP,54830,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,177,1,DEF,6496,Add,HP,55920,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,178,1,DEF,6556,Add,HP,57010,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,179,1,DEF,6616,Add,HP,58100,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,180,1,DEF,6676,Add,HP,59190,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,181,1,DEF,6736,Add,HP,60280,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,182,1,DEF,6796,Add,HP,61370,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,183,1,DEF,6856,Add,HP,62460,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,184,1,DEF,6916,Add,HP,63550,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,185,1,DEF,6976,Add,HP,64640,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,186,1,DEF,7036,Add,HP,65730,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,187,1,DEF,7096,Add,HP,66820,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,188,1,DEF,7156,Add,HP,67910,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,189,1,DEF,7216,Add,HP,69000,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,190,1,DEF,7276,Add,HP,70090,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,191,1,DEF,7336,Add,HP,71180,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,192,1,DEF,7396,Add,HP,72270,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,193,1,DEF,7456,Add,HP,73360,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,194,1,DEF,7516,Add,HP,74450,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,195,1,DEF,7576,Add,HP,75540,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,196,1,DEF,7636,Add,HP,76630,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,197,1,DEF,7696,Add,HP,77720,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,198,1,DEF,7756,Add,HP,78810,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,199,1,DEF,7816,Add,HP,79900,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,200,1,DEF,7876,Add,HP,80990,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,201,1,DEF,7940,Add,HP,82625,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,202,1,DEF,8004,Add,HP,84260,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,203,1,DEF,8068,Add,HP,85895,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,204,1,DEF,8132,Add,HP,87530,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,205,1,DEF,8196,Add,HP,89165,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,206,1,DEF,8260,Add,HP,90800,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,207,1,DEF,8324,Add,HP,92435,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,208,1,DEF,8388,Add,HP,94070,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,209,1,DEF,8452,Add,HP,95705,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,210,1,DEF,8516,Add,HP,97340,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,211,1,DEF,8580,Add,HP,98975,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,212,1,DEF,8644,Add,HP,100610,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,213,1,DEF,8708,Add,HP,102245,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,214,1,DEF,8772,Add,HP,103880,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,215,1,DEF,8836,Add,HP,105515,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,216,1,DEF,8900,Add,HP,107150,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,217,1,DEF,8964,Add,HP,108785,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,218,1,DEF,9028,Add,HP,110420,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,219,1,DEF,9092,Add,HP,112055,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,220,1,DEF,9156,Add,HP,113690,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,221,1,DEF,9220,Add,HP,115325,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,222,1,DEF,9284,Add,HP,116960,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,223,1,DEF,9348,Add,HP,118595,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,224,1,DEF,9412,Add,HP,120230,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,225,1,DEF,9476,Add,HP,121865,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,226,1,DEF,9540,Add,HP,123500,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,227,1,DEF,9604,Add,HP,125135,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,228,1,DEF,9668,Add,HP,126770,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,229,1,DEF,9732,Add,HP,128405,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,230,1,DEF,9796,Add,HP,130040,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,231,1,DEF,9860,Add,HP,131675,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,232,1,DEF,9924,Add,HP,133310,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,233,1,DEF,9988,Add,HP,134945,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,234,1,DEF,10052,Add,HP,136580,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,235,1,DEF,10116,Add,HP,138215,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,236,1,DEF,10180,Add,HP,139850,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,237,1,DEF,10244,Add,HP,141485,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,238,1,DEF,10308,Add,HP,143120,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,239,1,DEF,10372,Add,HP,144755,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,240,1,DEF,10436,Add,HP,146390,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,241,1,DEF,10500,Add,HP,148025,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,242,1,DEF,10564,Add,HP,149660,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,243,1,DEF,10628,Add,HP,151295,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,244,1,DEF,10692,Add,HP,152930,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,245,1,DEF,10756,Add,HP,154565,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,246,1,DEF,10820,Add,HP,156200,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,247,1,DEF,10884,Add,HP,157835,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,248,1,DEF,10948,Add,HP,159470,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,249,1,DEF,11012,Add,HP,161105,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,250,1,DEF,11076,Add,HP,162740,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,251,1,DEF,11155,Add,HP,164506,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,252,1,DEF,11234,Add,HP,166272,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,253,1,DEF,11313,Add,HP,168038,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,254,1,DEF,11392,Add,HP,169804,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,255,1,DEF,11471,Add,HP,171570,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,256,1,DEF,11550,Add,HP,173336,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,257,1,DEF,11629,Add,HP,175102,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,258,1,DEF,11708,Add,HP,176868,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,259,1,DEF,11787,Add,HP,178634,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,260,1,DEF,11866,Add,HP,180400,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,261,1,DEF,11945,Add,HP,182166,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,262,1,DEF,12024,Add,HP,183932,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,263,1,DEF,12103,Add,HP,185698,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,264,1,DEF,12182,Add,HP,187464,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,265,1,DEF,12261,Add,HP,189230,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,266,1,DEF,12340,Add,HP,190996,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,267,1,DEF,12419,Add,HP,192762,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,268,1,DEF,12498,Add,HP,194528,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,269,1,DEF,12577,Add,HP,196294,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,270,1,DEF,12656,Add,HP,198060,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,271,1,DEF,12735,Add,HP,199826,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,272,1,DEF,12814,Add,HP,201592,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,273,1,DEF,12893,Add,HP,203358,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,274,1,DEF,12972,Add,HP,205124,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,275,1,DEF,13051,Add,HP,206890,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,276,1,DEF,13130,Add,HP,208656,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,277,1,DEF,13209,Add,HP,210422,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,278,1,DEF,13288,Add,HP,212188,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,279,1,DEF,13367,Add,HP,213954,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,280,1,DEF,13446,Add,HP,215720,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,281,1,DEF,13525,Add,HP,217486,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,282,1,DEF,13604,Add,HP,219252,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,283,1,DEF,13683,Add,HP,221018,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,284,1,DEF,13762,Add,HP,222784,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,285,1,DEF,13841,Add,HP,224550,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,286,1,DEF,13920,Add,HP,226316,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,287,1,DEF,13999,Add,HP,228082,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,288,1,DEF,14078,Add,HP,229848,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,289,1,DEF,14157,Add,HP,231614,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,290,1,DEF,14236,Add,HP,233380,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,291,1,DEF,14315,Add,HP,235146,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,292,1,DEF,14394,Add,HP,236912,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,293,1,DEF,14473,Add,HP,238678,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,294,1,DEF,14552,Add,HP,240444,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,295,1,DEF,14631,Add,HP,242210,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,296,1,DEF,14710,Add,HP,243976,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,297,1,DEF,14789,Add,HP,245742,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,298,1,DEF,14868,Add,HP,247508,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,299,1,DEF,14947,Add,HP,249274,Add,NONE,0,Add,,,,,,,, -10023,Adventure Vampiric Rune,300,1,DEF,15026,Add,HP,251040,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,1,1,DEF,101,Add,HP,792,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,2,1,DEF,126,Add,HP,944,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,3,1,DEF,151,Add,HP,1096,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,4,1,DEF,176,Add,HP,1248,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,5,1,DEF,201,Add,HP,1400,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,6,1,DEF,226,Add,HP,1552,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,7,1,DEF,251,Add,HP,1704,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,8,1,DEF,276,Add,HP,1856,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,9,1,DEF,301,Add,HP,2008,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,10,1,DEF,326,Add,HP,2160,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,11,1,DEF,351,Add,HP,2312,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,12,1,DEF,376,Add,HP,2464,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,13,1,DEF,401,Add,HP,2616,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,14,1,DEF,426,Add,HP,2768,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,15,1,DEF,451,Add,HP,2920,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,16,1,DEF,476,Add,HP,3072,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,17,1,DEF,501,Add,HP,3224,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,18,1,DEF,526,Add,HP,3376,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,19,1,DEF,551,Add,HP,3528,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,20,1,DEF,576,Add,HP,3680,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,21,1,DEF,601,Add,HP,3832,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,22,1,DEF,626,Add,HP,3984,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,23,1,DEF,651,Add,HP,4136,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,24,1,DEF,676,Add,HP,4288,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,25,1,DEF,701,Add,HP,4440,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,26,1,DEF,726,Add,HP,4592,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,27,1,DEF,751,Add,HP,4744,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,28,1,DEF,776,Add,HP,4896,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,29,1,DEF,801,Add,HP,5048,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,30,1,DEF,826,Add,HP,5200,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,31,1,DEF,851,Add,HP,5352,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,32,1,DEF,876,Add,HP,5504,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,33,1,DEF,901,Add,HP,5656,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,34,1,DEF,926,Add,HP,5808,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,35,1,DEF,951,Add,HP,5960,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,36,1,DEF,976,Add,HP,6112,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,37,1,DEF,1001,Add,HP,6264,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,38,1,DEF,1026,Add,HP,6416,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,39,1,DEF,1051,Add,HP,6568,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,40,1,DEF,1076,Add,HP,6720,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,41,1,DEF,1101,Add,HP,6872,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,42,1,DEF,1126,Add,HP,7024,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,43,1,DEF,1151,Add,HP,7176,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,44,1,DEF,1176,Add,HP,7328,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,45,1,DEF,1201,Add,HP,7480,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,46,1,DEF,1226,Add,HP,7632,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,47,1,DEF,1251,Add,HP,7784,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,48,1,DEF,1276,Add,HP,7936,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,49,1,DEF,1301,Add,HP,8088,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,50,1,DEF,1326,Add,HP,8240,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,51,1,DEF,1356,Add,HP,8401,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,52,1,DEF,1386,Add,HP,8562,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,53,1,DEF,1416,Add,HP,8723,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,54,1,DEF,1446,Add,HP,8884,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,55,1,DEF,1476,Add,HP,9045,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,56,1,DEF,1506,Add,HP,9206,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,57,1,DEF,1536,Add,HP,9367,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,58,1,DEF,1566,Add,HP,9528,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,59,1,DEF,1596,Add,HP,9689,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,60,1,DEF,1626,Add,HP,9850,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,61,1,DEF,1656,Add,HP,10011,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,62,1,DEF,1686,Add,HP,10172,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,63,1,DEF,1716,Add,HP,10333,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,64,1,DEF,1746,Add,HP,10494,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,65,1,DEF,1776,Add,HP,10655,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,66,1,DEF,1806,Add,HP,10816,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,67,1,DEF,1836,Add,HP,10977,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,68,1,DEF,1866,Add,HP,11138,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,69,1,DEF,1896,Add,HP,11299,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,70,1,DEF,1926,Add,HP,11460,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,71,1,DEF,1956,Add,HP,11621,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,72,1,DEF,1986,Add,HP,11782,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,73,1,DEF,2016,Add,HP,11943,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,74,1,DEF,2046,Add,HP,12104,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,75,1,DEF,2076,Add,HP,12265,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,76,1,DEF,2106,Add,HP,12426,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,77,1,DEF,2136,Add,HP,12587,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,78,1,DEF,2166,Add,HP,12748,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,79,1,DEF,2196,Add,HP,12909,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,80,1,DEF,2226,Add,HP,13070,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,81,1,DEF,2256,Add,HP,13231,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,82,1,DEF,2286,Add,HP,13392,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,83,1,DEF,2316,Add,HP,13553,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,84,1,DEF,2346,Add,HP,13714,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,85,1,DEF,2376,Add,HP,13875,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,86,1,DEF,2406,Add,HP,14036,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,87,1,DEF,2436,Add,HP,14197,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,88,1,DEF,2466,Add,HP,14358,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,89,1,DEF,2496,Add,HP,14519,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,90,1,DEF,2526,Add,HP,14680,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,91,1,DEF,2556,Add,HP,14841,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,92,1,DEF,2586,Add,HP,15002,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,93,1,DEF,2616,Add,HP,15163,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,94,1,DEF,2646,Add,HP,15324,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,95,1,DEF,2676,Add,HP,15485,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,96,1,DEF,2706,Add,HP,15646,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,97,1,DEF,2736,Add,HP,15807,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,98,1,DEF,2766,Add,HP,15968,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,99,1,DEF,2796,Add,HP,16129,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,100,1,DEF,2826,Add,HP,16290,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,101,1,DEF,2867,Add,HP,16494,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,102,1,DEF,2908,Add,HP,16698,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,103,1,DEF,2949,Add,HP,16902,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,104,1,DEF,2990,Add,HP,17106,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,105,1,DEF,3031,Add,HP,17310,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,106,1,DEF,3072,Add,HP,17514,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,107,1,DEF,3113,Add,HP,17718,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,108,1,DEF,3154,Add,HP,17922,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,109,1,DEF,3195,Add,HP,18126,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,110,1,DEF,3236,Add,HP,18330,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,111,1,DEF,3277,Add,HP,18534,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,112,1,DEF,3318,Add,HP,18738,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,113,1,DEF,3359,Add,HP,18942,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,114,1,DEF,3400,Add,HP,19146,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,115,1,DEF,3441,Add,HP,19350,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,116,1,DEF,3482,Add,HP,19554,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,117,1,DEF,3523,Add,HP,19758,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,118,1,DEF,3564,Add,HP,19962,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,119,1,DEF,3605,Add,HP,20166,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,120,1,DEF,3646,Add,HP,20370,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,121,1,DEF,3687,Add,HP,20574,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,122,1,DEF,3728,Add,HP,20778,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,123,1,DEF,3769,Add,HP,20982,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,124,1,DEF,3810,Add,HP,21186,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,125,1,DEF,3851,Add,HP,21390,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,126,1,DEF,3892,Add,HP,21594,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,127,1,DEF,3933,Add,HP,21798,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,128,1,DEF,3974,Add,HP,22002,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,129,1,DEF,4015,Add,HP,22206,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,130,1,DEF,4056,Add,HP,22410,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,131,1,DEF,4097,Add,HP,22614,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,132,1,DEF,4138,Add,HP,22818,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,133,1,DEF,4179,Add,HP,23022,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,134,1,DEF,4220,Add,HP,23226,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,135,1,DEF,4261,Add,HP,23430,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,136,1,DEF,4302,Add,HP,23634,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,137,1,DEF,4343,Add,HP,23838,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,138,1,DEF,4384,Add,HP,24042,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,139,1,DEF,4425,Add,HP,24246,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,140,1,DEF,4466,Add,HP,24450,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,141,1,DEF,4507,Add,HP,24654,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,142,1,DEF,4548,Add,HP,24858,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,143,1,DEF,4589,Add,HP,25062,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,144,1,DEF,4630,Add,HP,25266,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,145,1,DEF,4671,Add,HP,25470,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,146,1,DEF,4712,Add,HP,25674,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,147,1,DEF,4753,Add,HP,25878,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,148,1,DEF,4794,Add,HP,26082,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,149,1,DEF,4835,Add,HP,26286,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,150,1,DEF,4876,Add,HP,26490,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,151,1,DEF,4936,Add,HP,27580,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,152,1,DEF,4996,Add,HP,28670,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,153,1,DEF,5056,Add,HP,29760,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,154,1,DEF,5116,Add,HP,30850,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,155,1,DEF,5176,Add,HP,31940,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,156,1,DEF,5236,Add,HP,33030,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,157,1,DEF,5296,Add,HP,34120,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,158,1,DEF,5356,Add,HP,35210,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,159,1,DEF,5416,Add,HP,36300,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,160,1,DEF,5476,Add,HP,37390,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,161,1,DEF,5536,Add,HP,38480,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,162,1,DEF,5596,Add,HP,39570,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,163,1,DEF,5656,Add,HP,40660,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,164,1,DEF,5716,Add,HP,41750,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,165,1,DEF,5776,Add,HP,42840,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,166,1,DEF,5836,Add,HP,43930,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,167,1,DEF,5896,Add,HP,45020,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,168,1,DEF,5956,Add,HP,46110,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,169,1,DEF,6016,Add,HP,47200,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,170,1,DEF,6076,Add,HP,48290,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,171,1,DEF,6136,Add,HP,49380,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,172,1,DEF,6196,Add,HP,50470,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,173,1,DEF,6256,Add,HP,51560,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,174,1,DEF,6316,Add,HP,52650,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,175,1,DEF,6376,Add,HP,53740,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,176,1,DEF,6436,Add,HP,54830,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,177,1,DEF,6496,Add,HP,55920,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,178,1,DEF,6556,Add,HP,57010,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,179,1,DEF,6616,Add,HP,58100,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,180,1,DEF,6676,Add,HP,59190,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,181,1,DEF,6736,Add,HP,60280,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,182,1,DEF,6796,Add,HP,61370,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,183,1,DEF,6856,Add,HP,62460,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,184,1,DEF,6916,Add,HP,63550,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,185,1,DEF,6976,Add,HP,64640,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,186,1,DEF,7036,Add,HP,65730,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,187,1,DEF,7096,Add,HP,66820,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,188,1,DEF,7156,Add,HP,67910,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,189,1,DEF,7216,Add,HP,69000,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,190,1,DEF,7276,Add,HP,70090,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,191,1,DEF,7336,Add,HP,71180,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,192,1,DEF,7396,Add,HP,72270,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,193,1,DEF,7456,Add,HP,73360,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,194,1,DEF,7516,Add,HP,74450,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,195,1,DEF,7576,Add,HP,75540,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,196,1,DEF,7636,Add,HP,76630,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,197,1,DEF,7696,Add,HP,77720,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,198,1,DEF,7756,Add,HP,78810,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,199,1,DEF,7816,Add,HP,79900,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,200,1,DEF,7876,Add,HP,80990,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,201,1,DEF,7940,Add,HP,82625,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,202,1,DEF,8004,Add,HP,84260,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,203,1,DEF,8068,Add,HP,85895,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,204,1,DEF,8132,Add,HP,87530,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,205,1,DEF,8196,Add,HP,89165,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,206,1,DEF,8260,Add,HP,90800,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,207,1,DEF,8324,Add,HP,92435,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,208,1,DEF,8388,Add,HP,94070,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,209,1,DEF,8452,Add,HP,95705,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,210,1,DEF,8516,Add,HP,97340,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,211,1,DEF,8580,Add,HP,98975,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,212,1,DEF,8644,Add,HP,100610,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,213,1,DEF,8708,Add,HP,102245,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,214,1,DEF,8772,Add,HP,103880,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,215,1,DEF,8836,Add,HP,105515,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,216,1,DEF,8900,Add,HP,107150,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,217,1,DEF,8964,Add,HP,108785,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,218,1,DEF,9028,Add,HP,110420,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,219,1,DEF,9092,Add,HP,112055,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,220,1,DEF,9156,Add,HP,113690,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,221,1,DEF,9220,Add,HP,115325,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,222,1,DEF,9284,Add,HP,116960,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,223,1,DEF,9348,Add,HP,118595,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,224,1,DEF,9412,Add,HP,120230,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,225,1,DEF,9476,Add,HP,121865,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,226,1,DEF,9540,Add,HP,123500,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,227,1,DEF,9604,Add,HP,125135,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,228,1,DEF,9668,Add,HP,126770,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,229,1,DEF,9732,Add,HP,128405,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,230,1,DEF,9796,Add,HP,130040,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,231,1,DEF,9860,Add,HP,131675,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,232,1,DEF,9924,Add,HP,133310,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,233,1,DEF,9988,Add,HP,134945,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,234,1,DEF,10052,Add,HP,136580,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,235,1,DEF,10116,Add,HP,138215,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,236,1,DEF,10180,Add,HP,139850,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,237,1,DEF,10244,Add,HP,141485,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,238,1,DEF,10308,Add,HP,143120,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,239,1,DEF,10372,Add,HP,144755,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,240,1,DEF,10436,Add,HP,146390,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,241,1,DEF,10500,Add,HP,148025,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,242,1,DEF,10564,Add,HP,149660,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,243,1,DEF,10628,Add,HP,151295,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,244,1,DEF,10692,Add,HP,152930,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,245,1,DEF,10756,Add,HP,154565,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,246,1,DEF,10820,Add,HP,156200,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,247,1,DEF,10884,Add,HP,157835,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,248,1,DEF,10948,Add,HP,159470,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,249,1,DEF,11012,Add,HP,161105,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,250,1,DEF,11076,Add,HP,162740,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,251,1,DEF,11155,Add,HP,164506,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,252,1,DEF,11234,Add,HP,166272,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,253,1,DEF,11313,Add,HP,168038,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,254,1,DEF,11392,Add,HP,169804,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,255,1,DEF,11471,Add,HP,171570,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,256,1,DEF,11550,Add,HP,173336,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,257,1,DEF,11629,Add,HP,175102,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,258,1,DEF,11708,Add,HP,176868,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,259,1,DEF,11787,Add,HP,178634,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,260,1,DEF,11866,Add,HP,180400,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,261,1,DEF,11945,Add,HP,182166,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,262,1,DEF,12024,Add,HP,183932,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,263,1,DEF,12103,Add,HP,185698,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,264,1,DEF,12182,Add,HP,187464,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,265,1,DEF,12261,Add,HP,189230,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,266,1,DEF,12340,Add,HP,190996,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,267,1,DEF,12419,Add,HP,192762,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,268,1,DEF,12498,Add,HP,194528,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,269,1,DEF,12577,Add,HP,196294,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,270,1,DEF,12656,Add,HP,198060,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,271,1,DEF,12735,Add,HP,199826,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,272,1,DEF,12814,Add,HP,201592,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,273,1,DEF,12893,Add,HP,203358,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,274,1,DEF,12972,Add,HP,205124,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,275,1,DEF,13051,Add,HP,206890,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,276,1,DEF,13130,Add,HP,208656,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,277,1,DEF,13209,Add,HP,210422,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,278,1,DEF,13288,Add,HP,212188,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,279,1,DEF,13367,Add,HP,213954,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,280,1,DEF,13446,Add,HP,215720,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,281,1,DEF,13525,Add,HP,217486,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,282,1,DEF,13604,Add,HP,219252,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,283,1,DEF,13683,Add,HP,221018,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,284,1,DEF,13762,Add,HP,222784,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,285,1,DEF,13841,Add,HP,224550,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,286,1,DEF,13920,Add,HP,226316,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,287,1,DEF,13999,Add,HP,228082,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,288,1,DEF,14078,Add,HP,229848,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,289,1,DEF,14157,Add,HP,231614,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,290,1,DEF,14236,Add,HP,233380,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,291,1,DEF,14315,Add,HP,235146,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,292,1,DEF,14394,Add,HP,236912,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,293,1,DEF,14473,Add,HP,238678,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,294,1,DEF,14552,Add,HP,240444,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,295,1,DEF,14631,Add,HP,242210,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,296,1,DEF,14710,Add,HP,243976,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,297,1,DEF,14789,Add,HP,245742,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,298,1,DEF,14868,Add,HP,247508,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,299,1,DEF,14947,Add,HP,249274,Add,NONE,0,Add,,,,,,,, -10024,WorldBoss Vampiric Rune,300,1,DEF,15026,Add,HP,251040,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,1,1,HP,724,Add,HIT,249,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,2,1,HP,914,Add,HIT,306,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,3,1,HP,1104,Add,HIT,363,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,4,1,HP,1294,Add,HIT,420,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,5,1,HP,1484,Add,HIT,477,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,6,1,HP,1674,Add,HIT,534,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,7,1,HP,1864,Add,HIT,591,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,8,1,HP,2054,Add,HIT,648,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,9,1,HP,2244,Add,HIT,705,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,10,1,HP,2434,Add,HIT,762,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,11,1,HP,2624,Add,HIT,819,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,12,1,HP,2814,Add,HIT,876,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,13,1,HP,3004,Add,HIT,933,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,14,1,HP,3194,Add,HIT,990,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,15,1,HP,3384,Add,HIT,1047,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,16,1,HP,3574,Add,HIT,1104,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,17,1,HP,3764,Add,HIT,1161,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,18,1,HP,3954,Add,HIT,1218,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,19,1,HP,4144,Add,HIT,1275,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,20,1,HP,4334,Add,HIT,1332,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,21,1,HP,4524,Add,HIT,1389,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,22,1,HP,4714,Add,HIT,1446,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,23,1,HP,4904,Add,HIT,1503,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,24,1,HP,5094,Add,HIT,1560,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,25,1,HP,5284,Add,HIT,1617,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,26,1,HP,5474,Add,HIT,1674,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,27,1,HP,5664,Add,HIT,1731,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,28,1,HP,5854,Add,HIT,1788,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,29,1,HP,6044,Add,HIT,1845,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,30,1,HP,6234,Add,HIT,1902,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,31,1,HP,6424,Add,HIT,1959,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,32,1,HP,6614,Add,HIT,2016,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,33,1,HP,6804,Add,HIT,2073,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,34,1,HP,6994,Add,HIT,2130,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,35,1,HP,7184,Add,HIT,2187,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,36,1,HP,7374,Add,HIT,2244,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,37,1,HP,7564,Add,HIT,2301,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,38,1,HP,7754,Add,HIT,2358,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,39,1,HP,7944,Add,HIT,2415,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,40,1,HP,8134,Add,HIT,2472,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,41,1,HP,8324,Add,HIT,2529,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,42,1,HP,8514,Add,HIT,2586,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,43,1,HP,8704,Add,HIT,2643,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,44,1,HP,8894,Add,HIT,2700,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,45,1,HP,9084,Add,HIT,2757,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,46,1,HP,9274,Add,HIT,2814,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,47,1,HP,9464,Add,HIT,2871,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,48,1,HP,9654,Add,HIT,2928,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,49,1,HP,9844,Add,HIT,2985,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,50,1,HP,10034,Add,HIT,3042,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,51,1,HP,10235,Add,HIT,3132,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,52,1,HP,10436,Add,HIT,3222,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,53,1,HP,10637,Add,HIT,3312,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,54,1,HP,10838,Add,HIT,3402,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,55,1,HP,11039,Add,HIT,3492,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,56,1,HP,11240,Add,HIT,3582,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,57,1,HP,11441,Add,HIT,3672,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,58,1,HP,11642,Add,HIT,3762,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,59,1,HP,11843,Add,HIT,3852,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,60,1,HP,12044,Add,HIT,3942,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,61,1,HP,12245,Add,HIT,4032,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,62,1,HP,12446,Add,HIT,4122,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,63,1,HP,12647,Add,HIT,4212,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,64,1,HP,12848,Add,HIT,4302,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,65,1,HP,13049,Add,HIT,4392,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,66,1,HP,13250,Add,HIT,4482,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,67,1,HP,13451,Add,HIT,4572,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,68,1,HP,13652,Add,HIT,4662,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,69,1,HP,13853,Add,HIT,4752,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,70,1,HP,14054,Add,HIT,4842,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,71,1,HP,14255,Add,HIT,4932,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,72,1,HP,14456,Add,HIT,5022,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,73,1,HP,14657,Add,HIT,5112,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,74,1,HP,14858,Add,HIT,5202,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,75,1,HP,15059,Add,HIT,5292,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,76,1,HP,15260,Add,HIT,5382,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,77,1,HP,15461,Add,HIT,5472,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,78,1,HP,15662,Add,HIT,5562,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,79,1,HP,15863,Add,HIT,5652,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,80,1,HP,16064,Add,HIT,5742,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,81,1,HP,16265,Add,HIT,5832,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,82,1,HP,16466,Add,HIT,5922,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,83,1,HP,16667,Add,HIT,6012,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,84,1,HP,16868,Add,HIT,6102,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,85,1,HP,17069,Add,HIT,6192,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,86,1,HP,17270,Add,HIT,6282,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,87,1,HP,17471,Add,HIT,6372,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,88,1,HP,17672,Add,HIT,6462,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,89,1,HP,17873,Add,HIT,6552,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,90,1,HP,18074,Add,HIT,6642,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,91,1,HP,18275,Add,HIT,6732,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,92,1,HP,18476,Add,HIT,6822,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,93,1,HP,18677,Add,HIT,6912,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,94,1,HP,18878,Add,HIT,7002,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,95,1,HP,19079,Add,HIT,7092,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,96,1,HP,19280,Add,HIT,7182,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,97,1,HP,19481,Add,HIT,7272,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,98,1,HP,19682,Add,HIT,7362,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,99,1,HP,19883,Add,HIT,7452,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,100,1,HP,20084,Add,HIT,7542,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,101,1,HP,20339,Add,HIT,7653,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,102,1,HP,20594,Add,HIT,7764,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,103,1,HP,20849,Add,HIT,7875,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,104,1,HP,21104,Add,HIT,7986,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,105,1,HP,21359,Add,HIT,8097,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,106,1,HP,21614,Add,HIT,8208,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,107,1,HP,21869,Add,HIT,8319,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,108,1,HP,22124,Add,HIT,8430,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,109,1,HP,22379,Add,HIT,8541,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,110,1,HP,22634,Add,HIT,8652,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,111,1,HP,22889,Add,HIT,8763,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,112,1,HP,23144,Add,HIT,8874,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,113,1,HP,23399,Add,HIT,8985,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,114,1,HP,23654,Add,HIT,9096,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,115,1,HP,23909,Add,HIT,9207,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,116,1,HP,24164,Add,HIT,9318,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,117,1,HP,24419,Add,HIT,9429,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,118,1,HP,24674,Add,HIT,9540,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,119,1,HP,24929,Add,HIT,9651,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,120,1,HP,25184,Add,HIT,9762,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,121,1,HP,25439,Add,HIT,9873,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,122,1,HP,25694,Add,HIT,9984,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,123,1,HP,25949,Add,HIT,10095,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,124,1,HP,26204,Add,HIT,10206,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,125,1,HP,26459,Add,HIT,10317,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,126,1,HP,26714,Add,HIT,10428,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,127,1,HP,26969,Add,HIT,10539,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,128,1,HP,27224,Add,HIT,10650,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,129,1,HP,27479,Add,HIT,10761,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,130,1,HP,27734,Add,HIT,10872,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,131,1,HP,27989,Add,HIT,10983,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,132,1,HP,28244,Add,HIT,11094,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,133,1,HP,28499,Add,HIT,11205,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,134,1,HP,28754,Add,HIT,11316,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,135,1,HP,29009,Add,HIT,11427,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,136,1,HP,29264,Add,HIT,11538,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,137,1,HP,29519,Add,HIT,11649,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,138,1,HP,29774,Add,HIT,11760,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,139,1,HP,30029,Add,HIT,11871,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,140,1,HP,30284,Add,HIT,11982,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,141,1,HP,30539,Add,HIT,12093,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,142,1,HP,30794,Add,HIT,12204,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,143,1,HP,31049,Add,HIT,12315,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,144,1,HP,31304,Add,HIT,12426,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,145,1,HP,31559,Add,HIT,12537,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,146,1,HP,31814,Add,HIT,12648,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,147,1,HP,32069,Add,HIT,12759,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,148,1,HP,32324,Add,HIT,12870,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,149,1,HP,32579,Add,HIT,12981,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,150,1,HP,32834,Add,HIT,13092,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,151,1,HP,34196,Add,HIT,13227,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,152,1,HP,35558,Add,HIT,13362,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,153,1,HP,36920,Add,HIT,13497,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,154,1,HP,38282,Add,HIT,13632,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,155,1,HP,39644,Add,HIT,13767,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,156,1,HP,41006,Add,HIT,13902,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,157,1,HP,42368,Add,HIT,14037,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,158,1,HP,43730,Add,HIT,14172,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,159,1,HP,45092,Add,HIT,14307,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,160,1,HP,46454,Add,HIT,14442,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,161,1,HP,47816,Add,HIT,14577,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,162,1,HP,49178,Add,HIT,14712,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,163,1,HP,50540,Add,HIT,14847,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,164,1,HP,51902,Add,HIT,14982,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,165,1,HP,53264,Add,HIT,15117,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,166,1,HP,54626,Add,HIT,15252,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,167,1,HP,55988,Add,HIT,15387,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,168,1,HP,57350,Add,HIT,15522,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,169,1,HP,58712,Add,HIT,15657,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,170,1,HP,60074,Add,HIT,15792,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,171,1,HP,61436,Add,HIT,15927,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,172,1,HP,62798,Add,HIT,16062,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,173,1,HP,64160,Add,HIT,16197,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,174,1,HP,65522,Add,HIT,16332,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,175,1,HP,66884,Add,HIT,16467,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,176,1,HP,68246,Add,HIT,16602,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,177,1,HP,69608,Add,HIT,16737,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,178,1,HP,70970,Add,HIT,16872,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,179,1,HP,72332,Add,HIT,17007,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,180,1,HP,73694,Add,HIT,17142,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,181,1,HP,75056,Add,HIT,17277,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,182,1,HP,76418,Add,HIT,17412,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,183,1,HP,77780,Add,HIT,17547,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,184,1,HP,79142,Add,HIT,17682,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,185,1,HP,80504,Add,HIT,17817,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,186,1,HP,81866,Add,HIT,17952,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,187,1,HP,83228,Add,HIT,18087,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,188,1,HP,84590,Add,HIT,18222,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,189,1,HP,85952,Add,HIT,18357,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,190,1,HP,87314,Add,HIT,18492,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,191,1,HP,88676,Add,HIT,18627,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,192,1,HP,90038,Add,HIT,18762,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,193,1,HP,91400,Add,HIT,18897,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,194,1,HP,92762,Add,HIT,19032,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,195,1,HP,94124,Add,HIT,19167,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,196,1,HP,95486,Add,HIT,19302,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,197,1,HP,96848,Add,HIT,19437,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,198,1,HP,98210,Add,HIT,19572,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,199,1,HP,99572,Add,HIT,19707,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,200,1,HP,100934,Add,HIT,19842,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,201,1,HP,102978,Add,HIT,19984,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,202,1,HP,105022,Add,HIT,20126,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,203,1,HP,107066,Add,HIT,20268,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,204,1,HP,109110,Add,HIT,20410,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,205,1,HP,111154,Add,HIT,20552,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,206,1,HP,113198,Add,HIT,20694,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,207,1,HP,115242,Add,HIT,20836,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,208,1,HP,117286,Add,HIT,20978,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,209,1,HP,119330,Add,HIT,21120,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,210,1,HP,121374,Add,HIT,21262,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,211,1,HP,123418,Add,HIT,21404,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,212,1,HP,125462,Add,HIT,21546,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,213,1,HP,127506,Add,HIT,21688,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,214,1,HP,129550,Add,HIT,21830,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,215,1,HP,131594,Add,HIT,21972,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,216,1,HP,133638,Add,HIT,22114,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,217,1,HP,135682,Add,HIT,22256,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,218,1,HP,137726,Add,HIT,22398,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,219,1,HP,139770,Add,HIT,22540,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,220,1,HP,141814,Add,HIT,22682,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,221,1,HP,143858,Add,HIT,22824,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,222,1,HP,145902,Add,HIT,22966,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,223,1,HP,147946,Add,HIT,23108,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,224,1,HP,149990,Add,HIT,23250,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,225,1,HP,152034,Add,HIT,23392,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,226,1,HP,154078,Add,HIT,23534,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,227,1,HP,156122,Add,HIT,23676,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,228,1,HP,158166,Add,HIT,23818,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,229,1,HP,160210,Add,HIT,23960,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,230,1,HP,162254,Add,HIT,24102,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,231,1,HP,164298,Add,HIT,24244,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,232,1,HP,166342,Add,HIT,24386,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,233,1,HP,168386,Add,HIT,24528,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,234,1,HP,170430,Add,HIT,24670,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,235,1,HP,172474,Add,HIT,24812,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,236,1,HP,174518,Add,HIT,24954,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,237,1,HP,176562,Add,HIT,25096,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,238,1,HP,178606,Add,HIT,25238,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,239,1,HP,180650,Add,HIT,25380,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,240,1,HP,182694,Add,HIT,25522,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,241,1,HP,184738,Add,HIT,25664,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,242,1,HP,186782,Add,HIT,25806,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,243,1,HP,188826,Add,HIT,25948,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,244,1,HP,190870,Add,HIT,26090,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,245,1,HP,192914,Add,HIT,26232,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,246,1,HP,194958,Add,HIT,26374,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,247,1,HP,197002,Add,HIT,26516,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,248,1,HP,199046,Add,HIT,26658,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,249,1,HP,201090,Add,HIT,26800,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,250,1,HP,203134,Add,HIT,26942,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,251,1,HP,205342,Add,HIT,27095,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,252,1,HP,207550,Add,HIT,27248,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,253,1,HP,209758,Add,HIT,27401,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,254,1,HP,211966,Add,HIT,27554,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,255,1,HP,214174,Add,HIT,27707,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,256,1,HP,216382,Add,HIT,27860,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,257,1,HP,218590,Add,HIT,28013,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,258,1,HP,220798,Add,HIT,28166,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,259,1,HP,223006,Add,HIT,28319,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,260,1,HP,225214,Add,HIT,28472,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,261,1,HP,227422,Add,HIT,28625,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,262,1,HP,229630,Add,HIT,28778,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,263,1,HP,231838,Add,HIT,28931,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,264,1,HP,234046,Add,HIT,29084,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,265,1,HP,236254,Add,HIT,29237,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,266,1,HP,238462,Add,HIT,29390,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,267,1,HP,240670,Add,HIT,29543,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,268,1,HP,242878,Add,HIT,29696,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,269,1,HP,245086,Add,HIT,29849,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,270,1,HP,247294,Add,HIT,30002,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,271,1,HP,249502,Add,HIT,30155,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,272,1,HP,251710,Add,HIT,30308,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,273,1,HP,253918,Add,HIT,30461,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,274,1,HP,256126,Add,HIT,30614,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,275,1,HP,258334,Add,HIT,30767,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,276,1,HP,260542,Add,HIT,30920,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,277,1,HP,262750,Add,HIT,31073,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,278,1,HP,264958,Add,HIT,31226,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,279,1,HP,267166,Add,HIT,31379,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,280,1,HP,269374,Add,HIT,31532,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,281,1,HP,271582,Add,HIT,31685,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,282,1,HP,273790,Add,HIT,31838,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,283,1,HP,275998,Add,HIT,31991,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,284,1,HP,278206,Add,HIT,32144,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,285,1,HP,280414,Add,HIT,32297,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,286,1,HP,282622,Add,HIT,32450,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,287,1,HP,284830,Add,HIT,32603,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,288,1,HP,287038,Add,HIT,32756,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,289,1,HP,289246,Add,HIT,32909,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,290,1,HP,291454,Add,HIT,33062,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,291,1,HP,293662,Add,HIT,33215,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,292,1,HP,295870,Add,HIT,33368,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,293,1,HP,298078,Add,HIT,33521,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,294,1,HP,300286,Add,HIT,33674,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,295,1,HP,302494,Add,HIT,33827,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,296,1,HP,304702,Add,HIT,33980,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,297,1,HP,306910,Add,HIT,34133,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,298,1,HP,309118,Add,HIT,34286,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,299,1,HP,311326,Add,HIT,34439,Add,NONE,0,Add,,,,,,,, -10025,Adventure Stamina Rune,300,1,HP,313534,Add,HIT,34592,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,1,1,HP,724,Add,HIT,249,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,2,1,HP,914,Add,HIT,306,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,3,1,HP,1104,Add,HIT,363,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,4,1,HP,1294,Add,HIT,420,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,5,1,HP,1484,Add,HIT,477,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,6,1,HP,1674,Add,HIT,534,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,7,1,HP,1864,Add,HIT,591,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,8,1,HP,2054,Add,HIT,648,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,9,1,HP,2244,Add,HIT,705,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,10,1,HP,2434,Add,HIT,762,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,11,1,HP,2624,Add,HIT,819,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,12,1,HP,2814,Add,HIT,876,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,13,1,HP,3004,Add,HIT,933,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,14,1,HP,3194,Add,HIT,990,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,15,1,HP,3384,Add,HIT,1047,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,16,1,HP,3574,Add,HIT,1104,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,17,1,HP,3764,Add,HIT,1161,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,18,1,HP,3954,Add,HIT,1218,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,19,1,HP,4144,Add,HIT,1275,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,20,1,HP,4334,Add,HIT,1332,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,21,1,HP,4524,Add,HIT,1389,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,22,1,HP,4714,Add,HIT,1446,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,23,1,HP,4904,Add,HIT,1503,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,24,1,HP,5094,Add,HIT,1560,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,25,1,HP,5284,Add,HIT,1617,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,26,1,HP,5474,Add,HIT,1674,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,27,1,HP,5664,Add,HIT,1731,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,28,1,HP,5854,Add,HIT,1788,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,29,1,HP,6044,Add,HIT,1845,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,30,1,HP,6234,Add,HIT,1902,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,31,1,HP,6424,Add,HIT,1959,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,32,1,HP,6614,Add,HIT,2016,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,33,1,HP,6804,Add,HIT,2073,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,34,1,HP,6994,Add,HIT,2130,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,35,1,HP,7184,Add,HIT,2187,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,36,1,HP,7374,Add,HIT,2244,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,37,1,HP,7564,Add,HIT,2301,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,38,1,HP,7754,Add,HIT,2358,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,39,1,HP,7944,Add,HIT,2415,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,40,1,HP,8134,Add,HIT,2472,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,41,1,HP,8324,Add,HIT,2529,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,42,1,HP,8514,Add,HIT,2586,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,43,1,HP,8704,Add,HIT,2643,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,44,1,HP,8894,Add,HIT,2700,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,45,1,HP,9084,Add,HIT,2757,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,46,1,HP,9274,Add,HIT,2814,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,47,1,HP,9464,Add,HIT,2871,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,48,1,HP,9654,Add,HIT,2928,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,49,1,HP,9844,Add,HIT,2985,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,50,1,HP,10034,Add,HIT,3042,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,51,1,HP,10235,Add,HIT,3132,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,52,1,HP,10436,Add,HIT,3222,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,53,1,HP,10637,Add,HIT,3312,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,54,1,HP,10838,Add,HIT,3402,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,55,1,HP,11039,Add,HIT,3492,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,56,1,HP,11240,Add,HIT,3582,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,57,1,HP,11441,Add,HIT,3672,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,58,1,HP,11642,Add,HIT,3762,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,59,1,HP,11843,Add,HIT,3852,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,60,1,HP,12044,Add,HIT,3942,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,61,1,HP,12245,Add,HIT,4032,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,62,1,HP,12446,Add,HIT,4122,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,63,1,HP,12647,Add,HIT,4212,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,64,1,HP,12848,Add,HIT,4302,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,65,1,HP,13049,Add,HIT,4392,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,66,1,HP,13250,Add,HIT,4482,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,67,1,HP,13451,Add,HIT,4572,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,68,1,HP,13652,Add,HIT,4662,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,69,1,HP,13853,Add,HIT,4752,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,70,1,HP,14054,Add,HIT,4842,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,71,1,HP,14255,Add,HIT,4932,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,72,1,HP,14456,Add,HIT,5022,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,73,1,HP,14657,Add,HIT,5112,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,74,1,HP,14858,Add,HIT,5202,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,75,1,HP,15059,Add,HIT,5292,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,76,1,HP,15260,Add,HIT,5382,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,77,1,HP,15461,Add,HIT,5472,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,78,1,HP,15662,Add,HIT,5562,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,79,1,HP,15863,Add,HIT,5652,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,80,1,HP,16064,Add,HIT,5742,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,81,1,HP,16265,Add,HIT,5832,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,82,1,HP,16466,Add,HIT,5922,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,83,1,HP,16667,Add,HIT,6012,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,84,1,HP,16868,Add,HIT,6102,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,85,1,HP,17069,Add,HIT,6192,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,86,1,HP,17270,Add,HIT,6282,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,87,1,HP,17471,Add,HIT,6372,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,88,1,HP,17672,Add,HIT,6462,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,89,1,HP,17873,Add,HIT,6552,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,90,1,HP,18074,Add,HIT,6642,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,91,1,HP,18275,Add,HIT,6732,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,92,1,HP,18476,Add,HIT,6822,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,93,1,HP,18677,Add,HIT,6912,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,94,1,HP,18878,Add,HIT,7002,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,95,1,HP,19079,Add,HIT,7092,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,96,1,HP,19280,Add,HIT,7182,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,97,1,HP,19481,Add,HIT,7272,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,98,1,HP,19682,Add,HIT,7362,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,99,1,HP,19883,Add,HIT,7452,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,100,1,HP,20084,Add,HIT,7542,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,101,1,HP,20339,Add,HIT,7653,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,102,1,HP,20594,Add,HIT,7764,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,103,1,HP,20849,Add,HIT,7875,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,104,1,HP,21104,Add,HIT,7986,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,105,1,HP,21359,Add,HIT,8097,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,106,1,HP,21614,Add,HIT,8208,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,107,1,HP,21869,Add,HIT,8319,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,108,1,HP,22124,Add,HIT,8430,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,109,1,HP,22379,Add,HIT,8541,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,110,1,HP,22634,Add,HIT,8652,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,111,1,HP,22889,Add,HIT,8763,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,112,1,HP,23144,Add,HIT,8874,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,113,1,HP,23399,Add,HIT,8985,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,114,1,HP,23654,Add,HIT,9096,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,115,1,HP,23909,Add,HIT,9207,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,116,1,HP,24164,Add,HIT,9318,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,117,1,HP,24419,Add,HIT,9429,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,118,1,HP,24674,Add,HIT,9540,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,119,1,HP,24929,Add,HIT,9651,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,120,1,HP,25184,Add,HIT,9762,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,121,1,HP,25439,Add,HIT,9873,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,122,1,HP,25694,Add,HIT,9984,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,123,1,HP,25949,Add,HIT,10095,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,124,1,HP,26204,Add,HIT,10206,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,125,1,HP,26459,Add,HIT,10317,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,126,1,HP,26714,Add,HIT,10428,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,127,1,HP,26969,Add,HIT,10539,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,128,1,HP,27224,Add,HIT,10650,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,129,1,HP,27479,Add,HIT,10761,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,130,1,HP,27734,Add,HIT,10872,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,131,1,HP,27989,Add,HIT,10983,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,132,1,HP,28244,Add,HIT,11094,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,133,1,HP,28499,Add,HIT,11205,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,134,1,HP,28754,Add,HIT,11316,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,135,1,HP,29009,Add,HIT,11427,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,136,1,HP,29264,Add,HIT,11538,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,137,1,HP,29519,Add,HIT,11649,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,138,1,HP,29774,Add,HIT,11760,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,139,1,HP,30029,Add,HIT,11871,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,140,1,HP,30284,Add,HIT,11982,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,141,1,HP,30539,Add,HIT,12093,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,142,1,HP,30794,Add,HIT,12204,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,143,1,HP,31049,Add,HIT,12315,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,144,1,HP,31304,Add,HIT,12426,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,145,1,HP,31559,Add,HIT,12537,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,146,1,HP,31814,Add,HIT,12648,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,147,1,HP,32069,Add,HIT,12759,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,148,1,HP,32324,Add,HIT,12870,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,149,1,HP,32579,Add,HIT,12981,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,150,1,HP,32834,Add,HIT,13092,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,151,1,HP,34196,Add,HIT,13227,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,152,1,HP,35558,Add,HIT,13362,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,153,1,HP,36920,Add,HIT,13497,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,154,1,HP,38282,Add,HIT,13632,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,155,1,HP,39644,Add,HIT,13767,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,156,1,HP,41006,Add,HIT,13902,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,157,1,HP,42368,Add,HIT,14037,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,158,1,HP,43730,Add,HIT,14172,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,159,1,HP,45092,Add,HIT,14307,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,160,1,HP,46454,Add,HIT,14442,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,161,1,HP,47816,Add,HIT,14577,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,162,1,HP,49178,Add,HIT,14712,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,163,1,HP,50540,Add,HIT,14847,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,164,1,HP,51902,Add,HIT,14982,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,165,1,HP,53264,Add,HIT,15117,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,166,1,HP,54626,Add,HIT,15252,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,167,1,HP,55988,Add,HIT,15387,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,168,1,HP,57350,Add,HIT,15522,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,169,1,HP,58712,Add,HIT,15657,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,170,1,HP,60074,Add,HIT,15792,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,171,1,HP,61436,Add,HIT,15927,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,172,1,HP,62798,Add,HIT,16062,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,173,1,HP,64160,Add,HIT,16197,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,174,1,HP,65522,Add,HIT,16332,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,175,1,HP,66884,Add,HIT,16467,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,176,1,HP,68246,Add,HIT,16602,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,177,1,HP,69608,Add,HIT,16737,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,178,1,HP,70970,Add,HIT,16872,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,179,1,HP,72332,Add,HIT,17007,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,180,1,HP,73694,Add,HIT,17142,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,181,1,HP,75056,Add,HIT,17277,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,182,1,HP,76418,Add,HIT,17412,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,183,1,HP,77780,Add,HIT,17547,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,184,1,HP,79142,Add,HIT,17682,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,185,1,HP,80504,Add,HIT,17817,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,186,1,HP,81866,Add,HIT,17952,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,187,1,HP,83228,Add,HIT,18087,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,188,1,HP,84590,Add,HIT,18222,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,189,1,HP,85952,Add,HIT,18357,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,190,1,HP,87314,Add,HIT,18492,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,191,1,HP,88676,Add,HIT,18627,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,192,1,HP,90038,Add,HIT,18762,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,193,1,HP,91400,Add,HIT,18897,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,194,1,HP,92762,Add,HIT,19032,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,195,1,HP,94124,Add,HIT,19167,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,196,1,HP,95486,Add,HIT,19302,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,197,1,HP,96848,Add,HIT,19437,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,198,1,HP,98210,Add,HIT,19572,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,199,1,HP,99572,Add,HIT,19707,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,200,1,HP,100934,Add,HIT,19842,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,201,1,HP,102978,Add,HIT,19984,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,202,1,HP,105022,Add,HIT,20126,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,203,1,HP,107066,Add,HIT,20268,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,204,1,HP,109110,Add,HIT,20410,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,205,1,HP,111154,Add,HIT,20552,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,206,1,HP,113198,Add,HIT,20694,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,207,1,HP,115242,Add,HIT,20836,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,208,1,HP,117286,Add,HIT,20978,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,209,1,HP,119330,Add,HIT,21120,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,210,1,HP,121374,Add,HIT,21262,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,211,1,HP,123418,Add,HIT,21404,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,212,1,HP,125462,Add,HIT,21546,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,213,1,HP,127506,Add,HIT,21688,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,214,1,HP,129550,Add,HIT,21830,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,215,1,HP,131594,Add,HIT,21972,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,216,1,HP,133638,Add,HIT,22114,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,217,1,HP,135682,Add,HIT,22256,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,218,1,HP,137726,Add,HIT,22398,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,219,1,HP,139770,Add,HIT,22540,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,220,1,HP,141814,Add,HIT,22682,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,221,1,HP,143858,Add,HIT,22824,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,222,1,HP,145902,Add,HIT,22966,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,223,1,HP,147946,Add,HIT,23108,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,224,1,HP,149990,Add,HIT,23250,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,225,1,HP,152034,Add,HIT,23392,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,226,1,HP,154078,Add,HIT,23534,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,227,1,HP,156122,Add,HIT,23676,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,228,1,HP,158166,Add,HIT,23818,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,229,1,HP,160210,Add,HIT,23960,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,230,1,HP,162254,Add,HIT,24102,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,231,1,HP,164298,Add,HIT,24244,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,232,1,HP,166342,Add,HIT,24386,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,233,1,HP,168386,Add,HIT,24528,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,234,1,HP,170430,Add,HIT,24670,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,235,1,HP,172474,Add,HIT,24812,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,236,1,HP,174518,Add,HIT,24954,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,237,1,HP,176562,Add,HIT,25096,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,238,1,HP,178606,Add,HIT,25238,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,239,1,HP,180650,Add,HIT,25380,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,240,1,HP,182694,Add,HIT,25522,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,241,1,HP,184738,Add,HIT,25664,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,242,1,HP,186782,Add,HIT,25806,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,243,1,HP,188826,Add,HIT,25948,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,244,1,HP,190870,Add,HIT,26090,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,245,1,HP,192914,Add,HIT,26232,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,246,1,HP,194958,Add,HIT,26374,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,247,1,HP,197002,Add,HIT,26516,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,248,1,HP,199046,Add,HIT,26658,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,249,1,HP,201090,Add,HIT,26800,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,250,1,HP,203134,Add,HIT,26942,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,251,1,HP,205342,Add,HIT,27095,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,252,1,HP,207550,Add,HIT,27248,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,253,1,HP,209758,Add,HIT,27401,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,254,1,HP,211966,Add,HIT,27554,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,255,1,HP,214174,Add,HIT,27707,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,256,1,HP,216382,Add,HIT,27860,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,257,1,HP,218590,Add,HIT,28013,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,258,1,HP,220798,Add,HIT,28166,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,259,1,HP,223006,Add,HIT,28319,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,260,1,HP,225214,Add,HIT,28472,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,261,1,HP,227422,Add,HIT,28625,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,262,1,HP,229630,Add,HIT,28778,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,263,1,HP,231838,Add,HIT,28931,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,264,1,HP,234046,Add,HIT,29084,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,265,1,HP,236254,Add,HIT,29237,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,266,1,HP,238462,Add,HIT,29390,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,267,1,HP,240670,Add,HIT,29543,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,268,1,HP,242878,Add,HIT,29696,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,269,1,HP,245086,Add,HIT,29849,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,270,1,HP,247294,Add,HIT,30002,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,271,1,HP,249502,Add,HIT,30155,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,272,1,HP,251710,Add,HIT,30308,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,273,1,HP,253918,Add,HIT,30461,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,274,1,HP,256126,Add,HIT,30614,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,275,1,HP,258334,Add,HIT,30767,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,276,1,HP,260542,Add,HIT,30920,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,277,1,HP,262750,Add,HIT,31073,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,278,1,HP,264958,Add,HIT,31226,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,279,1,HP,267166,Add,HIT,31379,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,280,1,HP,269374,Add,HIT,31532,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,281,1,HP,271582,Add,HIT,31685,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,282,1,HP,273790,Add,HIT,31838,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,283,1,HP,275998,Add,HIT,31991,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,284,1,HP,278206,Add,HIT,32144,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,285,1,HP,280414,Add,HIT,32297,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,286,1,HP,282622,Add,HIT,32450,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,287,1,HP,284830,Add,HIT,32603,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,288,1,HP,287038,Add,HIT,32756,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,289,1,HP,289246,Add,HIT,32909,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,290,1,HP,291454,Add,HIT,33062,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,291,1,HP,293662,Add,HIT,33215,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,292,1,HP,295870,Add,HIT,33368,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,293,1,HP,298078,Add,HIT,33521,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,294,1,HP,300286,Add,HIT,33674,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,295,1,HP,302494,Add,HIT,33827,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,296,1,HP,304702,Add,HIT,33980,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,297,1,HP,306910,Add,HIT,34133,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,298,1,HP,309118,Add,HIT,34286,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,299,1,HP,311326,Add,HIT,34439,Add,NONE,0,Add,,,,,,,, -10026,Arena Stamina Rune,300,1,HP,313534,Add,HIT,34592,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,1,1,ATK,188,Add,SPD,105,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,2,1,ATK,210,Add,SPD,120,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,3,1,ATK,232,Add,SPD,135,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,4,1,ATK,254,Add,SPD,150,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,5,1,ATK,276,Add,SPD,165,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,6,1,ATK,298,Add,SPD,180,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,7,1,ATK,320,Add,SPD,195,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,8,1,ATK,342,Add,SPD,210,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,9,1,ATK,364,Add,SPD,225,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,10,1,ATK,386,Add,SPD,240,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,11,1,ATK,408,Add,SPD,255,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,12,1,ATK,430,Add,SPD,270,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,13,1,ATK,452,Add,SPD,285,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,14,1,ATK,474,Add,SPD,300,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,15,1,ATK,496,Add,SPD,315,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,16,1,ATK,518,Add,SPD,330,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,17,1,ATK,540,Add,SPD,345,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,18,1,ATK,562,Add,SPD,360,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,19,1,ATK,584,Add,SPD,375,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,20,1,ATK,606,Add,SPD,390,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,21,1,ATK,628,Add,SPD,405,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,22,1,ATK,650,Add,SPD,420,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,23,1,ATK,672,Add,SPD,435,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,24,1,ATK,694,Add,SPD,450,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,25,1,ATK,716,Add,SPD,465,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,26,1,ATK,738,Add,SPD,480,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,27,1,ATK,760,Add,SPD,495,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,28,1,ATK,782,Add,SPD,510,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,29,1,ATK,804,Add,SPD,525,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,30,1,ATK,826,Add,SPD,540,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,31,1,ATK,848,Add,SPD,555,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,32,1,ATK,870,Add,SPD,570,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,33,1,ATK,892,Add,SPD,585,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,34,1,ATK,914,Add,SPD,600,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,35,1,ATK,936,Add,SPD,615,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,36,1,ATK,958,Add,SPD,630,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,37,1,ATK,980,Add,SPD,645,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,38,1,ATK,1002,Add,SPD,660,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,39,1,ATK,1024,Add,SPD,675,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,40,1,ATK,1046,Add,SPD,690,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,41,1,ATK,1068,Add,SPD,705,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,42,1,ATK,1090,Add,SPD,720,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,43,1,ATK,1112,Add,SPD,735,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,44,1,ATK,1134,Add,SPD,750,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,45,1,ATK,1156,Add,SPD,765,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,46,1,ATK,1178,Add,SPD,780,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,47,1,ATK,1200,Add,SPD,795,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,48,1,ATK,1222,Add,SPD,810,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,49,1,ATK,1244,Add,SPD,825,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,50,1,ATK,1266,Add,SPD,840,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,51,1,ATK,1298,Add,SPD,876,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,52,1,ATK,1330,Add,SPD,912,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,53,1,ATK,1362,Add,SPD,948,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,54,1,ATK,1394,Add,SPD,984,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,55,1,ATK,1426,Add,SPD,1020,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,56,1,ATK,1458,Add,SPD,1056,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,57,1,ATK,1490,Add,SPD,1092,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,58,1,ATK,1522,Add,SPD,1128,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,59,1,ATK,1554,Add,SPD,1164,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,60,1,ATK,1586,Add,SPD,1200,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,61,1,ATK,1618,Add,SPD,1236,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,62,1,ATK,1650,Add,SPD,1272,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,63,1,ATK,1682,Add,SPD,1308,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,64,1,ATK,1714,Add,SPD,1344,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,65,1,ATK,1746,Add,SPD,1380,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,66,1,ATK,1778,Add,SPD,1416,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,67,1,ATK,1810,Add,SPD,1452,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,68,1,ATK,1842,Add,SPD,1488,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,69,1,ATK,1874,Add,SPD,1524,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,70,1,ATK,1906,Add,SPD,1560,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,71,1,ATK,1938,Add,SPD,1596,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,72,1,ATK,1970,Add,SPD,1632,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,73,1,ATK,2002,Add,SPD,1668,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,74,1,ATK,2034,Add,SPD,1704,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,75,1,ATK,2066,Add,SPD,1740,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,76,1,ATK,2098,Add,SPD,1776,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,77,1,ATK,2130,Add,SPD,1812,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,78,1,ATK,2162,Add,SPD,1848,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,79,1,ATK,2194,Add,SPD,1884,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,80,1,ATK,2226,Add,SPD,1920,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,81,1,ATK,2258,Add,SPD,1956,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,82,1,ATK,2290,Add,SPD,1992,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,83,1,ATK,2322,Add,SPD,2028,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,84,1,ATK,2354,Add,SPD,2064,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,85,1,ATK,2386,Add,SPD,2100,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,86,1,ATK,2418,Add,SPD,2136,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,87,1,ATK,2450,Add,SPD,2172,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,88,1,ATK,2482,Add,SPD,2208,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,89,1,ATK,2514,Add,SPD,2244,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,90,1,ATK,2546,Add,SPD,2280,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,91,1,ATK,2578,Add,SPD,2316,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,92,1,ATK,2610,Add,SPD,2352,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,93,1,ATK,2642,Add,SPD,2388,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,94,1,ATK,2674,Add,SPD,2424,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,95,1,ATK,2706,Add,SPD,2460,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,96,1,ATK,2738,Add,SPD,2496,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,97,1,ATK,2770,Add,SPD,2532,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,98,1,ATK,2802,Add,SPD,2568,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,99,1,ATK,2834,Add,SPD,2604,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,100,1,ATK,2866,Add,SPD,2640,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,101,1,ATK,2918,Add,SPD,2681,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,102,1,ATK,2970,Add,SPD,2722,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,103,1,ATK,3022,Add,SPD,2763,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,104,1,ATK,3074,Add,SPD,2804,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,105,1,ATK,3126,Add,SPD,2845,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,106,1,ATK,3178,Add,SPD,2886,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,107,1,ATK,3230,Add,SPD,2927,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,108,1,ATK,3282,Add,SPD,2968,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,109,1,ATK,3334,Add,SPD,3009,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,110,1,ATK,3386,Add,SPD,3050,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,111,1,ATK,3438,Add,SPD,3091,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,112,1,ATK,3490,Add,SPD,3132,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,113,1,ATK,3542,Add,SPD,3173,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,114,1,ATK,3594,Add,SPD,3214,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,115,1,ATK,3646,Add,SPD,3255,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,116,1,ATK,3698,Add,SPD,3296,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,117,1,ATK,3750,Add,SPD,3337,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,118,1,ATK,3802,Add,SPD,3378,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,119,1,ATK,3854,Add,SPD,3419,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,120,1,ATK,3906,Add,SPD,3460,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,121,1,ATK,3958,Add,SPD,3501,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,122,1,ATK,4010,Add,SPD,3542,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,123,1,ATK,4062,Add,SPD,3583,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,124,1,ATK,4114,Add,SPD,3624,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,125,1,ATK,4166,Add,SPD,3665,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,126,1,ATK,4218,Add,SPD,3706,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,127,1,ATK,4270,Add,SPD,3747,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,128,1,ATK,4322,Add,SPD,3788,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,129,1,ATK,4374,Add,SPD,3829,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,130,1,ATK,4426,Add,SPD,3870,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,131,1,ATK,4478,Add,SPD,3911,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,132,1,ATK,4530,Add,SPD,3952,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,133,1,ATK,4582,Add,SPD,3993,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,134,1,ATK,4634,Add,SPD,4034,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,135,1,ATK,4686,Add,SPD,4075,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,136,1,ATK,4738,Add,SPD,4116,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,137,1,ATK,4790,Add,SPD,4157,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,138,1,ATK,4842,Add,SPD,4198,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,139,1,ATK,4894,Add,SPD,4239,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,140,1,ATK,4946,Add,SPD,4280,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,141,1,ATK,4998,Add,SPD,4321,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,142,1,ATK,5050,Add,SPD,4362,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,143,1,ATK,5102,Add,SPD,4403,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,144,1,ATK,5154,Add,SPD,4444,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,145,1,ATK,5206,Add,SPD,4485,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,146,1,ATK,5258,Add,SPD,4526,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,147,1,ATK,5310,Add,SPD,4567,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,148,1,ATK,5362,Add,SPD,4608,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,149,1,ATK,5414,Add,SPD,4649,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,150,1,ATK,5466,Add,SPD,4690,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,151,1,ATK,5549,Add,SPD,4750,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,152,1,ATK,5632,Add,SPD,4810,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,153,1,ATK,5715,Add,SPD,4870,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,154,1,ATK,5798,Add,SPD,4930,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,155,1,ATK,5881,Add,SPD,4990,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,156,1,ATK,5964,Add,SPD,5050,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,157,1,ATK,6047,Add,SPD,5110,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,158,1,ATK,6130,Add,SPD,5170,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,159,1,ATK,6213,Add,SPD,5230,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,160,1,ATK,6296,Add,SPD,5290,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,161,1,ATK,6379,Add,SPD,5350,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,162,1,ATK,6462,Add,SPD,5410,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,163,1,ATK,6545,Add,SPD,5470,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,164,1,ATK,6628,Add,SPD,5530,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,165,1,ATK,6711,Add,SPD,5590,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,166,1,ATK,6794,Add,SPD,5650,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,167,1,ATK,6877,Add,SPD,5710,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,168,1,ATK,6960,Add,SPD,5770,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,169,1,ATK,7043,Add,SPD,5830,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,170,1,ATK,7126,Add,SPD,5890,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,171,1,ATK,7209,Add,SPD,5950,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,172,1,ATK,7292,Add,SPD,6010,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,173,1,ATK,7375,Add,SPD,6070,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,174,1,ATK,7458,Add,SPD,6130,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,175,1,ATK,7541,Add,SPD,6190,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,176,1,ATK,7624,Add,SPD,6250,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,177,1,ATK,7707,Add,SPD,6310,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,178,1,ATK,7790,Add,SPD,6370,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,179,1,ATK,7873,Add,SPD,6430,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,180,1,ATK,7956,Add,SPD,6490,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,181,1,ATK,8039,Add,SPD,6550,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,182,1,ATK,8122,Add,SPD,6610,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,183,1,ATK,8205,Add,SPD,6670,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,184,1,ATK,8288,Add,SPD,6730,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,185,1,ATK,8371,Add,SPD,6790,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,186,1,ATK,8454,Add,SPD,6850,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,187,1,ATK,8537,Add,SPD,6910,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,188,1,ATK,8620,Add,SPD,6970,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,189,1,ATK,8703,Add,SPD,7030,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,190,1,ATK,8786,Add,SPD,7090,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,191,1,ATK,8869,Add,SPD,7150,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,192,1,ATK,8952,Add,SPD,7210,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,193,1,ATK,9035,Add,SPD,7270,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,194,1,ATK,9118,Add,SPD,7330,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,195,1,ATK,9201,Add,SPD,7390,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,196,1,ATK,9284,Add,SPD,7450,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,197,1,ATK,9367,Add,SPD,7510,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,198,1,ATK,9450,Add,SPD,7570,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,199,1,ATK,9533,Add,SPD,7630,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,200,1,ATK,9616,Add,SPD,7690,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,201,1,ATK,9716,Add,SPD,7787,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,202,1,ATK,9816,Add,SPD,7884,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,203,1,ATK,9916,Add,SPD,7981,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,204,1,ATK,10016,Add,SPD,8078,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,205,1,ATK,10116,Add,SPD,8175,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,206,1,ATK,10216,Add,SPD,8272,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,207,1,ATK,10316,Add,SPD,8369,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,208,1,ATK,10416,Add,SPD,8466,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,209,1,ATK,10516,Add,SPD,8563,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,210,1,ATK,10616,Add,SPD,8660,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,211,1,ATK,10716,Add,SPD,8757,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,212,1,ATK,10816,Add,SPD,8854,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,213,1,ATK,10916,Add,SPD,8951,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,214,1,ATK,11016,Add,SPD,9048,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,215,1,ATK,11116,Add,SPD,9145,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,216,1,ATK,11216,Add,SPD,9242,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,217,1,ATK,11316,Add,SPD,9339,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,218,1,ATK,11416,Add,SPD,9436,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,219,1,ATK,11516,Add,SPD,9533,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,220,1,ATK,11616,Add,SPD,9630,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,221,1,ATK,11716,Add,SPD,9727,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,222,1,ATK,11816,Add,SPD,9824,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,223,1,ATK,11916,Add,SPD,9921,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,224,1,ATK,12016,Add,SPD,10018,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,225,1,ATK,12116,Add,SPD,10115,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,226,1,ATK,12216,Add,SPD,10212,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,227,1,ATK,12316,Add,SPD,10309,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,228,1,ATK,12416,Add,SPD,10406,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,229,1,ATK,12516,Add,SPD,10503,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,230,1,ATK,12616,Add,SPD,10600,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,231,1,ATK,12716,Add,SPD,10697,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,232,1,ATK,12816,Add,SPD,10794,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,233,1,ATK,12916,Add,SPD,10891,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,234,1,ATK,13016,Add,SPD,10988,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,235,1,ATK,13116,Add,SPD,11085,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,236,1,ATK,13216,Add,SPD,11182,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,237,1,ATK,13316,Add,SPD,11279,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,238,1,ATK,13416,Add,SPD,11376,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,239,1,ATK,13516,Add,SPD,11473,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,240,1,ATK,13616,Add,SPD,11570,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,241,1,ATK,13716,Add,SPD,11667,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,242,1,ATK,13816,Add,SPD,11764,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,243,1,ATK,13916,Add,SPD,11861,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,244,1,ATK,14016,Add,SPD,11958,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,245,1,ATK,14116,Add,SPD,12055,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,246,1,ATK,14216,Add,SPD,12152,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,247,1,ATK,14316,Add,SPD,12249,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,248,1,ATK,14416,Add,SPD,12346,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,249,1,ATK,14516,Add,SPD,12443,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,250,1,ATK,14616,Add,SPD,12540,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,251,1,ATK,14764,Add,SPD,12673,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,252,1,ATK,14912,Add,SPD,12806,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,253,1,ATK,15060,Add,SPD,12939,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,254,1,ATK,15208,Add,SPD,13072,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,255,1,ATK,15356,Add,SPD,13205,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,256,1,ATK,15504,Add,SPD,13338,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,257,1,ATK,15652,Add,SPD,13471,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,258,1,ATK,15800,Add,SPD,13604,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,259,1,ATK,15948,Add,SPD,13737,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,260,1,ATK,16096,Add,SPD,13870,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,261,1,ATK,16244,Add,SPD,14003,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,262,1,ATK,16392,Add,SPD,14136,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,263,1,ATK,16540,Add,SPD,14269,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,264,1,ATK,16688,Add,SPD,14402,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,265,1,ATK,16836,Add,SPD,14535,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,266,1,ATK,16984,Add,SPD,14668,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,267,1,ATK,17132,Add,SPD,14801,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,268,1,ATK,17280,Add,SPD,14934,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,269,1,ATK,17428,Add,SPD,15067,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,270,1,ATK,17576,Add,SPD,15200,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,271,1,ATK,17724,Add,SPD,15333,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,272,1,ATK,17872,Add,SPD,15466,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,273,1,ATK,18020,Add,SPD,15599,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,274,1,ATK,18168,Add,SPD,15732,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,275,1,ATK,18316,Add,SPD,15865,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,276,1,ATK,18464,Add,SPD,15998,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,277,1,ATK,18612,Add,SPD,16131,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,278,1,ATK,18760,Add,SPD,16264,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,279,1,ATK,18908,Add,SPD,16397,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,280,1,ATK,19056,Add,SPD,16530,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,281,1,ATK,19204,Add,SPD,16663,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,282,1,ATK,19352,Add,SPD,16796,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,283,1,ATK,19500,Add,SPD,16929,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,284,1,ATK,19648,Add,SPD,17062,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,285,1,ATK,19796,Add,SPD,17195,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,286,1,ATK,19944,Add,SPD,17328,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,287,1,ATK,20092,Add,SPD,17461,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,288,1,ATK,20240,Add,SPD,17594,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,289,1,ATK,20388,Add,SPD,17727,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,290,1,ATK,20536,Add,SPD,17860,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,291,1,ATK,20684,Add,SPD,17993,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,292,1,ATK,20832,Add,SPD,18126,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,293,1,ATK,20980,Add,SPD,18259,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,294,1,ATK,21128,Add,SPD,18392,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,295,1,ATK,21276,Add,SPD,18525,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,296,1,ATK,21424,Add,SPD,18658,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,297,1,ATK,21572,Add,SPD,18791,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,298,1,ATK,21720,Add,SPD,18924,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,299,1,ATK,21868,Add,SPD,19057,Add,NONE,0,Add,,,,,,,, -10027,Arena Quick Rune,300,1,ATK,22016,Add,SPD,19190,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,1,1,ATK,188,Add,SPD,105,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,2,1,ATK,210,Add,SPD,120,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,3,1,ATK,232,Add,SPD,135,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,4,1,ATK,254,Add,SPD,150,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,5,1,ATK,276,Add,SPD,165,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,6,1,ATK,298,Add,SPD,180,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,7,1,ATK,320,Add,SPD,195,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,8,1,ATK,342,Add,SPD,210,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,9,1,ATK,364,Add,SPD,225,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,10,1,ATK,386,Add,SPD,240,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,11,1,ATK,408,Add,SPD,255,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,12,1,ATK,430,Add,SPD,270,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,13,1,ATK,452,Add,SPD,285,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,14,1,ATK,474,Add,SPD,300,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,15,1,ATK,496,Add,SPD,315,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,16,1,ATK,518,Add,SPD,330,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,17,1,ATK,540,Add,SPD,345,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,18,1,ATK,562,Add,SPD,360,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,19,1,ATK,584,Add,SPD,375,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,20,1,ATK,606,Add,SPD,390,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,21,1,ATK,628,Add,SPD,405,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,22,1,ATK,650,Add,SPD,420,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,23,1,ATK,672,Add,SPD,435,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,24,1,ATK,694,Add,SPD,450,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,25,1,ATK,716,Add,SPD,465,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,26,1,ATK,738,Add,SPD,480,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,27,1,ATK,760,Add,SPD,495,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,28,1,ATK,782,Add,SPD,510,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,29,1,ATK,804,Add,SPD,525,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,30,1,ATK,826,Add,SPD,540,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,31,1,ATK,848,Add,SPD,555,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,32,1,ATK,870,Add,SPD,570,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,33,1,ATK,892,Add,SPD,585,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,34,1,ATK,914,Add,SPD,600,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,35,1,ATK,936,Add,SPD,615,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,36,1,ATK,958,Add,SPD,630,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,37,1,ATK,980,Add,SPD,645,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,38,1,ATK,1002,Add,SPD,660,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,39,1,ATK,1024,Add,SPD,675,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,40,1,ATK,1046,Add,SPD,690,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,41,1,ATK,1068,Add,SPD,705,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,42,1,ATK,1090,Add,SPD,720,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,43,1,ATK,1112,Add,SPD,735,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,44,1,ATK,1134,Add,SPD,750,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,45,1,ATK,1156,Add,SPD,765,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,46,1,ATK,1178,Add,SPD,780,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,47,1,ATK,1200,Add,SPD,795,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,48,1,ATK,1222,Add,SPD,810,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,49,1,ATK,1244,Add,SPD,825,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,50,1,ATK,1266,Add,SPD,840,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,51,1,ATK,1298,Add,SPD,876,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,52,1,ATK,1330,Add,SPD,912,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,53,1,ATK,1362,Add,SPD,948,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,54,1,ATK,1394,Add,SPD,984,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,55,1,ATK,1426,Add,SPD,1020,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,56,1,ATK,1458,Add,SPD,1056,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,57,1,ATK,1490,Add,SPD,1092,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,58,1,ATK,1522,Add,SPD,1128,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,59,1,ATK,1554,Add,SPD,1164,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,60,1,ATK,1586,Add,SPD,1200,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,61,1,ATK,1618,Add,SPD,1236,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,62,1,ATK,1650,Add,SPD,1272,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,63,1,ATK,1682,Add,SPD,1308,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,64,1,ATK,1714,Add,SPD,1344,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,65,1,ATK,1746,Add,SPD,1380,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,66,1,ATK,1778,Add,SPD,1416,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,67,1,ATK,1810,Add,SPD,1452,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,68,1,ATK,1842,Add,SPD,1488,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,69,1,ATK,1874,Add,SPD,1524,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,70,1,ATK,1906,Add,SPD,1560,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,71,1,ATK,1938,Add,SPD,1596,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,72,1,ATK,1970,Add,SPD,1632,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,73,1,ATK,2002,Add,SPD,1668,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,74,1,ATK,2034,Add,SPD,1704,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,75,1,ATK,2066,Add,SPD,1740,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,76,1,ATK,2098,Add,SPD,1776,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,77,1,ATK,2130,Add,SPD,1812,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,78,1,ATK,2162,Add,SPD,1848,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,79,1,ATK,2194,Add,SPD,1884,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,80,1,ATK,2226,Add,SPD,1920,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,81,1,ATK,2258,Add,SPD,1956,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,82,1,ATK,2290,Add,SPD,1992,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,83,1,ATK,2322,Add,SPD,2028,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,84,1,ATK,2354,Add,SPD,2064,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,85,1,ATK,2386,Add,SPD,2100,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,86,1,ATK,2418,Add,SPD,2136,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,87,1,ATK,2450,Add,SPD,2172,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,88,1,ATK,2482,Add,SPD,2208,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,89,1,ATK,2514,Add,SPD,2244,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,90,1,ATK,2546,Add,SPD,2280,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,91,1,ATK,2578,Add,SPD,2316,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,92,1,ATK,2610,Add,SPD,2352,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,93,1,ATK,2642,Add,SPD,2388,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,94,1,ATK,2674,Add,SPD,2424,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,95,1,ATK,2706,Add,SPD,2460,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,96,1,ATK,2738,Add,SPD,2496,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,97,1,ATK,2770,Add,SPD,2532,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,98,1,ATK,2802,Add,SPD,2568,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,99,1,ATK,2834,Add,SPD,2604,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,100,1,ATK,2866,Add,SPD,2640,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,101,1,ATK,2918,Add,SPD,2681,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,102,1,ATK,2970,Add,SPD,2722,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,103,1,ATK,3022,Add,SPD,2763,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,104,1,ATK,3074,Add,SPD,2804,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,105,1,ATK,3126,Add,SPD,2845,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,106,1,ATK,3178,Add,SPD,2886,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,107,1,ATK,3230,Add,SPD,2927,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,108,1,ATK,3282,Add,SPD,2968,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,109,1,ATK,3334,Add,SPD,3009,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,110,1,ATK,3386,Add,SPD,3050,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,111,1,ATK,3438,Add,SPD,3091,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,112,1,ATK,3490,Add,SPD,3132,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,113,1,ATK,3542,Add,SPD,3173,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,114,1,ATK,3594,Add,SPD,3214,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,115,1,ATK,3646,Add,SPD,3255,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,116,1,ATK,3698,Add,SPD,3296,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,117,1,ATK,3750,Add,SPD,3337,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,118,1,ATK,3802,Add,SPD,3378,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,119,1,ATK,3854,Add,SPD,3419,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,120,1,ATK,3906,Add,SPD,3460,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,121,1,ATK,3958,Add,SPD,3501,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,122,1,ATK,4010,Add,SPD,3542,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,123,1,ATK,4062,Add,SPD,3583,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,124,1,ATK,4114,Add,SPD,3624,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,125,1,ATK,4166,Add,SPD,3665,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,126,1,ATK,4218,Add,SPD,3706,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,127,1,ATK,4270,Add,SPD,3747,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,128,1,ATK,4322,Add,SPD,3788,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,129,1,ATK,4374,Add,SPD,3829,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,130,1,ATK,4426,Add,SPD,3870,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,131,1,ATK,4478,Add,SPD,3911,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,132,1,ATK,4530,Add,SPD,3952,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,133,1,ATK,4582,Add,SPD,3993,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,134,1,ATK,4634,Add,SPD,4034,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,135,1,ATK,4686,Add,SPD,4075,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,136,1,ATK,4738,Add,SPD,4116,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,137,1,ATK,4790,Add,SPD,4157,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,138,1,ATK,4842,Add,SPD,4198,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,139,1,ATK,4894,Add,SPD,4239,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,140,1,ATK,4946,Add,SPD,4280,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,141,1,ATK,4998,Add,SPD,4321,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,142,1,ATK,5050,Add,SPD,4362,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,143,1,ATK,5102,Add,SPD,4403,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,144,1,ATK,5154,Add,SPD,4444,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,145,1,ATK,5206,Add,SPD,4485,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,146,1,ATK,5258,Add,SPD,4526,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,147,1,ATK,5310,Add,SPD,4567,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,148,1,ATK,5362,Add,SPD,4608,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,149,1,ATK,5414,Add,SPD,4649,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,150,1,ATK,5466,Add,SPD,4690,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,151,1,ATK,5549,Add,SPD,4750,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,152,1,ATK,5632,Add,SPD,4810,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,153,1,ATK,5715,Add,SPD,4870,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,154,1,ATK,5798,Add,SPD,4930,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,155,1,ATK,5881,Add,SPD,4990,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,156,1,ATK,5964,Add,SPD,5050,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,157,1,ATK,6047,Add,SPD,5110,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,158,1,ATK,6130,Add,SPD,5170,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,159,1,ATK,6213,Add,SPD,5230,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,160,1,ATK,6296,Add,SPD,5290,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,161,1,ATK,6379,Add,SPD,5350,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,162,1,ATK,6462,Add,SPD,5410,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,163,1,ATK,6545,Add,SPD,5470,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,164,1,ATK,6628,Add,SPD,5530,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,165,1,ATK,6711,Add,SPD,5590,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,166,1,ATK,6794,Add,SPD,5650,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,167,1,ATK,6877,Add,SPD,5710,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,168,1,ATK,6960,Add,SPD,5770,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,169,1,ATK,7043,Add,SPD,5830,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,170,1,ATK,7126,Add,SPD,5890,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,171,1,ATK,7209,Add,SPD,5950,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,172,1,ATK,7292,Add,SPD,6010,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,173,1,ATK,7375,Add,SPD,6070,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,174,1,ATK,7458,Add,SPD,6130,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,175,1,ATK,7541,Add,SPD,6190,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,176,1,ATK,7624,Add,SPD,6250,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,177,1,ATK,7707,Add,SPD,6310,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,178,1,ATK,7790,Add,SPD,6370,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,179,1,ATK,7873,Add,SPD,6430,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,180,1,ATK,7956,Add,SPD,6490,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,181,1,ATK,8039,Add,SPD,6550,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,182,1,ATK,8122,Add,SPD,6610,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,183,1,ATK,8205,Add,SPD,6670,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,184,1,ATK,8288,Add,SPD,6730,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,185,1,ATK,8371,Add,SPD,6790,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,186,1,ATK,8454,Add,SPD,6850,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,187,1,ATK,8537,Add,SPD,6910,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,188,1,ATK,8620,Add,SPD,6970,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,189,1,ATK,8703,Add,SPD,7030,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,190,1,ATK,8786,Add,SPD,7090,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,191,1,ATK,8869,Add,SPD,7150,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,192,1,ATK,8952,Add,SPD,7210,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,193,1,ATK,9035,Add,SPD,7270,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,194,1,ATK,9118,Add,SPD,7330,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,195,1,ATK,9201,Add,SPD,7390,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,196,1,ATK,9284,Add,SPD,7450,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,197,1,ATK,9367,Add,SPD,7510,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,198,1,ATK,9450,Add,SPD,7570,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,199,1,ATK,9533,Add,SPD,7630,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,200,1,ATK,9616,Add,SPD,7690,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,201,1,ATK,9716,Add,SPD,7787,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,202,1,ATK,9816,Add,SPD,7884,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,203,1,ATK,9916,Add,SPD,7981,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,204,1,ATK,10016,Add,SPD,8078,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,205,1,ATK,10116,Add,SPD,8175,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,206,1,ATK,10216,Add,SPD,8272,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,207,1,ATK,10316,Add,SPD,8369,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,208,1,ATK,10416,Add,SPD,8466,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,209,1,ATK,10516,Add,SPD,8563,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,210,1,ATK,10616,Add,SPD,8660,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,211,1,ATK,10716,Add,SPD,8757,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,212,1,ATK,10816,Add,SPD,8854,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,213,1,ATK,10916,Add,SPD,8951,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,214,1,ATK,11016,Add,SPD,9048,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,215,1,ATK,11116,Add,SPD,9145,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,216,1,ATK,11216,Add,SPD,9242,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,217,1,ATK,11316,Add,SPD,9339,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,218,1,ATK,11416,Add,SPD,9436,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,219,1,ATK,11516,Add,SPD,9533,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,220,1,ATK,11616,Add,SPD,9630,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,221,1,ATK,11716,Add,SPD,9727,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,222,1,ATK,11816,Add,SPD,9824,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,223,1,ATK,11916,Add,SPD,9921,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,224,1,ATK,12016,Add,SPD,10018,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,225,1,ATK,12116,Add,SPD,10115,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,226,1,ATK,12216,Add,SPD,10212,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,227,1,ATK,12316,Add,SPD,10309,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,228,1,ATK,12416,Add,SPD,10406,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,229,1,ATK,12516,Add,SPD,10503,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,230,1,ATK,12616,Add,SPD,10600,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,231,1,ATK,12716,Add,SPD,10697,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,232,1,ATK,12816,Add,SPD,10794,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,233,1,ATK,12916,Add,SPD,10891,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,234,1,ATK,13016,Add,SPD,10988,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,235,1,ATK,13116,Add,SPD,11085,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,236,1,ATK,13216,Add,SPD,11182,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,237,1,ATK,13316,Add,SPD,11279,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,238,1,ATK,13416,Add,SPD,11376,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,239,1,ATK,13516,Add,SPD,11473,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,240,1,ATK,13616,Add,SPD,11570,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,241,1,ATK,13716,Add,SPD,11667,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,242,1,ATK,13816,Add,SPD,11764,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,243,1,ATK,13916,Add,SPD,11861,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,244,1,ATK,14016,Add,SPD,11958,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,245,1,ATK,14116,Add,SPD,12055,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,246,1,ATK,14216,Add,SPD,12152,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,247,1,ATK,14316,Add,SPD,12249,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,248,1,ATK,14416,Add,SPD,12346,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,249,1,ATK,14516,Add,SPD,12443,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,250,1,ATK,14616,Add,SPD,12540,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,251,1,ATK,14764,Add,SPD,12673,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,252,1,ATK,14912,Add,SPD,12806,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,253,1,ATK,15060,Add,SPD,12939,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,254,1,ATK,15208,Add,SPD,13072,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,255,1,ATK,15356,Add,SPD,13205,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,256,1,ATK,15504,Add,SPD,13338,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,257,1,ATK,15652,Add,SPD,13471,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,258,1,ATK,15800,Add,SPD,13604,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,259,1,ATK,15948,Add,SPD,13737,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,260,1,ATK,16096,Add,SPD,13870,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,261,1,ATK,16244,Add,SPD,14003,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,262,1,ATK,16392,Add,SPD,14136,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,263,1,ATK,16540,Add,SPD,14269,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,264,1,ATK,16688,Add,SPD,14402,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,265,1,ATK,16836,Add,SPD,14535,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,266,1,ATK,16984,Add,SPD,14668,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,267,1,ATK,17132,Add,SPD,14801,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,268,1,ATK,17280,Add,SPD,14934,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,269,1,ATK,17428,Add,SPD,15067,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,270,1,ATK,17576,Add,SPD,15200,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,271,1,ATK,17724,Add,SPD,15333,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,272,1,ATK,17872,Add,SPD,15466,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,273,1,ATK,18020,Add,SPD,15599,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,274,1,ATK,18168,Add,SPD,15732,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,275,1,ATK,18316,Add,SPD,15865,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,276,1,ATK,18464,Add,SPD,15998,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,277,1,ATK,18612,Add,SPD,16131,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,278,1,ATK,18760,Add,SPD,16264,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,279,1,ATK,18908,Add,SPD,16397,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,280,1,ATK,19056,Add,SPD,16530,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,281,1,ATK,19204,Add,SPD,16663,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,282,1,ATK,19352,Add,SPD,16796,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,283,1,ATK,19500,Add,SPD,16929,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,284,1,ATK,19648,Add,SPD,17062,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,285,1,ATK,19796,Add,SPD,17195,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,286,1,ATK,19944,Add,SPD,17328,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,287,1,ATK,20092,Add,SPD,17461,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,288,1,ATK,20240,Add,SPD,17594,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,289,1,ATK,20388,Add,SPD,17727,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,290,1,ATK,20536,Add,SPD,17860,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,291,1,ATK,20684,Add,SPD,17993,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,292,1,ATK,20832,Add,SPD,18126,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,293,1,ATK,20980,Add,SPD,18259,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,294,1,ATK,21128,Add,SPD,18392,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,295,1,ATK,21276,Add,SPD,18525,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,296,1,ATK,21424,Add,SPD,18658,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,297,1,ATK,21572,Add,SPD,18791,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,298,1,ATK,21720,Add,SPD,18924,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,299,1,ATK,21868,Add,SPD,19057,Add,NONE,0,Add,,,,,,,, -10028,WorldBoss Quick Rune,300,1,ATK,22016,Add,SPD,19190,Add,NONE,0,Add,,,,,,,, \ No newline at end of file +10021,Adventure Stun Rune,1,4142,ATK,310,Add,DEF,33,Add,NONE,0,Add,700005,25,10,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,2,4541,ATK,335,Add,DEF,41,Add,NONE,0,Add,700005,25,10,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,3,4939,ATK,360,Add,DEF,49,Add,NONE,0,Add,700005,25,10,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,4,5338,ATK,385,Add,DEF,57,Add,NONE,0,Add,700005,25,10,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,5,5736,ATK,410,Add,DEF,65,Add,NONE,0,Add,700005,25,10,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,6,6135,ATK,435,Add,DEF,73,Add,NONE,0,Add,700005,25,10,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,7,6533,ATK,460,Add,DEF,81,Add,NONE,0,Add,700005,25,10,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,8,6932,ATK,485,Add,DEF,89,Add,NONE,0,Add,700005,25,10,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,9,7330,ATK,510,Add,DEF,97,Add,NONE,0,Add,700005,25,10,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,10,7728,ATK,535,Add,DEF,105,Add,NONE,0,Add,700005,25,11,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,11,8127,ATK,560,Add,DEF,113,Add,NONE,0,Add,700005,25,11,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,12,8525,ATK,585,Add,DEF,121,Add,NONE,0,Add,700005,25,11,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,13,8924,ATK,610,Add,DEF,129,Add,NONE,0,Add,700005,25,11,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,14,9322,ATK,635,Add,DEF,137,Add,NONE,0,Add,700005,25,11,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,15,9721,ATK,660,Add,DEF,145,Add,NONE,0,Add,700005,25,11,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,16,10119,ATK,685,Add,DEF,153,Add,NONE,0,Add,700005,25,11,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,17,10518,ATK,710,Add,DEF,161,Add,NONE,0,Add,700005,25,11,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,18,10916,ATK,735,Add,DEF,169,Add,NONE,0,Add,700005,25,11,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,19,11315,ATK,760,Add,DEF,177,Add,NONE,0,Add,700005,25,11,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,20,11713,ATK,785,Add,DEF,185,Add,NONE,0,Add,700005,25,12,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,21,12112,ATK,810,Add,DEF,193,Add,NONE,0,Add,700005,25,12,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,22,12510,ATK,835,Add,DEF,201,Add,NONE,0,Add,700005,25,12,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,23,12909,ATK,860,Add,DEF,209,Add,NONE,0,Add,700005,25,12,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,24,13307,ATK,885,Add,DEF,217,Add,NONE,0,Add,700005,25,12,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,25,13706,ATK,910,Add,DEF,225,Add,NONE,0,Add,700005,24,12,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,26,14104,ATK,935,Add,DEF,233,Add,NONE,0,Add,700005,24,12,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,27,14503,ATK,960,Add,DEF,241,Add,NONE,0,Add,700005,24,12,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,28,14901,ATK,985,Add,DEF,249,Add,NONE,0,Add,700005,24,12,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,29,15300,ATK,1010,Add,DEF,257,Add,NONE,0,Add,700005,24,12,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,30,15698,ATK,1035,Add,DEF,265,Add,NONE,0,Add,700005,24,13,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,31,16096,ATK,1060,Add,DEF,273,Add,NONE,0,Add,700005,24,13,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,32,16495,ATK,1085,Add,DEF,281,Add,NONE,0,Add,700005,24,13,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,33,16893,ATK,1110,Add,DEF,289,Add,NONE,0,Add,700005,24,13,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,34,17292,ATK,1135,Add,DEF,297,Add,NONE,0,Add,700005,24,13,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,35,17690,ATK,1160,Add,DEF,305,Add,NONE,0,Add,700005,24,13,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,36,18089,ATK,1185,Add,DEF,313,Add,NONE,0,Add,700005,24,13,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,37,18487,ATK,1210,Add,DEF,321,Add,NONE,0,Add,700005,24,13,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,38,18886,ATK,1235,Add,DEF,329,Add,NONE,0,Add,700005,24,13,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,39,19284,ATK,1260,Add,DEF,337,Add,NONE,0,Add,700005,24,13,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,40,19683,ATK,1285,Add,DEF,345,Add,NONE,0,Add,700005,24,14,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,41,20081,ATK,1310,Add,DEF,353,Add,NONE,0,Add,700005,24,14,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,42,20480,ATK,1335,Add,DEF,361,Add,NONE,0,Add,700005,24,14,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,43,20878,ATK,1360,Add,DEF,369,Add,NONE,0,Add,700005,24,14,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,44,21277,ATK,1385,Add,DEF,377,Add,NONE,0,Add,700005,24,14,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,45,21675,ATK,1410,Add,DEF,385,Add,NONE,0,Add,700005,24,14,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,46,22074,ATK,1435,Add,DEF,393,Add,NONE,0,Add,700005,24,14,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,47,22472,ATK,1460,Add,DEF,401,Add,NONE,0,Add,700005,24,14,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,48,22871,ATK,1485,Add,DEF,409,Add,NONE,0,Add,700005,24,14,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,49,23269,ATK,1510,Add,DEF,417,Add,NONE,0,Add,700005,24,14,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,50,23667,ATK,1535,Add,DEF,425,Add,NONE,0,Add,700005,23,15,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,51,24235,ATK,1572,Add,DEF,435,Add,NONE,0,Add,700005,23,15,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,52,24803,ATK,1609,Add,DEF,445,Add,NONE,0,Add,700005,23,15,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,53,25370,ATK,1646,Add,DEF,455,Add,NONE,0,Add,700005,23,15,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,54,25938,ATK,1683,Add,DEF,465,Add,NONE,0,Add,700005,23,15,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,55,26505,ATK,1720,Add,DEF,475,Add,NONE,0,Add,700005,23,15,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,56,27073,ATK,1757,Add,DEF,485,Add,NONE,0,Add,700005,23,15,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,57,27640,ATK,1794,Add,DEF,495,Add,NONE,0,Add,700005,23,15,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,58,28208,ATK,1831,Add,DEF,505,Add,NONE,0,Add,700005,23,15,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,59,28775,ATK,1868,Add,DEF,515,Add,NONE,0,Add,700005,23,15,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,60,29343,ATK,1905,Add,DEF,525,Add,NONE,0,Add,700005,23,16,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,61,29910,ATK,1942,Add,DEF,535,Add,NONE,0,Add,700005,23,16,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,62,30478,ATK,1979,Add,DEF,545,Add,NONE,0,Add,700005,23,16,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,63,31045,ATK,2016,Add,DEF,555,Add,NONE,0,Add,700005,23,16,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,64,31613,ATK,2053,Add,DEF,565,Add,NONE,0,Add,700005,23,16,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,65,32180,ATK,2090,Add,DEF,575,Add,NONE,0,Add,700005,23,16,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,66,32748,ATK,2127,Add,DEF,585,Add,NONE,0,Add,700005,23,16,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,67,33315,ATK,2164,Add,DEF,595,Add,NONE,0,Add,700005,23,16,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,68,33883,ATK,2201,Add,DEF,605,Add,NONE,0,Add,700005,23,16,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,69,34450,ATK,2238,Add,DEF,615,Add,NONE,0,Add,700005,23,16,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,70,35018,ATK,2275,Add,DEF,625,Add,NONE,0,Add,700005,23,17,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,71,35586,ATK,2312,Add,DEF,635,Add,NONE,0,Add,700005,23,17,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,72,36153,ATK,2349,Add,DEF,645,Add,NONE,0,Add,700005,23,17,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,73,36721,ATK,2386,Add,DEF,655,Add,NONE,0,Add,700005,23,17,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,74,37288,ATK,2423,Add,DEF,665,Add,NONE,0,Add,700005,23,17,1,Add,NONE,Caster,3 +10021,Adventure Stun Rune,75,37856,ATK,2460,Add,DEF,675,Add,NONE,0,Add,700005,22,17,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,76,38423,ATK,2497,Add,DEF,685,Add,NONE,0,Add,700005,22,17,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,77,38991,ATK,2534,Add,DEF,695,Add,NONE,0,Add,700005,22,17,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,78,39558,ATK,2571,Add,DEF,705,Add,NONE,0,Add,700005,22,17,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,79,40126,ATK,2608,Add,DEF,715,Add,NONE,0,Add,700005,22,17,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,80,40693,ATK,2645,Add,DEF,725,Add,NONE,0,Add,700005,22,18,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,81,41261,ATK,2682,Add,DEF,735,Add,NONE,0,Add,700005,22,18,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,82,41828,ATK,2719,Add,DEF,745,Add,NONE,0,Add,700005,22,18,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,83,42396,ATK,2756,Add,DEF,755,Add,NONE,0,Add,700005,22,18,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,84,42963,ATK,2793,Add,DEF,765,Add,NONE,0,Add,700005,22,18,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,85,43531,ATK,2830,Add,DEF,775,Add,NONE,0,Add,700005,22,18,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,86,44098,ATK,2867,Add,DEF,785,Add,NONE,0,Add,700005,22,18,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,87,44666,ATK,2904,Add,DEF,795,Add,NONE,0,Add,700005,22,18,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,88,45233,ATK,2941,Add,DEF,805,Add,NONE,0,Add,700005,22,18,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,89,45801,ATK,2978,Add,DEF,815,Add,NONE,0,Add,700005,22,18,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,90,46368,ATK,3015,Add,DEF,825,Add,NONE,0,Add,700005,22,19,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,91,46936,ATK,3052,Add,DEF,835,Add,NONE,0,Add,700005,22,19,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,92,47504,ATK,3089,Add,DEF,845,Add,NONE,0,Add,700005,22,19,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,93,48071,ATK,3126,Add,DEF,855,Add,NONE,0,Add,700005,22,19,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,94,48639,ATK,3163,Add,DEF,865,Add,NONE,0,Add,700005,22,19,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,95,49206,ATK,3200,Add,DEF,875,Add,NONE,0,Add,700005,22,19,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,96,49774,ATK,3237,Add,DEF,885,Add,NONE,0,Add,700005,22,19,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,97,50341,ATK,3274,Add,DEF,895,Add,NONE,0,Add,700005,22,19,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,98,50909,ATK,3311,Add,DEF,905,Add,NONE,0,Add,700005,22,19,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,99,51476,ATK,3348,Add,DEF,915,Add,NONE,0,Add,700005,22,19,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,100,52044,ATK,3385,Add,DEF,925,Add,NONE,0,Add,700005,21,20,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,101,52925,ATK,3445,Add,DEF,938,Add,NONE,0,Add,700005,21,20,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,102,53807,ATK,3505,Add,DEF,951,Add,NONE,0,Add,700005,21,20,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,103,54688,ATK,3565,Add,DEF,964,Add,NONE,0,Add,700005,21,20,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,104,55570,ATK,3625,Add,DEF,977,Add,NONE,0,Add,700005,21,20,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,105,56451,ATK,3685,Add,DEF,990,Add,NONE,0,Add,700005,21,20,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,106,57333,ATK,3745,Add,DEF,1003,Add,NONE,0,Add,700005,21,20,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,107,58214,ATK,3805,Add,DEF,1016,Add,NONE,0,Add,700005,21,20,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,108,59096,ATK,3865,Add,DEF,1029,Add,NONE,0,Add,700005,21,20,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,109,59977,ATK,3925,Add,DEF,1042,Add,NONE,0,Add,700005,21,20,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,110,60858,ATK,3985,Add,DEF,1055,Add,NONE,0,Add,700005,21,21,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,111,61740,ATK,4045,Add,DEF,1068,Add,NONE,0,Add,700005,21,21,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,112,62621,ATK,4105,Add,DEF,1081,Add,NONE,0,Add,700005,21,21,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,113,63503,ATK,4165,Add,DEF,1094,Add,NONE,0,Add,700005,21,21,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,114,64384,ATK,4225,Add,DEF,1107,Add,NONE,0,Add,700005,21,21,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,115,65266,ATK,4285,Add,DEF,1120,Add,NONE,0,Add,700005,21,21,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,116,66147,ATK,4345,Add,DEF,1133,Add,NONE,0,Add,700005,21,21,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,117,67029,ATK,4405,Add,DEF,1146,Add,NONE,0,Add,700005,21,21,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,118,67910,ATK,4465,Add,DEF,1159,Add,NONE,0,Add,700005,21,21,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,119,68792,ATK,4525,Add,DEF,1172,Add,NONE,0,Add,700005,21,21,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,120,69673,ATK,4585,Add,DEF,1185,Add,NONE,0,Add,700005,21,22,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,121,70555,ATK,4645,Add,DEF,1198,Add,NONE,0,Add,700005,21,22,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,122,71436,ATK,4705,Add,DEF,1211,Add,NONE,0,Add,700005,21,22,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,123,72318,ATK,4765,Add,DEF,1224,Add,NONE,0,Add,700005,21,22,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,124,73199,ATK,4825,Add,DEF,1237,Add,NONE,0,Add,700005,21,22,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,125,74081,ATK,4885,Add,DEF,1250,Add,NONE,0,Add,700005,20,22,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,126,74962,ATK,4945,Add,DEF,1263,Add,NONE,0,Add,700005,20,22,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,127,75844,ATK,5005,Add,DEF,1276,Add,NONE,0,Add,700005,20,22,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,128,76725,ATK,5065,Add,DEF,1289,Add,NONE,0,Add,700005,20,22,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,129,77607,ATK,5125,Add,DEF,1302,Add,NONE,0,Add,700005,20,22,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,130,78488,ATK,5185,Add,DEF,1315,Add,NONE,0,Add,700005,20,23,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,131,79369,ATK,5245,Add,DEF,1328,Add,NONE,0,Add,700005,20,23,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,132,80251,ATK,5305,Add,DEF,1341,Add,NONE,0,Add,700005,20,23,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,133,81132,ATK,5365,Add,DEF,1354,Add,NONE,0,Add,700005,20,23,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,134,82014,ATK,5425,Add,DEF,1367,Add,NONE,0,Add,700005,20,23,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,135,82895,ATK,5485,Add,DEF,1380,Add,NONE,0,Add,700005,20,23,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,136,83777,ATK,5545,Add,DEF,1393,Add,NONE,0,Add,700005,20,23,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,137,84658,ATK,5605,Add,DEF,1406,Add,NONE,0,Add,700005,20,23,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,138,85540,ATK,5665,Add,DEF,1419,Add,NONE,0,Add,700005,20,23,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,139,86421,ATK,5725,Add,DEF,1432,Add,NONE,0,Add,700005,20,23,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,140,87303,ATK,5785,Add,DEF,1445,Add,NONE,0,Add,700005,20,24,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,141,88184,ATK,5845,Add,DEF,1458,Add,NONE,0,Add,700005,20,24,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,142,89066,ATK,5905,Add,DEF,1471,Add,NONE,0,Add,700005,20,24,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,143,89947,ATK,5965,Add,DEF,1484,Add,NONE,0,Add,700005,20,24,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,144,90829,ATK,6025,Add,DEF,1497,Add,NONE,0,Add,700005,20,24,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,145,91710,ATK,6085,Add,DEF,1510,Add,NONE,0,Add,700005,20,24,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,146,92592,ATK,6145,Add,DEF,1523,Add,NONE,0,Add,700005,20,24,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,147,93473,ATK,6205,Add,DEF,1536,Add,NONE,0,Add,700005,20,24,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,148,94355,ATK,6265,Add,DEF,1549,Add,NONE,0,Add,700005,20,24,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,149,95236,ATK,6325,Add,DEF,1562,Add,NONE,0,Add,700005,20,24,1,Add,NONE,Caster,4 +10021,Adventure Stun Rune,150,96117,ATK,6385,Add,DEF,1575,Add,NONE,0,Add,700005,19,25,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,151,97506,ATK,6480,Add,DEF,1595,Add,NONE,0,Add,700005,19,25,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,152,98895,ATK,6575,Add,DEF,1615,Add,NONE,0,Add,700005,19,25,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,153,100283,ATK,6670,Add,DEF,1635,Add,NONE,0,Add,700005,19,25,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,154,101672,ATK,6765,Add,DEF,1655,Add,NONE,0,Add,700005,19,25,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,155,103061,ATK,6860,Add,DEF,1675,Add,NONE,0,Add,700005,19,25,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,156,104449,ATK,6955,Add,DEF,1695,Add,NONE,0,Add,700005,19,25,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,157,105838,ATK,7050,Add,DEF,1715,Add,NONE,0,Add,700005,19,25,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,158,107226,ATK,7145,Add,DEF,1735,Add,NONE,0,Add,700005,19,25,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,159,108615,ATK,7240,Add,DEF,1755,Add,NONE,0,Add,700005,19,25,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,160,110004,ATK,7335,Add,DEF,1775,Add,NONE,0,Add,700005,19,26,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,161,111392,ATK,7430,Add,DEF,1795,Add,NONE,0,Add,700005,19,26,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,162,112781,ATK,7525,Add,DEF,1815,Add,NONE,0,Add,700005,19,26,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,163,114170,ATK,7620,Add,DEF,1835,Add,NONE,0,Add,700005,19,26,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,164,115558,ATK,7715,Add,DEF,1855,Add,NONE,0,Add,700005,19,26,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,165,116947,ATK,7810,Add,DEF,1875,Add,NONE,0,Add,700005,19,26,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,166,118335,ATK,7905,Add,DEF,1895,Add,NONE,0,Add,700005,19,26,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,167,119724,ATK,8000,Add,DEF,1915,Add,NONE,0,Add,700005,19,26,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,168,121113,ATK,8095,Add,DEF,1935,Add,NONE,0,Add,700005,19,26,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,169,122501,ATK,8190,Add,DEF,1955,Add,NONE,0,Add,700005,19,26,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,170,123890,ATK,8285,Add,DEF,1975,Add,NONE,0,Add,700005,19,27,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,171,125279,ATK,8380,Add,DEF,1995,Add,NONE,0,Add,700005,19,27,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,172,126667,ATK,8475,Add,DEF,2015,Add,NONE,0,Add,700005,19,27,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,173,128056,ATK,8570,Add,DEF,2035,Add,NONE,0,Add,700005,19,27,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,174,129444,ATK,8665,Add,DEF,2055,Add,NONE,0,Add,700005,19,27,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,175,130833,ATK,8760,Add,DEF,2075,Add,NONE,0,Add,700005,18,27,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,176,132222,ATK,8855,Add,DEF,2095,Add,NONE,0,Add,700005,18,27,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,177,133610,ATK,8950,Add,DEF,2115,Add,NONE,0,Add,700005,18,27,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,178,134999,ATK,9045,Add,DEF,2135,Add,NONE,0,Add,700005,18,27,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,179,136388,ATK,9140,Add,DEF,2155,Add,NONE,0,Add,700005,18,27,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,180,137776,ATK,9235,Add,DEF,2175,Add,NONE,0,Add,700005,18,28,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,181,139165,ATK,9330,Add,DEF,2195,Add,NONE,0,Add,700005,18,28,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,182,140553,ATK,9425,Add,DEF,2215,Add,NONE,0,Add,700005,18,28,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,183,141942,ATK,9520,Add,DEF,2235,Add,NONE,0,Add,700005,18,28,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,184,143331,ATK,9615,Add,DEF,2255,Add,NONE,0,Add,700005,18,28,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,185,144719,ATK,9710,Add,DEF,2275,Add,NONE,0,Add,700005,18,28,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,186,146108,ATK,9805,Add,DEF,2295,Add,NONE,0,Add,700005,18,28,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,187,147497,ATK,9900,Add,DEF,2315,Add,NONE,0,Add,700005,18,28,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,188,148885,ATK,9995,Add,DEF,2335,Add,NONE,0,Add,700005,18,28,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,189,150274,ATK,10090,Add,DEF,2355,Add,NONE,0,Add,700005,18,28,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,190,151662,ATK,10185,Add,DEF,2375,Add,NONE,0,Add,700005,18,29,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,191,153051,ATK,10280,Add,DEF,2395,Add,NONE,0,Add,700005,18,29,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,192,154440,ATK,10375,Add,DEF,2415,Add,NONE,0,Add,700005,18,29,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,193,155828,ATK,10470,Add,DEF,2435,Add,NONE,0,Add,700005,18,29,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,194,157217,ATK,10565,Add,DEF,2455,Add,NONE,0,Add,700005,18,29,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,195,158606,ATK,10660,Add,DEF,2475,Add,NONE,0,Add,700005,18,29,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,196,159994,ATK,10755,Add,DEF,2495,Add,NONE,0,Add,700005,18,29,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,197,161383,ATK,10850,Add,DEF,2515,Add,NONE,0,Add,700005,18,29,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,198,162771,ATK,10945,Add,DEF,2535,Add,NONE,0,Add,700005,18,29,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,199,164160,ATK,11040,Add,DEF,2555,Add,NONE,0,Add,700005,18,29,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,200,165549,ATK,11135,Add,DEF,2575,Add,NONE,0,Add,700005,17,30,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,201,167191,ATK,11250,Add,DEF,2596,Add,NONE,0,Add,700005,17,30,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,202,168833,ATK,11365,Add,DEF,2617,Add,NONE,0,Add,700005,17,30,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,203,170475,ATK,11480,Add,DEF,2638,Add,NONE,0,Add,700005,17,30,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,204,172118,ATK,11595,Add,DEF,2659,Add,NONE,0,Add,700005,17,30,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,205,173760,ATK,11710,Add,DEF,2680,Add,NONE,0,Add,700005,17,30,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,206,175402,ATK,11825,Add,DEF,2701,Add,NONE,0,Add,700005,17,30,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,207,177044,ATK,11940,Add,DEF,2722,Add,NONE,0,Add,700005,17,30,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,208,178686,ATK,12055,Add,DEF,2743,Add,NONE,0,Add,700005,17,30,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,209,180329,ATK,12170,Add,DEF,2764,Add,NONE,0,Add,700005,17,30,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,210,181971,ATK,12285,Add,DEF,2785,Add,NONE,0,Add,700005,17,31,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,211,183613,ATK,12400,Add,DEF,2806,Add,NONE,0,Add,700005,17,31,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,212,185255,ATK,12515,Add,DEF,2827,Add,NONE,0,Add,700005,17,31,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,213,186897,ATK,12630,Add,DEF,2848,Add,NONE,0,Add,700005,17,31,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,214,188540,ATK,12745,Add,DEF,2869,Add,NONE,0,Add,700005,17,31,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,215,190182,ATK,12860,Add,DEF,2890,Add,NONE,0,Add,700005,17,31,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,216,191824,ATK,12975,Add,DEF,2911,Add,NONE,0,Add,700005,17,31,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,217,193466,ATK,13090,Add,DEF,2932,Add,NONE,0,Add,700005,17,31,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,218,195108,ATK,13205,Add,DEF,2953,Add,NONE,0,Add,700005,17,31,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,219,196751,ATK,13320,Add,DEF,2974,Add,NONE,0,Add,700005,17,31,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,220,198393,ATK,13435,Add,DEF,2995,Add,NONE,0,Add,700005,17,32,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,221,200035,ATK,13550,Add,DEF,3016,Add,NONE,0,Add,700005,17,32,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,222,201677,ATK,13665,Add,DEF,3037,Add,NONE,0,Add,700005,17,32,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,223,203319,ATK,13780,Add,DEF,3058,Add,NONE,0,Add,700005,17,32,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,224,204962,ATK,13895,Add,DEF,3079,Add,NONE,0,Add,700005,17,32,1,Add,NONE,Caster,5 +10021,Adventure Stun Rune,225,206604,ATK,14010,Add,DEF,3100,Add,NONE,0,Add,700005,16,32,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,226,208246,ATK,14125,Add,DEF,3121,Add,NONE,0,Add,700005,16,32,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,227,209888,ATK,14240,Add,DEF,3142,Add,NONE,0,Add,700005,16,32,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,228,211530,ATK,14355,Add,DEF,3163,Add,NONE,0,Add,700005,16,32,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,229,213173,ATK,14470,Add,DEF,3184,Add,NONE,0,Add,700005,16,32,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,230,214815,ATK,14585,Add,DEF,3205,Add,NONE,0,Add,700005,16,33,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,231,216457,ATK,14700,Add,DEF,3226,Add,NONE,0,Add,700005,16,33,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,232,218099,ATK,14815,Add,DEF,3247,Add,NONE,0,Add,700005,16,33,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,233,219741,ATK,14930,Add,DEF,3268,Add,NONE,0,Add,700005,16,33,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,234,221384,ATK,15045,Add,DEF,3289,Add,NONE,0,Add,700005,16,33,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,235,223026,ATK,15160,Add,DEF,3310,Add,NONE,0,Add,700005,16,33,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,236,224668,ATK,15275,Add,DEF,3331,Add,NONE,0,Add,700005,16,33,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,237,226310,ATK,15390,Add,DEF,3352,Add,NONE,0,Add,700005,16,33,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,238,227952,ATK,15505,Add,DEF,3373,Add,NONE,0,Add,700005,16,33,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,239,229595,ATK,15620,Add,DEF,3394,Add,NONE,0,Add,700005,16,33,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,240,231237,ATK,15735,Add,DEF,3415,Add,NONE,0,Add,700005,16,34,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,241,232879,ATK,15850,Add,DEF,3436,Add,NONE,0,Add,700005,16,34,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,242,234521,ATK,15965,Add,DEF,3457,Add,NONE,0,Add,700005,16,34,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,243,236163,ATK,16080,Add,DEF,3478,Add,NONE,0,Add,700005,16,34,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,244,237806,ATK,16195,Add,DEF,3499,Add,NONE,0,Add,700005,16,34,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,245,239448,ATK,16310,Add,DEF,3520,Add,NONE,0,Add,700005,16,34,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,246,241090,ATK,16425,Add,DEF,3541,Add,NONE,0,Add,700005,16,34,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,247,242732,ATK,16540,Add,DEF,3562,Add,NONE,0,Add,700005,16,34,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,248,244374,ATK,16655,Add,DEF,3583,Add,NONE,0,Add,700005,16,34,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,249,246017,ATK,16770,Add,DEF,3604,Add,NONE,0,Add,700005,16,34,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,250,247659,ATK,16885,Add,DEF,3625,Add,NONE,0,Add,700005,15,35,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,251,250013,ATK,17054,Add,DEF,3651,Add,NONE,0,Add,700005,15,35,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,252,252368,ATK,17223,Add,DEF,3677,Add,NONE,0,Add,700005,15,35,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,253,254723,ATK,17392,Add,DEF,3703,Add,NONE,0,Add,700005,15,35,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,254,257077,ATK,17561,Add,DEF,3729,Add,NONE,0,Add,700005,15,35,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,255,259432,ATK,17730,Add,DEF,3755,Add,NONE,0,Add,700005,15,35,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,256,261786,ATK,17899,Add,DEF,3781,Add,NONE,0,Add,700005,15,35,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,257,264141,ATK,18068,Add,DEF,3807,Add,NONE,0,Add,700005,15,35,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,258,266496,ATK,18237,Add,DEF,3833,Add,NONE,0,Add,700005,15,35,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,259,268850,ATK,18406,Add,DEF,3859,Add,NONE,0,Add,700005,15,35,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,260,271205,ATK,18575,Add,DEF,3885,Add,NONE,0,Add,700005,15,36,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,261,273560,ATK,18744,Add,DEF,3911,Add,NONE,0,Add,700005,15,36,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,262,275914,ATK,18913,Add,DEF,3937,Add,NONE,0,Add,700005,15,36,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,263,278269,ATK,19082,Add,DEF,3963,Add,NONE,0,Add,700005,15,36,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,264,280623,ATK,19251,Add,DEF,3989,Add,NONE,0,Add,700005,15,36,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,265,282978,ATK,19420,Add,DEF,4015,Add,NONE,0,Add,700005,15,36,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,266,285333,ATK,19589,Add,DEF,4041,Add,NONE,0,Add,700005,15,36,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,267,287687,ATK,19758,Add,DEF,4067,Add,NONE,0,Add,700005,15,36,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,268,290042,ATK,19927,Add,DEF,4093,Add,NONE,0,Add,700005,15,36,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,269,292397,ATK,20096,Add,DEF,4119,Add,NONE,0,Add,700005,15,36,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,270,294751,ATK,20265,Add,DEF,4145,Add,NONE,0,Add,700005,15,37,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,271,297106,ATK,20434,Add,DEF,4171,Add,NONE,0,Add,700005,15,37,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,272,299460,ATK,20603,Add,DEF,4197,Add,NONE,0,Add,700005,15,37,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,273,301815,ATK,20772,Add,DEF,4223,Add,NONE,0,Add,700005,15,37,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,274,304170,ATK,20941,Add,DEF,4249,Add,NONE,0,Add,700005,15,37,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,275,306524,ATK,21110,Add,DEF,4275,Add,NONE,0,Add,700005,14,37,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,276,308879,ATK,21279,Add,DEF,4301,Add,NONE,0,Add,700005,14,37,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,277,311234,ATK,21448,Add,DEF,4327,Add,NONE,0,Add,700005,14,37,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,278,313588,ATK,21617,Add,DEF,4353,Add,NONE,0,Add,700005,14,37,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,279,315943,ATK,21786,Add,DEF,4379,Add,NONE,0,Add,700005,14,37,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,280,318297,ATK,21955,Add,DEF,4405,Add,NONE,0,Add,700005,14,38,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,281,320652,ATK,22124,Add,DEF,4431,Add,NONE,0,Add,700005,14,38,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,282,323007,ATK,22293,Add,DEF,4457,Add,NONE,0,Add,700005,14,38,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,283,325361,ATK,22462,Add,DEF,4483,Add,NONE,0,Add,700005,14,38,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,284,327716,ATK,22631,Add,DEF,4509,Add,NONE,0,Add,700005,14,38,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,285,330071,ATK,22800,Add,DEF,4535,Add,NONE,0,Add,700005,14,38,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,286,332425,ATK,22969,Add,DEF,4561,Add,NONE,0,Add,700005,14,38,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,287,334780,ATK,23138,Add,DEF,4587,Add,NONE,0,Add,700005,14,38,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,288,337134,ATK,23307,Add,DEF,4613,Add,NONE,0,Add,700005,14,38,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,289,339489,ATK,23476,Add,DEF,4639,Add,NONE,0,Add,700005,14,38,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,290,341844,ATK,23645,Add,DEF,4665,Add,NONE,0,Add,700005,14,39,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,291,344198,ATK,23814,Add,DEF,4691,Add,NONE,0,Add,700005,14,39,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,292,346553,ATK,23983,Add,DEF,4717,Add,NONE,0,Add,700005,14,39,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,293,348908,ATK,24152,Add,DEF,4743,Add,NONE,0,Add,700005,14,39,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,294,351262,ATK,24321,Add,DEF,4769,Add,NONE,0,Add,700005,14,39,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,295,353617,ATK,24490,Add,DEF,4795,Add,NONE,0,Add,700005,14,39,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,296,355971,ATK,24659,Add,DEF,4821,Add,NONE,0,Add,700005,14,39,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,297,358326,ATK,24828,Add,DEF,4847,Add,NONE,0,Add,700005,14,39,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,298,360681,ATK,24997,Add,DEF,4873,Add,NONE,0,Add,700005,14,39,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,299,363035,ATK,25166,Add,DEF,4899,Add,NONE,0,Add,700005,14,39,1,Add,NONE,Caster,6 +10021,Adventure Stun Rune,300,365390,ATK,25335,Add,DEF,4925,Add,NONE,0,Add,700005,13,40,1,Add,NONE,Caster,7 +10022,Arena Stun Rune,1,4142,ATK,310,Add,DEF,33,Add,NONE,0,Add,700004,25,10,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,2,4541,ATK,335,Add,DEF,41,Add,NONE,0,Add,700004,25,10,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,3,4939,ATK,360,Add,DEF,49,Add,NONE,0,Add,700004,25,10,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,4,5338,ATK,385,Add,DEF,57,Add,NONE,0,Add,700004,25,10,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,5,5736,ATK,410,Add,DEF,65,Add,NONE,0,Add,700004,25,10,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,6,6135,ATK,435,Add,DEF,73,Add,NONE,0,Add,700004,25,10,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,7,6533,ATK,460,Add,DEF,81,Add,NONE,0,Add,700004,25,10,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,8,6932,ATK,485,Add,DEF,89,Add,NONE,0,Add,700004,25,10,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,9,7330,ATK,510,Add,DEF,97,Add,NONE,0,Add,700004,25,10,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,10,7728,ATK,535,Add,DEF,105,Add,NONE,0,Add,700004,25,11,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,11,8127,ATK,560,Add,DEF,113,Add,NONE,0,Add,700004,25,11,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,12,8525,ATK,585,Add,DEF,121,Add,NONE,0,Add,700004,25,11,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,13,8924,ATK,610,Add,DEF,129,Add,NONE,0,Add,700004,25,11,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,14,9322,ATK,635,Add,DEF,137,Add,NONE,0,Add,700004,25,11,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,15,9721,ATK,660,Add,DEF,145,Add,NONE,0,Add,700004,25,11,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,16,10119,ATK,685,Add,DEF,153,Add,NONE,0,Add,700004,25,11,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,17,10518,ATK,710,Add,DEF,161,Add,NONE,0,Add,700004,25,11,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,18,10916,ATK,735,Add,DEF,169,Add,NONE,0,Add,700004,25,11,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,19,11315,ATK,760,Add,DEF,177,Add,NONE,0,Add,700004,25,11,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,20,11713,ATK,785,Add,DEF,185,Add,NONE,0,Add,700004,25,12,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,21,12112,ATK,810,Add,DEF,193,Add,NONE,0,Add,700004,25,12,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,22,12510,ATK,835,Add,DEF,201,Add,NONE,0,Add,700004,25,12,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,23,12909,ATK,860,Add,DEF,209,Add,NONE,0,Add,700004,25,12,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,24,13307,ATK,885,Add,DEF,217,Add,NONE,0,Add,700004,25,12,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,25,13706,ATK,910,Add,DEF,225,Add,NONE,0,Add,700004,24,12,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,26,14104,ATK,935,Add,DEF,233,Add,NONE,0,Add,700004,24,12,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,27,14503,ATK,960,Add,DEF,241,Add,NONE,0,Add,700004,24,12,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,28,14901,ATK,985,Add,DEF,249,Add,NONE,0,Add,700004,24,12,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,29,15300,ATK,1010,Add,DEF,257,Add,NONE,0,Add,700004,24,12,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,30,15698,ATK,1035,Add,DEF,265,Add,NONE,0,Add,700004,24,13,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,31,16096,ATK,1060,Add,DEF,273,Add,NONE,0,Add,700004,24,13,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,32,16495,ATK,1085,Add,DEF,281,Add,NONE,0,Add,700004,24,13,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,33,16893,ATK,1110,Add,DEF,289,Add,NONE,0,Add,700004,24,13,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,34,17292,ATK,1135,Add,DEF,297,Add,NONE,0,Add,700004,24,13,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,35,17690,ATK,1160,Add,DEF,305,Add,NONE,0,Add,700004,24,13,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,36,18089,ATK,1185,Add,DEF,313,Add,NONE,0,Add,700004,24,13,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,37,18487,ATK,1210,Add,DEF,321,Add,NONE,0,Add,700004,24,13,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,38,18886,ATK,1235,Add,DEF,329,Add,NONE,0,Add,700004,24,13,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,39,19284,ATK,1260,Add,DEF,337,Add,NONE,0,Add,700004,24,13,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,40,19683,ATK,1285,Add,DEF,345,Add,NONE,0,Add,700004,24,14,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,41,20081,ATK,1310,Add,DEF,353,Add,NONE,0,Add,700004,24,14,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,42,20480,ATK,1335,Add,DEF,361,Add,NONE,0,Add,700004,24,14,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,43,20878,ATK,1360,Add,DEF,369,Add,NONE,0,Add,700004,24,14,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,44,21277,ATK,1385,Add,DEF,377,Add,NONE,0,Add,700004,24,14,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,45,21675,ATK,1410,Add,DEF,385,Add,NONE,0,Add,700004,24,14,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,46,22074,ATK,1435,Add,DEF,393,Add,NONE,0,Add,700004,24,14,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,47,22472,ATK,1460,Add,DEF,401,Add,NONE,0,Add,700004,24,14,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,48,22871,ATK,1485,Add,DEF,409,Add,NONE,0,Add,700004,24,14,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,49,23269,ATK,1510,Add,DEF,417,Add,NONE,0,Add,700004,24,14,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,50,23667,ATK,1535,Add,DEF,425,Add,NONE,0,Add,700004,23,15,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,51,24235,ATK,1572,Add,DEF,435,Add,NONE,0,Add,700004,23,15,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,52,24803,ATK,1609,Add,DEF,445,Add,NONE,0,Add,700004,23,15,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,53,25370,ATK,1646,Add,DEF,455,Add,NONE,0,Add,700004,23,15,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,54,25938,ATK,1683,Add,DEF,465,Add,NONE,0,Add,700004,23,15,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,55,26505,ATK,1720,Add,DEF,475,Add,NONE,0,Add,700004,23,15,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,56,27073,ATK,1757,Add,DEF,485,Add,NONE,0,Add,700004,23,15,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,57,27640,ATK,1794,Add,DEF,495,Add,NONE,0,Add,700004,23,15,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,58,28208,ATK,1831,Add,DEF,505,Add,NONE,0,Add,700004,23,15,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,59,28775,ATK,1868,Add,DEF,515,Add,NONE,0,Add,700004,23,15,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,60,29343,ATK,1905,Add,DEF,525,Add,NONE,0,Add,700004,23,16,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,61,29910,ATK,1942,Add,DEF,535,Add,NONE,0,Add,700004,23,16,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,62,30478,ATK,1979,Add,DEF,545,Add,NONE,0,Add,700004,23,16,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,63,31045,ATK,2016,Add,DEF,555,Add,NONE,0,Add,700004,23,16,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,64,31613,ATK,2053,Add,DEF,565,Add,NONE,0,Add,700004,23,16,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,65,32180,ATK,2090,Add,DEF,575,Add,NONE,0,Add,700004,23,16,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,66,32748,ATK,2127,Add,DEF,585,Add,NONE,0,Add,700004,23,16,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,67,33315,ATK,2164,Add,DEF,595,Add,NONE,0,Add,700004,23,16,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,68,33883,ATK,2201,Add,DEF,605,Add,NONE,0,Add,700004,23,16,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,69,34450,ATK,2238,Add,DEF,615,Add,NONE,0,Add,700004,23,16,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,70,35018,ATK,2275,Add,DEF,625,Add,NONE,0,Add,700004,23,17,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,71,35586,ATK,2312,Add,DEF,635,Add,NONE,0,Add,700004,23,17,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,72,36153,ATK,2349,Add,DEF,645,Add,NONE,0,Add,700004,23,17,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,73,36721,ATK,2386,Add,DEF,655,Add,NONE,0,Add,700004,23,17,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,74,37288,ATK,2423,Add,DEF,665,Add,NONE,0,Add,700004,23,17,1,Add,NONE,Caster,3 +10022,Arena Stun Rune,75,37856,ATK,2460,Add,DEF,675,Add,NONE,0,Add,700004,22,17,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,76,38423,ATK,2497,Add,DEF,685,Add,NONE,0,Add,700004,22,17,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,77,38991,ATK,2534,Add,DEF,695,Add,NONE,0,Add,700004,22,17,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,78,39558,ATK,2571,Add,DEF,705,Add,NONE,0,Add,700004,22,17,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,79,40126,ATK,2608,Add,DEF,715,Add,NONE,0,Add,700004,22,17,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,80,40693,ATK,2645,Add,DEF,725,Add,NONE,0,Add,700004,22,18,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,81,41261,ATK,2682,Add,DEF,735,Add,NONE,0,Add,700004,22,18,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,82,41828,ATK,2719,Add,DEF,745,Add,NONE,0,Add,700004,22,18,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,83,42396,ATK,2756,Add,DEF,755,Add,NONE,0,Add,700004,22,18,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,84,42963,ATK,2793,Add,DEF,765,Add,NONE,0,Add,700004,22,18,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,85,43531,ATK,2830,Add,DEF,775,Add,NONE,0,Add,700004,22,18,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,86,44098,ATK,2867,Add,DEF,785,Add,NONE,0,Add,700004,22,18,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,87,44666,ATK,2904,Add,DEF,795,Add,NONE,0,Add,700004,22,18,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,88,45233,ATK,2941,Add,DEF,805,Add,NONE,0,Add,700004,22,18,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,89,45801,ATK,2978,Add,DEF,815,Add,NONE,0,Add,700004,22,18,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,90,46368,ATK,3015,Add,DEF,825,Add,NONE,0,Add,700004,22,19,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,91,46936,ATK,3052,Add,DEF,835,Add,NONE,0,Add,700004,22,19,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,92,47504,ATK,3089,Add,DEF,845,Add,NONE,0,Add,700004,22,19,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,93,48071,ATK,3126,Add,DEF,855,Add,NONE,0,Add,700004,22,19,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,94,48639,ATK,3163,Add,DEF,865,Add,NONE,0,Add,700004,22,19,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,95,49206,ATK,3200,Add,DEF,875,Add,NONE,0,Add,700004,22,19,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,96,49774,ATK,3237,Add,DEF,885,Add,NONE,0,Add,700004,22,19,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,97,50341,ATK,3274,Add,DEF,895,Add,NONE,0,Add,700004,22,19,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,98,50909,ATK,3311,Add,DEF,905,Add,NONE,0,Add,700004,22,19,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,99,51476,ATK,3348,Add,DEF,915,Add,NONE,0,Add,700004,22,19,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,100,52044,ATK,3385,Add,DEF,925,Add,NONE,0,Add,700004,21,20,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,101,52925,ATK,3445,Add,DEF,938,Add,NONE,0,Add,700004,21,20,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,102,53807,ATK,3505,Add,DEF,951,Add,NONE,0,Add,700004,21,20,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,103,54688,ATK,3565,Add,DEF,964,Add,NONE,0,Add,700004,21,20,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,104,55570,ATK,3625,Add,DEF,977,Add,NONE,0,Add,700004,21,20,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,105,56451,ATK,3685,Add,DEF,990,Add,NONE,0,Add,700004,21,20,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,106,57333,ATK,3745,Add,DEF,1003,Add,NONE,0,Add,700004,21,20,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,107,58214,ATK,3805,Add,DEF,1016,Add,NONE,0,Add,700004,21,20,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,108,59096,ATK,3865,Add,DEF,1029,Add,NONE,0,Add,700004,21,20,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,109,59977,ATK,3925,Add,DEF,1042,Add,NONE,0,Add,700004,21,20,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,110,60858,ATK,3985,Add,DEF,1055,Add,NONE,0,Add,700004,21,21,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,111,61740,ATK,4045,Add,DEF,1068,Add,NONE,0,Add,700004,21,21,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,112,62621,ATK,4105,Add,DEF,1081,Add,NONE,0,Add,700004,21,21,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,113,63503,ATK,4165,Add,DEF,1094,Add,NONE,0,Add,700004,21,21,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,114,64384,ATK,4225,Add,DEF,1107,Add,NONE,0,Add,700004,21,21,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,115,65266,ATK,4285,Add,DEF,1120,Add,NONE,0,Add,700004,21,21,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,116,66147,ATK,4345,Add,DEF,1133,Add,NONE,0,Add,700004,21,21,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,117,67029,ATK,4405,Add,DEF,1146,Add,NONE,0,Add,700004,21,21,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,118,67910,ATK,4465,Add,DEF,1159,Add,NONE,0,Add,700004,21,21,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,119,68792,ATK,4525,Add,DEF,1172,Add,NONE,0,Add,700004,21,21,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,120,69673,ATK,4585,Add,DEF,1185,Add,NONE,0,Add,700004,21,22,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,121,70555,ATK,4645,Add,DEF,1198,Add,NONE,0,Add,700004,21,22,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,122,71436,ATK,4705,Add,DEF,1211,Add,NONE,0,Add,700004,21,22,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,123,72318,ATK,4765,Add,DEF,1224,Add,NONE,0,Add,700004,21,22,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,124,73199,ATK,4825,Add,DEF,1237,Add,NONE,0,Add,700004,21,22,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,125,74081,ATK,4885,Add,DEF,1250,Add,NONE,0,Add,700004,20,22,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,126,74962,ATK,4945,Add,DEF,1263,Add,NONE,0,Add,700004,20,22,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,127,75844,ATK,5005,Add,DEF,1276,Add,NONE,0,Add,700004,20,22,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,128,76725,ATK,5065,Add,DEF,1289,Add,NONE,0,Add,700004,20,22,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,129,77607,ATK,5125,Add,DEF,1302,Add,NONE,0,Add,700004,20,22,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,130,78488,ATK,5185,Add,DEF,1315,Add,NONE,0,Add,700004,20,23,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,131,79369,ATK,5245,Add,DEF,1328,Add,NONE,0,Add,700004,20,23,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,132,80251,ATK,5305,Add,DEF,1341,Add,NONE,0,Add,700004,20,23,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,133,81132,ATK,5365,Add,DEF,1354,Add,NONE,0,Add,700004,20,23,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,134,82014,ATK,5425,Add,DEF,1367,Add,NONE,0,Add,700004,20,23,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,135,82895,ATK,5485,Add,DEF,1380,Add,NONE,0,Add,700004,20,23,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,136,83777,ATK,5545,Add,DEF,1393,Add,NONE,0,Add,700004,20,23,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,137,84658,ATK,5605,Add,DEF,1406,Add,NONE,0,Add,700004,20,23,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,138,85540,ATK,5665,Add,DEF,1419,Add,NONE,0,Add,700004,20,23,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,139,86421,ATK,5725,Add,DEF,1432,Add,NONE,0,Add,700004,20,23,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,140,87303,ATK,5785,Add,DEF,1445,Add,NONE,0,Add,700004,20,24,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,141,88184,ATK,5845,Add,DEF,1458,Add,NONE,0,Add,700004,20,24,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,142,89066,ATK,5905,Add,DEF,1471,Add,NONE,0,Add,700004,20,24,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,143,89947,ATK,5965,Add,DEF,1484,Add,NONE,0,Add,700004,20,24,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,144,90829,ATK,6025,Add,DEF,1497,Add,NONE,0,Add,700004,20,24,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,145,91710,ATK,6085,Add,DEF,1510,Add,NONE,0,Add,700004,20,24,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,146,92592,ATK,6145,Add,DEF,1523,Add,NONE,0,Add,700004,20,24,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,147,93473,ATK,6205,Add,DEF,1536,Add,NONE,0,Add,700004,20,24,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,148,94355,ATK,6265,Add,DEF,1549,Add,NONE,0,Add,700004,20,24,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,149,95236,ATK,6325,Add,DEF,1562,Add,NONE,0,Add,700004,20,24,1,Add,NONE,Caster,4 +10022,Arena Stun Rune,150,96117,ATK,6385,Add,DEF,1575,Add,NONE,0,Add,700004,19,25,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,151,97506,ATK,6480,Add,DEF,1595,Add,NONE,0,Add,700004,19,25,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,152,98895,ATK,6575,Add,DEF,1615,Add,NONE,0,Add,700004,19,25,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,153,100283,ATK,6670,Add,DEF,1635,Add,NONE,0,Add,700004,19,25,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,154,101672,ATK,6765,Add,DEF,1655,Add,NONE,0,Add,700004,19,25,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,155,103061,ATK,6860,Add,DEF,1675,Add,NONE,0,Add,700004,19,25,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,156,104449,ATK,6955,Add,DEF,1695,Add,NONE,0,Add,700004,19,25,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,157,105838,ATK,7050,Add,DEF,1715,Add,NONE,0,Add,700004,19,25,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,158,107226,ATK,7145,Add,DEF,1735,Add,NONE,0,Add,700004,19,25,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,159,108615,ATK,7240,Add,DEF,1755,Add,NONE,0,Add,700004,19,25,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,160,110004,ATK,7335,Add,DEF,1775,Add,NONE,0,Add,700004,19,26,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,161,111392,ATK,7430,Add,DEF,1795,Add,NONE,0,Add,700004,19,26,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,162,112781,ATK,7525,Add,DEF,1815,Add,NONE,0,Add,700004,19,26,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,163,114170,ATK,7620,Add,DEF,1835,Add,NONE,0,Add,700004,19,26,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,164,115558,ATK,7715,Add,DEF,1855,Add,NONE,0,Add,700004,19,26,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,165,116947,ATK,7810,Add,DEF,1875,Add,NONE,0,Add,700004,19,26,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,166,118335,ATK,7905,Add,DEF,1895,Add,NONE,0,Add,700004,19,26,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,167,119724,ATK,8000,Add,DEF,1915,Add,NONE,0,Add,700004,19,26,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,168,121113,ATK,8095,Add,DEF,1935,Add,NONE,0,Add,700004,19,26,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,169,122501,ATK,8190,Add,DEF,1955,Add,NONE,0,Add,700004,19,26,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,170,123890,ATK,8285,Add,DEF,1975,Add,NONE,0,Add,700004,19,27,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,171,125279,ATK,8380,Add,DEF,1995,Add,NONE,0,Add,700004,19,27,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,172,126667,ATK,8475,Add,DEF,2015,Add,NONE,0,Add,700004,19,27,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,173,128056,ATK,8570,Add,DEF,2035,Add,NONE,0,Add,700004,19,27,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,174,129444,ATK,8665,Add,DEF,2055,Add,NONE,0,Add,700004,19,27,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,175,130833,ATK,8760,Add,DEF,2075,Add,NONE,0,Add,700004,18,27,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,176,132222,ATK,8855,Add,DEF,2095,Add,NONE,0,Add,700004,18,27,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,177,133610,ATK,8950,Add,DEF,2115,Add,NONE,0,Add,700004,18,27,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,178,134999,ATK,9045,Add,DEF,2135,Add,NONE,0,Add,700004,18,27,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,179,136388,ATK,9140,Add,DEF,2155,Add,NONE,0,Add,700004,18,27,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,180,137776,ATK,9235,Add,DEF,2175,Add,NONE,0,Add,700004,18,28,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,181,139165,ATK,9330,Add,DEF,2195,Add,NONE,0,Add,700004,18,28,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,182,140553,ATK,9425,Add,DEF,2215,Add,NONE,0,Add,700004,18,28,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,183,141942,ATK,9520,Add,DEF,2235,Add,NONE,0,Add,700004,18,28,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,184,143331,ATK,9615,Add,DEF,2255,Add,NONE,0,Add,700004,18,28,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,185,144719,ATK,9710,Add,DEF,2275,Add,NONE,0,Add,700004,18,28,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,186,146108,ATK,9805,Add,DEF,2295,Add,NONE,0,Add,700004,18,28,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,187,147497,ATK,9900,Add,DEF,2315,Add,NONE,0,Add,700004,18,28,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,188,148885,ATK,9995,Add,DEF,2335,Add,NONE,0,Add,700004,18,28,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,189,150274,ATK,10090,Add,DEF,2355,Add,NONE,0,Add,700004,18,28,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,190,151662,ATK,10185,Add,DEF,2375,Add,NONE,0,Add,700004,18,29,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,191,153051,ATK,10280,Add,DEF,2395,Add,NONE,0,Add,700004,18,29,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,192,154440,ATK,10375,Add,DEF,2415,Add,NONE,0,Add,700004,18,29,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,193,155828,ATK,10470,Add,DEF,2435,Add,NONE,0,Add,700004,18,29,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,194,157217,ATK,10565,Add,DEF,2455,Add,NONE,0,Add,700004,18,29,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,195,158606,ATK,10660,Add,DEF,2475,Add,NONE,0,Add,700004,18,29,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,196,159994,ATK,10755,Add,DEF,2495,Add,NONE,0,Add,700004,18,29,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,197,161383,ATK,10850,Add,DEF,2515,Add,NONE,0,Add,700004,18,29,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,198,162771,ATK,10945,Add,DEF,2535,Add,NONE,0,Add,700004,18,29,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,199,164160,ATK,11040,Add,DEF,2555,Add,NONE,0,Add,700004,18,29,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,200,165549,ATK,11135,Add,DEF,2575,Add,NONE,0,Add,700004,17,30,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,201,167191,ATK,11250,Add,DEF,2596,Add,NONE,0,Add,700004,17,30,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,202,168833,ATK,11365,Add,DEF,2617,Add,NONE,0,Add,700004,17,30,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,203,170475,ATK,11480,Add,DEF,2638,Add,NONE,0,Add,700004,17,30,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,204,172118,ATK,11595,Add,DEF,2659,Add,NONE,0,Add,700004,17,30,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,205,173760,ATK,11710,Add,DEF,2680,Add,NONE,0,Add,700004,17,30,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,206,175402,ATK,11825,Add,DEF,2701,Add,NONE,0,Add,700004,17,30,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,207,177044,ATK,11940,Add,DEF,2722,Add,NONE,0,Add,700004,17,30,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,208,178686,ATK,12055,Add,DEF,2743,Add,NONE,0,Add,700004,17,30,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,209,180329,ATK,12170,Add,DEF,2764,Add,NONE,0,Add,700004,17,30,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,210,181971,ATK,12285,Add,DEF,2785,Add,NONE,0,Add,700004,17,31,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,211,183613,ATK,12400,Add,DEF,2806,Add,NONE,0,Add,700004,17,31,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,212,185255,ATK,12515,Add,DEF,2827,Add,NONE,0,Add,700004,17,31,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,213,186897,ATK,12630,Add,DEF,2848,Add,NONE,0,Add,700004,17,31,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,214,188540,ATK,12745,Add,DEF,2869,Add,NONE,0,Add,700004,17,31,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,215,190182,ATK,12860,Add,DEF,2890,Add,NONE,0,Add,700004,17,31,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,216,191824,ATK,12975,Add,DEF,2911,Add,NONE,0,Add,700004,17,31,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,217,193466,ATK,13090,Add,DEF,2932,Add,NONE,0,Add,700004,17,31,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,218,195108,ATK,13205,Add,DEF,2953,Add,NONE,0,Add,700004,17,31,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,219,196751,ATK,13320,Add,DEF,2974,Add,NONE,0,Add,700004,17,31,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,220,198393,ATK,13435,Add,DEF,2995,Add,NONE,0,Add,700004,17,32,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,221,200035,ATK,13550,Add,DEF,3016,Add,NONE,0,Add,700004,17,32,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,222,201677,ATK,13665,Add,DEF,3037,Add,NONE,0,Add,700004,17,32,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,223,203319,ATK,13780,Add,DEF,3058,Add,NONE,0,Add,700004,17,32,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,224,204962,ATK,13895,Add,DEF,3079,Add,NONE,0,Add,700004,17,32,1,Add,NONE,Caster,5 +10022,Arena Stun Rune,225,206604,ATK,14010,Add,DEF,3100,Add,NONE,0,Add,700004,16,32,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,226,208246,ATK,14125,Add,DEF,3121,Add,NONE,0,Add,700004,16,32,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,227,209888,ATK,14240,Add,DEF,3142,Add,NONE,0,Add,700004,16,32,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,228,211530,ATK,14355,Add,DEF,3163,Add,NONE,0,Add,700004,16,32,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,229,213173,ATK,14470,Add,DEF,3184,Add,NONE,0,Add,700004,16,32,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,230,214815,ATK,14585,Add,DEF,3205,Add,NONE,0,Add,700004,16,33,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,231,216457,ATK,14700,Add,DEF,3226,Add,NONE,0,Add,700004,16,33,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,232,218099,ATK,14815,Add,DEF,3247,Add,NONE,0,Add,700004,16,33,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,233,219741,ATK,14930,Add,DEF,3268,Add,NONE,0,Add,700004,16,33,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,234,221384,ATK,15045,Add,DEF,3289,Add,NONE,0,Add,700004,16,33,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,235,223026,ATK,15160,Add,DEF,3310,Add,NONE,0,Add,700004,16,33,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,236,224668,ATK,15275,Add,DEF,3331,Add,NONE,0,Add,700004,16,33,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,237,226310,ATK,15390,Add,DEF,3352,Add,NONE,0,Add,700004,16,33,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,238,227952,ATK,15505,Add,DEF,3373,Add,NONE,0,Add,700004,16,33,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,239,229595,ATK,15620,Add,DEF,3394,Add,NONE,0,Add,700004,16,33,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,240,231237,ATK,15735,Add,DEF,3415,Add,NONE,0,Add,700004,16,34,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,241,232879,ATK,15850,Add,DEF,3436,Add,NONE,0,Add,700004,16,34,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,242,234521,ATK,15965,Add,DEF,3457,Add,NONE,0,Add,700004,16,34,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,243,236163,ATK,16080,Add,DEF,3478,Add,NONE,0,Add,700004,16,34,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,244,237806,ATK,16195,Add,DEF,3499,Add,NONE,0,Add,700004,16,34,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,245,239448,ATK,16310,Add,DEF,3520,Add,NONE,0,Add,700004,16,34,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,246,241090,ATK,16425,Add,DEF,3541,Add,NONE,0,Add,700004,16,34,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,247,242732,ATK,16540,Add,DEF,3562,Add,NONE,0,Add,700004,16,34,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,248,244374,ATK,16655,Add,DEF,3583,Add,NONE,0,Add,700004,16,34,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,249,246017,ATK,16770,Add,DEF,3604,Add,NONE,0,Add,700004,16,34,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,250,247659,ATK,16885,Add,DEF,3625,Add,NONE,0,Add,700004,15,35,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,251,250013,ATK,17054,Add,DEF,3651,Add,NONE,0,Add,700004,15,35,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,252,252368,ATK,17223,Add,DEF,3677,Add,NONE,0,Add,700004,15,35,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,253,254723,ATK,17392,Add,DEF,3703,Add,NONE,0,Add,700004,15,35,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,254,257077,ATK,17561,Add,DEF,3729,Add,NONE,0,Add,700004,15,35,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,255,259432,ATK,17730,Add,DEF,3755,Add,NONE,0,Add,700004,15,35,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,256,261786,ATK,17899,Add,DEF,3781,Add,NONE,0,Add,700004,15,35,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,257,264141,ATK,18068,Add,DEF,3807,Add,NONE,0,Add,700004,15,35,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,258,266496,ATK,18237,Add,DEF,3833,Add,NONE,0,Add,700004,15,35,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,259,268850,ATK,18406,Add,DEF,3859,Add,NONE,0,Add,700004,15,35,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,260,271205,ATK,18575,Add,DEF,3885,Add,NONE,0,Add,700004,15,36,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,261,273560,ATK,18744,Add,DEF,3911,Add,NONE,0,Add,700004,15,36,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,262,275914,ATK,18913,Add,DEF,3937,Add,NONE,0,Add,700004,15,36,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,263,278269,ATK,19082,Add,DEF,3963,Add,NONE,0,Add,700004,15,36,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,264,280623,ATK,19251,Add,DEF,3989,Add,NONE,0,Add,700004,15,36,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,265,282978,ATK,19420,Add,DEF,4015,Add,NONE,0,Add,700004,15,36,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,266,285333,ATK,19589,Add,DEF,4041,Add,NONE,0,Add,700004,15,36,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,267,287687,ATK,19758,Add,DEF,4067,Add,NONE,0,Add,700004,15,36,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,268,290042,ATK,19927,Add,DEF,4093,Add,NONE,0,Add,700004,15,36,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,269,292397,ATK,20096,Add,DEF,4119,Add,NONE,0,Add,700004,15,36,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,270,294751,ATK,20265,Add,DEF,4145,Add,NONE,0,Add,700004,15,37,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,271,297106,ATK,20434,Add,DEF,4171,Add,NONE,0,Add,700004,15,37,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,272,299460,ATK,20603,Add,DEF,4197,Add,NONE,0,Add,700004,15,37,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,273,301815,ATK,20772,Add,DEF,4223,Add,NONE,0,Add,700004,15,37,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,274,304170,ATK,20941,Add,DEF,4249,Add,NONE,0,Add,700004,15,37,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,275,306524,ATK,21110,Add,DEF,4275,Add,NONE,0,Add,700004,14,37,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,276,308879,ATK,21279,Add,DEF,4301,Add,NONE,0,Add,700004,14,37,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,277,311234,ATK,21448,Add,DEF,4327,Add,NONE,0,Add,700004,14,37,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,278,313588,ATK,21617,Add,DEF,4353,Add,NONE,0,Add,700004,14,37,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,279,315943,ATK,21786,Add,DEF,4379,Add,NONE,0,Add,700004,14,37,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,280,318297,ATK,21955,Add,DEF,4405,Add,NONE,0,Add,700004,14,38,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,281,320652,ATK,22124,Add,DEF,4431,Add,NONE,0,Add,700004,14,38,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,282,323007,ATK,22293,Add,DEF,4457,Add,NONE,0,Add,700004,14,38,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,283,325361,ATK,22462,Add,DEF,4483,Add,NONE,0,Add,700004,14,38,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,284,327716,ATK,22631,Add,DEF,4509,Add,NONE,0,Add,700004,14,38,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,285,330071,ATK,22800,Add,DEF,4535,Add,NONE,0,Add,700004,14,38,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,286,332425,ATK,22969,Add,DEF,4561,Add,NONE,0,Add,700004,14,38,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,287,334780,ATK,23138,Add,DEF,4587,Add,NONE,0,Add,700004,14,38,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,288,337134,ATK,23307,Add,DEF,4613,Add,NONE,0,Add,700004,14,38,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,289,339489,ATK,23476,Add,DEF,4639,Add,NONE,0,Add,700004,14,38,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,290,341844,ATK,23645,Add,DEF,4665,Add,NONE,0,Add,700004,14,39,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,291,344198,ATK,23814,Add,DEF,4691,Add,NONE,0,Add,700004,14,39,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,292,346553,ATK,23983,Add,DEF,4717,Add,NONE,0,Add,700004,14,39,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,293,348908,ATK,24152,Add,DEF,4743,Add,NONE,0,Add,700004,14,39,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,294,351262,ATK,24321,Add,DEF,4769,Add,NONE,0,Add,700004,14,39,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,295,353617,ATK,24490,Add,DEF,4795,Add,NONE,0,Add,700004,14,39,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,296,355971,ATK,24659,Add,DEF,4821,Add,NONE,0,Add,700004,14,39,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,297,358326,ATK,24828,Add,DEF,4847,Add,NONE,0,Add,700004,14,39,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,298,360681,ATK,24997,Add,DEF,4873,Add,NONE,0,Add,700004,14,39,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,299,363035,ATK,25166,Add,DEF,4899,Add,NONE,0,Add,700004,14,39,1,Add,NONE,Caster,6 +10022,Arena Stun Rune,300,365390,ATK,25335,Add,DEF,4925,Add,NONE,0,Add,700004,13,40,1,Add,NONE,Caster,7 +10023,Adventure Vampiric Rune,1,1858,DEF,101,Add,HP,792,Add,NONE,0,Add,700006,14,30,3040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,2,2282,DEF,126,Add,HP,944,Add,NONE,0,Add,700006,14,30,3080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,3,2706,DEF,151,Add,HP,1096,Add,NONE,0,Add,700006,14,30,3120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,4,3130,DEF,176,Add,HP,1248,Add,NONE,0,Add,700006,14,30,3160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,5,3555,DEF,201,Add,HP,1400,Add,NONE,0,Add,700006,14,30,3200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,6,3979,DEF,226,Add,HP,1552,Add,NONE,0,Add,700006,14,30,3240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,7,4403,DEF,251,Add,HP,1704,Add,NONE,0,Add,700006,14,30,3280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,8,4827,DEF,276,Add,HP,1856,Add,NONE,0,Add,700006,14,30,3320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,9,5252,DEF,301,Add,HP,2008,Add,NONE,0,Add,700006,14,30,3360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,10,5676,DEF,326,Add,HP,2160,Add,NONE,0,Add,700006,14,30,3400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,11,6100,DEF,351,Add,HP,2312,Add,NONE,0,Add,700006,14,30,3440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,12,6524,DEF,376,Add,HP,2464,Add,NONE,0,Add,700006,14,30,3480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,13,6948,DEF,401,Add,HP,2616,Add,NONE,0,Add,700006,14,30,3520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,14,7373,DEF,426,Add,HP,2768,Add,NONE,0,Add,700006,14,30,3560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,15,7797,DEF,451,Add,HP,2920,Add,NONE,0,Add,700006,14,30,3600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,16,8221,DEF,476,Add,HP,3072,Add,NONE,0,Add,700006,14,30,3640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,17,8645,DEF,501,Add,HP,3224,Add,NONE,0,Add,700006,14,30,3680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,18,9070,DEF,526,Add,HP,3376,Add,NONE,0,Add,700006,14,30,3720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,19,9494,DEF,551,Add,HP,3528,Add,NONE,0,Add,700006,14,30,3760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,20,9918,DEF,576,Add,HP,3680,Add,NONE,0,Add,700006,14,30,3800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,21,10342,DEF,601,Add,HP,3832,Add,NONE,0,Add,700006,14,30,3840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,22,10767,DEF,626,Add,HP,3984,Add,NONE,0,Add,700006,14,30,3880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,23,11191,DEF,651,Add,HP,4136,Add,NONE,0,Add,700006,14,30,3920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,24,11615,DEF,676,Add,HP,4288,Add,NONE,0,Add,700006,14,30,3960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,25,12039,DEF,701,Add,HP,4440,Add,NONE,0,Add,700006,14,30,4000,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,26,12464,DEF,726,Add,HP,4592,Add,NONE,0,Add,700006,14,30,4040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,27,12888,DEF,751,Add,HP,4744,Add,NONE,0,Add,700006,14,30,4080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,28,13312,DEF,776,Add,HP,4896,Add,NONE,0,Add,700006,14,30,4120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,29,13736,DEF,801,Add,HP,5048,Add,NONE,0,Add,700006,14,30,4160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,30,14160,DEF,826,Add,HP,5200,Add,NONE,0,Add,700006,14,30,4200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,31,14585,DEF,851,Add,HP,5352,Add,NONE,0,Add,700006,14,30,4240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,32,15009,DEF,876,Add,HP,5504,Add,NONE,0,Add,700006,14,30,4280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,33,15433,DEF,901,Add,HP,5656,Add,NONE,0,Add,700006,14,30,4320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,34,15857,DEF,926,Add,HP,5808,Add,NONE,0,Add,700006,14,30,4360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,35,16282,DEF,951,Add,HP,5960,Add,NONE,0,Add,700006,14,30,4400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,36,16706,DEF,976,Add,HP,6112,Add,NONE,0,Add,700006,14,30,4440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,37,17130,DEF,1001,Add,HP,6264,Add,NONE,0,Add,700006,14,30,4480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,38,17554,DEF,1026,Add,HP,6416,Add,NONE,0,Add,700006,14,30,4520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,39,17979,DEF,1051,Add,HP,6568,Add,NONE,0,Add,700006,14,30,4560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,40,18403,DEF,1076,Add,HP,6720,Add,NONE,0,Add,700006,14,30,4600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,41,18827,DEF,1101,Add,HP,6872,Add,NONE,0,Add,700006,14,30,4640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,42,19251,DEF,1126,Add,HP,7024,Add,NONE,0,Add,700006,14,30,4680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,43,19676,DEF,1151,Add,HP,7176,Add,NONE,0,Add,700006,14,30,4720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,44,20100,DEF,1176,Add,HP,7328,Add,NONE,0,Add,700006,14,30,4760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,45,20524,DEF,1201,Add,HP,7480,Add,NONE,0,Add,700006,14,30,4800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,46,20948,DEF,1226,Add,HP,7632,Add,NONE,0,Add,700006,14,30,4840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,47,21372,DEF,1251,Add,HP,7784,Add,NONE,0,Add,700006,14,30,4880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,48,21797,DEF,1276,Add,HP,7936,Add,NONE,0,Add,700006,14,30,4920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,49,22221,DEF,1301,Add,HP,8088,Add,NONE,0,Add,700006,14,30,4960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,50,22645,DEF,1326,Add,HP,8240,Add,NONE,0,Add,700006,14,30,5000,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,51,23137,DEF,1356,Add,HP,8401,Add,NONE,0,Add,700006,14,30,5040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,52,23629,DEF,1386,Add,HP,8562,Add,NONE,0,Add,700006,14,30,5080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,53,24121,DEF,1416,Add,HP,8723,Add,NONE,0,Add,700006,14,30,5120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,54,24613,DEF,1446,Add,HP,8884,Add,NONE,0,Add,700006,14,30,5160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,55,25104,DEF,1476,Add,HP,9045,Add,NONE,0,Add,700006,14,30,5200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,56,25596,DEF,1506,Add,HP,9206,Add,NONE,0,Add,700006,14,30,5240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,57,26088,DEF,1536,Add,HP,9367,Add,NONE,0,Add,700006,14,30,5280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,58,26580,DEF,1566,Add,HP,9528,Add,NONE,0,Add,700006,14,30,5320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,59,27072,DEF,1596,Add,HP,9689,Add,NONE,0,Add,700006,14,30,5360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,60,27564,DEF,1626,Add,HP,9850,Add,NONE,0,Add,700006,14,30,5400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,61,28056,DEF,1656,Add,HP,10011,Add,NONE,0,Add,700006,14,30,5440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,62,28547,DEF,1686,Add,HP,10172,Add,NONE,0,Add,700006,14,30,5480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,63,29039,DEF,1716,Add,HP,10333,Add,NONE,0,Add,700006,14,30,5520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,64,29531,DEF,1746,Add,HP,10494,Add,NONE,0,Add,700006,14,30,5560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,65,30023,DEF,1776,Add,HP,10655,Add,NONE,0,Add,700006,14,30,5600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,66,30515,DEF,1806,Add,HP,10816,Add,NONE,0,Add,700006,14,30,5640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,67,31007,DEF,1836,Add,HP,10977,Add,NONE,0,Add,700006,14,30,5680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,68,31499,DEF,1866,Add,HP,11138,Add,NONE,0,Add,700006,14,30,5720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,69,31990,DEF,1896,Add,HP,11299,Add,NONE,0,Add,700006,14,30,5760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,70,32482,DEF,1926,Add,HP,11460,Add,NONE,0,Add,700006,14,30,5800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,71,32974,DEF,1956,Add,HP,11621,Add,NONE,0,Add,700006,14,30,5840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,72,33466,DEF,1986,Add,HP,11782,Add,NONE,0,Add,700006,14,30,5880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,73,33958,DEF,2016,Add,HP,11943,Add,NONE,0,Add,700006,14,30,5920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,74,34450,DEF,2046,Add,HP,12104,Add,NONE,0,Add,700006,14,30,5960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,75,34942,DEF,2076,Add,HP,12265,Add,NONE,0,Add,700006,14,30,6000,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,76,35433,DEF,2106,Add,HP,12426,Add,NONE,0,Add,700006,14,30,6040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,77,35925,DEF,2136,Add,HP,12587,Add,NONE,0,Add,700006,14,30,6080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,78,36417,DEF,2166,Add,HP,12748,Add,NONE,0,Add,700006,14,30,6120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,79,36909,DEF,2196,Add,HP,12909,Add,NONE,0,Add,700006,14,30,6160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,80,37401,DEF,2226,Add,HP,13070,Add,NONE,0,Add,700006,14,30,6200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,81,37893,DEF,2256,Add,HP,13231,Add,NONE,0,Add,700006,14,30,6240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,82,38385,DEF,2286,Add,HP,13392,Add,NONE,0,Add,700006,14,30,6280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,83,38876,DEF,2316,Add,HP,13553,Add,NONE,0,Add,700006,14,30,6320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,84,39368,DEF,2346,Add,HP,13714,Add,NONE,0,Add,700006,14,30,6360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,85,39860,DEF,2376,Add,HP,13875,Add,NONE,0,Add,700006,14,30,6400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,86,40352,DEF,2406,Add,HP,14036,Add,NONE,0,Add,700006,14,30,6440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,87,40844,DEF,2436,Add,HP,14197,Add,NONE,0,Add,700006,14,30,6480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,88,41336,DEF,2466,Add,HP,14358,Add,NONE,0,Add,700006,14,30,6520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,89,41827,DEF,2496,Add,HP,14519,Add,NONE,0,Add,700006,14,30,6560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,90,42319,DEF,2526,Add,HP,14680,Add,NONE,0,Add,700006,14,30,6600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,91,42811,DEF,2556,Add,HP,14841,Add,NONE,0,Add,700006,14,30,6640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,92,43303,DEF,2586,Add,HP,15002,Add,NONE,0,Add,700006,14,30,6680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,93,43795,DEF,2616,Add,HP,15163,Add,NONE,0,Add,700006,14,30,6720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,94,44287,DEF,2646,Add,HP,15324,Add,NONE,0,Add,700006,14,30,6760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,95,44779,DEF,2676,Add,HP,15485,Add,NONE,0,Add,700006,14,30,6800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,96,45270,DEF,2706,Add,HP,15646,Add,NONE,0,Add,700006,14,30,6840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,97,45762,DEF,2736,Add,HP,15807,Add,NONE,0,Add,700006,14,30,6880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,98,46254,DEF,2766,Add,HP,15968,Add,NONE,0,Add,700006,14,30,6920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,99,46746,DEF,2796,Add,HP,16129,Add,NONE,0,Add,700006,14,30,6960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,100,47238,DEF,2826,Add,HP,16290,Add,NONE,0,Add,700006,14,30,7000,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,101,47897,DEF,2867,Add,HP,16494,Add,NONE,0,Add,700006,14,30,7040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,102,48556,DEF,2908,Add,HP,16698,Add,NONE,0,Add,700006,14,30,7080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,103,49216,DEF,2949,Add,HP,16902,Add,NONE,0,Add,700006,14,30,7120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,104,49875,DEF,2990,Add,HP,17106,Add,NONE,0,Add,700006,14,30,7160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,105,50534,DEF,3031,Add,HP,17310,Add,NONE,0,Add,700006,14,30,7200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,106,51194,DEF,3072,Add,HP,17514,Add,NONE,0,Add,700006,14,30,7240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,107,51853,DEF,3113,Add,HP,17718,Add,NONE,0,Add,700006,14,30,7280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,108,52512,DEF,3154,Add,HP,17922,Add,NONE,0,Add,700006,14,30,7320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,109,53172,DEF,3195,Add,HP,18126,Add,NONE,0,Add,700006,14,30,7360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,110,53831,DEF,3236,Add,HP,18330,Add,NONE,0,Add,700006,14,30,7400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,111,54490,DEF,3277,Add,HP,18534,Add,NONE,0,Add,700006,14,30,7440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,112,55149,DEF,3318,Add,HP,18738,Add,NONE,0,Add,700006,14,30,7480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,113,55809,DEF,3359,Add,HP,18942,Add,NONE,0,Add,700006,14,30,7520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,114,56468,DEF,3400,Add,HP,19146,Add,NONE,0,Add,700006,14,30,7560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,115,57127,DEF,3441,Add,HP,19350,Add,NONE,0,Add,700006,14,30,7600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,116,57787,DEF,3482,Add,HP,19554,Add,NONE,0,Add,700006,14,30,7640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,117,58446,DEF,3523,Add,HP,19758,Add,NONE,0,Add,700006,14,30,7680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,118,59105,DEF,3564,Add,HP,19962,Add,NONE,0,Add,700006,14,30,7720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,119,59765,DEF,3605,Add,HP,20166,Add,NONE,0,Add,700006,14,30,7760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,120,60424,DEF,3646,Add,HP,20370,Add,NONE,0,Add,700006,14,30,7800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,121,61083,DEF,3687,Add,HP,20574,Add,NONE,0,Add,700006,14,30,7840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,122,61742,DEF,3728,Add,HP,20778,Add,NONE,0,Add,700006,14,30,7880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,123,62402,DEF,3769,Add,HP,20982,Add,NONE,0,Add,700006,14,30,7920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,124,63061,DEF,3810,Add,HP,21186,Add,NONE,0,Add,700006,14,30,7960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,125,63720,DEF,3851,Add,HP,21390,Add,NONE,0,Add,700006,14,30,8000,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,126,64380,DEF,3892,Add,HP,21594,Add,NONE,0,Add,700006,14,30,8040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,127,65039,DEF,3933,Add,HP,21798,Add,NONE,0,Add,700006,14,30,8080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,128,65698,DEF,3974,Add,HP,22002,Add,NONE,0,Add,700006,14,30,8120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,129,66357,DEF,4015,Add,HP,22206,Add,NONE,0,Add,700006,14,30,8160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,130,67017,DEF,4056,Add,HP,22410,Add,NONE,0,Add,700006,14,30,8200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,131,67676,DEF,4097,Add,HP,22614,Add,NONE,0,Add,700006,14,30,8240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,132,68335,DEF,4138,Add,HP,22818,Add,NONE,0,Add,700006,14,30,8280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,133,68995,DEF,4179,Add,HP,23022,Add,NONE,0,Add,700006,14,30,8320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,134,69654,DEF,4220,Add,HP,23226,Add,NONE,0,Add,700006,14,30,8360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,135,70313,DEF,4261,Add,HP,23430,Add,NONE,0,Add,700006,14,30,8400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,136,70973,DEF,4302,Add,HP,23634,Add,NONE,0,Add,700006,14,30,8440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,137,71632,DEF,4343,Add,HP,23838,Add,NONE,0,Add,700006,14,30,8480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,138,72291,DEF,4384,Add,HP,24042,Add,NONE,0,Add,700006,14,30,8520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,139,72950,DEF,4425,Add,HP,24246,Add,NONE,0,Add,700006,14,30,8560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,140,73610,DEF,4466,Add,HP,24450,Add,NONE,0,Add,700006,14,30,8600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,141,74269,DEF,4507,Add,HP,24654,Add,NONE,0,Add,700006,14,30,8640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,142,74928,DEF,4548,Add,HP,24858,Add,NONE,0,Add,700006,14,30,8680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,143,75588,DEF,4589,Add,HP,25062,Add,NONE,0,Add,700006,14,30,8720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,144,76247,DEF,4630,Add,HP,25266,Add,NONE,0,Add,700006,14,30,8760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,145,76906,DEF,4671,Add,HP,25470,Add,NONE,0,Add,700006,14,30,8800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,146,77565,DEF,4712,Add,HP,25674,Add,NONE,0,Add,700006,14,30,8840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,147,78225,DEF,4753,Add,HP,25878,Add,NONE,0,Add,700006,14,30,8880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,148,78884,DEF,4794,Add,HP,26082,Add,NONE,0,Add,700006,14,30,8920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,149,79543,DEF,4835,Add,HP,26286,Add,NONE,0,Add,700006,14,30,8960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,150,80203,DEF,4876,Add,HP,26490,Add,NONE,0,Add,700006,14,30,9000,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,151,81805,DEF,4936,Add,HP,27580,Add,NONE,0,Add,700006,14,30,9040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,152,83407,DEF,4996,Add,HP,28670,Add,NONE,0,Add,700006,14,30,9080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,153,85008,DEF,5056,Add,HP,29760,Add,NONE,0,Add,700006,14,30,9120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,154,86610,DEF,5116,Add,HP,30850,Add,NONE,0,Add,700006,14,30,9160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,155,88212,DEF,5176,Add,HP,31940,Add,NONE,0,Add,700006,14,30,9200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,156,89814,DEF,5236,Add,HP,33030,Add,NONE,0,Add,700006,14,30,9240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,157,91416,DEF,5296,Add,HP,34120,Add,NONE,0,Add,700006,14,30,9280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,158,93018,DEF,5356,Add,HP,35210,Add,NONE,0,Add,700006,14,30,9320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,159,94620,DEF,5416,Add,HP,36300,Add,NONE,0,Add,700006,14,30,9360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,160,96222,DEF,5476,Add,HP,37390,Add,NONE,0,Add,700006,14,30,9400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,161,97824,DEF,5536,Add,HP,38480,Add,NONE,0,Add,700006,14,30,9440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,162,99426,DEF,5596,Add,HP,39570,Add,NONE,0,Add,700006,14,30,9480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,163,101028,DEF,5656,Add,HP,40660,Add,NONE,0,Add,700006,14,30,9520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,164,102630,DEF,5716,Add,HP,41750,Add,NONE,0,Add,700006,14,30,9560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,165,104232,DEF,5776,Add,HP,42840,Add,NONE,0,Add,700006,14,30,9600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,166,105834,DEF,5836,Add,HP,43930,Add,NONE,0,Add,700006,14,30,9640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,167,107436,DEF,5896,Add,HP,45020,Add,NONE,0,Add,700006,14,30,9680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,168,109038,DEF,5956,Add,HP,46110,Add,NONE,0,Add,700006,14,30,9720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,169,110640,DEF,6016,Add,HP,47200,Add,NONE,0,Add,700006,14,30,9760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,170,112242,DEF,6076,Add,HP,48290,Add,NONE,0,Add,700006,14,30,9800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,171,113844,DEF,6136,Add,HP,49380,Add,NONE,0,Add,700006,14,30,9840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,172,115446,DEF,6196,Add,HP,50470,Add,NONE,0,Add,700006,14,30,9880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,173,117047,DEF,6256,Add,HP,51560,Add,NONE,0,Add,700006,14,30,9920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,174,118649,DEF,6316,Add,HP,52650,Add,NONE,0,Add,700006,14,30,9960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,175,120251,DEF,6376,Add,HP,53740,Add,NONE,0,Add,700006,14,30,10000,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,176,121853,DEF,6436,Add,HP,54830,Add,NONE,0,Add,700006,14,30,10040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,177,123455,DEF,6496,Add,HP,55920,Add,NONE,0,Add,700006,14,30,10080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,178,125057,DEF,6556,Add,HP,57010,Add,NONE,0,Add,700006,14,30,10120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,179,126659,DEF,6616,Add,HP,58100,Add,NONE,0,Add,700006,14,30,10160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,180,128261,DEF,6676,Add,HP,59190,Add,NONE,0,Add,700006,14,30,10200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,181,129863,DEF,6736,Add,HP,60280,Add,NONE,0,Add,700006,14,30,10240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,182,131465,DEF,6796,Add,HP,61370,Add,NONE,0,Add,700006,14,30,10280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,183,133067,DEF,6856,Add,HP,62460,Add,NONE,0,Add,700006,14,30,10320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,184,134669,DEF,6916,Add,HP,63550,Add,NONE,0,Add,700006,14,30,10360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,185,136271,DEF,6976,Add,HP,64640,Add,NONE,0,Add,700006,14,30,10400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,186,137873,DEF,7036,Add,HP,65730,Add,NONE,0,Add,700006,14,30,10440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,187,139475,DEF,7096,Add,HP,66820,Add,NONE,0,Add,700006,14,30,10480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,188,141077,DEF,7156,Add,HP,67910,Add,NONE,0,Add,700006,14,30,10520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,189,142679,DEF,7216,Add,HP,69000,Add,NONE,0,Add,700006,14,30,10560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,190,144281,DEF,7276,Add,HP,70090,Add,NONE,0,Add,700006,14,30,10600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,191,145883,DEF,7336,Add,HP,71180,Add,NONE,0,Add,700006,14,30,10640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,192,147485,DEF,7396,Add,HP,72270,Add,NONE,0,Add,700006,14,30,10680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,193,149086,DEF,7456,Add,HP,73360,Add,NONE,0,Add,700006,14,30,10720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,194,150688,DEF,7516,Add,HP,74450,Add,NONE,0,Add,700006,14,30,10760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,195,152290,DEF,7576,Add,HP,75540,Add,NONE,0,Add,700006,14,30,10800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,196,153892,DEF,7636,Add,HP,76630,Add,NONE,0,Add,700006,14,30,10840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,197,155494,DEF,7696,Add,HP,77720,Add,NONE,0,Add,700006,14,30,10880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,198,157096,DEF,7756,Add,HP,78810,Add,NONE,0,Add,700006,14,30,10920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,199,158698,DEF,7816,Add,HP,79900,Add,NONE,0,Add,700006,14,30,10960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,200,160300,DEF,7876,Add,HP,80990,Add,NONE,0,Add,700006,14,30,11000,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,201,162389,DEF,7940,Add,HP,82625,Add,NONE,0,Add,700006,14,30,11040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,202,164478,DEF,8004,Add,HP,84260,Add,NONE,0,Add,700006,14,30,11080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,203,166567,DEF,8068,Add,HP,85895,Add,NONE,0,Add,700006,14,30,11120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,204,168656,DEF,8132,Add,HP,87530,Add,NONE,0,Add,700006,14,30,11160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,205,170745,DEF,8196,Add,HP,89165,Add,NONE,0,Add,700006,14,30,11200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,206,172834,DEF,8260,Add,HP,90800,Add,NONE,0,Add,700006,14,30,11240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,207,174923,DEF,8324,Add,HP,92435,Add,NONE,0,Add,700006,14,30,11280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,208,177012,DEF,8388,Add,HP,94070,Add,NONE,0,Add,700006,14,30,11320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,209,179101,DEF,8452,Add,HP,95705,Add,NONE,0,Add,700006,14,30,11360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,210,181190,DEF,8516,Add,HP,97340,Add,NONE,0,Add,700006,14,30,11400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,211,183279,DEF,8580,Add,HP,98975,Add,NONE,0,Add,700006,14,30,11440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,212,185368,DEF,8644,Add,HP,100610,Add,NONE,0,Add,700006,14,30,11480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,213,187457,DEF,8708,Add,HP,102245,Add,NONE,0,Add,700006,14,30,11520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,214,189546,DEF,8772,Add,HP,103880,Add,NONE,0,Add,700006,14,30,11560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,215,191635,DEF,8836,Add,HP,105515,Add,NONE,0,Add,700006,14,30,11600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,216,193724,DEF,8900,Add,HP,107150,Add,NONE,0,Add,700006,14,30,11640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,217,195813,DEF,8964,Add,HP,108785,Add,NONE,0,Add,700006,14,30,11680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,218,197902,DEF,9028,Add,HP,110420,Add,NONE,0,Add,700006,14,30,11720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,219,199991,DEF,9092,Add,HP,112055,Add,NONE,0,Add,700006,14,30,11760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,220,202080,DEF,9156,Add,HP,113690,Add,NONE,0,Add,700006,14,30,11800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,221,204169,DEF,9220,Add,HP,115325,Add,NONE,0,Add,700006,14,30,11840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,222,206258,DEF,9284,Add,HP,116960,Add,NONE,0,Add,700006,14,30,11880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,223,208347,DEF,9348,Add,HP,118595,Add,NONE,0,Add,700006,14,30,11920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,224,210436,DEF,9412,Add,HP,120230,Add,NONE,0,Add,700006,14,30,11960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,225,212525,DEF,9476,Add,HP,121865,Add,NONE,0,Add,700006,14,30,12000,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,226,214613,DEF,9540,Add,HP,123500,Add,NONE,0,Add,700006,14,30,12040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,227,216702,DEF,9604,Add,HP,125135,Add,NONE,0,Add,700006,14,30,12080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,228,218791,DEF,9668,Add,HP,126770,Add,NONE,0,Add,700006,14,30,12120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,229,220880,DEF,9732,Add,HP,128405,Add,NONE,0,Add,700006,14,30,12160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,230,222969,DEF,9796,Add,HP,130040,Add,NONE,0,Add,700006,14,30,12200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,231,225058,DEF,9860,Add,HP,131675,Add,NONE,0,Add,700006,14,30,12240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,232,227147,DEF,9924,Add,HP,133310,Add,NONE,0,Add,700006,14,30,12280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,233,229236,DEF,9988,Add,HP,134945,Add,NONE,0,Add,700006,14,30,12320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,234,231325,DEF,10052,Add,HP,136580,Add,NONE,0,Add,700006,14,30,12360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,235,233414,DEF,10116,Add,HP,138215,Add,NONE,0,Add,700006,14,30,12400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,236,235503,DEF,10180,Add,HP,139850,Add,NONE,0,Add,700006,14,30,12440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,237,237592,DEF,10244,Add,HP,141485,Add,NONE,0,Add,700006,14,30,12480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,238,239681,DEF,10308,Add,HP,143120,Add,NONE,0,Add,700006,14,30,12520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,239,241770,DEF,10372,Add,HP,144755,Add,NONE,0,Add,700006,14,30,12560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,240,243859,DEF,10436,Add,HP,146390,Add,NONE,0,Add,700006,14,30,12600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,241,245948,DEF,10500,Add,HP,148025,Add,NONE,0,Add,700006,14,30,12640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,242,248037,DEF,10564,Add,HP,149660,Add,NONE,0,Add,700006,14,30,12680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,243,250126,DEF,10628,Add,HP,151295,Add,NONE,0,Add,700006,14,30,12720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,244,252215,DEF,10692,Add,HP,152930,Add,NONE,0,Add,700006,14,30,12760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,245,254304,DEF,10756,Add,HP,154565,Add,NONE,0,Add,700006,14,30,12800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,246,256393,DEF,10820,Add,HP,156200,Add,NONE,0,Add,700006,14,30,12840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,247,258482,DEF,10884,Add,HP,157835,Add,NONE,0,Add,700006,14,30,12880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,248,260571,DEF,10948,Add,HP,159470,Add,NONE,0,Add,700006,14,30,12920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,249,262660,DEF,11012,Add,HP,161105,Add,NONE,0,Add,700006,14,30,12960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,250,264749,DEF,11076,Add,HP,162740,Add,NONE,0,Add,700006,14,30,13000,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,251,267124,DEF,11155,Add,HP,164506,Add,NONE,0,Add,700006,14,30,13040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,252,269500,DEF,11234,Add,HP,166272,Add,NONE,0,Add,700006,14,30,13080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,253,271876,DEF,11313,Add,HP,168038,Add,NONE,0,Add,700006,14,30,13120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,254,274251,DEF,11392,Add,HP,169804,Add,NONE,0,Add,700006,14,30,13160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,255,276627,DEF,11471,Add,HP,171570,Add,NONE,0,Add,700006,14,30,13200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,256,279002,DEF,11550,Add,HP,173336,Add,NONE,0,Add,700006,14,30,13240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,257,281378,DEF,11629,Add,HP,175102,Add,NONE,0,Add,700006,14,30,13280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,258,283753,DEF,11708,Add,HP,176868,Add,NONE,0,Add,700006,14,30,13320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,259,286129,DEF,11787,Add,HP,178634,Add,NONE,0,Add,700006,14,30,13360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,260,288504,DEF,11866,Add,HP,180400,Add,NONE,0,Add,700006,14,30,13400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,261,290880,DEF,11945,Add,HP,182166,Add,NONE,0,Add,700006,14,30,13440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,262,293256,DEF,12024,Add,HP,183932,Add,NONE,0,Add,700006,14,30,13480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,263,295631,DEF,12103,Add,HP,185698,Add,NONE,0,Add,700006,14,30,13520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,264,298007,DEF,12182,Add,HP,187464,Add,NONE,0,Add,700006,14,30,13560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,265,300382,DEF,12261,Add,HP,189230,Add,NONE,0,Add,700006,14,30,13600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,266,302758,DEF,12340,Add,HP,190996,Add,NONE,0,Add,700006,14,30,13640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,267,305133,DEF,12419,Add,HP,192762,Add,NONE,0,Add,700006,14,30,13680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,268,307509,DEF,12498,Add,HP,194528,Add,NONE,0,Add,700006,14,30,13720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,269,309884,DEF,12577,Add,HP,196294,Add,NONE,0,Add,700006,14,30,13760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,270,312260,DEF,12656,Add,HP,198060,Add,NONE,0,Add,700006,14,30,13800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,271,314636,DEF,12735,Add,HP,199826,Add,NONE,0,Add,700006,14,30,13840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,272,317011,DEF,12814,Add,HP,201592,Add,NONE,0,Add,700006,14,30,13880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,273,319387,DEF,12893,Add,HP,203358,Add,NONE,0,Add,700006,14,30,13920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,274,321762,DEF,12972,Add,HP,205124,Add,NONE,0,Add,700006,14,30,13960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,275,324138,DEF,13051,Add,HP,206890,Add,NONE,0,Add,700006,14,30,14000,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,276,326513,DEF,13130,Add,HP,208656,Add,NONE,0,Add,700006,14,30,14040,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,277,328889,DEF,13209,Add,HP,210422,Add,NONE,0,Add,700006,14,30,14080,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,278,331264,DEF,13288,Add,HP,212188,Add,NONE,0,Add,700006,14,30,14120,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,279,333640,DEF,13367,Add,HP,213954,Add,NONE,0,Add,700006,14,30,14160,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,280,336016,DEF,13446,Add,HP,215720,Add,NONE,0,Add,700006,14,30,14200,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,281,338391,DEF,13525,Add,HP,217486,Add,NONE,0,Add,700006,14,30,14240,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,282,340767,DEF,13604,Add,HP,219252,Add,NONE,0,Add,700006,14,30,14280,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,283,343142,DEF,13683,Add,HP,221018,Add,NONE,0,Add,700006,14,30,14320,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,284,345518,DEF,13762,Add,HP,222784,Add,NONE,0,Add,700006,14,30,14360,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,285,347893,DEF,13841,Add,HP,224550,Add,NONE,0,Add,700006,14,30,14400,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,286,350269,DEF,13920,Add,HP,226316,Add,NONE,0,Add,700006,14,30,14440,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,287,352644,DEF,13999,Add,HP,228082,Add,NONE,0,Add,700006,14,30,14480,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,288,355020,DEF,14078,Add,HP,229848,Add,NONE,0,Add,700006,14,30,14520,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,289,357396,DEF,14157,Add,HP,231614,Add,NONE,0,Add,700006,14,30,14560,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,290,359771,DEF,14236,Add,HP,233380,Add,NONE,0,Add,700006,14,30,14600,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,291,362147,DEF,14315,Add,HP,235146,Add,NONE,0,Add,700006,14,30,14640,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,292,364522,DEF,14394,Add,HP,236912,Add,NONE,0,Add,700006,14,30,14680,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,293,366898,DEF,14473,Add,HP,238678,Add,NONE,0,Add,700006,14,30,14720,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,294,369273,DEF,14552,Add,HP,240444,Add,NONE,0,Add,700006,14,30,14760,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,295,371649,DEF,14631,Add,HP,242210,Add,NONE,0,Add,700006,14,30,14800,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,296,374024,DEF,14710,Add,HP,243976,Add,NONE,0,Add,700006,14,30,14840,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,297,376400,DEF,14789,Add,HP,245742,Add,NONE,0,Add,700006,14,30,14880,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,298,378776,DEF,14868,Add,HP,247508,Add,NONE,0,Add,700006,14,30,14920,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,299,381151,DEF,14947,Add,HP,249274,Add,NONE,0,Add,700006,14,30,14960,Add,NONE,Caster,20 +10023,Adventure Vampiric Rune,300,383527,DEF,15026,Add,HP,251040,Add,NONE,0,Add,700006,14,30,15000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,1,1858,DEF,101,Add,HP,792,Add,NONE,0,Add,700006,14,30,10050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,2,2282,DEF,126,Add,HP,944,Add,NONE,0,Add,700006,14,30,10100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,3,2706,DEF,151,Add,HP,1096,Add,NONE,0,Add,700006,14,30,10150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,4,3130,DEF,176,Add,HP,1248,Add,NONE,0,Add,700006,14,30,10200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,5,3555,DEF,201,Add,HP,1400,Add,NONE,0,Add,700006,14,30,10250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,6,3979,DEF,226,Add,HP,1552,Add,NONE,0,Add,700006,14,30,10300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,7,4403,DEF,251,Add,HP,1704,Add,NONE,0,Add,700006,14,30,10350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,8,4827,DEF,276,Add,HP,1856,Add,NONE,0,Add,700006,14,30,10400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,9,5252,DEF,301,Add,HP,2008,Add,NONE,0,Add,700006,14,30,10450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,10,5676,DEF,326,Add,HP,2160,Add,NONE,0,Add,700006,14,30,10500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,11,6100,DEF,351,Add,HP,2312,Add,NONE,0,Add,700006,14,30,10550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,12,6524,DEF,376,Add,HP,2464,Add,NONE,0,Add,700006,14,30,10600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,13,6948,DEF,401,Add,HP,2616,Add,NONE,0,Add,700006,14,30,10650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,14,7373,DEF,426,Add,HP,2768,Add,NONE,0,Add,700006,14,30,10700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,15,7797,DEF,451,Add,HP,2920,Add,NONE,0,Add,700006,14,30,10750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,16,8221,DEF,476,Add,HP,3072,Add,NONE,0,Add,700006,14,30,10800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,17,8645,DEF,501,Add,HP,3224,Add,NONE,0,Add,700006,14,30,10850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,18,9070,DEF,526,Add,HP,3376,Add,NONE,0,Add,700006,14,30,10900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,19,9494,DEF,551,Add,HP,3528,Add,NONE,0,Add,700006,14,30,10950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,20,9918,DEF,576,Add,HP,3680,Add,NONE,0,Add,700006,14,30,11000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,21,10342,DEF,601,Add,HP,3832,Add,NONE,0,Add,700006,14,30,11050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,22,10767,DEF,626,Add,HP,3984,Add,NONE,0,Add,700006,14,30,11100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,23,11191,DEF,651,Add,HP,4136,Add,NONE,0,Add,700006,14,30,11150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,24,11615,DEF,676,Add,HP,4288,Add,NONE,0,Add,700006,14,30,11200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,25,12039,DEF,701,Add,HP,4440,Add,NONE,0,Add,700006,14,30,11250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,26,12464,DEF,726,Add,HP,4592,Add,NONE,0,Add,700006,14,30,11300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,27,12888,DEF,751,Add,HP,4744,Add,NONE,0,Add,700006,14,30,11350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,28,13312,DEF,776,Add,HP,4896,Add,NONE,0,Add,700006,14,30,11400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,29,13736,DEF,801,Add,HP,5048,Add,NONE,0,Add,700006,14,30,11450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,30,14160,DEF,826,Add,HP,5200,Add,NONE,0,Add,700006,14,30,11500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,31,14585,DEF,851,Add,HP,5352,Add,NONE,0,Add,700006,14,30,11550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,32,15009,DEF,876,Add,HP,5504,Add,NONE,0,Add,700006,14,30,11600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,33,15433,DEF,901,Add,HP,5656,Add,NONE,0,Add,700006,14,30,11650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,34,15857,DEF,926,Add,HP,5808,Add,NONE,0,Add,700006,14,30,11700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,35,16282,DEF,951,Add,HP,5960,Add,NONE,0,Add,700006,14,30,11750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,36,16706,DEF,976,Add,HP,6112,Add,NONE,0,Add,700006,14,30,11800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,37,17130,DEF,1001,Add,HP,6264,Add,NONE,0,Add,700006,14,30,11850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,38,17554,DEF,1026,Add,HP,6416,Add,NONE,0,Add,700006,14,30,11900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,39,17979,DEF,1051,Add,HP,6568,Add,NONE,0,Add,700006,14,30,11950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,40,18403,DEF,1076,Add,HP,6720,Add,NONE,0,Add,700006,14,30,12000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,41,18827,DEF,1101,Add,HP,6872,Add,NONE,0,Add,700006,14,30,12050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,42,19251,DEF,1126,Add,HP,7024,Add,NONE,0,Add,700006,14,30,12100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,43,19676,DEF,1151,Add,HP,7176,Add,NONE,0,Add,700006,14,30,12150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,44,20100,DEF,1176,Add,HP,7328,Add,NONE,0,Add,700006,14,30,12200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,45,20524,DEF,1201,Add,HP,7480,Add,NONE,0,Add,700006,14,30,12250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,46,20948,DEF,1226,Add,HP,7632,Add,NONE,0,Add,700006,14,30,12300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,47,21372,DEF,1251,Add,HP,7784,Add,NONE,0,Add,700006,14,30,12350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,48,21797,DEF,1276,Add,HP,7936,Add,NONE,0,Add,700006,14,30,12400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,49,22221,DEF,1301,Add,HP,8088,Add,NONE,0,Add,700006,14,30,12450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,50,22645,DEF,1326,Add,HP,8240,Add,NONE,0,Add,700006,14,30,12500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,51,23137,DEF,1356,Add,HP,8401,Add,NONE,0,Add,700006,14,30,12550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,52,23629,DEF,1386,Add,HP,8562,Add,NONE,0,Add,700006,14,30,12600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,53,24121,DEF,1416,Add,HP,8723,Add,NONE,0,Add,700006,14,30,12650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,54,24613,DEF,1446,Add,HP,8884,Add,NONE,0,Add,700006,14,30,12700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,55,25104,DEF,1476,Add,HP,9045,Add,NONE,0,Add,700006,14,30,12750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,56,25596,DEF,1506,Add,HP,9206,Add,NONE,0,Add,700006,14,30,12800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,57,26088,DEF,1536,Add,HP,9367,Add,NONE,0,Add,700006,14,30,12850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,58,26580,DEF,1566,Add,HP,9528,Add,NONE,0,Add,700006,14,30,12900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,59,27072,DEF,1596,Add,HP,9689,Add,NONE,0,Add,700006,14,30,12950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,60,27564,DEF,1626,Add,HP,9850,Add,NONE,0,Add,700006,14,30,13000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,61,28056,DEF,1656,Add,HP,10011,Add,NONE,0,Add,700006,14,30,13050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,62,28547,DEF,1686,Add,HP,10172,Add,NONE,0,Add,700006,14,30,13100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,63,29039,DEF,1716,Add,HP,10333,Add,NONE,0,Add,700006,14,30,13150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,64,29531,DEF,1746,Add,HP,10494,Add,NONE,0,Add,700006,14,30,13200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,65,30023,DEF,1776,Add,HP,10655,Add,NONE,0,Add,700006,14,30,13250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,66,30515,DEF,1806,Add,HP,10816,Add,NONE,0,Add,700006,14,30,13300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,67,31007,DEF,1836,Add,HP,10977,Add,NONE,0,Add,700006,14,30,13350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,68,31499,DEF,1866,Add,HP,11138,Add,NONE,0,Add,700006,14,30,13400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,69,31990,DEF,1896,Add,HP,11299,Add,NONE,0,Add,700006,14,30,13450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,70,32482,DEF,1926,Add,HP,11460,Add,NONE,0,Add,700006,14,30,13500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,71,32974,DEF,1956,Add,HP,11621,Add,NONE,0,Add,700006,14,30,13550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,72,33466,DEF,1986,Add,HP,11782,Add,NONE,0,Add,700006,14,30,13600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,73,33958,DEF,2016,Add,HP,11943,Add,NONE,0,Add,700006,14,30,13650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,74,34450,DEF,2046,Add,HP,12104,Add,NONE,0,Add,700006,14,30,13700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,75,34942,DEF,2076,Add,HP,12265,Add,NONE,0,Add,700006,14,30,13750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,76,35433,DEF,2106,Add,HP,12426,Add,NONE,0,Add,700006,14,30,13800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,77,35925,DEF,2136,Add,HP,12587,Add,NONE,0,Add,700006,14,30,13850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,78,36417,DEF,2166,Add,HP,12748,Add,NONE,0,Add,700006,14,30,13900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,79,36909,DEF,2196,Add,HP,12909,Add,NONE,0,Add,700006,14,30,13950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,80,37401,DEF,2226,Add,HP,13070,Add,NONE,0,Add,700006,14,30,14000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,81,37893,DEF,2256,Add,HP,13231,Add,NONE,0,Add,700006,14,30,14050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,82,38385,DEF,2286,Add,HP,13392,Add,NONE,0,Add,700006,14,30,14100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,83,38876,DEF,2316,Add,HP,13553,Add,NONE,0,Add,700006,14,30,14150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,84,39368,DEF,2346,Add,HP,13714,Add,NONE,0,Add,700006,14,30,14200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,85,39860,DEF,2376,Add,HP,13875,Add,NONE,0,Add,700006,14,30,14250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,86,40352,DEF,2406,Add,HP,14036,Add,NONE,0,Add,700006,14,30,14300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,87,40844,DEF,2436,Add,HP,14197,Add,NONE,0,Add,700006,14,30,14350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,88,41336,DEF,2466,Add,HP,14358,Add,NONE,0,Add,700006,14,30,14400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,89,41827,DEF,2496,Add,HP,14519,Add,NONE,0,Add,700006,14,30,14450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,90,42319,DEF,2526,Add,HP,14680,Add,NONE,0,Add,700006,14,30,14500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,91,42811,DEF,2556,Add,HP,14841,Add,NONE,0,Add,700006,14,30,14550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,92,43303,DEF,2586,Add,HP,15002,Add,NONE,0,Add,700006,14,30,14600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,93,43795,DEF,2616,Add,HP,15163,Add,NONE,0,Add,700006,14,30,14650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,94,44287,DEF,2646,Add,HP,15324,Add,NONE,0,Add,700006,14,30,14700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,95,44779,DEF,2676,Add,HP,15485,Add,NONE,0,Add,700006,14,30,14750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,96,45270,DEF,2706,Add,HP,15646,Add,NONE,0,Add,700006,14,30,14800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,97,45762,DEF,2736,Add,HP,15807,Add,NONE,0,Add,700006,14,30,14850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,98,46254,DEF,2766,Add,HP,15968,Add,NONE,0,Add,700006,14,30,14900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,99,46746,DEF,2796,Add,HP,16129,Add,NONE,0,Add,700006,14,30,14950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,100,47238,DEF,2826,Add,HP,16290,Add,NONE,0,Add,700006,14,30,15000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,101,47897,DEF,2867,Add,HP,16494,Add,NONE,0,Add,700006,14,30,15050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,102,48556,DEF,2908,Add,HP,16698,Add,NONE,0,Add,700006,14,30,15100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,103,49216,DEF,2949,Add,HP,16902,Add,NONE,0,Add,700006,14,30,15150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,104,49875,DEF,2990,Add,HP,17106,Add,NONE,0,Add,700006,14,30,15200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,105,50534,DEF,3031,Add,HP,17310,Add,NONE,0,Add,700006,14,30,15250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,106,51194,DEF,3072,Add,HP,17514,Add,NONE,0,Add,700006,14,30,15300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,107,51853,DEF,3113,Add,HP,17718,Add,NONE,0,Add,700006,14,30,15350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,108,52512,DEF,3154,Add,HP,17922,Add,NONE,0,Add,700006,14,30,15400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,109,53172,DEF,3195,Add,HP,18126,Add,NONE,0,Add,700006,14,30,15450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,110,53831,DEF,3236,Add,HP,18330,Add,NONE,0,Add,700006,14,30,15500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,111,54490,DEF,3277,Add,HP,18534,Add,NONE,0,Add,700006,14,30,15550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,112,55149,DEF,3318,Add,HP,18738,Add,NONE,0,Add,700006,14,30,15600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,113,55809,DEF,3359,Add,HP,18942,Add,NONE,0,Add,700006,14,30,15650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,114,56468,DEF,3400,Add,HP,19146,Add,NONE,0,Add,700006,14,30,15700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,115,57127,DEF,3441,Add,HP,19350,Add,NONE,0,Add,700006,14,30,15750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,116,57787,DEF,3482,Add,HP,19554,Add,NONE,0,Add,700006,14,30,15800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,117,58446,DEF,3523,Add,HP,19758,Add,NONE,0,Add,700006,14,30,15850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,118,59105,DEF,3564,Add,HP,19962,Add,NONE,0,Add,700006,14,30,15900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,119,59765,DEF,3605,Add,HP,20166,Add,NONE,0,Add,700006,14,30,15950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,120,60424,DEF,3646,Add,HP,20370,Add,NONE,0,Add,700006,14,30,16000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,121,61083,DEF,3687,Add,HP,20574,Add,NONE,0,Add,700006,14,30,16050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,122,61742,DEF,3728,Add,HP,20778,Add,NONE,0,Add,700006,14,30,16100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,123,62402,DEF,3769,Add,HP,20982,Add,NONE,0,Add,700006,14,30,16150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,124,63061,DEF,3810,Add,HP,21186,Add,NONE,0,Add,700006,14,30,16200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,125,63720,DEF,3851,Add,HP,21390,Add,NONE,0,Add,700006,14,30,16250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,126,64380,DEF,3892,Add,HP,21594,Add,NONE,0,Add,700006,14,30,16300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,127,65039,DEF,3933,Add,HP,21798,Add,NONE,0,Add,700006,14,30,16350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,128,65698,DEF,3974,Add,HP,22002,Add,NONE,0,Add,700006,14,30,16400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,129,66357,DEF,4015,Add,HP,22206,Add,NONE,0,Add,700006,14,30,16450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,130,67017,DEF,4056,Add,HP,22410,Add,NONE,0,Add,700006,14,30,16500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,131,67676,DEF,4097,Add,HP,22614,Add,NONE,0,Add,700006,14,30,16550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,132,68335,DEF,4138,Add,HP,22818,Add,NONE,0,Add,700006,14,30,16600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,133,68995,DEF,4179,Add,HP,23022,Add,NONE,0,Add,700006,14,30,16650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,134,69654,DEF,4220,Add,HP,23226,Add,NONE,0,Add,700006,14,30,16700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,135,70313,DEF,4261,Add,HP,23430,Add,NONE,0,Add,700006,14,30,16750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,136,70973,DEF,4302,Add,HP,23634,Add,NONE,0,Add,700006,14,30,16800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,137,71632,DEF,4343,Add,HP,23838,Add,NONE,0,Add,700006,14,30,16850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,138,72291,DEF,4384,Add,HP,24042,Add,NONE,0,Add,700006,14,30,16900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,139,72950,DEF,4425,Add,HP,24246,Add,NONE,0,Add,700006,14,30,16950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,140,73610,DEF,4466,Add,HP,24450,Add,NONE,0,Add,700006,14,30,17000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,141,74269,DEF,4507,Add,HP,24654,Add,NONE,0,Add,700006,14,30,17050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,142,74928,DEF,4548,Add,HP,24858,Add,NONE,0,Add,700006,14,30,17100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,143,75588,DEF,4589,Add,HP,25062,Add,NONE,0,Add,700006,14,30,17150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,144,76247,DEF,4630,Add,HP,25266,Add,NONE,0,Add,700006,14,30,17200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,145,76906,DEF,4671,Add,HP,25470,Add,NONE,0,Add,700006,14,30,17250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,146,77565,DEF,4712,Add,HP,25674,Add,NONE,0,Add,700006,14,30,17300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,147,78225,DEF,4753,Add,HP,25878,Add,NONE,0,Add,700006,14,30,17350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,148,78884,DEF,4794,Add,HP,26082,Add,NONE,0,Add,700006,14,30,17400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,149,79543,DEF,4835,Add,HP,26286,Add,NONE,0,Add,700006,14,30,17450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,150,80203,DEF,4876,Add,HP,26490,Add,NONE,0,Add,700006,14,30,17500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,151,81805,DEF,4936,Add,HP,27580,Add,NONE,0,Add,700006,14,30,17550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,152,83407,DEF,4996,Add,HP,28670,Add,NONE,0,Add,700006,14,30,17600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,153,85008,DEF,5056,Add,HP,29760,Add,NONE,0,Add,700006,14,30,17650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,154,86610,DEF,5116,Add,HP,30850,Add,NONE,0,Add,700006,14,30,17700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,155,88212,DEF,5176,Add,HP,31940,Add,NONE,0,Add,700006,14,30,17750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,156,89814,DEF,5236,Add,HP,33030,Add,NONE,0,Add,700006,14,30,17800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,157,91416,DEF,5296,Add,HP,34120,Add,NONE,0,Add,700006,14,30,17850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,158,93018,DEF,5356,Add,HP,35210,Add,NONE,0,Add,700006,14,30,17900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,159,94620,DEF,5416,Add,HP,36300,Add,NONE,0,Add,700006,14,30,17950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,160,96222,DEF,5476,Add,HP,37390,Add,NONE,0,Add,700006,14,30,18000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,161,97824,DEF,5536,Add,HP,38480,Add,NONE,0,Add,700006,14,30,18050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,162,99426,DEF,5596,Add,HP,39570,Add,NONE,0,Add,700006,14,30,18100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,163,101028,DEF,5656,Add,HP,40660,Add,NONE,0,Add,700006,14,30,18150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,164,102630,DEF,5716,Add,HP,41750,Add,NONE,0,Add,700006,14,30,18200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,165,104232,DEF,5776,Add,HP,42840,Add,NONE,0,Add,700006,14,30,18250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,166,105834,DEF,5836,Add,HP,43930,Add,NONE,0,Add,700006,14,30,18300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,167,107436,DEF,5896,Add,HP,45020,Add,NONE,0,Add,700006,14,30,18350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,168,109038,DEF,5956,Add,HP,46110,Add,NONE,0,Add,700006,14,30,18400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,169,110640,DEF,6016,Add,HP,47200,Add,NONE,0,Add,700006,14,30,18450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,170,112242,DEF,6076,Add,HP,48290,Add,NONE,0,Add,700006,14,30,18500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,171,113844,DEF,6136,Add,HP,49380,Add,NONE,0,Add,700006,14,30,18550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,172,115446,DEF,6196,Add,HP,50470,Add,NONE,0,Add,700006,14,30,18600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,173,117047,DEF,6256,Add,HP,51560,Add,NONE,0,Add,700006,14,30,18650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,174,118649,DEF,6316,Add,HP,52650,Add,NONE,0,Add,700006,14,30,18700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,175,120251,DEF,6376,Add,HP,53740,Add,NONE,0,Add,700006,14,30,18750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,176,121853,DEF,6436,Add,HP,54830,Add,NONE,0,Add,700006,14,30,18800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,177,123455,DEF,6496,Add,HP,55920,Add,NONE,0,Add,700006,14,30,18850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,178,125057,DEF,6556,Add,HP,57010,Add,NONE,0,Add,700006,14,30,18900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,179,126659,DEF,6616,Add,HP,58100,Add,NONE,0,Add,700006,14,30,18950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,180,128261,DEF,6676,Add,HP,59190,Add,NONE,0,Add,700006,14,30,19000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,181,129863,DEF,6736,Add,HP,60280,Add,NONE,0,Add,700006,14,30,19050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,182,131465,DEF,6796,Add,HP,61370,Add,NONE,0,Add,700006,14,30,19100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,183,133067,DEF,6856,Add,HP,62460,Add,NONE,0,Add,700006,14,30,19150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,184,134669,DEF,6916,Add,HP,63550,Add,NONE,0,Add,700006,14,30,19200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,185,136271,DEF,6976,Add,HP,64640,Add,NONE,0,Add,700006,14,30,19250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,186,137873,DEF,7036,Add,HP,65730,Add,NONE,0,Add,700006,14,30,19300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,187,139475,DEF,7096,Add,HP,66820,Add,NONE,0,Add,700006,14,30,19350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,188,141077,DEF,7156,Add,HP,67910,Add,NONE,0,Add,700006,14,30,19400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,189,142679,DEF,7216,Add,HP,69000,Add,NONE,0,Add,700006,14,30,19450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,190,144281,DEF,7276,Add,HP,70090,Add,NONE,0,Add,700006,14,30,19500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,191,145883,DEF,7336,Add,HP,71180,Add,NONE,0,Add,700006,14,30,19550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,192,147485,DEF,7396,Add,HP,72270,Add,NONE,0,Add,700006,14,30,19600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,193,149086,DEF,7456,Add,HP,73360,Add,NONE,0,Add,700006,14,30,19650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,194,150688,DEF,7516,Add,HP,74450,Add,NONE,0,Add,700006,14,30,19700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,195,152290,DEF,7576,Add,HP,75540,Add,NONE,0,Add,700006,14,30,19750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,196,153892,DEF,7636,Add,HP,76630,Add,NONE,0,Add,700006,14,30,19800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,197,155494,DEF,7696,Add,HP,77720,Add,NONE,0,Add,700006,14,30,19850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,198,157096,DEF,7756,Add,HP,78810,Add,NONE,0,Add,700006,14,30,19900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,199,158698,DEF,7816,Add,HP,79900,Add,NONE,0,Add,700006,14,30,19950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,200,160300,DEF,7876,Add,HP,80990,Add,NONE,0,Add,700006,14,30,20000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,201,162389,DEF,7940,Add,HP,82625,Add,NONE,0,Add,700006,14,30,20050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,202,164478,DEF,8004,Add,HP,84260,Add,NONE,0,Add,700006,14,30,20100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,203,166567,DEF,8068,Add,HP,85895,Add,NONE,0,Add,700006,14,30,20150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,204,168656,DEF,8132,Add,HP,87530,Add,NONE,0,Add,700006,14,30,20200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,205,170745,DEF,8196,Add,HP,89165,Add,NONE,0,Add,700006,14,30,20250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,206,172834,DEF,8260,Add,HP,90800,Add,NONE,0,Add,700006,14,30,20300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,207,174923,DEF,8324,Add,HP,92435,Add,NONE,0,Add,700006,14,30,20350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,208,177012,DEF,8388,Add,HP,94070,Add,NONE,0,Add,700006,14,30,20400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,209,179101,DEF,8452,Add,HP,95705,Add,NONE,0,Add,700006,14,30,20450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,210,181190,DEF,8516,Add,HP,97340,Add,NONE,0,Add,700006,14,30,20500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,211,183279,DEF,8580,Add,HP,98975,Add,NONE,0,Add,700006,14,30,20550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,212,185368,DEF,8644,Add,HP,100610,Add,NONE,0,Add,700006,14,30,20600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,213,187457,DEF,8708,Add,HP,102245,Add,NONE,0,Add,700006,14,30,20650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,214,189546,DEF,8772,Add,HP,103880,Add,NONE,0,Add,700006,14,30,20700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,215,191635,DEF,8836,Add,HP,105515,Add,NONE,0,Add,700006,14,30,20750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,216,193724,DEF,8900,Add,HP,107150,Add,NONE,0,Add,700006,14,30,20800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,217,195813,DEF,8964,Add,HP,108785,Add,NONE,0,Add,700006,14,30,20850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,218,197902,DEF,9028,Add,HP,110420,Add,NONE,0,Add,700006,14,30,20900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,219,199991,DEF,9092,Add,HP,112055,Add,NONE,0,Add,700006,14,30,20950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,220,202080,DEF,9156,Add,HP,113690,Add,NONE,0,Add,700006,14,30,21000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,221,204169,DEF,9220,Add,HP,115325,Add,NONE,0,Add,700006,14,30,21050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,222,206258,DEF,9284,Add,HP,116960,Add,NONE,0,Add,700006,14,30,21100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,223,208347,DEF,9348,Add,HP,118595,Add,NONE,0,Add,700006,14,30,21150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,224,210436,DEF,9412,Add,HP,120230,Add,NONE,0,Add,700006,14,30,21200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,225,212525,DEF,9476,Add,HP,121865,Add,NONE,0,Add,700006,14,30,21250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,226,214613,DEF,9540,Add,HP,123500,Add,NONE,0,Add,700006,14,30,21300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,227,216702,DEF,9604,Add,HP,125135,Add,NONE,0,Add,700006,14,30,21350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,228,218791,DEF,9668,Add,HP,126770,Add,NONE,0,Add,700006,14,30,21400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,229,220880,DEF,9732,Add,HP,128405,Add,NONE,0,Add,700006,14,30,21450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,230,222969,DEF,9796,Add,HP,130040,Add,NONE,0,Add,700006,14,30,21500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,231,225058,DEF,9860,Add,HP,131675,Add,NONE,0,Add,700006,14,30,21550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,232,227147,DEF,9924,Add,HP,133310,Add,NONE,0,Add,700006,14,30,21600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,233,229236,DEF,9988,Add,HP,134945,Add,NONE,0,Add,700006,14,30,21650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,234,231325,DEF,10052,Add,HP,136580,Add,NONE,0,Add,700006,14,30,21700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,235,233414,DEF,10116,Add,HP,138215,Add,NONE,0,Add,700006,14,30,21750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,236,235503,DEF,10180,Add,HP,139850,Add,NONE,0,Add,700006,14,30,21800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,237,237592,DEF,10244,Add,HP,141485,Add,NONE,0,Add,700006,14,30,21850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,238,239681,DEF,10308,Add,HP,143120,Add,NONE,0,Add,700006,14,30,21900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,239,241770,DEF,10372,Add,HP,144755,Add,NONE,0,Add,700006,14,30,21950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,240,243859,DEF,10436,Add,HP,146390,Add,NONE,0,Add,700006,14,30,22000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,241,245948,DEF,10500,Add,HP,148025,Add,NONE,0,Add,700006,14,30,22050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,242,248037,DEF,10564,Add,HP,149660,Add,NONE,0,Add,700006,14,30,22100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,243,250126,DEF,10628,Add,HP,151295,Add,NONE,0,Add,700006,14,30,22150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,244,252215,DEF,10692,Add,HP,152930,Add,NONE,0,Add,700006,14,30,22200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,245,254304,DEF,10756,Add,HP,154565,Add,NONE,0,Add,700006,14,30,22250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,246,256393,DEF,10820,Add,HP,156200,Add,NONE,0,Add,700006,14,30,22300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,247,258482,DEF,10884,Add,HP,157835,Add,NONE,0,Add,700006,14,30,22350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,248,260571,DEF,10948,Add,HP,159470,Add,NONE,0,Add,700006,14,30,22400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,249,262660,DEF,11012,Add,HP,161105,Add,NONE,0,Add,700006,14,30,22450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,250,264749,DEF,11076,Add,HP,162740,Add,NONE,0,Add,700006,14,30,22500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,251,267124,DEF,11155,Add,HP,164506,Add,NONE,0,Add,700006,14,30,22550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,252,269500,DEF,11234,Add,HP,166272,Add,NONE,0,Add,700006,14,30,22600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,253,271876,DEF,11313,Add,HP,168038,Add,NONE,0,Add,700006,14,30,22650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,254,274251,DEF,11392,Add,HP,169804,Add,NONE,0,Add,700006,14,30,22700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,255,276627,DEF,11471,Add,HP,171570,Add,NONE,0,Add,700006,14,30,22750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,256,279002,DEF,11550,Add,HP,173336,Add,NONE,0,Add,700006,14,30,22800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,257,281378,DEF,11629,Add,HP,175102,Add,NONE,0,Add,700006,14,30,22850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,258,283753,DEF,11708,Add,HP,176868,Add,NONE,0,Add,700006,14,30,22900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,259,286129,DEF,11787,Add,HP,178634,Add,NONE,0,Add,700006,14,30,22950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,260,288504,DEF,11866,Add,HP,180400,Add,NONE,0,Add,700006,14,30,23000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,261,290880,DEF,11945,Add,HP,182166,Add,NONE,0,Add,700006,14,30,23050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,262,293256,DEF,12024,Add,HP,183932,Add,NONE,0,Add,700006,14,30,23100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,263,295631,DEF,12103,Add,HP,185698,Add,NONE,0,Add,700006,14,30,23150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,264,298007,DEF,12182,Add,HP,187464,Add,NONE,0,Add,700006,14,30,23200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,265,300382,DEF,12261,Add,HP,189230,Add,NONE,0,Add,700006,14,30,23250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,266,302758,DEF,12340,Add,HP,190996,Add,NONE,0,Add,700006,14,30,23300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,267,305133,DEF,12419,Add,HP,192762,Add,NONE,0,Add,700006,14,30,23350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,268,307509,DEF,12498,Add,HP,194528,Add,NONE,0,Add,700006,14,30,23400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,269,309884,DEF,12577,Add,HP,196294,Add,NONE,0,Add,700006,14,30,23450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,270,312260,DEF,12656,Add,HP,198060,Add,NONE,0,Add,700006,14,30,23500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,271,314636,DEF,12735,Add,HP,199826,Add,NONE,0,Add,700006,14,30,23550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,272,317011,DEF,12814,Add,HP,201592,Add,NONE,0,Add,700006,14,30,23600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,273,319387,DEF,12893,Add,HP,203358,Add,NONE,0,Add,700006,14,30,23650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,274,321762,DEF,12972,Add,HP,205124,Add,NONE,0,Add,700006,14,30,23700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,275,324138,DEF,13051,Add,HP,206890,Add,NONE,0,Add,700006,14,30,23750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,276,326513,DEF,13130,Add,HP,208656,Add,NONE,0,Add,700006,14,30,23800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,277,328889,DEF,13209,Add,HP,210422,Add,NONE,0,Add,700006,14,30,23850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,278,331264,DEF,13288,Add,HP,212188,Add,NONE,0,Add,700006,14,30,23900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,279,333640,DEF,13367,Add,HP,213954,Add,NONE,0,Add,700006,14,30,23950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,280,336016,DEF,13446,Add,HP,215720,Add,NONE,0,Add,700006,14,30,24000,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,281,338391,DEF,13525,Add,HP,217486,Add,NONE,0,Add,700006,14,30,24050,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,282,340767,DEF,13604,Add,HP,219252,Add,NONE,0,Add,700006,14,30,24100,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,283,343142,DEF,13683,Add,HP,221018,Add,NONE,0,Add,700006,14,30,24150,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,284,345518,DEF,13762,Add,HP,222784,Add,NONE,0,Add,700006,14,30,24200,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,285,347893,DEF,13841,Add,HP,224550,Add,NONE,0,Add,700006,14,30,24250,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,286,350269,DEF,13920,Add,HP,226316,Add,NONE,0,Add,700006,14,30,24300,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,287,352644,DEF,13999,Add,HP,228082,Add,NONE,0,Add,700006,14,30,24350,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,288,355020,DEF,14078,Add,HP,229848,Add,NONE,0,Add,700006,14,30,24400,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,289,357396,DEF,14157,Add,HP,231614,Add,NONE,0,Add,700006,14,30,24450,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,290,359771,DEF,14236,Add,HP,233380,Add,NONE,0,Add,700006,14,30,24500,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,291,362147,DEF,14315,Add,HP,235146,Add,NONE,0,Add,700006,14,30,24550,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,292,364522,DEF,14394,Add,HP,236912,Add,NONE,0,Add,700006,14,30,24600,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,293,366898,DEF,14473,Add,HP,238678,Add,NONE,0,Add,700006,14,30,24650,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,294,369273,DEF,14552,Add,HP,240444,Add,NONE,0,Add,700006,14,30,24700,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,295,371649,DEF,14631,Add,HP,242210,Add,NONE,0,Add,700006,14,30,24750,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,296,374024,DEF,14710,Add,HP,243976,Add,NONE,0,Add,700006,14,30,24800,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,297,376400,DEF,14789,Add,HP,245742,Add,NONE,0,Add,700006,14,30,24850,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,298,378776,DEF,14868,Add,HP,247508,Add,NONE,0,Add,700006,14,30,24900,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,299,381151,DEF,14947,Add,HP,249274,Add,NONE,0,Add,700006,14,30,24950,Add,NONE,Caster,20 +10024,WorldBoss Vampiric Rune,300,383527,DEF,15026,Add,HP,251040,Add,NONE,0,Add,700006,14,30,25000,Add,NONE,Caster,20 +10025,Adventure Stamina Rune,1,1508,HP,868,Add,HIT,300,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,2,1875,HP,1096,Add,HIT,369,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,3,2241,HP,1324,Add,HIT,438,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,4,2608,HP,1552,Add,HIT,507,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,5,2974,HP,1780,Add,HIT,576,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,6,3341,HP,2008,Add,HIT,645,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,7,3708,HP,2236,Add,HIT,714,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,8,4074,HP,2464,Add,HIT,783,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,9,4441,HP,2692,Add,HIT,852,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,10,4807,HP,2920,Add,HIT,921,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,11,5174,HP,3148,Add,HIT,990,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,12,5541,HP,3376,Add,HIT,1059,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,13,5907,HP,3604,Add,HIT,1128,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,14,6274,HP,3832,Add,HIT,1197,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,15,6640,HP,4060,Add,HIT,1266,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,16,7007,HP,4288,Add,HIT,1335,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,17,7374,HP,4516,Add,HIT,1404,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,18,7740,HP,4744,Add,HIT,1473,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,19,8107,HP,4972,Add,HIT,1542,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,20,8473,HP,5200,Add,HIT,1611,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,21,8840,HP,5428,Add,HIT,1680,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,22,9207,HP,5656,Add,HIT,1749,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,23,9573,HP,5884,Add,HIT,1818,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,24,9940,HP,6112,Add,HIT,1887,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,25,10306,HP,6340,Add,HIT,1956,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,26,10673,HP,6568,Add,HIT,2025,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,27,11040,HP,6796,Add,HIT,2094,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,28,11406,HP,7024,Add,HIT,2163,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,29,11773,HP,7252,Add,HIT,2232,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,30,12139,HP,7480,Add,HIT,2301,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,31,12506,HP,7708,Add,HIT,2370,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,32,12873,HP,7936,Add,HIT,2439,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,33,13239,HP,8164,Add,HIT,2508,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,34,13606,HP,8392,Add,HIT,2577,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,35,13972,HP,8620,Add,HIT,2646,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,36,14339,HP,8848,Add,HIT,2715,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,37,14706,HP,9076,Add,HIT,2784,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,38,15072,HP,9304,Add,HIT,2853,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,39,15439,HP,9532,Add,HIT,2922,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,40,15805,HP,9760,Add,HIT,2991,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,41,16172,HP,9988,Add,HIT,3060,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,42,16539,HP,10216,Add,HIT,3129,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,43,16905,HP,10444,Add,HIT,3198,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,44,17272,HP,10672,Add,HIT,3267,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,45,17638,HP,10900,Add,HIT,3336,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,46,18005,HP,11128,Add,HIT,3405,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,47,18372,HP,11356,Add,HIT,3474,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,48,18738,HP,11584,Add,HIT,3543,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,49,19105,HP,11812,Add,HIT,3612,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,50,19471,HP,12040,Add,HIT,3681,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,51,19964,HP,12281,Add,HIT,3789,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,52,20457,HP,12522,Add,HIT,3897,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,53,20950,HP,12763,Add,HIT,4005,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,54,21442,HP,13004,Add,HIT,4113,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,55,21935,HP,13245,Add,HIT,4221,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,56,22428,HP,13486,Add,HIT,4329,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,57,22920,HP,13727,Add,HIT,4437,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,58,23413,HP,13968,Add,HIT,4545,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,59,23906,HP,14209,Add,HIT,4653,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,60,24398,HP,14450,Add,HIT,4761,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,61,24891,HP,14691,Add,HIT,4869,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,62,25384,HP,14932,Add,HIT,4977,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,63,25877,HP,15173,Add,HIT,5085,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,64,26369,HP,15414,Add,HIT,5193,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,65,26862,HP,15655,Add,HIT,5301,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,66,27355,HP,15896,Add,HIT,5409,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,67,27847,HP,16137,Add,HIT,5517,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,68,28340,HP,16378,Add,HIT,5625,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,69,28833,HP,16619,Add,HIT,5733,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,70,29325,HP,16860,Add,HIT,5841,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,71,29818,HP,17101,Add,HIT,5949,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,72,30311,HP,17342,Add,HIT,6057,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,73,30804,HP,17583,Add,HIT,6165,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,74,31296,HP,17824,Add,HIT,6273,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,75,31789,HP,18065,Add,HIT,6381,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,76,32282,HP,18306,Add,HIT,6489,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,77,32774,HP,18547,Add,HIT,6597,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,78,33267,HP,18788,Add,HIT,6705,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,79,33760,HP,19029,Add,HIT,6813,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,80,34252,HP,19270,Add,HIT,6921,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,81,34745,HP,19511,Add,HIT,7029,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,82,35238,HP,19752,Add,HIT,7137,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,83,35731,HP,19993,Add,HIT,7245,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,84,36223,HP,20234,Add,HIT,7353,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,85,36716,HP,20475,Add,HIT,7461,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,86,37209,HP,20716,Add,HIT,7569,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,87,37701,HP,20957,Add,HIT,7677,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,88,38194,HP,21198,Add,HIT,7785,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,89,38687,HP,21439,Add,HIT,7893,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,90,39179,HP,21680,Add,HIT,8001,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,91,39672,HP,21921,Add,HIT,8109,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,92,40165,HP,22162,Add,HIT,8217,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,93,40658,HP,22403,Add,HIT,8325,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,94,41150,HP,22644,Add,HIT,8433,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,95,41643,HP,22885,Add,HIT,8541,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,96,42136,HP,23126,Add,HIT,8649,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,97,42628,HP,23367,Add,HIT,8757,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,98,43121,HP,23608,Add,HIT,8865,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,99,43614,HP,23849,Add,HIT,8973,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,100,44106,HP,24090,Add,HIT,9081,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,101,44720,HP,24396,Add,HIT,9214,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,102,45333,HP,24702,Add,HIT,9347,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,103,45946,HP,25008,Add,HIT,9480,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,104,46559,HP,25314,Add,HIT,9613,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,105,47172,HP,25620,Add,HIT,9746,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,106,47786,HP,25926,Add,HIT,9879,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,107,48399,HP,26232,Add,HIT,10012,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,108,49012,HP,26538,Add,HIT,10145,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,109,49625,HP,26844,Add,HIT,10278,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,110,50238,HP,27150,Add,HIT,10411,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,111,50852,HP,27456,Add,HIT,10544,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,112,51465,HP,27762,Add,HIT,10677,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,113,52078,HP,28068,Add,HIT,10810,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,114,52691,HP,28374,Add,HIT,10943,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,115,53304,HP,28680,Add,HIT,11076,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,116,53918,HP,28986,Add,HIT,11209,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,117,54531,HP,29292,Add,HIT,11342,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,118,55144,HP,29598,Add,HIT,11475,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,119,55757,HP,29904,Add,HIT,11608,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,120,56370,HP,30210,Add,HIT,11741,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,121,56984,HP,30516,Add,HIT,11874,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,122,57597,HP,30822,Add,HIT,12007,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,123,58210,HP,31128,Add,HIT,12140,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,124,58823,HP,31434,Add,HIT,12273,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,125,59436,HP,31740,Add,HIT,12406,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,126,60050,HP,32046,Add,HIT,12539,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,127,60663,HP,32352,Add,HIT,12672,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,128,61276,HP,32658,Add,HIT,12805,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,129,61889,HP,32964,Add,HIT,12938,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,130,62502,HP,33270,Add,HIT,13071,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,131,63116,HP,33576,Add,HIT,13204,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,132,63729,HP,33882,Add,HIT,13337,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,133,64342,HP,34188,Add,HIT,13470,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,134,64955,HP,34494,Add,HIT,13603,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,135,65568,HP,34800,Add,HIT,13736,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,136,66182,HP,35106,Add,HIT,13869,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,137,66795,HP,35412,Add,HIT,14002,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,138,67408,HP,35718,Add,HIT,14135,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,139,68021,HP,36024,Add,HIT,14268,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,140,68634,HP,36330,Add,HIT,14401,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,141,69248,HP,36636,Add,HIT,14534,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,142,69861,HP,36942,Add,HIT,14667,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,143,70474,HP,37248,Add,HIT,14800,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,144,71087,HP,37554,Add,HIT,14933,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,145,71700,HP,37860,Add,HIT,15066,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,146,72314,HP,38166,Add,HIT,15199,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,147,72927,HP,38472,Add,HIT,15332,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,148,73540,HP,38778,Add,HIT,15465,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,149,74153,HP,39084,Add,HIT,15598,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,150,74766,HP,39390,Add,HIT,15731,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,151,76397,HP,41025,Add,HIT,15893,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,152,78027,HP,42660,Add,HIT,16055,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,153,79658,HP,44295,Add,HIT,16217,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,154,81288,HP,45930,Add,HIT,16379,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,155,82919,HP,47565,Add,HIT,16541,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,156,84549,HP,49200,Add,HIT,16703,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,157,86180,HP,50835,Add,HIT,16865,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,158,87810,HP,52470,Add,HIT,17027,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,159,89441,HP,54105,Add,HIT,17189,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,160,91071,HP,55740,Add,HIT,17351,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,161,92702,HP,57375,Add,HIT,17513,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,162,94332,HP,59010,Add,HIT,17675,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,163,95963,HP,60645,Add,HIT,17837,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,164,97593,HP,62280,Add,HIT,17999,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,165,99224,HP,63915,Add,HIT,18161,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,166,100854,HP,65550,Add,HIT,18323,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,167,102485,HP,67185,Add,HIT,18485,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,168,104115,HP,68820,Add,HIT,18647,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,169,105746,HP,70455,Add,HIT,18809,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,170,107376,HP,72090,Add,HIT,18971,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,171,109007,HP,73725,Add,HIT,19133,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,172,110637,HP,75360,Add,HIT,19295,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,173,112268,HP,76995,Add,HIT,19457,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,174,113898,HP,78630,Add,HIT,19619,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,175,115529,HP,80265,Add,HIT,19781,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,176,117159,HP,81900,Add,HIT,19943,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,177,118790,HP,83535,Add,HIT,20105,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,178,120420,HP,85170,Add,HIT,20267,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,179,122051,HP,86805,Add,HIT,20429,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,180,123681,HP,88440,Add,HIT,20591,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,181,125312,HP,90075,Add,HIT,20753,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,182,126942,HP,91710,Add,HIT,20915,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,183,128573,HP,93345,Add,HIT,21077,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,184,130203,HP,94980,Add,HIT,21239,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,185,131834,HP,96615,Add,HIT,21401,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,186,133464,HP,98250,Add,HIT,21563,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,187,135095,HP,99885,Add,HIT,21725,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,188,136725,HP,101520,Add,HIT,21887,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,189,138356,HP,103155,Add,HIT,22049,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,190,139986,HP,104790,Add,HIT,22211,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,191,141617,HP,106425,Add,HIT,22373,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,192,143247,HP,108060,Add,HIT,22535,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,193,144878,HP,109695,Add,HIT,22697,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,194,146508,HP,111330,Add,HIT,22859,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,195,148139,HP,112965,Add,HIT,23021,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,196,149769,HP,114600,Add,HIT,23183,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,197,151400,HP,116235,Add,HIT,23345,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,198,153030,HP,117870,Add,HIT,23507,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,199,154661,HP,119505,Add,HIT,23669,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,200,156291,HP,121140,Add,HIT,23831,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,201,158519,HP,123593,Add,HIT,24001,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,202,160746,HP,126046,Add,HIT,24171,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,203,162973,HP,128499,Add,HIT,24341,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,204,165200,HP,130952,Add,HIT,24511,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,205,167427,HP,133405,Add,HIT,24681,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,206,169654,HP,135858,Add,HIT,24851,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,207,171881,HP,138311,Add,HIT,25021,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,208,174108,HP,140764,Add,HIT,25191,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,209,176335,HP,143217,Add,HIT,25361,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,210,178562,HP,145670,Add,HIT,25531,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,211,180790,HP,148123,Add,HIT,25701,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,212,183017,HP,150576,Add,HIT,25871,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,213,185244,HP,153029,Add,HIT,26041,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,214,187471,HP,155482,Add,HIT,26211,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,215,189698,HP,157935,Add,HIT,26381,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,216,191925,HP,160388,Add,HIT,26551,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,217,194152,HP,162841,Add,HIT,26721,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,218,196379,HP,165294,Add,HIT,26891,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,219,198606,HP,167747,Add,HIT,27061,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,220,200833,HP,170200,Add,HIT,27231,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,221,203061,HP,172653,Add,HIT,27401,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,222,205288,HP,175106,Add,HIT,27571,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,223,207515,HP,177559,Add,HIT,27741,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,224,209742,HP,180012,Add,HIT,27911,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,225,211969,HP,182465,Add,HIT,28081,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,226,214196,HP,184918,Add,HIT,28251,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,227,216423,HP,187371,Add,HIT,28421,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,228,218650,HP,189824,Add,HIT,28591,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,229,220877,HP,192277,Add,HIT,28761,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,230,223104,HP,194730,Add,HIT,28931,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,231,225332,HP,197183,Add,HIT,29101,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,232,227559,HP,199636,Add,HIT,29271,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,233,229786,HP,202089,Add,HIT,29441,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,234,232013,HP,204542,Add,HIT,29611,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,235,234240,HP,206995,Add,HIT,29781,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,236,236467,HP,209448,Add,HIT,29951,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,237,238694,HP,211901,Add,HIT,30121,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,238,240921,HP,214354,Add,HIT,30291,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,239,243148,HP,216807,Add,HIT,30461,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,240,245375,HP,219260,Add,HIT,30631,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,241,247603,HP,221713,Add,HIT,30801,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,242,249830,HP,224166,Add,HIT,30971,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,243,252057,HP,226619,Add,HIT,31141,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,244,254284,HP,229072,Add,HIT,31311,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,245,256511,HP,231525,Add,HIT,31481,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,246,258738,HP,233978,Add,HIT,31651,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,247,260965,HP,236431,Add,HIT,31821,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,248,263192,HP,238884,Add,HIT,31991,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,249,265419,HP,241337,Add,HIT,32161,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,250,267646,HP,243790,Add,HIT,32331,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,251,270050,HP,246440,Add,HIT,32514,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,252,272454,HP,249090,Add,HIT,32697,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,253,274858,HP,251740,Add,HIT,32880,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,254,277262,HP,254390,Add,HIT,33063,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,255,279666,HP,257040,Add,HIT,33246,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,256,282070,HP,259690,Add,HIT,33429,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,257,284474,HP,262340,Add,HIT,33612,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,258,286878,HP,264990,Add,HIT,33795,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,259,289282,HP,267640,Add,HIT,33978,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,260,291686,HP,270290,Add,HIT,34161,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,261,294090,HP,272940,Add,HIT,34344,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,262,296494,HP,275590,Add,HIT,34527,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,263,298898,HP,278240,Add,HIT,34710,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,264,301302,HP,280890,Add,HIT,34893,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,265,303706,HP,283540,Add,HIT,35076,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,266,306110,HP,286190,Add,HIT,35259,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,267,308514,HP,288840,Add,HIT,35442,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,268,310918,HP,291490,Add,HIT,35625,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,269,313322,HP,294140,Add,HIT,35808,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,270,315726,HP,296790,Add,HIT,35991,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,271,318130,HP,299440,Add,HIT,36174,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,272,320534,HP,302090,Add,HIT,36357,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,273,322938,HP,304740,Add,HIT,36540,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,274,325342,HP,307390,Add,HIT,36723,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,275,327746,HP,310040,Add,HIT,36906,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,276,330150,HP,312690,Add,HIT,37089,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,277,332554,HP,315340,Add,HIT,37272,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,278,334958,HP,317990,Add,HIT,37455,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,279,337362,HP,320640,Add,HIT,37638,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,280,339766,HP,323290,Add,HIT,37821,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,281,342170,HP,325940,Add,HIT,38004,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,282,344574,HP,328590,Add,HIT,38187,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,283,346978,HP,331240,Add,HIT,38370,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,284,349382,HP,333890,Add,HIT,38553,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,285,351786,HP,336540,Add,HIT,38736,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,286,354190,HP,339190,Add,HIT,38919,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,287,356594,HP,341840,Add,HIT,39102,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,288,358998,HP,344490,Add,HIT,39285,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,289,361402,HP,347140,Add,HIT,39468,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,290,363806,HP,349790,Add,HIT,39651,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,291,366210,HP,352440,Add,HIT,39834,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,292,368614,HP,355090,Add,HIT,40017,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,293,371018,HP,357740,Add,HIT,40200,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,294,373422,HP,360390,Add,HIT,40383,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,295,375826,HP,363040,Add,HIT,40566,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,296,378230,HP,365690,Add,HIT,40749,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,297,380634,HP,368340,Add,HIT,40932,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,298,383038,HP,370990,Add,HIT,41115,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,299,385442,HP,373640,Add,HIT,41298,Add,NONE,0,Add,,,,,,,, +10025,Adventure Stamina Rune,300,387846,HP,376290,Add,HIT,41481,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,1,1508,HP,868,Add,HIT,300,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,2,1875,HP,1096,Add,HIT,369,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,3,2241,HP,1324,Add,HIT,438,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,4,2608,HP,1552,Add,HIT,507,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,5,2974,HP,1780,Add,HIT,576,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,6,3341,HP,2008,Add,HIT,645,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,7,3708,HP,2236,Add,HIT,714,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,8,4074,HP,2464,Add,HIT,783,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,9,4441,HP,2692,Add,HIT,852,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,10,4807,HP,2920,Add,HIT,921,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,11,5174,HP,3148,Add,HIT,990,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,12,5541,HP,3376,Add,HIT,1059,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,13,5907,HP,3604,Add,HIT,1128,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,14,6274,HP,3832,Add,HIT,1197,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,15,6640,HP,4060,Add,HIT,1266,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,16,7007,HP,4288,Add,HIT,1335,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,17,7374,HP,4516,Add,HIT,1404,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,18,7740,HP,4744,Add,HIT,1473,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,19,8107,HP,4972,Add,HIT,1542,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,20,8473,HP,5200,Add,HIT,1611,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,21,8840,HP,5428,Add,HIT,1680,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,22,9207,HP,5656,Add,HIT,1749,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,23,9573,HP,5884,Add,HIT,1818,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,24,9940,HP,6112,Add,HIT,1887,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,25,10306,HP,6340,Add,HIT,1956,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,26,10673,HP,6568,Add,HIT,2025,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,27,11040,HP,6796,Add,HIT,2094,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,28,11406,HP,7024,Add,HIT,2163,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,29,11773,HP,7252,Add,HIT,2232,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,30,12139,HP,7480,Add,HIT,2301,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,31,12506,HP,7708,Add,HIT,2370,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,32,12873,HP,7936,Add,HIT,2439,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,33,13239,HP,8164,Add,HIT,2508,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,34,13606,HP,8392,Add,HIT,2577,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,35,13972,HP,8620,Add,HIT,2646,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,36,14339,HP,8848,Add,HIT,2715,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,37,14706,HP,9076,Add,HIT,2784,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,38,15072,HP,9304,Add,HIT,2853,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,39,15439,HP,9532,Add,HIT,2922,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,40,15805,HP,9760,Add,HIT,2991,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,41,16172,HP,9988,Add,HIT,3060,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,42,16539,HP,10216,Add,HIT,3129,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,43,16905,HP,10444,Add,HIT,3198,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,44,17272,HP,10672,Add,HIT,3267,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,45,17638,HP,10900,Add,HIT,3336,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,46,18005,HP,11128,Add,HIT,3405,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,47,18372,HP,11356,Add,HIT,3474,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,48,18738,HP,11584,Add,HIT,3543,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,49,19105,HP,11812,Add,HIT,3612,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,50,19471,HP,12040,Add,HIT,3681,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,51,19964,HP,12281,Add,HIT,3789,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,52,20457,HP,12522,Add,HIT,3897,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,53,20950,HP,12763,Add,HIT,4005,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,54,21442,HP,13004,Add,HIT,4113,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,55,21935,HP,13245,Add,HIT,4221,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,56,22428,HP,13486,Add,HIT,4329,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,57,22920,HP,13727,Add,HIT,4437,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,58,23413,HP,13968,Add,HIT,4545,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,59,23906,HP,14209,Add,HIT,4653,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,60,24398,HP,14450,Add,HIT,4761,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,61,24891,HP,14691,Add,HIT,4869,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,62,25384,HP,14932,Add,HIT,4977,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,63,25877,HP,15173,Add,HIT,5085,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,64,26369,HP,15414,Add,HIT,5193,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,65,26862,HP,15655,Add,HIT,5301,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,66,27355,HP,15896,Add,HIT,5409,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,67,27847,HP,16137,Add,HIT,5517,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,68,28340,HP,16378,Add,HIT,5625,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,69,28833,HP,16619,Add,HIT,5733,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,70,29325,HP,16860,Add,HIT,5841,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,71,29818,HP,17101,Add,HIT,5949,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,72,30311,HP,17342,Add,HIT,6057,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,73,30804,HP,17583,Add,HIT,6165,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,74,31296,HP,17824,Add,HIT,6273,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,75,31789,HP,18065,Add,HIT,6381,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,76,32282,HP,18306,Add,HIT,6489,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,77,32774,HP,18547,Add,HIT,6597,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,78,33267,HP,18788,Add,HIT,6705,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,79,33760,HP,19029,Add,HIT,6813,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,80,34252,HP,19270,Add,HIT,6921,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,81,34745,HP,19511,Add,HIT,7029,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,82,35238,HP,19752,Add,HIT,7137,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,83,35731,HP,19993,Add,HIT,7245,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,84,36223,HP,20234,Add,HIT,7353,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,85,36716,HP,20475,Add,HIT,7461,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,86,37209,HP,20716,Add,HIT,7569,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,87,37701,HP,20957,Add,HIT,7677,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,88,38194,HP,21198,Add,HIT,7785,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,89,38687,HP,21439,Add,HIT,7893,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,90,39179,HP,21680,Add,HIT,8001,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,91,39672,HP,21921,Add,HIT,8109,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,92,40165,HP,22162,Add,HIT,8217,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,93,40658,HP,22403,Add,HIT,8325,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,94,41150,HP,22644,Add,HIT,8433,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,95,41643,HP,22885,Add,HIT,8541,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,96,42136,HP,23126,Add,HIT,8649,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,97,42628,HP,23367,Add,HIT,8757,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,98,43121,HP,23608,Add,HIT,8865,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,99,43614,HP,23849,Add,HIT,8973,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,100,44106,HP,24090,Add,HIT,9081,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,101,44720,HP,24396,Add,HIT,9214,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,102,45333,HP,24702,Add,HIT,9347,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,103,45946,HP,25008,Add,HIT,9480,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,104,46559,HP,25314,Add,HIT,9613,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,105,47172,HP,25620,Add,HIT,9746,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,106,47786,HP,25926,Add,HIT,9879,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,107,48399,HP,26232,Add,HIT,10012,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,108,49012,HP,26538,Add,HIT,10145,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,109,49625,HP,26844,Add,HIT,10278,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,110,50238,HP,27150,Add,HIT,10411,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,111,50852,HP,27456,Add,HIT,10544,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,112,51465,HP,27762,Add,HIT,10677,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,113,52078,HP,28068,Add,HIT,10810,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,114,52691,HP,28374,Add,HIT,10943,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,115,53304,HP,28680,Add,HIT,11076,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,116,53918,HP,28986,Add,HIT,11209,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,117,54531,HP,29292,Add,HIT,11342,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,118,55144,HP,29598,Add,HIT,11475,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,119,55757,HP,29904,Add,HIT,11608,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,120,56370,HP,30210,Add,HIT,11741,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,121,56984,HP,30516,Add,HIT,11874,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,122,57597,HP,30822,Add,HIT,12007,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,123,58210,HP,31128,Add,HIT,12140,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,124,58823,HP,31434,Add,HIT,12273,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,125,59436,HP,31740,Add,HIT,12406,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,126,60050,HP,32046,Add,HIT,12539,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,127,60663,HP,32352,Add,HIT,12672,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,128,61276,HP,32658,Add,HIT,12805,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,129,61889,HP,32964,Add,HIT,12938,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,130,62502,HP,33270,Add,HIT,13071,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,131,63116,HP,33576,Add,HIT,13204,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,132,63729,HP,33882,Add,HIT,13337,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,133,64342,HP,34188,Add,HIT,13470,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,134,64955,HP,34494,Add,HIT,13603,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,135,65568,HP,34800,Add,HIT,13736,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,136,66182,HP,35106,Add,HIT,13869,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,137,66795,HP,35412,Add,HIT,14002,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,138,67408,HP,35718,Add,HIT,14135,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,139,68021,HP,36024,Add,HIT,14268,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,140,68634,HP,36330,Add,HIT,14401,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,141,69248,HP,36636,Add,HIT,14534,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,142,69861,HP,36942,Add,HIT,14667,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,143,70474,HP,37248,Add,HIT,14800,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,144,71087,HP,37554,Add,HIT,14933,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,145,71700,HP,37860,Add,HIT,15066,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,146,72314,HP,38166,Add,HIT,15199,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,147,72927,HP,38472,Add,HIT,15332,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,148,73540,HP,38778,Add,HIT,15465,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,149,74153,HP,39084,Add,HIT,15598,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,150,74766,HP,39390,Add,HIT,15731,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,151,76397,HP,41025,Add,HIT,15893,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,152,78027,HP,42660,Add,HIT,16055,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,153,79658,HP,44295,Add,HIT,16217,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,154,81288,HP,45930,Add,HIT,16379,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,155,82919,HP,47565,Add,HIT,16541,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,156,84549,HP,49200,Add,HIT,16703,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,157,86180,HP,50835,Add,HIT,16865,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,158,87810,HP,52470,Add,HIT,17027,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,159,89441,HP,54105,Add,HIT,17189,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,160,91071,HP,55740,Add,HIT,17351,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,161,92702,HP,57375,Add,HIT,17513,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,162,94332,HP,59010,Add,HIT,17675,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,163,95963,HP,60645,Add,HIT,17837,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,164,97593,HP,62280,Add,HIT,17999,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,165,99224,HP,63915,Add,HIT,18161,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,166,100854,HP,65550,Add,HIT,18323,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,167,102485,HP,67185,Add,HIT,18485,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,168,104115,HP,68820,Add,HIT,18647,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,169,105746,HP,70455,Add,HIT,18809,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,170,107376,HP,72090,Add,HIT,18971,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,171,109007,HP,73725,Add,HIT,19133,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,172,110637,HP,75360,Add,HIT,19295,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,173,112268,HP,76995,Add,HIT,19457,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,174,113898,HP,78630,Add,HIT,19619,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,175,115529,HP,80265,Add,HIT,19781,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,176,117159,HP,81900,Add,HIT,19943,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,177,118790,HP,83535,Add,HIT,20105,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,178,120420,HP,85170,Add,HIT,20267,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,179,122051,HP,86805,Add,HIT,20429,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,180,123681,HP,88440,Add,HIT,20591,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,181,125312,HP,90075,Add,HIT,20753,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,182,126942,HP,91710,Add,HIT,20915,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,183,128573,HP,93345,Add,HIT,21077,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,184,130203,HP,94980,Add,HIT,21239,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,185,131834,HP,96615,Add,HIT,21401,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,186,133464,HP,98250,Add,HIT,21563,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,187,135095,HP,99885,Add,HIT,21725,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,188,136725,HP,101520,Add,HIT,21887,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,189,138356,HP,103155,Add,HIT,22049,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,190,139986,HP,104790,Add,HIT,22211,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,191,141617,HP,106425,Add,HIT,22373,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,192,143247,HP,108060,Add,HIT,22535,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,193,144878,HP,109695,Add,HIT,22697,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,194,146508,HP,111330,Add,HIT,22859,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,195,148139,HP,112965,Add,HIT,23021,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,196,149769,HP,114600,Add,HIT,23183,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,197,151400,HP,116235,Add,HIT,23345,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,198,153030,HP,117870,Add,HIT,23507,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,199,154661,HP,119505,Add,HIT,23669,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,200,156291,HP,121140,Add,HIT,23831,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,201,158519,HP,123593,Add,HIT,24001,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,202,160746,HP,126046,Add,HIT,24171,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,203,162973,HP,128499,Add,HIT,24341,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,204,165200,HP,130952,Add,HIT,24511,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,205,167427,HP,133405,Add,HIT,24681,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,206,169654,HP,135858,Add,HIT,24851,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,207,171881,HP,138311,Add,HIT,25021,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,208,174108,HP,140764,Add,HIT,25191,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,209,176335,HP,143217,Add,HIT,25361,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,210,178562,HP,145670,Add,HIT,25531,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,211,180790,HP,148123,Add,HIT,25701,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,212,183017,HP,150576,Add,HIT,25871,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,213,185244,HP,153029,Add,HIT,26041,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,214,187471,HP,155482,Add,HIT,26211,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,215,189698,HP,157935,Add,HIT,26381,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,216,191925,HP,160388,Add,HIT,26551,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,217,194152,HP,162841,Add,HIT,26721,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,218,196379,HP,165294,Add,HIT,26891,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,219,198606,HP,167747,Add,HIT,27061,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,220,200833,HP,170200,Add,HIT,27231,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,221,203061,HP,172653,Add,HIT,27401,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,222,205288,HP,175106,Add,HIT,27571,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,223,207515,HP,177559,Add,HIT,27741,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,224,209742,HP,180012,Add,HIT,27911,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,225,211969,HP,182465,Add,HIT,28081,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,226,214196,HP,184918,Add,HIT,28251,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,227,216423,HP,187371,Add,HIT,28421,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,228,218650,HP,189824,Add,HIT,28591,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,229,220877,HP,192277,Add,HIT,28761,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,230,223104,HP,194730,Add,HIT,28931,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,231,225332,HP,197183,Add,HIT,29101,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,232,227559,HP,199636,Add,HIT,29271,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,233,229786,HP,202089,Add,HIT,29441,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,234,232013,HP,204542,Add,HIT,29611,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,235,234240,HP,206995,Add,HIT,29781,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,236,236467,HP,209448,Add,HIT,29951,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,237,238694,HP,211901,Add,HIT,30121,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,238,240921,HP,214354,Add,HIT,30291,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,239,243148,HP,216807,Add,HIT,30461,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,240,245375,HP,219260,Add,HIT,30631,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,241,247603,HP,221713,Add,HIT,30801,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,242,249830,HP,224166,Add,HIT,30971,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,243,252057,HP,226619,Add,HIT,31141,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,244,254284,HP,229072,Add,HIT,31311,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,245,256511,HP,231525,Add,HIT,31481,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,246,258738,HP,233978,Add,HIT,31651,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,247,260965,HP,236431,Add,HIT,31821,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,248,263192,HP,238884,Add,HIT,31991,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,249,265419,HP,241337,Add,HIT,32161,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,250,267646,HP,243790,Add,HIT,32331,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,251,270050,HP,246440,Add,HIT,32514,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,252,272454,HP,249090,Add,HIT,32697,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,253,274858,HP,251740,Add,HIT,32880,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,254,277262,HP,254390,Add,HIT,33063,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,255,279666,HP,257040,Add,HIT,33246,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,256,282070,HP,259690,Add,HIT,33429,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,257,284474,HP,262340,Add,HIT,33612,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,258,286878,HP,264990,Add,HIT,33795,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,259,289282,HP,267640,Add,HIT,33978,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,260,291686,HP,270290,Add,HIT,34161,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,261,294090,HP,272940,Add,HIT,34344,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,262,296494,HP,275590,Add,HIT,34527,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,263,298898,HP,278240,Add,HIT,34710,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,264,301302,HP,280890,Add,HIT,34893,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,265,303706,HP,283540,Add,HIT,35076,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,266,306110,HP,286190,Add,HIT,35259,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,267,308514,HP,288840,Add,HIT,35442,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,268,310918,HP,291490,Add,HIT,35625,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,269,313322,HP,294140,Add,HIT,35808,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,270,315726,HP,296790,Add,HIT,35991,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,271,318130,HP,299440,Add,HIT,36174,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,272,320534,HP,302090,Add,HIT,36357,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,273,322938,HP,304740,Add,HIT,36540,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,274,325342,HP,307390,Add,HIT,36723,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,275,327746,HP,310040,Add,HIT,36906,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,276,330150,HP,312690,Add,HIT,37089,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,277,332554,HP,315340,Add,HIT,37272,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,278,334958,HP,317990,Add,HIT,37455,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,279,337362,HP,320640,Add,HIT,37638,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,280,339766,HP,323290,Add,HIT,37821,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,281,342170,HP,325940,Add,HIT,38004,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,282,344574,HP,328590,Add,HIT,38187,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,283,346978,HP,331240,Add,HIT,38370,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,284,349382,HP,333890,Add,HIT,38553,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,285,351786,HP,336540,Add,HIT,38736,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,286,354190,HP,339190,Add,HIT,38919,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,287,356594,HP,341840,Add,HIT,39102,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,288,358998,HP,344490,Add,HIT,39285,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,289,361402,HP,347140,Add,HIT,39468,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,290,363806,HP,349790,Add,HIT,39651,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,291,366210,HP,352440,Add,HIT,39834,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,292,368614,HP,355090,Add,HIT,40017,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,293,371018,HP,357740,Add,HIT,40200,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,294,373422,HP,360390,Add,HIT,40383,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,295,375826,HP,363040,Add,HIT,40566,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,296,378230,HP,365690,Add,HIT,40749,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,297,380634,HP,368340,Add,HIT,40932,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,298,383038,HP,370990,Add,HIT,41115,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,299,385442,HP,373640,Add,HIT,41298,Add,NONE,0,Add,,,,,,,, +10026,Arena Stamina Rune,300,387846,HP,376290,Add,HIT,41481,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,1,2666,ATK,226,Add,SPD,127,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,2,2993,ATK,253,Add,SPD,146,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,3,3320,ATK,280,Add,SPD,165,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,4,3647,ATK,307,Add,SPD,184,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,5,3974,ATK,334,Add,SPD,203,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,6,4302,ATK,361,Add,SPD,222,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,7,4629,ATK,388,Add,SPD,241,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,8,4956,ATK,415,Add,SPD,260,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,9,5283,ATK,442,Add,SPD,279,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,10,5610,ATK,469,Add,SPD,298,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,11,5938,ATK,496,Add,SPD,317,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,12,6265,ATK,523,Add,SPD,336,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,13,6592,ATK,550,Add,SPD,355,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,14,6919,ATK,577,Add,SPD,374,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,15,7246,ATK,604,Add,SPD,393,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,16,7574,ATK,631,Add,SPD,412,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,17,7901,ATK,658,Add,SPD,431,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,18,8228,ATK,685,Add,SPD,450,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,19,8555,ATK,712,Add,SPD,469,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,20,8882,ATK,739,Add,SPD,488,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,21,9210,ATK,766,Add,SPD,507,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,22,9537,ATK,793,Add,SPD,526,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,23,9864,ATK,820,Add,SPD,545,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,24,10191,ATK,847,Add,SPD,564,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,25,10518,ATK,874,Add,SPD,583,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,26,10846,ATK,901,Add,SPD,602,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,27,11173,ATK,928,Add,SPD,621,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,28,11500,ATK,955,Add,SPD,640,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,29,11827,ATK,982,Add,SPD,659,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,30,12154,ATK,1009,Add,SPD,678,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,31,12482,ATK,1036,Add,SPD,697,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,32,12809,ATK,1063,Add,SPD,716,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,33,13136,ATK,1090,Add,SPD,735,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,34,13463,ATK,1117,Add,SPD,754,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,35,13790,ATK,1144,Add,SPD,773,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,36,14118,ATK,1171,Add,SPD,792,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,37,14445,ATK,1198,Add,SPD,811,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,38,14772,ATK,1225,Add,SPD,830,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,39,15099,ATK,1252,Add,SPD,849,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,40,15426,ATK,1279,Add,SPD,868,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,41,15754,ATK,1306,Add,SPD,887,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,42,16081,ATK,1333,Add,SPD,906,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,43,16408,ATK,1360,Add,SPD,925,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,44,16735,ATK,1387,Add,SPD,944,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,45,17062,ATK,1414,Add,SPD,963,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,46,17390,ATK,1441,Add,SPD,982,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,47,17717,ATK,1468,Add,SPD,1001,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,48,18044,ATK,1495,Add,SPD,1020,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,49,18371,ATK,1522,Add,SPD,1039,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,50,18698,ATK,1549,Add,SPD,1058,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,51,19207,ATK,1588,Add,SPD,1101,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,52,19715,ATK,1627,Add,SPD,1144,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,53,20224,ATK,1666,Add,SPD,1187,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,54,20732,ATK,1705,Add,SPD,1230,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,55,21240,ATK,1744,Add,SPD,1273,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,56,21749,ATK,1783,Add,SPD,1316,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,57,22257,ATK,1822,Add,SPD,1359,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,58,22766,ATK,1861,Add,SPD,1402,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,59,23274,ATK,1900,Add,SPD,1445,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,60,23782,ATK,1939,Add,SPD,1488,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,61,24291,ATK,1978,Add,SPD,1531,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,62,24799,ATK,2017,Add,SPD,1574,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,63,25308,ATK,2056,Add,SPD,1617,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,64,25816,ATK,2095,Add,SPD,1660,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,65,26324,ATK,2134,Add,SPD,1703,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,66,26833,ATK,2173,Add,SPD,1746,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,67,27341,ATK,2212,Add,SPD,1789,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,68,27850,ATK,2251,Add,SPD,1832,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,69,28358,ATK,2290,Add,SPD,1875,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,70,28866,ATK,2329,Add,SPD,1918,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,71,29375,ATK,2368,Add,SPD,1961,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,72,29883,ATK,2407,Add,SPD,2004,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,73,30392,ATK,2446,Add,SPD,2047,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,74,30900,ATK,2485,Add,SPD,2090,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,75,31408,ATK,2524,Add,SPD,2133,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,76,31917,ATK,2563,Add,SPD,2176,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,77,32425,ATK,2602,Add,SPD,2219,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,78,32934,ATK,2641,Add,SPD,2262,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,79,33442,ATK,2680,Add,SPD,2305,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,80,33950,ATK,2719,Add,SPD,2348,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,81,34459,ATK,2758,Add,SPD,2391,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,82,34967,ATK,2797,Add,SPD,2434,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,83,35476,ATK,2836,Add,SPD,2477,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,84,35984,ATK,2875,Add,SPD,2520,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,85,36492,ATK,2914,Add,SPD,2563,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,86,37001,ATK,2953,Add,SPD,2606,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,87,37509,ATK,2992,Add,SPD,2649,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,88,38018,ATK,3031,Add,SPD,2692,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,89,38526,ATK,3070,Add,SPD,2735,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,90,39034,ATK,3109,Add,SPD,2778,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,91,39543,ATK,3148,Add,SPD,2821,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,92,40051,ATK,3187,Add,SPD,2864,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,93,40560,ATK,3226,Add,SPD,2907,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,94,41068,ATK,3265,Add,SPD,2950,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,95,41576,ATK,3304,Add,SPD,2993,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,96,42085,ATK,3343,Add,SPD,3036,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,97,42593,ATK,3382,Add,SPD,3079,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,98,43102,ATK,3421,Add,SPD,3122,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,99,43610,ATK,3460,Add,SPD,3165,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,100,44118,ATK,3499,Add,SPD,3208,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,101,44895,ATK,3562,Add,SPD,3258,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,102,45671,ATK,3625,Add,SPD,3308,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,103,46448,ATK,3688,Add,SPD,3358,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,104,47224,ATK,3751,Add,SPD,3408,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,105,48001,ATK,3814,Add,SPD,3458,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,106,48777,ATK,3877,Add,SPD,3508,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,107,49554,ATK,3940,Add,SPD,3558,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,108,50330,ATK,4003,Add,SPD,3608,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,109,51107,ATK,4066,Add,SPD,3658,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,110,51883,ATK,4129,Add,SPD,3708,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,111,52660,ATK,4192,Add,SPD,3758,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,112,53436,ATK,4255,Add,SPD,3808,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,113,54213,ATK,4318,Add,SPD,3858,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,114,54989,ATK,4381,Add,SPD,3908,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,115,55766,ATK,4444,Add,SPD,3958,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,116,56542,ATK,4507,Add,SPD,4008,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,117,57319,ATK,4570,Add,SPD,4058,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,118,58095,ATK,4633,Add,SPD,4108,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,119,58872,ATK,4696,Add,SPD,4158,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,120,59648,ATK,4759,Add,SPD,4208,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,121,60425,ATK,4822,Add,SPD,4258,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,122,61201,ATK,4885,Add,SPD,4308,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,123,61978,ATK,4948,Add,SPD,4358,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,124,62754,ATK,5011,Add,SPD,4408,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,125,63531,ATK,5074,Add,SPD,4458,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,126,64307,ATK,5137,Add,SPD,4508,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,127,65084,ATK,5200,Add,SPD,4558,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,128,65860,ATK,5263,Add,SPD,4608,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,129,66637,ATK,5326,Add,SPD,4658,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,130,67413,ATK,5389,Add,SPD,4708,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,131,68190,ATK,5452,Add,SPD,4758,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,132,68966,ATK,5515,Add,SPD,4808,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,133,69743,ATK,5578,Add,SPD,4858,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,134,70519,ATK,5641,Add,SPD,4908,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,135,71296,ATK,5704,Add,SPD,4958,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,136,72072,ATK,5767,Add,SPD,5008,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,137,72849,ATK,5830,Add,SPD,5058,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,138,73625,ATK,5893,Add,SPD,5108,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,139,74402,ATK,5956,Add,SPD,5158,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,140,75178,ATK,6019,Add,SPD,5208,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,141,75955,ATK,6082,Add,SPD,5258,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,142,76731,ATK,6145,Add,SPD,5308,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,143,77508,ATK,6208,Add,SPD,5358,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,144,78284,ATK,6271,Add,SPD,5408,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,145,79061,ATK,6334,Add,SPD,5458,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,146,79837,ATK,6397,Add,SPD,5508,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,147,80614,ATK,6460,Add,SPD,5558,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,148,81390,ATK,6523,Add,SPD,5608,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,149,82167,ATK,6586,Add,SPD,5658,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,150,82943,ATK,6649,Add,SPD,5708,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,151,84148,ATK,6748,Add,SPD,5780,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,152,85354,ATK,6847,Add,SPD,5852,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,153,86559,ATK,6946,Add,SPD,5924,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,154,87764,ATK,7045,Add,SPD,5996,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,155,88969,ATK,7144,Add,SPD,6068,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,156,90174,ATK,7243,Add,SPD,6140,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,157,91379,ATK,7342,Add,SPD,6212,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,158,92584,ATK,7441,Add,SPD,6284,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,159,93789,ATK,7540,Add,SPD,6356,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,160,94994,ATK,7639,Add,SPD,6428,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,161,96199,ATK,7738,Add,SPD,6500,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,162,97405,ATK,7837,Add,SPD,6572,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,163,98610,ATK,7936,Add,SPD,6644,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,164,99815,ATK,8035,Add,SPD,6716,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,165,101020,ATK,8134,Add,SPD,6788,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,166,102225,ATK,8233,Add,SPD,6860,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,167,103430,ATK,8332,Add,SPD,6932,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,168,104635,ATK,8431,Add,SPD,7004,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,169,105840,ATK,8530,Add,SPD,7076,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,170,107045,ATK,8629,Add,SPD,7148,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,171,108250,ATK,8728,Add,SPD,7220,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,172,109456,ATK,8827,Add,SPD,7292,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,173,110661,ATK,8926,Add,SPD,7364,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,174,111866,ATK,9025,Add,SPD,7436,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,175,113071,ATK,9124,Add,SPD,7508,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,176,114276,ATK,9223,Add,SPD,7580,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,177,115481,ATK,9322,Add,SPD,7652,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,178,116686,ATK,9421,Add,SPD,7724,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,179,117891,ATK,9520,Add,SPD,7796,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,180,119096,ATK,9619,Add,SPD,7868,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,181,120301,ATK,9718,Add,SPD,7940,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,182,121507,ATK,9817,Add,SPD,8012,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,183,122712,ATK,9916,Add,SPD,8084,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,184,123917,ATK,10015,Add,SPD,8156,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,185,125122,ATK,10114,Add,SPD,8228,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,186,126327,ATK,10213,Add,SPD,8300,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,187,127532,ATK,10312,Add,SPD,8372,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,188,128737,ATK,10411,Add,SPD,8444,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,189,129942,ATK,10510,Add,SPD,8516,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,190,131147,ATK,10609,Add,SPD,8588,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,191,132352,ATK,10708,Add,SPD,8660,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,192,133558,ATK,10807,Add,SPD,8732,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,193,134763,ATK,10906,Add,SPD,8804,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,194,135968,ATK,11005,Add,SPD,8876,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,195,137173,ATK,11104,Add,SPD,8948,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,196,138378,ATK,11203,Add,SPD,9020,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,197,139583,ATK,11302,Add,SPD,9092,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,198,140788,ATK,11401,Add,SPD,9164,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,199,141993,ATK,11500,Add,SPD,9236,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,200,143198,ATK,11599,Add,SPD,9308,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,201,144727,ATK,11719,Add,SPD,9425,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,202,146257,ATK,11839,Add,SPD,9542,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,203,147786,ATK,11959,Add,SPD,9659,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,204,149315,ATK,12079,Add,SPD,9776,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,205,150844,ATK,12199,Add,SPD,9893,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,206,152373,ATK,12319,Add,SPD,10010,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,207,153902,ATK,12439,Add,SPD,10127,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,208,155431,ATK,12559,Add,SPD,10244,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,209,156960,ATK,12679,Add,SPD,10361,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,210,158489,ATK,12799,Add,SPD,10478,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,211,160018,ATK,12919,Add,SPD,10595,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,212,161548,ATK,13039,Add,SPD,10712,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,213,163077,ATK,13159,Add,SPD,10829,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,214,164606,ATK,13279,Add,SPD,10946,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,215,166135,ATK,13399,Add,SPD,11063,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,216,167664,ATK,13519,Add,SPD,11180,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,217,169193,ATK,13639,Add,SPD,11297,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,218,170722,ATK,13759,Add,SPD,11414,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,219,172251,ATK,13879,Add,SPD,11531,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,220,173780,ATK,13999,Add,SPD,11648,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,221,175309,ATK,14119,Add,SPD,11765,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,222,176839,ATK,14239,Add,SPD,11882,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,223,178368,ATK,14359,Add,SPD,11999,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,224,179897,ATK,14479,Add,SPD,12116,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,225,181426,ATK,14599,Add,SPD,12233,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,226,182955,ATK,14719,Add,SPD,12350,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,227,184484,ATK,14839,Add,SPD,12467,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,228,186013,ATK,14959,Add,SPD,12584,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,229,187542,ATK,15079,Add,SPD,12701,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,230,189071,ATK,15199,Add,SPD,12818,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,231,190600,ATK,15319,Add,SPD,12935,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,232,192130,ATK,15439,Add,SPD,13052,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,233,193659,ATK,15559,Add,SPD,13169,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,234,195188,ATK,15679,Add,SPD,13286,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,235,196717,ATK,15799,Add,SPD,13403,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,236,198246,ATK,15919,Add,SPD,13520,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,237,199775,ATK,16039,Add,SPD,13637,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,238,201304,ATK,16159,Add,SPD,13754,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,239,202833,ATK,16279,Add,SPD,13871,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,240,204362,ATK,16399,Add,SPD,13988,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,241,205891,ATK,16519,Add,SPD,14105,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,242,207421,ATK,16639,Add,SPD,14222,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,243,208950,ATK,16759,Add,SPD,14339,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,244,210479,ATK,16879,Add,SPD,14456,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,245,212008,ATK,16999,Add,SPD,14573,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,246,213537,ATK,17119,Add,SPD,14690,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,247,215066,ATK,17239,Add,SPD,14807,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,248,216595,ATK,17359,Add,SPD,14924,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,249,218124,ATK,17479,Add,SPD,15041,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,250,219653,ATK,17599,Add,SPD,15158,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,251,221890,ATK,17777,Add,SPD,15318,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,252,224127,ATK,17955,Add,SPD,15478,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,253,226364,ATK,18133,Add,SPD,15638,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,254,228601,ATK,18311,Add,SPD,15798,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,255,230838,ATK,18489,Add,SPD,15958,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,256,233075,ATK,18667,Add,SPD,16118,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,257,235312,ATK,18845,Add,SPD,16278,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,258,237549,ATK,19023,Add,SPD,16438,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,259,239786,ATK,19201,Add,SPD,16598,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,260,242023,ATK,19379,Add,SPD,16758,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,261,244260,ATK,19557,Add,SPD,16918,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,262,246497,ATK,19735,Add,SPD,17078,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,263,248734,ATK,19913,Add,SPD,17238,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,264,250971,ATK,20091,Add,SPD,17398,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,265,253208,ATK,20269,Add,SPD,17558,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,266,255445,ATK,20447,Add,SPD,17718,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,267,257682,ATK,20625,Add,SPD,17878,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,268,259919,ATK,20803,Add,SPD,18038,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,269,262156,ATK,20981,Add,SPD,18198,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,270,264393,ATK,21159,Add,SPD,18358,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,271,266630,ATK,21337,Add,SPD,18518,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,272,268867,ATK,21515,Add,SPD,18678,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,273,271104,ATK,21693,Add,SPD,18838,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,274,273341,ATK,21871,Add,SPD,18998,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,275,275578,ATK,22049,Add,SPD,19158,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,276,277815,ATK,22227,Add,SPD,19318,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,277,280052,ATK,22405,Add,SPD,19478,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,278,282289,ATK,22583,Add,SPD,19638,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,279,284526,ATK,22761,Add,SPD,19798,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,280,286763,ATK,22939,Add,SPD,19958,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,281,289000,ATK,23117,Add,SPD,20118,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,282,291237,ATK,23295,Add,SPD,20278,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,283,293474,ATK,23473,Add,SPD,20438,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,284,295711,ATK,23651,Add,SPD,20598,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,285,297948,ATK,23829,Add,SPD,20758,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,286,300185,ATK,24007,Add,SPD,20918,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,287,302422,ATK,24185,Add,SPD,21078,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,288,304659,ATK,24363,Add,SPD,21238,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,289,306896,ATK,24541,Add,SPD,21398,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,290,309133,ATK,24719,Add,SPD,21558,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,291,311370,ATK,24897,Add,SPD,21718,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,292,313607,ATK,25075,Add,SPD,21878,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,293,315844,ATK,25253,Add,SPD,22038,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,294,318081,ATK,25431,Add,SPD,22198,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,295,320318,ATK,25609,Add,SPD,22358,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,296,322555,ATK,25787,Add,SPD,22518,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,297,324792,ATK,25965,Add,SPD,22678,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,298,327029,ATK,26143,Add,SPD,22838,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,299,329266,ATK,26321,Add,SPD,22998,Add,NONE,0,Add,,,,,,,, +10027,Arena Quick Rune,300,331503,ATK,26499,Add,SPD,23158,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,1,2666,ATK,226,Add,SPD,127,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,2,2993,ATK,253,Add,SPD,146,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,3,3320,ATK,280,Add,SPD,165,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,4,3647,ATK,307,Add,SPD,184,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,5,3974,ATK,334,Add,SPD,203,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,6,4302,ATK,361,Add,SPD,222,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,7,4629,ATK,388,Add,SPD,241,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,8,4956,ATK,415,Add,SPD,260,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,9,5283,ATK,442,Add,SPD,279,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,10,5610,ATK,469,Add,SPD,298,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,11,5938,ATK,496,Add,SPD,317,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,12,6265,ATK,523,Add,SPD,336,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,13,6592,ATK,550,Add,SPD,355,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,14,6919,ATK,577,Add,SPD,374,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,15,7246,ATK,604,Add,SPD,393,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,16,7574,ATK,631,Add,SPD,412,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,17,7901,ATK,658,Add,SPD,431,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,18,8228,ATK,685,Add,SPD,450,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,19,8555,ATK,712,Add,SPD,469,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,20,8882,ATK,739,Add,SPD,488,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,21,9210,ATK,766,Add,SPD,507,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,22,9537,ATK,793,Add,SPD,526,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,23,9864,ATK,820,Add,SPD,545,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,24,10191,ATK,847,Add,SPD,564,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,25,10518,ATK,874,Add,SPD,583,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,26,10846,ATK,901,Add,SPD,602,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,27,11173,ATK,928,Add,SPD,621,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,28,11500,ATK,955,Add,SPD,640,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,29,11827,ATK,982,Add,SPD,659,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,30,12154,ATK,1009,Add,SPD,678,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,31,12482,ATK,1036,Add,SPD,697,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,32,12809,ATK,1063,Add,SPD,716,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,33,13136,ATK,1090,Add,SPD,735,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,34,13463,ATK,1117,Add,SPD,754,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,35,13790,ATK,1144,Add,SPD,773,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,36,14118,ATK,1171,Add,SPD,792,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,37,14445,ATK,1198,Add,SPD,811,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,38,14772,ATK,1225,Add,SPD,830,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,39,15099,ATK,1252,Add,SPD,849,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,40,15426,ATK,1279,Add,SPD,868,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,41,15754,ATK,1306,Add,SPD,887,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,42,16081,ATK,1333,Add,SPD,906,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,43,16408,ATK,1360,Add,SPD,925,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,44,16735,ATK,1387,Add,SPD,944,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,45,17062,ATK,1414,Add,SPD,963,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,46,17390,ATK,1441,Add,SPD,982,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,47,17717,ATK,1468,Add,SPD,1001,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,48,18044,ATK,1495,Add,SPD,1020,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,49,18371,ATK,1522,Add,SPD,1039,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,50,18698,ATK,1549,Add,SPD,1058,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,51,19207,ATK,1588,Add,SPD,1101,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,52,19715,ATK,1627,Add,SPD,1144,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,53,20224,ATK,1666,Add,SPD,1187,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,54,20732,ATK,1705,Add,SPD,1230,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,55,21240,ATK,1744,Add,SPD,1273,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,56,21749,ATK,1783,Add,SPD,1316,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,57,22257,ATK,1822,Add,SPD,1359,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,58,22766,ATK,1861,Add,SPD,1402,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,59,23274,ATK,1900,Add,SPD,1445,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,60,23782,ATK,1939,Add,SPD,1488,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,61,24291,ATK,1978,Add,SPD,1531,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,62,24799,ATK,2017,Add,SPD,1574,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,63,25308,ATK,2056,Add,SPD,1617,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,64,25816,ATK,2095,Add,SPD,1660,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,65,26324,ATK,2134,Add,SPD,1703,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,66,26833,ATK,2173,Add,SPD,1746,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,67,27341,ATK,2212,Add,SPD,1789,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,68,27850,ATK,2251,Add,SPD,1832,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,69,28358,ATK,2290,Add,SPD,1875,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,70,28866,ATK,2329,Add,SPD,1918,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,71,29375,ATK,2368,Add,SPD,1961,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,72,29883,ATK,2407,Add,SPD,2004,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,73,30392,ATK,2446,Add,SPD,2047,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,74,30900,ATK,2485,Add,SPD,2090,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,75,31408,ATK,2524,Add,SPD,2133,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,76,31917,ATK,2563,Add,SPD,2176,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,77,32425,ATK,2602,Add,SPD,2219,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,78,32934,ATK,2641,Add,SPD,2262,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,79,33442,ATK,2680,Add,SPD,2305,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,80,33950,ATK,2719,Add,SPD,2348,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,81,34459,ATK,2758,Add,SPD,2391,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,82,34967,ATK,2797,Add,SPD,2434,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,83,35476,ATK,2836,Add,SPD,2477,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,84,35984,ATK,2875,Add,SPD,2520,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,85,36492,ATK,2914,Add,SPD,2563,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,86,37001,ATK,2953,Add,SPD,2606,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,87,37509,ATK,2992,Add,SPD,2649,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,88,38018,ATK,3031,Add,SPD,2692,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,89,38526,ATK,3070,Add,SPD,2735,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,90,39034,ATK,3109,Add,SPD,2778,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,91,39543,ATK,3148,Add,SPD,2821,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,92,40051,ATK,3187,Add,SPD,2864,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,93,40560,ATK,3226,Add,SPD,2907,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,94,41068,ATK,3265,Add,SPD,2950,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,95,41576,ATK,3304,Add,SPD,2993,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,96,42085,ATK,3343,Add,SPD,3036,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,97,42593,ATK,3382,Add,SPD,3079,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,98,43102,ATK,3421,Add,SPD,3122,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,99,43610,ATK,3460,Add,SPD,3165,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,100,44118,ATK,3499,Add,SPD,3208,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,101,44895,ATK,3562,Add,SPD,3258,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,102,45671,ATK,3625,Add,SPD,3308,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,103,46448,ATK,3688,Add,SPD,3358,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,104,47224,ATK,3751,Add,SPD,3408,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,105,48001,ATK,3814,Add,SPD,3458,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,106,48777,ATK,3877,Add,SPD,3508,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,107,49554,ATK,3940,Add,SPD,3558,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,108,50330,ATK,4003,Add,SPD,3608,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,109,51107,ATK,4066,Add,SPD,3658,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,110,51883,ATK,4129,Add,SPD,3708,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,111,52660,ATK,4192,Add,SPD,3758,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,112,53436,ATK,4255,Add,SPD,3808,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,113,54213,ATK,4318,Add,SPD,3858,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,114,54989,ATK,4381,Add,SPD,3908,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,115,55766,ATK,4444,Add,SPD,3958,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,116,56542,ATK,4507,Add,SPD,4008,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,117,57319,ATK,4570,Add,SPD,4058,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,118,58095,ATK,4633,Add,SPD,4108,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,119,58872,ATK,4696,Add,SPD,4158,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,120,59648,ATK,4759,Add,SPD,4208,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,121,60425,ATK,4822,Add,SPD,4258,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,122,61201,ATK,4885,Add,SPD,4308,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,123,61978,ATK,4948,Add,SPD,4358,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,124,62754,ATK,5011,Add,SPD,4408,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,125,63531,ATK,5074,Add,SPD,4458,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,126,64307,ATK,5137,Add,SPD,4508,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,127,65084,ATK,5200,Add,SPD,4558,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,128,65860,ATK,5263,Add,SPD,4608,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,129,66637,ATK,5326,Add,SPD,4658,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,130,67413,ATK,5389,Add,SPD,4708,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,131,68190,ATK,5452,Add,SPD,4758,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,132,68966,ATK,5515,Add,SPD,4808,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,133,69743,ATK,5578,Add,SPD,4858,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,134,70519,ATK,5641,Add,SPD,4908,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,135,71296,ATK,5704,Add,SPD,4958,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,136,72072,ATK,5767,Add,SPD,5008,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,137,72849,ATK,5830,Add,SPD,5058,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,138,73625,ATK,5893,Add,SPD,5108,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,139,74402,ATK,5956,Add,SPD,5158,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,140,75178,ATK,6019,Add,SPD,5208,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,141,75955,ATK,6082,Add,SPD,5258,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,142,76731,ATK,6145,Add,SPD,5308,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,143,77508,ATK,6208,Add,SPD,5358,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,144,78284,ATK,6271,Add,SPD,5408,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,145,79061,ATK,6334,Add,SPD,5458,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,146,79837,ATK,6397,Add,SPD,5508,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,147,80614,ATK,6460,Add,SPD,5558,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,148,81390,ATK,6523,Add,SPD,5608,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,149,82167,ATK,6586,Add,SPD,5658,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,150,82943,ATK,6649,Add,SPD,5708,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,151,84148,ATK,6748,Add,SPD,5780,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,152,85354,ATK,6847,Add,SPD,5852,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,153,86559,ATK,6946,Add,SPD,5924,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,154,87764,ATK,7045,Add,SPD,5996,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,155,88969,ATK,7144,Add,SPD,6068,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,156,90174,ATK,7243,Add,SPD,6140,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,157,91379,ATK,7342,Add,SPD,6212,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,158,92584,ATK,7441,Add,SPD,6284,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,159,93789,ATK,7540,Add,SPD,6356,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,160,94994,ATK,7639,Add,SPD,6428,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,161,96199,ATK,7738,Add,SPD,6500,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,162,97405,ATK,7837,Add,SPD,6572,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,163,98610,ATK,7936,Add,SPD,6644,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,164,99815,ATK,8035,Add,SPD,6716,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,165,101020,ATK,8134,Add,SPD,6788,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,166,102225,ATK,8233,Add,SPD,6860,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,167,103430,ATK,8332,Add,SPD,6932,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,168,104635,ATK,8431,Add,SPD,7004,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,169,105840,ATK,8530,Add,SPD,7076,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,170,107045,ATK,8629,Add,SPD,7148,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,171,108250,ATK,8728,Add,SPD,7220,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,172,109456,ATK,8827,Add,SPD,7292,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,173,110661,ATK,8926,Add,SPD,7364,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,174,111866,ATK,9025,Add,SPD,7436,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,175,113071,ATK,9124,Add,SPD,7508,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,176,114276,ATK,9223,Add,SPD,7580,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,177,115481,ATK,9322,Add,SPD,7652,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,178,116686,ATK,9421,Add,SPD,7724,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,179,117891,ATK,9520,Add,SPD,7796,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,180,119096,ATK,9619,Add,SPD,7868,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,181,120301,ATK,9718,Add,SPD,7940,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,182,121507,ATK,9817,Add,SPD,8012,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,183,122712,ATK,9916,Add,SPD,8084,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,184,123917,ATK,10015,Add,SPD,8156,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,185,125122,ATK,10114,Add,SPD,8228,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,186,126327,ATK,10213,Add,SPD,8300,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,187,127532,ATK,10312,Add,SPD,8372,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,188,128737,ATK,10411,Add,SPD,8444,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,189,129942,ATK,10510,Add,SPD,8516,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,190,131147,ATK,10609,Add,SPD,8588,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,191,132352,ATK,10708,Add,SPD,8660,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,192,133558,ATK,10807,Add,SPD,8732,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,193,134763,ATK,10906,Add,SPD,8804,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,194,135968,ATK,11005,Add,SPD,8876,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,195,137173,ATK,11104,Add,SPD,8948,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,196,138378,ATK,11203,Add,SPD,9020,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,197,139583,ATK,11302,Add,SPD,9092,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,198,140788,ATK,11401,Add,SPD,9164,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,199,141993,ATK,11500,Add,SPD,9236,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,200,143198,ATK,11599,Add,SPD,9308,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,201,144727,ATK,11719,Add,SPD,9425,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,202,146257,ATK,11839,Add,SPD,9542,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,203,147786,ATK,11959,Add,SPD,9659,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,204,149315,ATK,12079,Add,SPD,9776,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,205,150844,ATK,12199,Add,SPD,9893,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,206,152373,ATK,12319,Add,SPD,10010,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,207,153902,ATK,12439,Add,SPD,10127,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,208,155431,ATK,12559,Add,SPD,10244,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,209,156960,ATK,12679,Add,SPD,10361,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,210,158489,ATK,12799,Add,SPD,10478,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,211,160018,ATK,12919,Add,SPD,10595,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,212,161548,ATK,13039,Add,SPD,10712,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,213,163077,ATK,13159,Add,SPD,10829,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,214,164606,ATK,13279,Add,SPD,10946,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,215,166135,ATK,13399,Add,SPD,11063,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,216,167664,ATK,13519,Add,SPD,11180,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,217,169193,ATK,13639,Add,SPD,11297,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,218,170722,ATK,13759,Add,SPD,11414,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,219,172251,ATK,13879,Add,SPD,11531,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,220,173780,ATK,13999,Add,SPD,11648,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,221,175309,ATK,14119,Add,SPD,11765,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,222,176839,ATK,14239,Add,SPD,11882,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,223,178368,ATK,14359,Add,SPD,11999,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,224,179897,ATK,14479,Add,SPD,12116,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,225,181426,ATK,14599,Add,SPD,12233,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,226,182955,ATK,14719,Add,SPD,12350,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,227,184484,ATK,14839,Add,SPD,12467,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,228,186013,ATK,14959,Add,SPD,12584,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,229,187542,ATK,15079,Add,SPD,12701,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,230,189071,ATK,15199,Add,SPD,12818,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,231,190600,ATK,15319,Add,SPD,12935,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,232,192130,ATK,15439,Add,SPD,13052,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,233,193659,ATK,15559,Add,SPD,13169,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,234,195188,ATK,15679,Add,SPD,13286,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,235,196717,ATK,15799,Add,SPD,13403,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,236,198246,ATK,15919,Add,SPD,13520,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,237,199775,ATK,16039,Add,SPD,13637,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,238,201304,ATK,16159,Add,SPD,13754,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,239,202833,ATK,16279,Add,SPD,13871,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,240,204362,ATK,16399,Add,SPD,13988,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,241,205891,ATK,16519,Add,SPD,14105,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,242,207421,ATK,16639,Add,SPD,14222,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,243,208950,ATK,16759,Add,SPD,14339,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,244,210479,ATK,16879,Add,SPD,14456,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,245,212008,ATK,16999,Add,SPD,14573,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,246,213537,ATK,17119,Add,SPD,14690,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,247,215066,ATK,17239,Add,SPD,14807,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,248,216595,ATK,17359,Add,SPD,14924,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,249,218124,ATK,17479,Add,SPD,15041,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,250,219653,ATK,17599,Add,SPD,15158,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,251,221890,ATK,17777,Add,SPD,15318,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,252,224127,ATK,17955,Add,SPD,15478,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,253,226364,ATK,18133,Add,SPD,15638,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,254,228601,ATK,18311,Add,SPD,15798,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,255,230838,ATK,18489,Add,SPD,15958,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,256,233075,ATK,18667,Add,SPD,16118,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,257,235312,ATK,18845,Add,SPD,16278,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,258,237549,ATK,19023,Add,SPD,16438,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,259,239786,ATK,19201,Add,SPD,16598,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,260,242023,ATK,19379,Add,SPD,16758,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,261,244260,ATK,19557,Add,SPD,16918,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,262,246497,ATK,19735,Add,SPD,17078,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,263,248734,ATK,19913,Add,SPD,17238,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,264,250971,ATK,20091,Add,SPD,17398,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,265,253208,ATK,20269,Add,SPD,17558,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,266,255445,ATK,20447,Add,SPD,17718,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,267,257682,ATK,20625,Add,SPD,17878,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,268,259919,ATK,20803,Add,SPD,18038,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,269,262156,ATK,20981,Add,SPD,18198,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,270,264393,ATK,21159,Add,SPD,18358,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,271,266630,ATK,21337,Add,SPD,18518,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,272,268867,ATK,21515,Add,SPD,18678,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,273,271104,ATK,21693,Add,SPD,18838,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,274,273341,ATK,21871,Add,SPD,18998,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,275,275578,ATK,22049,Add,SPD,19158,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,276,277815,ATK,22227,Add,SPD,19318,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,277,280052,ATK,22405,Add,SPD,19478,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,278,282289,ATK,22583,Add,SPD,19638,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,279,284526,ATK,22761,Add,SPD,19798,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,280,286763,ATK,22939,Add,SPD,19958,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,281,289000,ATK,23117,Add,SPD,20118,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,282,291237,ATK,23295,Add,SPD,20278,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,283,293474,ATK,23473,Add,SPD,20438,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,284,295711,ATK,23651,Add,SPD,20598,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,285,297948,ATK,23829,Add,SPD,20758,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,286,300185,ATK,24007,Add,SPD,20918,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,287,302422,ATK,24185,Add,SPD,21078,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,288,304659,ATK,24363,Add,SPD,21238,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,289,306896,ATK,24541,Add,SPD,21398,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,290,309133,ATK,24719,Add,SPD,21558,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,291,311370,ATK,24897,Add,SPD,21718,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,292,313607,ATK,25075,Add,SPD,21878,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,293,315844,ATK,25253,Add,SPD,22038,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,294,318081,ATK,25431,Add,SPD,22198,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,295,320318,ATK,25609,Add,SPD,22358,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,296,322555,ATK,25787,Add,SPD,22518,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,297,324792,ATK,25965,Add,SPD,22678,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,298,327029,ATK,26143,Add,SPD,22838,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,299,329266,ATK,26321,Add,SPD,22998,Add,NONE,0,Add,,,,,,,, +10028,WorldBoss Quick Rune,300,331503,ATK,26499,Add,SPD,23158,Add,NONE,0,Add,,,,,,,, \ No newline at end of file diff --git a/Lib9c/TableCSV/Skill/ActionBuffSheet.csv b/Lib9c/TableCSV/Skill/ActionBuffSheet.csv index 39991d0e6f..29df06c98c 100644 --- a/Lib9c/TableCSV/Skill/ActionBuffSheet.csv +++ b/Lib9c/TableCSV/Skill/ActionBuffSheet.csv @@ -4,4 +4,5 @@ id,group,_name,chance,duration,target_type,buff_type,elemental_type,atk_power_ra 500003,500001,출혈(0.2),100,10,Enemy,Bleed,Normal,0.2 600001,600001,출혈,100,0,Enemies,Bleed,Normal,1 704000,704000,기절,100,0,Enemy,Stun,Normal,0 -704001,704000,기절,100,0,Enemies,Stun,Normal,0 \ No newline at end of file +704001,704000,기절,100,0,Enemies,Stun,Normal,0 +705000,705000,흡혈,100,0,Self,Vampiric,Normal,0 \ No newline at end of file diff --git a/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv b/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv index cc114caa3c..61cbe24420 100644 --- a/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv +++ b/Lib9c/TableCSV/Skill/SkillActionBuffSheet.csv @@ -4,4 +4,5 @@ skill_id,buff_id 500005,500003 600001,600001 700004,704000 -700005,704001 \ No newline at end of file +700005,704001 +700006,705000 \ No newline at end of file diff --git a/Lib9c/TableCSV/Skill/SkillSheet.csv b/Lib9c/TableCSV/Skill/SkillSheet.csv index ab3ecf8142..1a9ef43cc7 100644 --- a/Lib9c/TableCSV/Skill/SkillSheet.csv +++ b/Lib9c/TableCSV/Skill/SkillSheet.csv @@ -168,4 +168,5 @@ _250001,속도 증가(전체),Normal,Buff,SpeedBuff,Ally,1,1 // 미구현 700002,피해 감소 (비율),Normal,Buff,DamageReductionBuff,Self,1,15 700003,치명 데미지 증가,Normal,Buff,CriticalDamageBuff,Self,1,15 700004,기절,Normal,Debuff,Buff,Enemy,1,15 -700005,기절,Normal,Debuff,Buff,Enemies,1,15 \ No newline at end of file +700005,기절,Normal,Debuff,Buff,Enemies,1,15 +700006,흡혈,Normal,Buff,Buff,Self,1,15 \ No newline at end of file From 9a9450185c1b34a2755f802860e750c427aa983f Mon Sep 17 00:00:00 2001 From: Kim sm Date: Wed, 6 Dec 2023 17:03:38 +0900 Subject: [PATCH 65/70] Merge pull request #2282 from planetarium/bugfix/vampiric-logging change skillInfo.target to cloned character at Vampiric --- Lib9c/Model/Buff/Vampiric.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib9c/Model/Buff/Vampiric.cs b/Lib9c/Model/Buff/Vampiric.cs index e85f688875..3cdf818585 100644 --- a/Lib9c/Model/Buff/Vampiric.cs +++ b/Lib9c/Model/Buff/Vampiric.cs @@ -48,7 +48,7 @@ public BattleStatus.Skill GiveEffect(CharacterBase affectedCharacter, BattleStat simulatorWaveTurn, RowData.ElementalType, RowData.TargetType, - target: target) + target: copyCharacter ? (CharacterBase)affectedCharacter.Clone() : null) }; return new BattleStatus.Tick(RowData.Id, target, @@ -64,7 +64,7 @@ public ArenaSkill GiveEffectForArena(ArenaCharacter affectedCharacter, ArenaSkil // Copy new Character with healed. var infos = new List { - new(affectedCharacter, + new((ArenaCharacter)affectedCharacter.Clone(), effect, false, SkillCategory.Heal, From c45a2288600a52ebff19eeb3d17f475fd56483b5 Mon Sep 17 00:00:00 2001 From: Suho Lee Date: Thu, 7 Dec 2023 19:43:31 +0900 Subject: [PATCH 66/70] fix: remove max transactions bytes policy range --- Lib9c.Policy/Policy/MaxTransactionsBytesPolicy.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/Lib9c.Policy/Policy/MaxTransactionsBytesPolicy.cs b/Lib9c.Policy/Policy/MaxTransactionsBytesPolicy.cs index c61a80a29e..b6401c48b5 100644 --- a/Lib9c.Policy/Policy/MaxTransactionsBytesPolicy.cs +++ b/Lib9c.Policy/Policy/MaxTransactionsBytesPolicy.cs @@ -58,9 +58,6 @@ private MaxTransactionsBytesPolicy( .Add(new SpannedSubPolicy( startIndex: 0L, value: 1024L * 1024L * 15L)) // 15 MiB - .Add(new SpannedSubPolicy( - startIndex: 1L, - value: 1024L * 100L)) // 100 KiB .Add(new SpannedSubPolicy( startIndex: 2_000_001L, value: 1024L * 1024L * 10L)) // 10 MiB From d0223f03bfe335e2e2b950a2508c4465ae39f239 Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Fri, 8 Dec 2023 12:08:04 +0900 Subject: [PATCH 67/70] Bump libplanet to 3.9.1 --- .Libplanet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.Libplanet b/.Libplanet index f5762f93ba..d049d46d1b 160000 --- a/.Libplanet +++ b/.Libplanet @@ -1 +1 @@ -Subproject commit f5762f93ba0366280c8aa7f7b7b6e3331ad8fe86 +Subproject commit d049d46d1b7373a90c74d6d51795f3292fb27c25 From d3b2cef16e380e7dbd5a269e23d32b841ae9e56a Mon Sep 17 00:00:00 2001 From: "Lee, Suho" Date: Wed, 6 Dec 2023 18:42:58 +0900 Subject: [PATCH 68/70] Merge pull request #2281 from riemannulus/ci/remove-deprecate-build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🧹 ci: cleanup deprecated build --- .github/workflows/push_docker_image.yaml | 37 ------------------------ 1 file changed, 37 deletions(-) diff --git a/.github/workflows/push_docker_image.yaml b/.github/workflows/push_docker_image.yaml index 6321394602..80ef9890ce 100644 --- a/.github/workflows/push_docker_image.yaml +++ b/.github/workflows/push_docker_image.yaml @@ -61,40 +61,3 @@ jobs: --amend ${{ matrix.docker.repo }}:git-${{ github.sha }}-amd64 \ --amend ${{ matrix.docker.repo }}:git-${{ github.sha }}-arm64v8 docker manifest push ${{ matrix.docker.repo }}:git-${{ github.sha }} - - tag: - name: tag (${{ matrix.docker.repo }}) - strategy: - matrix: - docker: - - repo: planetariumhq/lib9c-stateservice - if: github.ref_type == 'tag' || github.event.inputs.imageTag != '' - runs-on: ubuntu-latest - steps: - - name: login - run: | - docker login \ - --username '${{ secrets.DOCKER_USERNAME }}' \ - --password '${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}' - - name: push git tagged version - run: | - docker pull ${{ matrix.docker.repo }}:git-${{ github.sha }}-amd64 - if [[ -z "${{ github.event.inputs.imageTag }}" ]]; then - export IMAGE_TAG=${{ github.ref_name }} - else - export IMAGE_TAG=${{ github.event.inputs.imageTag }} - fi - - docker tag \ - ${{ matrix.docker.repo }}:git-${{ github.sha }}-amd64 \ - ${{ matrix.docker.repo }}:$IMAGE_TAG-amd64 - docker push ${{ matrix.docker.repo }}:$IMAGE_TAG-amd64 - docker pull ${{ matrix.docker.repo }}:git-${{ github.sha }}-arm64v8 - docker tag \ - ${{ matrix.docker.repo }}:git-${{ github.sha }}-arm64v8 \ - ${{ matrix.docker.repo }}:$IMAGE_TAG-arm64v8 - docker push ${{ matrix.docker.repo }}:$IMAGE_TAG-arm64v8 - docker manifest create ${{ matrix.docker.repo }}:$IMAGE_TAG \ - --amend ${{ matrix.docker.repo }}:$IMAGE_TAG-amd64 \ - --amend ${{ matrix.docker.repo }}:$IMAGE_TAG-arm64v8 - docker manifest push ${{ matrix.docker.repo }}:$IMAGE_TAG From 78c41280e03a80d42fc0fbfbb5ee43215e5edbcf Mon Sep 17 00:00:00 2001 From: "Lee, Suho" Date: Thu, 7 Dec 2023 08:39:21 +0900 Subject: [PATCH 69/70] Merge pull request #2284 from moreal/ci/gh-actions/remove-unused --- .github/workflows/push_docker_image.yaml | 63 ------------------------ Dockerfile.amd64 | 32 ------------ Dockerfile.arm64v8 | 32 ------------ 3 files changed, 127 deletions(-) delete mode 100644 .github/workflows/push_docker_image.yaml delete mode 100644 Dockerfile.amd64 delete mode 100644 Dockerfile.arm64v8 diff --git a/.github/workflows/push_docker_image.yaml b/.github/workflows/push_docker_image.yaml deleted file mode 100644 index 80ef9890ce..0000000000 --- a/.github/workflows/push_docker_image.yaml +++ /dev/null @@ -1,63 +0,0 @@ -name: push docker image - -on: - push: - branches: - - main - - rc-* - - development - - previewnet - - release/* - tags: - - "*" - workflow_dispatch: - inputs: - imageTag: - description: 'Custom docker image tag if needed' - default: '' - -jobs: - build_and_push: - name: build_and_push (${{ matrix.docker.repo }}) - strategy: - matrix: - docker: - - repo: planetariumhq/lib9c-stateservice - dockerfile: Dockerfile - if: github.ref_type == 'branch' - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@v3 - with: - submodules: recursive - - name: login - run: | - docker login \ - --username '${{ secrets.DOCKER_USERNAME }}' \ - --password '${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}' - - name: setup-qemu - run: | - docker run --rm --privileged multiarch/qemu-user-static \ - --reset \ - -p yes - - name: build-and-push-amd64 - run: | - docker build . \ - -f ${{ matrix.docker.dockerfile }}.amd64 \ - -t ${{ matrix.docker.repo }}:git-${{ github.sha }}-amd64 \ - --build-arg COMMIT=git-${{ github.sha }} - docker push ${{ matrix.docker.repo }}:git-${{ github.sha }}-amd64 - - name: build-and-push-arm64v8 - run: | - docker build . \ - -f ${{ matrix.docker.dockerfile }}.arm64v8 \ - -t ${{ matrix.docker.repo }}:git-${{ github.sha }}-arm64v8 \ - --build-arg COMMIT=git-${{ github.sha }} - docker push ${{ matrix.docker.repo }}:git-${{ github.sha }}-arm64v8 - - name: merge-manifest-and-push - run: | - docker manifest create ${{ matrix.docker.repo }}:git-${{ github.sha }} \ - --amend ${{ matrix.docker.repo }}:git-${{ github.sha }}-amd64 \ - --amend ${{ matrix.docker.repo }}:git-${{ github.sha }}-arm64v8 - docker manifest push ${{ matrix.docker.repo }}:git-${{ github.sha }} diff --git a/Dockerfile.amd64 b/Dockerfile.amd64 deleted file mode 100644 index 3dbce3ebde..0000000000 --- a/Dockerfile.amd64 +++ /dev/null @@ -1,32 +0,0 @@ -FROM mcr.microsoft.com/dotnet/sdk:6.0-jammy AS build-env -WORKDIR /app - -# Copy csproj and restore as distinct layers -COPY ./Lib9c/Lib9c.csproj ./Lib9c/ -COPY ./.Libplanet.Extensions.RemoteActionEvaluator/Libplanet.Extensions.RemoteActionEvaluator.csproj ./Libplanet.Extensions.RemoteActionEvaluator/ -RUN dotnet restore Lib9c -RUN dotnet restore Libplanet.Extensions.RemoteActionEvaluator - -# Copy everything else and build -COPY . ./ -RUN dotnet publish .Lib9c.StateService/Lib9c.StateService.csproj \ - -c Release \ - -r linux-x64 \ - -o out \ - --self-contained - -# Build runtime image -FROM mcr.microsoft.com/dotnet/aspnet:6.0 -WORKDIR /app -RUN apt-get update && apt-get install -y libc6-dev -COPY --from=build-env /app/out . - -# Install native deps & utilities for production -RUN apt-get update \ - && apt-get install -y --allow-unauthenticated \ - libc6-dev jq curl \ - && rm -rf /var/lib/apt/lists/* - -VOLUME /data - -ENTRYPOINT ["dotnet", "Lib9c.StateService.dll"] diff --git a/Dockerfile.arm64v8 b/Dockerfile.arm64v8 deleted file mode 100644 index 32223cc5d9..0000000000 --- a/Dockerfile.arm64v8 +++ /dev/null @@ -1,32 +0,0 @@ -FROM mcr.microsoft.com/dotnet/sdk:6.0-jammy AS build-env -WORKDIR /app - -# Copy csproj and restore as distinct layers -COPY ./Lib9c/Lib9c.csproj ./Lib9c/ -COPY ./.Libplanet.Extensions.RemoteActionEvaluator/Libplanet.Extensions.RemoteActionEvaluator.csproj ./Libplanet.Extensions.RemoteActionEvaluator/ -RUN dotnet restore Lib9c -RUN dotnet restore Libplanet.Extensions.RemoteActionEvaluator - -# Copy everything else and build -COPY . ./ -RUN dotnet publish .Lib9c.StateService/Lib9c.StateService.csproj \ - -c Release \ - -r linux-arm64 \ - -o out \ - --self-contained - -# Build runtime image -FROM mcr.microsoft.com/dotnet/aspnet:6.0-bullseye-slim-arm64v8 -WORKDIR /app -RUN apt-get update && apt-get install -y libc6-dev -COPY --from=build-env /app/out . - -# Install native deps & utilities for production -RUN apt-get update \ - && apt-get install -y --allow-unauthenticated \ - libc6-dev jq curl \ - && rm -rf /var/lib/apt/lists/* - -VOLUME /data - -ENTRYPOINT ["dotnet", "Lib9c.StateService.dll"] From 3813ed13aa2e8c90659d941cdfd74ce10866621f Mon Sep 17 00:00:00 2001 From: sonohoshi Date: Mon, 11 Dec 2023 19:18:44 +0900 Subject: [PATCH 70/70] fix calculating logic of Vampiric, for avoid int overflow --- .Lib9c.Tests/Model/PlayerTest.cs | 11 ++++++++--- Lib9c/Model/Buff/Vampiric.cs | 4 ++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.Lib9c.Tests/Model/PlayerTest.cs b/.Lib9c.Tests/Model/PlayerTest.cs index ead2f76dfe..8458cb520e 100644 --- a/.Lib9c.Tests/Model/PlayerTest.cs +++ b/.Lib9c.Tests/Model/PlayerTest.cs @@ -579,7 +579,7 @@ public void Vampiric(int duration, int percent) { var defaultAttack = SkillFactory.GetV1( _tableSheets.SkillSheet.Values.First(r => r.Id == GameConfig.DefaultAttackId), - 100, + int.MaxValue / 2, 100 ); @@ -604,7 +604,12 @@ public void Vampiric(int duration, int percent) _tableSheets.MaterialItemSheet) ); var player = simulator.Player; - var enemy = new Enemy(player, _tableSheets.CharacterSheet.Values.First(), 1); + var enemy = new Enemy( + player, + _tableSheets.CharacterSheet.Values.First(), + 1, + new[] { new StatModifier(StatType.HP, StatModifier.OperationType.Add, int.MaxValue / 2), } + ); player.Targets.Add(enemy); simulator.Characters = new SimplePriorityQueue(); simulator.Characters.Enqueue(enemy, 0); @@ -648,7 +653,7 @@ public void Vampiric(int duration, int percent) var prevAttack = logList.Take(i).OfType() .Last(); Assert.Equal( - (int)(prevAttack.SkillInfos.First().Effect * vampiric.BasisPoint / 10000m), + (int)(prevAttack.SkillInfos.First().Effect * (vampiric.BasisPoint / 10000m)), healInfo.Effect); } } diff --git a/Lib9c/Model/Buff/Vampiric.cs b/Lib9c/Model/Buff/Vampiric.cs index 3cdf818585..9efb86cb33 100644 --- a/Lib9c/Model/Buff/Vampiric.cs +++ b/Lib9c/Model/Buff/Vampiric.cs @@ -34,7 +34,7 @@ public override object Clone() public BattleStatus.Skill GiveEffect(CharacterBase affectedCharacter, BattleStatus.Skill.SkillInfo skillInfo, int simulatorWaveTurn, bool copyCharacter = true) { var target = copyCharacter ? (CharacterBase) affectedCharacter.Clone() : null; - var effect = (int)(skillInfo.Effect * BasisPoint / 10000m); + var effect = (int)(skillInfo.Effect * (BasisPoint / 10000m)); affectedCharacter.Heal(effect); // Copy new Character with healed. var infos = new List @@ -59,7 +59,7 @@ public BattleStatus.Skill GiveEffect(CharacterBase affectedCharacter, BattleStat public ArenaSkill GiveEffectForArena(ArenaCharacter affectedCharacter, ArenaSkill.ArenaSkillInfo skillInfo, int simulatorWaveTurn) { var clone = (ArenaCharacter)affectedCharacter.Clone(); - var effect = (int)(skillInfo.Effect * BasisPoint / 10000m); + var effect = (int)(skillInfo.Effect * (BasisPoint / 10000m)); affectedCharacter.Heal(effect); // Copy new Character with healed. var infos = new List