server/src/attributes/reduceproduction.c
2019-09-13 21:35:44 +02:00

43 lines
962 B
C

#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;
}