forked from github/server
BUG 2437: fetch_astral should have no aura cost when given bad units.
This commit is contained in:
parent
68de367a98
commit
6746401330
|
@ -19,6 +19,34 @@ local function dump_messages(f)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function test_fetch_astral()
|
||||||
|
local r = region.create(0, 0, "plain")
|
||||||
|
local f = faction.create("human")
|
||||||
|
local u1 = unit.create(f, r, 1)
|
||||||
|
local u2 = unit.create(f, r, 1)
|
||||||
|
u1.magic = "gray"
|
||||||
|
u1:set_skill("magic", 6)
|
||||||
|
u1.aura = 0
|
||||||
|
u1:add_spell("fetch_astral")
|
||||||
|
|
||||||
|
u1:clear_orders()
|
||||||
|
u1:add_order("ZAUBERE Ruf~der~Realitaet " .. itoa36(u2.id))
|
||||||
|
process_orders()
|
||||||
|
assert_equal(1, f:count_msg_type('missing_components_list'), 'no components')
|
||||||
|
|
||||||
|
u1.aura = 12 -- 2 Aura pro Stufe
|
||||||
|
process_orders()
|
||||||
|
assert_equal(12, u1.aura)
|
||||||
|
assert_equal(1, f:count_msg_type('spellfail_astralonly'), 'astral space')
|
||||||
|
|
||||||
|
u1.name = 'Xolgrim'
|
||||||
|
u1.aura = 12 -- 2 Aura pro Stufe
|
||||||
|
u2.region = u2.region:get_astral('fog')
|
||||||
|
process_orders()
|
||||||
|
assert_equal(0, u1.aura)
|
||||||
|
assert_equal(u1.region, u2.region)
|
||||||
|
end
|
||||||
|
|
||||||
function test_pull_astral()
|
function test_pull_astral()
|
||||||
local r = region.create(0, 0, "plain")
|
local r = region.create(0, 0, "plain")
|
||||||
local f = faction.create("human")
|
local f = faction.create("human")
|
||||||
|
|
|
@ -5311,7 +5311,7 @@ int sp_fetchastral(castorder * co)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
unit *mage = co->magician.u;
|
unit *mage = co->magician.u;
|
||||||
int cast_level = co->level;
|
int cast_level = 0;
|
||||||
spellparameter *pa = co->par;
|
spellparameter *pa = co->par;
|
||||||
double power = co->force;
|
double power = co->force;
|
||||||
int remaining_cap = (int)((power - 3) * 1500);
|
int remaining_cap = (int)((power - 3) * 1500);
|
||||||
|
@ -5343,6 +5343,7 @@ int sp_fetchastral(castorder * co)
|
||||||
"spellfail_astralonly", ""));
|
"spellfail_astralonly", ""));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rtl != NULL)
|
if (rtl != NULL)
|
||||||
free_regionlist(rtl);
|
free_regionlist(rtl);
|
||||||
rtl = astralregions(u->region, NULL);
|
rtl = astralregions(u->region, NULL);
|
||||||
|
@ -5359,6 +5360,7 @@ int sp_fetchastral(castorder * co)
|
||||||
ro = u->region;
|
ro = u->region;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cast_level = co->level; /* at least one unit could have been teleported */
|
||||||
if (is_cursed(ro->attribs, &ct_astralblock)) {
|
if (is_cursed(ro->attribs, &ct_astralblock)) {
|
||||||
ADDMSG(&mage->faction->msgs, msg_feedback(mage, co->order,
|
ADDMSG(&mage->faction->msgs, msg_feedback(mage, co->order,
|
||||||
"spellfail_astralblock", ""));
|
"spellfail_astralblock", ""));
|
||||||
|
|
Loading…
Reference in New Issue