forked from github/server
In der Regel sollte create_unit() benutzt werden, um Einheiten zu erzeugen, weil dann Parteitarnung, Rasse, etc. von der erzeugenden Einheit übernommen werden.
This commit is contained in:
parent
c91d69e379
commit
fc7e4493f1
|
@ -248,7 +248,7 @@ expandrecruit(region * r, request * recruitorders)
|
||||||
u->hp = u->n * unit_max_hp(u);
|
u->hp = u->n * unit_max_hp(u);
|
||||||
unew = u;
|
unew = u;
|
||||||
} else {
|
} else {
|
||||||
unew = createunit(r, u->faction, u->n, u->race);
|
unew = create_unit(r, u->faction, u->n, u->race, 0, NULL, u);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unew->race == new_race[RC_URUK]) {
|
if (unew->race == new_race[RC_URUK]) {
|
||||||
|
|
|
@ -3817,7 +3817,6 @@ do_battle(void)
|
||||||
*/
|
*/
|
||||||
switch (u->status) {
|
switch (u->status) {
|
||||||
case ST_FLEE:
|
case ST_FLEE:
|
||||||
run = true;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if ((fig->person[dt.index].flags & FL_HIT) == 0) continue;
|
if ((fig->person[dt.index].flags & FL_HIT) == 0) continue;
|
||||||
|
|
|
@ -762,7 +762,7 @@ sp_shadowcall(fighter * fi, int level, double power, spell * sp)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
u = createunit(r, mage->faction, force, rc);
|
u = create_unit(r, mage->faction, force, rc, 0, NULL, mage);
|
||||||
u->status = ST_FIGHT;
|
u->status = ST_FIGHT;
|
||||||
|
|
||||||
set_string(&u->name, racename(mage->faction->locale, u, u->race));
|
set_string(&u->name, racename(mage->faction->locale, u, u->race));
|
||||||
|
@ -770,9 +770,6 @@ sp_shadowcall(fighter * fi, int level, double power, spell * sp)
|
||||||
set_level(u, SK_AUSDAUER, (int)(power/2));
|
set_level(u, SK_AUSDAUER, (int)(power/2));
|
||||||
u->hp = u->number * unit_max_hp(u);
|
u->hp = u->number * unit_max_hp(u);
|
||||||
|
|
||||||
if (fval(mage, UFL_PARTEITARNUNG))
|
|
||||||
fset(u, UFL_PARTEITARNUNG);
|
|
||||||
|
|
||||||
a = a_new(&at_unitdissolve);
|
a = a_new(&at_unitdissolve);
|
||||||
a->data.ca[0] = 0;
|
a->data.ca[0] = 0;
|
||||||
a->data.ca[1] = 100;
|
a->data.ca[1] = 100;
|
||||||
|
@ -793,7 +790,7 @@ sp_wolfhowl(fighter * fi, int level, double power, spell * sp)
|
||||||
unit *mage = fi->unit;
|
unit *mage = fi->unit;
|
||||||
attrib *a;
|
attrib *a;
|
||||||
int force = (int)(get_force(power, 3)/2);
|
int force = (int)(get_force(power, 3)/2);
|
||||||
unit *u = createunit(r, mage->faction, force, new_race[RC_WOLF]);
|
unit *u = create_unit(r, mage->faction, force, new_race[RC_WOLF], 0, NULL, mage);
|
||||||
unused(sp);
|
unused(sp);
|
||||||
|
|
||||||
u->status = ST_FIGHT;
|
u->status = ST_FIGHT;
|
||||||
|
@ -830,7 +827,7 @@ sp_shadowknights(fighter * fi, int level, double power, spell * sp)
|
||||||
|
|
||||||
unused(sp);
|
unused(sp);
|
||||||
|
|
||||||
u = createunit(r, mage->faction, force, new_race[RC_SHADOWKNIGHT]);
|
u = create_unit(r, mage->faction, force, new_race[RC_SHADOWKNIGHT], 0, NULL, mage);
|
||||||
u->status = ST_FIGHT;
|
u->status = ST_FIGHT;
|
||||||
|
|
||||||
set_string(&u->name, "Schattenritter");
|
set_string(&u->name, "Schattenritter");
|
||||||
|
@ -1730,7 +1727,7 @@ sp_undeadhero(fighter * fi, int level, double power, spell * sp)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (j > 0) {
|
if (j > 0) {
|
||||||
unit * u = createunit(r, mage->faction, 0, new_race[RC_UNDEAD]);
|
unit * u = create_unit(r, mage->faction, 0, new_race[RC_UNDEAD], 0, NULL, mage);
|
||||||
|
|
||||||
/* new units gets some stats from old unit */
|
/* new units gets some stats from old unit */
|
||||||
set_string(&u->name, du->name);
|
set_string(&u->name, du->name);
|
||||||
|
|
|
@ -2543,16 +2543,12 @@ init_used_faction_ids(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
unit *
|
void
|
||||||
make_undead_unit(region * r, faction * f, int n, const struct race * rc)
|
make_undead_unit(unit * u)
|
||||||
{
|
{
|
||||||
unit *u;
|
|
||||||
|
|
||||||
u = createunit(r, f, n, rc);
|
|
||||||
set_order(&u->lastorder, NULL);
|
set_order(&u->lastorder, NULL);
|
||||||
name_unit(u);
|
name_unit(u);
|
||||||
fset(u, UFL_ISNEW);
|
fset(u, UFL_ISNEW);
|
||||||
return u;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -920,7 +920,7 @@ extern int findoption(const char *s, const struct locale * lang);
|
||||||
extern char buf[BUFSIZE + 1];
|
extern char buf[BUFSIZE + 1];
|
||||||
|
|
||||||
/* special units */
|
/* special units */
|
||||||
struct unit *make_undead_unit(struct region * r, struct faction * f, int n, const struct race * rc);
|
void make_undead_unit(struct unit *);
|
||||||
|
|
||||||
extern struct region *regions;
|
extern struct region *regions;
|
||||||
extern struct faction *factions;
|
extern struct faction *factions;
|
||||||
|
|
|
@ -614,7 +614,7 @@ sp_summon_familiar(castorder *co)
|
||||||
target_region = rconnect(r,d);
|
target_region = rconnect(r,d);
|
||||||
}
|
}
|
||||||
|
|
||||||
familiar = createunit(target_region, mage->faction, 1, rc);
|
familiar = create_unit(target_region, mage->faction, 1, rc, 0, NULL, mage);
|
||||||
if (target_region==mage->region) {
|
if (target_region==mage->region) {
|
||||||
familiar->building = mage->building;
|
familiar->building = mage->building;
|
||||||
familiar->ship = mage->ship;
|
familiar->ship = mage->ship;
|
||||||
|
@ -3225,11 +3225,7 @@ sp_unholypower(castorder *co)
|
||||||
/* Verletzungsanteil der transferierten Personen berechnen */
|
/* Verletzungsanteil der transferierten Personen berechnen */
|
||||||
wounds = wounds*n/u->number;
|
wounds = wounds*n/u->number;
|
||||||
|
|
||||||
un = createunit(co->rt, u->faction, 0, target_race);
|
un = create_unit(co->rt, u->faction, 0, target_race, 0, NULL, u);
|
||||||
if (co->rt==u->region) {
|
|
||||||
un->building = u->building;
|
|
||||||
un->ship = u->ship;
|
|
||||||
}
|
|
||||||
transfermen(u, un, n);
|
transfermen(u, un, n);
|
||||||
un->hp = unit_max_hp(un)*n - wounds;
|
un->hp = unit_max_hp(un)*n - wounds;
|
||||||
ADDMSG(&co->rt->msgs, msg_message("unholypower_limitedeffect",
|
ADDMSG(&co->rt->msgs, msg_message("unholypower_limitedeffect",
|
||||||
|
@ -3502,13 +3498,7 @@ sp_summonshadow(castorder *co)
|
||||||
unit *u;
|
unit *u;
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
u = createunit(r, mage->faction, (int)(force*force), new_race[RC_SHADOW]);
|
u = create_unit(r, mage->faction, (int)(force*force), new_race[RC_SHADOW], 0, NULL, mage);
|
||||||
if (r==mage->region) {
|
|
||||||
u->building = mage->building;
|
|
||||||
u->ship = mage->ship;
|
|
||||||
}
|
|
||||||
if (fval(mage, UFL_PARTEITARNUNG))
|
|
||||||
fset(u, UFL_PARTEITARNUNG);
|
|
||||||
|
|
||||||
/* Bekommen Tarnung = (Magie+Tarnung)/2 und Wahrnehmung 1. */
|
/* Bekommen Tarnung = (Magie+Tarnung)/2 und Wahrnehmung 1. */
|
||||||
val = get_level(mage, SK_MAGIC) + get_level(mage, SK_STEALTH);
|
val = get_level(mage, SK_MAGIC) + get_level(mage, SK_STEALTH);
|
||||||
|
@ -3549,13 +3539,7 @@ sp_summonshadowlords(castorder *co)
|
||||||
int cast_level = co->level;
|
int cast_level = co->level;
|
||||||
double force = co->force;
|
double force = co->force;
|
||||||
|
|
||||||
u = createunit(r, mage->faction, (int)(force*force), new_race[RC_SHADOWLORD]);
|
u = create_unit(r, mage->faction, (int)(force*force), new_race[RC_SHADOWLORD], 0, NULL, mage);
|
||||||
if (r==mage->region) {
|
|
||||||
u->building = mage->building;
|
|
||||||
u->ship = mage->ship;
|
|
||||||
}
|
|
||||||
if (fval(mage, UFL_PARTEITARNUNG))
|
|
||||||
fset(u, UFL_PARTEITARNUNG);
|
|
||||||
|
|
||||||
/* Bekommen Tarnung = Magie und Wahrnehmung 5. */
|
/* Bekommen Tarnung = Magie und Wahrnehmung 5. */
|
||||||
set_level(u, SK_STEALTH, get_level(mage, SK_MAGIC));
|
set_level(u, SK_STEALTH, get_level(mage, SK_MAGIC));
|
||||||
|
@ -3786,13 +3770,8 @@ sp_summonundead(castorder *co)
|
||||||
race = new_race[RC_GHOUL];
|
race = new_race[RC_GHOUL];
|
||||||
}
|
}
|
||||||
|
|
||||||
u = make_undead_unit(r, mage->faction, undead, race);
|
u = create_unit(r, mage->faction, undead, race, 0, NULL, mage);
|
||||||
if (r==mage->region) {
|
make_undead_unit(u);
|
||||||
u->building = mage->building;
|
|
||||||
u->ship = mage->ship;
|
|
||||||
}
|
|
||||||
if (fval(mage, UFL_PARTEITARNUNG))
|
|
||||||
fset(u, UFL_PARTEITARNUNG);
|
|
||||||
|
|
||||||
sprintf(buf, "%s erweckt %d Untote aus ihren Gräbern.",
|
sprintf(buf, "%s erweckt %d Untote aus ihren Gräbern.",
|
||||||
unitname(mage), undead);
|
unitname(mage), undead);
|
||||||
|
@ -5432,14 +5411,9 @@ sp_clonecopy(castorder *co)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
clone = createunit(target_region, mage->faction, 1, new_race[RC_CLONE]);
|
|
||||||
if (target_region==mage->region) {
|
|
||||||
clone->building = mage->building;
|
|
||||||
clone->ship = mage->ship;
|
|
||||||
}
|
|
||||||
clone->status = ST_FLEE;
|
|
||||||
sprintf(buf, "Klon von %s", unitname(mage));
|
sprintf(buf, "Klon von %s", unitname(mage));
|
||||||
set_string(&clone->name, buf);
|
clone = create_unit(target_region, mage->faction, 1, new_race[RC_CLONE], 0, buf, mage);
|
||||||
|
clone->status = ST_FLEE;
|
||||||
fset(clone, UFL_LOCKED);
|
fset(clone, UFL_LOCKED);
|
||||||
|
|
||||||
create_newclone(mage, clone);
|
create_newclone(mage, clone);
|
||||||
|
|
|
@ -73,10 +73,9 @@ age_undead(unit *u)
|
||||||
for (m = u->number; m; m--)
|
for (m = u->number; m; m--)
|
||||||
if (rand() % 100 < UNDEAD_BREAKUP_FRACTION)
|
if (rand() % 100 < UNDEAD_BREAKUP_FRACTION)
|
||||||
n++;
|
n++;
|
||||||
u2 = make_undead_unit(r, findfaction(MONSTER_FACTION), 0, new_race[RC_UNDEAD]);
|
u2 = create_unit(r, findfaction(MONSTER_FACTION), 0, new_race[RC_UNDEAD], 0, NULL, u);
|
||||||
|
make_undead_unit(u2);
|
||||||
transfermen(u, u2, u->number - n);
|
transfermen(u, u2, u->number - n);
|
||||||
u2->building = u->building;
|
|
||||||
u2->ship = u->ship;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue