📄 prepare2.c
字号:
// Written by BBX workgroup
// Release: 2004/5/28
// 功能:自定义准备
// 流程:
// 1. 前往仓库处理物品,保存所有有价值的物品
// 2. 前往材料商
// 3. 前往武器店
// 4. 前往装备商
// 5. 前往首饰店
// 6. 前往鞋店
// 7. 前往杂货商
// 8. 前往药店
// 该版本为简化版本,去掉大部分判断
// 准备物品的数量
string life_potion_1 = "金创药(中)";
int life_num_1 = 300;
string life_potion_2 = "金创药(大)";
int life_num_2 = 10;
string mana_potion_1 = "魔法药(中)";
int mana_num_1 = 300;
string talisman_item_1 = "护身符(小)";
int talisman_num_1 = 10;
// 不能保存的物品
array excluded_items = ({ life_potion_1, life_potion_2, mana_potion_1,
"回城卷", "随机传送卷", "行会回城卷",
talisman_item_1 });
// 快速卖掉物品
#define QUICKLY 1
// 如果道具耐久低于一定程度(<=durability),就修理道具
void repair_item(string part, mixed npc, int durability);
// 准备
// 如果失败了,返回 -1 终止
int on_prepare_for_quest()
{
mapping my = me();
mapping mc;
mapping item;
string item_name;
mixed npc;
int i;
int n;
tell_user("TIP: 前往仓库处理物品");
close_to_npc("storer", &npc);
// 保存所有有价值物品
// 取身上包裹
mc = my["carry"];
// 注意:循环从到大小是因为,身上第 n 号物品保存进入仓库
// 以后,n + 1 号到最后一个物品会自动前移。
for (i = sizeof(mc) - 1; i >= 0; i--)
{
// 取包裹中第 i 个物品
item = mc[i];
// 取物品的名字
item_name = item["name"];
if (is_excluded_item(item))
// 特殊物品,忽略,主要是针对主备用武器而言, 这
// 两个道具都应该被略过,不能存入仓库。 当备用武
// 器升级以后,会自动取消特殊待遇。
continue;
if (item["item_class"] == ITEM_MINE)
{
// 矿物,判断处理方法
if (get_mine_treatment(item) == ITEM_STORED)
{
printf("保存:%s(%d)\n", item["name"], item["id"]);
store(-i, npc);
}
continue;
}
if (is_good_item(item) ||
get_item_treatment(item_name) == ITEM_STORED ||
get_item_treatment(item_name) == ITEM_AUTO_APPLY)
{
// 保存物品
if (member_array(item_name, excluded_items) != -1)
// 不保存这些物品
continue;
printf("保存:%s(%d)\n", item["name"], item["id"]);
store(-i, npc);
continue;
}
}
// 前往材料商
tell_user("TIP: 前往材料商出售材料");
close_to_npc("material", &npc);
sell_item(({ ITEM_MATERIAL }), npc, 0, QUICKLY);
// 前往武器店
tell_user("TIP: 前往武器店修理装备,处理物品");
talk_to(npc);
talk_to(npc, "特殊修理");
talk_to(npc, "现在修理");
sell_item(({ ITEM_WEAPON, ITEM_MINE }), npc, 0, QUICKLY);
// 前往装备商
tell_user("TIP: 前往服装店修理装备,处理物品");
close_to_npc("armor", &npc);
sell_item(({ ITEM_HELMET, ITEM_ARMOR, ITEM_ARMOR_WOMAN }), npc, 0, QUICKLY);
repair_item("衣服", npc, 10000);
// 前往首饰店
tell_user("TIP: 前往首饰店修理首饰,处理物品");
close_to_npc("jewelry", &npc);
sell_item(({ ITEM_RING, ITEM_WRIST, ITEM_NECKLACE }), npc, 0, QUICKLY);
repair_item("项链", npc, 2000);
repair_item("左手镯", npc, 2000);
repair_item("右手镯", npc, 2000);
repair_item("左戒指", npc, 2000);
repair_item("右戒指", npc, 2000);
// 丢弃身上多余的不重要的鞋子
drop_item(({ ITEM_BOOT }));
// 丢弃耐久较低的符具(<5)
clear_talisman();
// 前往杂货店
tell_user("TIP: 前往杂货店处购买道具,处理物品");
close_to_npc("item", &npc);
sell_item(({ ITEM_ITEM, ITEM_TOOL, ITEM_TALISMAN }), npc,
excluded_items, QUICKLY);
if (get_item_treatment("回城卷") != ITEM_DONT_CARE &&
(n = get_item_amount("回城卷") - 6) > 0)
{
printf("卖掉回城卷x%d", n);
sell("回城卷", n, npc, 0, QUICKLY);
}
if (! buy_item("回城卷", 6, npc))
buy_item("地牢逃脱卷", 1, npc);
buy_item(talisman_item_1, talisman_num_1, npc);
// 前往药店
tell_user("TIP: 前往药店处购买道具,处理物品");
close_to_npc("potion", &npc);
sell_item(({ ITEM_POTION }), npc, excluded_items, QUICKLY);
buy_item(life_potion_1, life_num_1 / 4, npc);
buy_item(life_potion_1, life_num_1 / 3, npc);
buy_item(life_potion_1, life_num_1 / 2, npc);
buy_item(life_potion_1, life_num_1 * 2 / 3, npc);
buy_item(life_potion_1, life_num_1, npc);
buy_item(life_potion_2, life_num_1 / 4, npc);
buy_item(life_potion_2, life_num_1 / 3, npc);
buy_item(life_potion_2, life_num_1 / 2, npc);
buy_item(life_potion_2, life_num_1 * 2 / 3, npc);
buy_item(life_potion_2, life_num_1, npc);
buy_item(mana_potion_1, mana_num_1 / 4, npc);
buy_item(mana_potion_1, mana_num_1 / 3, npc);
buy_item(mana_potion_1, mana_num_1 / 2, npc);
buy_item(mana_potion_1, mana_num_1 * 2 / 3, npc);
buy_item(mana_potion_1, mana_num_1, npc);
// 准备完毕,返回 1 表示成功
return 1;
}
// 如果道具耐久低于一定程度,就修理道具
void repair_item(string part, mixed npc, int durability)
{
mapping item;
int pos;
pos = get_equip_item_index(part);
if (pos == -1)
// 没有装备,无法修理
return;
// 取装备信息
item = me()["equip"][pos];
// 判断耐久度
if (item["durability"] > durability)
// 不需要修理
return;
// 卸下道具,修理,然后再装备
unequip(item["id"]);
repair(item["id"], npc);
equip(item["id"]);
/* Return OK */
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -