2018-09-10 17:58:10 +02:00
|
|
|
#include "platform.h"
|
|
|
|
#include "kernel/config.h"
|
2016-03-08 17:29:15 +01:00
|
|
|
#include <kernel/unit.h>
|
2016-03-11 21:36:10 +01:00
|
|
|
#include <kernel/building.h>
|
|
|
|
#include <kernel/item.h>
|
|
|
|
#include <kernel/pool.h>
|
2017-09-02 03:12:02 +02:00
|
|
|
|
2016-03-08 17:29:15 +01:00
|
|
|
#include "academy.h"
|
|
|
|
#include "study.h"
|
|
|
|
|
2017-09-02 03:12:02 +02:00
|
|
|
void academy_teaching_bonus(struct unit *u, skill_t sk, int students) {
|
2019-01-24 17:50:58 +01:00
|
|
|
if (students > 0 && sk != NOSKILL) {
|
2017-09-02 03:12:02 +02:00
|
|
|
/* actually students * EXPERIENCEDAYS / MAX_STUDENTS */
|
|
|
|
learn_skill(u, sk, students);
|
2016-03-08 17:29:15 +01:00
|
|
|
}
|
|
|
|
}
|
2016-03-11 21:36:10 +01:00
|
|
|
|
2018-07-09 03:31:13 +02:00
|
|
|
bool academy_can_teach(unit *teacher, unit *scholar, skill_t sk) {
|
2016-03-11 21:36:10 +01:00
|
|
|
const struct building_type *btype = bt_find("academy");
|
2018-07-09 03:31:13 +02:00
|
|
|
if (active_building(teacher, btype) && active_building(scholar, btype)) {
|
|
|
|
int j = study_cost(scholar, sk) * 2;
|
2017-12-29 13:37:17 +01:00
|
|
|
if (j < 50) j = 50;
|
2016-03-11 21:36:10 +01:00
|
|
|
/* kann Einheit das zahlen? */
|
2018-07-09 03:31:13 +02:00
|
|
|
return get_pooled(scholar, get_resourcetype(R_SILVER), GET_DEFAULT, j) >= j;
|
2016-03-11 21:36:10 +01:00
|
|
|
/* sonst nehmen sie nicht am Unterricht teil */
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|