forked from github/server
Merge remote-tracking branch 'upstream/develop' into develop
This commit is contained in:
commit
93e79fcf8f
|
@ -794,3 +794,26 @@ function test_only_building_owner_can_set_not_paid()
|
||||||
process_orders()
|
process_orders()
|
||||||
assert_equal(0, u1:get_item("money"))
|
assert_equal(0, u1:get_item("money"))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function test_spyreport_message()
|
||||||
|
local r1 = region.create(1, 2, "plain")
|
||||||
|
local f1 = faction.create("noreply@eressea.de", "human", "de")
|
||||||
|
local u1 = unit.create(f1, r1, 1)
|
||||||
|
local u2 = unit.create(f1, r1, 1)
|
||||||
|
msg = message.create("spyreport")
|
||||||
|
msg:set_unit("spy", u1)
|
||||||
|
msg:set_unit("target", u2)
|
||||||
|
msg:set_string("status", "hodor")
|
||||||
|
assert_not_equal("", msg:render("de"))
|
||||||
|
assert_not_equal("", msg:render("en"))
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_volcanooutbreak_message()
|
||||||
|
local r1 = region.create(1, 0, "plain")
|
||||||
|
local r2 = region.create(1, 1, "plain")
|
||||||
|
msg = message.create("volcanooutbreak")
|
||||||
|
msg:set_region("regionn", r1)
|
||||||
|
msg:set_region("regionv", r2)
|
||||||
|
assert_not_equal("", msg:render("de"))
|
||||||
|
assert_not_equal("", msg:render("en"))
|
||||||
|
end
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
#include <kernel/unit.h>
|
#include <kernel/unit.h>
|
||||||
|
|
||||||
/* util includes */
|
/* util includes */
|
||||||
|
#include <util/language.h>
|
||||||
#include <util/message.h>
|
#include <util/message.h>
|
||||||
|
#include <util/nrmessage.h>
|
||||||
|
|
||||||
/* lua includes */
|
/* lua includes */
|
||||||
#include <tolua.h>
|
#include <tolua.h>
|
||||||
|
@ -307,6 +309,21 @@ static int tolua_msg_send_faction(lua_State * L)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int tolua_msg_render(lua_State * L)
|
||||||
|
{
|
||||||
|
lua_message *lmsg = (lua_message *)tolua_tousertype(L, 1, 0);
|
||||||
|
const char * lname = tolua_tostring(L, 2, 0);
|
||||||
|
const struct locale * lang = lname ? get_locale(lname) : default_locale;
|
||||||
|
char name[64];
|
||||||
|
|
||||||
|
if (lmsg->msg == NULL) {
|
||||||
|
lmsg->msg = msg_create(lmsg->mtype, lmsg->args);
|
||||||
|
}
|
||||||
|
nr_render(lmsg->msg, lang, name, sizeof(name), NULL);
|
||||||
|
lua_pushstring(L, name);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
void tolua_message_open(lua_State * L)
|
void tolua_message_open(lua_State * L)
|
||||||
{
|
{
|
||||||
/* register user types */
|
/* register user types */
|
||||||
|
@ -321,6 +338,7 @@ void tolua_message_open(lua_State * L)
|
||||||
NULL);
|
NULL);
|
||||||
tolua_beginmodule(L, TOLUA_CAST "message");
|
tolua_beginmodule(L, TOLUA_CAST "message");
|
||||||
{
|
{
|
||||||
|
tolua_function(L, TOLUA_CAST "render", tolua_msg_render);
|
||||||
tolua_function(L, TOLUA_CAST "set", tolua_msg_set);
|
tolua_function(L, TOLUA_CAST "set", tolua_msg_set);
|
||||||
tolua_function(L, TOLUA_CAST "set_unit", tolua_msg_set_unit);
|
tolua_function(L, TOLUA_CAST "set_unit", tolua_msg_set_unit);
|
||||||
tolua_function(L, TOLUA_CAST "set_region", tolua_msg_set_region);
|
tolua_function(L, TOLUA_CAST "set_region", tolua_msg_set_region);
|
||||||
|
|
|
@ -85,7 +85,6 @@ extern "C" {
|
||||||
* von struct unitname, etc. zurückgegeben werden. ohne die 0 */
|
* von struct unitname, etc. zurückgegeben werden. ohne die 0 */
|
||||||
|
|
||||||
#define BAGCAPACITY 20000 /* soviel paßt in einen Bag of Holding */
|
#define BAGCAPACITY 20000 /* soviel paßt in einen Bag of Holding */
|
||||||
#define STRENGTHMULTIPLIER 50 /* multiplier for trollbelt */
|
|
||||||
|
|
||||||
/* ----------------- Befehle ----------------------------------- */
|
/* ----------------- Befehle ----------------------------------- */
|
||||||
|
|
||||||
|
|
|
@ -314,8 +314,11 @@ int walkingcapacity(const struct unit *u)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rbelt) {
|
if (rbelt) {
|
||||||
int tmp = i_get(u->items, rbelt->itype);
|
int belts = i_get(u->items, rbelt->itype);
|
||||||
n += _min(people, tmp) * (STRENGTHMULTIPLIER - 1) * personcapacity(u);
|
if (belts) {
|
||||||
|
int multi = get_param_flt(global.parameters, "rules.trollbelt.multiplier", STRENGTHMULTIPLIER);
|
||||||
|
n += _min(people, belts) * (multi - 1) * u_race(u)->capacity;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
|
|
|
@ -39,15 +39,8 @@ extern "C" {
|
||||||
#define MV_SWIM (1<<8) /* kann schwimmen */
|
#define MV_SWIM (1<<8) /* kann schwimmen */
|
||||||
#define MV_WALK (1<<9) /* kann über Land gehen */
|
#define MV_WALK (1<<9) /* kann über Land gehen */
|
||||||
|
|
||||||
/* Die tragekapaz. ist hardcodiert mit defines, da es bis jetzt sowieso nur 2
|
|
||||||
** objekte gibt, die etwas tragen. */
|
|
||||||
#define SILVERWEIGHT 1
|
|
||||||
#define SCALEWEIGHT 100 /* Faktor, um den die Anzeige von gewichten
|
|
||||||
* * skaliert wird */
|
|
||||||
#define HORSECAPACITY 7000
|
|
||||||
#define WAGONCAPACITY 14000
|
|
||||||
|
|
||||||
#define HORSESNEEDED 2
|
#define HORSESNEEDED 2
|
||||||
|
#define STRENGTHMULTIPLIER 50 /* multiplier for trollbelt */
|
||||||
|
|
||||||
/* ein mensch wiegt 10, traegt also 5, ein pferd wiegt 50, traegt also 20. ein
|
/* ein mensch wiegt 10, traegt also 5, ein pferd wiegt 50, traegt also 20. ein
|
||||||
** wagen wird von zwei pferden gezogen und traegt total 140, davon 40 die
|
** wagen wird von zwei pferden gezogen und traegt total 140, davon 40 die
|
||||||
|
|
|
@ -2,18 +2,22 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "move.h"
|
#include "move.h"
|
||||||
|
|
||||||
|
#include <kernel/config.h>
|
||||||
#include <kernel/ally.h>
|
#include <kernel/ally.h>
|
||||||
#include <kernel/building.h>
|
#include <kernel/building.h>
|
||||||
#include <kernel/faction.h>
|
#include <kernel/faction.h>
|
||||||
#include <kernel/region.h>
|
#include <kernel/region.h>
|
||||||
#include <kernel/ship.h>
|
#include <kernel/ship.h>
|
||||||
#include <kernel/terrain.h>
|
#include <kernel/terrain.h>
|
||||||
|
#include <kernel/item.h>
|
||||||
#include <kernel/unit.h>
|
#include <kernel/unit.h>
|
||||||
|
#include <kernel/race.h>
|
||||||
|
|
||||||
#include <util/language.h>
|
#include <util/language.h>
|
||||||
|
|
||||||
#include <CuTest.h>
|
#include <CuTest.h>
|
||||||
#include <tests.h>
|
#include <tests.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
static void test_ship_not_allowed_in_coast(CuTest * tc)
|
static void test_ship_not_allowed_in_coast(CuTest * tc)
|
||||||
{
|
{
|
||||||
|
@ -167,9 +171,54 @@ static void test_building_type_exists(CuTest * tc)
|
||||||
CuAssertTrue(tc, !buildingtype_exists(r, btype2, false));
|
CuAssertTrue(tc, !buildingtype_exists(r, btype2, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_walkingcapacity(CuTest *tc) {
|
||||||
|
region *r;
|
||||||
|
unit *u;
|
||||||
|
int cap;
|
||||||
|
const struct item_type *itype;
|
||||||
|
|
||||||
|
test_cleanup();
|
||||||
|
test_create_world();
|
||||||
|
|
||||||
|
r = findregion(0, 0);
|
||||||
|
u = test_create_unit(test_create_faction(0), r);
|
||||||
|
cap = u->number * (u->_race->capacity + u->_race->weight);
|
||||||
|
CuAssertIntEquals(tc, cap, walkingcapacity(u));
|
||||||
|
scale_number(u, 2);
|
||||||
|
cap = u->number * (u->_race->capacity + u->_race->weight);
|
||||||
|
CuAssertIntEquals(tc, cap, walkingcapacity(u));
|
||||||
|
|
||||||
|
itype = it_find("horse");
|
||||||
|
assert(itype);
|
||||||
|
i_change(&u->items, itype, 1);
|
||||||
|
cap += itype->capacity;
|
||||||
|
CuAssertIntEquals(tc, cap, walkingcapacity(u));
|
||||||
|
i_change(&u->items, itype, 1);
|
||||||
|
cap += itype->capacity;
|
||||||
|
CuAssertIntEquals(tc, cap, walkingcapacity(u));
|
||||||
|
|
||||||
|
itype = it_find("cart");
|
||||||
|
assert(itype);
|
||||||
|
i_change(&u->items, itype, 1);
|
||||||
|
CuAssertIntEquals(tc, cap, walkingcapacity(u));
|
||||||
|
set_level(u, SK_RIDING, 1);
|
||||||
|
cap += itype->capacity;
|
||||||
|
CuAssertIntEquals(tc, cap, walkingcapacity(u));
|
||||||
|
|
||||||
|
itype = test_create_itemtype("trollbelt");
|
||||||
|
assert(itype);
|
||||||
|
i_change(&u->items, itype, 1);
|
||||||
|
CuAssertIntEquals(tc, cap + (STRENGTHMULTIPLIER-1) * u->_race->capacity, walkingcapacity(u));
|
||||||
|
set_param(&global.parameters, "rules.trollbelt.multiplier", "5");
|
||||||
|
CuAssertIntEquals(tc, cap + 4 * u->_race->capacity, walkingcapacity(u));
|
||||||
|
|
||||||
|
test_cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
CuSuite *get_move_suite(void)
|
CuSuite *get_move_suite(void)
|
||||||
{
|
{
|
||||||
CuSuite *suite = CuSuiteNew();
|
CuSuite *suite = CuSuiteNew();
|
||||||
|
SUITE_ADD_TEST(suite, test_walkingcapacity);
|
||||||
SUITE_ADD_TEST(suite, test_building_type_exists);
|
SUITE_ADD_TEST(suite, test_building_type_exists);
|
||||||
SUITE_ADD_TEST(suite, test_ship_not_allowed_in_coast);
|
SUITE_ADD_TEST(suite, test_ship_not_allowed_in_coast);
|
||||||
SUITE_ADD_TEST(suite, test_ship_allowed_without_harbormaster);
|
SUITE_ADD_TEST(suite, test_ship_allowed_without_harbormaster);
|
||||||
|
|
|
@ -70,6 +70,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
#include "move.h"
|
#include "move.h"
|
||||||
|
|
||||||
|
#define SCALEWEIGHT 100 /* Faktor, um den die Anzeige von Gewichten skaliert wird */
|
||||||
|
|
||||||
bool nocr = false;
|
bool nocr = false;
|
||||||
bool nonr = false;
|
bool nonr = false;
|
||||||
bool noreports = false;
|
bool noreports = false;
|
||||||
|
|
|
@ -175,6 +175,11 @@ void test_create_world(void)
|
||||||
itype->weight = 5000;
|
itype->weight = 5000;
|
||||||
itype->capacity = 7000;
|
itype->capacity = 7000;
|
||||||
|
|
||||||
|
itype = test_create_itemtype("cart");
|
||||||
|
itype->flags |= ITF_BIG | ITF_VEHICLE;
|
||||||
|
itype->weight = 4000;
|
||||||
|
itype->capacity = 14000;
|
||||||
|
|
||||||
test_create_itemtype("iron");
|
test_create_itemtype("iron");
|
||||||
test_create_itemtype("stone");
|
test_create_itemtype("stone");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue