server/src/attributes/reduceproduction.c

44 lines
962 B
C
Raw Normal View History

2010-08-08 01:06:34 -07:00
#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>
2010-08-08 01:06:34 -07:00
static int age_reduceproduction(attrib * a, void *owner)
2010-08-08 01:06:34 -07:00
{
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;
2010-08-08 01:06:34 -07:00
}
attrib_type at_reduceproduction = {
"reduceproduction",
NULL,
NULL,
age_reduceproduction,
a_writeshorts,
a_readshorts,
NULL,
ATF_UNIQUE
2010-08-08 01:06:34 -07:00
};
2011-03-07 08:02:35 +01:00
attrib *make_reduceproduction(int percent, int time)
2010-08-08 01:06:34 -07:00
{
attrib *a = a_new(&at_reduceproduction);
a->data.sa[0] = (short)percent;
a->data.sa[1] = (short)time;
return a;
2010-08-08 01:06:34 -07:00
}