forked from github/server
Bugfix "Astrale Integrität" wenn Anzahl inhab_regions == 0
This commit is contained in:
parent
29340f9217
commit
58595fc001
|
@ -6384,9 +6384,17 @@ sp_disruptastral(castorder *co)
|
||||||
for (rl2=rl; rl2!=NULL; rl2=rl2->next) {
|
for (rl2=rl; rl2!=NULL; rl2=rl2->next) {
|
||||||
attrib *a, *a2;
|
attrib *a, *a2;
|
||||||
spec_direction *sd;
|
spec_direction *sd;
|
||||||
|
int inhab_regions = 0;
|
||||||
|
regionlist * trl = NULL;
|
||||||
|
|
||||||
if(is_cursed(rl2->region->attribs, C_ASTRALBLOCK, 0))
|
if (is_cursed(rl2->region->attribs, C_ASTRALBLOCK, 0)) continue;
|
||||||
continue;
|
|
||||||
|
if (rl2->region->units!=NULL) {
|
||||||
|
regionlist * trl2;
|
||||||
|
|
||||||
|
trl = allinhab_in_range(r_astral_to_standard(rl2->region), TP_RADIUS);
|
||||||
|
for (trl2 = trl; trl2; trl2 = trl2->next) ++inhab_regions;
|
||||||
|
}
|
||||||
|
|
||||||
/* Nicht-Permanente Tore zerstören */
|
/* Nicht-Permanente Tore zerstören */
|
||||||
a = a_find(r->attribs, &at_direction);
|
a = a_find(r->attribs, &at_direction);
|
||||||
|
@ -6400,19 +6408,16 @@ sp_disruptastral(castorder *co)
|
||||||
|
|
||||||
/* Einheiten auswerfen */
|
/* Einheiten auswerfen */
|
||||||
|
|
||||||
|
if (trl!=NULL) {
|
||||||
for (u=rl2->region->units;u;u=u->next) {
|
for (u=rl2->region->units;u;u=u->next) {
|
||||||
if (u->race != new_race[RC_SPELL]) {
|
if (u->race != new_race[RC_SPELL]) {
|
||||||
regionlist *trl, *trl2;
|
regionlist *trl2 = trl;
|
||||||
region *tr;
|
region *tr;
|
||||||
int c = 0;
|
int c = rand() % inhab_regions;
|
||||||
|
|
||||||
/* Zufällige Zielregion suchen */
|
/* Zufällige Zielregion suchen */
|
||||||
trl = allinhab_in_range(r_astral_to_standard(rl2->region), TP_RADIUS);
|
while (c--!=0) trl2 = trl2->next;
|
||||||
for(trl2 = trl; trl2; trl2 = trl2->next) c++;
|
|
||||||
c = rand()%c;
|
|
||||||
for(trl2 = trl; trl2 && c != 0; trl2 = trl2->next) c--;
|
|
||||||
tr = trl2->region;
|
tr = trl2->region;
|
||||||
free_regionlist(trl);
|
|
||||||
|
|
||||||
if(!is_magic_resistant(mage, u, 0) && can_survive(u, tr)) {
|
if(!is_magic_resistant(mage, u, 0) && can_survive(u, tr)) {
|
||||||
move_unit(u, tr, NULL);
|
move_unit(u, tr, NULL);
|
||||||
|
@ -6422,6 +6427,8 @@ sp_disruptastral(castorder *co)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
free_regionlist(trl);
|
||||||
|
}
|
||||||
|
|
||||||
/* Kontakt unterbinden */
|
/* Kontakt unterbinden */
|
||||||
create_curse(mage, &rl2->region->attribs, ct_find("astralblock"),
|
create_curse(mage, &rl2->region->attribs, ct_find("astralblock"),
|
||||||
|
|
Loading…
Reference in New Issue