forked from github/server
commit
43397ca792
|
@ -3890,7 +3890,7 @@ msgstr "Ent"
|
||||||
|
|
||||||
msgctxt "iteminfo"
|
msgctxt "iteminfo"
|
||||||
msgid "dwarfspoil"
|
msgid "dwarfspoil"
|
||||||
msgstr "Beim Barte des Proheten! Ach nein, Zwergen. Irgendetwas riecht hier ranzig."
|
msgstr "Beim Barte des Propheten! Ach nein, Zwergen. Irgendetwas riecht hier ranzig."
|
||||||
|
|
||||||
msgctxt "race"
|
msgctxt "race"
|
||||||
msgid "clone"
|
msgid "clone"
|
||||||
|
@ -6320,3 +6320,44 @@ msgctxt "race"
|
||||||
msgid "wolf"
|
msgid "wolf"
|
||||||
msgstr "Wolf"
|
msgstr "Wolf"
|
||||||
|
|
||||||
|
msgctxt "iteminfo"
|
||||||
|
msgid "elfspoil"
|
||||||
|
msgstr "Die Ohren sind spitz und beinahe trapezförmig. Wie kann
|
||||||
|
damit hören?"
|
||||||
|
|
||||||
|
msgctxt "iteminfo"
|
||||||
|
msgid "goblinspoil"
|
||||||
|
msgstr "Die Fratze des kleinen Kopfs wirkt beinahe etwas kindlich
|
||||||
|
zierlich, aber dennoch liegt etwas Listiges darin."
|
||||||
|
|
||||||
|
msgctxt "iteminfo"
|
||||||
|
msgid "halflingspoil"
|
||||||
|
msgstr "Die Sohle des behaarten Fußes ist deutlich dicker, beinahe
|
||||||
|
wie ein Huf."
|
||||||
|
|
||||||
|
msgctxt "iteminfo"
|
||||||
|
msgid "aquarianspoil"
|
||||||
|
msgstr "Die kleine, türkisfarbene Schuppe glänzt in der Sonne. Dennoch ist sie erstaunlich hart."
|
||||||
|
|
||||||
|
msgctxt "iteminfo"
|
||||||
|
msgid "humanspoil"
|
||||||
|
msgstr "Ob blond oder braun, ob kurz oder lang, du hast ein Büschel Haare mit einem Stück Haut in der Hand."
|
||||||
|
|
||||||
|
msgctxt "iteminfo"
|
||||||
|
msgid "catspoil"
|
||||||
|
msgstr "Wie ein kleines Seil aus weichem Fell."
|
||||||
|
|
||||||
|
msgctxt "iteminfo"
|
||||||
|
msgid "insectspoil"
|
||||||
|
msgstr "Das am Kopf der meisten Gliederfüßer auftretende,
|
||||||
|
gegliederte Extremitätenpaar, das mit Sensillen (Tastsinn, Geruchssinn)
|
||||||
|
ausgestattet ist."
|
||||||
|
|
||||||
|
msgctxt "iteminfo"
|
||||||
|
msgid "orcspoil"
|
||||||
|
msgstr "Große, spitze Zähne. Ob sie früher einem Ork oder doch einem Wildschwein gehörten ist nicht so leicht zu unterscheiden."
|
||||||
|
|
||||||
|
msgctxt "iteminfo"
|
||||||
|
msgid "demonspoil"
|
||||||
|
msgstr "Eine giftige und grüne Flüssigkeit in einer kleinen Phiole,
|
||||||
|
keine humanoide Rasse außer Dämonen wagt damit in Kontakt zu kommen."
|
||||||
|
|
18
src/chaos.c
18
src/chaos.c
|
@ -76,7 +76,7 @@ static unit *random_unit(const region * r)
|
||||||
return u;
|
return u;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void chaos(region * r)
|
static void chaos(region * r, faction *monsters)
|
||||||
{
|
{
|
||||||
if (rng_int() % 100 < 8) {
|
if (rng_int() % 100 < 8) {
|
||||||
switch (rng_int() % 3) {
|
switch (rng_int() % 3) {
|
||||||
|
@ -84,10 +84,10 @@ static void chaos(region * r)
|
||||||
if (!(r->terrain->flags & SEA_REGION)) {
|
if (!(r->terrain->flags & SEA_REGION)) {
|
||||||
unit *u = random_unit(r);
|
unit *u = random_unit(r);
|
||||||
if (u && !undeadrace(u_race(u))) {
|
if (u && !undeadrace(u_race(u))) {
|
||||||
ADDMSG(&u->faction->msgs, msg_message("chaos_disease", "unit", u));
|
if (join_monsters(u, monsters)) {
|
||||||
u_setfaction(u, get_monsters());
|
ADDMSG(&u->faction->msgs, msg_message("chaos_disease", "unit", u));
|
||||||
u_freeorders(u);
|
u_setrace(u, get_race(RC_GHOUL));
|
||||||
u_setrace(u, get_race(RC_GHOUL));
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -99,17 +99,17 @@ static void chaos(region * r)
|
||||||
case 0:
|
case 0:
|
||||||
mfac = 100;
|
mfac = 100;
|
||||||
u =
|
u =
|
||||||
create_unit(r, get_monsters(), rng_int() % 8 + 1,
|
create_unit(r, monsters, rng_int() % 8 + 1,
|
||||||
get_race(RC_FIREDRAGON), 0, NULL, NULL);
|
get_race(RC_FIREDRAGON), 0, NULL, NULL);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
mfac = 500;
|
mfac = 500;
|
||||||
u = create_unit(r, get_monsters(), rng_int() % 4 + 1,
|
u = create_unit(r, monsters, rng_int() % 4 + 1,
|
||||||
get_race(RC_DRAGON), 0, NULL, NULL);
|
get_race(RC_DRAGON), 0, NULL, NULL);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
mfac = 1000;
|
mfac = 1000;
|
||||||
u = create_unit(r, get_monsters(), rng_int() % 2 + 1,
|
u = create_unit(r, monsters, rng_int() % 2 + 1,
|
||||||
get_race(RC_WYRM), 0, NULL, NULL);
|
get_race(RC_WYRM), 0, NULL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -184,7 +184,7 @@ void chaos_update(void) {
|
||||||
/* Chaos */
|
/* Chaos */
|
||||||
for (r = regions; r; r = r->next) {
|
for (r = regions; r; r = r->next) {
|
||||||
if ((r->flags & RF_CHAOTIC)) {
|
if ((r->flags & RF_CHAOTIC)) {
|
||||||
chaos(r);
|
chaos(r, get_monsters());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -290,10 +290,10 @@ static int forget_cmd(unit * u, order * ord)
|
||||||
else {
|
else {
|
||||||
unit *ufam = get_familiar(u);
|
unit *ufam = get_familiar(u);
|
||||||
if (ufam) {
|
if (ufam) {
|
||||||
a_removeall(&ufam->attribs, NULL);
|
if (join_monsters(ufam, NULL)) {
|
||||||
u_setfaction(ufam, get_monsters());
|
a_removeall(&ufam->attribs, NULL);
|
||||||
u_freeorders(ufam);
|
unit_convert_race(ufam, NULL, "ghost");
|
||||||
unit_convert_race(ufam, NULL, "ghost");
|
}
|
||||||
}
|
}
|
||||||
a_removeall(&u->attribs, &at_mage);
|
a_removeall(&u->attribs, &at_mage);
|
||||||
a_removeall(&u->attribs, &at_familiar);
|
a_removeall(&u->attribs, &at_familiar);
|
||||||
|
|
|
@ -43,9 +43,10 @@
|
||||||
#include <util/strings.h>
|
#include <util/strings.h>
|
||||||
|
|
||||||
/* attributes includes */
|
/* attributes includes */
|
||||||
#include <attributes/targetregion.h>
|
|
||||||
#include <attributes/otherfaction.h>
|
|
||||||
#include <attributes/hate.h>
|
#include <attributes/hate.h>
|
||||||
|
#include <attributes/otherfaction.h>
|
||||||
|
#include <attributes/stealth.h>
|
||||||
|
#include <attributes/targetregion.h>
|
||||||
|
|
||||||
#include <spells/regioncurse.h>
|
#include <spells/regioncurse.h>
|
||||||
|
|
||||||
|
@ -179,6 +180,22 @@ static order *monster_attack(unit * u, const unit * target)
|
||||||
return create_order(K_ATTACK, u->faction->locale, "%i", target->no);
|
return create_order(K_ATTACK, u->faction->locale, "%i", target->no);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool join_monsters(unit *u, faction *monsters) {
|
||||||
|
if (monsters == NULL) {
|
||||||
|
monsters = get_monsters();
|
||||||
|
if (monsters == NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
u_setfaction(u, monsters);
|
||||||
|
u->status = ST_FIGHT;
|
||||||
|
a_removeall(&u->attribs, &at_otherfaction);
|
||||||
|
u->flags &= ~UFL_ANON_FACTION;
|
||||||
|
u_seteffstealth(u, -1);
|
||||||
|
u_freeorders(u);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void monsters_desert(struct faction *monsters)
|
void monsters_desert(struct faction *monsters)
|
||||||
{
|
{
|
||||||
region *r;
|
region *r;
|
||||||
|
@ -188,15 +205,15 @@ void monsters_desert(struct faction *monsters)
|
||||||
unit *u;
|
unit *u;
|
||||||
|
|
||||||
for (u = r->units; u; u = u->next) {
|
for (u = r->units; u; u = u->next) {
|
||||||
if (u->faction!=monsters
|
if (u->faction != monsters
|
||||||
&& (u_race(u)->flags & RCF_DESERT)) {
|
&& (u_race(u)->flags & RCF_DESERT)) {
|
||||||
if (fval(u, UFL_ISNEW))
|
if (fval(u, UFL_ISNEW))
|
||||||
continue;
|
continue;
|
||||||
if (rng_int() % 100 < 5) {
|
if (rng_int() % 100 < 5) {
|
||||||
ADDMSG(&u->faction->msgs, msg_message("desertion",
|
if (join_monsters(u, monsters)) {
|
||||||
"unit region", u, r));
|
ADDMSG(&u->faction->msgs, msg_message("desertion",
|
||||||
u_setfaction(u, monsters);
|
"unit region", u, r));
|
||||||
u_freeorders(u);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1175,10 +1192,11 @@ void monster_kills_peasants(unit * u)
|
||||||
|
|
||||||
void make_zombie(unit * u)
|
void make_zombie(unit * u)
|
||||||
{
|
{
|
||||||
u_setfaction(u, get_monsters());
|
if (join_monsters(u, NULL)) {
|
||||||
u_freeorders(u);
|
u_freeorders(u);
|
||||||
scale_number(u, 1);
|
scale_number(u, 1);
|
||||||
u->hp = unit_max_hp(u) * u->number;
|
u->hp = unit_max_hp(u) * u->number;
|
||||||
u_setrace(u, get_race(RC_ZOMBIE));
|
u_setrace(u, get_race(RC_ZOMBIE));
|
||||||
u->irace = NULL;
|
u->irace = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ extern "C" {
|
||||||
void spawn_undead(void);
|
void spawn_undead(void);
|
||||||
void plan_monsters(struct faction *f);
|
void plan_monsters(struct faction *f);
|
||||||
|
|
||||||
|
bool join_monsters(struct unit *u, struct faction *monsters);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue