forked from github/server
test added: when a spell is not found, we do not have to pay for it
This commit is contained in:
parent
5e26d246a2
commit
44e5c60c96
|
@ -6,7 +6,49 @@ function setup()
|
||||||
free_game()
|
free_game()
|
||||||
settings.set("magic.fumble.enable", "0")
|
settings.set("magic.fumble.enable", "0")
|
||||||
settings.set("magic.regeneration.enable", "0")
|
settings.set("magic.regeneration.enable", "0")
|
||||||
settings.set("rules.economy.food", "0")
|
settings.set("rules.economy.food", "4")
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_spell_payment()
|
||||||
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("spell_payment@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 12)
|
||||||
|
u.magic = "gwyrrd" -- calls create_mage
|
||||||
|
u:add_spell("create_roi")
|
||||||
|
|
||||||
|
local permaura = u:get_pooled("permaura")
|
||||||
|
u:add_item("money", 3000)
|
||||||
|
u.aura = 50
|
||||||
|
u:clear_orders()
|
||||||
|
u:add_order("ZAUBERE 'Erschaffe einen Ring der Unsichtbarkeit' ")
|
||||||
|
process_orders()
|
||||||
|
|
||||||
|
assert_equal(1, u:get_item("roi"))
|
||||||
|
assert_equal(0, u:get_item("money"))
|
||||||
|
assert_equal(0, u.aura)
|
||||||
|
assert_equal(permaura-1, u:get_pooled("permaura"))
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_spell_not_found_no_payment()
|
||||||
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("spell_fails_no_payment@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 12)
|
||||||
|
u.magic = "gwyrrd" -- calls create_mage
|
||||||
|
|
||||||
|
local permaura = u:get_pooled("permaura")
|
||||||
|
u:add_item("money", 3000)
|
||||||
|
u.aura = 50
|
||||||
|
|
||||||
|
u:clear_orders()
|
||||||
|
u:add_order("ZAUBERE 'Erschaffe einen Ring der Unsichtbarkeit' ")
|
||||||
|
process_orders()
|
||||||
|
|
||||||
|
assert_equal(0, u:get_item("roi"))
|
||||||
|
assert_equal(3000, u:get_item("money"))
|
||||||
|
assert_equal(50, u.aura)
|
||||||
|
assert_equal(permaura, u:get_pooled("permaura"))
|
||||||
end
|
end
|
||||||
|
|
||||||
function test_create_firesword()
|
function test_create_firesword()
|
||||||
|
|
|
@ -889,6 +889,7 @@ void pay_spell(unit * u, const spell * sp, int cast_level, int range)
|
||||||
int k;
|
int k;
|
||||||
int resuse;
|
int resuse;
|
||||||
|
|
||||||
|
assert(cast_level>0);
|
||||||
for (k = 0; sp->components[k].type; k++) {
|
for (k = 0; sp->components[k].type; k++) {
|
||||||
if (sp->components[k].type == r_aura) {
|
if (sp->components[k].type == r_aura) {
|
||||||
resuse = spellcost(u, sp) * range;
|
resuse = spellcost(u, sp) * range;
|
||||||
|
@ -1394,7 +1395,7 @@ static void do_fumble(castorder * co)
|
||||||
case 5:
|
case 5:
|
||||||
case 6:
|
case 6:
|
||||||
/* Spruch gelingt, aber alle Magiepunkte weg */
|
/* Spruch gelingt, aber alle Magiepunkte weg */
|
||||||
sp->cast(co);
|
co->level = sp->cast(co);
|
||||||
set_spellpoints(u, 0);
|
set_spellpoints(u, 0);
|
||||||
ADDMSG(&u->faction->msgs, msg_message("patzer4", "unit region spell",
|
ADDMSG(&u->faction->msgs, msg_message("patzer4", "unit region spell",
|
||||||
u, r, sp));
|
u, r, sp));
|
||||||
|
@ -1405,7 +1406,7 @@ static void do_fumble(castorder * co)
|
||||||
case 9:
|
case 9:
|
||||||
default:
|
default:
|
||||||
/* Spruch gelingt, alle nachfolgenden Sprüche werden 2^4 so teuer */
|
/* Spruch gelingt, alle nachfolgenden Sprüche werden 2^4 so teuer */
|
||||||
sp->cast(co);
|
co->level = sp->cast(co);
|
||||||
ADDMSG(&u->faction->msgs, msg_message("patzer5", "unit region spell",
|
ADDMSG(&u->faction->msgs, msg_message("patzer5", "unit region spell",
|
||||||
u, r, sp));
|
u, r, sp));
|
||||||
countspells(u, 3);
|
countspells(u, 3);
|
||||||
|
@ -2839,10 +2840,13 @@ void magic(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pay_spell(u, sp, co->level, co->distance);
|
|
||||||
/* erst bezahlen, dann Kostenzähler erhöhen */
|
/* erst bezahlen, dann Kostenzähler erhöhen */
|
||||||
if (fumbled)
|
if (fumbled) {
|
||||||
do_fumble(co);
|
do_fumble(co);
|
||||||
|
}
|
||||||
|
if (co->level>0) {
|
||||||
|
pay_spell(u, sp, co->level, co->distance);
|
||||||
|
}
|
||||||
countspells(u, 1);
|
countspells(u, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue