// 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;
/* I wonder if this is needed...?
.@s4+=.@s5;
.@s3+=.@s4;
.@s2+=.@s3;
.@s1+=.@s2;
*/
// Make the seed. More level and luck increases odds of higher rarity
.@seed=max(0, 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 .@n, 1;
return;
}
/*
// Setup a merc_boxset based on level (TODO)
function script cond_mercboxset {
return;
}
*/
// Get mercenary ID
// merc_randid(5★, 4★, 3★, 2★, 1★)
function script merc_randid {
.@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;
/* I wonder if this is needed...?
.@s4+=.@s5;
.@s3+=.@s4;
.@s2+=.@s3;
.@s1+=.@s2;
*/
// Make the seed. More level and luck increases odds of higher rarity
.@seed=max(0, rand(0, .@sumup)-BaseLevel-readparam(bLuk));
// 5 ★
if (.@seed < .@s5) {
setarray .@r, 1192, 1191, 1193, 1210;
.@n=any_of(.@r);
// 4 ★
} else if (.@seed < .@s4) {
setarray .@r, 1194, 1195, 1209, 1205;
.@n=any_of(.@r);
// 3 ★
} else if (.@seed < .@s3) {
setarray .@r, 1196, 1197, 1198, 1208;
.@n=any_of(.@r);
// 2 ★
} else if (.@seed < .@s2) {
setarray .@r, 1200, 1201, 1199, 1207;
.@n=any_of(.@r);
// 1 ★
} else {
setarray .@r, 1203, 1204, 1202, 1206;
.@n=any_of(.@r);
}
//debugmes "Return: %d ([%d, %d, %d])", .@n, .@r[0], .@r[1], .@r[2];
return .@n;
}
// Read the card and return its rarity
// merc_getstar(card)
function script merc_getstar {
switch (getarg(0)) {
case MercBoxE:
case MercBoxEE:
case MercCard_AndreiSakar:
case MercCard_Lilanna:
case MercCard_Woody:
case MercCard_Xanthem:
return 5;
case MercBoxD:
case MercBoxDD:
case MercCard_Aisen:
case MercCard_Msawis:
case MercCard_DragonStar:
case MercCard_Swezanne:
return 4;
case MercBoxC:
case MercBoxCC:
case MercCard_Saulc:
case MercCard_Crazyfefe:
case MercCard_LawnCable:
case MercCard_Arthur:
return 3;
case MercBoxB:
case MercBoxBB:
case MercCard_Pookie:
case MercCard_Jesusalva:
case MercCard_Demure:
case MercCard_EarthWitch:
return 2;
case MercBoxA:
case MercBoxAA:
case MercCard_Apane:
case MercCard_Soren:
case MercCard_GonzoDark:
case MercCard_Rosa:
return 1;
default:
return 0;
}
return -1;
}