From 2f45bd7aa3109731edc73316c10338d605734995 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 15 Jun 2019 18:45:37 -0300 Subject: Rewrite how Mercenary Boxsets are handled (for easier maintenance) --- db/re/item_db.conf | 78 ++----------------------------------------------- npc/items/mercenary.txt | 54 ++++++++++++++++++++++++++++++++++ npc/scripts.conf | 1 + 3 files changed, 58 insertions(+), 75 deletions(-) create mode 100644 npc/items/mercenary.txt diff --git a/db/re/item_db.conf b/db/re/item_db.conf index e1295d5ea..bb19dab99 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -12624,31 +12624,7 @@ item_db: ( noauction: true } Script: <" - .@seed=rand(0, 10000)-BaseLevel-readparam(bLuk); - - // 0.5% - if (.@seed < 50) { - setarray .@r, MercCard_AndreiSakar, MercCard_Woody, MercCard_Lilanna, MercCard_Xanthem; - .@n=rand(getarraysize(.@r)); - // 2.0% - } else if (.@seed < 250) { - setarray .@r, MercCard_Aisen, MercCard_Msawis, MercCard_Swezanne, MercCard_DragonStar; - .@n=rand(getarraysize(.@r)); - // 10.0% - } else if (.@seed < 1250) { - setarray .@r, MercCard_Saulc, MercCard_Crazyfefe, MercCard_LawnCable, MercCard_Arthur; - .@n=rand(getarraysize(.@r)); - // 25.0% - } else if (.@seed < 3750) { - setarray .@r, MercCard_Pookie, MercCard_Jesusalva, MercCard_Demure, MercCard_EarthWitch; - .@n=rand(getarraysize(.@r)); - // 62.5% - } else { - setarray .@r, MercCard_Apane, MercCard_Soren, MercCard_GonzoDark, MercCard_Rosa; - .@n=rand(getarraysize(.@r)); - } - - getitem .@r[.@n], 1; + callfunc "merc_boxset", 50, 250, 1250, 3750, 6250; "> }, { @@ -12669,31 +12645,7 @@ item_db: ( noauction: true } Script: <" - .@seed=rand(0, 10000)-BaseLevel-readparam(bLuk); - - // 1.0% - if (.@seed < 100) { - setarray .@r, MercCard_AndreiSakar, MercCard_Woody, MercCard_Lilanna, MercCard_Xanthem; - .@n=rand(getarraysize(.@r)); - // 5.0% - } else if (.@seed < 600) { - setarray .@r, MercCard_Aisen, MercCard_Msawis, MercCard_Swezanne, MercCard_DragonStar; - .@n=rand(getarraysize(.@r)); - // 20.0% - } else if (.@seed < 2100) { - setarray .@r, MercCard_Saulc, MercCard_Crazyfefe, MercCard_LawnCable, MercCard_Arthur; - .@n=rand(getarraysize(.@r)); - // 35.0% - } else if (.@seed < 5600) { - setarray .@r, MercCard_Pookie, MercCard_Jesusalva, MercCard_Demure, MercCard_EarthWitch; - .@n=rand(getarraysize(.@r)); - // 44.0% - } else { - setarray .@r, MercCard_Apane, MercCard_Soren, MercCard_GonzoDark, MercCard_Rosa; - .@n=rand(getarraysize(.@r)); - } - - getitem .@r[.@n], 1; + callfunc "merc_boxset", 100, 600, 2100, 5600, 4400; "> }, { @@ -12714,31 +12666,7 @@ item_db: ( noauction: true } Script: <" - .@seed=rand(0, 10000)-BaseLevel-readparam(bLuk); - - // 2.0% - if (.@seed < 200) { - setarray .@r, MercCard_AndreiSakar, MercCard_Woody, MercCard_Lilanna, MercCard_Xanthem; - .@n=rand(getarraysize(.@r)); - // 10.0% - } else if (.@seed < 1200) { - setarray .@r, MercCard_Aisen, MercCard_Msawis, MercCard_Swezanne, MercCard_DragonStar; - .@n=rand(getarraysize(.@r)); - // 30.0% - } else if (.@seed < 4200) { - setarray .@r, MercCard_Saulc, MercCard_Crazyfefe, MercCard_LawnCable, MercCard_Arthur; - .@n=rand(getarraysize(.@r)); - // 50.0% - } else if (.@seed < 9200) { - setarray .@r, MercCard_Pookie, MercCard_Jesusalva, MercCard_Demure, MercCard_EarthWitch; - .@n=rand(getarraysize(.@r)); - // 8.0% - } else { - setarray .@r, MercCard_Apane, MercCard_Soren, MercCard_GonzoDark, MercCard_Rosa; - .@n=rand(getarraysize(.@r)); - } - - getitem .@r[.@n], 1; + callfunc "merc_boxset", 200, 1200, 4200, 9200, 800; "> }, diff --git a/npc/items/mercenary.txt b/npc/items/mercenary.txt new file mode 100644 index 000000000..c87081760 --- /dev/null +++ b/npc/items/mercenary.txt @@ -0,0 +1,54 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Core functions for Mercenary boxset + +// Main loop +// merc_boxset(5★, 4★, 3★, 2★, 1★) +function script merc_boxset { + .@s5=getarg(0,0); + .@s4=getarg(1,0); + .@s3=getarg(2,0); + .@s2=getarg(3,0); + .@s1=getarg(4,0); + + .@sumup=.@s5+.@s4+.@s3+.@s2+.@s1; + + // Make the seed. More level and luck increases odds of higher rarity + .@seed=rand(0, .@sumup)-BaseLevel-readparam(bLuk); + + // 5 ★ + if (.@seed < .@s5) { + setarray .@r, MercCard_AndreiSakar, MercCard_Woody, MercCard_Lilanna, MercCard_Xanthem; + .@n=any_of(.@r); + // 4 ★ + } else if (.@seed < .@s4) { + setarray .@r, MercCard_Aisen, MercCard_Msawis, MercCard_Swezanne, MercCard_DragonStar; + .@n=any_of(.@r); + // 3 ★ + } else if (.@seed < .@s3) { + setarray .@r, MercCard_Saulc, MercCard_Crazyfefe, MercCard_LawnCable, MercCard_Arthur; + .@n=any_of(.@r); + // 2 ★ + } else if (.@seed < .@s2) { + setarray .@r, MercCard_Pookie, MercCard_Jesusalva, MercCard_Demure, MercCard_EarthWitch; + .@n=any_of(.@r); + // 1 ★ + } else { + setarray .@r, MercCard_Apane, MercCard_Soren, MercCard_GonzoDark, MercCard_Rosa; + .@n=any_of(.@r); + } + + getitem .@r[.@n], 1; + return; +} + +/* +// Setup a merc_boxset based on level (TODO) +function script cond_mercboxset { + return; +} +*/ + + diff --git a/npc/scripts.conf b/npc/scripts.conf index cf4871aba..cda4ea36e 100644 --- a/npc/scripts.conf +++ b/npc/scripts.conf @@ -72,6 +72,7 @@ "npc/items/croconut.txt", "npc/items/emptybox.txt", "npc/items/lofteleporter.txt", +"npc/items/mercenary.txt", "npc/items/shovel.txt", "npc/items/teleporter.txt", -- cgit v1.2.3-60-g2f50