#include <platform.h>
#include <kernel/config.h>
#include "reduceproduction.h"
#include <kernel/region.h>
#include <kernel/messages.h>
#include <util/message.h>
#include <kernel/attrib.h>
#include <assert.h>

static int age_reduceproduction(attrib * a, void *owner)
{
    region * r = (region *)owner;
    int reduce = 100 - (5 * --a->data.sa[1]);
    assert(r);
    if (reduce < 10) {
        reduce = 10;
    }
    a->data.sa[0] = (short)reduce;
    if (a->data.sa[1] > 0) {
        ADDMSG(&r->msgs, msg_message("reduced_production", ""));
        return AT_AGE_KEEP;
    }
    return AT_AGE_REMOVE;
}

attrib_type at_reduceproduction = {
    "reduceproduction",
    NULL,
    NULL,
    age_reduceproduction,
    a_writeshorts,
    a_readshorts,
    NULL,
    ATF_UNIQUE
};

attrib *make_reduceproduction(int percent, int time)
{
    attrib *a = a_new(&at_reduceproduction);
    a->data.sa[0] = (short)percent;
    a->data.sa[1] = (short)time;
    return a;
}