viewing paste topic/15578-m mission_board_2.4b | Athena

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577
//      ~~~~~ Please use this latest int__ function that support negative numbers ~~~~~
function        script  int__   {
        .@i = getstrlen( .@str$ = getarg(0) ) -3;
        .@is_negative = charat( .@str$, 0 ) == "-";
        while ( .@i > .@is_negative ) {
                .@str$ = insertchar( .@str$, ",", .@i );
                .@i -= 3;
        }
        return .@str$;
}
 
//===== eAthena Script ============================================
//= Mission Board
//===== By: =======================================================
//= AnnieRuru
//===== Current Version: ==========================================
//= 2.4b
//===== Compatible With: ==========================================
//= hercules & rathena 2018-04-15
//===== Description: ==============================================
//= allow admin to setup their own quests dynamically
//===== Topic =====================================================
//= http://herc.ws/board/topic/15578-mission-board-only-once-doesnt-work/
//===== Additional Comments: ======================================
//= very outdated script ... but yet ... its still a popular script ...
//=================================================================
 
-       script  mission board#127::ms_b_        -1,{
        mes "["+ strnpcinfo(1) +"]";
        if ( atoi( strnpcinfo(2) ) <= 0 || atoi( strnpcinfo(2) ) > 127 ) {
                mes "This board is currently down";
                mes "Please report to GM";
                mes "Reason: Invalid NPC ID";
                close;
        }
        if ( .duplicate_id ) {
                set .@size, getarraysize(.duplicate_id);
                for ( set .@i, 0; .@i < .@size; set .@i, .@i +1 ) {
                        if ( .duplicate_id[.@i] == atoi( strnpcinfo(2) ) ) {
                                mes "This board is currently down";
                                mes "Please report to GM";
                                mes "Reason: duplicate NPC ID#"+ strnpcinfo(2);
                                close;
                        }
                }
        }
        if ( .loading == 1 ) {
                mes "The board is currently loading mission data, please try again!";
                close;
        }
        if ( @ms_b_loading == 1 ) {
                mes "The board is currently loading player data";
                mes "Please wait";
                close;
        }
        mes "The Mission Board will instruct you to hunt certain monsters or items. Completing missions will result into rewards such as EXP and Midgard Coins";
        next;
        mes "["+ strnpcinfo(1) +"]";
        mes "Every player may pick up to ^FF00004^000000 missions from the Mission Board.";
        mes "Missions that end with '^FF0000Slayer^000000' are kill count missions and those that end with '^FF0000Collector^000000' are item gathering missions.";
        next;
        mes "["+ strnpcinfo(1) +"]";
        mes "^FF0000Please remember that, when accepting a mission, you need to be within the assigned level range when you ACCEPT and SUBMIT it!^000000";
        set @slot, 0;
        next;
        for ( set .@i, 1; .@i <= 4; set .@i, .@i +1 ) {
                if ( getd("@ms_b_m_"+ .@i) ) {
                        if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") == "" ) {
                                dispbottom "Mission Board: Your Mission#"+ .@i +" has been deleted because it is no longer available.";
                                deletearray getd("@ms_b_m_"+ .@i);
                                setd "ms_b_m_"+ .@i +"$", "";
                                deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
                        }
                        else if ( getd("@ms_b_m_"+ .@i +"[1]") && getd("@ms_b_m_"+ .@i +"[1]") <= gettimetick(2) ) {
                                dispbottom "Mission #"+ .@i +": "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") +" has expired!";
                                deletearray getd("@ms_b_m_"+ .@i);
                                setd "ms_b_m_"+ .@i +"$", "";
                                deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
                        }
                }
        }
        set .@size, getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) );
        for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 ) {
                if ( getd("@ms_b_n_"+ strnpcinfo(2) +"[0]") != atoi( gettimestr("%Y%m%d", 9) ) && getd(".ms_b_m_"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 1 ||
                        getd(".ms_b_m_"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 0 ) {
                                deletearray getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]"), 1;
                                set .@i, .@i -1 ;
                                set .@size, .@size -1;
                }
        }
        if ( getd("@ms_b_n_"+ strnpcinfo(2) +"[1]") ) {
                setd "ms_b_n_"+ strnpcinfo(2) +"$",    gettimestr("%Y%m%d", 9);
                set .@size, getarraysize( getd("@ms_b_n_"+ strnpcinfo(2) ) );
                for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
                        setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
                setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#";
        }
        else
                setd "ms_b_n_"+ strnpcinfo(2) +"$", "";
        switch ( select ( "- Submit completed mission", "- Drop a mission", "- Accept a mission", ( getgmlevel() < 99 )?"":"^FF0000Administrator Settings^000000" ) ) {
                case 1:
                        mes "["+ strnpcinfo(1) +"]";
                        mes "Please select the mission you wish to submit:";
                        set @slot, select(
                                "#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
                                "#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
                                "#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
                                "#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
                        if ( getd("@ms_b_m_"+ @slot +"[0]") == 0 ) {
                                mes "It appears that you have selected a empty slot!";
                                close;
                        }
                        callsub L_showprogress;
                        mes "Are you sure you want to submit the selected mission?";
                        next;
                        if ( select ( "Yes", "No" ) == 2 ) close;
                        mes "["+ strnpcinfo(1) +"]";
                        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[11]") != atoi( strnpcinfo(2) ) ) {
                                mes "Please submit this mission to:";
                                mes "^0000FF"+ .ms_b_name$[ getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[11]") ] +"^000000";
                                close;
                        }
                        set .@size, getarraysize( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
                        for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
                                if ( getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") < getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]") ) {
                                        mes "You do not meet the requirements to submit this mission. Please submit the mission once you've killed the required amount of monsters!";
                                        close;
                                }
                        }
                        set .@size, getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
                        for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
                                if ( countitem( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") )  < getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]") ) {
                                        mes "You do not meet the requirements to submit this mission. Please submit this mission once you've gathered the required item(s)!";
                                        close;
                                }
                        }
                        if ( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ) {
                                getinventorylist;
                                deletearray @inventorylist_id, @inventorylist_count;
                                deletearray @inventorylist_amount, @inventorylist_count;
                                deletearray @inventorylist_equip, @inventorylist_count;
                                deletearray @inventorylist_refine, @inventorylist_count;
                                deletearray @inventorylist_identify, @inventorylist_count;
                                deletearray @inventorylist_attribute, @inventorylist_count;
                                deletearray @inventorylist_card1, @inventorylist_count;
                                deletearray @inventorylist_card2, @inventorylist_count;
                                deletearray @inventorylist_card3, @inventorylist_count;
                                deletearray @inventorylist_card4, @inventorylist_count;
                                set .@size, getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
                                        set .@itemWeight, .@itemWeight + getiteminfo( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), 6 ) * getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]");
                                }
                                if ( @inventorylist_count > 95 || Weight + .@itemWeight > MaxWeight ) {
                                        mes "It appears that you are overWeight, please clean up some inventory space.";
                                        set @inventorylist_count, 0;
                                        close;
                                }
                                set @inventorylist_count, 0;
                        }
                        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[3]") && ( BaseLevel < getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[3]") || BaseLevel > getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[4]") ) ) {
                                mes "You're not within the level range to submit this mission!";
                                close;
                        }
                        mes "Congratulations, the mission has been completed!";
                        mes " ";
                        set .@size, getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
                        for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                delitem getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]");
                        mes "[Rewards]";
                        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) {
                                mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) +"^000000";
                                dispbottom "Mission Reward - Base EXP : "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") );
                                set BaseExp, BaseExp + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]");
                        }
                        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) {
                                mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) +"^000000";
                                dispbottom "Mission Reward - Job EXP : "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") );
                                set JobExp, JobExp + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]");
                        }
                        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) {
                                mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +"^000000";
                                dispbottom "Mission Reward - "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +" Zeny";
                                set Zeny, Zeny + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]");
                        }
                        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) {
                                mes "Cash Point : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +"^000000";
                                dispbottom "Mission Reward - "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +" Cash Points";
                                set #CASHPOINTS, #CASHPOINTS + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]");
                        }
                        set .@size, getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
                        for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
                                mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000";
                                getitem getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]");
                        }
                        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[6]") ) {
                                set .@size, getarraysize( getd("@ms_b_n_"+ strnpcinfo(2) ) );
                                setd "@ms_b_n_"+ strnpcinfo(2) +"[0]", gettimestr("%Y%m%d", 9);
                                setd "@ms_b_n_"+ strnpcinfo(2) +"["+ .@size +"]", getd("@ms_b_m_"+ @slot +"[0]");
                                setd "ms_b_n_"+ strnpcinfo(2) +"$",    gettimestr("%Y%m%d", 9);
                                for ( set .@i, 1; .@i <= .@size; set .@i, .@i +1 )
                                        setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
                                setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#";
                        }
                        deletearray getd("@ms_b_m_"+ @slot);
                        setd "ms_b_m_"+ @slot +"$", "";
                        deltimer "ms_b_::OnQuest"+ @slot +"TimeUp";
                        set @slot, 0;
                        close;
                case 2:
                        mes "["+ strnpcinfo(1) +"]";
                        mes "Please select the slot with the mission that you wish to drop:";
                        set @slot, select(
                                "#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
                                "#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
                                "#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
                                "#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
                        if ( getd("@ms_b_m_"+ @slot +"[0]") == 0 ) {
                                mes "It appears that you have selected a empty slot!";
                                close;
                        }
                        callsub L_showprogress;
                        mes "Are you sure that you want to give up this mission?";
                        mes "^777777NOTE: Any progress you've made for this mission will be lost!^000000";
                        next;
                        if ( select ( "Yes", "No" ) == 2 ) close;
                        mes "["+ strnpcinfo(1) +"]";
                        mes "^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[0]") +"^000000";
                        mes " ";
                        mes "Mission has given up successfully";
                        deletearray getd("@ms_b_m_"+ @slot);
                        setd "ms_b_m_"+ @slot +"$", "";
                        deltimer "ms_b_::OnQuest"+ @slot +"TimeUp";
                        set @slot, 0;
                        close;
                case 3:
                        mes "["+ strnpcinfo(1) +"]";
                        mes "Please select a (empty) slot:";
                        if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
                                mes "There is no mission available";
                                close;
                        }
                        set .@slot, select(
                                "#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
                                "#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
                                "#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
                                "#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
                        if ( getd("@ms_b_m_"+ .@slot +"[0]") ) {
                                mes "The slot that you've selected is already taken by another mission. Please select another (empty) slot!";
                                close;
                        }
                        mes "Select a mission to accept below:";
                        mes "^00CC00Green missions^000000 are within your level range and can be accepted.";
                        mes "^FF0000Red missions^000000 can not be accepted. The reason(s) can be: you're not within the level range or the daily cool-down delay hasn't passed yet.";
                        if ( basejob == Job_Novice || basejob == Job_SuperNovice ) set .@basejob, pow(2,0);
                        else if ( basejob == Job_Swordman ) set .@basejob, pow(2,1);
                        else if ( basejob == Job_Mage ) set .@basejob, pow(2,2);
                        else if ( basejob == Job_Archer ) set .@basejob, pow(2,3);
                        else if ( basejob == Job_Acolyte ) set .@basejob, pow(2,4);
                        else if ( basejob == Job_Merchant ) set .@basejob, pow(2,5);
                        else if ( basejob == Job_Thief ) set .@basejob, pow(2,6);
                        else if ( basejob == Job_Knight ) set .@basejob, pow(2,7);
                        else if ( basejob == Job_Priest ) set .@basejob, pow(2,8);
                        else if ( basejob == Job_Wizard ) set .@basejob, pow(2,9);
                        else if ( basejob == Job_Blacksmith ) set .@basejob, pow(2,10);
                        else if ( basejob == Job_Hunter ) set .@basejob, pow(2,11);
                        else if ( basejob == Job_Assassin ) set .@basejob, pow(2,12);
                        else if ( basejob == Job_Crusader ) set .@basejob, pow(2,13);
                        else if ( basejob == Job_Monk ) set .@basejob, pow(2,14);
                        else if ( basejob == Job_Sage ) set .@basejob, pow(2,15);
                        else if ( basejob == Job_Rogue ) set .@basejob, pow(2,16);
                        else if ( basejob == Job_Alchemist ) set .@basejob, pow(2,17);
                        else if ( basejob == Job_Bard || basejob == Job_Dancer ) set .@basejob, pow(2,18);
                        else if ( basejob == Job_Taekwon ) set .@basejob, pow(2,19);
                        else if ( basejob == Job_Star_Gladiator ) set .@basejob, pow(2,20);
                        else if ( basejob == Job_Soul_Linker ) set .@basejob, pow(2,21);
                        else if ( basejob == Job_Gunslinger ) set .@basejob, pow(2,22);
                        else if ( basejob == Job_Ninja ) set .@basejob, pow(2,23);
                        next;
                        while (1) {
                                set .@menu$, "";
                                set .@i, 0;
                                set .@size1, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) );
                                set .@size2, getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) );
                                while ( .@i < .@size1 ) {
                                        set .@j, 1;
                                        while ( .@j < .@size2 && getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@j +"]") != getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") )
                                                set .@j, .@j +1 ;
                                        set .@color$, "^00AA00";
                                        if ( .@j != .@size2 && .@size2 ||
                                                @ms_b_m_1[0] == getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") ||
                                                @ms_b_m_2[0] == getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") ||
                                                @ms_b_m_3[0] == getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") ||
                                                @ms_b_m_4[0] == getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") ||
                                                getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[3]") && ( BaseLevel < getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[3]") || BaseLevel > getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[4]") ) ||
                                                getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[2]") && getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[2]") & .@basejob == 0 )
                                                set .@color$, "^FF0000";
                                        set .@menu$, .@menu$ + .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$") +":";
                                        set .@i, .@i +1 ;
                                }
                                set .@menu, select(.@menu$) -1;
                                set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
                                mes "["+ strnpcinfo(1) +"]";
                                mes "^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[0]") +"^000000";
                                mes "Description: ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[1]") +"^000000";
                                if ( getd(".ms_b_m_"+ .@m_id +"[6]") ) {
                                        for ( set .@i, 1; .@i < .@size2; set .@i, .@i +1 ) {
                                                if ( getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") == .@m_id ) break;
                                        }
                                        mes "Status : "+( ( .@i == .@size2 || getd("@ms_b_n_"+ strnpcinfo(2)) == 0 )?"^FF0000Incomplete":"^00CC00Completed" )+"^000000";
                                }
                                mes " ";
                                set .@size, getarraysize( getd(".ms_b_t_"+ .@m_id) );
                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                        mes "Require Mobs : ^0000FF"+ getd(".ms_b_t_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getmonsterinfo( getd(".ms_b_t_"+ .@m_id +"["+ .@i +"]") , 0) +"^000000";
                                set .@size, getarraysize( getd(".ms_b_ir_"+ .@m_id) );
                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                        mes "Require Items : ^0000FF"+ getd(".ms_b_ir_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ir_"+ .@m_id +"["+ .@i +"]") ) +"^000000";
                                mes " ";
                                if ( getd(".ms_b_m_"+ .@m_id +"[6]") || getd(".ms_b_m_"+ .@m_id +"[3]") || getd(".ms_b_m_"+ .@m_id +"[5]") || getd(".ms_b_m_"+ .@m_id +"[2]") ) {
                                        mes "[^FF0000Limitations^000000]";
                                        if ( getd(".ms_b_m_"+ .@m_id +"[6]") )
                                                mes "Can do : "+( ( getd(".ms_b_m_"+ .@m_id +"[6]") == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
                                        if ( getd(".ms_b_m_"+ .@m_id +"[3]") )
                                                mes "Base Level :"+( ( getd(".ms_b_m_"+ .@m_id +"[3]") )?"  ^0000FF"+ getd(".ms_b_m_"+ .@m_id +"[3]") +( ( getd(".ms_b_m_"+ .@m_id +"[3]") != getd(".ms_b_m_"+ .@m_id +"[4]") )?"~"+ getd(".ms_b_m_"+ .@m_id +"[4]"):"" )+"^000000":"" );
                                        if ( getd(".ms_b_m_"+ .@m_id +"[5]") )
                                                mes "Time Limit : ^FF0000"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") /60 )?getd(".ms_b_m_"+ .@m_id +"[5]") /60 +" hour"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?" ":"" ):"" )+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?getd(".ms_b_m_"+ .@m_id +"[5]") %60 +" min":"" )+"^000000";
                                        if ( getd(".ms_b_m_"+ .@m_id +"[2]") ) {
                                                deletearray .@joblimit;
                                                for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
                                                        if ( getd(".ms_b_m_"+ .@m_id +"[2]") & pow( 2, .@i ) ) {
                                                                set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
                                                        }
                                                }
                                                set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
                                                set .@size, getarraysize(.@joblimit);
                                                for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
                                                        set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
                                                mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
                                        }
                                        mes " ";
                                }
                                mes "[^009900Rewards^000000]";
                                if ( getd(".ms_b_m_"+ .@m_id +"[7]") )
                                        mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[7]") ) +"^000000";
                                if ( getd(".ms_b_m_"+ .@m_id +"[8]") )
                                        mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[8]") ) +"^000000";
                                if ( getd(".ms_b_m_"+ .@m_id +"[9]") )
                                        mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[9]") ) +"^000000";
                                if ( getd(".ms_b_m_"+ .@m_id +"[10]") )
                                        mes "Cash Point : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[10]") ) +"^000000";
                                set .@size, getarraysize( getd(".ms_b_ia_"+ .@m_id ) );
                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                        mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ .@m_id +"["+ .@i +"]") ) +"^000000";
                                next;
                                if ( select ( "- Accept this mission", "- Pick another mission" ) == 1 ) {
                                        for ( set .@i, 1; .@i < .@size2; set .@i, .@i +1 ) {
                                                if ( getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") == .@m_id ) {
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        mes "It appears that you have already completed this mission. This mission can either only be completed once, or the daily cool-down delay hasn't passed yet!";
                                                        set .@break, 1;
                                                        next;
                                                        break;
                                                }
                                        }
                                        if ( .@break == 0 && ( @ms_b_m_1[0] == .@m_id || @ms_b_m_2[0] == .@m_id || @ms_b_m_3[0] == .@m_id || @ms_b_m_4[0] == .@m_id ) ) {
                                                mes "["+ strnpcinfo(1) +"]";
                                                mes "You already taken this mission";
                                                set .@break, 1;
                                                next;
                                        }
                                        if ( .@break == 0 && getd(".ms_b_m_"+ .@m_id +"[3]") && ( BaseLevel < getd(".ms_b_m_"+ .@m_id +"[3]") || BaseLevel > getd(".ms_b_m_"+ .@m_id +"[4]") ) ) {
                                                mes "["+ strnpcinfo(1) +"]";
                                                mes "You're not within the level range to accept this mission!";
                                                set .@break, 1;
                                                next;
                                        }
                                        if ( .@break == 0 && getd(".ms_b_m_"+ .@m_id +"[2]") ) {
                                                if ( getd(".ms_b_m_"+ .@m_id +"[2]") & .@basejob == 0 ) {
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        mes "Your current job class is not allowed to do this mission";
                                                        set .@break, 1;
                                                        next;
                                                }
                                        }
                                        if ( .@break == 0 ) break;
                                }
                                set .@break, 0;
                        }
                        mes "["+ strnpcinfo(1) +"]";
                        mes "You have accepted the following mission:";
                        mes "^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[0]") +"^000000";
                        if ( getd(".ms_b_m_"+ .@m_id +"[5]") ) {
                                mes "Time Left : ^FF0000"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") /60 )?getd(".ms_b_m_"+ .@m_id +"[5]") /60 +" hour"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?" ":"" ):"" )+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?getd(".ms_b_m_"+ .@m_id +"[5]") %60 +" min":"" )+"^000000";
                                addtimer getd(".ms_b_m_"+ .@m_id +"[5]") * 60 * 1000, "ms_b_::OnQuest"+ .@slot +"TimeUp";
                                setd "@ms_b_m_"+ .@slot +"[1]", gettimetick(2) + getd(".ms_b_m_"+ .@m_id +"[5]") * 60;
                        }
                        setd "@ms_b_m_"+ .@slot +"[0]", .@m_id;
                        setd "ms_b_m_"+ .@slot +"$", getd("@ms_b_m_"+ .@slot +"[0]") +"#"+ getd("@ms_b_m_"+ .@slot +"[1]");
                        close;
                case 4:
                        if ( getgmlevel() < 99 ) end;
                        while (1) {
                                mes "["+ strnpcinfo(1) +"]";
                                mes "Please select an option below:";
                                next;
                                switch ( select ( "Setup a mission", "Edit a mission", "Remove a mission", "Swap mission order" ) ) {
                                        case 1:
                                                if ( $ms_b_id >= 99999 ) {
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        mes "This is the end, you can't create anymore missions";
                                                        close;
                                                }
                                                else if ( getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ) == 40 ) {
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        mes "Each NPC are only allowed to setup 40 missions";
                                                        next;
                                                        break;
                                                }
                                                deletearray @tmp_ms_b_m_$;
                                                deletearray @tmp_ms_b_m_;
                                                deletearray @tmp_ms_b_t_;
                                                deletearray @tmp_ms_b_ir_;
                                                deletearray @tmp_ms_b_ia_;
                                                if ( callsub( L_setupmission, 0 ) == 0 ) {
                                                        deletearray @tmp_ms_b_m_$;
                                                        deletearray @tmp_ms_b_m_;
                                                        deletearray @tmp_ms_b_t_;
                                                        deletearray @tmp_ms_b_ir_;
                                                        deletearray @tmp_ms_b_ia_;
                                                        break;
                                                }
                                                set $ms_b_id, $ms_b_id +1 ;
                                                setd ".ms_b_n_"+ strnpcinfo(2) +"["+ getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ) +"]", $ms_b_id;
                                                setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd(".ms_b_n_"+ strnpcinfo(2) +"[0]");
                                                set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) );
                                                for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
                                                        setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
                                                set @tmp_ms_b_m_[11], strnpcinfo(2);
                                                copyarray getd(".ms_b_m_"+ $ms_b_id +"$"), @tmp_ms_b_m_$, 128;
                                                copyarray getd(".ms_b_m_"+ $ms_b_id), @tmp_ms_b_m_, 128;
                                                copyarray getd(".ms_b_t_"+ $ms_b_id ), @tmp_ms_b_t_, 128;
                                                copyarray getd(".ms_b_ir_"+ $ms_b_id ), @tmp_ms_b_ir_, 128;
                                                copyarray getd(".ms_b_ia_"+ $ms_b_id ), @tmp_ms_b_ia_, 128;
                                                setarray getd("$ms_b_m_"+ $ms_b_id +"$"),
                                                        @tmp_ms_b_m_$[0],
                                                        @tmp_ms_b_m_$[1],
                                                        ( ( @tmp_ms_b_m_[2] )?@tmp_ms_b_m_[2]:"" )+"#"+( ( @tmp_ms_b_m_[3] )?@tmp_ms_b_m_[3]:"" )+"#"+( ( @tmp_ms_b_m_[4] )?@tmp_ms_b_m_[4]:"" )+"#"+( ( @tmp_ms_b_m_[5] )?@tmp_ms_b_m_[5]:"" )+"#"+( ( @tmp_ms_b_m_[6] )?@tmp_ms_b_m_[6]:"" )+"#"+( ( @tmp_ms_b_m_[7] )?@tmp_ms_b_m_[7]:"" )+"#"+( ( @tmp_ms_b_m_[8] )?@tmp_ms_b_m_[8]:"" )+"#"+( ( @tmp_ms_b_m_[9] )?@tmp_ms_b_m_[9]:"" )+"#"+( ( @tmp_ms_b_m_[10] )?@tmp_ms_b_m_[10]:"" )+"#"+( ( @tmp_ms_b_m_[11] )?@tmp_ms_b_m_[11]:"" )+"#"+( ( @tmp_ms_b_m_[12] )?@tmp_ms_b_m_[12]:"" )+"#"+( ( @tmp_ms_b_m_[13] )?@tmp_ms_b_m_[13]:"" ),
                                                        ( ( @tmp_ms_b_t_[0] )?@tmp_ms_b_t_[0]:"" )+"#"+( ( @tmp_ms_b_t_[1] )?@tmp_ms_b_t_[1]:"" )+"#"+( ( @tmp_ms_b_t_[2] )?@tmp_ms_b_t_[2]:"" )+"#"+( ( @tmp_ms_b_t_[3] )?@tmp_ms_b_t_[3]:"" )+"#"+( ( @tmp_ms_b_t_[4] )?@tmp_ms_b_t_[4]:"" )+"#"+( ( @tmp_ms_b_t_[5] )?@tmp_ms_b_t_[5]:"" )+"#"+( ( @tmp_ms_b_t_[6] )?@tmp_ms_b_t_[6]:"" )+"#"+( ( @tmp_ms_b_t_[7] )?@tmp_ms_b_t_[7]:"" )+"#"+( ( @tmp_ms_b_t_[8] )?@tmp_ms_b_t_[8]:"" )+"#"+( ( @tmp_ms_b_t_[9] )?@tmp_ms_b_t_[9]:"" )+"#"+( ( @tmp_ms_b_t_[10] )?@tmp_ms_b_t_[10]:"" )+"#"+( ( @tmp_ms_b_t_[11] )?@tmp_ms_b_t_[11]:"" )+"#"+( ( @tmp_ms_b_t_[12] )?@tmp_ms_b_t_[12]:"" )+"#"+( ( @tmp_ms_b_t_[13] )?@tmp_ms_b_t_[13]:"" )+"#"+( ( @tmp_ms_b_t_[14] )?@tmp_ms_b_t_[14]:"" )+"#"+( ( @tmp_ms_b_t_[15] )?@tmp_ms_b_t_[15]:"" )+"#"+( ( @tmp_ms_b_ir_[0] )?@tmp_ms_b_ir_[0]:"" )+"#"+( ( @tmp_ms_b_ir_[1] )?@tmp_ms_b_ir_[1]:"" )+"#"+( ( @tmp_ms_b_ir_[2] )?@tmp_ms_b_ir_[2]:"" )+"#"+( ( @tmp_ms_b_ir_[3] )?@tmp_ms_b_ir_[3]:"" )+"#"+( ( @tmp_ms_b_ir_[4] )?@tmp_ms_b_ir_[4]:"" )+"#"+( ( @tmp_ms_b_ir_[5] )?@tmp_ms_b_ir_[5]:"" )+"#"+( ( @tmp_ms_b_ir_[6] )?@tmp_ms_b_ir_[6]:"" )+"#"+( ( @tmp_ms_b_ir_[7] )?@tmp_ms_b_ir_[7]:"" )+"#"+( ( @tmp_ms_b_ir_[8] )?@tmp_ms_b_ir_[8]:"" )+"#"+( ( @tmp_ms_b_ir_[9] )?@tmp_ms_b_ir_[9]:"" )+"#"+( ( @tmp_ms_b_ia_[0] )?@tmp_ms_b_ia_[0]:"" )+"#"+( ( @tmp_ms_b_ia_[1] )?@tmp_ms_b_ia_[1]:"" )+"#"+( ( @tmp_ms_b_ia_[2] )?@tmp_ms_b_ia_[2]:"" )+"#"+( ( @tmp_ms_b_ia_[3] )?@tmp_ms_b_ia_[3]:"" )+"#"+( ( @tmp_ms_b_ia_[4] )?@tmp_ms_b_ia_[4]:"" )+"#"+( ( @tmp_ms_b_ia_[5] )?@tmp_ms_b_ia_[5]:"" )+"#"+( ( @tmp_ms_b_ia_[6] )?@tmp_ms_b_ia_[6]:"" )+"#"+( ( @tmp_ms_b_ia_[7] )?@tmp_ms_b_ia_[7]:"" )+"#"+( ( @tmp_ms_b_ia_[8] )?@tmp_ms_b_ia_[8]:"" )+"#"+( ( @tmp_ms_b_ia_[9] )?@tmp_ms_b_ia_[9]:"" );
                                                deletearray @tmp_ms_b_m_$;
                                                deletearray @tmp_ms_b_m_;
                                                deletearray @tmp_ms_b_t_;
                                                deletearray @tmp_ms_b_ir_;
                                                deletearray @tmp_ms_b_ia_;
                                                mes " ";
                                                mes "Mission has setup successfully";
                                                next;
                                                break;
                                        case 2:
                                                mes "["+ strnpcinfo(1) +"]";
                                                if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
                                                        mes "There is no mission available to edit.";
                                                        next;
                                                        break;
                                                }
                                                mes "Select a mission below to edit:";
                                                next;
                                                if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 0 ) set .@color$, "^0000FF";
                                                else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 1 ) set .@color$, "^00CC00";
                                                else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 2 ) set .@color$, "^FF0000";
                                                set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
                                                set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) );
                                                for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 ) {
                                                        if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 0 ) set .@color$, "^0000FF";
                                                        else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 1 ) set .@color$, "^00CC00";
                                                        else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 2 ) set .@color$, "^FF0000";
                                                        set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
                                                }
                                                set .@menu$, .@menu$ +":^000000 - back";
                                                set .@menu, select(.@menu$) -1;
                                                if ( .@menu == .@size ) break;
                                                set @m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
                                                deletearray @tmp_ms_b_m_$;
                                                deletearray @tmp_ms_b_m_;
                                                deletearray @tmp_ms_b_t_;
                                                deletearray @tmp_ms_b_ir_;
                                                deletearray @tmp_ms_b_ia_;
                                                copyarray @tmp_ms_b_m_$, getd("$ms_b_m_"+ @m_id +"$"), 128;
                                                copyarray @tmp_ms_b_m_, getd(".ms_b_m_"+ @m_id ), 128;
                                                copyarray @tmp_ms_b_t_, getd(".ms_b_t_"+ @m_id ), 128;
                                                copyarray @tmp_ms_b_ir_, getd(".ms_b_ir_"+ @m_id ), 128;
                                                copyarray @tmp_ms_b_ia_, getd(".ms_b_ia_"+ @m_id ), 128;
                                                if ( callsub( L_setupmission, 1 ) == 0 ) {
                                                        deletearray @tmp_ms_b_m_$;
                                                        deletearray @tmp_ms_b_m_;
                                                        deletearray @tmp_ms_b_t_;
                                                        deletearray @tmp_ms_b_ir_;
                                                        deletearray @tmp_ms_b_ia_;
                                                        set @m_id, 0;
                                                        break;
                                                }
                                                copyarray getd(".ms_b_m_"+ @m_id +"$"), @tmp_ms_b_m_$, 128;
                                                copyarray getd(".ms_b_m_"+ @m_id), @tmp_ms_b_m_, 128;
                                                copyarray getd(".ms_b_t_"+ @m_id ), @tmp_ms_b_t_, 128;
                                                copyarray getd(".ms_b_ir_"+ @m_id ), @tmp_ms_b_ir_, 128;
                                                copyarray getd(".ms_b_ia_"+ @m_id ), @tmp_ms_b_ia_, 128;
                                                setarray getd("$ms_b_m_"+ @m_id +"$"),
                                                        @tmp_ms_b_m_$[0],
                                                        @tmp_ms_b_m_$[1],
                                                        ( ( @tmp_ms_b_m_[2] )?@tmp_ms_b_m_[2]:"" )+"#"+( ( @tmp_ms_b_m_[3] )?@tmp_ms_b_m_[3]:"" )+"#"+( ( @tmp_ms_b_m_[4] )?@tmp_ms_b_m_[4]:"" )+"#"+( ( @tmp_ms_b_m_[5] )?@tmp_ms_b_m_[5]:"" )+"#"+( ( @tmp_ms_b_m_[6] )?@tmp_ms_b_m_[6]:"" )+"#"+( ( @tmp_ms_b_m_[7] )?@tmp_ms_b_m_[7]:"" )+"#"+( ( @tmp_ms_b_m_[8] )?@tmp_ms_b_m_[8]:"" )+"#"+( ( @tmp_ms_b_m_[9] )?@tmp_ms_b_m_[9]:"" )+"#"+( ( @tmp_ms_b_m_[10] )?@tmp_ms_b_m_[10]:"" )+"#"+( ( @tmp_ms_b_m_[11] )?@tmp_ms_b_m_[11]:"" )+"#"+( ( @tmp_ms_b_m_[12] )?@tmp_ms_b_m_[12]:"" )+"#"+( ( @tmp_ms_b_m_[13] )?@tmp_ms_b_m_[13]:"" ),
                                                        ( ( @tmp_ms_b_t_[0] )?@tmp_ms_b_t_[0]:"" )+"#"+( ( @tmp_ms_b_t_[1] )?@tmp_ms_b_t_[1]:"" )+"#"+( ( @tmp_ms_b_t_[2] )?@tmp_ms_b_t_[2]:"" )+"#"+( ( @tmp_ms_b_t_[3] )?@tmp_ms_b_t_[3]:"" )+"#"+( ( @tmp_ms_b_t_[4] )?@tmp_ms_b_t_[4]:"" )+"#"+( ( @tmp_ms_b_t_[5] )?@tmp_ms_b_t_[5]:"" )+"#"+( ( @tmp_ms_b_t_[6] )?@tmp_ms_b_t_[6]:"" )+"#"+( ( @tmp_ms_b_t_[7] )?@tmp_ms_b_t_[7]:"" )+"#"+( ( @tmp_ms_b_t_[8] )?@tmp_ms_b_t_[8]:"" )+"#"+( ( @tmp_ms_b_t_[9] )?@tmp_ms_b_t_[9]:"" )+"#"+( ( @tmp_ms_b_t_[10] )?@tmp_ms_b_t_[10]:"" )+"#"+( ( @tmp_ms_b_t_[11] )?@tmp_ms_b_t_[11]:"" )+"#"+( ( @tmp_ms_b_t_[12] )?@tmp_ms_b_t_[12]:"" )+"#"+( ( @tmp_ms_b_t_[13] )?@tmp_ms_b_t_[13]:"" )+"#"+( ( @tmp_ms_b_t_[14] )?@tmp_ms_b_t_[14]:"" )+"#"+( ( @tmp_ms_b_t_[15] )?@tmp_ms_b_t_[15]:"" )+"#"+( ( @tmp_ms_b_ir_[0] )?@tmp_ms_b_ir_[0]:"" )+"#"+( ( @tmp_ms_b_ir_[1] )?@tmp_ms_b_ir_[1]:"" )+"#"+( ( @tmp_ms_b_ir_[2] )?@tmp_ms_b_ir_[2]:"" )+"#"+( ( @tmp_ms_b_ir_[3] )?@tmp_ms_b_ir_[3]:"" )+"#"+( ( @tmp_ms_b_ir_[4] )?@tmp_ms_b_ir_[4]:"" )+"#"+( ( @tmp_ms_b_ir_[5] )?@tmp_ms_b_ir_[5]:"" )+"#"+( ( @tmp_ms_b_ir_[6] )?@tmp_ms_b_ir_[6]:"" )+"#"+( ( @tmp_ms_b_ir_[7] )?@tmp_ms_b_ir_[7]:"" )+"#"+( ( @tmp_ms_b_ir_[8] )?@tmp_ms_b_ir_[8]:"" )+"#"+( ( @tmp_ms_b_ir_[9] )?@tmp_ms_b_ir_[9]:"" )+"#"+( ( @tmp_ms_b_ia_[0] )?@tmp_ms_b_ia_[0]:"" )+"#"+( ( @tmp_ms_b_ia_[1] )?@tmp_ms_b_ia_[1]:"" )+"#"+( ( @tmp_ms_b_ia_[2] )?@tmp_ms_b_ia_[2]:"" )+"#"+( ( @tmp_ms_b_ia_[3] )?@tmp_ms_b_ia_[3]:"" )+"#"+( ( @tmp_ms_b_ia_[4] )?@tmp_ms_b_ia_[4]:"" )+"#"+( ( @tmp_ms_b_ia_[5] )?@tmp_ms_b_ia_[5]:"" )+"#"+( ( @tmp_ms_b_ia_[6] )?@tmp_ms_b_ia_[6]:"" )+"#"+( ( @tmp_ms_b_ia_[7] )?@tmp_ms_b_ia_[7]:"" )+"#"+( ( @tmp_ms_b_ia_[8] )?@tmp_ms_b_ia_[8]:"" )+"#"+( ( @tmp_ms_b_ia_[9] )?@tmp_ms_b_ia_[9]:"" );
                                                deletearray @tmp_ms_b_m_$;
                                                deletearray @tmp_ms_b_m_;
                                                deletearray @tmp_ms_b_t_;
                                                deletearray @tmp_ms_b_ir_;
                                                deletearray @tmp_ms_b_ia_;
                                                set @m_id, 0;
                                                mes " ";
                                                mes "Mission has edited successfully";
                                                next;
                                                break;
                                        case 3:
                                                mes "["+ strnpcinfo(1) +"]";
                                                if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
                                                        mes "There is no mission available to remove.";
                                                        next;
                                                        break;
                                                }
                                                mes "Select a mission below to delete:";
                                                next;
                                                if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 0 ) set .@color$, "^0000FF";
                                                else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 1 ) set .@color$, "^00CC00";
                                                else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 2 ) set .@color$, "^FF0000";
                                                set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
                                                set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) );
                                                for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 ) {
                                                        if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 0 ) set .@color$, "^0000FF";
                                                        else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 1 ) set .@color$, "^00CC00";
                                                        else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 2 ) set .@color$, "^FF0000";
                                                        set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
                                                }
                                                set .@menu$, .@menu$ +":^000000 - back";
                                                set .@menu, select(.@menu$) -1;
                                                if ( .@menu == .@size ) break;
                                                mes "["+ strnpcinfo(1) +"]";
                                                mes "Are you sure that you want to delete the selected mission?";
                                                mes " ";
                                                set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
                                                if ( getd(".ms_b_m_"+ .@m_id +"[6]") == 0 ) set .@color$, "^0000FF";
                                                else if ( getd(".ms_b_m_"+ .@m_id +"[6]") == 1 ) set .@color$, "^00CC00";
                                                else if ( getd(".ms_b_m_"+ .@m_id +"[6]") == 2 ) set .@color$, "^FF0000";
                                                mes "^996600"+ .@m_id +". "+ .@color$ + getd("$ms_b_m_"+ .@m_id +"$") +"^000000";
                                                mes "Description: ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[1]") +"^000000";
                                                next;
                                                if ( select ( "No", "Yes" ) == 1 ) break;
                                                mes "["+ strnpcinfo(1) +"]";
                                                mes "Mission has deleted successfully";
                                                mes " ";
                                                mes "^996600"+ .@m_id +". "+ .@color$ + getd("$ms_b_m_"+ .@m_id +"$") +"^000000";
                                                deletearray getd(".ms_b_m_"+ .@m_id +"$");
                                                deletearray getd(".ms_b_m_"+ .@m_id );
                                                deletearray getd(".ms_b_t_"+ .@m_id );
                                                deletearray getd(".ms_b_ir_"+ .@m_id );
                                                deletearray getd(".ms_b_ia_"+ .@m_id );
                                                deletearray getd("$ms_b_m_"+ .@m_id +"$");
                                                deletearray getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]"), 1;
                                                setd "$ms_b_n_"+ strnpcinfo(2) +"$", ( ( getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") )?getd(".ms_b_n_"+ strnpcinfo(2) +"[0]"):"" );
                                                set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) );
                                                for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
                                                        setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"#";
                                                next;
                                                break;
                                        case 4:
                                                mes "["+ strnpcinfo(1) +"]";
                                                if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
                                                        mes "There is no mission available to swap";
                                                        next;
                                                        break;
                                                }
                                                mes "Select a mission below to swap:";
                                                next;
                                                if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 0 ) set .@color$, "^0000FF";
                                                else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 1 ) set .@color$, "^00CC00";
                                                else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 2 ) set .@color$, "^FF0000";
                                                set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
                                                set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) );
                                                for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 ) {
                                                        if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 0 ) set .@color$, "^0000FF";
                                                        else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 1 ) set .@color$, "^00CC00";
                                                        else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 2 ) set .@color$, "^FF0000";
                                                        set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
                                                }
                                                set .@menu$, .@menu$ +":^000000 - back";
                                                set .@menu, select(.@menu$) -1;
                                                if ( .@menu == .@size ) break;
                                                mes "["+ strnpcinfo(1) +"]";
                                                mes "mission selected :";
                                                set .@m_id1, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
                                                if ( getd(".ms_b_m_"+ .@m_id1 +"[6]") == 0 ) set .@color1$, "^0000FF";
                                                else if ( getd(".ms_b_m_"+ .@m_id1 +"[6]") == 1 ) set .@color1$, "^00CC00";
                                                else if ( getd(".ms_b_m_"+ .@m_id1 +"[6]") == 2 ) set .@color1$, "^FF0000";
                                                mes "^996600"+ .@m_id1 +". "+ .@color1$ + getd("$ms_b_m_"+ .@m_id1 +"$") +"^000000";
                                                mes " ";
                                                mes "Please select another mission to be swapped:";
                                                next;
                                                set .@menu2, select(.@menu$) -1;
                                                if ( .@menu2 == .@size ) break;
                                                mes "["+ strnpcinfo(1) +"]";
                                                mes "Missions has swapped successfully";
                                                set .@m_id2, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu2 +"]");
                                                if ( getd(".ms_b_m_"+ .@m_id2 +"[6]") == 0 ) set .@color2$, "^0000FF";
                                                else if ( getd(".ms_b_m_"+ .@m_id2 +"[6]") == 1 ) set .@color2$, "^00CC00";
                                                else if ( getd(".ms_b_m_"+ .@m_id2 +"[6]") == 2 ) set .@color2$, "^FF0000";
                                                mes "^996600"+ .@m_id1 +". "+ .@color1$ + getd("$ms_b_m_"+ .@m_id1 +"$") +"^000000";
                                                mes "^996600"+ .@m_id2 +". "+ .@color2$ + getd("$ms_b_m_"+ .@m_id2 +"$") +"^000000";
                                                setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]", .@m_id2;
                                                setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu2 +"]", .@m_id1;
                                                setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd(".ms_b_n_"+ strnpcinfo(2) +"[0]");
                                                set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) );
                                                for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
                                                        setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
                                                next;
                                                break;
                                }
                        }
        }
        close;
OnQuest1TimeUp:
        dispbottom "Mission #1: "+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]") +" has Time Up";
        deletearray @ms_b_m_1;
        set ms_b_m_1$, "";
        end;
OnQuest2TimeUp:
        dispbottom "Mission #2: "+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]") +" has Time Up";
        deletearray @ms_b_m_2;
        set ms_b_m_2$, "";
        end;
OnQuest3TimeUp:
        dispbottom "Mission #3: "+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]") +" has Time Up";
        deletearray @ms_b_m_3;
        set ms_b_m_3$, "";
        end;
OnQuest4TimeUp:
        dispbottom "Mission #4: "+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]") +" has Time Up";
        deletearray @ms_b_m_4;
        set ms_b_m_4$, "";
        end;
L_showprogress:
        mes "^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[0]") +"^000000";
        mes "Description: ^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[1]") +"^000000";
        mes " ";
        mes "[^804000Mission Progress^000000]";
        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[5]") ) {
                set .@left, getd("@ms_b_m_"+ @slot +"[1]") - gettimetick(2);
                set .@hour, .@left / 3600;
                set .@min, .@left % 3600 / 60;
                set .@sec, .@left % 60;
                mes "Time Left:  ^FF0000"+( ( .@hour )?.@hour +" hour ":"" )+( ( .@hour || .@min )?.@min +" min ":"" )+ .@sec +" sec^000000";
        }
        set .@size, getarraysize( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
        for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                mes "Mobs : ^0000FF"+ getmonsterinfo( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") , 0) +"^000000 ["+( ( getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") > getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") )?getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]"):getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") ) +"/"+ getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +"]";
        set .@size, getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
        for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                mes "Items : ^0000FF"+ getitemname( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000 ["+ countitem( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"/"+ getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +"]";
        mes " ";
        mes "[^009900Rewards^000000]";
        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") )
                mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) +"^000000";
        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") )
                mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) +"^000000";
        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") )
                mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +"^000000";
        if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") )
                mes "Cash Point : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +"^000000";
        set .@size, getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
        for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
        mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000";
        mes " ";
        return;
L_setupmission:
        while (1) {
                mes "["+ strnpcinfo(1) +"]";
                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
                mes " ";
                if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
                        mes "Require mobs : ^FF0000Incomplete^000000";
                set .@size, getarraysize(@tmp_ms_b_t_);
                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                        mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
                if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
                        mes "Require items : ^FF0000Incomplete^000000";
                set .@size, getarraysize(@tmp_ms_b_ir_);
                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                        mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
                mes " ";
                if ( @tmp_ms_b_m_[6] || @tmp_ms_b_m_[3] || @tmp_ms_b_m_[5] || @tmp_ms_b_m_[2] ) {
                        mes "[^FF0000Limitations^000000]";
                        if ( @tmp_ms_b_m_[6] )
                                mes "Can do : "+( ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
                        if ( @tmp_ms_b_m_[3] )
                                mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?"  ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
                        if ( @tmp_ms_b_m_[5] )
                                mes "Time Limit : ^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000";
                        if ( @tmp_ms_b_m_[2] ) {
                                deletearray .@joblimit;
                                for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
                                        if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
                                                set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
                                        }
                                }
                                set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
                                set .@size, getarraysize(.@joblimit);
                                for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
                                        set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
                                mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
                        }
                        mes " ";
                }
                mes "[^009900Rewards^000000]";
                if ( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ )
                        set .@color_reward$, "";
                else {
                        mes "^FF0000Incomplete^000000";
                        set .@color_reward$, "  - ^FF0000Incomplete^000000";
                }
                if ( @tmp_ms_b_m_[7] )
                        mes "Base Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ) +"^000000";
                if ( @tmp_ms_b_m_[8] )
                        mes "Job Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ) +"^000000";
                if ( @tmp_ms_b_m_[9] )
                        mes "Zeny : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ) +"^000000";
                if ( @tmp_ms_b_m_[10] )
                        mes "Cash Point : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ) +"^000000";
                set .@size, getarraysize(@tmp_ms_b_ia_);
                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                        mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
                next;
                if ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) &&
                        ( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ ) )
                        set .@color_all$, "^00CC00";
                else
                        set .@color_all$, "^FF0000";
                set .@setupmenu, select (
                        "Important Settings"+( ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) )?"":"  - ^FF0000Incomplete^000000" ),
                        "Mission Limitations",
                        "Rewards"+ .@color_reward$,
                        .@color_all$ +"Complete "+( ( getarg(0) )?"Edit":"Setup" )+"^000000",
                        "- back" );
                switch ( .@setupmenu ) {
                        case 1:
                                while (1) {
                                        mes "["+ strnpcinfo(1) +"]";
                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                        mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
                                        mes " ";
                                        if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
                                                mes "Require mobs : ^FF0000Incomplete^000000";
                                        set .@size, getarraysize(@tmp_ms_b_t_);
                                        for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
                                        if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
                                                mes "Require items : ^FF0000Incomplete^000000";
                                        set .@size, getarraysize(@tmp_ms_b_ir_);
                                        for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
                                        next;
                                        set .@importantmenu, select (
                                                "Mission Name"+( ( @tmp_ms_b_m_$[0] != "" )?"":"  - ^FF0000Incomplete^000000" ),
                                                "Description"+( ( @tmp_ms_b_m_$[1] != "" )?"":"  - ^FF0000Incomplete^000000" ),
                                                "Require Mobs",
                                                "Require Items",
                                                "- back" );
                                        switch ( .@importantmenu ) {
                                                case 1:
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                        mes " ";
                                                        mes "Input the mission name";
                                                        next;
                                                        input .@tmp$;
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        if ( getstrlen(.@tmp$) > 60 ) {
                                                                mes "Mission name must not more than 60 characters";
                                                                next;
                                                                break;
                                                        }
                                                        else if ( compare ( .@tmp$, ":" ) || compare ( .@tmp$, "^" ) ) {
                                                                mes "Mission name must not allow to use these symbols";
                                                                mes "-> : <- colon";
                                                                mes "-> ^ <- caret";
                                                                next;
                                                                break;
                                                        }
                                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                        mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
                                                        mes " ";
                                                        mes "Are you sure to change the name to";
                                                        mes "^0000FF"+ .@tmp$ +"^000000";
                                                        next;
                                                        if ( select ( "Yes", "No" ) == 2 ) break;
                                                        set @tmp_ms_b_m_$[0], .@tmp$;
                                                        break;
                                                case 2:
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                        mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
                                                        mes " ";
                                                        mes "Input the descriptions";
                                                        next;
                                                        set .@tmp1$, "";
                                                        set .@tmp2$, "";
                                                        set .@tmp3$, "";
                                                        set .@tmp, 0;
                                                        do {
                                                                set .@tmp, .@tmp +1 ;
                                                                input getd(".@tmp"+ .@tmp +"$");
                                                        } while ( getstrlen( getd(".@tmp"+ .@tmp +"$") ) > 50 && .@tmp < 3 );
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                        mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
                                                        mes " ";
                                                        mes "Are you sure to change description to";
                                                        mes "^0000FF"+ .@tmp1$ + .@tmp2$ + .@tmp3$ +"^000000";
                                                        next;
                                                        if ( select ( "Yes", "No" ) == 2 ) break;
                                                        set @tmp_ms_b_m_$[1], .@tmp1$ + .@tmp2$ + .@tmp3$;
                                                        break;
                                                case 3:
                                                        if ( getarg(0) ) {
                                                                mes "["+ strnpcinfo(1) +"]";
                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                mes " ";
                                                                mes "Require Mobs are not allow to edit";
                                                                next;
                                                                break;
                                                        }
                                                        while (1) {
                                                                mes "["+ strnpcinfo(1) +"]";
                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                mes " ";
                                                                if ( @tmp_ms_b_t_ == 0 )
                                                                        mes "Require mobs :";
                                                                set .@size, getarraysize(@tmp_ms_b_t_);
                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                        mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
                                                                next;
                                                                set .@mobmenu, select ( "Add a monster requirement", "Remove a monster requirement", "- back" );
                                                                switch ( .@mobmenu ) {
                                                                        case 1:
                                                                                mes "["+ strnpcinfo(1) +"]";
                                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                                mes " ";
                                                                                if ( @tmp_ms_b_t_ == 0 )
                                                                                        mes "Require mobs :";
                                                                                set .@size, getarraysize(@tmp_ms_b_t_);
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                                        mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
                                                                                mes " ";
                                                                                if ( .@size == 16 ) {
                                                                                        mes "Require mobs are only allow up to 8 different kinds";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                mes "Input monster ID";
                                                                                next;
                                                                                input .@tmp, 0, 9999;
                                                                                mes "["+ strnpcinfo(1) +"]";
                                                                                if ( .@tmp == 0 ) {
                                                                                        mes "Invalid monster ID";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                else if ( getmonsterinfo(.@tmp, 1) == -1 ) {
                                                                                        mes "Invalid monster ID";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                if ( @tmp_ms_b_t_ == 0 )
                                                                                        mes "Require mobs :";
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                                        mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
                                                                                mes " ";
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
                                                                                        if ( .@tmp == @tmp_ms_b_t_[.@i] ) break;
                                                                                }
                                                                                if ( .@i != .@size ) {
                                                                                        mes "Monster ^0000FF"+ getmonsterinfo(.@tmp, 0) +"^000000 is Repeated";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                mes "Require mobs : ^0000FF"+ getmonsterinfo(.@tmp, 0) +"^000000";
                                                                                mes "Input an amount need to be hunt";
                                                                                next;
                                                                                input .@tmp2, 0, 999;
                                                                                if ( .@tmp2 == 0 ) {
                                                                                        mes "["+ strnpcinfo(1) +"]";
                                                                                        mes "Invalid amount";
                                                                                        next;
                                                                                }
                                                                                else
                                                                                        setarray @tmp_ms_b_t_[ .@size ], .@tmp, .@tmp2;
                                                                                break;
                                                                        case 2:
                                                                                mes "["+ strnpcinfo(1) +"]";
                                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                                mes " ";
                                                                                if ( @tmp_ms_b_t_ == 0 ) {
                                                                                        mes "There are no monster to remove";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                set .@size, getarraysize(@tmp_ms_b_t_);
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                                        mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
                                                                                mes " ";
                                                                                mes "Select a mob to delete";
                                                                                next;
                                                                                set .@menu$, "^0000FF"+ @tmp_ms_b_t_[1] +" "+ getmonsterinfo(@tmp_ms_b_t_, 0);
                                                                                for ( set .@i, 2; .@i < .@size; set .@i, .@i +2 )
                                                                                        set .@menu$, .@menu$ +":"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0);
                                                                                set .@menu$, .@menu$ +"^000000:- back";
                                                                                set .@menu, select(.@menu$) -1;
                                                                                if ( .@menu == .@size /2 ) break;
                                                                                deletearray @tmp_ms_b_t_[ .@menu *2 ], 2;
                                                                        case 3:
                                                                }
                                                                if ( .@mobmenu == 3 ) break;
                                                        }
                                                        break;
                                                case 4:
                                                        while (1) {
                                                                mes "["+ strnpcinfo(1) +"]";
                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                mes " ";
                                                                if ( @tmp_ms_b_ir_ == 0 )
                                                                        mes "Require items :";
                                                                set .@size, getarraysize(@tmp_ms_b_ir_);
                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                        mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
                                                                next;
                                                                set .@item_require_menu, select ( "add item requirement", "remove a require item", "- back" );
                                                                switch ( .@item_require_menu ) {
                                                                        case 1:
                                                                                mes "["+ strnpcinfo(1) +"]";
                                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                                mes " ";
                                                                                if ( @tmp_ms_b_ir_ == 0 )
                                                                                        mes "Require items : ";
                                                                                set .@size, getarraysize(@tmp_ms_b_ir_);
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                                        mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
                                                                                mes " ";
                                                                                if ( .@size == 10 ) {
                                                                                        mes "Require items are only allow up to 5 different kinds";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                mes "Input item ID";
                                                                                next;
                                                                                input .@tmp, 0, 32767;
                                                                                mes "["+ strnpcinfo(1) +"]";
                                                                                if ( getitemname(.@tmp) == "null" ) {
                                                                                        mes "Invalid item ID";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                                mes " ";
                                                                                if ( @tmp_ms_b_ir_ == 0 )
                                                                                        mes "Require items : ";
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                                        mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
                                                                                mes " ";
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
                                                                                        if ( .@tmp == @tmp_ms_b_ir_[.@i] ) break;
                                                                                }
                                                                                if ( .@i != .@size ) {
                                                                                        mes "Item ^0000FF"+ getitemname(.@tmp) +"^000000 is repeated";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                mes "Require items : ^0000FF"+ getitemname(.@tmp) +"^000000";
                                                                                mes "input the amount required for this item";
                                                                                next;
                                                                                input .@tmp2, 0, 30000;
                                                                                if ( .@tmp2 == 0 ) {
                                                                                        mes "["+ strnpcinfo(1) +"]";
                                                                                        mes "Invalid amount";
                                                                                        next;
                                                                                }
                                                                                else
                                                                                        setarray @tmp_ms_b_ir_[ .@size ], .@tmp, .@tmp2;
                                                                                break;
                                                                        case 2:
                                                                                mes "["+ strnpcinfo(1) +"]";
                                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                                mes " ";
                                                                                if ( @tmp_ms_b_ir_ == 0 ) {
                                                                                        mes "There are no item to be remove";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                set .@size, getarraysize(@tmp_ms_b_ir_);
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                                        mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
                                                                                mes " ";
                                                                                mes "Select an item to delete";
                                                                                next;
                                                                                set .@menu$, "^0000FF"+ @tmp_ms_b_ir_[1] +" "+ getitemname(@tmp_ms_b_ir_);
                                                                                for ( set .@i, 2; .@i < .@size; set .@i, .@i +2 )
                                                                                        set .@menu$, .@menu$ +":"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]);
                                                                                set .@menu$, .@menu$ +"^000000:- back";
                                                                                set .@menu, select(.@menu$) -1;
                                                                                if ( .@menu == .@size /2 ) break;
                                                                                deletearray @tmp_ms_b_ir_[ .@menu *2 ], 2;
                                                                        case 3:
                                                                }
                                                                if ( .@item_require_menu == 3 ) break;
                                                        }
                                                case 5:
                                        }
                                        if ( .@importantmenu == 5 ) break;
                                }
                                break;
                        case 2:
                                while (1) {
                                        mes "["+ strnpcinfo(1) +"]";
                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                        mes " ";
                                        mes "[^FF0000Limitations^000000]";
                                        mes "Can do : "+( ( @tmp_ms_b_m_[6] == 0 )?"^0000FFRepeatedly": ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
                                        mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?"  ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
                                        mes "Time Limit : "+( ( @tmp_ms_b_m_[5] )?"^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000":"" );
                                        if ( @tmp_ms_b_m_[2] == 0 )
                                                mes "Job Limit : ^FF0000<none>^000000";
                                        else {
                                                deletearray .@joblimit;
                                                for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
                                                        if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
                                                                set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
                                                        }
                                                }
                                                set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
                                                set .@size, getarraysize(.@joblimit);
                                                for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
                                                        set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
                                                mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
                                        }
                                        next;
                                        set .@limitmenu, select ( "Mission Status (Can do)", "Base Level", "Time Limit", "Job limitation", "- back" );
                                        switch ( .@limitmenu ) {
                                                case 1:
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                        mes " ";
                                                        mes "Can do : "+( ( @tmp_ms_b_m_[6] == 0 )?"^0000FFRepeatedly": ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
                                                        mes "Please select a status";
                                                        next;
                                                        switch ( select ( "^0000FFRepeatedly^000000", "^00CC00Everyday^000000", "^FF0000Only Once^000000" ) ) {
                                                                case 1: set @tmp_ms_b_m_[6], 0; break;
                                                                case 2: set @tmp_ms_b_m_[6], 1; break;
                                                                case 3: set @tmp_ms_b_m_[6], 2;
                                                        }
                                                        break;
                                                case 2:
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                        mes " ";
                                                        mes "Base Level :";
                                                        mes " ";
                                                        mes "Input starting range";
                                                        next;
                                                        input .@tmp, 0, 1000;
                                                        if ( .@tmp == 0 ) {
                                                                mes "["+ strnpcinfo(1) +"]";
                                                                mes "invalid value";
                                                                set @tmp_ms_b_m_[3], 0;
                                                                set @tmp_ms_b_m_[4], 0;
                                                                next;
                                                                break;
                                                        }
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                        mes " ";
                                                        mes "Base Level : ^0000FF"+ .@tmp +"~^000000";
                                                        mes " ";
                                                        mes "Input ending range";
                                                        next;
                                                        input .@tmp2, 0, 1000;
                                                        if ( .@tmp2 == 0 ) {
                                                                mes "["+ strnpcinfo(1) +"]";
                                                                mes "invalid value";
                                                                set @tmp_ms_b_m_[3], 0;
                                                                set @tmp_ms_b_m_[4], 0;
                                                                next;
                                                                break;
                                                        }
                                                        else if ( .@tmp > .@tmp2 ) {
                                                                mes "["+ strnpcinfo(1) +"]";
                                                                mes "Ending range cannot higher than starting range";
                                                                next;
                                                                break;
                                                        }
                                                        else
                                                                setarray @tmp_ms_b_m_[3], .@tmp, .@tmp2;
                                                        break;
                                                case 3:
                                                        mes "["+ strnpcinfo(1) +"]";
                                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                        mes " ";
                                                        mes "Time Limit : "+( ( @tmp_ms_b_m_[5] )?"^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000":"" );
                                                        mes "      1 = 1 minute";
                                                        mes "    60 = 1 hour";
                                                        mes "1440 = 1 day";
                                                        next;
                                                        input @tmp_ms_b_m_[5], 0, 1440;
                                                        break;
                                                case 4:
                                                        while (1) {
                                                                mes "["+ strnpcinfo(1) +"]";
                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                mes " ";
                                                                if ( @tmp_ms_b_m_[2] == 0 )
                                                                        mes "Job Limit : ^FF0000<none>^000000";
                                                                else {
                                                                        deletearray .@joblimit;
                                                                        for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
                                                                                if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
                                                                                        set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
                                                                                }
                                                                        }
                                                                        set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
                                                                        set .@size, getarraysize(.@joblimit);
                                                                        for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
                                                                                set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
                                                                        mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
                                                                }
                                                                next;
                                                                set .@menu$, ( ( @tmp_ms_b_m_[2] & pow( 2, 0 ) )?"^00CC00":"^FF0000" )+ .jobname$;
                                                                for ( set .@i, 1; .@i < 24; set .@i,.@i +1 )
                                                                        set .@menu$, .@menu$ +":"+( ( @tmp_ms_b_m_[2] & pow( 2, .@i ) )?"^00CC00":"^FF0000" )+ .jobname$[.@i];
                                                                set .@menu$, .@menu$ +":^000000- back";
                                                                set .@menu, select(.@menu$) -1;
                                                                if ( .@menu == 24 ) break;
                                                                set @tmp_ms_b_m_[2], @tmp_ms_b_m_[2] ^ pow( 2, .@menu );
                                                        }
                                                        break;
                                                case 5:
                                        }
                                        if ( .@limitmenu == 5 ) break;
                                }
                                break;
                        case 3:
                                while (1) {
                                        mes "["+ strnpcinfo(1) +"]";
                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                        mes " ";
                                        mes "[^009900Rewards^000000]";
                                        mes "Base Exp : "+( ( @tmp_ms_b_m_[7] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ):"^FF00000" ) +"^000000";
                                        mes "Job Exp : "+( ( @tmp_ms_b_m_[8] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ):"^FF00000" ) +"^000000";
                                        mes "Zeny : "+( ( @tmp_ms_b_m_[9] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ):"^FF00000" ) +"^000000 ";
                                        mes "Cash Point : "+( ( @tmp_ms_b_m_[10] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ):"^FF00000" ) +"^000000";
                                        if ( @tmp_ms_b_ia_ == 0 )
                                                mes "Item : ";
                                        set .@size, getarraysize(@tmp_ms_b_ia_);
                                        for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
                                        next;
                                        set .@rewardmenu, select ( "Base Exp", "Job Exp", "Zeny", "Cash Points", "Item Rewards", "- back" );
                                        switch ( .@rewardmenu ) {
                                                case 1:
                                                        input @tmp_ms_b_m_[7], 0, 2000000000;
                                                        break;
                                                case 2:
                                                        input @tmp_ms_b_m_[8], 0, 2000000000;
                                                        break;
                                                case 3:
                                                        input @tmp_ms_b_m_[9], 0, 2000000000;
                                                        break;
                                                case 4:
                                                        input @tmp_ms_b_m_[10], 0, 2000000000;
                                                        break;
                                                case 5:
                                                        while (1) {
                                                                mes "["+ strnpcinfo(1) +"]";
                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                mes " ";
                                                                if ( @tmp_ms_b_ia_ == 0 )
                                                                        mes "Item :";
                                                                set .@size, getarraysize(@tmp_ms_b_ia_);
                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                        mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
                                                                next;
                                                                set .@item_reward_menu, select ( "Add an item reward", "Remove an item reward", "- back" );
                                                                switch ( .@item_reward_menu ) {
                                                                        case 1:
                                                                                mes "["+ strnpcinfo(1) +"]";
                                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                                mes " ";
                                                                                if ( @tmp_ms_b_ia_ == 0 )
                                                                                        mes "Item : ";
                                                                                set .@size, getarraysize(@tmp_ms_b_ia_);
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                                        mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
                                                                                mes " ";
                                                                                if ( .@size == 10 ) {
                                                                                        mes "Items Rewards are only allow up to 5 different kinds";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                mes "Input item id";
                                                                                next;
                                                                                input .@tmp, 0, 32767;
                                                                                mes "["+ strnpcinfo(1) +"]";
                                                                                if ( getitemname(.@tmp) == "null" ) {
                                                                                        mes "Invalid item id";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                                mes " ";
                                                                                if ( @tmp_ms_b_ia_ == 0 )
                                                                                        mes "Item : ";
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                                        mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
                                                                                mes " ";
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
                                                                                        if ( .@tmp == @tmp_ms_b_ia_[.@i] ) break;
                                                                                }
                                                                                if ( .@i != .@size ) {
                                                                                        mes "Item ^0000FF"+ getitemname(.@tmp) +"^000000 is repeated";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                mes "Item : ^0000FF"+ getitemname(.@tmp) +"^000000";
                                                                                mes "Input the amount rewards for this item";
                                                                                next;
                                                                                input .@tmp2, 0, 30000;
                                                                                if ( .@tmp2 == 0 ) {
                                                                                        mes "["+ strnpcinfo(1) +"]";
                                                                                        mes "Invalid amount";
                                                                                        next;
                                                                                }
                                                                                else
                                                                                        setarray @tmp_ms_b_ia_[ .@size ], .@tmp, .@tmp2;
                                                                                break;
                                                                        case 2:
                                                                                mes "["+ strnpcinfo(1) +"]";
                                                                                mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                                                                mes " ";
                                                                                if ( @tmp_ms_b_ia_ == 0 ) {
                                                                                        mes "There is no item rewards to remove";
                                                                                        next;
                                                                                        break;
                                                                                }
                                                                                set .@size, getarraysize(@tmp_ms_b_ia_);
                                                                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                                                                        mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
                                                                                mes " ";
                                                                                mes "Select an item rewards to delete";
                                                                                next;
                                                                                set .@menu$, "^0000FF"+ @tmp_ms_b_ia_[1] +" "+ getitemname(@tmp_ms_b_ia_);
                                                                                for ( set .@i, 2; .@i < .@size; set .@i, .@i +2 )
                                                                                        set .@menu$, .@menu$ +":"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]);
                                                                                set .@menu$, .@menu$ +"^000000:- back";
                                                                                set .@menu, select(.@menu$) -1;
                                                                                if ( .@menu == .@size /2 ) break;
                                                                                deletearray @tmp_ms_b_ia_[ .@menu *2 ], 2;
                                                                        case 3:
                                                                }
                                                                if ( .@item_reward_menu == 3 ) break;
                                                        }
                                                case 6:
                                        }
                                        if ( .@rewardmenu == 6 ) break;
                                }
                                break;
                        case 4:
                                mes "["+ strnpcinfo(1) +"]";
                                if ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) &&
                                        ( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ ) ) {
                                        mes "mission ID: ^996600"+( ( getarg(0) == 0 )?$ms_b_id +1:@m_id )+"^000000";
                                        mes "Name : ^0000FF"+ @tmp_ms_b_m_$[0] +"^000000";
                                }
                                else {
                                        mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
                                        mes " ";
                                        mes "Some field are still Incomplete !";
                                        next;
                                        break;
                                }
                                mes "Description: ^0000FF"+ @tmp_ms_b_m_$[1] +"^000000";
                                mes " ";
                                set .@size, getarraysize(@tmp_ms_b_t_);
                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                        mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
                                set .@size, getarraysize(@tmp_ms_b_ir_);
                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                        mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
                                        mes " ";
                                if ( @tmp_ms_b_m_[6] || @tmp_ms_b_m_[3] || @tmp_ms_b_m_[5] || @tmp_ms_b_m_[2] ) {
                                        mes "[^FF0000Limitations^000000]";
                                        if ( @tmp_ms_b_m_[6] )
                                                mes "Can do : "+( ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
                                        if ( @tmp_ms_b_m_[3] )
                                                mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?"  ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
                                        if ( @tmp_ms_b_m_[5] )
                                                mes "Time Limit : ^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000";
                                        if ( @tmp_ms_b_m_[2] ) {
                                                deletearray .@joblimit;
                                                for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
                                                        if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
                                                                set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
                                                        }
                                                }
                                                set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
                                                set .@size, getarraysize(.@joblimit);
                                                for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
                                                        set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
                                                mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
                                        }
                                        mes " ";
                                }
                                mes "[^009900Rewards^000000]";
                                if ( @tmp_ms_b_m_[7] )
                                        mes "Base Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ) +"^000000";
                                if ( @tmp_ms_b_m_[8] )
                                        mes "Job Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ) +"^000000";
                                if ( @tmp_ms_b_m_[9] )
                                        mes "Zeny : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ) +"^000000";
                                if ( @tmp_ms_b_m_[10] )
                                        mes "Cash Point : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ) +"^000000";
                                set .@size, getarraysize(@tmp_ms_b_ia_);
                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                        mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
                                return 1;
                        case 5:
                                return 0;
                }
        }
        end;
OnInit:
        bindatcmd "mission", "mission::OnWhisperGlobal";
        set .loading, 1;
        set .total_npc, .total_npc +1 ;
        if ( atoi( strnpcinfo(2) ) <= 0 || atoi( strnpcinfo(2) ) > 127 ) {
                debugmes "Mission Board: invalid npc id #"+ strnpcinfo(2);
                goto L_load_finish;
        }
        else if ( .ms_b_name$[ atoi( strnpcinfo(2) ) ] != "" ) {
                debugmes "Mission Board: duplicate npc id #"+ strnpcinfo(2);
                set .duplicate_id[ getarraysize(.duplicate_id) ], atoi( strnpcinfo(2) );
                goto L_load_finish;
        }
        set .ms_b_name$[ atoi( strnpcinfo(2) ) ], strnpcinfo(1);
        explode .@ms_b_n_$, getd("$ms_b_n_"+ strnpcinfo(2) +"$"), "#";
        set .@ex_size, getarraysize(.@ms_b_n_$);
        set .@i, 0;
        while ( .@i < .@ex_size ) {
                setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]", atoi( .@ms_b_n_$[.@i] );
                set .@i, .@i +1 ;
        }
        set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) );
        while ( .@id < .@size ) {
                set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@id +"]");
                explode .@ms_b_m_$[2], getd("$ms_b_m_"+ .@m_id +"$[2]"), "#";
                set .@ex_size, getarraysize(.@ms_b_m_$);
                set .@i, 0;
                while ( .@i < .@ex_size ) {
                        setd ".ms_b_m_"+ .@m_id +"["+ .@i +"]", atoi( .@ms_b_m_$[.@i] );
                        set .@i, .@i +1 ;
                }
                explode .@ms_b_t_$, getd("$ms_b_m_"+ .@m_id +"$[3]"), "#";
                set .@ex_size, getarraysize(.@ms_b_t_$);
                set .@i, 0;
                while ( .@i < .@ex_size ) {
                        setd ".ms_b_t_"+ .@m_id +"["+ .@i +"]", atoi( .@ms_b_t_$[.@i] );
                        set .@i, .@i +1 ;
                }        
                copyarray getd(".ms_b_ir_"+ .@m_id), getd(".ms_b_t_"+ .@m_id +"[16]"), 10;
                copyarray getd(".ms_b_ia_"+ .@m_id), getd(".ms_b_t_"+ .@m_id +"[26]"), 10;
                deletearray getd(".ms_b_t_"+ .@m_id +"[16]"), 20;
                set .@id, .@id +1 ;
                sleep 1;
        }
L_load_finish:
        set .finish, .finish +1;
        if ( .finish == .total_npc ) {
                set .finish, 0;
                set .total_npc, 0;
                set .loading, 0;
                setarray .jobname$,    "(Super) Novice","Swordman","Mage","Archer","Acolyte","Merchant","Thief","Knight","Priest","Wizard","Blacksmith","Hunter","Assassin","Crusader","Monk","Sage","Rogue","Alchemist","Bard/Dancer","Taekwon","Star Gladiator","Soul Linker","Gunslinger","Ninja";
        }
        end;
}
 
-       script  mission -1,{
OnWhisperGlobal:
        if ( getvariableofnpc( .loading, "ms_b_") == 1 ) {
                dispbottom "Mission Board: Loading Mission Data ......";
                end;
        }
        if ( @ms_b_loading == 1 ) {
                dispbottom "Mission Board: Loading Player Data ......";
                end;
        }
        for ( set .@i, 1; .@i <= 4; set .@i, .@i +1 ) {
                if ( getd("@ms_b_m_"+ .@i) ) {
                        if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") == "" ) {
                                dispbottom "Mission Board: Your Mission#"+ .@i +" has deleted because it is no longer available";
                                deletearray getd("@ms_b_m_"+ .@i);
                                setd "ms_b_m_"+ .@i +"$", "";
                                deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
                        }
                        else if ( getd("@ms_b_m_"+ .@i +"[1]") && getd("@ms_b_m_"+ .@i +"[1]") <= gettimetick(2) ) {
                                dispbottom "Mission #1: "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") +" has Time Up";
                                deletearray getd("@ms_b_m_"+ .@i);
                                setd "ms_b_m_"+ .@i +"$", "";
                                deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
                        }
                }
        }
        dispbottom "[Mission Progress]";
        if ( @ms_b_m_1 == 0 && @ms_b_m_2 == 0 && @ms_b_m_3 == 0 && @ms_b_m_4 == 0 ) {
                dispbottom "You haven't accepted any mission(s) yet!";
                end;
        }
        for ( set .@j, 1; .@j <= 4; set .@j, .@j +1 ) {
                if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
                        dispbottom "-----------------------";
                        dispbottom "Mission #"+ .@j +":  "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]");
                        if ( getvariableofnpc( getd(".ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"[5]"), "ms_b_" ) ) {
                                set .@left, getd("@ms_b_m_"+ .@j +"[1]") - gettimetick(2);
                                set .@hour, .@left / 3600;
                                set .@min, .@left % 3600 / 60;
                                set .@sec, .@left % 60;
                                dispbottom "Time Left:  "+( ( .@hour )?.@hour +" hour ":"" )+( ( .@hour || .@min )?.@min +" min ":"" )+ .@sec +" sec";
                        }
                        if ( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ) {
       
                                set .@size, getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) );
                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                        dispbottom "Monsters killed: "+ getmonsterinfo( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) , 0) +" ["+( ( getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") > getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) )?getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ):getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") ) +"/"+ getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) +"]";
                        }
                        if ( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ) {
                                set .@size, getarraysize( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) );
                                for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
                                        dispbottom "Items Collected: "+ getitemname( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) +" ["+ countitem( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) +"/"+ getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) +"]";
                        }
                }
        }
        dispbottom "   -----------------------";
        end;
OnNPCKillEvent:
        set .@killedrid, killedrid;
        if ( getvariableofnpc( .loading, "ms_b_") == 1 ) end;
        if ( getcharid(1) == 0 ) {
                if ( @ms_b_loading == 1 ) end;
                for ( set .@j, 1; .@j <= 4; set .@j, .@j +1 ) {
                        if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
                                if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
                                        dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted because it is no longer available";
                                        deletearray getd("@ms_b_m_"+ .@j);
                                        setd "ms_b_m_"+ .@j +"$", "";
                                        deltimer "ms_b_::OnQuest"+ .@j +"TimeUp";
                                }
                                else {
                                        set .@size, getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) );
                                        for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
                                                if ( .@killedrid == getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) && getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") < getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+( .@i +1 )+"]"), "ms_b_" ) ) {
                                                        setd "@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]", getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +1;
                                                        dispbottom "Mission #"+ .@j +". You have killed "+ getmonsterinfo( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ), 0 ) +" ["+ getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +"/"+ getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+( .@i +1 )+"]"), "ms_b_" ) +"]";
                                                        setd "ms_b_m_"+ .@j +"$", getd("@ms_b_m_"+ .@j +"[0]") +"#"+( ( getd("@ms_b_m_"+ .@j +"[1]") )?getd("@ms_b_m_"+ .@j +"[1]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[2]") )?getd("@ms_b_m_"+ .@j +"[2]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[3]") )?getd("@ms_b_m_"+ .@j +"[3]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[4]") )?getd("@ms_b_m_"+ .@j +"[4]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[5]") )?getd("@ms_b_m_"+ .@j +"[5]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[6]") )?getd("@ms_b_m_"+ .@j +"[6]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[7]") )?getd("@ms_b_m_"+ .@j +"[7]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[8]") )?getd("@ms_b_m_"+ .@j +"[8]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[9]") )?getd("@ms_b_m_"+ .@j +"[9]"):"" );
                                                }
                                        }
                                }
                        }
                }
                end;
        }
        getmapxy .@map1$, .@x1, .@y1, 0;
        getpartymember getcharid(1), 1;
        getpartymember getcharid(1), 2;
        set .@k, 0;
        while ( .@k < $@partymembercount ) {
                if ( isloggedin( $@partymemberaid[.@k], $@partymembercid[.@k] ) ) {
                        attachrid $@partymemberaid[.@k];
                        getmapxy .@map2$, .@x2, .@y2, 0;
                        if ( @ms_b_loading == 0 && .@map1$ == .@map2$ && distance(.@x1,.@y1,.@x2,.@y2) <= 30 && Hp ) {
                                set .@j, 1;
                                while ( .@j <= 4 ) {
                                        if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
                                                if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
                                                        dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted because it is no longer available";
                                                        deletearray getd("@ms_b_m_"+ .@j);
                                                        setd "ms_b_m_"+ .@j +"$", "";
                                                        deltimer "ms_b_::OnQuest"+ .@j +"TimeUp";
                                                }
                                                else {
                                                        set .@i, 0;
                                                        set .@size, getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) );
                                                        while ( .@i < .@size ) {
                                                                if ( .@killedrid == getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) && getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") < getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+( .@i +1 )+"]"), "ms_b_" ) ) {
                                                                        setd "@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]", getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +1;
                                                                        dispbottom "Mission #"+ .@j +". You have killed "+ getmonsterinfo( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ), 0 ) +" ["+ getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +"/"+ getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+( .@i +1 )+"]"), "ms_b_" ) +"]";
                                                                        setd "ms_b_m_"+ .@j +"$", getd("@ms_b_m_"+ .@j +"[0]") +"#"+( ( getd("@ms_b_m_"+ .@j +"[1]") )?getd("@ms_b_m_"+ .@j +"[1]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[2]") )?getd("@ms_b_m_"+ .@j +"[2]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[3]") )?getd("@ms_b_m_"+ .@j +"[3]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[4]") )?getd("@ms_b_m_"+ .@j +"[4]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[5]") )?getd("@ms_b_m_"+ .@j +"[5]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[6]") )?getd("@ms_b_m_"+ .@j +"[6]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[7]") )?getd("@ms_b_m_"+ .@j +"[7]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[8]") )?getd("@ms_b_m_"+ .@j +"[8]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[9]") )?getd("@ms_b_m_"+ .@j +"[9]"):"" );
                                                                }
                                                                set .@i, .@i +2 ;
                                                        }
                                                }
                                        }
                                        set .@j, .@j +1 ;
                                }
                        }
                }
                set .@k, .@k +1 ;
        }
        end;
OnPCLoginEvent:
        set @ms_b_loading, 1;
        set .@j, 1;
        while ( .@j <= 4 ) {
                if ( getd("ms_b_m_"+ .@j +"$") != "" ) {
                        explode getd(".@ms_b_m_"+ .@j +"$"), getd("ms_b_m_"+ .@j +"$"), "#";
                        set .@ex_size, getarraysize( getd(".@ms_b_m_"+ .@j +"$") );
                        set .@i, 0;
                        while ( .@i < .@ex_size ) {
                                setd "@ms_b_m_"+ .@j +"["+ .@i +"]", atoi( getd(".@ms_b_m_"+ .@j +"$["+ .@i +"]") );
                                set .@i, .@i +1 ;
                        }
                }
                set .@j, .@j +1 ;
        }
        sleep2 1;
        set .@l, 0;
        while ( .@npc_id < 128 ) {
                if ( getvariableofnpc( .ms_b_name$[.@npc_id], "ms_b_" ) != "" ) {
                        explode getd(".@ms_b_n_"+ .@npc_id +"$"), getd("ms_b_n_"+ .@npc_id +"$"), "#";
                        set .@ex_size, getarraysize( getd(".@ms_b_n_"+ .@npc_id +"$") );
                        set .@i, 0;
                        while ( .@i < .@ex_size ) {
                                setd "@ms_b_n_"+ .@npc_id +"["+ .@i +"]", atoi( getd(".@ms_b_n_"+ .@npc_id +"$["+ .@i +"]") );
                                set .@i, .@i +1 ;
                        }
                        sleep2 1;
                }
                set .@npc_id, .@npc_id +1 ;
        }
        sleep2 1;
        set @ms_b_loading, 0;
        if ( getvariableofnpc( .loading, "ms_b_" ) == 0 ) {
                set .@j, 1;
                while ( .@j <= 4 ) {
                        if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
                                if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
                                        dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted because it is no longer available";
                                        deletearray getd("@ms_b_m_"+ .@j);
                                        setd "ms_b_m_"+ .@j +"$", "";
                                }
                                else if ( getd("@ms_b_m_"+ .@j +"[1]") ) {
                                        if ( getd("@ms_b_m_"+ .@j +"[1]") > gettimetick(2) )
                                                addtimer ( getd("@ms_b_m_"+ .@j +"[1]") - gettimetick(2) ) *1000, "ms_b_::OnQuest"+ .@j +"TimeUp";
                                        else
                                                doevent "ms_b_::OnQuest"+ .@j +"TimeUp";
                                }
                        }
                        set .@j, .@j +1 ;
                }
        }
        end;
}
 
//    create more missions by using npc duplicates
//    display name can be anything, but the hidden name #1 #2 #35 must be a number within 1 ~ 126
//    Note: npc display name plus the hidden name must not more than 23 characters
prontera,158,188,5      duplicate(ms_b_)        Mission Board#3 837
Viewed 1230 times, submitted by AnnieRuru.