def item_action(cmd, name_or_id): '''/use <item> /equip <item> /unequip <item> item can be either item name or ID''' item_id = -10 item_db = itemdb.item_names try: item_id = int(name_or_id) except ValueError: for id_, name in item_db.iteritems(): if name == name_or_id: item_id = id_ if item_id < 0: debuglog.warning("Unknown item: %s", name_or_id) return index = get_item_index(item_id) if index > 0: if cmd == 'use': mapserv.cmsg_player_inventory_use(index, item_id) elif cmd == 'equip': mapserv.cmsg_player_equip(index) elif cmd == 'unequip': mapserv.cmsg_player_unequip(index) else: debuglog.error("You don't have %s", name_or_id)
def cmd_item_action(nick, message, is_whisper, match): if not is_whisper: return try: itemId = int(match.group(1)) except ValueError: return index = get_item_index(itemId) if index <= 0: return if message.startswith('!equip'): mapserv.cmsg_player_equip(index) elif message.startswith('!unequip'): mapserv.cmsg_player_unequip(index) elif message.startswith('!use'): mapserv.cmsg_player_inventory_use(index, itemId)
def item_use(_, name_or_id): item_id = -10 item_db = itemdb.item_names try: item_id = int(name_or_id) except ValueError: for id_, name in item_db.iteritems(): if name == name_or_id: item_id = id_ if item_id < 0: debuglog.warning("Unknown item: %s", name_or_id) return index = get_item_index(item_id) if index > 0: mapserv.cmsg_player_inventory_use(index, item_id) else: debuglog.error("You don't have %s", name_or_id)
def player_stat_update(data): if not auto_heal_self: return global hp_prev_value, mp_prev_value if data.type == stats.HP: max_hp = mapserv.player_stats.get(stats.MAX_HP, 0) if data.stat_value < max_hp * hp_heal_at and not hp_is_healing: healing_found = False for item_id in hp_healing_ids: index = get_item_index(item_id) if index > 0: healing_found = True debuglog.info("Consuming %d", item_id) mapserv.cmsg_player_inventory_use(index, item_id) break if not healing_found: debuglog.info("Low health, but no HP healing item found") hp_prev_value = data.stat_value elif data.type == stats.MP: max_mp = mapserv.player_stats.get(stats.MAX_MP, 0) if data.stat_value < max_mp * mp_heal_at and not mp_is_healing: healing_found = False for item_id in mp_healing_ids: index = get_item_index(item_id) if index > 0: healing_found = True debuglog.info("Consuming %d", item_id) mapserv.cmsg_player_inventory_use(index, item_id) break if not healing_found: debuglog.info("Low mana, but no MP healing item found") mp_prev_value = data.stat_value