forked from github/server
Bug 2489: Kill the SIEGE command, forever.
This commit is contained in:
parent
062abe8102
commit
2e5e8347ac
33 changed files with 16 additions and 547 deletions
|
@ -28,7 +28,6 @@
|
|||
"stealth",
|
||||
"taxation",
|
||||
"trade",
|
||||
"besiege",
|
||||
"steal",
|
||||
"buy",
|
||||
"teach",
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
"work": [ "ARBEITE", "ARBEITEN" ],
|
||||
"attack": ["ATTACKIERE", "ATTACKIEREN"],
|
||||
"steal": [ "BEKLAUE", "BEKLAUEN" ],
|
||||
"besiege": ["BELAGERE", "BELAGERN" ],
|
||||
"name": [ "BENENNE", "BENENNEN" ],
|
||||
"use": [ "BENUTZE", "BENUTZEN" ],
|
||||
"describe": [ "BESCHREIBE", "BESCHREIBEN" ],
|
||||
|
|
|
@ -710,12 +710,6 @@
|
|||
<arg name="dir" type="direction"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="nr_building_besieged" section="nr">
|
||||
<type>
|
||||
<arg name="soldiers" type="int"/>
|
||||
<arg name="diff" type="int"/>
|
||||
</type>
|
||||
</message>
|
||||
|
||||
<message name="newbie_password" section="events">
|
||||
<type>
|
||||
|
@ -2684,19 +2678,6 @@
|
|||
<arg name="want" type="int"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="siege_catapults" section="events">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="building" type="building"/>
|
||||
<arg name="destruction" type="int"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="siege" section="events">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="building" type="building"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="drown_on_ship" section="events">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
@ -3351,14 +3332,6 @@
|
|||
<arg name="command" type="order"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="entrance_besieged" section="events">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
<arg name="command" type="order"/>
|
||||
<arg name="building" type="building"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="entrance_denied" section="events">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
@ -3890,13 +3863,6 @@
|
|||
<arg name="command" type="order"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="error166" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
<arg name="command" type="order"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="error165" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
@ -4002,13 +3968,6 @@
|
|||
<arg name="command" type="order"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="error60" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
<arg name="command" type="order"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="error151" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
@ -4993,20 +4952,6 @@
|
|||
<arg name="command" type="order"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="error24" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
<arg name="command" type="order"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="error23" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
<arg name="command" type="order"/>
|
||||
</type>
|
||||
</message>
|
||||
<message name="error22" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
|
|
@ -257,9 +257,6 @@ msgstr "\"$unit($unit) in $region($region): '$order($command)' - Hier kann man k
|
|||
msgid "error165"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Der Trank bekommt der Einheit nicht.\""
|
||||
|
||||
msgid "siege_catapults"
|
||||
msgstr "\"$unit($unit) belagert $building($building). Dabei richten die Katapulte Zerstörungen von $int($destruction) Größenpunkten an.\""
|
||||
|
||||
msgid "curseinfo::magicstreet"
|
||||
msgstr "\"Die Straßen sind erstaunlich trocken und gut begehbar. ($int36($id))\""
|
||||
|
||||
|
@ -638,9 +635,6 @@ msgstr "\"$unit($unit) erscheint plötzlich.\""
|
|||
msgid "magicresistance_effect"
|
||||
msgstr "\"$unit($unit) wird kurz von einem magischen Licht umhüllt.\""
|
||||
|
||||
msgid "siege"
|
||||
msgstr "\"$unit($unit) belagert $building($building).\""
|
||||
|
||||
msgid "missing_force"
|
||||
msgstr "\"$unit($unit) schafft es nicht, genug Kraft aufzubringen, um $spell($spell) auf Stufe $int($level) zu zaubern.\""
|
||||
|
||||
|
@ -977,9 +971,6 @@ msgstr "\"$unit($mage) kümmert sich um die Verletzten und benutzt ein $resource
|
|||
msgid "error276"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Hier kann man keine Schiffe bauen.\""
|
||||
|
||||
msgid "error166"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Diese Rasse kann eine Burg nicht belagern.\""
|
||||
|
||||
msgid "chaosgate_effect_2"
|
||||
msgstr "\"Ein Wirbel aus blendendem Licht erscheint.\""
|
||||
|
||||
|
@ -998,9 +989,6 @@ msgstr "\"$unit($unit) in $region($region): '$order($command)' - Die Einheit ist
|
|||
msgid "error82"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Es gibt keine Abstimmung mit dieser Nummer.\""
|
||||
|
||||
msgid "error60"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Die Einheit wird belagert.\""
|
||||
|
||||
msgid "error162"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Der Heiltrank wird automatisch bei Bedarf benutzt.\""
|
||||
|
||||
|
@ -1457,9 +1445,6 @@ msgstr "\"$unit($unit) öffnet eines der Schlösser in $region($region) mit $if(
|
|||
msgid "error255"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - So etwas kann man nicht opfern.\""
|
||||
|
||||
msgid "entrance_besieged"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - $building($building) wird belagert.\""
|
||||
|
||||
msgid "error260"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Der Besitzer eines Schiffes oder Gebäudes kann nicht neu sortiert werden.\""
|
||||
|
||||
|
@ -1550,9 +1535,6 @@ msgstr "\"In $region($region) findet ein Kampf statt.\""
|
|||
msgid "wormhole_dissolve"
|
||||
msgstr "\"Das Wurmloch in $region($region) schließt sich.\""
|
||||
|
||||
msgid "error23"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Der Belagerungszustand macht die Kontaktaufnahme unmöglich.\""
|
||||
|
||||
msgid "error12"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Das Schiff gehört uns nicht.\""
|
||||
|
||||
|
@ -2135,9 +2117,6 @@ msgstr "\"Seit $int($age) Wochen Mitglied der Allianz '$name ($int36($id))', ang
|
|||
msgid "deathcloud_effect"
|
||||
msgstr "\"$unit($mage) beschwört einen Giftelementar in $region($region).\""
|
||||
|
||||
msgid "nr_building_besieged"
|
||||
msgstr "\", belagert von $int($soldiers) Personen$if($lt($diff,0),\"\",\" (abgeschnitten)\")\""
|
||||
|
||||
msgid "nr_population"
|
||||
msgstr "\"Deine Partei hat $int($population) Personen in $int($units) von maximal $int($limit) Einheiten.\""
|
||||
|
||||
|
@ -2414,9 +2393,6 @@ msgstr "\"$unit($unit) in $region($region): '$order($command)' - Das Schiff hat
|
|||
msgid "aborted_battle"
|
||||
msgstr "\"Der Kampf wurde abgebrochen, da alle Verteidiger flohen.\""
|
||||
|
||||
msgid "error24"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Der Belagerungszustand macht Spionage unmöglich.\""
|
||||
|
||||
msgid "usecatapult"
|
||||
msgstr "\"$int($amount) Krieger von $unit($unit) feuern ihre Katapulte ab.\""
|
||||
|
||||
|
|
|
@ -257,9 +257,6 @@ msgstr "\"$unit($unit) in $region($region): '$order($command)' - Buildings canno
|
|||
msgid "error165"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - The potion does not agree with the unit.\""
|
||||
|
||||
msgid "siege_catapults"
|
||||
msgstr "\"$building($building) is under siege by $unit($unit). During siege, catapults caused $int($destruction) points destruction.\""
|
||||
|
||||
msgid "curseinfo::magicstreet"
|
||||
msgstr "\"The roads are extremely dry and well-kept. ($int36($id))\""
|
||||
|
||||
|
@ -638,9 +635,6 @@ msgstr "\"$unit($unit) appears.\""
|
|||
msgid "magicresistance_effect"
|
||||
msgstr "\"$unit($unit) is briefly surrounded by a magical light.\""
|
||||
|
||||
msgid "siege"
|
||||
msgstr "\"$building($building) is under siege by $unit($unit).\""
|
||||
|
||||
msgid "missing_force"
|
||||
msgstr "\"$unit($unit) cannot muster enough energy to cast $spell($spell) on level $int($level).\""
|
||||
|
||||
|
@ -977,9 +971,6 @@ msgstr "\"$unit($mage) sees after the wounded and heals $int($amount). A $resour
|
|||
msgid "error276"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Ships cannot be built here.\""
|
||||
|
||||
msgid "error166"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - This race cannot besiege a castle.\""
|
||||
|
||||
msgid "chaosgate_effect_2"
|
||||
msgstr "\"A vortex of blinding light appears.\""
|
||||
|
||||
|
@ -998,9 +989,6 @@ msgstr "\"'$order($command)' - $unit($unit) marched into $region($region) during
|
|||
msgid "error82"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - There is no agreement with this number.\""
|
||||
|
||||
msgid "error60"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - The unit is under siege.\""
|
||||
|
||||
msgid "error162"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - This healing potion will be automatically used when needed.\""
|
||||
|
||||
|
@ -1457,9 +1445,6 @@ msgstr "\"$unit($unit) unlocks one of the locks in $region($region) with $if($eq
|
|||
msgid "error255"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - You cannot sacrifice this.\""
|
||||
|
||||
msgid "entrance_besieged"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - $building($building) is under siege.\""
|
||||
|
||||
msgid "error260"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - The owner of a ship or a building cannot be sorted.\""
|
||||
|
||||
|
@ -1550,9 +1535,6 @@ msgstr "\"There is a battle in $region($region).\""
|
|||
msgid "wormhole_dissolve"
|
||||
msgstr "\"The wormhole in $region($region) disappears.\""
|
||||
|
||||
msgid "error23"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Contact was not possible due to siege.\""
|
||||
|
||||
msgid "error12"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - The ship is not ours.\""
|
||||
|
||||
|
@ -2135,9 +2117,6 @@ msgstr "\"Member of '$name ($int36($id))' for $int($age) weeks, led by $faction(
|
|||
msgid "deathcloud_effect"
|
||||
msgstr "\"$unit($mage) summons a poison elemental in $region($region).\""
|
||||
|
||||
msgid "nr_building_besieged"
|
||||
msgstr "\", besieged by $int($soldiers) soldiers$if($lt($diff,0),\"\",\" (cut off)\")\""
|
||||
|
||||
msgid "nr_population"
|
||||
msgstr "\"Your faction has $int($population) people in $int($units) of $int($limit) possible units.\""
|
||||
|
||||
|
@ -2414,9 +2393,6 @@ msgstr "\"$unit($unit) in $region($region): '$order($command)' - The ship has mo
|
|||
msgid "aborted_battle"
|
||||
msgstr "\"The battle was aborted because all enemies escaped.\""
|
||||
|
||||
msgid "error24"
|
||||
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Espionage was not possible due to siege.\""
|
||||
|
||||
msgid "usecatapult"
|
||||
msgstr "\"$int($amount) fighters of $unit($unit) launch their catapults.\""
|
||||
|
||||
|
|
|
@ -2772,10 +2772,6 @@ msgstr "Dieser wunderschoen geschmueckte Baum entfaltet in den Wintermonaten ein
|
|||
msgid "h10"
|
||||
msgstr "Kakteenschwitz"
|
||||
|
||||
msgctxt "keyword"
|
||||
msgid "besiege"
|
||||
msgstr "BELAGERE"
|
||||
|
||||
msgid "h11"
|
||||
msgstr "Sandfäule"
|
||||
|
||||
|
|
|
@ -2421,10 +2421,6 @@ msgctxt "iteminfo"
|
|||
msgid "xmastree"
|
||||
msgstr "In the winter months, this beautifully decorated tree has a magical effect on the entire forest."
|
||||
|
||||
msgctxt "keyword"
|
||||
msgid "besiege"
|
||||
msgstr "BESIEGE"
|
||||
|
||||
msgid "h10"
|
||||
msgstr "peyote"
|
||||
|
||||
|
|
|
@ -31,7 +31,6 @@ function test_process()
|
|||
assert_equal("function", _G.type(eressea.process.movement))
|
||||
assert_equal("function", _G.type(eressea.process.use))
|
||||
assert_equal("function", _G.type(eressea.process.battle))
|
||||
assert_equal("function", _G.type(eressea.process.siege))
|
||||
assert_equal("function", _G.type(eressea.process.leave))
|
||||
assert_equal("function", _G.type(eressea.process.promote))
|
||||
assert_equal("function", _G.type(eressea.process.restack))
|
||||
|
|
|
@ -182,13 +182,13 @@ void register_attributes(void)
|
|||
at_register(&at_seenspell);
|
||||
at_register(&at_seenspells);
|
||||
|
||||
/* neue REGION-Attribute */
|
||||
/* REGION Attribute */
|
||||
at_register(&at_moveblock);
|
||||
at_register(&at_deathcount);
|
||||
at_register(&at_woodcount);
|
||||
at_register(&at_germs);
|
||||
|
||||
/* neue UNIT-Attribute */
|
||||
at_register(&at_siege);
|
||||
/* UNIT Attribute */
|
||||
at_register(&at_effect);
|
||||
at_register(&at_private);
|
||||
|
||||
|
@ -205,8 +205,7 @@ void register_attributes(void)
|
|||
register_bordertype(&bt_illusionwall);
|
||||
register_bordertype(&bt_road);
|
||||
|
||||
at_register(&at_germs);
|
||||
|
||||
at_deprecate("siege", a_readint);
|
||||
at_deprecate("maxmagicians", a_readint); /* factions with differnt magician limits, probably unused */
|
||||
at_deprecate("hurting", a_readint); /* an old arena attribute */
|
||||
at_deprecate("chaoscount", a_readint); /* used to increase the chance of monster spawns */
|
||||
|
|
11
src/battle.c
11
src/battle.c
|
@ -3577,17 +3577,6 @@ static void join_allies(battle * b)
|
|||
}
|
||||
if (se == s_end)
|
||||
continue;
|
||||
/* Wenn die Einheit belagert ist, mu<6D> auch einer der Alliierten belagert sein: */
|
||||
if (besieged(u)) {
|
||||
fighter *ally;
|
||||
for (ally = s->fighters; ally; ally = ally->next) {
|
||||
if (besieged(ally->unit)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (ally == NULL)
|
||||
continue;
|
||||
}
|
||||
/* keine Einw<6E>nde, also soll er mitmachen: */
|
||||
if (c == NULL) {
|
||||
if (!join_battle(b, u, false, &c)) {
|
||||
|
|
|
@ -76,10 +76,6 @@ void process_battle(void) {
|
|||
do_battles();
|
||||
}
|
||||
|
||||
void process_siege(void) {
|
||||
process_cmd(K_BESIEGE, siege_cmd, PROC_LAND_REGION);
|
||||
}
|
||||
|
||||
void process_update_long_order(void) {
|
||||
region * r;
|
||||
for (r = regions; r; r = r->next) {
|
||||
|
|
|
@ -645,7 +645,6 @@ static void cr_output_building(struct stream *out, building *b,
|
|||
const unit *owner, int fno, faction *f)
|
||||
{
|
||||
const char *bname, *billusion;
|
||||
int i;
|
||||
|
||||
stream_printf(out, "BURG %d\n", b->no);
|
||||
|
||||
|
@ -675,11 +674,6 @@ static void cr_output_building(struct stream *out, building *b,
|
|||
stream_printf(out, "%d;Partei\n", fno);
|
||||
}
|
||||
|
||||
i = building_get_siege(b);
|
||||
if (i) {
|
||||
stream_printf(out, "%d;Belagerer\n", i);
|
||||
}
|
||||
|
||||
cr_output_curses(out, f, b, TYP_BUILDING);
|
||||
}
|
||||
|
||||
|
@ -784,7 +778,6 @@ void cr_output_unit(stream *out, const faction * f,
|
|||
const item_type *lasttype;
|
||||
int pr;
|
||||
item *itm, *show = NULL;
|
||||
building *b;
|
||||
const char *pzTmp;
|
||||
skill *sv;
|
||||
item result[MAX_INVENTORY];
|
||||
|
@ -883,9 +876,6 @@ void cr_output_unit(stream *out, const faction * f,
|
|||
if (is_guard(u)) {
|
||||
stream_printf(out, "%d;bewacht\n", 1);
|
||||
}
|
||||
if ((b = usiege(u)) != NULL) {
|
||||
stream_printf(out, "%d;belagert\n", b->no);
|
||||
}
|
||||
/* additional information for own units */
|
||||
if (u->faction == f || omniscient(f)) {
|
||||
order *ord;
|
||||
|
|
|
@ -980,11 +980,6 @@ static void allocate_resource(unit * u, const resource_type * rtype, int want)
|
|||
}
|
||||
}
|
||||
|
||||
if (besieged(u)) {
|
||||
cmistake(u, u->thisorder, 60, MSG_PRODUCE);
|
||||
return;
|
||||
}
|
||||
|
||||
if (rtype->modifiers) {
|
||||
message *msg = get_modifiers(u, sk, rtype, &save_mod, &skill_mod);
|
||||
if (msg) {
|
||||
|
@ -1606,11 +1601,6 @@ static void buy(unit * u, econ_request ** buyorders, struct order *ord)
|
|||
cmistake(u, ord, 26, MSG_COMMERCE);
|
||||
return;
|
||||
}
|
||||
if (besieged(u)) {
|
||||
/* Belagerte Einheiten k<>nnen nichts kaufen. */
|
||||
cmistake(u, ord, 60, MSG_COMMERCE);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Entweder man ist Insekt in Sumpf/Wueste, oder es muss
|
||||
* einen Handelsposten in der Region geben: */
|
||||
|
@ -1930,12 +1920,6 @@ static bool sell(unit * u, econ_request ** sellorders, struct order *ord)
|
|||
return false;
|
||||
}
|
||||
}
|
||||
/* Belagerte Einheiten k<>nnen nichts verkaufen. */
|
||||
|
||||
if (besieged(u)) {
|
||||
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "error60", ""));
|
||||
return false;
|
||||
}
|
||||
/* In der Region mu<6D> es eine Burg geben. */
|
||||
|
||||
if (u_race(u) == get_race(RC_INSECT)) {
|
||||
|
@ -2409,10 +2393,6 @@ void entertain_cmd(unit * u, struct order *ord)
|
|||
cmistake(u, ord, 58, MSG_INCOME);
|
||||
return;
|
||||
}
|
||||
if (besieged(u)) {
|
||||
cmistake(u, ord, 60, MSG_INCOME);
|
||||
return;
|
||||
}
|
||||
if (u->ship && is_guarded(r, u)) {
|
||||
cmistake(u, ord, 69, MSG_INCOME);
|
||||
return;
|
||||
|
@ -2501,11 +2481,6 @@ static int do_work(unit * u, order * ord, econ_request * o)
|
|||
cmistake(u, ord, 313, MSG_INCOME);
|
||||
return -1;
|
||||
}
|
||||
if (besieged(u)) {
|
||||
if (ord)
|
||||
cmistake(u, ord, 60, MSG_INCOME);
|
||||
return -1;
|
||||
}
|
||||
if (u->ship && is_guarded(r, u)) {
|
||||
if (ord)
|
||||
cmistake(u, ord, 69, MSG_INCOME);
|
||||
|
@ -2614,10 +2589,6 @@ void tax_cmd(unit * u, struct order *ord, econ_request ** taxorders)
|
|||
return;
|
||||
}
|
||||
|
||||
if (besieged(u)) {
|
||||
cmistake(u, ord, 60, MSG_INCOME);
|
||||
return;
|
||||
}
|
||||
n = armedmen(u, false);
|
||||
|
||||
if (!n) {
|
||||
|
@ -2688,10 +2659,6 @@ void loot_cmd(unit * u, struct order *ord, econ_request ** lootorders)
|
|||
return;
|
||||
}
|
||||
|
||||
if (besieged(u)) {
|
||||
cmistake(u, ord, 60, MSG_INCOME);
|
||||
return;
|
||||
}
|
||||
n = armedmen(u, false);
|
||||
|
||||
if (!n) {
|
||||
|
|
|
@ -105,8 +105,6 @@ static bool is_guardian_r(const unit * guard)
|
|||
{
|
||||
if (guard->number == 0)
|
||||
return false;
|
||||
if (besieged(guard))
|
||||
return false;
|
||||
|
||||
/* if region_owners exist then they may be guardians: */
|
||||
if (guard->building && rule_region_owners() && guard == building_owner(guard->building)) {
|
||||
|
|
|
@ -120,7 +120,7 @@ static void test_disable(CuTest * tc)
|
|||
const char * data = "{\"disabled\": [ "
|
||||
"\"alchemy\","
|
||||
"\"pay\","
|
||||
"\"besiege\","
|
||||
"\"attack\","
|
||||
"\"module\""
|
||||
"]}";
|
||||
cJSON *json = cJSON_Parse(data);
|
||||
|
@ -129,13 +129,13 @@ static void test_disable(CuTest * tc)
|
|||
CuAssertTrue(tc, skill_enabled(SK_ALCHEMY));
|
||||
CuAssertTrue(tc, !keyword_disabled(K_BANNER));
|
||||
CuAssertTrue(tc, !keyword_disabled(K_PAY));
|
||||
CuAssertTrue(tc, !keyword_disabled(K_BESIEGE));
|
||||
CuAssertTrue(tc, !keyword_disabled(K_ATTACK));
|
||||
CuAssertIntEquals(tc, 1, config_get_int("module.enabled", 1));
|
||||
json_config(json);
|
||||
CuAssertTrue(tc, !skill_enabled(SK_ALCHEMY));
|
||||
CuAssertTrue(tc, !keyword_disabled(K_BANNER));
|
||||
CuAssertTrue(tc, keyword_disabled(K_PAY));
|
||||
CuAssertTrue(tc, keyword_disabled(K_BESIEGE));
|
||||
CuAssertTrue(tc, keyword_disabled(K_ATTACK));
|
||||
CuAssertIntEquals(tc, 0, config_get_int("module.enabled", 1));
|
||||
cJSON_Delete(json);
|
||||
test_teardown();
|
||||
|
|
|
@ -279,10 +279,6 @@ void build_road(unit * u, int size, direction_t d)
|
|||
cmistake(u, u->thisorder, 103, MSG_PRODUCE);
|
||||
return;
|
||||
}
|
||||
if (besieged(u)) {
|
||||
cmistake(u, u->thisorder, 60, MSG_PRODUCE);
|
||||
return;
|
||||
}
|
||||
|
||||
if (rn == NULL || rn->terrain->max_road < 0) {
|
||||
cmistake(u, u->thisorder, 94, MSG_PRODUCE);
|
||||
|
@ -780,11 +776,6 @@ build_building(unit * u, const building_type * btype, int id, int want, order *
|
|||
cmistake(u, ord, 93, MSG_PRODUCE);
|
||||
return 0;
|
||||
}
|
||||
if (besieged(u)) {
|
||||
/* units under siege can not build */
|
||||
cmistake(u, ord, 60, MSG_PRODUCE);
|
||||
return 0;
|
||||
}
|
||||
if (btype->flags & BTF_NOBUILD) {
|
||||
/* special building, cannot be built */
|
||||
cmistake(u, ord, 221, MSG_PRODUCE);
|
||||
|
@ -949,10 +940,6 @@ create_ship(unit * u, const struct ship_type *newtype, int want,
|
|||
cmistake(u, ord, 100, MSG_PRODUCE);
|
||||
return;
|
||||
}
|
||||
if (besieged(u)) {
|
||||
cmistake(u, ord, 60, MSG_PRODUCE);
|
||||
return;
|
||||
}
|
||||
|
||||
/* check if skill and material for 1 size is available */
|
||||
if (effskill(u, cons->skill, 0) < cons->minskill) {
|
||||
|
|
|
@ -870,14 +870,3 @@ int cmp_current_owner(const building * b, const building * a)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int building_get_siege(const struct building *b)
|
||||
{
|
||||
return b->_besieged;
|
||||
}
|
||||
|
||||
int building_add_siege(struct building *b, int delta)
|
||||
{
|
||||
b->_besieged += delta;
|
||||
return b->_besieged;
|
||||
}
|
||||
|
|
|
@ -118,7 +118,6 @@ extern "C" {
|
|||
int no;
|
||||
int size;
|
||||
int sizeleft; /* is only used during battle. should be a temporary attribute */
|
||||
int _besieged; /* should be an attribute */
|
||||
int flags;
|
||||
} building;
|
||||
|
||||
|
@ -134,9 +133,6 @@ extern "C" {
|
|||
int id, int size, struct order *ord);
|
||||
bool building_finished(const struct building *b);
|
||||
|
||||
int building_get_siege(const struct building *b);
|
||||
int building_add_siege(struct building *b, int delta);
|
||||
|
||||
int wage(const struct region *r, const struct faction *f,
|
||||
const struct race *rc, int in_turn);
|
||||
|
||||
|
|
|
@ -373,7 +373,6 @@ bool is_repeated(keyword_t kwd)
|
|||
case K_ROUTE:
|
||||
case K_DRIVE:
|
||||
case K_WORK:
|
||||
case K_BESIEGE:
|
||||
case K_ENTERTAIN:
|
||||
case K_TAX:
|
||||
case K_RESEARCH:
|
||||
|
@ -414,7 +413,6 @@ bool is_exclusive(const order * ord)
|
|||
case K_ROUTE:
|
||||
case K_DRIVE:
|
||||
case K_WORK:
|
||||
case K_BESIEGE:
|
||||
case K_ENTERTAIN:
|
||||
case K_TAX:
|
||||
case K_RESEARCH:
|
||||
|
@ -456,7 +454,6 @@ bool is_long(keyword_t kwd)
|
|||
case K_ROUTE:
|
||||
case K_DRIVE:
|
||||
case K_WORK:
|
||||
case K_BESIEGE:
|
||||
case K_ENTERTAIN:
|
||||
case K_TAX:
|
||||
case K_RESEARCH:
|
||||
|
|
|
@ -530,60 +530,6 @@ attrib_type at_target = {
|
|||
NO_READ
|
||||
};
|
||||
|
||||
/*********************/
|
||||
/* at_siege */
|
||||
/*********************/
|
||||
|
||||
void a_writesiege(const variant *var, const void *owner, struct storage *store)
|
||||
{
|
||||
struct building *b = (struct building *)var->v;
|
||||
write_building_reference(b, store);
|
||||
}
|
||||
|
||||
int a_readsiege(variant *var, void *owner, gamedata *data)
|
||||
{
|
||||
if (read_building_reference(data, (building **)&var->v, NULL) <= 0) {
|
||||
return AT_READ_FAIL;
|
||||
}
|
||||
return AT_READ_OK;
|
||||
}
|
||||
|
||||
attrib_type at_siege = {
|
||||
"siege",
|
||||
DEFAULT_INIT,
|
||||
DEFAULT_FINALIZE,
|
||||
DEFAULT_AGE,
|
||||
a_writesiege,
|
||||
a_readsiege
|
||||
};
|
||||
|
||||
struct building *usiege(const unit * u)
|
||||
{
|
||||
attrib *a;
|
||||
if (!fval(u, UFL_SIEGE))
|
||||
return NULL;
|
||||
a = a_find(u->attribs, &at_siege);
|
||||
assert(a || !"flag set, but no siege found");
|
||||
return (struct building *)a->data.v;
|
||||
}
|
||||
|
||||
void usetsiege(unit * u, const struct building *t)
|
||||
{
|
||||
attrib *a = a_find(u->attribs, &at_siege);
|
||||
if (!a && t)
|
||||
a = a_add(&u->attribs, a_new(&at_siege));
|
||||
if (a) {
|
||||
if (!t) {
|
||||
a_remove(&u->attribs, a);
|
||||
freset(u, UFL_SIEGE);
|
||||
}
|
||||
else {
|
||||
a->data.v = (void *)t;
|
||||
fset(u, UFL_SIEGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*********************/
|
||||
/* at_contact */
|
||||
/*********************/
|
||||
|
@ -1914,16 +1860,6 @@ int getunit(const region * r, const faction * f, unit **uresult)
|
|||
return result;
|
||||
}
|
||||
|
||||
int besieged(const unit * u)
|
||||
{
|
||||
/* belagert kann man in schiffen und burgen werden */
|
||||
if (u && !keyword_disabled(K_BESIEGE) && u->building) {
|
||||
building * b = u->building;
|
||||
return building_get_siege(b) >= b->size * SIEGEFACTOR;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool has_horses(const unit * u)
|
||||
{
|
||||
item *itm = u->items;
|
||||
|
|
|
@ -47,7 +47,6 @@ extern "C" {
|
|||
#define UFL_NOTMOVING (1<<9) /* Die Einheit kann sich wg. langen Kampfes nicht bewegen */
|
||||
#define UFL_DEFENDER (1<<10)
|
||||
#define UFL_HUNGER (1<<11) /* kann im Folgemonat keinen langen Befehl außer ARBEITE ausführen */
|
||||
#define UFL_SIEGE (1<<12) /* speedup: belagert eine burg, siehe attribut */
|
||||
#define UFL_TARGET (1<<13) /* speedup: hat ein target, siehe attribut */
|
||||
#define UFL_WERE (1<<14)
|
||||
#define UFL_ENTER (1<<15) /* unit has entered a ship/building and will not leave it */
|
||||
|
@ -121,7 +120,6 @@ extern "C" {
|
|||
|
||||
extern struct attrib_type at_creator;
|
||||
extern struct attrib_type at_alias;
|
||||
extern struct attrib_type at_siege;
|
||||
extern struct attrib_type at_target;
|
||||
extern struct attrib_type at_potionuser;
|
||||
extern struct attrib_type at_contact;
|
||||
|
@ -138,8 +136,6 @@ extern "C" {
|
|||
const struct race *u_irace(const struct unit *u);
|
||||
const struct race *u_race(const struct unit *u);
|
||||
void u_setrace(struct unit *u, const struct race *);
|
||||
struct building *usiege(const struct unit *u);
|
||||
void usetsiege(struct unit *u, const struct building *b);
|
||||
|
||||
const char *uprivate(const struct unit *u);
|
||||
void usetprivate(struct unit *u, const char *c);
|
||||
|
@ -257,7 +253,6 @@ extern "C" {
|
|||
int read_unitid(const struct faction *f, const struct region *r);
|
||||
|
||||
/* !< sets combatstatus of a unit */
|
||||
int besieged(const struct unit *u);
|
||||
bool has_horses(const struct unit *u);
|
||||
int maintenance_cost(const struct unit *u);
|
||||
bool has_limited_skills(const struct unit *u);
|
||||
|
|
|
@ -94,7 +94,7 @@ const char *keywords[MAXKEYWORDS] = {
|
|||
"work",
|
||||
"attack",
|
||||
"steal",
|
||||
"besiege",
|
||||
"deprecated_besiege",
|
||||
"name",
|
||||
"use",
|
||||
"describe",
|
||||
|
|
|
@ -17,7 +17,7 @@ extern "C"
|
|||
K_WORK,
|
||||
K_ATTACK,
|
||||
K_STEAL,
|
||||
K_BESIEGE,
|
||||
K_BESIEGE_UNUSED,
|
||||
K_NAME,
|
||||
K_USE,
|
||||
K_DISPLAY,
|
||||
|
|
177
src/laws.c
177
src/laws.c
|
@ -901,61 +901,6 @@ void demographics(void)
|
|||
immigration();
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------- */
|
||||
|
||||
/* test if the unit can slip through a siege undetected.
|
||||
* returns 0 if siege is successful, or 1 if the building is either
|
||||
* not besieged or the unit can slip through the siege due to better stealth.
|
||||
*/
|
||||
static int slipthru(const region * r, const unit * u, const building * b)
|
||||
{
|
||||
unit *u2;
|
||||
int n, o;
|
||||
|
||||
/* b ist die burg, in die man hinein oder aus der man heraus will. */
|
||||
if (b == NULL || building_get_siege(b) < b->size * SIEGEFACTOR) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* u wird am hinein- oder herausschluepfen gehindert, wenn STEALTH <=
|
||||
* OBSERVATION +2 der belagerer u2 ist */
|
||||
n = effskill(u, SK_STEALTH, r);
|
||||
|
||||
for (u2 = r->units; u2; u2 = u2->next) {
|
||||
if (usiege(u2) == b) {
|
||||
|
||||
if (invisible(u, u2) >= u->number)
|
||||
continue;
|
||||
|
||||
o = effskill(u2, SK_PERCEPTION, r);
|
||||
|
||||
if (o + 2 >= n) {
|
||||
return 0; /* entdeckt! */
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int can_contact(const region * r, const unit * u, const unit * u2) {
|
||||
|
||||
/* hier geht es nur um die belagerung von burgen */
|
||||
UNUSED_ARG(r);
|
||||
if (u->building == u2->building) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* unit u is trying to contact u2 - unasked for contact. wenn u oder u2
|
||||
* nicht in einer burg ist, oder die burg nicht belagert ist, ist
|
||||
* slipthru () == 1. ansonsten ist es nur 1, wenn man die belagerer */
|
||||
|
||||
if (slipthru(u->region, u, u->building) && slipthru(u->region, u2, u2->building)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return (alliedunit(u, u2->faction, HELP_GIVE));
|
||||
}
|
||||
|
||||
int contact_cmd(unit * u, order * ord)
|
||||
{
|
||||
unit *u2;
|
||||
|
@ -966,10 +911,6 @@ int contact_cmd(unit * u, order * ord)
|
|||
u2 = findunit(n);
|
||||
|
||||
if (u2 != NULL) {
|
||||
if (!can_contact(u->region, u, u2)) {
|
||||
cmistake(u, u->thisorder, 23, MSG_EVENT);
|
||||
return -1;
|
||||
}
|
||||
usetcontact(u, u2);
|
||||
}
|
||||
return 0;
|
||||
|
@ -994,13 +935,7 @@ int leave_cmd(unit * u, struct order *ord)
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
if (!slipthru(r, u, u->building)) {
|
||||
ADDMSG(&u->faction->msgs, msg_feedback(u, u->thisorder, "entrance_besieged",
|
||||
"building", u->building));
|
||||
}
|
||||
else {
|
||||
leave(u, true);
|
||||
}
|
||||
leave(u, true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1148,13 +1083,6 @@ int enter_building(unit * u, order * ord, int id, bool report)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
if (!slipthru(r, u, b)) {
|
||||
if (report) {
|
||||
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "entrance_besieged",
|
||||
"building", b));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (leave(u, 0)) {
|
||||
fset(u, UFL_ENTER);
|
||||
|
@ -3804,98 +3732,6 @@ int armedmen(const unit * u, bool siege_weapons)
|
|||
return n;
|
||||
}
|
||||
|
||||
int siege_cmd(unit * u, order * ord)
|
||||
{
|
||||
region *r = u->region;
|
||||
building *b;
|
||||
int d, pooled;
|
||||
int bewaffnete, katapultiere = 0;
|
||||
resource_type *rt_catapultammo = NULL;
|
||||
resource_type *rt_catapult = NULL;
|
||||
|
||||
init_order_depr(ord);
|
||||
b = getbuilding(r);
|
||||
|
||||
if (!b) {
|
||||
cmistake(u, ord, 31, MSG_BATTLE);
|
||||
return 31;
|
||||
}
|
||||
|
||||
if (!playerrace(u_race(u))) {
|
||||
/* keine Drachen, Illusionen, Untote etc */
|
||||
cmistake(u, ord, 166, MSG_BATTLE);
|
||||
return 166;
|
||||
}
|
||||
/* schaden durch katapulte */
|
||||
|
||||
rt_catapultammo = rt_find("catapultammo");
|
||||
rt_catapult = rt_find("catapult");
|
||||
|
||||
d = i_get(u->items, rt_catapult->itype);
|
||||
if (d > u->number) d = u->number;
|
||||
pooled = get_pooled(u, rt_catapultammo, GET_DEFAULT, d);
|
||||
if (d > pooled) d = pooled;
|
||||
if (effskill(u, SK_CATAPULT, 0) >= 1) {
|
||||
katapultiere = d;
|
||||
d *= effskill(u, SK_CATAPULT, 0);
|
||||
}
|
||||
else {
|
||||
d = 0;
|
||||
}
|
||||
|
||||
bewaffnete = armedmen(u, true);
|
||||
if (d == 0 && bewaffnete == 0) {
|
||||
/* abbruch, falls unbewaffnet oder unfaehig, katapulte zu benutzen */
|
||||
cmistake(u, ord, 80, MSG_EVENT);
|
||||
return 80;
|
||||
}
|
||||
|
||||
if (!is_guard(u)) {
|
||||
/* abbruch, wenn die einheit nicht vorher die region bewacht - als
|
||||
* warnung fuer alle anderen! */
|
||||
cmistake(u, ord, 81, MSG_EVENT);
|
||||
return 81;
|
||||
}
|
||||
/* einheit und burg markieren - spart zeit beim behandeln der einheiten
|
||||
* in der burg, falls die burg auch markiert ist und nicht alle
|
||||
* einheiten wieder abgesucht werden muessen! */
|
||||
|
||||
usetsiege(u, b);
|
||||
if (katapultiere < bewaffnete) katapultiere = bewaffnete;
|
||||
building_add_siege(b, katapultiere);
|
||||
|
||||
/* definitiver schaden eingeschraenkt */
|
||||
if (d > b->size - 1) d = b->size - 1;
|
||||
|
||||
/* meldung, schaden anrichten */
|
||||
if (d && !curse_active(get_curse(b->attribs, &ct_magicwalls))) {
|
||||
b->size -= d;
|
||||
use_pooled(u, rt_catapultammo,
|
||||
GET_SLACK | GET_RESERVE | GET_POOLED_SLACK, d);
|
||||
/* send message to the entire region */
|
||||
ADDMSG(&r->msgs, msg_message("siege_catapults",
|
||||
"unit building destruction", u, b, d));
|
||||
}
|
||||
else {
|
||||
/* send message to the entire region */
|
||||
ADDMSG(&r->msgs, msg_message("siege", "unit building", u, b));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void do_siege(region * r)
|
||||
{
|
||||
if (fval(r->terrain, LAND_REGION)) {
|
||||
unit *u;
|
||||
|
||||
for (u = r->units; u; u = u->next) {
|
||||
if (getkeyword(u->thisorder) == K_BESIEGE) {
|
||||
siege_cmd(u, u->thisorder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void enter_1(region * r)
|
||||
{
|
||||
do_enter(r, 0);
|
||||
|
@ -3979,11 +3815,6 @@ void init_processor(void)
|
|||
p += 10;
|
||||
add_proc_global(p, do_battles, "Attackieren");
|
||||
|
||||
if (!keyword_disabled(K_BESIEGE)) {
|
||||
p += 10;
|
||||
add_proc_region(p, do_siege, "Belagern");
|
||||
}
|
||||
|
||||
p += 10; /* can't allow reserve before siege (weapons) */
|
||||
add_proc_region(p, enter_1, "Betreten (3. Versuch)"); /* to claim a castle after a victory and to be able to DESTROY it in the same turn */
|
||||
if (config_get_int("rules.reserve.twophase", 0)) {
|
||||
|
@ -4201,7 +4032,7 @@ cansee(const faction * f, const region * r, const unit * u, int modifier)
|
|||
}
|
||||
|
||||
/* simple visibility, just gotta have a viewer in the region to see 'em */
|
||||
if (leftship(u) || is_guard(u) || usiege(u) || u->building || u->ship) {
|
||||
if (leftship(u) || is_guard(u) || u->building || u->ship) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -4239,7 +4070,7 @@ bool cansee_unit(const unit * u, const unit * target, int modifier)
|
|||
else {
|
||||
int n, rings;
|
||||
|
||||
if (is_guard(target) || usiege(target) || target->building
|
||||
if (is_guard(target) || target->building
|
||||
|| target->ship) {
|
||||
return true;
|
||||
}
|
||||
|
@ -4282,7 +4113,7 @@ cansee_durchgezogen(const faction * f, const region * r, const unit * u,
|
|||
else {
|
||||
int rings, n;
|
||||
|
||||
if (is_guard(u) || usiege(u) || u->building || u->ship) {
|
||||
if (is_guard(u) || u->building || u->ship) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,6 @@ extern "C" {
|
|||
bool renamed_building(const struct building * b);
|
||||
int rename_building(struct unit * u, struct order * ord, struct building * b, const char *name);
|
||||
void get_food(struct region * r);
|
||||
int can_contact(const struct region *r, const struct unit *u, const struct unit *u2);
|
||||
|
||||
int enter_building(struct unit *u, struct order *ord, int id, bool report);
|
||||
int enter_ship(struct unit *u, struct order *ord, int id, bool report);
|
||||
|
@ -82,7 +81,6 @@ extern "C" {
|
|||
int quit_cmd(struct unit *u, struct order *ord);
|
||||
int name_cmd(struct unit *u, struct order *ord);
|
||||
int use_cmd(struct unit *u, struct order *ord);
|
||||
int siege_cmd(struct unit *u, struct order *ord);
|
||||
int leave_cmd(struct unit *u, struct order *ord);
|
||||
int pay_cmd(struct unit *u, struct order *ord);
|
||||
int promotion_cmd(struct unit *u, struct order *ord);
|
||||
|
|
|
@ -95,38 +95,6 @@ static void test_rename_building_twice(CuTest * tc)
|
|||
test_teardown();
|
||||
}
|
||||
|
||||
static void test_contact(CuTest * tc)
|
||||
{
|
||||
region *r;
|
||||
unit *u1, *u2, *u3;
|
||||
building *b;
|
||||
building_type *btype;
|
||||
ally *al;
|
||||
|
||||
test_setup();
|
||||
test_create_locale();
|
||||
btype = test_create_buildingtype("castle");
|
||||
r = test_create_region(0, 0, NULL);
|
||||
b = new_building(btype, r, default_locale);
|
||||
u1 = test_create_unit(test_create_faction(NULL), r);
|
||||
u2 = test_create_unit(test_create_faction(NULL), r);
|
||||
u3 = test_create_unit(test_create_faction(NULL), r);
|
||||
set_level(u3, SK_PERCEPTION, 2);
|
||||
usetsiege(u3, b);
|
||||
building_add_siege(b, 1);
|
||||
CuAssertIntEquals(tc, 1, building_get_siege(b));
|
||||
CuAssertIntEquals(tc, 1, can_contact(r, u1, u2));
|
||||
|
||||
u_set_building(u1, b);
|
||||
CuAssertIntEquals(tc, 0, can_contact(r, u1, u2));
|
||||
al = ally_add(&u1->faction->allies, u2->faction);
|
||||
al->status = HELP_ALL;
|
||||
CuAssertIntEquals(tc, HELP_GIVE, can_contact(r, u1, u2));
|
||||
u_set_building(u2, b);
|
||||
CuAssertIntEquals(tc, 1, can_contact(r, u1, u2));
|
||||
test_teardown();
|
||||
}
|
||||
|
||||
static void test_enter_building(CuTest * tc)
|
||||
{
|
||||
unit *u;
|
||||
|
@ -1833,7 +1801,6 @@ CuSuite *get_laws_suite(void)
|
|||
SUITE_ADD_TEST(suite, test_pay_cmd_must_be_owner);
|
||||
SUITE_ADD_TEST(suite, test_new_units);
|
||||
SUITE_ADD_TEST(suite, test_cannot_create_unit_above_limit);
|
||||
SUITE_ADD_TEST(suite, test_contact);
|
||||
SUITE_ADD_TEST(suite, test_enter_building);
|
||||
SUITE_ADD_TEST(suite, test_enter_ship);
|
||||
SUITE_ADD_TEST(suite, test_display_cmd);
|
||||
|
|
|
@ -21,7 +21,6 @@ module eressea {
|
|||
void process_movement @ movement(void); /* MOVE/FOLLOW/ROUTE */
|
||||
void process_use @ use(void); /* USE */
|
||||
void process_battle @ battle(void); /* ATTACK */
|
||||
void process_siege @ siege(void); /* SIEGE */
|
||||
void process_leave @ leave(void); /* LEAVE */
|
||||
void process_maintenance @ maintenance(void); /* PAY */
|
||||
void process_promote @ promote(void); /* PROMOTE */
|
||||
|
|
|
@ -435,30 +435,6 @@ static int tolua_process_eressea_process_battle00(lua_State* tolua_S)
|
|||
#endif
|
||||
}
|
||||
|
||||
/* function: process_siege */
|
||||
static int tolua_process_eressea_process_siege00(lua_State* tolua_S)
|
||||
{
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_Error tolua_err;
|
||||
if (
|
||||
!tolua_isnoobj(tolua_S,1,&tolua_err)
|
||||
)
|
||||
goto tolua_lerror;
|
||||
else
|
||||
#endif
|
||||
{
|
||||
{
|
||||
process_siege();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
#ifndef TOLUA_RELEASE
|
||||
tolua_lerror:
|
||||
tolua_error(tolua_S,"#ferror in function 'siege'.",&tolua_err);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* function: process_leave */
|
||||
static int tolua_process_eressea_process_leave00(lua_State* tolua_S)
|
||||
{
|
||||
|
@ -993,7 +969,6 @@ LUALIB_API int luaopen_process (lua_State* tolua_S)
|
|||
tolua_function(tolua_S,"movement",tolua_process_eressea_process_movement00);
|
||||
tolua_function(tolua_S,"use",tolua_process_eressea_process_use00);
|
||||
tolua_function(tolua_S,"battle",tolua_process_eressea_process_battle00);
|
||||
tolua_function(tolua_S,"siege",tolua_process_eressea_process_siege00);
|
||||
tolua_function(tolua_S,"leave",tolua_process_eressea_process_leave00);
|
||||
tolua_function(tolua_S,"maintenance",tolua_process_eressea_process_maintenance00);
|
||||
tolua_function(tolua_S,"promote",tolua_process_eressea_process_promote00);
|
||||
|
|
12
src/report.c
12
src/report.c
|
@ -1821,7 +1821,6 @@ nr_building(struct stream *out, const region *r, const building *b, const factio
|
|||
const char *name, *bname, *billusion = NULL;
|
||||
const struct locale *lang;
|
||||
char buffer[8192];
|
||||
message *msg;
|
||||
size_t size;
|
||||
sbstring sbs;
|
||||
|
||||
|
@ -1853,17 +1852,6 @@ nr_building(struct stream *out, const region *r, const building *b, const factio
|
|||
sbs_strcat(&sbs, LOC(lang, "nr_building_inprogress"));
|
||||
}
|
||||
|
||||
if (!keyword_disabled(K_BESIEGE) && r->seen.mode >= seen_lighthouse) {
|
||||
int s = building_get_siege(b);
|
||||
if (s > 0) {
|
||||
msg = msg_message("nr_building_besieged", "soldiers diff", s,
|
||||
s - b->size * SIEGEFACTOR);
|
||||
size = nr_render(msg, lang, sbs.end, sbs.size - (sbs.end - sbs.begin), f);
|
||||
sbs.end += size;
|
||||
|
||||
msg_release(msg);
|
||||
}
|
||||
}
|
||||
i = 0;
|
||||
if (b->display && b->display[0]) {
|
||||
sbs_strcat(&sbs, "; ");
|
||||
|
|
|
@ -683,7 +683,6 @@ bufunit(const faction * f, const unit * u, seen_mode mode, char *buf,
|
|||
int i, dh;
|
||||
int getarnt = fval(u, UFL_ANON_FACTION);
|
||||
const char *pzTmp, *str;
|
||||
building *b;
|
||||
bool isbattle = (bool)(mode == seen_battle);
|
||||
item *itm, *show = NULL;
|
||||
faction *fv;
|
||||
|
@ -807,11 +806,6 @@ bufunit(const faction * f, const unit * u, seen_mode mode, char *buf,
|
|||
bufp = STRLCPY(bufp, LOC(lang, "unit_guards"), size);
|
||||
}
|
||||
|
||||
if ((b = usiege(u)) != NULL) {
|
||||
bufp = STRLCPY(bufp, ", belagert ", size);
|
||||
bufp = STRLCPY(bufp, buildingname(b), size);
|
||||
}
|
||||
|
||||
dh = 0;
|
||||
if (u->faction == f) {
|
||||
skill *sv;
|
||||
|
|
|
@ -137,10 +137,6 @@ int spy_cmd(unit * u, struct order *ord)
|
|||
msg_feedback(u, u->thisorder, "feedback_unit_not_found", ""));
|
||||
return 0;
|
||||
}
|
||||
if (!can_contact(r, u, target)) {
|
||||
cmistake(u, u->thisorder, 24, MSG_EVENT);
|
||||
return 0;
|
||||
}
|
||||
if (effskill(u, SK_SPY, 0) < 1) {
|
||||
cmistake(u, u->thisorder, 39, MSG_EVENT);
|
||||
return 0;
|
||||
|
|
|
@ -198,17 +198,17 @@ static void test_setstealth_cmd(CuTest *tc) {
|
|||
test_setup();
|
||||
u = test_create_unit(test_create_faction(NULL), test_create_plain(0, 0));
|
||||
lang = u->faction->locale;
|
||||
u->flags = UFL_ANON_FACTION | UFL_SIEGE;
|
||||
u->flags = UFL_ANON_FACTION | UFL_DEFENDER;
|
||||
u->thisorder = create_order(K_SETSTEALTH, lang, "%s %s",
|
||||
LOC(lang, parameters[P_FACTION]),
|
||||
LOC(lang, parameters[P_NOT]));
|
||||
setstealth_cmd(u, u->thisorder);
|
||||
CuAssertIntEquals(tc, UFL_SIEGE, u->flags);
|
||||
CuAssertIntEquals(tc, UFL_DEFENDER, u->flags);
|
||||
free_order(u->thisorder);
|
||||
u->thisorder = create_order(K_SETSTEALTH, lang, "%s",
|
||||
LOC(lang, parameters[P_FACTION]));
|
||||
setstealth_cmd(u, u->thisorder);
|
||||
CuAssertIntEquals(tc, UFL_SIEGE | UFL_ANON_FACTION, u->flags);
|
||||
CuAssertIntEquals(tc, UFL_DEFENDER | UFL_ANON_FACTION, u->flags);
|
||||
test_teardown();
|
||||
}
|
||||
|
||||
|
|
|
@ -188,10 +188,6 @@ void steal_cmd(unit * u, struct order *ord, econ_request ** stealorders)
|
|||
}
|
||||
|
||||
assert(u->region == u2->region);
|
||||
if (!can_contact(r, u, u2)) {
|
||||
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "error60", ""));
|
||||
return;
|
||||
}
|
||||
|
||||
effsk = effskill(u, SK_STEALTH, 0);
|
||||
n = effsk - max_skill(r, f, SK_PERCEPTION);
|
||||
|
|
Loading…
Reference in a new issue