forked from github/server
Siegbedingungen mit Namen abfragen in victorycondition(alliance, name)
+ Exportiert nach lua Bedingung Pyramide: + wenn erfüllt, muss in einer Partei (besser in allen) der atribut-key "pyra" gesetzt werden. Bedingung Phönix: + wenn erfüllt, muss in einer Partei (besser in allen) der atribut-key "phnx" gesetzt werden. Bedingung Handel: + Es wird getestet, ob die Allianz alle nötigen Edelsteine hat. Liste der Parteien einer Alianz nach lua exportiert
This commit is contained in:
parent
ff27aed2fb
commit
fd47232a21
|
@ -17,18 +17,22 @@
|
|||
#include "alliance.h"
|
||||
#include "command.h"
|
||||
|
||||
#include <attributes/key.h>
|
||||
|
||||
/* kernel includes */
|
||||
#include <building.h>
|
||||
#include <faction.h>
|
||||
#include <message.h>
|
||||
#include <region.h>
|
||||
#include <unit.h>
|
||||
#include <kernel/building.h>
|
||||
#include <kernel/faction.h>
|
||||
#include <kernel/message.h>
|
||||
#include <kernel/region.h>
|
||||
#include <kernel/unit.h>
|
||||
#include <kernel/item.h>
|
||||
|
||||
/* util includes */
|
||||
#include <umlaut.h>
|
||||
#include <base36.h>
|
||||
|
||||
/* libc includes */
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
@ -276,4 +280,54 @@ alliancevictory(void)
|
|||
al = al->next;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
victorycondition(const alliance * al, const char * name)
|
||||
{
|
||||
const char * gems[] = { "opal", "diamond", "zaphire", "topaz", "beryl", "agate", "garnet", "emerald", NULL };
|
||||
if (strcmp(name, "gems")==0) {
|
||||
const char ** igem = gems;
|
||||
|
||||
for (;*igem;++igem) {
|
||||
const struct item_type * itype = it_find(*igem);
|
||||
faction_list * flist = al->members;
|
||||
boolean found = false;
|
||||
|
||||
assert(itype!=NULL);
|
||||
for (;flist && !found;flist=flist->next) {
|
||||
unit * u = flist->data->units;
|
||||
|
||||
for (;u;u=u->nextF) {
|
||||
if (i_get(u->items, itype)>0) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found) return 0;
|
||||
}
|
||||
return 1;
|
||||
} else if (strcmp(name, "phoenix")==0) {
|
||||
faction_list * flist = al->members;
|
||||
for (;flist;flist=flist->next) {
|
||||
faction * f = flist->data;
|
||||
if (find_key(f->attribs, atoi36("phnx"))) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
} else if (strcmp(name, "pyramid")==0) {
|
||||
faction_list * flist = al->members;
|
||||
for (;flist;flist=flist->next) {
|
||||
faction * f = flist->data;
|
||||
if (find_key(f->attribs, atoi36("pyra"))) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -44,6 +44,8 @@ extern void setalliance(struct faction * f, alliance * al);
|
|||
extern void alliancejoin(void);
|
||||
extern void alliancekick(void);
|
||||
extern void alliancevictory(void);
|
||||
|
||||
extern int victorycondition(const alliance * al, const char * name);
|
||||
/* execute commands */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -17,18 +17,22 @@
|
|||
#include "alliance.h"
|
||||
#include "command.h"
|
||||
|
||||
#include <attributes/key.h>
|
||||
|
||||
/* kernel includes */
|
||||
#include <building.h>
|
||||
#include <faction.h>
|
||||
#include <message.h>
|
||||
#include <region.h>
|
||||
#include <unit.h>
|
||||
#include <kernel/building.h>
|
||||
#include <kernel/faction.h>
|
||||
#include <kernel/message.h>
|
||||
#include <kernel/region.h>
|
||||
#include <kernel/unit.h>
|
||||
#include <kernel/item.h>
|
||||
|
||||
/* util includes */
|
||||
#include <umlaut.h>
|
||||
#include <base36.h>
|
||||
|
||||
/* libc includes */
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
@ -276,4 +280,54 @@ alliancevictory(void)
|
|||
al = al->next;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
victorycondition(const alliance * al, const char * name)
|
||||
{
|
||||
const char * gems[] = { "opal", "diamond", "zaphire", "topaz", "beryl", "agate", "garnet", "emerald", NULL };
|
||||
if (strcmp(name, "gems")==0) {
|
||||
const char ** igem = gems;
|
||||
|
||||
for (;*igem;++igem) {
|
||||
const struct item_type * itype = it_find(*igem);
|
||||
faction_list * flist = al->members;
|
||||
boolean found = false;
|
||||
|
||||
assert(itype!=NULL);
|
||||
for (;flist && !found;flist=flist->next) {
|
||||
unit * u = flist->data->units;
|
||||
|
||||
for (;u;u=u->nextF) {
|
||||
if (i_get(u->items, itype)>0) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found) return 0;
|
||||
}
|
||||
return 1;
|
||||
} else if (strcmp(name, "phoenix")==0) {
|
||||
faction_list * flist = al->members;
|
||||
for (;flist;flist=flist->next) {
|
||||
faction * f = flist->data;
|
||||
if (find_key(f->attribs, atoi36("phnx"))) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
} else if (strcmp(name, "pyramid")==0) {
|
||||
faction_list * flist = al->members;
|
||||
for (;flist;flist=flist->next) {
|
||||
faction * f = flist->data;
|
||||
if (find_key(f->attribs, atoi36("pyra"))) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -44,6 +44,8 @@ extern void setalliance(struct faction * f, alliance * al);
|
|||
extern void alliancejoin(void);
|
||||
extern void alliancekick(void);
|
||||
extern void alliancevictory(void);
|
||||
|
||||
extern int victorycondition(const alliance * al, const char * name);
|
||||
/* execute commands */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -191,9 +191,6 @@
|
|||
<File
|
||||
RelativePath=".\event.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\functions.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\goodies.h">
|
||||
</File>
|
||||
|
@ -224,6 +221,9 @@
|
|||
<File
|
||||
RelativePath=".\resolve.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\script.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\sql.h">
|
||||
</File>
|
||||
|
@ -267,9 +267,6 @@
|
|||
<File
|
||||
RelativePath=".\event.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\functions.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\goodies.c">
|
||||
</File>
|
||||
|
@ -297,6 +294,9 @@
|
|||
<File
|
||||
RelativePath=".\resolve.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\script.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\sql.c">
|
||||
</File>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
// kernel includes
|
||||
#include <kernel/region.h>
|
||||
#include <kernel/faction.h>
|
||||
#include <modules/alliance.h>
|
||||
|
||||
// lua includes
|
||||
|
@ -13,6 +14,18 @@
|
|||
|
||||
using namespace luabind;
|
||||
|
||||
class factionlist_iterator {
|
||||
public:
|
||||
static faction_list * next(faction_list * node) { return node->next; }
|
||||
static faction * value(faction_list * node) { return node->data; }
|
||||
};
|
||||
|
||||
static eressea::list<faction, faction_list, factionlist_iterator>
|
||||
alliance_factions(const alliance& al)
|
||||
{
|
||||
return eressea::list<faction, faction_list, factionlist_iterator>(al.members);
|
||||
}
|
||||
|
||||
static alliance *
|
||||
add_alliance(int id, const char * name)
|
||||
{
|
||||
|
@ -31,9 +44,10 @@ bind_alliance(lua_State * L)
|
|||
def("alliances", &get_alliances, return_stl_iterator),
|
||||
def("get_alliance", &findalliance),
|
||||
def("add_alliance", &add_alliance),
|
||||
|
||||
def("victorycondition", &victorycondition),
|
||||
class_<struct alliance>("alliance")
|
||||
.def_readonly("name", &alliance::name)
|
||||
.def_readonly("id", &alliance::id)
|
||||
.property("factions", &alliance_factions, return_stl_iterator)
|
||||
];
|
||||
}
|
||||
|
|
|
@ -10,12 +10,18 @@
|
|||
#include <kernel/save.h>
|
||||
#include <kernel/unit.h>
|
||||
#include <util/language.h>
|
||||
#ifdef ALLIANCES
|
||||
# include <modules/alliance.h>
|
||||
#endif
|
||||
|
||||
// lua includes
|
||||
#include <lua.hpp>
|
||||
#include <luabind/luabind.hpp>
|
||||
#include <luabind/iterator_policy.hpp>
|
||||
|
||||
// util includes
|
||||
#include <util/base36.h>
|
||||
|
||||
using namespace luabind;
|
||||
|
||||
static int
|
||||
|
@ -64,6 +70,8 @@ void
|
|||
bind_eressea(lua_State * L)
|
||||
{
|
||||
module(L)[
|
||||
def("atoi36", &atoi36),
|
||||
def("itoa36", &itoa36),
|
||||
def("read_game", &read_game),
|
||||
def("write_game", &write_game),
|
||||
def("write_passwords", &writepasswd),
|
||||
|
|
|
@ -76,10 +76,10 @@
|
|||
#include <item.h>
|
||||
|
||||
/* util includes */
|
||||
#include <rand.h>
|
||||
#include <log.h>
|
||||
#include <sql.h>
|
||||
#include <base36.h>
|
||||
#include <util/rand.h>
|
||||
#include <util/log.h>
|
||||
#include <util/sql.h>
|
||||
#include <util/base36.h>
|
||||
|
||||
/* lua includes */
|
||||
#include "lua/bindings.h"
|
||||
|
@ -561,7 +561,6 @@ usage(const char * prog, const char * arg)
|
|||
"-o reportdir : gibt das reportverzeichnis an\n"
|
||||
"-l logfile : specify an alternative logfile\n"
|
||||
"-R : erstellt nur die Reports neu\n"
|
||||
"--noeiswald : beruhigt ungemein\n"
|
||||
"--nomsg : keine Messages (RAM sparen)\n"
|
||||
"--nobattle : keine Kämpfe\n"
|
||||
"--nomonsters : keine monster KI\n"
|
||||
|
@ -657,7 +656,6 @@ read_args(int argc, char **argv, lua_State * luaState)
|
|||
case 'v':
|
||||
if (i<argc) {
|
||||
orders = argv[++i];
|
||||
setLuaString(luaState, "orderfile", orders);
|
||||
} else {
|
||||
return usage(argv[0], argv[i]);
|
||||
}
|
||||
|
@ -701,7 +699,15 @@ read_args(int argc, char **argv, lua_State * luaState)
|
|||
usage(argv[0], argv[i]);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
/* add some more variables to the lua globals */
|
||||
setLuaString(luaState, "datapath", datapath());
|
||||
setLuaString(luaState, "basepath", basepath());
|
||||
setLuaString(luaState, "reportpath", reportpath());
|
||||
setLuaString(luaState, "resourcepath", resourcepath());
|
||||
setLuaString(luaState, "orderfile", orders);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef BETA_CODE
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<eressea>
|
||||
<include file="messages.xml"></include>
|
||||
|
||||
<include file="vinyambar/de/strings.xml"></include>
|
||||
<include file="vinyambar/wdw-races.xml"></include>
|
||||
<include file="vinyambar/wdw-resources.xml"></include>
|
||||
|
||||
<comment>Localization</comment>
|
||||
<comment>Strings MUST always be read first</comment>
|
||||
<include file="vinyambar/de/strings.xml"></include>
|
||||
<include file="de/strings.xml"></include>
|
||||
<include file="en/strings.xml"></include>
|
||||
<include file="messages.xml"></include>
|
||||
|
||||
<include file="vinyambar/wdw-races.xml"></include>
|
||||
<include file="vinyambar/wdw-resources.xml"></include>
|
||||
|
||||
<include file="races.xml"></include>
|
||||
<include file="resources.xml"></include>
|
||||
|
|
|
@ -14,3 +14,126 @@
|
|||
<text locale="en">scrolls</text>
|
||||
</string>
|
||||
</strings>
|
||||
|
||||
<strings>
|
||||
<string name="gem">
|
||||
<text locale="de">Edelstein</text>
|
||||
<text locale="en">gem</text>
|
||||
</string>
|
||||
<string name="gem_p">
|
||||
<text locale="de">Edelsteine</text>
|
||||
<text locale="en">gems</text>
|
||||
</string>
|
||||
</strings>
|
||||
|
||||
<resource name="opal" appearance="gem">
|
||||
<item weight="0"></item>
|
||||
</resource>
|
||||
<strings>
|
||||
<string name="opal">
|
||||
<text locale="de">Opal</text>
|
||||
<text locale="en">opal</text>
|
||||
</string>
|
||||
<string name="opal_p">
|
||||
<text locale="de">Opale</text>
|
||||
<text locale="en">opals</text>
|
||||
</string>
|
||||
</strings>
|
||||
|
||||
<resource name="diamond" appearance="gem">
|
||||
<item weight="0"></item>
|
||||
</resource>
|
||||
<strings>
|
||||
<string name="diamond">
|
||||
<text locale="de">Diamant</text>
|
||||
<text locale="en">diamond</text>
|
||||
</string>
|
||||
<string name="diamond_p">
|
||||
<text locale="de">Diamanten</text>
|
||||
<text locale="en">diamonds</text>
|
||||
</string>
|
||||
</strings>
|
||||
|
||||
<resource name="zaphire" appearance="gem">
|
||||
<item weight="0"></item>
|
||||
</resource>
|
||||
<strings>
|
||||
<string name="zaphire">
|
||||
<text locale="de">Saphir</text>
|
||||
<text locale="en">zaphire</text>
|
||||
</string>
|
||||
<string name="zaphire_p">
|
||||
<text locale="de">Saphire</text>
|
||||
<text locale="en">zaphires</text>
|
||||
</string>
|
||||
</strings>
|
||||
|
||||
<resource name="topaz" appearance="gem">
|
||||
<item weight="0"></item>
|
||||
</resource>
|
||||
<strings>
|
||||
<string name="topaz">
|
||||
<text locale="de">Topas</text>
|
||||
<text locale="en">topaz</text>
|
||||
</string>
|
||||
<string name="topaz_p">
|
||||
<text locale="de">Topase</text>
|
||||
<text locale="en">topazes</text>
|
||||
</string>
|
||||
</strings>
|
||||
|
||||
<resource name="beryl" appearance="gem">
|
||||
<item weight="0"></item>
|
||||
</resource>
|
||||
<strings>
|
||||
<string name="beryl">
|
||||
<text locale="de">Beryll</text>
|
||||
<text locale="en">beryl</text>
|
||||
</string>
|
||||
<string name="beryl_p">
|
||||
<text locale="de">Berylle</text>
|
||||
<text locale="en">beryls</text>
|
||||
</string>
|
||||
</strings>
|
||||
|
||||
<resource name="agate" appearance="gem">
|
||||
<item weight="0"></item>
|
||||
</resource>
|
||||
<strings>
|
||||
<string name="agate">
|
||||
<text locale="de">Achat</text>
|
||||
<text locale="en">agate</text>
|
||||
</string>
|
||||
<string name="agate_p">
|
||||
<text locale="de">Achate</text>
|
||||
<text locale="en">agates</text>
|
||||
</string>
|
||||
</strings>
|
||||
|
||||
<resource name="garnet" appearance="gem">
|
||||
<item weight="0"></item>
|
||||
</resource>
|
||||
<strings>
|
||||
<string name="garnet">
|
||||
<text locale="de">Granat</text>
|
||||
<text locale="en">garnet</text>
|
||||
</string>
|
||||
<string name="garnet_p">
|
||||
<text locale="de">Granate</text>
|
||||
<text locale="en">garnets</text>
|
||||
</string>
|
||||
</strings>
|
||||
|
||||
<resource name="emerald" appearance="gem">
|
||||
<item weight="0"></item>
|
||||
</resource>
|
||||
<strings>
|
||||
<string name="emerald">
|
||||
<text locale="de">Smaragd</text>
|
||||
<text locale="en">emerald</text>
|
||||
</string>
|
||||
<string name="emerald_p">
|
||||
<text locale="de">Smaragde</text>
|
||||
<text locale="en">emeralds</text>
|
||||
</string>
|
||||
</strings>
|
||||
|
|
Loading…
Reference in New Issue