forked from github/server
- Weihnachtsitem (Sonnensegel)
- Iteminfos könenn in den XML-Dateien stehen, brauchen keine eigene Datei mehr - NEUSTART übernimmt das vorherige Parteialter
This commit is contained in:
parent
a5239bb241
commit
d4da3b1223
|
@ -120,6 +120,7 @@ restart_race(unit *u, const race * rc)
|
||||||
unit * nu = addplayer(u->region, f);
|
unit * nu = addplayer(u->region, f);
|
||||||
order ** ordp = &u->orders;
|
order ** ordp = &u->orders;
|
||||||
f->subscription = u->faction->subscription;
|
f->subscription = u->faction->subscription;
|
||||||
|
f->age = u->faction->age;
|
||||||
fset(f, FFL_RESTART);
|
fset(f, FFL_RESTART);
|
||||||
if (f->subscription) {
|
if (f->subscription) {
|
||||||
sql_print(("UPDATE subscriptions set faction='%s', race='%s' where id=%u;\n",
|
sql_print(("UPDATE subscriptions set faction='%s', race='%s' where id=%u;\n",
|
||||||
|
@ -975,7 +976,7 @@ transfer_faction(faction *f, faction *f2)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
restart(unit * u, struct order * ord)
|
restart_cmd(unit * u, struct order * ord)
|
||||||
{
|
{
|
||||||
init_tokens(ord);
|
init_tokens(ord);
|
||||||
skip_token(); /* skip keyword */
|
skip_token(); /* skip keyword */
|
||||||
|
@ -1091,7 +1092,7 @@ parse_quit(void)
|
||||||
break;
|
break;
|
||||||
case K_RESTART:
|
case K_RESTART:
|
||||||
if (u->number > 0) {
|
if (u->number > 0) {
|
||||||
if (restart(u, ord)!=0) ord = NULL;
|
if (restart_cmd(u, ord)!=0) ord = NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2211,10 +2212,16 @@ display_item(faction *f, unit *u, const item_type * itype)
|
||||||
char t[NAMESIZE + 1];
|
char t[NAMESIZE + 1];
|
||||||
char filename[MAX_PATH];
|
char filename[MAX_PATH];
|
||||||
const char *name;
|
const char *name;
|
||||||
|
const char *info;
|
||||||
|
const char *key;
|
||||||
|
|
||||||
if (u && *i_find(&u->items, itype) == NULL) return false;
|
if (u && *i_find(&u->items, itype) == NULL) return false;
|
||||||
|
|
||||||
name = resourcename(itype->rtype, 0);
|
name = resourcename(itype->rtype, 0);
|
||||||
|
key = mkname("iteminfo", name);
|
||||||
|
info = locale_string(f->locale, key);
|
||||||
|
|
||||||
|
if (info==key) {
|
||||||
sprintf(filename, "%s/%s/items/%s", resourcepath(), locale_name(f->locale), name);
|
sprintf(filename, "%s/%s/items/%s", resourcepath(), locale_name(f->locale), name);
|
||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
|
@ -2237,9 +2244,10 @@ display_item(faction *f, unit *u, const item_type * itype)
|
||||||
strcat(buf, t);
|
strcat(buf, t);
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
name = buf;
|
info = buf;
|
||||||
|
}
|
||||||
ADDMSG(&f->msgs, msg_message("displayitem", "weight item description",
|
ADDMSG(&f->msgs, msg_message("displayitem", "weight item description",
|
||||||
itype->weight/1000, itype->rtype, strdup(name)));
|
itype->weight/1000, itype->rtype, strdup(info)));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "xerewards.h"
|
#include "xerewards.h"
|
||||||
#include "artrewards.h"
|
#include "artrewards.h"
|
||||||
#include "weapons.h"
|
#include "weapons.h"
|
||||||
|
#include "speedsail.h"
|
||||||
#include "racespoils.h"
|
#include "racespoils.h"
|
||||||
#if GROWING_TREES
|
#if GROWING_TREES
|
||||||
# include "seed.h"
|
# include "seed.h"
|
||||||
|
@ -42,6 +43,7 @@ register_items(void)
|
||||||
register_catapultammo();
|
register_catapultammo();
|
||||||
register_racespoils();
|
register_racespoils();
|
||||||
register_artrewards();
|
register_artrewards();
|
||||||
|
register_speedsail();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -175,6 +175,12 @@
|
||||||
<File
|
<File
|
||||||
RelativePath=".\seed.c">
|
RelativePath=".\seed.c">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\speedsail.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\speedsail.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\weapons.c">
|
RelativePath=".\weapons.c">
|
||||||
</File>
|
</File>
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
/* vi: set ts=2:
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Eressea PB(E)M host Copyright (C) 1998-2003
|
||||||
|
* Christian Schlittchen (corwin@amber.kn-bremen.de)
|
||||||
|
* Katja Zedel (katze@felidae.kn-bremen.de)
|
||||||
|
* Henning Peters (faroul@beyond.kn-bremen.de)
|
||||||
|
* Enno Rehling (enno@eressea-pbem.de)
|
||||||
|
* Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de)
|
||||||
|
*
|
||||||
|
* This program may not be used, modified or distributed without
|
||||||
|
* prior permission by the authors of Eressea.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include <eressea.h>
|
||||||
|
#include "speedsail.h"
|
||||||
|
|
||||||
|
/* kernel includes */
|
||||||
|
#include <faction.h>
|
||||||
|
#include <item.h>
|
||||||
|
#include <message.h>
|
||||||
|
#include <movement.h>
|
||||||
|
#include <plane.h>
|
||||||
|
#include <region.h>
|
||||||
|
#include <ship.h>
|
||||||
|
#include <unit.h>
|
||||||
|
|
||||||
|
/* util includes */
|
||||||
|
#include <functions.h>
|
||||||
|
|
||||||
|
/* libc includes */
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
static int
|
||||||
|
use_speedsail(struct unit * u, const struct item_type * itype, int amount, struct order * ord)
|
||||||
|
{
|
||||||
|
struct plane * p = rplane(u->region);
|
||||||
|
unused(amount);
|
||||||
|
unused(itype);
|
||||||
|
if (p!=NULL) {
|
||||||
|
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "use_realworld_only", ""));
|
||||||
|
return EUNUSABLE;
|
||||||
|
} else {
|
||||||
|
if (u->ship) {
|
||||||
|
attrib * a = a_find(u->ship->attribs, &at_speedup);
|
||||||
|
if (a!=NULL) {
|
||||||
|
a = a_add(&u->ship->attribs, a_new(&at_speedup));
|
||||||
|
a->data.sa[0] = 50; /* speed */
|
||||||
|
a->data.sa[1] = 50; /* decay */
|
||||||
|
ADDMSG(&u->faction->msgs, msg_message("use_speedsail", "unit", u));
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
cmistake(u, ord, 211, MSG_EVENT);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cmistake(u, ord, 144, MSG_EVENT);
|
||||||
|
}
|
||||||
|
return EUNUSABLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static resource_type rt_speedsail = {
|
||||||
|
{ "speedsail", "speedsail_p" },
|
||||||
|
{ "speedsail", "speedsail_p" },
|
||||||
|
RTF_ITEM,
|
||||||
|
&res_changeitem
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
item_type it_speedsail = {
|
||||||
|
&rt_speedsail, /* resourcetype */
|
||||||
|
0, 0, 0, /* flags, weight, capacity */
|
||||||
|
NULL, /* construction */
|
||||||
|
&use_speedsail,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
register_speedsail(void)
|
||||||
|
{
|
||||||
|
it_register(&it_speedsail);
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
/* vi: set ts=2:
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Eressea PB(E)M host Copyright (C) 1998-2003
|
||||||
|
* Christian Schlittchen (corwin@amber.kn-bremen.de)
|
||||||
|
* Katja Zedel (katze@felidae.kn-bremen.de)
|
||||||
|
* Henning Peters (faroul@beyond.kn-bremen.de)
|
||||||
|
* Enno Rehling (enno@eressea-pbem.de)
|
||||||
|
* Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de)
|
||||||
|
*
|
||||||
|
* This program may not be used, modified or distributed without
|
||||||
|
* prior permission by the authors of Eressea.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef H_ITM_SPEEDVIAL
|
||||||
|
#define H_ITM_SPEEDVIAL
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern void register_speedsail(void);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
|
@ -587,7 +587,7 @@ shipspeed (const ship * sh, const unit * u)
|
||||||
|
|
||||||
a = a_find(sh->attribs, &at_speedup);
|
a = a_find(sh->attribs, &at_speedup);
|
||||||
while (a != NULL) {
|
while (a != NULL) {
|
||||||
k += a->data.i;
|
k += a->data.sa[0];
|
||||||
a = a->nexttype;
|
a = a->nexttype;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -159,10 +159,10 @@ attrib_type at_shiptrail = {
|
||||||
static int
|
static int
|
||||||
age_speedup(attrib *a)
|
age_speedup(attrib *a)
|
||||||
{
|
{
|
||||||
if(a->data.i > 0) {
|
if (a->data.sa[0] > 0) {
|
||||||
--a->data.i;
|
a->data.sa[0] = a->data.sa[0] - a->data.sa[1];
|
||||||
}
|
}
|
||||||
return a->data.i;
|
return a->data.sa[0]>0;
|
||||||
}
|
}
|
||||||
|
|
||||||
attrib_type at_speedup = {
|
attrib_type at_speedup = {
|
||||||
|
|
|
@ -7,6 +7,19 @@
|
||||||
_a: including article (ein Troll, a troll)
|
_a: including article (ein Troll, a troll)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<namespace name="iteminfo">
|
||||||
|
<string name="speedsail">
|
||||||
|
<text locale="de">
|
||||||
|
Setzt eine Einheit dieses Segel auf einem Schiff, so erhöht
|
||||||
|
sich dessen Reichweite kurzfristig um 50 Regionen.
|
||||||
|
</text>
|
||||||
|
<text locale="en">
|
||||||
|
A unit setting this sail on a ship temporarily increases the
|
||||||
|
ship's range by 50 regions.
|
||||||
|
</text>
|
||||||
|
</string>
|
||||||
|
</namespace>
|
||||||
|
|
||||||
<namespace name="school">
|
<namespace name="school">
|
||||||
<string name="none">
|
<string name="none">
|
||||||
<text locale="de">Kein Magiegebiet</text>
|
<text locale="de">Kein Magiegebiet</text>
|
||||||
|
@ -575,6 +588,14 @@
|
||||||
<text locale="de">Katapultmunition</text>
|
<text locale="de">Katapultmunition</text>
|
||||||
<text locale="en">ammunition</text>
|
<text locale="en">ammunition</text>
|
||||||
</string>
|
</string>
|
||||||
|
<string name="speedsail">
|
||||||
|
<text locale="de">Sonnensegel</text>
|
||||||
|
<text locale="en">solar sail</text>
|
||||||
|
</string>
|
||||||
|
<string name="speedsail_p">
|
||||||
|
<text locale="de">Sonnensegel</text>
|
||||||
|
<text locale="en">solar sails</text>
|
||||||
|
</string>
|
||||||
|
|
||||||
<string name="elfspoil">
|
<string name="elfspoil">
|
||||||
<text locale="de">Elfenohr</text>
|
<text locale="de">Elfenohr</text>
|
||||||
|
@ -3947,33 +3968,23 @@
|
||||||
</string>
|
</string>
|
||||||
<string name="miracle_doctor">
|
<string name="miracle_doctor">
|
||||||
<text locale="de">
|
<text locale="de">
|
||||||
Wenn einem der Alchemist nicht weiterhelfen kann, geht
|
Wenn einem der Alchemist nicht weiterhelfen kann, geht man zu dem
|
||||||
man zu dem
|
gelehrten Tybiedmagier. Seine Tränke und Tinkturen helfen gegen
|
||||||
gelehrten Tybiedmagier. Seine Tränke und Tinkturen
|
alles, was man sonst nicht bekommen kann. Ob nun die kryptische
|
||||||
helfen gegen alles,
|
Formel unter dem Holzschuh des untreuen Ehemannes wirklich geholfen
|
||||||
was man sonst nicht bekommen kann. Ob nun die kryptische
|
hat - nun, der des Lesens nicht mächtige Bauer wird es nie wissen.
|
||||||
Formel unter dem
|
Dem Magier hilft es auf jeden Fall... beim Füllen seines
|
||||||
Holzschuh des untreuen Ehemannes wirklich geholfen hat -
|
Geldbeutels. 50 Silber pro Stufe lassen sich so in einer Woche
|
||||||
nun, der des
|
verdienen.
|
||||||
Lesens nicht mächtige Bauer wird es nie wissen. Dem
|
|
||||||
Magier hilft es
|
|
||||||
auf jeden Fall... beim Füllen seines Geldbeutels. 50
|
|
||||||
Silber pro Stufe
|
|
||||||
lassen sich so in einer Woche verdienen.
|
|
||||||
</text>
|
</text>
|
||||||
<text locale="en">
|
<text locale="en">
|
||||||
If the local alchemist could not help you, you should
|
If the local alchemist could not help you, you should visit a
|
||||||
visit a
|
scholar of Tybied. His potions and tinctures may help when nothing
|
||||||
scholar of Tybied. His potions and tinctures may help
|
else does. If the cryptic formula under the wooden shoes of the
|
||||||
when nothing
|
unfaithful husband really helped? - well, the peasant, who isn't
|
||||||
else does. If the cryptic formula under the wooden shoes
|
capable of reading, will never know. At least it helped the mage...
|
||||||
of the
|
to fill his purse. In one week he can earn 50 silver per level that
|
||||||
unfaithful husband really helped? - well, the peasant,
|
way.
|
||||||
who isn't
|
|
||||||
capable of reading, will never know. At least it helped
|
|
||||||
the mage...
|
|
||||||
to fill his purse. In one week he can earn 50 silver per
|
|
||||||
level that way.
|
|
||||||
</text>
|
</text>
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
|
|
|
@ -202,6 +202,14 @@
|
||||||
<text locale="fr">"heavy fog makes it impossible to leave the region. ($int36($id))"</text>
|
<text locale="fr">"heavy fog makes it impossible to leave the region. ($int36($id))"</text>
|
||||||
<text locale="en">"heavy fog makes it impossible to leave the region. ($int36($id))"</text>
|
<text locale="en">"heavy fog makes it impossible to leave the region. ($int36($id))"</text>
|
||||||
</message>
|
</message>
|
||||||
|
<message name="use_speedsail" section="events">
|
||||||
|
<type>
|
||||||
|
<arg name="unit" type="unit"/>
|
||||||
|
</type>
|
||||||
|
<text locale="de">"$unit($unit) setzt ein Sonnensegel. Die Geschwindigkeit des Schiffes erhöht sich dramatisch."</text>
|
||||||
|
<text locale="fr">"$unit($unit) sets a solar sail. The ship's speed is greatly increased."</text>
|
||||||
|
<text locale="en">"$unit($unit) sets a solar sail. The ship's speed is greatly increased."</text>
|
||||||
|
</message>
|
||||||
<message name="use_questkey_wrongregion" section="events">
|
<message name="use_questkey_wrongregion" section="events">
|
||||||
<type>
|
<type>
|
||||||
<arg name="region" type="region"/>
|
<arg name="region" type="region"/>
|
||||||
|
|
|
@ -1,3 +1,23 @@
|
||||||
|
function test_sail()
|
||||||
|
r0 = terraform(0, 0, "plain")
|
||||||
|
|
||||||
|
orcs = add_faction("enno@eressea.de", "orc", "de")
|
||||||
|
orcs.age = 20
|
||||||
|
|
||||||
|
orc = add_unit(orcs, r0)
|
||||||
|
orc.number = 1
|
||||||
|
orc:add_item("speedsail", orc.number)
|
||||||
|
|
||||||
|
orc:clear_orders()
|
||||||
|
orc:add_order("NUMMER PARTEI orcs")
|
||||||
|
orc:add_order("NUMMER EINHEIT orc")
|
||||||
|
orc:add_order("BENENNE EINHEIT Orks")
|
||||||
|
orc:add_order("ZEIGEN \"Sonnensegel\"")
|
||||||
|
|
||||||
|
process_orders()
|
||||||
|
write_reports()
|
||||||
|
end
|
||||||
|
|
||||||
function test_movement()
|
function test_movement()
|
||||||
west = direction("west")
|
west = direction("west")
|
||||||
east = direction("east")
|
east = direction("east")
|
||||||
|
@ -302,7 +322,8 @@ function test_fail()
|
||||||
print(f)
|
print(f)
|
||||||
end
|
end
|
||||||
|
|
||||||
test_movement()
|
test_sail()
|
||||||
|
-- test_movement()
|
||||||
-- test_fail()
|
-- test_fail()
|
||||||
-- test_handler()
|
-- test_handler()
|
||||||
-- test_parser()
|
-- test_parser()
|
||||||
|
|
Loading…
Reference in New Issue