forked from github/server
Bug 2609 VERGESSE Magie
This commit is contained in:
parent
ea9e31d1b2
commit
d5104fa55a
|
@ -282,10 +282,22 @@ static int forget_cmd(unit * u, order * ord)
|
||||||
|
|
||||||
sk = get_skill(s, u->faction->locale);
|
sk = get_skill(s, u->faction->locale);
|
||||||
if (sk != NOSKILL) {
|
if (sk != NOSKILL) {
|
||||||
if (sk == SK_MAGIC && is_familiar(u)) {
|
if (sk == SK_MAGIC) {
|
||||||
|
if (is_familiar(u)) {
|
||||||
/* some units cannot forget their innate magical abilities */
|
/* some units cannot forget their innate magical abilities */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
unit *ufam = get_familiar(u);
|
||||||
|
if (ufam) {
|
||||||
|
a_removeall(&ufam->attribs, NULL);
|
||||||
|
u_setfaction(ufam, get_monsters());
|
||||||
|
unit_convert_race(ufam, NULL, "ghost");
|
||||||
|
}
|
||||||
|
a_removeall(&u->attribs, &at_mage);
|
||||||
|
a_removeall(&u->attribs, &at_familiar);
|
||||||
|
}
|
||||||
|
}
|
||||||
ADDMSG(&u->faction->msgs, msg_message("forget", "unit skill", u, sk));
|
ADDMSG(&u->faction->msgs, msg_message("forget", "unit skill", u, sk));
|
||||||
set_level(u, sk, 0);
|
set_level(u, sk, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -395,7 +395,7 @@ void save_special_items(unit *usrc)
|
||||||
/* some units have plural names, it would be neat if they aren't single: */
|
/* some units have plural names, it would be neat if they aren't single: */
|
||||||
scale_number(u, 2);
|
scale_number(u, 2);
|
||||||
}
|
}
|
||||||
set_racename(&u->attribs, "ghost");
|
unit_convert_race(u, rc_ghost, "ghost");
|
||||||
give_special_items(u, &usrc->items);
|
give_special_items(u, &usrc->items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1833,3 +1833,14 @@ double u_heal_factor(const unit * u)
|
||||||
}
|
}
|
||||||
return 1.0;
|
return 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void unit_convert_race(unit *u, const race *rc, const char *rcname)
|
||||||
|
{
|
||||||
|
if (rc && u->_race != rc) {
|
||||||
|
u_setrace(u, rc);
|
||||||
|
}
|
||||||
|
if (rcname && strcmp(rcname, u->_race->_name) != 0) {
|
||||||
|
set_racename(&u->attribs, rcname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -221,6 +221,7 @@ extern "C" {
|
||||||
char *write_unitname(const struct unit *u, char *buffer, size_t size);
|
char *write_unitname(const struct unit *u, char *buffer, size_t size);
|
||||||
bool unit_name_equals_race(const struct unit *u);
|
bool unit_name_equals_race(const struct unit *u);
|
||||||
|
|
||||||
|
void unit_convert_race(struct unit *u, const struct race *rc, const char *rcname);
|
||||||
/* getunit results: */
|
/* getunit results: */
|
||||||
#define GET_UNIT 0
|
#define GET_UNIT 0
|
||||||
#define GET_NOTFOUND 1
|
#define GET_NOTFOUND 1
|
||||||
|
|
Loading…
Reference in New Issue