forked from github/server
Test "guarding makes ATTACK a short command"
https://bugs.eressea.de/view.php?id=1493 expose unit.guard values to Lua
This commit is contained in:
parent
b1c27ac210
commit
224a9af33c
|
@ -0,0 +1,78 @@
|
||||||
|
require "lunit"
|
||||||
|
|
||||||
|
module("tests.e2.guard", package.seeall, lunit.testcase)
|
||||||
|
|
||||||
|
function setup()
|
||||||
|
eressea.free_game()
|
||||||
|
eressea.settings.set("nmr.removenewbie", "0")
|
||||||
|
eressea.settings.set("nmr.timeout", "0")
|
||||||
|
eressea.settings.set("NewbieImmunity", "0")
|
||||||
|
eressea.settings.set("rules.economy.food", "4")
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_guard_unarmed()
|
||||||
|
local r1 = region.create(0, 0, "plain")
|
||||||
|
local f1 = faction.create("hodor@eressea.de", "human", "de")
|
||||||
|
local u1 = unit.create(f1, r1, 1)
|
||||||
|
assert_equal(nil, u1.guard)
|
||||||
|
u1:clear_orders()
|
||||||
|
u1:add_order("BEWACHE")
|
||||||
|
process_orders()
|
||||||
|
assert_equal(nil, u1.guard)
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_guard_armed()
|
||||||
|
local r1 = region.create(0, 0, "plain")
|
||||||
|
local f1 = faction.create("hodor@eressea.de", "human", "de")
|
||||||
|
local u1 = unit.create(f1, r1, 1)
|
||||||
|
assert_equal(nil, u1.guard)
|
||||||
|
u1:add_item("sword", 1)
|
||||||
|
u1:set_skill("melee", 2)
|
||||||
|
u1:clear_orders()
|
||||||
|
u1:add_order("BEWACHE")
|
||||||
|
process_orders()
|
||||||
|
assert_equal(249, u1.guard)
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_guard_allows_move_after_combat() -- bug 1493
|
||||||
|
local r1 = region.create(0, 0, "plain")
|
||||||
|
local r2 = region.create(1, 0, "plain")
|
||||||
|
local f1 = faction.create("bernd@eressea.de", "human", "de")
|
||||||
|
local u1 = unit.create(f1, r1, 10)
|
||||||
|
local uid1 = u1.id
|
||||||
|
local f2 = faction.create("horst@eressea.de", "human", "de")
|
||||||
|
local u2 = unit.create(f2, r1, 1)
|
||||||
|
u1:add_order("BEWACHE")
|
||||||
|
u1:add_item("sword", 10)
|
||||||
|
u1:set_skill("melee", 2)
|
||||||
|
u1:clear_orders()
|
||||||
|
u1:add_order("BEWACHE")
|
||||||
|
process_orders()
|
||||||
|
assert_equal(249, u1.guard)
|
||||||
|
u1:clear_orders()
|
||||||
|
u1:add_order("NACH O")
|
||||||
|
u1:add_order("ATTACKIERE " .. itoa36(u2.id))
|
||||||
|
process_orders()
|
||||||
|
u1 = get_unit(uid1)
|
||||||
|
assert_equal(r2, u1.region)
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_no_guard_no_move_after_combat() -- bug 1493
|
||||||
|
local r1 = region.create(0, 0, "plain")
|
||||||
|
local r2 = region.create(1, 0, "plain")
|
||||||
|
local f1 = faction.create("bernd@eressea.de", "human", "de")
|
||||||
|
local u1 = unit.create(f1, r1, 10)
|
||||||
|
local uid1 = u1.id
|
||||||
|
local f2 = faction.create("horst@eressea.de", "human", "de")
|
||||||
|
local u2 = unit.create(f2, r1, 1)
|
||||||
|
u1:add_order("BEWACHE")
|
||||||
|
u1:add_item("sword", 10)
|
||||||
|
u1:set_skill("melee", 2)
|
||||||
|
assert_equal(nil, u1.guard)
|
||||||
|
u1:clear_orders()
|
||||||
|
u1:add_order("NACH O")
|
||||||
|
u1:add_order("ATTACKIERE " .. itoa36(u2.id))
|
||||||
|
process_orders()
|
||||||
|
u1 = get_unit(uid1)
|
||||||
|
assert_equal(r1, u1.region)
|
||||||
|
end
|
|
@ -1,4 +1,4 @@
|
||||||
-- new tests 2015-02-13
|
-- require 'tests.e2.shiplanding'
|
||||||
require 'tests.e2.shiplanding'
|
-- require 'tests.e2.e2features'
|
||||||
require 'tests.e2.e2features'
|
-- require 'tests.e2.movement'
|
||||||
require 'tests.e2.movement'
|
require 'tests.e2.guard'
|
||||||
|
|
|
@ -262,6 +262,24 @@ static int tolua_unit_set_flags(lua_State * L)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int tolua_unit_get_guard(lua_State * L)
|
||||||
|
{
|
||||||
|
unit *self = (unit *)tolua_tousertype(L, 1, 0);
|
||||||
|
if (is_guard(self, GUARD_ALL)) {
|
||||||
|
lua_pushinteger(L, getguard(self));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int tolua_unit_set_guard(lua_State * L)
|
||||||
|
{
|
||||||
|
unit *self = (unit *)tolua_tousertype(L, 1, 0);
|
||||||
|
unsigned int flags = (unsigned int)tolua_tonumber(L, 2, 0);
|
||||||
|
setguard(self, flags);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const char *unit_getmagic(const unit * u)
|
static const char *unit_getmagic(const unit * u)
|
||||||
{
|
{
|
||||||
sc_mage *mage = get_mage(u);
|
sc_mage *mage = get_mage(u);
|
||||||
|
@ -984,6 +1002,8 @@ void tolua_unit_open(lua_State * L)
|
||||||
/* key-attributes for named flags: */
|
/* key-attributes for named flags: */
|
||||||
tolua_function(L, TOLUA_CAST "set_flag", &tolua_unit_set_flag);
|
tolua_function(L, TOLUA_CAST "set_flag", &tolua_unit_set_flag);
|
||||||
tolua_function(L, TOLUA_CAST "get_flag", &tolua_unit_get_flag);
|
tolua_function(L, TOLUA_CAST "get_flag", &tolua_unit_get_flag);
|
||||||
|
tolua_variable(L, TOLUA_CAST "guard", &tolua_unit_get_guard,
|
||||||
|
&tolua_unit_set_guard);
|
||||||
tolua_variable(L, TOLUA_CAST "flags", &tolua_unit_get_flags,
|
tolua_variable(L, TOLUA_CAST "flags", &tolua_unit_get_flags,
|
||||||
&tolua_unit_set_flags);
|
&tolua_unit_set_flags);
|
||||||
tolua_variable(L, TOLUA_CAST "age", &tolua_unit_get_age,
|
tolua_variable(L, TOLUA_CAST "age", &tolua_unit_get_age,
|
||||||
|
|
Loading…
Reference in New Issue