// TMW-2 Script
// Author:
// Jesusalva
// Description:
// Contraband of counterfeit goods.
015-3-3,45,66,0 script Blanc#Contraband NPC_NO_SPRITE,{
// Store not available
if (!.active)
end;
// STORY MODE
setpcblock(PCBLOCK_HARD, true);
mesc l("STORY MODE ENABLED. Monsters won't attack you, so you can read without worries."), 1;
next;
clear;
showavatar NPC_BLANC;
mesn;
mesq l("Hey pal, I am preparing a trip for The Mana World: Classic, which is beyond the mirror lake. Care to sell me contrabanded stuff?");
mesc l("Blanc can purchase account bound items, and exchange named items by non-named items.");
next;
.@id=requestitemindex();
// Collect the item ID and meta data
delinventorylist();
getinventorylist();
.@x=@inventorylist_id[.@id];
.@c1=@inventorylist_card1[.@id];
//.@r=@inventorylist_refine[.@id]; // TODO: Not restore-able without getitem2()
.@gid=getcharid(2);
if (.@gid)
.@admin=(getguildrole(.@gid, getcharid(3)) == GPOS_GUILDMASTER);
else
.@admin=false;
// No duplicates
if (countitem(.@x) > 1) {
mesn;
mesq l("You are carrying duplicates of the same item. Sorry, but I have no idea which one you mean."), 1;
goto L_Close;
}
// Skip equipped items
if (isequipped(.@x)) {
mesn;
mesq l("You should unequip this item first."), 1;
goto L_Close;
}
// Trade restriction from the database
if (getiteminfo(.@x, ITEMINFO_TRADE) & ITR_NOSELLTONPC) {
mesn;
mesq l("Ehm, I count as a NPC, so... you can't contraband items which cannot be sold to NPCs, pal!"), 1;
goto L_Close;
}
mesn;
mesq l("A(n) %s, hm? And what do you want me to do with it?", getitemlink(.@x));
.@price = getiteminfo(.@x, ITEMINFO_SELLPRICE);
select
l("Nothing. Sorry bothering."),
rif(checkbound(.@x, 1), l("I would like to sell it for %s GP.", fnum(.@price*2/3))),
rif(checkbound(.@x, 2) && .@admin, l("I would like to sell it for %s GP.", fnum(.@price*1/3))),
rif(.@c1 >= 252, l("I would like to swap, I offer you %s GP.", fnum(.@price))),
rif(!checkbound(.@x) && !.@c1, l("I would like to sell it for %s GP.", fnum(.@price*11/10)));
switch (@menu) {
case 2:
mesn;
mesq l("Are you sure?");
if (askyesno() == ASK_NO) break;
// Sell account bound items
delitem .@x, 1;
Zeny += .@price * 2 / 3;
mesn;
mesq l("Pleasure doing business with you.");
break;
case 3:
// Sell guild bound items
if (!.@admin) { atcommand("@ban 2d "+strcharinfo(0)); end; } // Anti-Cheat
delitem .@x, 1;
Zeny += .@price * 1 / 3;
mesn;
mesq l("Pleasure doing business with you.");
break;
case 4:
// Remove item name
if (Zeny < .@price) {
mesn;
mesq l("Try to fool another, you broken peniless piece of %s meat!", get_race());
mesc l("%s stabs you, wounding you fatally!", .name$);
die();
goto L_Close;
}
.@o0i = getitemoptionidbyindex(.@id, 0);
.@o0v = getitemoptionvaluebyindex(.@id, 0);
.@o1i = getitemoptionidbyindex(.@id, 1);
.@o1v = getitemoptionvaluebyindex(.@id, 1);
.@o2i = getitemoptionidbyindex(.@id, 2);
.@o2v = getitemoptionvaluebyindex(.@id, 2);
.@o3i = getitemoptionidbyindex(.@id, 3);
.@o3v = getitemoptionvaluebyindex(.@id, 3);
.@o4i = getitemoptionidbyindex(.@id, 4);
.@o4v = getitemoptionvaluebyindex(.@id, 4);
Zeny -= .@price;
delitem .@x, 1;
CsysNpcCraft(.@x, .@o0i, .@o0v, .@o1i, .@o1v,
.@o2i, .@o2v, .@o3i, .@o3v, .@o4i, .@o4v);
// Refine by .@r
//for (.@i=0;.@i<.@r;.@i++) {
//}
mesn;
mesq l("Eh, sure, you can have this %s. It is not refined but should do the trick. Maybe. NO REFUNDS!", getitemlink(.@x));
break;
case 5:
// Regular item sale
delitem .@x, 1;
Zeny += .@price * 11 / 10;
mesn;
mesq l("Pleasure doing business with you.");
break;
}
goto L_Close;
L_Close:
next;
closeclientdialog;
setpcblock(PCBLOCK_HARD, false);
close;
// Load
OnMinute21:
OnMinute46:
setnpcdisplay .name$, NPC_BLANC;
.active=1;
end;
// Unload
OnMinute23:
OnMinute48:
setnpcdisplay .name$, NPC_NO_SPRITE;
.active=0;
end;
OnInit:
.active=0;
.sex = G_OTHER;
.distance = 3;
/*
if (debug) {
setnpcdisplay .name$, NPC_BLANC;
.active=1;
}
*/
end;
}