def update_beliefs_accepted(npc, trade): mean = avg_price(trade.resource) f = F() >> F(interval_is_divergent, price=trade.price, mean=mean) >> shrink_interval interval = f(getattr(npc.belief_intervals, trade.resource)) return attr_update(npc, "belief_intervals", **{trade.resource: interval})
def update_beliefs_rejected(npc, trade): mean = avg_price(trade.resource) interval = getattr(npc.belief_intervals, trade.resource) interval = translate_interval(interval, mean) interval = expand_interval(interval) npc = attr_update(npc, "belief_intervals", **{trade.resource: interval}) return npc
def refiner_produce(npc): inventory = npc.inventory if has_food(inventory): if has_tools(inventory): delta = dict(ore=0, food=inventory.food-1, metal=inventory.metal+1) elif inventory.ore >= 2: delta = dict(ore=inventory.ore-2, food=inventory.food-1, metal=inventory.metal+1) else: delta = {} return attr_update(npc, "inventory", **delta)
def lumberjack_produce(npc): inventory = npc.inventory if has_food(inventory): if has_tools(inventory): delta = dict(food=inventory.food-1, wood=inventory.wood+2) else: delta = dict(food=inventory.food-1, wood=inventory.wood+1) else: delta = {} return attr_update(npc, "inventory", **delta)
def farmer_produce(npc): inventory = npc.inventory if has_wood(inventory): if has_tools(inventory): delta = dict(wood=inventory.wood-1, food=inventory.food+4) else: delta = dict(wood=inventory.wood-1, food=inventory.food+2) else: delta = {} return attr_update(npc, "inventory", **delta)
def miner_produce(npc): inventory = npc.inventory if has_food(inventory): if has_tools(inventory): delta = dict(food=inventory.food-1, ore=inventory.ore+4) else: delta = dict(food=inventory.food-1, ore=inventory.ore+2) else: delta = {} return attr_update(npc, "inventory", **delta)