Ver código fonte

Follow up
* Fixed random options for `F_Lapine_Gray_Charcoal_Range`, `F_Lapine_Gray_Charcoal_Magic`, and `F_Lapine_Gray_Charcoal_Melee`
* Another weight fixes
* And added some hat effects

Cydh 5 anos atrás
pai
commit
22c466ba65
4 arquivos alterados com 127 adições e 122 exclusões
  1. 12 12
      db/re/item_db.txt
  2. 2 3
      db/re/item_synthesis.yml
  3. 10 13
      db/re/item_upgrade.yml
  4. 103 94
      npc/re/other/LapineEnchants.txt

+ 12 - 12
db/re/item_db.txt

@@ -11347,7 +11347,7 @@
 22526,Level_Up_Box150,Level Up Box(150),18,10,,0,,,,0,0xFFFFFFFF,63,2,,,150,,,{ getgroupitem(IG_Level_Up_Box150); },{},{}
 22527,Level_Up_Box160,Level Up Box(160),18,10,,0,,,,0,0xFFFFFFFF,63,2,,,160,,,{ getgroupitem(IG_Level_Up_Box160); },{},{}
 22528,Pet_Exchange_Ticket_Box,Pet Exchange Ticket Box,18,10,,20,,,,,,,,,,,,,{ /*TODO*/ },{},{}
-22529,Shadow_Exchange_Box,Shadow Exchange SynthesisBox,11,,,1,,,,,0xFFFFFFFF,63,2,,,,,,{ synthesisui 22529; },{},{}
+22529,Shadow_Exchange_Box,Shadow Exchange SynthesisBox,11,,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ synthesisui 22529; },{},{}
 22530,Christmas_Box,Christmas Box,18,10,,200,,,,0,0xFFFFFFFF,63,2,,,1,,,{ getgroupitem(IG_Christmas_Box); },{},{}
 22531,Special_Christmas_Box,Special Christmas Box,18,10,,200,,,,0,0xFFFFFFFF,63,2,,,1,,,{ getgroupitem(IG_Special_Christmas_Box); },{},{}
 22532,Santa_Gift,Santa Gift,18,10,,200,,,,0,0xFFFFFFFF,63,2,,,1,,,{ getgroupitem(IG_Santa_Gift); },{},{}
@@ -12258,8 +12258,8 @@
 25131,Fallen_Energy_Particle,Fallen Energy Particle,3,0,,0,,,,,,,,,,,,,{},{},{}
 25132,Pumpkin_Deco,Pumpkin Deco,3,0,,0,,,,,,,,,,,,,{},{},{}
 25133,Dried_White_Stem,Dried White Stem,3,0,,0,,,,,,,,,,,,,{},{},{}
-25136,ElectricEffect_Middle,ElectricEffect (Middle),6,,,100,,,,,,,,,,,,,{/*TODO*/},{},{}
-25137,GreenFloor_Bottom,GreenFloor (Bottom),6,,,100,,,,,,,,,,,,,{/*TODO*/},{},{}
+25136,ElectricEffect_Middle,ElectricEffect (Middle),6,,,100,,,,,,,,,,,,,{ hateffect HAT_EF_Electric,true; },{},{ hateffect HAT_EF_Electric,false; }
+25137,GreenFloor_Bottom,GreenFloor (Bottom),6,,,100,,,,,,,,,,,,,{ hateffect HAT_EF_Green_Floor,true; },{},{ hateffect HAT_EF_Green_Floor,false; }
 25138,ShrinkEffect_Middle,ShrinkEffect (Middle),6,,,100,,,,,,,,,,,,,{/*TODO*/},{},{}
 25139,Identify_Stone,Identify Stone (Bottom),6,,,100,,,,,,,,,,,,,{ skill "MC_IDENTIFY",1; },{},{}
 25141,EXPStone_Middle,EXPStone (Middle),6,,,100,,,,,,,,,,,,,{ bonus2 bExpAddClass,Class_All,2; },{},{}
@@ -12307,7 +12307,7 @@
 25185,Locket_Pendant,Locket Pendant,3,0,,0,,,,,,,,,,,,,{},{},{}
 25187,Slug_Bullet,Slug Bullet,3,1200,,1200,,,,,,,,,,,,,{},{},{}
 25205,ShrinkEffect_Bottom,ShrinkEffect (Bottom),6,,,100,,,,,,,,,,,,,{/*TODO*/},{},{}
-25206,ElectricEffect_Top,ElectricEffect (Upper),6,,,100,,,,,,,,,,,,,{/*TODO*/},{},{}
+25206,ElectricEffect_Top,ElectricEffect (Upper),6,,,100,,,,,,,,,,,,,{ hateffect HAT_EF_Electric,true; },{},{ hateffect HAT_EF_Electric,false; }
 25207,SPAbsorb_Stone_Top,SPAbsorb Stone (Upper),6,,,100,,,,,,,,,,,,,{ bonus2 bSPDrainRate,20,1; },{},{}
 25208,SPAbsorb_Stone_Robe,SPAbsorb Stone (Garment),6,,,100,,,,,,,,,,,,,{ bonus2 bSPDrainRate,20,1; },{},{}
 25209,HPAbsorb_Stone_Robe,HPAbsorb Stone (Garment),6,,,100,,,,,,,,,,,,,{ bonus2 bHPDrainRate,20,3; },{},{}
@@ -12332,15 +12332,15 @@
 25256,Hazy_Dream_Fragment,Hazy Dream Fragment,3,0,,10,,,,,,,,,,,,,{},{},{}
 25257,Bloody_Love_Letter,Bloody Love Letter,3,780,,10,,,,,,,,,,,,,{},{},{}
 25258,Broken_Arrow,Broken Arrow,3,550,,10,,,,,,,,,,,,,{},{},{}
-25259,Recruitment_Leaflet,Recruitment Leaflet,3,778,,1,,,,,,,,,,,,,{},{},{}
+25259,Recruitment_Leaflet,Recruitment Leaflet,3,778,,10,,,,,,,,,,,,,{},{},{}
 25260,Fragment_of_Purple_Ore,Fragment of Purple Ore,3,0,,0,,,,,,,,,,,,,{},{},{}
-25261,Torn_Paper_,Torn Paper,3,0,,1,,,,,,,,,,,,,{},{},{}
-25262,Well-dried_Clover,Well-dried Clover,3,0,,1,,,,,,,,,,,,,{},{},{}
-25263,Short_Bat_Hair,Short Bat Hair,3,0,,1,,,,,,,,,,,,,{},{},{}
-25264,Cluster_of_Nightmares,Cluster of Nightmares,3,0,,1,,,,,,,,,,,,,{},{},{}
-25265,Shining_Spore,Shining Spore,3,0,,1,,,,,,,,,,,,,{},{},{}
-25266,Dried_Leaf_Of_Ygg,Dried Yggdrasil Leaf,3,0,,1,,,,,,,,,,,,,{},{},{}
-25267,Suspicious_Pentacle,Suspicious Pentacle,3,0,,1,,,,,,,,,,,,,{},{},{}
+25261,Torn_Paper_,Torn Paper,3,0,,10,,,,,,,,,,,,,{},{},{}
+25262,Well-dried_Clover,Well-dried Clover,3,0,,10,,,,,,,,,,,,,{},{},{}
+25263,Short_Bat_Hair,Short Bat Hair,3,0,,10,,,,,,,,,,,,,{},{},{}
+25264,Cluster_of_Nightmares,Cluster of Nightmares,3,0,,10,,,,,,,,,,,,,{},{},{}
+25265,Shining_Spore,Shining Spore,3,0,,10,,,,,,,,,,,,,{},{},{}
+25266,Dried_Leaf_Of_Ygg,Dried Yggdrasil Leaf,3,0,,10,,,,,,,,,,,,,{},{},{}
+25267,Suspicious_Pentacle,Suspicious Pentacle,3,0,,10,,,,,,,,,,,,,{},{},{}
 25271,Illusion_Stone,Illusion Stone,3,10,,0,,,,,,,,,,,,,{},{},{}
 25272,Illusion_Gemstone,Illusion Gemstone,3,0,,10,,,,,,,,,,,,,{},{},{}
 25276,Clean_Bone,Clean Bone,3,248,,10,,,,,,,,,,,,,{},{},{}

+ 2 - 3
db/re/item_synthesis.yml

@@ -1009,7 +1009,6 @@ Body:
   - Item: 19241
     Amount: 1
   Reward: |
-    // Duplicate on item upgrade
     if (rand(2) == 0) {
         getitem(19245,1); // chance to become Crimson Booster
     } else {
@@ -1423,7 +1422,7 @@ Body:
     Amount: 1
   Reward: |
     // Duplicate on item upgrade
-    getitem(2589,1);
+    getitem(20835,1);
 - Id: 22529 # 쉐도우뚝딱상자
   SourceNeeded: 3
   NeedRefine: 0
@@ -2319,7 +2318,7 @@ Body:
     // Duplicate on item upgrade
     callfunc("F_Lapine_Grown_Gunslinger", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
     .@params[0] = 0;
-    getitem3(19157,1,1,.@refine,0,0,0,0,0,.@opts,.@vals,.@params);
+    getitem3(19157,1,1,0,0,0,0,0,0,.@opts,.@vals,.@params);
 - Id: 23170 # 선풍기개조키트
   SourceNeeded: 1
   NeedRefine: 0

+ 10 - 13
db/re/item_upgrade.yml

@@ -57,9 +57,6 @@ Body:
     callfunc("F_Lapine_Ancient_Hero_Bravery", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
     .@params[0] = 0;
     getitem3(LapineUpgradeItem,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
-    // setarray .@properties[0], ITEMUPG_OPTION_ID0, ITEMUPG_OPTION_VALUE0, ITEMUPG_OPTION_ID1, ITEMUPG_OPTION_VALUE1;
-    // setarray .@values[0], .@opt1, .@val1, .@opt2, .@val2;
-    // upgrade @last_lapine_idx,.@properties,.@values;
 - Id: 100025 # Ancient_Hero_Wisdom, 영웅의 무기
   NeedRefineMin: 0
   NeedOptionNumMin: 0
@@ -405,7 +402,7 @@ Body:
   - Item: 16028 #타노스의망치
   - Item: 28100 #타노스의도끼
   Result: |
-    callfunc("F_Lapine_Gray_Charcoal_Range", .@opts[0], .@vals[0]);
+    callfunc("F_Lapine_Gray_Charcoal_Range", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
     .@params[0] = 0;
     getitem3(LapineUpgradeItem,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23677 # Gray_Charcoal_Magic, 타노스 마법 무기
@@ -420,7 +417,7 @@ Body:
   - Item: 1933 #타노스의바이올린
   - Item: 1988 #타노스의윕소드
   Result: |
-    callfunc("F_Lapine_Gray_Charcoal_Magic", .@opts[0], .@vals[0]);
+    callfunc("F_Lapine_Gray_Charcoal_Magic", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
     .@params[0] = 0;
     getitem3(LapineUpgradeItem,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23676 # Gray_Charcoal_Melee, 타노스 근거리 무기
@@ -440,7 +437,7 @@ Body:
   - Item: 28100 #타노스의도끼
   - Item: 1933 #타노스의바이올린
   Result: |
-    callfunc("F_Lapine_Gray_Charcoal_Melee", .@opts[0], .@vals[0]);
+    callfunc("F_Lapine_Gray_Charcoal_Melee", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
     .@params[0] = 0;
     getitem3(LapineUpgradeItem,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23679 # Geffen_Magic_Scroll2, 게펜 마법 대회 액세서리 (accessory)
@@ -1433,7 +1430,7 @@ Body:
   Result: |
     callfunc("F_Lapine_Shadow_9_Refine_Hammer", .@refine);
     getitem2(LapineUpgradeItem,1,1,.@refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4);
-- Id: 23311 # 마법고양이손, 새끼 고양이 헤드드레스
+- Id: 23311 # 마법고양이손, 새끼 고양이 헤드드레스 (rdata.grf)
   NeedRefineMin: 0
   NeedOptionNumMin: 0
   NotSocketEnchantItem: true
@@ -1443,7 +1440,7 @@ Body:
     callfunc("F_Lapine_Magic_Cat_Hand", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
     .@params[0] = 0;
     getitem3(LapineUpgradeItem,1,1,0,0,0,0,0,0,.@opts,.@vals,.@params);
-- Id: 23289 # 사탕축복스크롤_물리, 사탕 주머니 가방(물리)
+- Id: 23289 # 사탕축복스크롤_물리, 사탕 주머니 가방(물리) (rdata.grf)
   NeedRefineMin: 0
   NeedOptionNumMin: 0
   NotSocketEnchantItem: true
@@ -1453,7 +1450,7 @@ Body:
     callfunc("F_Lapine_Candy_Pouch_Blessing_Scroll_W", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
     .@params[0] = 0;
     getitem3(LapineUpgradeItem,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
-- Id: 23290 # 사탕축복스크롤_원거리, 사탕 주머니 가방(원거리)
+- Id: 23290 # 사탕축복스크롤_원거리, 사탕 주머니 가방(원거리) (rdata.grf)
   NeedRefineMin: 0
   NeedOptionNumMin: 0
   NotSocketEnchantItem: true
@@ -1463,7 +1460,7 @@ Body:
     callfunc("F_Lapine_Candy_Pouch_Blessing_Scroll_R", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
     .@params[0] = 0;
     getitem3(LapineUpgradeItem,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
-- Id: 23291 # 사탕축복스크롤_마법, 사탕 주머니 가방(마법)
+- Id: 23291 # 사탕축복스크롤_마법, 사탕 주머니 가방(마법) (rdata.grf)
   NeedRefineMin: 0
   NeedOptionNumMin: 0
   NotSocketEnchantItem: true
@@ -1473,7 +1470,7 @@ Body:
     callfunc("F_Lapine_Candy_Pouch_Blessing_Scroll_M", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
     .@params[0] = 0;
     getitem3(LapineUpgradeItem,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
-- Id: 23100 # 건슬링거두루마리, 늘어진 건슬링거
+- Id: 23100 # 건슬링거두루마리, 늘어진 건슬링거 (rdata.grf)
   NeedRefineMin: 0
   NeedOptionNumMin: 0
   NotSocketEnchantItem: true
@@ -1483,7 +1480,7 @@ Body:
     callfunc("F_Lapine_Grown_Gunslinger", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
     .@params[0] = 0;
     getitem3(LapineUpgradeItem,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
-- Id: 23229 # 타락천사날개초기화권, 타락천사의 날개
+- Id: 23229 # 타락천사날개초기화권, 타락천사의 날개 (rdata.grf)
   NeedRefineMin: 0
   NeedOptionNumMin: 0
   NotSocketEnchantItem: true
@@ -1495,7 +1492,7 @@ Body:
         getitem(@last_lapine_card1,1);
     }
     getitem2(LapineUpgradeItem,1,1,0,0,0,0,0,0);
-- Id: 23175 # 제복수선키트, 카프라 제복
+- Id: 23175 # 제복수선키트, 카프라 제복 (rdata.grf)
   NeedRefineMin: 0
   NeedOptionNumMin: 0
   NotSocketEnchantItem: true

+ 103 - 94
npc/re/other/LapineEnchants.txt

@@ -834,108 +834,117 @@ function	script	F_Lapine_Charleston_Parts_R	{
 }
 
 function	script	F_Lapine_Gray_Charcoal_Range	{
-	.@r = rand(290); // No rates info
-	if (.@r < 10)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 20)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 30)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 40)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 50)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WIND_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 60)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_POISON_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 70)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 80)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 90)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 100) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 110) { set getarg(0), RDMOPT_DAMAGE_SIZE_PERFECT; set getarg(1), 1; return; }
-	if (.@r < 120) { set getarg(0), RDMOPT_VAR_PLUSASPD; set getarg(1), 1; return; }
-	if (.@r < 130) { set getarg(0), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(1), rand(5,10); return; }
-	if (.@r < 140) { set getarg(0), RDMOPT_RANGE_ATTACK_DAMAGE_TARGET; set getarg(1), rand(5,10); return; }
-	if (.@r < 150) { set getarg(0), RDMOPT_WEAPON_INDESTRUCTIBLE; set getarg(1), 1; return; }
-	if (.@r < 160) { set getarg(0), RDMOPT_RACE_DAMAGE_NOTHING; set getarg(1), rand(1,20); return; }
-	if (.@r < 170) { set getarg(0), RDMOPT_RACE_DAMAGE_UNDEAD; set getarg(1), rand(1,20); return; }
-	if (.@r < 180) { set getarg(0), RDMOPT_RACE_DAMAGE_ANIMAL; set getarg(1), rand(1,20); return; }
-	if (.@r < 190) { set getarg(0), RDMOPT_RACE_DAMAGE_PLANT; set getarg(1), rand(1,20); return; }
-	if (.@r < 200) { set getarg(0), RDMOPT_RACE_DAMAGE_INSECT; set getarg(1), rand(1,20); return; }
-	if (.@r < 210) { set getarg(0), RDMOPT_RACE_DAMAGE_FISHS; set getarg(1), rand(1,20); return; }
-	if (.@r < 220) { set getarg(0), RDMOPT_RACE_DAMAGE_DEVIL; set getarg(1), rand(1,20); return; }
-	if (.@r < 230) { set getarg(0), RDMOPT_RACE_DAMAGE_HUMAN; set getarg(1), rand(1,20); return; }
-	if (.@r < 240) { set getarg(0), RDMOPT_RACE_DAMAGE_ANGEL; set getarg(1), rand(1,20); return; }
-	if (.@r < 250) { set getarg(0), RDMOPT_RACE_DAMAGE_DRAGON; set getarg(1), rand(1,20); return; }
-	if (.@r < 260) { set getarg(0), RDMOPT_CLASS_DAMAGE_NORMAL_TARGET; set getarg(1), rand(5,10); return; }
-	if (.@r < 270) { set getarg(0), RDMOPT_CLASS_DAMAGE_BOSS_TARGET; set getarg(1), rand(5,10); return; }
-	if (.@r < 280) { set getarg(0), RDMOPT_DAMAGE_CRI_TARGET; set getarg(1), rand(5,20); return; }
-	if (.@r < 290) { set getarg(0), RDMOPT_VAR_ATKPERCENT; set getarg(1), rand(3,7); return; }
+	.@r = rand(150); // No 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); }
+	else if (.@r < 40)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 50)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WIND_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 60)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_POISON_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 70)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 80)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 90)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 100) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 110) { set getarg(0), RDMOPT_DAMAGE_SIZE_PERFECT; set getarg(1), 1; }
+	else if (.@r < 120) { set getarg(0), RDMOPT_VAR_PLUSASPD; set getarg(1), 1; }
+	else if (.@r < 130) { set getarg(0), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(1), rand(5,10); }
+	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
+		 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); }
+	else if (.@r < 40)  { set getarg(2), RDMOPT_RACE_DAMAGE_PLANT; set getarg(3), rand(1,20); }
+	else if (.@r < 50)  { set getarg(2), RDMOPT_RACE_DAMAGE_INSECT; set getarg(3), rand(1,20); }
+	else if (.@r < 60)  { set getarg(2), RDMOPT_RACE_DAMAGE_FISHS; set getarg(3), rand(1,20); }
+	else if (.@r < 70)  { set getarg(2), RDMOPT_RACE_DAMAGE_DEVIL; set getarg(3), rand(1,20); }
+	else if (.@r < 80)  { set getarg(2), RDMOPT_RACE_DAMAGE_HUMAN; set getarg(3), rand(1,20); }
+	else if (.@r < 90)  { set getarg(2), RDMOPT_RACE_DAMAGE_ANGEL; set getarg(3), rand(1,20); }
+	else if (.@r < 100) { set getarg(2), RDMOPT_RACE_DAMAGE_DRAGON; set getarg(3), rand(1,20); }
+	else if (.@r < 110) { set getarg(2), RDMOPT_CLASS_DAMAGE_NORMAL_TARGET; set getarg(3), rand(5,10); }
+	else if (.@r < 120) { set getarg(2), RDMOPT_CLASS_DAMAGE_BOSS_TARGET; set getarg(3), rand(5,10); }
+	else if (.@r < 130) { set getarg(2), RDMOPT_DAMAGE_CRI_TARGET; set getarg(3), rand(5,20); }
+	else if (.@r < 140) { set getarg(2), RDMOPT_VAR_ATKPERCENT; set getarg(3), rand(3,7); }
+
 	return;
 }
 
 function	script	F_Lapine_Gray_Charcoal_Magic	{
-	.@r = rand(280); // No rates info
-	if (.@r < 10)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 20)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 30)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 40)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_FIRE_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 50)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_WIND_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 60)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_POISON_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 70)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_SAINT_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 80)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 90)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 100) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 110) { set getarg(0), RDMOPT_DEC_SPELL_CAST_TIME; set getarg(1), rand(5,10); return; }
-	if (.@r < 120) { set getarg(0), RDMOPT_HEAL_VALUE; set getarg(1), rand(5,20); return; }
-	if (.@r < 130) { set getarg(0), RDMOPT_DEC_SP_CONSUMPTION; set getarg(1), rand(5,10); return; }
-	if (.@r < 140) { set getarg(0), RDMOPT_DEC_SPELL_DELAY_TIME; set getarg(1), rand(1,5); return; }
-	if (.@r < 150) { set getarg(0), RDMOPT_RACE_MDAMAGE_NOTHING; set getarg(1), rand(1,20); return; }
-	if (.@r < 160) { set getarg(0), RDMOPT_RACE_MDAMAGE_UNDEAD; set getarg(1), rand(1,20); return; }
-	if (.@r < 170) { set getarg(0), RDMOPT_RACE_MDAMAGE_ANIMAL; set getarg(1), rand(1,20); return; }
-	if (.@r < 180) { set getarg(0), RDMOPT_RACE_MDAMAGE_PLANT; set getarg(1), rand(1,20); return; }
-	if (.@r < 190) { set getarg(0), RDMOPT_RACE_MDAMAGE_INSECT; set getarg(1), rand(1,20); return; }
-	if (.@r < 200) { set getarg(0), RDMOPT_RACE_MDAMAGE_FISHS; set getarg(1), rand(1,20); return; }
-	if (.@r < 210) { set getarg(0), RDMOPT_RACE_MDAMAGE_DEVIL; set getarg(1), rand(1,20); return; }
-	if (.@r < 220) { set getarg(0), RDMOPT_RACE_MDAMAGE_HUMAN; set getarg(1), rand(1,20); return; }
-	if (.@r < 230) { set getarg(0), RDMOPT_RACE_MDAMAGE_ANGEL; set getarg(1), rand(1,20); return; }
-	if (.@r < 240) { set getarg(0), RDMOPT_RACE_MDAMAGE_DRAGON; set getarg(1), rand(1,20); return; }
-	if (.@r < 250) { set getarg(0), RDMOPT_CLASS_MDAMAGE_NORMAL_TARGET; set getarg(1), rand(5,10); return; }
-	if (.@r < 260) { set getarg(0), RDMOPT_CLASS_MDAMAGE_BOSS_TARGET; set getarg(1), rand(5,10); return; }
-	if (.@r < 270) { set getarg(0), RDMOPT_VAR_MAGICATKPERCENT; set getarg(1), rand(3,7); return; }
-	if (.@r < 280) { set getarg(0), RDMOPT_DEC_SPELL_CAST_TIME; set getarg(1), rand(5,10); return; }
+	.@r = rand(140); // No 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); }
+	else if (.@r < 40)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_FIRE_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 50)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_WIND_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 60)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_POISON_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 70)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_SAINT_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 80)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 90)  { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 100) { set getarg(0), RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 110) { set getarg(0), RDMOPT_DEC_SPELL_CAST_TIME; set getarg(1), rand(5,10); }
+	else if (.@r < 120) { set getarg(0), RDMOPT_HEAL_MODIFY_PERCENT; set getarg(1), rand(5,20); }
+	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
+		 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); }
+	else if (.@r < 40)  { set getarg(2), RDMOPT_RACE_MDAMAGE_PLANT; set getarg(3), rand(1,20); }
+	else if (.@r < 50)  { set getarg(2), RDMOPT_RACE_MDAMAGE_INSECT; set getarg(3), rand(1,20); }
+	else if (.@r < 60)  { set getarg(2), RDMOPT_RACE_MDAMAGE_FISHS; set getarg(3), rand(1,20); }
+	else if (.@r < 70)  { set getarg(2), RDMOPT_RACE_MDAMAGE_DEVIL; set getarg(3), rand(1,20); }
+	else if (.@r < 80)  { set getarg(2), RDMOPT_RACE_MDAMAGE_HUMAN; set getarg(3), rand(1,20); }
+	else if (.@r < 90)  { set getarg(2), RDMOPT_RACE_MDAMAGE_ANGEL; set getarg(3), rand(1,20); }
+	else if (.@r < 100) { set getarg(2), RDMOPT_RACE_MDAMAGE_DRAGON; set getarg(3), rand(1,20); }
+	else if (.@r < 110) { set getarg(2), RDMOPT_CLASS_MDAMAGE_NORMAL_TARGET; set getarg(3), rand(5,10); }
+	else if (.@r < 120) { set getarg(2), RDMOPT_CLASS_MDAMAGE_BOSS_TARGET; set getarg(3), rand(5,10); }
+	else if (.@r < 130) { set getarg(2), RDMOPT_VAR_MAGICATKPERCENT; set getarg(3), rand(3,7); }
+	else if (.@r < 140) { set getarg(2), RDMOPT_DEC_SPELL_CAST_TIME; set getarg(3), rand(5,10); }
+
 	return;
 }
 
 function	script	F_Lapine_Gray_Charcoal_Melee	{
-	.@r = rand(340); // No rates info
-	if (.@r < 10)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 20)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WATER_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 30)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 40)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 50)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WIND_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 60)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_POISON_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 70)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 80)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 90)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 100) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET; set getarg(1), rand(1,20); return; }
-	if (.@r < 110) { set getarg(0), RDMOPT_DAMAGE_SIZE_PERFECT; set getarg(1), 1; return; }
-	if (.@r < 120) { set getarg(0), RDMOPT_VAR_PLUSASPD; set getarg(1), 1; return; }
-	if (.@r < 130) { set getarg(0), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(1), rand(5,10); return; }
-	if (.@r < 140) { set getarg(0), RDMOPT_BODY_ATTR_WATER; set getarg(1), 1; return; }
-	if (.@r < 150) { set getarg(0), RDMOPT_BODY_ATTR_GROUND; set getarg(1), 1; return; }
-	if (.@r < 160) { set getarg(0), RDMOPT_BODY_ATTR_FIRE; set getarg(1), 1; return; }
-	if (.@r < 170) { set getarg(0), RDMOPT_BODY_ATTR_WIND; set getarg(1), 1; return; }
-	if (.@r < 180) { set getarg(0), RDMOPT_BODY_ATTR_SAINT; set getarg(1), 1; return; }
-	if (.@r < 190) { set getarg(0), RDMOPT_BODY_ATTR_DARKNESS; set getarg(1), 1; return; }
-	if (.@r < 200) { set getarg(0), RDMOPT_RACE_DAMAGE_NOTHING; set getarg(1), rand(1,20); return; }
-	if (.@r < 210) { set getarg(0), RDMOPT_RACE_DAMAGE_UNDEAD; set getarg(1), rand(1,20); return; }
-	if (.@r < 220) { set getarg(0), RDMOPT_RACE_DAMAGE_ANIMAL; set getarg(1), rand(1,20); return; }
-	if (.@r < 230) { set getarg(0), RDMOPT_RACE_DAMAGE_PLANT; set getarg(1), rand(1,20); return; }
-	if (.@r < 240) { set getarg(0), RDMOPT_RACE_DAMAGE_INSECT; set getarg(1), rand(1,20); return; }
-	if (.@r < 250) { set getarg(0), RDMOPT_RACE_DAMAGE_FISHS; set getarg(1), rand(1,20); return; }
-	if (.@r < 260) { set getarg(0), RDMOPT_RACE_DAMAGE_DEVIL; set getarg(1), rand(1,20); return; }
-	if (.@r < 270) { set getarg(0), RDMOPT_RACE_DAMAGE_HUMAN; set getarg(1), rand(1,20); return; }
-	if (.@r < 280) { set getarg(0), RDMOPT_RACE_DAMAGE_ANGEL; set getarg(1), rand(1,20); return; }
-	if (.@r < 290) { set getarg(0), RDMOPT_RACE_DAMAGE_DRAGON; set getarg(1), rand(1,20); return; }
-	if (.@r < 300) { set getarg(0), RDMOPT_CLASS_DAMAGE_NORMAL_TARGET; set getarg(1), rand(1,10); return; }
-	if (.@r < 310) { set getarg(0), RDMOPT_CLASS_DAMAGE_BOSS_TARGET; set getarg(1), rand(1,10); return; }
-	if (.@r < 320) { set getarg(0), RDMOPT_VAR_ATKPERCENT; set getarg(1), rand(3,5); return; }
-	if (.@r < 330) { set getarg(0), RDMOPT_DAMAGE_CRI_TARGET; set getarg(1), rand(5,20); return; }
-	if (.@r < 340) { set getarg(0), RDMOPT_WEAPON_INDESTRUCTIBLE; set getarg(1), 1; return; }
+	.@r = rand(190); // No 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); }
+	else if (.@r < 40)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 50)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_WIND_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 60)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_POISON_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 70)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 80)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 90)  { set getarg(0), RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 100) { set getarg(0), RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET; set getarg(1), rand(1,20); }
+	else if (.@r < 110) { set getarg(0), RDMOPT_DAMAGE_SIZE_PERFECT; set getarg(1), 1; }
+	else if (.@r < 120) { set getarg(0), RDMOPT_VAR_PLUSASPD; set getarg(1), 1; }
+	else if (.@r < 130) { set getarg(0), RDMOPT_VAR_PLUSASPDPERCENT; set getarg(1), rand(5,10); }
+	else if (.@r < 140) { set getarg(0), RDMOPT_BODY_ATTR_WATER; set getarg(1), 1; }
+	else if (.@r < 150) { set getarg(0), RDMOPT_BODY_ATTR_GROUND; set getarg(1), 1; }
+	else if (.@r < 160) { set getarg(0), RDMOPT_BODY_ATTR_FIRE; set getarg(1), 1; }
+	else if (.@r < 170) { set getarg(0), RDMOPT_BODY_ATTR_WIND; set getarg(1), 1; }
+	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
+		 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); }
+	else if (.@r < 40)  { set getarg(2), RDMOPT_RACE_DAMAGE_PLANT; set getarg(3), rand(1,20); }
+	else if (.@r < 50)  { set getarg(2), RDMOPT_RACE_DAMAGE_INSECT; set getarg(3), rand(1,20); }
+	else if (.@r < 60)  { set getarg(2), RDMOPT_RACE_DAMAGE_FISHS; set getarg(3), rand(1,20); }
+	else if (.@r < 70)  { set getarg(2), RDMOPT_RACE_DAMAGE_DEVIL; set getarg(3), rand(1,20); }
+	else if (.@r < 80)  { set getarg(2), RDMOPT_RACE_DAMAGE_HUMAN; set getarg(3), rand(1,20); }
+	else if (.@r < 90)  { set getarg(2), RDMOPT_RACE_DAMAGE_ANGEL; set getarg(3), rand(1,20); }
+	else if (.@r < 100) { set getarg(2), RDMOPT_RACE_DAMAGE_DRAGON; set getarg(3), rand(1,20); }
+	else if (.@r < 110) { set getarg(2), RDMOPT_CLASS_DAMAGE_NORMAL_TARGET; set getarg(3), rand(1,10); }
+	else if (.@r < 120) { set getarg(2), RDMOPT_CLASS_DAMAGE_BOSS_TARGET; set getarg(3), rand(1,10); }
+	else if (.@r < 130) { set getarg(2), RDMOPT_VAR_ATKPERCENT; set getarg(3), rand(3,5); }
+	else if (.@r < 140) { set getarg(2), RDMOPT_DAMAGE_CRI_TARGET; set getarg(3), rand(5,20); }
+	else if (.@r < 150) { set getarg(2), RDMOPT_WEAPON_INDESTRUCTIBLE; set getarg(3), 1; }
+
 	return;
 }