Exemplo n.º 1
0
def add_effect(effector, thing, effect):
    """Apply an effect to a thing."""
    with mutate_key("effect_%s" % thing._fullname, type_=list) as effects:
        effects.append((effector._id, effect))
    state_changes("effects")["add"][thing._fullname].append(effect)

    if thing._fullname == c.user._fullname:
        state_changes("myeffects")["add"].append(g.f2pitems[effect])
Exemplo n.º 2
0
def remove_effect(thing, effect):
    with mutate_key("effect_%s" % thing._fullname, type_=list) as effects:
        try:
            effects.remove(effect)
        except ValueError:
            pass
    state_changes("effects")["remove"][thing._fullname].append(effect)
    if thing._fullname == c.user._fullname:
        state_changes("myeffects")["consume"].append(effect)
Exemplo n.º 3
0
def consume_item(user, item):
    """Consume an item in the user's inventory or die trying."""
    with mutate_key("inventory_%d" % user._id, type_=dict) as inventory:
        if item not in inventory:
            raise NoSuchItemError()

        inventory[item] -= 1
        assert inventory[item] >= 0
        if inventory[item] == 0:
            del inventory[item]

    state_changes("inventory")["consume"].append(item)
Exemplo n.º 4
0
def clear_inventory(user):
    with mutate_key("inventory_%d" % user._id, type_=dict) as inventory:
        state_changes("inventory")["consume"].extend(
            _expand_inventory(inventory))
        inventory.clear()
Exemplo n.º 5
0
def add_to_inventory(user, item):
    """Add a given item-name to the user's inventory."""
    with mutate_key("inventory_%d" % user._id, type_=dict) as inventory:
        inventory[item] = inventory.get(item, 0) + 1
    state_changes("inventory")["add"].append(g.f2pitems[item])
Exemplo n.º 6
0
def clear_effects(thing):
    with mutate_key("effect_%s" % thing._fullname, type_=list) as effects:
        state_changes("effects")["remove"][thing._fullname].extend(effects)
        if thing._fullname == c.user._fullname:
            state_changes("myeffects")["consume"].extend(effects)
        del effects[:]