diff --git a/db/import-tmpl/item_synthesis.yml b/db/import-tmpl/item_synthesis.yml index ca99150a89..376152b143 100644 --- a/db/import-tmpl/item_synthesis.yml +++ b/db/import-tmpl/item_synthesis.yml @@ -12,7 +12,9 @@ # SourceItem: # List of item required # - Item: # (int) Item ID for source # Amount: # (int) Item amount will be consumed (Default: 1) +# Remove: # (optional, any) Remove this item from the list while importing # Reward: # (string) Script on synthesis success +# ClearSourceItem: # (optional, any) Can be used to clear SourceItem list while importing ########################################################################### Header: diff --git a/db/import-tmpl/item_upgrade.yml b/db/import-tmpl/item_upgrade.yml index 5d3ca5bb96..6649f913b4 100644 --- a/db/import-tmpl/item_upgrade.yml +++ b/db/import-tmpl/item_upgrade.yml @@ -12,7 +12,9 @@ # NotSocketEnchantItem: # (bool) Target item must not has enchant stone (default: true) # TargetItem: # List of possible item to be upgraded # - Item: # (int) Target's Item ID +# Remove: # (optional, any) Remove this item from the list while importing # Result: # (string) Script on upgrade success +# ClearTargetItem: # (optional, any) Can be used to clear TargetItem list while importing ########################################################################### Header: diff --git a/db/pre-re/item_synthesis.yml b/db/pre-re/item_synthesis.yml index ca99150a89..376152b143 100644 --- a/db/pre-re/item_synthesis.yml +++ b/db/pre-re/item_synthesis.yml @@ -12,7 +12,9 @@ # SourceItem: # List of item required # - Item: # (int) Item ID for source # Amount: # (int) Item amount will be consumed (Default: 1) +# Remove: # (optional, any) Remove this item from the list while importing # Reward: # (string) Script on synthesis success +# ClearSourceItem: # (optional, any) Can be used to clear SourceItem list while importing ########################################################################### Header: diff --git a/db/pre-re/item_upgrade.yml b/db/pre-re/item_upgrade.yml index 5d3ca5bb96..6649f913b4 100644 --- a/db/pre-re/item_upgrade.yml +++ b/db/pre-re/item_upgrade.yml @@ -12,7 +12,9 @@ # NotSocketEnchantItem: # (bool) Target item must not has enchant stone (default: true) # TargetItem: # List of possible item to be upgraded # - Item: # (int) Target's Item ID +# Remove: # (optional, any) Remove this item from the list while importing # Result: # (string) Script on upgrade success +# ClearTargetItem: # (optional, any) Can be used to clear TargetItem list while importing ########################################################################### Header: diff --git a/db/re/item_package.txt b/db/re/item_package.txt index c929fa76ac..bf4a4dc2fb 100644 --- a/db/re/item_package.txt +++ b/db/re/item_package.txt @@ -4916,7 +4916,8 @@ IG_PhysicalMagical_Mix,24398,1,1,1,0,0,0 // 매지컬 아머 쉐도우 IG_PhysicalMagical_Mix,24396,1,1,1,0,0,0 // 매지컬 슈즈 쉐도우 IG_PhysicalMagical_Mix,24397,1,1,1,0,0,0 // 매지컬 쉴드 쉐도우 -IG_Silver_Statue,28945,1,1,1,0,0,0 // 피빛의 기사의 방패 +IG_Silver_Statue,28942,900,1,1,0,0,0 // 저주받은 기사의 방패 +IG_Silver_Statue,28945,99,1,1,0,0,0 // 피빛의 기사의 방패 IG_Silver_Statue,28946,1,1,1,0,0,0 // 정화된 기사의 방패 IG_Stability_Shadow_Box,24352,1,1,1,0,0,0 // S_Plasterer's_Armor_II @@ -4940,7 +4941,7 @@ IG_Gemstone_S_Conversion_Box,24336,1,1,1,0,0,0 // 젬스톤 쉴드 쉐도우 II IG_Status_S_Conversion_Box,24339,1,1,1,0,0,0 // 올마이티 이어링 쉐도우 IG_Status_S_Conversion_Box,24340,1,1,1,0,0,0 // 올마이티 펜던트 쉐도우 -// TODO: Need 'yellow' shadow equipment as seen on https://ro.gnjoy.com.tw/notice/notice_view.aspx?id=1154 +//! TODO: http://ro.gnjoy.com/news/probability/View.asp?seq=3954787 IG_Shadow_Exchange_Box,24018,1,1,1,0,0,0 IG_Shadow_Exchange_Box,24019,1,1,1,0,0,0 IG_Shadow_Exchange_Box,24020,1,1,1,0,0,0 @@ -5382,8 +5383,7 @@ IG_Shadow_Exchange_Box,24473,1,1,1,0,0,0 IG_Shadow_Exchange_Box,24474,1,1,1,0,0,0 IG_Shadow_Exchange_Box,24475,1,1,1,0,0,0 -//!TODO : as item directly or boxes? -//http://www.inven.co.kr/board/ro/1951/4571 +//!TODO http://ro.gnjoy.com/news/probability/View.asp?&seq=3954790 IG_Costume_Enchant_Stone_Box,22826,1,1,1,0,0,0 // 의상 인챈트 스톤 상자4 IG_Costume_Enchant_Stone_Box,22868,1,1,1,0,0,0 // 의상 인챈트 스톤 상자5 IG_Costume_Enchant_Stone_Box,22905,1,1,1,0,0,0 // 의상 인챈트 스톤 상자6 @@ -5420,7 +5420,7 @@ IG_EnchantStone_Recipe_9m,23629,1,1,1,0,0,0 // 의상 인챈트 스톤 상자14 IG_EnchantStone_Recipe_9m,23682,1,1,1,0,0,0 // 의상 인챈트 스톤 상자15 IG_EnchantStone_Recipe_9m,23770,1,1,1,0,0,0 // 의상 인챈트 스톤 상자16 -// http://ro.gnjoy.com/news/probability/View.asp?category=6&seq=3955672 +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955672 IG_Class_Shadow_Pendant,24250,1,1,1,0,0,0 IG_Class_Shadow_Pendant,24251,1,1,1,0,0,0 IG_Class_Shadow_Pendant,24252,1,1,1,0,0,0 @@ -5428,7 +5428,7 @@ IG_Class_Shadow_Pendant,24253,1,1,1,0,0,0 IG_Class_Shadow_Pendant,24254,1,1,1,0,0,0 IG_Class_Shadow_Pendant,24255,1,1,1,0,0,0 -// http://ro.gnjoy.com/news/probability/View.asp?category=6&seq=3955674 +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955674 IG_Class_Shadow_Earring,24246,1,1,1,0,0,0 IG_Class_Shadow_Earring,24247,1,1,1,0,0,0 IG_Class_Shadow_Earring,24248,1,1,1,0,0,0 @@ -5436,7 +5436,7 @@ IG_Class_Shadow_Earring,24249,1,1,1,0,0,0 IG_Class_Shadow_Earring,28391,1,1,1,0,0,0 IG_Class_Shadow_Earring,28392,1,1,1,0,0,0 -// http://ro.gnjoy.com/news/probability/View.asp?category=6&seq=3955671 +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955671 IG_Class_Shadow_Shield,24301,1,1,1,0,0,0 IG_Class_Shadow_Shield,24302,1,1,1,0,0,0 IG_Class_Shadow_Shield,24303,1,1,1,0,0,0 @@ -5457,7 +5457,7 @@ IG_Class_Shadow_Shield,24317,1,1,1,0,0,0 IG_Class_Shadow_Shield,24318,1,1,1,0,0,0 IG_Class_Shadow_Shield,24319,1,1,1,0,0,0 -// http://ro.gnjoy.com/news/probability/View.asp?category=6&seq=3955669 +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955669 IG_Class_Shadow_Shoes,24256,1,1,1,0,0,0 IG_Class_Shadow_Shoes,24257,1,1,1,0,0,0 IG_Class_Shadow_Shoes,24258,1,1,1,0,0,0 @@ -5479,7 +5479,7 @@ IG_Class_Shadow_Shoes,24411,1,1,1,0,0,0 IG_Class_Shadow_Shoes,24413,1,1,1,0,0,0 IG_Class_Shadow_Shoes,24415,1,1,1,0,0,0 -// http://ro.gnjoy.com/news/probability/View.asp?category=6&seq=3955664 +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955664 IG_Class_Shadow_Armor,24269,1,1,1,0,0,0 IG_Class_Shadow_Armor,24270,1,1,1,0,0,0 IG_Class_Shadow_Armor,24271,1,1,1,0,0,0 @@ -5501,7 +5501,7 @@ IG_Class_Shadow_Armor,24410,1,1,1,0,0,0 IG_Class_Shadow_Armor,24412,1,1,1,0,0,0 IG_Class_Shadow_Armor,24414,1,1,1,0,0,0 -// http://ro.gnjoy.com/news/probability/View.asp?category=6&seq=3955662 +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955662 IG_Class_Shadow_Weapon,24282,1,1,1,0,0,0 IG_Class_Shadow_Weapon,24283,1,1,1,0,0,0 IG_Class_Shadow_Weapon,24284,1,1,1,0,0,0 @@ -5522,6 +5522,7 @@ IG_Class_Shadow_Weapon,24298,1,1,1,0,0,0 IG_Class_Shadow_Weapon,24299,1,1,1,0,0,0 IG_Class_Shadow_Weapon,24300,1,1,1,0,0,0 +// http://ro.gnjoy.com/news/probability/View.asp?seq=3954791 IG_Costume_Exchange_Box,19876,1,1,1,0,0,0 IG_Costume_Exchange_Box,19654,1,1,1,0,0,0 IG_Costume_Exchange_Box,19608,1,1,1,0,0,0 @@ -6300,3 +6301,12 @@ IG_Costume_Enchant_Stone_Box19,25017,370,1,1 // 마공스톤(하단) IG_Costume_Enchant_Stone_Box19,25304,370,1,1 // 크리티컬스톤(상단) IG_Costume_Enchant_Stone_Box19,25060,370,1,1 // 크리티컬스톤(중단) IG_Costume_Enchant_Stone_Box19,25305,370,1,1 // 크리티컬스톤(하단) + +IG_PERFECTSIZE_MIX,24425,1 // 퍼펙트 사이즈 웨폰 쉐도우 +IG_PERFECTSIZE_MIX,24426,1 // 퍼펙트 사이즈 아머 쉐도우 + +IG_MAGICPIERCING_MIX,24427,1 // 매직 엑소시스트 커럽트 웨폰 쉐도우 +IG_MAGICPIERCING_MIX,24428,1 // 매직 바이브레이션 드래곤킬러 웨폰 쉐도우 +IG_MAGICPIERCING_MIX,24429,1 // 매직 시저스 헌팅 웨폰 쉐도우 +IG_MAGICPIERCING_MIX,24430,1 // 매직 피싱 인섹트 웨폰 쉐도우 +IG_MAGICPIERCING_MIX,24431,1 // 매직 액서큐서너 홀리워터 웨폰 쉐도우 diff --git a/db/re/item_synthesis.yml b/db/re/item_synthesis.yml index 73b4101337..a1a02838ed 100644 --- a/db/re/item_synthesis.yml +++ b/db/re/item_synthesis.yml @@ -12,7 +12,9 @@ # SourceItem: # List of item required # - Item: # (int) Item ID for source # Amount: # (int) Item amount will be consumed (Default: 1) +# Remove: # (optional, any) Remove this item from the list while importing # Reward: # (string) Script on synthesis success +# ClearSourceItem: # (optional, any) Can be used to clear SourceItem list while importing ########################################################################### Header: @@ -77,7 +79,7 @@ Body: - Item: 24072 - Item: 24073 - Item: 24074 - Reward: getitem(24426,1); + Reward: getgroupitem(IG_PERFECTSIZE_MIX); - Id: 100011 # MagicPiercing_Mix SourceNeeded: 2 NeedRefineMin: 7 @@ -92,7 +94,7 @@ Body: - Item: 24177 - Item: 24178 - Item: 24179 - Reward: getitem(24436,1); + Reward: getgroupitem(IG_MAGICPIERCING_MIX); - Id: 100000 # IDTest_Special SourceNeeded: 3 SourceItem: diff --git a/db/re/item_upgrade.yml b/db/re/item_upgrade.yml index 759857ad47..1f809b0110 100644 --- a/db/re/item_upgrade.yml +++ b/db/re/item_upgrade.yml @@ -12,7 +12,9 @@ # NotSocketEnchantItem: # (bool) Target item must not has enchant stone (default: true) # TargetItem: # List of possible item to be upgraded # - Item: # (int) Target's Item ID +# Remove: # (optional, any) Remove this item from the list while importing # Result: # (string) Script on upgrade success +# ClearTargetItem: # (optional, any) Can be used to clear TargetItem list while importing ########################################################################### Header: diff --git a/npc/re/other/LapineEnchants.txt b/npc/re/other/LapineEnchants.txt index 3fdfc305de..29756c9c10 100644 --- a/npc/re/other/LapineEnchants.txt +++ b/npc/re/other/LapineEnchants.txt @@ -218,7 +218,7 @@ function script F_Lapine_Ancient_Hero_Wisdom { } function script F_Lapine_ILL_Piece_A { - .@r = rand(320); // No rates info + .@r = rand(320); //! TODO: Official Rates info if (.@r < 100) { set getarg(0), RDMOPT_VAR_MAXHPAMOUNT; set getarg(1), rand(100,1500); if (rand(100) < 80) return; } else if (.@r < 200) { set getarg(0), RDMOPT_VAR_ATKPERCENT; set getarg(1), rand(1,3); if (rand(100) < 80) return; } else if (.@r < 210) { set getarg(0), RDMOPT_DEC_SP_CONSUMPTION; set getarg(1), rand(1,10); } @@ -233,7 +233,7 @@ function script F_Lapine_ILL_Piece_A { else if (.@r < 300) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET; set getarg(1), rand(1,10); } else if (.@r < 310) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET; set getarg(1), rand(1,10); } else if (.@r < 320) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET; set getarg(1), rand(1,10); } - .@r = rand(170); // No rates info + .@r = rand(170); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_RACE_DAMAGE_NOTHING; set getarg(3), rand(1,10); } else if (.@r < 20) { set getarg(2), RDMOPT_RACE_DAMAGE_UNDEAD; set getarg(3), rand(1,10); } else if (.@r < 30) { set getarg(2), RDMOPT_RACE_DAMAGE_ANIMAL; set getarg(3), rand(1,10); } @@ -255,7 +255,7 @@ function script F_Lapine_ILL_Piece_A { } function script F_Lapine_ILL_Piece_B { - .@r = rand(320); // No rates info + .@r = rand(320); //! TODO: Official Rates info if (.@r < 100) { set getarg(0), RDMOPT_VAR_MAXHPAMOUNT; set getarg(1), rand(100,1500); if (rand(100) < 80) return; } else if (.@r < 200) { set getarg(0), RDMOPT_DEC_SPELL_CAST_TIME; set getarg(1), rand(3,5); if (rand(100) < 80) return; } else if (.@r < 210) { set getarg(0), RDMOPT_DEC_SP_CONSUMPTION; set getarg(1), rand(1,10); } @@ -270,7 +270,7 @@ function script F_Lapine_ILL_Piece_B { else if (.@r < 300) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET; set getarg(1), rand(1,10); } else if (.@r < 310) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET; set getarg(1), rand(1,10); } else if (.@r < 320) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET; set getarg(1), rand(1,10); } - .@r = rand(150); // No rates info + .@r = rand(150); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_RACE_MDAMAGE_NOTHING; set getarg(3), rand(1,10); } else if (.@r < 20) { set getarg(2), RDMOPT_RACE_MDAMAGE_UNDEAD; set getarg(3), rand(1,10); } else if (.@r < 30) { set getarg(2), RDMOPT_RACE_MDAMAGE_ANIMAL; set getarg(3), rand(1,10); } @@ -289,9 +289,10 @@ function script F_Lapine_ILL_Piece_B { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3999573 function script F_Lapine_Gemstone_Of_Time { // Option:1 - .@r = rand(170); // No rates info + .@r = rand(170); if (.@r < 10) { set getarg(0), RDMOPT_VAR_ATTPOWER; set getarg(1), rand(3,20); } else if (.@r < 20) { set getarg(0), RDMOPT_VAR_ATKPERCENT; set getarg(1), rand(1,3); } else if (.@r < 30) { set getarg(0), RDMOPT_VAR_ATTMPOWER; set getarg(1), rand(3,20); } @@ -309,6 +310,7 @@ function script F_Lapine_Gemstone_Of_Time { else if (.@r < 150) { set getarg(0), RDMOPT_HEAL_VALUE; set getarg(1), rand(3,20); } else if (.@r < 160) { set getarg(0), RDMOPT_RANGE_ATTACK_DAMAGE_TARGET; set getarg(1), rand(3,20); } else if (.@r < 170) { set getarg(0), RDMOPT_DEC_SPELL_DELAY_TIME; set getarg(1), rand(3,20); } + if (rand(2) == 1) return; // Option: 2 .@r = rand(280); if (.@r < 10) { set getarg(2), RDMOPT_VAR_ATTPOWER; set getarg(3), rand(3,20); } @@ -342,9 +344,10 @@ function script F_Lapine_Gemstone_Of_Time { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3999574 function script F_Lapine_Time_Unseal_Key { // Option:1 - .@r = rand(170); // No rates info + .@r = rand(170); if (.@r < 10) { set getarg(0), RDMOPT_VAR_ATTPOWER; set getarg(1), rand(5,40); return; } if (.@r < 20) { set getarg(0), RDMOPT_VAR_ATKPERCENT; set getarg(1), rand(1,6); return; } if (.@r < 30) { set getarg(0), RDMOPT_VAR_ATTMPOWER; set getarg(1), rand(5,40); return; } @@ -367,14 +370,14 @@ function script F_Lapine_Time_Unseal_Key { function script F_Lapine_Magma_Essence { // Option:1 - .@r = rand(40); // No rates info + .@r = rand(40); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_VAR_MAXHPAMOUNT; set getarg(1), rand(150,350); } else if (.@r < 20) { set getarg(0), RDMOPT_VAR_MAXSPAMOUNT; set getarg(1), rand(25,50); } else if (.@r < 30) { set getarg(0), RDMOPT_VAR_MAXHPPERCENT; set getarg(1), rand(1,5); } else if (.@r < 40) { set getarg(0), RDMOPT_VAR_MAXSPPERCENT; set getarg(1), rand(1,5); } // Option:2 - .@r = rand(260); // No rates info + .@r = rand(260); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_VAR_HPACCELERATION; set getarg(3), rand(15,50); } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_SPACCELERATION; set getarg(3), rand(15,50); } else if (.@r < 30) { set getarg(2), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(3), rand(5,15); } @@ -403,7 +406,7 @@ function script F_Lapine_Magma_Essence { else if (.@r < 260) { set getarg(2), RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_USER; set getarg(3), rand(5,10); } // Option:3 - .@r = rand(80); // No rates info + .@r = rand(80); //! TODO: Official Rates info if (.@r < 10) { set getarg(4), RDMOPT_VAR_MAXHPAMOUNT; set getarg(5), rand(150,300); } else if (.@r < 20) { set getarg(4), RDMOPT_VAR_MAXSPAMOUNT; set getarg(5), rand(25,50); } else if (.@r < 30) { set getarg(4), RDMOPT_RACE_TOLERACE_NOTHING; set getarg(5), rand(3,7); } @@ -418,7 +421,7 @@ function script F_Lapine_Magma_Essence { else if (.@r < 120) { set getarg(4), RDMOPT_RACE_TOLERACE_DRAGON; set getarg(5), rand(3,7); } // Option:4 - .@r = rand(70); // No rates info + .@r = rand(70); //! TODO: Official Rates info if (.@r < 10) { set getarg(6), RDMOPT_BODY_INDESTRUCTIBLE; } else if (.@r < 20) { set getarg(6), RDMOPT_WEAPON_ATTR_WATER; } else if (.@r < 30) { set getarg(6), RDMOPT_WEAPON_ATTR_GROUND; } @@ -431,7 +434,7 @@ function script F_Lapine_Magma_Essence { // Normal Modification Part (Physical) function script F_Lapine_EP17_1_SPC05 { - .@r = rand(140); // No rates info + .@r = rand(140); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(3,15); } else if (.@r < 20) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(3,15); } else if (.@r < 30) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(3,15); } @@ -446,7 +449,7 @@ function script F_Lapine_EP17_1_SPC05 { else if (.@r < 120) { set getarg(0), RDMOPT_VAR_ATKPERCENT; set getarg(1), rand(1,5); } else if (.@r < 130) { set getarg(0), RDMOPT_VAR_HITSUCCESSVALUE; set getarg(1), rand(3,10); } else if (.@r < 140) { set getarg(0), RDMOPT_VAR_CRITICALSUCCESSVALUE; set getarg(1), rand(3,10); } - .@r = rand(180); // No rates info + .@r = rand(180); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_VAR_PLUSASPD; set getarg(3), 1; } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(3), rand(5,15); } else if (.@r < 30) { set getarg(2), RDMOPT_DAMAGE_SIZE_SMALL_TARGET; set getarg(3), rand(3,10); } @@ -470,7 +473,7 @@ function script F_Lapine_EP17_1_SPC05 { // Advanced Modification Part (Physical) function script F_Lapine_EP17_1_SPC06 { - .@r = rand(140); // No rates info + .@r = rand(140); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(3,20); } else if (.@r < 20) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(3,20); } else if (.@r < 30) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(3,20); } @@ -485,7 +488,7 @@ function script F_Lapine_EP17_1_SPC06 { else if (.@r < 120) { set getarg(0), RDMOPT_VAR_ATKPERCENT; set getarg(1), rand(1,10); } else if (.@r < 130) { set getarg(0), RDMOPT_VAR_HITSUCCESSVALUE; set getarg(1), rand(3,15); } else if (.@r < 140) { set getarg(0), RDMOPT_VAR_CRITICALSUCCESSVALUE; set getarg(1), rand(3,15); } - .@r = rand(190); // No rates info + .@r = rand(190); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_VAR_PLUSASPD; set getarg(3), 1; } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(3), rand(5,30); } else if (.@r < 30) { set getarg(2), RDMOPT_DAMAGE_SIZE_SMALL_TARGET; set getarg(3), rand(3,15); } @@ -510,7 +513,7 @@ function script F_Lapine_EP17_1_SPC06 { // Premium Modification Part (Physical) function script F_Lapine_EP17_1_SPC07 { - .@r = rand(140); // No rates info + .@r = rand(140); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(5,25); } else if (.@r < 20) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(5,25); } else if (.@r < 30) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(5,25); } @@ -525,7 +528,7 @@ function script F_Lapine_EP17_1_SPC07 { else if (.@r < 120) { set getarg(0), RDMOPT_VAR_ATKPERCENT; set getarg(1), rand(3,15); } else if (.@r < 130) { set getarg(0), RDMOPT_VAR_HITSUCCESSVALUE; set getarg(1), rand(3,20); } else if (.@r < 140) { set getarg(0), RDMOPT_VAR_CRITICALSUCCESSVALUE; set getarg(1), rand(3,20); } - .@r = rand(200); // No rates info + .@r = rand(200); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_VAR_PLUSASPD; set getarg(3), rand(1,2); } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(3), rand(5,45); } else if (.@r < 30) { set getarg(2), RDMOPT_DAMAGE_SIZE_SMALL_TARGET; set getarg(3), rand(3,20); } @@ -551,7 +554,7 @@ function script F_Lapine_EP17_1_SPC07 { // Normal Modification Part (Magic) function script F_Lapine_EP17_1_SPC08 { - .@r = rand(130); // No rates info + .@r = rand(130); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(3,15); } else if (.@r < 20) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(3,15); } else if (.@r < 30) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(3,15); } @@ -565,7 +568,7 @@ function script F_Lapine_EP17_1_SPC08 { else if (.@r < 110) { set getarg(0), RDMOPT_VAR_MATTPOWER; set getarg(1), rand(5,20); } else if (.@r < 120) { set getarg(0), RDMOPT_VAR_MAGICATKPERCENT; set getarg(1), rand(1,5); } else if (.@r < 130) { set getarg(0), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(1), rand(3,10); } - .@r = rand(160); // No rates info + .@r = rand(160); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_VAR_PLUSASPD; set getarg(3), 1; } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(3), rand(5,15); } else if (.@r < 30) { set getarg(2), RDMOPT_MDAMAGE_SIZE_SMALL_TARGET; set getarg(3), rand(3,10); } @@ -587,7 +590,7 @@ function script F_Lapine_EP17_1_SPC08 { // Advanced Modification Part (Magic) function script F_Lapine_EP17_1_SPC09 { - .@r = rand(130); // No rates info + .@r = rand(130); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(3,20); } else if (.@r < 20) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(3,20); } else if (.@r < 30) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(3,20); } @@ -601,7 +604,7 @@ function script F_Lapine_EP17_1_SPC09 { else if (.@r < 110) { set getarg(0), RDMOPT_VAR_MATTPOWER; set getarg(1), rand(15,40); } else if (.@r < 120) { set getarg(0), RDMOPT_VAR_MAGICATKPERCENT; set getarg(1), rand(1,10); } else if (.@r < 130) { set getarg(0), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(1), rand(3,10); } - .@r = rand(190); // No rates info + .@r = rand(190); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_VAR_PLUSASPD; set getarg(3), 1; } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(3), rand(5,30); } else if (.@r < 30) { set getarg(2), RDMOPT_MDAMAGE_SIZE_SMALL_TARGET; set getarg(3), rand(3,15); } @@ -624,7 +627,7 @@ function script F_Lapine_EP17_1_SPC09 { // Premium Modification Part (Magic) function script F_Lapine_EP17_1_SPC10 { - .@r = rand(130); // No rates info + .@r = rand(130); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(5,25); } else if (.@r < 20) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(5,25); } else if (.@r < 30) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(5,25); } @@ -638,7 +641,7 @@ function script F_Lapine_EP17_1_SPC10 { else if (.@r < 110) { set getarg(0), RDMOPT_VAR_MATTPOWER; set getarg(1), rand(20,60); } else if (.@r < 120) { set getarg(0), RDMOPT_VAR_MAGICATKPERCENT; set getarg(1), rand(3,15); } else if (.@r < 130) { set getarg(0), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(1), rand(3,10); } - .@r = rand(180); // No rates info + .@r = rand(180); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_VAR_PLUSASPD; set getarg(3), rand(1,2); } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(3), rand(5,45); } else if (.@r < 30) { set getarg(2), RDMOPT_MDAMAGE_SIZE_SMALL_TARGET; set getarg(3), rand(3,20); } @@ -661,7 +664,7 @@ function script F_Lapine_EP17_1_SPC10 { } function script F_Lapine_Charleston_Parts_W { - .@r = rand(2600); // NO rate info + .@r = rand(2600); //! TODO: Official Rates info if (.@r < 100) { .@option = RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; .@value = rand(1,20); @@ -749,7 +752,7 @@ function script F_Lapine_Charleston_Parts_W { } function script F_Lapine_Charleston_Parts_R { - .@r = rand(2500); // NO rate info + .@r = rand(2500); //! TODO: Official Rates info if (.@r < 100) { .@option = RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; .@value = rand(1,20); @@ -834,7 +837,7 @@ function script F_Lapine_Charleston_Parts_R { } function script F_Lapine_Gray_Charcoal_Range { - .@r = rand(150); // No rates info + .@r = rand(150); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(1,20); } else if (.@r < 20) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(1,20); } else if (.@r < 30) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(1,20); } @@ -851,7 +854,7 @@ function script F_Lapine_Gray_Charcoal_Range { else if (.@r < 140) { set getarg(0), RDMOPT_RANGE_ATTACK_DAMAGE_TARGET; set getarg(1), rand(5,10); } else if (.@r < 150) { set getarg(0), RDMOPT_WEAPON_INDESTRUCTIBLE; set getarg(1), 1; } - .@r = rand(140); // No rates info + .@r = rand(140); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_RACE_DAMAGE_NOTHING; set getarg(3), rand(1,20); } else if (.@r < 20) { set getarg(2), RDMOPT_RACE_DAMAGE_UNDEAD; set getarg(3), rand(1,20); } else if (.@r < 30) { set getarg(2), RDMOPT_RACE_DAMAGE_ANIMAL; set getarg(3), rand(1,20); } @@ -871,7 +874,7 @@ function script F_Lapine_Gray_Charcoal_Range { } function script F_Lapine_Gray_Charcoal_Magic { - .@r = rand(140); // No rates info + .@r = rand(140); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(1,20); } else if (.@r < 20) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(1,20); } else if (.@r < 30) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(1,20); } @@ -887,7 +890,7 @@ function script F_Lapine_Gray_Charcoal_Magic { else if (.@r < 130) { set getarg(0), RDMOPT_DEC_SP_CONSUMPTION; set getarg(1), rand(5,10); } else if (.@r < 140) { set getarg(0), RDMOPT_DEC_SPELL_DELAY_TIME; set getarg(1), rand(1,5); } - .@r = rand(140); // No rates info + .@r = rand(140); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_RACE_MDAMAGE_NOTHING; set getarg(3), rand(1,20); } else if (.@r < 20) { set getarg(2), RDMOPT_RACE_MDAMAGE_UNDEAD; set getarg(3), rand(1,20); } else if (.@r < 30) { set getarg(2), RDMOPT_RACE_MDAMAGE_ANIMAL; set getarg(3), rand(1,20); } @@ -907,7 +910,7 @@ function script F_Lapine_Gray_Charcoal_Magic { } function script F_Lapine_Gray_Charcoal_Melee { - .@r = rand(190); // No rates info + .@r = rand(190); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(1,20); } else if (.@r < 20) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(1,20); } else if (.@r < 30) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(1,20); } @@ -928,7 +931,7 @@ function script F_Lapine_Gray_Charcoal_Melee { else if (.@r < 180) { set getarg(0), RDMOPT_BODY_ATTR_SAINT; set getarg(1), 1; } else if (.@r < 190) { set getarg(0), RDMOPT_BODY_ATTR_DARKNESS; set getarg(1), 1; } - .@r = rand(150); // No rates info + .@r = rand(150); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_RACE_DAMAGE_NOTHING; set getarg(3), rand(1,20); } else if (.@r < 20) { set getarg(2), RDMOPT_RACE_DAMAGE_UNDEAD; set getarg(3), rand(1,20); } else if (.@r < 30) { set getarg(2), RDMOPT_RACE_DAMAGE_ANIMAL; set getarg(3), rand(1,20); } @@ -952,7 +955,7 @@ function script F_Lapine_Gray_Charcoal_Melee { * Geffen Magic Scroll Accessory */ function script F_Lapine_Geffen_Magic_Scroll2 { - .@r = rand(130); // No rates info + .@r = rand(130); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(1), rand(3,5); } else if (.@r < 20) { set getarg(0), RDMOPT_DEC_SPELL_CAST_TIME; set getarg(1), rand(5,7); } else if (.@r < 30) { set getarg(0), RDMOPT_DAMAGE_CRI_TARGET; set getarg(1), rand(5,8); } @@ -960,14 +963,14 @@ function script F_Lapine_Geffen_Magic_Scroll2 { else if (.@r < 50) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WATER_USER; set getarg(1), rand(3,5); } else if (.@r < 60) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WIND_USER; set getarg(1), rand(3,5); } else if (.@r < 70) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_GROUND_USER; set getarg(1), rand(3,5); } - else if (.@r < 80) { set getarg(0), RDMOPT_ATTR_TOLERACE_ALL; set getarg(1), rand(1,3); } // it's must be all elements except neutral: RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING + else if (.@r < 80) { set getarg(0), RDMOPT_ATTR_TOLERACE_ALL; set getarg(1), rand(1,3); } // FIXME: To all element except neutral. Change to RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING after #3993 else if (.@r < 90) { set getarg(0), RDMOPT_DEC_SP_CONSUMPTION; set getarg(1), rand(3,5); } else if (.@r < 100) { set getarg(0), RDMOPT_VAR_MAXHPPERCENT; set getarg(1), rand(1,3); } else if (.@r < 110) { set getarg(0), RDMOPT_VAR_MAXSPPERCENT; set getarg(1), rand(1,3); } else if (.@r < 120) { set getarg(0), RDMOPT_VAR_ATKPERCENT; set getarg(1), rand(1,3); } else if (.@r < 130) { set getarg(0), RDMOPT_VAR_MAGICATKPERCENT; set getarg(1), rand(1,3); } - .@r = rand(130); // No rates info + .@r = rand(130); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(3), rand(3,5); } else if (.@r < 20) { set getarg(2), RDMOPT_DEC_SPELL_CAST_TIME; set getarg(3), rand(5,7); } else if (.@r < 30) { set getarg(2), RDMOPT_DAMAGE_CRI_TARGET; set getarg(3), rand(5,8); } @@ -975,7 +978,7 @@ function script F_Lapine_Geffen_Magic_Scroll2 { else if (.@r < 50) { set getarg(2), RDMOPT_DAMAGE_PROPERTY_WATER_USER; set getarg(3), rand(3,5); } else if (.@r < 60) { set getarg(2), RDMOPT_DAMAGE_PROPERTY_WIND_USER; set getarg(3), rand(3,5); } else if (.@r < 70) { set getarg(2), RDMOPT_DAMAGE_PROPERTY_GROUND_USER; set getarg(3), rand(3,5); } - else if (.@r < 80) { set getarg(2), RDMOPT_ATTR_TOLERACE_ALL; set getarg(3), rand(1,3); } // it's must be all elements except neutral: RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING + else if (.@r < 80) { set getarg(2), RDMOPT_ATTR_TOLERACE_ALL; set getarg(3), rand(1,3); } // FIXME: To all element except neutral. Change to RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING after #3993 else if (.@r < 90) { set getarg(2), RDMOPT_DEC_SP_CONSUMPTION; set getarg(3), rand(3,5); } else if (.@r < 100) { set getarg(2), RDMOPT_VAR_MAXHPPERCENT; set getarg(3), rand(1,3); } else if (.@r < 110) { set getarg(2), RDMOPT_VAR_MAXSPPERCENT; set getarg(3), rand(1,3); } @@ -989,7 +992,7 @@ function script F_Lapine_Geffen_Magic_Scroll2 { * Geffen Magic Scroll Armor */ function script F_Lapine_Geffen_Magic_Scroll { - .@r = rand(80); // No rates info + .@r = rand(80); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_VAR_STRAMOUNT; set getarg(1), rand(1,4); } else if (.@r < 20) { set getarg(0), RDMOPT_VAR_AGIAMOUNT; set getarg(1), rand(1,4); } else if (.@r < 30) { set getarg(0), RDMOPT_VAR_VITAMOUNT; set getarg(1), rand(1,4); } @@ -999,7 +1002,7 @@ function script F_Lapine_Geffen_Magic_Scroll { else if (.@r < 70) { set getarg(0), RDMOPT_VAR_MAXHPPERCENT; set getarg(1), rand(3,5); } else if (.@r < 80) { set getarg(0), RDMOPT_VAR_MAXSPPERCENT; set getarg(1), rand(3,5); } - .@r = rand(150); // No rates info + .@r = rand(150); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_VAR_MAXHPAMOUNT; set getarg(3), rand(50,100); } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_MAXSPAMOUNT; set getarg(3), rand(50,100); } else if (.@r < 30) { set getarg(2), RDMOPT_VAR_HITSUCCESSVALUE; set getarg(3), rand(15,30); } @@ -1391,18 +1394,19 @@ function script F_Lapine_Gold_Statue { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3954806 function script F_Lapine_Shadow_Refine_Hammer { - .@r = rand(1000); // No rates info - if (.@r < 20) { set getarg(0), 1; return; } - else if (.@r < 30) { set getarg(0), 2; return; } - else if (.@r < 80) { set getarg(0), 3; return; } - else if (.@r < 700) { set getarg(0), 4; return; } - else if (.@r < 80) { set getarg(0), 5; return; } - else if (.@r < 40) { set getarg(0), 6; return; } - else if (.@r < 20) { set getarg(0), 7; return; } - else if (.@r < 15) { set getarg(0), 8; return; } - else if (.@r < 10) { set getarg(0), 9; return; } - else { set getarg(0), 10; return; } + .@r = rand(10000); + if (.@r < 440) { set getarg(0), 1; return; } + else if (.@r < 1319) { set getarg(0), 2; return; } + else if (.@r < 3022) { set getarg(0), 3; return; } + else if (.@r < 6538) { set getarg(0), 4; return; } + else if (.@r < 8296) { set getarg(0), 5; return; } + else if (.@r < 9175) { set getarg(0), 6; return; } + else if (.@r < 9615) { set getarg(0), 7; return; } + else if (.@r < 9835) { set getarg(0), 8; return; } + else if (.@r < 9945) { set getarg(0), 9; return; } + else { set getarg(0), 10; return; } return; } @@ -1411,8 +1415,9 @@ function script F_Lapine_Shadow_9_Refine_Hammer { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3964879 function script F_Lapine_Magic_Cat_Hand { - .@r = rand(160); // No rates info + .@r = rand(160); if (.@r < 10) { set getarg(0), RDMOPT_VAR_STRAMOUNT; set getarg(1), rand(1,7); } if (.@r < 20) { set getarg(0), RDMOPT_VAR_AGIAMOUNT; set getarg(1), rand(1,7); } if (.@r < 30) { set getarg(0), RDMOPT_VAR_VITAMOUNT; set getarg(1), rand(1,7); } @@ -1430,7 +1435,7 @@ function script F_Lapine_Magic_Cat_Hand { if (.@r < 150) { set getarg(0), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(1), rand(5,20); } if (.@r < 160) { set getarg(0), RDMOPT_DEC_SPELL_DELAY_TIME; set getarg(1), rand(5,10); } - .@r = rand(80); // No rates info + .@r = rand(80); if (.@r < 10) { set getarg(2), RDMOPT_HEAL_VALUE; set getarg(3), rand(5,15); } if (.@r < 20) { set getarg(2), RDMOPT_HEAL_MODIFY_PERCENT; set getarg(3), rand(5,15); } if (.@r < 30) { set getarg(2), RDMOPT_VAR_ATKPERCENT; set getarg(3), rand(1,7); } @@ -1443,17 +1448,18 @@ function script F_Lapine_Magic_Cat_Hand { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3999577 function script F_Lapine_Candy_Pouch_Blessing_Scroll_W { - .@r = rand(70); // No rates info + .@r = rand(70); if (.@r < 10) { set getarg(0), RDMOPT_VAR_STRAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 20) { set getarg(0), RDMOPT_VAR_AGIAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 30) { set getarg(0), RDMOPT_VAR_VITAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 40) { set getarg(0), RDMOPT_VAR_INTAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 50) { set getarg(0), RDMOPT_VAR_DEXAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 60) { set getarg(0), RDMOPT_VAR_LUKAMOUNT; set getarg(1), rand(1,3); } - else if (.@r < 70) { set getarg(0), RDMOPT_DEC_SPELL_DELAY_TIME; set getarg(1), rand(1,5); } + else if (.@r < 70) { set getarg(0), RDMOPT_DEC_SPELL_DELAY_TIME; set getarg(1), rand(1,3); } - .@r = rand(220); // No rates info + .@r = rand(220); if (.@r < 10) { set getarg(2), RDMOPT_VAR_HITSUCCESSVALUE; set getarg(3), rand(1,15); } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(3), rand(1,20); } else if (.@r < 30) { set getarg(2), RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; set getarg(3), rand(1,7); } @@ -1480,17 +1486,18 @@ function script F_Lapine_Candy_Pouch_Blessing_Scroll_W { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3999578 function script F_Lapine_Candy_Pouch_Blessing_Scroll_R { - .@r = rand(70); // No rates info + .@r = rand(70); if (.@r < 10) { set getarg(0), RDMOPT_VAR_STRAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 20) { set getarg(0), RDMOPT_VAR_AGIAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 30) { set getarg(0), RDMOPT_VAR_VITAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 40) { set getarg(0), RDMOPT_VAR_INTAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 50) { set getarg(0), RDMOPT_VAR_DEXAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 60) { set getarg(0), RDMOPT_VAR_LUKAMOUNT; set getarg(1), rand(1,3); } - else if (.@r < 70) { set getarg(0), RDMOPT_DEC_SPELL_DELAY_TIME; set getarg(1), rand(1,5); } + else if (.@r < 70) { set getarg(0), RDMOPT_DEC_SPELL_DELAY_TIME; set getarg(1), rand(1,3); } - .@r = rand(220); // No rates info + .@r = rand(220); if (.@r < 10) { set getarg(2), RDMOPT_VAR_HITSUCCESSVALUE; set getarg(3), rand(1,15); } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(3), rand(1,20); } else if (.@r < 30) { set getarg(2), RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; set getarg(3), rand(1,7); } @@ -1517,17 +1524,18 @@ function script F_Lapine_Candy_Pouch_Blessing_Scroll_R { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3999579 function script F_Lapine_Candy_Pouch_Blessing_Scroll_M { - .@r = rand(70); // No rates info + .@r = rand(70); if (.@r < 10) { set getarg(0), RDMOPT_VAR_STRAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 20) { set getarg(0), RDMOPT_VAR_AGIAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 30) { set getarg(0), RDMOPT_VAR_VITAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 40) { set getarg(0), RDMOPT_VAR_INTAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 50) { set getarg(0), RDMOPT_VAR_DEXAMOUNT; set getarg(1), rand(1,3); } else if (.@r < 60) { set getarg(0), RDMOPT_VAR_LUKAMOUNT; set getarg(1), rand(1,3); } - else if (.@r < 70) { set getarg(0), RDMOPT_DEC_SPELL_DELAY_TIME; set getarg(1), rand(1,5); } + else if (.@r < 70) { set getarg(0), RDMOPT_DEC_SPELL_DELAY_TIME; set getarg(1), rand(1,3); } - .@r = rand(220); // No rates info + .@r = rand(220); if (.@r < 10) { set getarg(2), RDMOPT_VAR_MDEFPOWER; set getarg(3), rand(1,15); } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(3), rand(1,20); } else if (.@r < 30) { set getarg(2), RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET; set getarg(3), rand(1,7); } @@ -1555,7 +1563,7 @@ function script F_Lapine_Candy_Pouch_Blessing_Scroll_M { } function script F_Lapine_Grown_Gunslinger { - .@r = rand(160); // No rates info + .@r = rand(160); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_VAR_STRAMOUNT; set getarg(1), rand(1,7); } else if (.@r < 20) { set getarg(0), RDMOPT_VAR_AGIAMOUNT; set getarg(1), rand(1,7); } else if (.@r < 30) { set getarg(0), RDMOPT_VAR_VITAMOUNT; set getarg(1), rand(1,7); } @@ -1573,7 +1581,7 @@ function script F_Lapine_Grown_Gunslinger { else if (.@r < 150) { set getarg(0), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(1), rand(5,20); } else if (.@r < 160) { set getarg(0), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(1), rand(5,10); } - .@r = rand(80); // No rates info + .@r = rand(80); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_HEAL_VALUE; set getarg(3), rand(5,15); } else if (.@r < 20) { set getarg(2), RDMOPT_HEAL_MODIFY_PERCENT; set getarg(3), rand(1,7); } else if (.@r < 30) { set getarg(2), RDMOPT_VAR_ATKPERCENT; set getarg(3), rand(1,7); } @@ -1586,9 +1594,10 @@ function script F_Lapine_Grown_Gunslinger { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3964871 function script F_Lapine_Uniform_Repair_Kits { // Option:1 - .@r = rand(90); // No rates info + .@r = rand(90); if (.@r < 10) { set getarg(0), RDMOPT_BODY_ATTR_WATER; set getarg(1), rand(1,3); } else if (.@r < 20) { set getarg(0), RDMOPT_BODY_ATTR_GROUND; set getarg(1), rand(1,3); } else if (.@r < 30) { set getarg(0), RDMOPT_BODY_ATTR_FIRE; set getarg(1), rand(1,3); } @@ -1599,7 +1608,7 @@ function script F_Lapine_Uniform_Repair_Kits { else if (.@r < 80) { set getarg(0), RDMOPT_VAR_MDEFPOWER; set getarg(1), rand(5,15); } else if (.@r < 90) { set getarg(0), RDMOPT_BODY_INDESTRUCTIBLE; set getarg(1), 1; } - .@r = rand(220); // No rates info + .@r = rand(220); if (.@r < 10) { set getarg(2), RDMOPT_VAR_STRAMOUNT; set getarg(3), rand(1,4); } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_AGIAMOUNT; set getarg(3), rand(1,4); } else if (.@r < 30) { set getarg(2), RDMOPT_VAR_VITAMOUNT; set getarg(3), rand(1,4); } @@ -1609,9 +1618,10 @@ function script F_Lapine_Uniform_Repair_Kits { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3964872 function script F_Lapine_Magical_Booster_Enchant { // Option:1 - .@r = rand(160); // No rates info + .@r = rand(160); if (.@r < 10) { set getarg(0), RDMOPT_VAR_STRAMOUNT; set getarg(1), 1; } else if (.@r < 20) { set getarg(0), RDMOPT_VAR_AGIAMOUNT; set getarg(1), 1; } else if (.@r < 30) { set getarg(0), RDMOPT_VAR_VITAMOUNT; set getarg(1), 1; } @@ -1629,7 +1639,7 @@ function script F_Lapine_Magical_Booster_Enchant { else if (.@r < 150) { set getarg(0), RDMOPT_VAR_AVOIDSUCCESSVALUE; set getarg(1), rand(5,20); } else if (.@r < 160) { set getarg(0), RDMOPT_DEC_SPELL_DELAY_TIME; set getarg(1), rand(1,2); } // Option:2 - .@r = rand(140); // No rates info + .@r = rand(140); if (.@r < 10) { set getarg(2), RDMOPT_VAR_STRAMOUNT; set getarg(3), 1; } else if (.@r < 20) { set getarg(2), RDMOPT_VAR_AGIAMOUNT; set getarg(3), 1; } else if (.@r < 30) { set getarg(2), RDMOPT_VAR_VITAMOUNT; set getarg(3), 1; } @@ -1662,8 +1672,9 @@ function script F_Lapine_Metal_Rifine_Ticket { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3999572 function script F_Lapine_Fan_Modification_Kits { - .@r = rand(130); // No rates info + .@r = rand(130); if (.@r < 10) { set getarg(0), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(1), rand(3,5); } else if (.@r < 20) { set getarg(0), RDMOPT_DEC_SPELL_CAST_TIME; set getarg(1), rand(5,8); } else if (.@r < 30) { set getarg(0), RDMOPT_DAMAGE_CRI_TARGET; set getarg(1), rand(5,8); } @@ -1671,13 +1682,13 @@ function script F_Lapine_Fan_Modification_Kits { else if (.@r < 50) { set getarg(0), RDMOPT_ATTR_TOLERACE_GROUND; set getarg(1), rand(3,5); } else if (.@r < 60) { set getarg(0), RDMOPT_ATTR_TOLERACE_FIRE; set getarg(1), rand(3,5); } else if (.@r < 70) { set getarg(0), RDMOPT_ATTR_TOLERACE_WIND; set getarg(1), rand(3,5); } - else if (.@r < 80) { set getarg(0), RDMOPT_ATTR_TOLERACE_ALL; set getarg(1), rand(1,3); } // To all element except neutral + else if (.@r < 80) { set getarg(0), RDMOPT_ATTR_TOLERACE_ALL; set getarg(1), rand(1,3); } // FIXME: To all element except neutral. Change to RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING after #3993 else if (.@r < 90) { set getarg(0), RDMOPT_DEC_SP_CONSUMPTION; set getarg(1), rand(3,5); } else if (.@r < 100) { set getarg(0), RDMOPT_VAR_MAXHPPERCENT; set getarg(1), rand(1,1); } else if (.@r < 110) { set getarg(0), RDMOPT_VAR_MAXSPPERCENT; set getarg(1), rand(1,3); } else if (.@r < 120) { set getarg(0), RDMOPT_VAR_ATKPERCENT; set getarg(1), rand(1,3); } else if (.@r < 130) { set getarg(0), RDMOPT_VAR_MAGICATKPERCENT; set getarg(1), rand(1,3); } - .@r = rand(130); // No rates info + .@r = rand(130); if (.@r < 10) { set getarg(2), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(3), rand(3,5); } else if (.@r < 20) { set getarg(2), RDMOPT_DEC_SPELL_CAST_TIME; set getarg(3), rand(5,8); } else if (.@r < 30) { set getarg(2), RDMOPT_DAMAGE_CRI_TARGET; set getarg(3), rand(5,8); } @@ -1685,7 +1696,7 @@ function script F_Lapine_Fan_Modification_Kits { else if (.@r < 50) { set getarg(2), RDMOPT_ATTR_TOLERACE_GROUND; set getarg(3), rand(3,5); } else if (.@r < 60) { set getarg(2), RDMOPT_ATTR_TOLERACE_FIRE; set getarg(3), rand(3,5); } else if (.@r < 70) { set getarg(2), RDMOPT_ATTR_TOLERACE_WIND; set getarg(3), rand(3,5); } - else if (.@r < 80) { set getarg(2), RDMOPT_ATTR_TOLERACE_ALL; set getarg(3), rand(1,3); } // To all element except neutral + else if (.@r < 80) { set getarg(2), RDMOPT_ATTR_TOLERACE_ALL; set getarg(3), rand(1,3); } // FIXME: To all element except neutral. Change to RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING after #3993 else if (.@r < 90) { set getarg(2), RDMOPT_DEC_SP_CONSUMPTION; set getarg(3), rand(3,5); } else if (.@r < 100) { set getarg(2), RDMOPT_VAR_MAXHPPERCENT; set getarg(3), rand(1,1); } else if (.@r < 110) { set getarg(2), RDMOPT_VAR_MAXSPPERCENT; set getarg(3), rand(1,3); } @@ -1694,9 +1705,10 @@ function script F_Lapine_Fan_Modification_Kits { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955672 function script F_Lapine_Class_Shadow_Pendant_Options { // Refine - .@r = rand(10000); // No rates info + .@r = rand(10000); if (.@r < 5005) { set getarg(0), 1; } else if (.@r < 7507) { set getarg(0), 2; } else if (.@r < 8758) { set getarg(0), 3; } @@ -1718,9 +1730,10 @@ function script F_Lapine_Class_Shadow_Pendant_Options { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955674 function script F_Lapine_Class_Shadow_Earring_Options { // Refine - .@r = rand(10000); // No rates info + .@r = rand(10000); if (.@r < 5005) { set getarg(0), 1; } else if (.@r < 7507) { set getarg(0), 2; } else if (.@r < 8758) { set getarg(0), 3; } @@ -1742,9 +1755,10 @@ function script F_Lapine_Class_Shadow_Earring_Options { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955671 function script F_Lapine_Class_Shadow_Shield_Options { // Refine - .@r = rand(10000); // No rates info + .@r = rand(10000); if (.@r < 5005) { set getarg(0), 1; } else if (.@r < 7507) { set getarg(0), 2; } else if (.@r < 8758) { set getarg(0), 3; } @@ -1766,9 +1780,10 @@ function script F_Lapine_Class_Shadow_Shield_Options { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955669 function script F_Lapine_Class_Shadow_Shoes_Options { // Refine - .@r = rand(10000); // No rates info + .@r = rand(10000); if (.@r < 5005) { set getarg(0), 1; } else if (.@r < 7507) { set getarg(0), 2; } else if (.@r < 8758) { set getarg(0), 3; } @@ -1790,9 +1805,10 @@ function script F_Lapine_Class_Shadow_Shoes_Options { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955664 function script F_Lapine_Class_Shadow_Armor_Options { // Refine - .@r = rand(10000); // No rates info + .@r = rand(10000); if (.@r < 5005) { set getarg(0), 1; } else if (.@r < 7507) { set getarg(0), 2; } else if (.@r < 8758) { set getarg(0), 3; } @@ -1814,9 +1830,10 @@ function script F_Lapine_Class_Shadow_Armor_Options { return; } +// http://ro.gnjoy.com/news/probability/View.asp?seq=3955662 function script F_Lapine_Class_Shadow_Weapon_Options { // Refine - .@r = rand(10000); // No rates info + .@r = rand(10000); if (.@r < 5005) { set getarg(0), 1; } else if (.@r < 7507) { set getarg(0), 2; } else if (.@r < 8758) { set getarg(0), 3; } @@ -1854,7 +1871,7 @@ function script F_Lapine_Grace_Refine_Ticket { } function script F_Lapine_Imperial_Convert1 { - .@r = rand(100); // No rates info + .@r = rand(100); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(1,5); return; } else if (.@r < 20) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(1,5); return; } else if (.@r < 30) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(1,5); return; } @@ -1869,7 +1886,7 @@ function script F_Lapine_Imperial_Convert1 { } function script F_Lapine_Imperial_Convert2 { - .@r = rand(100); // No rates info + .@r = rand(100); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(1,5); return; } else if (.@r < 20) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(1,5); return; } else if (.@r < 30) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(1,5); return; } @@ -1884,12 +1901,12 @@ function script F_Lapine_Imperial_Convert2 { } function script F_Lapine_Imperial_Convert3 { - .@r = rand(80); // No rates info + .@r = rand(80); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_ATTR_TOLERACE_FIRE; set getarg(1), rand(1,5); return; } else if (.@r < 20) { set getarg(0), RDMOPT_ATTR_TOLERACE_WIND; set getarg(1), rand(1,5); return; } else if (.@r < 30) { set getarg(0), RDMOPT_ATTR_TOLERACE_GROUND; set getarg(1), rand(1,5); return; } else if (.@r < 40) { set getarg(0), RDMOPT_ATTR_TOLERACE_WATER; set getarg(1), rand(1,5); return; } - else if (.@r < 50) { set getarg(0), RDMOPT_ATTR_TOLERACE_ALL; set getarg(1), rand(1,5); return; } // All elements except neutral + else if (.@r < 50) { set getarg(0), RDMOPT_ATTR_TOLERACE_ALL; set getarg(1), rand(1,5); return; } // FIXME: To all element except neutral. Change to RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING after #3993 else if (.@r < 60) { set getarg(0), RDMOPT_DEC_SP_CONSUMPTION; set getarg(1), rand(1,5); return; } else if (.@r < 70) { set getarg(0), RDMOPT_VAR_MAXHPPERCENT; set getarg(1), rand(1,5); return; } else if (.@r < 80) { set getarg(0), RDMOPT_VAR_MAXSPPERCENT; set getarg(1), rand(1,5); return; } @@ -1897,7 +1914,7 @@ function script F_Lapine_Imperial_Convert3 { } function script F_Lapine_Imperial_Convert4 { - .@r = rand(100); // No rates info + .@r = rand(100); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(1,5); return; } else if (.@r < 20) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(1,5); return; } else if (.@r < 30) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(1,5); return; } @@ -1912,7 +1929,7 @@ function script F_Lapine_Imperial_Convert4 { } function script F_Lapine_Grace_Convert1 { - .@r = rand(100); // No rates info + .@r = rand(100); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(1,5); } else if (.@r < 20) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(1,5); } else if (.@r < 30) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(1,5); } @@ -1923,7 +1940,7 @@ function script F_Lapine_Grace_Convert1 { else if (.@r < 80) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET; set getarg(1), rand(1,5); } else if (.@r < 90) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET; set getarg(1), rand(1,5); } else if (.@r < 100) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET; set getarg(1), rand(1,5); } - .@r = rand(130); // No rates info + .@r = rand(130); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_RACE_DAMAGE_NOTHING; set getarg(3), rand(1,5); } else if (.@r < 20) { set getarg(2), RDMOPT_RACE_DAMAGE_UNDEAD; set getarg(3), rand(1,5); } else if (.@r < 30) { set getarg(2), RDMOPT_RACE_DAMAGE_ANIMAL; set getarg(3), rand(1,5); } @@ -1941,7 +1958,7 @@ function script F_Lapine_Grace_Convert1 { } function script F_Lapine_Grace_Convert2 { - .@r = rand(100); // No rates info + .@r = rand(100); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(1,5); } else if (.@r < 20) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(1,5); } else if (.@r < 30) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(1,5); } @@ -1952,7 +1969,7 @@ function script F_Lapine_Grace_Convert2 { else if (.@r < 80) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET; set getarg(1), rand(1,5); } else if (.@r < 90) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET; set getarg(1), rand(1,5); } else if (.@r < 100) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET; set getarg(1), rand(1,5); } - .@r = rand(130); // No rates info + .@r = rand(130); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_RACE_MDAMAGE_NOTHING; set getarg(3), rand(1,5); } else if (.@r < 20) { set getarg(2), RDMOPT_RACE_MDAMAGE_UNDEAD; set getarg(3), rand(1,5); } else if (.@r < 30) { set getarg(2), RDMOPT_RACE_MDAMAGE_ANIMAL; set getarg(3), rand(1,5); } @@ -1970,16 +1987,16 @@ function script F_Lapine_Grace_Convert2 { } function script F_Lapine_Grace_Convert3 { - .@r = rand(80); // No rates info + .@r = rand(80); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_ATTR_TOLERACE_WATER; set getarg(1), rand(1,5); } else if (.@r < 20) { set getarg(0), RDMOPT_ATTR_TOLERACE_GROUND; set getarg(1), rand(1,5); } else if (.@r < 30) { set getarg(0), RDMOPT_ATTR_TOLERACE_FIRE; set getarg(1), rand(1,5); } else if (.@r < 40) { set getarg(0), RDMOPT_ATTR_TOLERACE_WIND; set getarg(1), rand(1,5); } - else if (.@r < 50) { set getarg(0), RDMOPT_ATTR_TOLERACE_ALL; set getarg(1), rand(1,5); } + else if (.@r < 50) { set getarg(0), RDMOPT_ATTR_TOLERACE_ALL; set getarg(1), rand(1,5); } // FIXME: To all element except neutral. Change to RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING after #3993 else if (.@r < 60) { set getarg(0), RDMOPT_DEC_SP_CONSUMPTION; set getarg(1), rand(1,5); } else if (.@r < 70) { set getarg(0), RDMOPT_VAR_MAXHPPERCENT; set getarg(1), rand(1,5); } else if (.@r < 80) { set getarg(0), RDMOPT_VAR_MAXSPPERCENT; set getarg(1), rand(1,5); } - .@r = rand(130); // No rates info + .@r = rand(130); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_DAMAGE_SIZE_SMALL_TARGET; set getarg(3), rand(1,5); } else if (.@r < 20) { set getarg(2), RDMOPT_DAMAGE_SIZE_LARGE_TARGET; set getarg(3), rand(1,5); } else if (.@r < 30) { set getarg(2), RDMOPT_DAMAGE_SIZE_MIDIUM_USER; set getarg(3), rand(1,5); } @@ -1997,16 +2014,16 @@ function script F_Lapine_Grace_Convert3 { } function script F_Lapine_Grace_Convert4 { - .@r = rand(80); // No rates info + .@r = rand(80); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_ATTR_TOLERACE_WATER; set getarg(1), rand(1,5); } else if (.@r < 20) { set getarg(0), RDMOPT_ATTR_TOLERACE_GROUND; set getarg(1), rand(1,5); } else if (.@r < 30) { set getarg(0), RDMOPT_ATTR_TOLERACE_FIRE; set getarg(1), rand(1,5); } else if (.@r < 40) { set getarg(0), RDMOPT_ATTR_TOLERACE_WIND; set getarg(1), rand(1,5); } - else if (.@r < 50) { set getarg(0), RDMOPT_ATTR_TOLERACE_ALL; set getarg(1), rand(1,5); } + else if (.@r < 50) { set getarg(0), RDMOPT_ATTR_TOLERACE_ALL; set getarg(1), rand(1,5); } // FIXME: To all element except neutral. Change to RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING after #3993 else if (.@r < 60) { set getarg(0), RDMOPT_DEC_SP_CONSUMPTION; set getarg(1), rand(1,5); } else if (.@r < 70) { set getarg(0), RDMOPT_VAR_MAXHPPERCENT; set getarg(1), rand(1,5); } else if (.@r < 80) { set getarg(0), RDMOPT_VAR_MAXSPPERCENT; set getarg(1), rand(1,5); } - .@r = rand(130); // No rates info + .@r = rand(130); //! TODO: Official Rates info if (.@r < 10) { set getarg(2), RDMOPT_MDAMAGE_SIZE_SMALL_TARGET; set getarg(3), rand(1,5); } else if (.@r < 20) { set getarg(2), RDMOPT_MDAMAGE_SIZE_LARGE_TARGET; set getarg(3), rand(1,5); } else if (.@r < 30) { set getarg(2), RDMOPT_MDAMAGE_SIZE_MIDIUM_USER; set getarg(3), rand(1,5); } @@ -2025,7 +2042,7 @@ function script F_Lapine_Grace_Convert4 { function script F_Lapine_Shadow_Random_Mix { // Option:1 - .@r = rand(200); // No rates info + .@r = rand(200); //! TODO: Official Rates info if (.@r < 10) { set getarg(0), RDMOPT_VAR_ATTPOWER; set getarg(1), rand(1,15); return; } if (.@r < 20) { set getarg(0), RDMOPT_VAR_ATTMPOWER; set getarg(1), rand(1,15); return; } if (.@r < 30) { set getarg(0), RDMOPT_VAR_ATKPERCENT; set getarg(1), rand(1,3); return; } @@ -2049,32 +2066,32 @@ function script F_Lapine_Shadow_Random_Mix { return; } -// TODO +//! TODO function script F_Lapine_Ein_Ddbox { return; } -// TODO +//! TODO function script F_Lapine_Ein_Ddbox2 { return; } -// TODO +//! TODO function script F_Lapine_Abyss_Ddbox { return; } -// TODO +//! TODO function script F_Lapine_Abyss_Ddbox2 { return; } -// TODO +//! TODO function script F_Lapine_Abyss_Ddbox3 { return; } -// TODO +//! TODO function script F_Lapine_Abyss_Ddbox4 { return; } diff --git a/src/map/item_synthesis.cpp b/src/map/item_synthesis.cpp index 7aff767176..6d83e4dcf9 100644 --- a/src/map/item_synthesis.cpp +++ b/src/map/item_synthesis.cpp @@ -58,12 +58,17 @@ uint64 ItemSynthesisDatabase::parseBodyNode(const YAML::Node &node) { return 0; } + if (exists && this->nodeExists(node, "ClearSourceItem")) { + ShowNotice("item_synthesis: Cleared all items in SourceItem. Synthesis ID: %d\n", id); + if (!entry->sources.empty()) + entry->sources.clear(); + } + if (this->nodeExists(node, "SourceItem")) { const YAML::Node& sourceNode = node["SourceItem"]; - if (!entry->sources.empty()) - entry->sources.clear(); - entry->sources.reserve(entry->source_needed); + if (!exists) + entry->sources.reserve(entry->source_needed); for (const YAML::Node &source : sourceNode) { s_item_synthesis_source source_item = {}; @@ -76,10 +81,28 @@ uint64 ItemSynthesisDatabase::parseBodyNode(const YAML::Node &node) { continue; }*/ + if (exists && this->nodeExists(source, "Remove")) { + entry->sources.erase(std::remove_if(entry->sources.begin(), entry->sources.end(), [&source_item](const s_item_synthesis_source &x) { return x.nameid == source_item.nameid; })); + ShowNotice("item_synthesis: Removed '%d' from SourceItem. Synthesis ID: %d\n", source_item.nameid, id); + continue; + } + if (this->nodeExists(source, "Amount")) this->asUInt16(source, "Amount", source_item.amount); - entry->sources.push_back(source_item); + if (entry->sources.end() == std::find_if( + entry->sources.begin(), entry->sources.end(), [&source_item](s_item_synthesis_source &x) + { + if (x.nameid == source_item.nameid) { + printf("changed %d from %d", x.nameid, x.amount); + x.amount = source_item.amount; + printf(" to %d\n", x.amount); + return true; + } + return false; + } + )) + entry->sources.push_back(source_item); } } diff --git a/src/map/item_upgrade.cpp b/src/map/item_upgrade.cpp index d96af6b59a..189a899b89 100644 --- a/src/map/item_upgrade.cpp +++ b/src/map/item_upgrade.cpp @@ -61,13 +61,16 @@ uint64 ItemUpgradeDatabase::parseBodyNode(const YAML::Node &node) { entry->result = code; } + if (exists && this->nodeExists(node, "ClearTargetItem")) { + ShowNotice("item_upgrade: Cleared all items in TargetItem. Upgrade ID: %d\n", id); + if (!entry->targets.empty()) + entry->targets.clear(); + } + if (this->nodeExists(node, "TargetItem")) { const YAML::Node& targetNode = node["TargetItem"]; unsigned int itemid; - if (!entry->targets.empty()) - entry->targets.clear(); - for (const YAML::Node &target : targetNode) { if (!this->asUInt32(target, "Item", itemid)) continue; @@ -76,6 +79,13 @@ uint64 ItemUpgradeDatabase::parseBodyNode(const YAML::Node &node) { this->invalidWarning(target, "Unknown item with ID %u.\n", itemid); continue; }*/ + + if (exists && this->nodeExists(target, "Remove")) { + entry->targets.erase(std::remove_if(entry->targets.begin(), entry->targets.end(), [&itemid](const unsigned int &x) { return x == itemid; })); + ShowNotice("item_upgrade: Removed '%d' from TargetItem. Upgrade ID: %d\n", itemid, id); + continue; + } + entry->targets.push_back(itemid); } } diff --git a/src/map/itemdb.hpp b/src/map/itemdb.hpp index 98b66b7d99..65c0f3181a 100644 --- a/src/map/itemdb.hpp +++ b/src/map/itemdb.hpp @@ -783,6 +783,8 @@ enum e_random_item_group { IG_COSTUME_ENCHANT_STONE_BOX17, IG_COSTUME_ENCHANT_STONE_BOX18, IG_COSTUME_ENCHANT_STONE_BOX19, + IG_PERFECTSIZE_MIX, + IG_MAGICPIERCING_MIX, }; /// Enum for bound/sell restricted selling diff --git a/src/map/script_constants.hpp b/src/map/script_constants.hpp index 3f7f532261..5b30bcec38 100644 --- a/src/map/script_constants.hpp +++ b/src/map/script_constants.hpp @@ -5031,6 +5031,8 @@ export_constant(IG_COSTUME_ENCHANT_STONE_BOX17); export_constant(IG_COSTUME_ENCHANT_STONE_BOX18); export_constant(IG_COSTUME_ENCHANT_STONE_BOX19); + export_constant(IG_PERFECTSIZE_MIX); + export_constant(IG_MAGICPIERCING_MIX); /* unit stop walking */ export_constant(USW_NONE);