// Petrarch
// Merentha Lib 1.0
// <give>
#include <money.h>
#include <objects.h>
varargs int command(string str) {
object ob, pl;
string item, player, type, junk;
int amt;
if(!str) return notify_fail("Drop what?\n");
if(sscanf(str, "%s to %s", item, player)!=2) return notify_fail("Syntax: give <item> to <player>\n");
if(sscanf(item, "%d %s coin%s", amt, type, junk)==3) {
if(member_array(type, __CURRENCY_TYPES)==-1) return notify_fail("That is not a valid type of currency.\n");
if(!pl=present(player_name(player), environment(this_player()))) return notify_fail("They are not here.\n");
if(amt>this_player()->query_money(type)) return notify_fail("You do not have that much "+type+".");
this_player()->add_money(type, -amt);
pl->add_money(type, amt);
message("command", "You give "+amt+" "+type+" coins to "+pl->query_cap_name()+".", this_player());
message("command", this_player()->query_cap_name()+" gives you "+amt+" "+type+" coins.", pl);
message("command", this_player()->query_cap_name()+" gives some money to "+pl->query_cap_name()+".", environment(this_player()), ({this_player(),pl}));
return 1;
}
if(!ob=present(item, this_player())) return notify_fail("You do have that.\n");
if(!pl=present(player_name(player), environment(this_player()))) return notify_fail("They are not here.\n");
if(ob->move(pl)) return 1;
message("command", "You give "+ob->query_short()+" to "+pl->query_cap_name()+".", this_player());
message("command", this_player()->query_cap_name()+" gives "+ob->query_short()+" to "+pl->query_cap_name()+".", environment(this_player()), ({this_player(),pl}));
message("command", this_player()->query_cap_name()+" gives you "+ob->query_short()+".", pl);
return 1;
}
string help() {
return "Syntax: give <item> to <living>\n\nThis command will move an item from your inventory to another player or a monster. To transfer money the syntax is 'give 5 gold coins to petrarch' for example.";
}