2001-01-25 10:37:55 +01:00
|
|
|
|
/* vi: set ts=2:
|
|
|
|
|
*
|
|
|
|
|
* Eressea PB(E)M host Copyright (C) 1998-2000
|
|
|
|
|
* 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)
|
|
|
|
|
*
|
|
|
|
|
* based on:
|
|
|
|
|
*
|
|
|
|
|
* Atlantis v1.0 13 September 1993 Copyright 1993 by Russell Wallace
|
|
|
|
|
* Atlantis v1.7 Copyright 1996 by Alex Schr<EFBFBD>der
|
|
|
|
|
*
|
|
|
|
|
* This program may not be used, modified or distributed without
|
|
|
|
|
* prior permission by the authors of Eressea.
|
|
|
|
|
* This program may not be sold or used commercially without prior written
|
|
|
|
|
* permission from the authors.
|
|
|
|
|
*/
|
|
|
|
|
#include <config.h>
|
|
|
|
|
#include "eressea.h"
|
|
|
|
|
#include "race.h"
|
|
|
|
|
|
2001-02-03 14:45:35 +01:00
|
|
|
|
#include <races/zombies.h>
|
|
|
|
|
#include <races/dragons.h>
|
|
|
|
|
#include <races/illusion.h>
|
|
|
|
|
|
2001-01-25 10:37:55 +01:00
|
|
|
|
#include "alchemy.h"
|
2001-02-03 14:45:35 +01:00
|
|
|
|
#include "build.h"
|
|
|
|
|
#include "building.h"
|
2001-01-25 10:37:55 +01:00
|
|
|
|
#include "faction.h"
|
2001-02-03 14:45:35 +01:00
|
|
|
|
#include "item.h"
|
2001-01-25 10:37:55 +01:00
|
|
|
|
#include "magic.h"
|
2001-02-03 14:45:35 +01:00
|
|
|
|
#include "region.h"
|
|
|
|
|
#include "spell.h"
|
|
|
|
|
#include "unit.h"
|
2001-01-25 10:37:55 +01:00
|
|
|
|
#include "names.h"
|
|
|
|
|
#include "pathfinder.h"
|
2001-02-03 14:45:35 +01:00
|
|
|
|
#include "ship.h"
|
|
|
|
|
#include "skill.h"
|
2001-02-28 19:25:25 +01:00
|
|
|
|
#include "karma.h"
|
2001-09-05 21:40:40 +02:00
|
|
|
|
#include "group.h"
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* util includes */
|
|
|
|
|
#include <attrib.h>
|
|
|
|
|
|
2001-09-05 21:40:40 +02:00
|
|
|
|
/* attrib includes */
|
|
|
|
|
#include <attributes/raceprefix.h>
|
|
|
|
|
#include <attributes/synonym.h>
|
|
|
|
|
|
2001-01-25 10:37:55 +01:00
|
|
|
|
/* libc includes */
|
|
|
|
|
#include <stdio.h>
|
2001-04-01 08:58:45 +02:00
|
|
|
|
#include <stdlib.h>
|
2001-01-25 10:37:55 +01:00
|
|
|
|
#include <math.h>
|
2001-09-05 21:40:40 +02:00
|
|
|
|
#include <ctype.h>
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* TODO: Tragkraft in die Struktur */
|
|
|
|
|
|
|
|
|
|
/* struct racedata{
|
|
|
|
|
* magres, maxaura, regaura,
|
|
|
|
|
* {4 namen},
|
|
|
|
|
* heimat, rekr.kost, unterhalt, splitsize, weight, speed
|
|
|
|
|
* hitpoints, damage, armor, at_default, df_default, at_bonus, df_bonus,
|
|
|
|
|
* attack[6]
|
|
|
|
|
* Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
* Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK
|
|
|
|
|
* nonplayer,use_armor,
|
|
|
|
|
* flags,
|
|
|
|
|
* battle_flags,
|
|
|
|
|
* ec(onomic)_flags,
|
|
|
|
|
* generate_name,
|
|
|
|
|
* familiars
|
|
|
|
|
* */
|
|
|
|
|
|
2001-02-14 09:35:12 +01:00
|
|
|
|
/* at_default, df_default
|
|
|
|
|
* Angriffs- bzw. Verteidigungswert von Unbewaffneten dieser Rasse, die
|
|
|
|
|
* nicht waffenlosen Kampf k<EFBFBD>nnen. */
|
|
|
|
|
/* at_bonus, df_bonus
|
|
|
|
|
* Angriffs- bzw. Verteidigungsbonus auf den Kampfskill, der zus<EFBFBD>tzlich
|
|
|
|
|
* zum Talentwert gilt. */
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/** dragon movement **/
|
|
|
|
|
boolean
|
|
|
|
|
allowed_dragon(const region * src, const region * target)
|
|
|
|
|
{
|
|
|
|
|
if (src->terrain==T_GLACIER && target->terrain == T_OCEAN) return false;
|
|
|
|
|
return allowed_fly(src, target);
|
|
|
|
|
}
|
|
|
|
|
|
2001-09-05 21:40:40 +02:00
|
|
|
|
const char *race_prefixes[] = {
|
|
|
|
|
"prefix_Dunkel",
|
|
|
|
|
"prefix_Licht",
|
|
|
|
|
"prefix_Klein",
|
|
|
|
|
"prefix_Hoch",
|
|
|
|
|
"prefix_Huegel",
|
|
|
|
|
"prefix_Berg",
|
|
|
|
|
"prefix_Wald",
|
|
|
|
|
"prefix_Sumpf",
|
|
|
|
|
"prefix_Schnee",
|
|
|
|
|
"prefix_Sonnen",
|
|
|
|
|
"prefix_Mond",
|
|
|
|
|
"prefix_See",
|
|
|
|
|
"prefix_Tal",
|
|
|
|
|
"prefix_Schatten",
|
|
|
|
|
"prefix_Hoehlen",
|
|
|
|
|
"prefix_Blut",
|
|
|
|
|
"prefix_Wild",
|
|
|
|
|
"prefix_Chaos",
|
|
|
|
|
"prefix_Nacht",
|
|
|
|
|
"prefix_Nebel",
|
|
|
|
|
"prefix_Grau",
|
|
|
|
|
"prefix_Frost",
|
|
|
|
|
"prefix_Finster",
|
|
|
|
|
"prefix_Duester",
|
|
|
|
|
NULL
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* Die Bezeichnungen d<>rfen wegen der Art des Speicherns keine
|
|
|
|
|
* Leerzeichen enthalten! */
|
|
|
|
|
|
|
|
|
|
const struct race_syn race_synonyms[] = {
|
|
|
|
|
{1, {"Fee", "Feen", "Feen", "Feen"}},
|
|
|
|
|
{2, {"Gnoll", "Gnolle", "Gnollen", "Gnoll"}},
|
|
|
|
|
{-1, {NULL, NULL, NULL, NULL}}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* "den Zwergen", "Halblingsparteien" */
|
|
|
|
|
|
2001-01-25 10:37:55 +01:00
|
|
|
|
struct racedata race[MAXRACES] =
|
|
|
|
|
{
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
|
|
|
|
{"Zwerg", "Zwerge", "Zwergen", "Zwergen"},
|
|
|
|
|
|
|
|
|
|
/* Magieresistenz (0=Normal) */
|
|
|
|
|
0.05,
|
|
|
|
|
|
|
|
|
|
/* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
1.00,
|
|
|
|
|
|
|
|
|
|
/* Auraregeneration (1=Durchschnitt) */
|
|
|
|
|
0.50,
|
|
|
|
|
|
|
|
|
|
/* Rekrutierungskosten, Unterhalt pro Runde */
|
|
|
|
|
90, 10,
|
|
|
|
|
|
|
|
|
|
/* Splitsize */
|
|
|
|
|
10000,
|
|
|
|
|
|
|
|
|
|
/* Gewicht */
|
|
|
|
|
1000,
|
|
|
|
|
|
|
|
|
|
/* Multiplikator Geschwindigkeit */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Trefferpunkte */
|
|
|
|
|
24,
|
|
|
|
|
|
|
|
|
|
/* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
"1d5",
|
|
|
|
|
|
|
|
|
|
/* Nat<61>rliche R<>stung */
|
|
|
|
|
0,
|
|
|
|
|
|
|
|
|
|
/* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
-2, -2,
|
|
|
|
|
|
|
|
|
|
/* Bonus Angriff, Verteidigung */
|
|
|
|
|
0, 0,
|
|
|
|
|
|
|
|
|
|
/* Angriffe */
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Talentboni
|
|
|
|
|
Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK */
|
|
|
|
|
{
|
|
|
|
|
0, 0, 2,-1, 2, 1,-1, 2, -2,-2,-2,-2, 2,-1, 1,-2,
|
|
|
|
|
0, 0, 2, 2, 0,-1,-1, 2, 0, 0, 1, 0, -99
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Nonplayer (bei Gelegenheit entfernen) */
|
|
|
|
|
false,
|
|
|
|
|
|
|
|
|
|
/* Flags */
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Battle_flags */
|
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
|
|
|
|
|
/* Economic-Flags */
|
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
|
|
|
|
|
|
|
|
|
/* Vertraute f<>r den Zauber
|
|
|
|
|
(Generisch, Illaun, Tybied, Cerddor, Gwyrrd, Draig) */
|
|
|
|
|
{RC_TUNNELWORM, RC_EAGLE, RC_OWL, RC_HOUSECAT, RC_WARG, RC_RAT}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
{"Elf", "Elfen", "Elfen", "Elfen"},
|
|
|
|
|
0.10, 1.00, 1.25,
|
|
|
|
|
130, 10, 10000, 1000, 1.0,
|
|
|
|
|
18, "1d5", 0, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-1, 0,-2, 2, -1, 0, 0,-2, 2, 1, 1, 0, -1,-1, 0,-1,
|
|
|
|
|
0, 0,-1,-1, 0, 1, 0, 0, 0, 1, 0, 0, -99
|
|
|
|
|
},
|
|
|
|
|
false,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
|
|
|
|
{RC_HOUSECAT, RC_FEY, RC_OWL, RC_NYMPH, RC_UNICORN, RC_IMP}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Ork", "Orks", "Orks", "Ork"},
|
|
|
|
|
-0.05, 1.00, 1.00,
|
|
|
|
|
50, 10, 10000, 1000, 1.0,
|
|
|
|
|
24, "1d5", 0, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
1, 0, 1, 0, 1,-3, 1, 0, -2,-1,-1, 0, 1,-1, 0,-1,
|
|
|
|
|
0,-1, 1, 0, 1, 0,-2, 2, -1, 0, 1, 0, -99
|
|
|
|
|
},
|
|
|
|
|
false,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
|
|
|
|
{RC_GOBLIN, RC_WRAITH, RC_IMP, RC_RAT, RC_WARG, RC_DAEMON}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Goblin", "Goblins", "Goblins", "Goblin"},
|
|
|
|
|
-0.05, 1.00, 1.00,
|
|
|
|
|
40, 10, 10000, 1000, 1.0,
|
2001-02-14 09:35:12 +01:00
|
|
|
|
16, "1d5", 0, -2, 0, 0, 0,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
1, 0, 1, 0, 1,-1, 0, 1, 0,-1, 0, 0, 0,-2, 0,-2,
|
|
|
|
|
0, 0, 0,-2, -2, 1,-1, 0, -1, 0, 0, 0, -99
|
|
|
|
|
},
|
|
|
|
|
false,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
|
|
|
|
{RC_RAT, RC_PSEUDODRAGON, RC_IMP, RC_RAT, RC_RAT, RC_IMP}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Mensch", "Menschen", "Menschen", "Menschen"},
|
|
|
|
|
0.00, 1.00, 1.00,
|
|
|
|
|
75, 10, 10000, 1000, 1.0,
|
|
|
|
|
20, "1d5", 0, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99
|
|
|
|
|
},
|
|
|
|
|
false,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
|
|
|
|
{RC_WARG, RC_DREAMCAT, RC_OWL, RC_OWL, RC_EAGLE, RC_IMP}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Troll", "Trolle", "Trollen", "Troll"},
|
|
|
|
|
0.10, 1.00, 1.00,
|
|
|
|
|
90, 10, 10000, 2000, 1.0,
|
|
|
|
|
30, "1d5+3", 1, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 2,-2, 2, 0, 0, 2, -1, 0,-1,-2, 2,-1, 1,-1,
|
|
|
|
|
0,-3, 2, 2, -1,-3,-1, 0, 0,-1, 1, 0, -99
|
|
|
|
|
},
|
|
|
|
|
false,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
|
|
|
|
{RC_TUNNELWORM, RC_RAT, RC_RAT, RC_EAGLE, RC_TUNNELWORM, RC_WARG}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"D<EFBFBD>mon", "D<EFBFBD>monen", "D<EFBFBD>monen", "D<EFBFBD>monen"},
|
|
|
|
|
0.15, 1.00, 1.25,
|
|
|
|
|
150, 10, 10000, 1000, 1.0,
|
|
|
|
|
50, "1d5", 2, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_DAZZLE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
2, 0, 0, 0, 0,-3, 1, 0, -3, 1,-3,-1, 0,-1, 1,-1,
|
|
|
|
|
1, 0, 0, 0, -1, 1,-3, 1, -2, 1, 1, 0, -99
|
|
|
|
|
},
|
|
|
|
|
false,
|
2001-04-01 08:58:45 +02:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM | RCF_SHAPESHIFT,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
2001-09-05 21:40:40 +02:00
|
|
|
|
ECF_REC_ETHEREAL | GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
{RC_IMP, RC_IMP, RC_WRAITH, RC_RAT, RC_WARG, RC_IMP}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Insekt", "Insekten", "Insekten", "Insekten"},
|
|
|
|
|
0.05, 1.00, 1.00,
|
|
|
|
|
80, 10, 10000, 1000, 1.0,
|
|
|
|
|
24, "1d5", 2, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 1, 1,-2, 2,-1, 1, 0, 1, 0,-3,-3, 2, 0,-1, 0,
|
|
|
|
|
1, 0, 0,-1, -1,-1,-2, 0, 0, 1, 0, 0, -99
|
|
|
|
|
},
|
|
|
|
|
false,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
|
|
|
|
{RC_WRAITH, RC_RAT, RC_OWL, RC_RAT, RC_TUNNELWORM, RC_IMP}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Halbling", "Halblinge", "Halblingen", "Halblings"},
|
|
|
|
|
0.05, 1.00, 1.00,
|
|
|
|
|
80, 10, 10000, 1000, 1.0,
|
|
|
|
|
18, "1d5", 0, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 1, 1,-1, 1, 2, 0,-1, 2, 0,-1,-1, 0,-1,-1,-2,
|
|
|
|
|
-1,1, 0, 1, 0, 1, 1, 0, 2, 1,-1, 0, -99
|
|
|
|
|
},
|
|
|
|
|
false,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
|
|
|
|
{RC_OWL, RC_RAT, RC_EAGLE, RC_PSEUDODRAGON, RC_EAGLE, RC_RAT}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Katze", "Katzen", "Katzen", "Katzen"},
|
|
|
|
|
0.00, 1.00, 1.00,
|
|
|
|
|
90, 10, 10000, 1000, 1.0,
|
|
|
|
|
20, "1d5", 0, -2, -2, 0, 1,
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-1,0,-2, 0, -1, 0, 0,-1, 1, 0, 0, 0, -1,-1, 0,-2,
|
|
|
|
|
0, 2,-1,-1, 0, 1, 0, 0, 0, 2, 1, 0, -99
|
|
|
|
|
},
|
|
|
|
|
false,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
|
|
|
|
{RC_HOUSECAT, RC_DREAMCAT, RC_HOUSECAT, RC_PSEUDODRAGON,
|
|
|
|
|
RC_TIGER, RC_HELLCAT}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Meermensch", "Meermenschen", "Meermenschen", "Meermenschen"},
|
|
|
|
|
0.00, 1.00, 1.00,
|
|
|
|
|
80, 10, 10000, 1000, 1.0,
|
|
|
|
|
20, "1d5", 0, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0,-2, 0, -1, 2, 0, 0, 0, 0, 0, 0, -1, 3, 0, 3,
|
|
|
|
|
0, 0, 0,-1, 0, 0, 0, 0, 0, 0, 0, 0, -99
|
|
|
|
|
},
|
|
|
|
|
false,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
|
|
|
|
{RC_OCEANTURTLE, RC_DOLPHIN, RC_OCEANTURTLE, RC_DOLPHIN,
|
|
|
|
|
RC_DOLPHIN, RC_DOLPHIN}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Untoter", "Untote", "Untoten", "Untoten"},
|
|
|
|
|
0.00, 1.00, 1.00,
|
|
|
|
|
2, 0, 20000, 1000, 1.0,
|
|
|
|
|
20, "1d7", 0, 0, 0, 1, 1,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d7"}, 0}, {AT_DAZZLE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SCAREPEASANTS|RCF_ATTACKRANDOM|RCF_MOVERANDOM|RCF_WALK|RCF_NOLEARN|RCF_NOTEACH|RCF_NOHEAL),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
(BF_EQUIPMENT | BF_MAGIC_EQUIPMENT),
|
|
|
|
|
CANGUARD,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
&untoten_name, &age_undead
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Illusion", "Illusionen", "Illusions", "Illusions"},
|
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
50, 0, 999999, 0, 1.0,
|
|
|
|
|
1, "1d1", 0, 0, 0, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
|
},
|
2001-02-03 14:45:35 +01:00
|
|
|
|
true, RCF_WALK|RCF_NOLEARN|RCF_NOTEACH|RCF_NOWEAPONS, 0, 0,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
NULL, &age_illusion
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Jungdrache", "Jungdrachen", "Jungdrachen", "Jungdrachen"},
|
|
|
|
|
0.50, 1.00, 1.00,
|
|
|
|
|
10000, 0, 6, 20000, 1.0,
|
|
|
|
|
300, "2d15", 4, 0, 0, 4, 4,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d30"}, 0}, {AT_NATURAL, {"1d30"}, 0}, {AT_NATURAL, {"1d30"}, 0},
|
|
|
|
|
{AT_SPELL, {(void *)SPL_FIREDRAGONODEM}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_KILLPEASANTS|RCF_SCAREPEASANTS|RCF_ATTACKRANDOM|RCF_LEARN|RCF_FLY|RCF_WALK|RCF_NOTEACH,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_MAGIC_EQUIPMENT,
|
2001-04-16 16:34:19 +02:00
|
|
|
|
GETITEM | CANGUARD,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
&drachen_name, &age_firedragon, &allowed_dragon
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Drache", "Drachen", "Drachen", "Drachen"},
|
|
|
|
|
0.70, 1.00, 2.00,
|
|
|
|
|
50000, 0, 2, 60000, 1.5,
|
|
|
|
|
900, "2d30", 6, 0, 0, 7, 7,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d20"}, 0}, {AT_NATURAL, {"2d20"}, 0}, {AT_NATURAL, {"3d30"}, 0},
|
|
|
|
|
{AT_SPELL, {(void *)SPL_DRAGONODEM}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 8, 0, 0, 0, 0, 5, 0, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
( RCF_KILLPEASANTS|RCF_SCAREPEASANTS|RCF_ATTACKRANDOM|RCF_LEARN|RCF_FLY|RCF_WALK|RCF_NOTEACH ),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
( BF_MAGIC_EQUIPMENT ),
|
2001-04-16 16:34:19 +02:00
|
|
|
|
GETITEM | CANGUARD,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
&drachen_name, &age_dragon, &allowed_dragon
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Wyrm", "Wyrme", "Wyrmen", "Wyrm"},
|
|
|
|
|
0.90, 1.00, 3.00,
|
|
|
|
|
250000, 0, 1, 180000, 1.0,
|
|
|
|
|
2700, "2d60", 8, 0, 0, 10, 10,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"3d20"}, 0}, {AT_NATURAL, {"3d20"}, 0}, {AT_NATURAL, {"5d30"}, 0},
|
|
|
|
|
{AT_SPELL, {(void *)SPL_WYRMODEM}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 12, 0, 0, 0, 0,10, 0, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
( RCF_KILLPEASANTS|RCF_SCAREPEASANTS|RCF_ATTACKRANDOM|RCF_LEARN|RCF_FLY|RCF_WALK|RCF_NOTEACH ),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
( BF_MAGIC_EQUIPMENT ),
|
2001-04-16 16:34:19 +02:00
|
|
|
|
GETITEM | CANGUARD,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
&drachen_name, NULL, &allowed_dragon
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Ent", "Ents", "Ents", "Ent"},
|
|
|
|
|
0.25, 1.00, 0.50,
|
|
|
|
|
5000, 0, 1000, 5000, 1.0,
|
|
|
|
|
50, "2d4+12", 4, 0, 0, 9, 7,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d12"}, 0}, {AT_NATURAL, {"2d12"}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
( RCF_SCAREPEASANTS | RCF_MOVERANDOM | RCF_LEARN | RCF_WALK | RCF_NOTEACH ),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
( BF_MAGIC_EQUIPMENT ),
|
|
|
|
|
CANGUARD,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Katzendrache", "Katzendrachen", "Katzendrachen", "Katzendrachen"},
|
|
|
|
|
0.90, 1.00, 1.00,
|
|
|
|
|
500000, 0, 1, 20000, 1.0,
|
|
|
|
|
20, "2d40", 0, 0, 0, 0, 50,
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{AT_NATURAL, {"2d40"}, 0}, {AT_NATURAL, {"2d40"}, 0}, {AT_NATURAL, {"2d40"}, 0},
|
|
|
|
|
{AT_NATURAL, {"2d40"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-04-01 08:58:45 +02:00
|
|
|
|
( RCF_FLY | RCF_WALK | RCF_NOTEACH | RCF_SHAPESHIFT ),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
{"Dracoid", "Dracoide", "Dracoiden", "Dracoiden"},
|
|
|
|
|
0.00, 1.00, 1.00,
|
|
|
|
|
50, 0, 10000, 1000, 1.0,
|
|
|
|
|
24, "1d5", 0, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d6"}, 0}, {AT_NATURAL, {"1d6"}, 0}, {AT_STANDARD, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_ATTACKRANDOM|RCF_MOVERANDOM|RCF_LEARN|RCF_WALK|RCF_NOTEACH,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GETITEM | CANGUARD,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
&dracoid_name, NULL
|
|
|
|
|
},
|
|
|
|
|
/* nur fuer den mapper: */
|
|
|
|
|
{
|
|
|
|
|
{"Spezial", "Spezial", "Spezial", "Spezial"},
|
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
0, 0, 1, 0, 0.0,
|
|
|
|
|
1, "1d4", 0, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
|
|
|
true, 0, 0, 0,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Zauber", "Zauber", "Zauber", "Zauber"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.00, 1.00, 0.10,
|
|
|
|
|
0, 0, 1, 0, 0.0,
|
|
|
|
|
1, "1d4", 0, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
|
|
|
true, 0, 0, 0,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* ende Spezialunits */
|
|
|
|
|
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Eisengolem", "Eisengolems", "Eisengolems", "Eisengolem"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.25, 1.00, 0.10,
|
|
|
|
|
5000, 0, 50, 10000, 1.0,
|
|
|
|
|
50, "2d10+4", 2, 0, 0, 4, 2,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d8+4"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_NOLEARN | RCF_NOTEACH, 0,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GIVEPERSON,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Steingolem", "Steingolems", "Steingolems", "Steingolem"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.25, 1.00, 0.10,
|
|
|
|
|
5000, 0, 50, 10000, 1.0,
|
|
|
|
|
60, "2d12+6", 4, 0, 0, 4, 2,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d10+4"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_NOLEARN | RCF_NOTEACH, 0,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GIVEPERSON,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Schattend<EFBFBD>mon", "Schattend<EFBFBD>monen", "Schattend<EFBFBD>monen", "Schattend<EFBFBD>mon"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.75, 1.00, 1.00,
|
|
|
|
|
5000, 0, 1000, 0, 1.0,
|
|
|
|
|
50, "2d4", 3, 0, 0, 8, 11,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d3"}, 0}, {AT_DRAIN_ST, {"1d1"}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_KILLPEASANTS|RCF_SCAREPEASANTS|RCF_ATTACKRANDOM|RCF_MOVERANDOM|RCF_LEARN|RCF_WALK|RCF_NOTEACH|RCF_DESERT,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_MAGIC_EQUIPMENT,
|
- Neue Messages fertig
Messages werden jetzt in einem anderen Meta-Format (message* of
message_type*) gespeichert, das man in beliebige Formate (CR oder NR)
rendern kann. crmessage.c und nrmessage.c sind die render-engines dafür.
Die Messagetypen werden in res/{de,en}/messages.xml gesammelt, ultimativ
kann das aber durchaus eine einzelne Datei sein. Die ist derzeit nicht
wirklich xml (Umlaute drin, keine Definitionsdatei), aber gut lesbar.
- make_message
Diese Funktion ersetzt new_message, und ist etwas einfacher in der Syntax:
make_message("dumb_mistake", "unit region command", u, r, cmd) erzeugt
eine neue Nachricht, die dann einfach mit add_message wie bisher an die
Nachrichtenliste gehängt werden kann.
TODO: Messages könnte man durchaus reference-counten, und in mehrere Listen
einfügen, solang sie a) mehrfachverwendet (Kampf!) und b) vom Betrachter
unabhängig sind. Das spart einigen Speicher.
- CR Version erhöht.
Weil die MESSAGETYPES Blocks anders sind als früher
- OFFENSIVE_DELAY
Verbietet Einheiten, deren Partei eine Reigon niht bewachen, den
Angriff in der Region, wenn sie sich in der Runde zuvor bewegt haben.
Status der letzten Runde wird in neuem Attribut at_moved gespeichert.
- SHORT_ATTACKS
ein define, das angibt ob Kämpfen grundsätzlich keine lange Aktion ist.
- XML Parser
xml.[hc] enthält einen XML-Parser, dem man ein plugin mit callbacks
übergibt, die nach dem Parsen eines tokens aufgerufen werden.
2001-04-12 19:21:57 +02:00
|
|
|
|
ECF_REC_ETHEREAL,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
&shadow_name, NULL,
|
|
|
|
|
},
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Schattenmeister", "Schattenmeister", "Schattenmeistern", "Schattenmeister"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.75, 1.00, 2.00,
|
|
|
|
|
50000, 0, 50, 0, 1.0,
|
|
|
|
|
150, "2d5", 4, 0, 0, 11, 13,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d4"}, 0}, {AT_DRAIN_EXP, {"2d30"}, 0}, {AT_DRAIN_ST, {"1d2"}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_KILLPEASANTS|RCF_SCAREPEASANTS|RCF_ATTACKRANDOM|RCF_MOVERANDOM|RCF_LEARN|RCF_WALK|RCF_NOTEACH|RCF_DESERT,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
BF_MAGIC_EQUIPMENT,
|
|
|
|
|
0,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
&shadow_name, NULL,
|
|
|
|
|
},
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Bergw<EFBFBD>chter", "Bergw<EFBFBD>chter", "Bergw<EFBFBD>chtern", "Bergw<EFBFBD>chter"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.50, 1.00, 0.50,
|
|
|
|
|
50000, 0, 1, 10000, 0.0,
|
|
|
|
|
1000, "2d40", 12, 0, 0, 6, 8,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d40"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
2001-04-01 08:58:45 +02:00
|
|
|
|
true, RCF_CANNOTMOVE|RCF_NOLEARN|RCF_NOTEACH|RCF_NOWEAPONS, 0,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Alp", "Alps", "Alps", "Alp"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.95, 1.00, 1.00,
|
|
|
|
|
50000, 0, 1, 0, 1.5,
|
|
|
|
|
20, "1d4", 2, 0, 0, 2, 20,
|
|
|
|
|
{
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SEEKTARGET|RCF_FLY|RCF_WALK|RCF_NOLEARN|RCF_NOTEACH),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0,
|
|
|
|
|
0,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Kr<EFBFBD>te", "Kr<EFBFBD>ten", "Kr<EFBFBD>ten", "Kr<EFBFBD>ten"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.20, 1.00, 1.00,
|
|
|
|
|
50, 0, 1, 1, 1.0,
|
|
|
|
|
10, "1d2", 0, -2, -2, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d2"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-10,-10,-10,-10, -10,-10,-10,-10, -10,-10,-10,-10, -10,-10,-10,-10,
|
|
|
|
|
-10,-10,-10,-10, -10, +2,-10,-10, -10,-10,-10,-10, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_LEARN|RCF_ATTACKRANDOM|RCF_CANNOTMOVE,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0,
|
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Hirnt<EFBFBD>ter", "Hirnt<EFBFBD>ter", "Hirnt<EFBFBD>ter", "Hirnt<EFBFBD>ter"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.90, 1.00, 1.00,
|
|
|
|
|
50000, 0, 500, 1, 1.0,
|
|
|
|
|
20, "0d0", 1, 0, 0, 6, 10,
|
|
|
|
|
{
|
|
|
|
|
{AT_DRAIN_EXP, {"3d15"}, 0}, {AT_DRAIN_ST, {"1d1"}, 0}, {AT_NATURAL, {"1d1"}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
( RCF_KILLPEASANTS|RCF_SCAREPEASANTS|RCF_ATTACKRANDOM|RCF_MOVERANDOM|RCF_LEARN|RCF_FLY|RCF_WALK|RCF_NOTEACH),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
( BF_INV_NONMAGIC),
|
|
|
|
|
CANGUARD,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Bauer", "Bauern", "Bauern", "Bauern"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.00, 1.00, 1.00,
|
|
|
|
|
50, 0, 10000, 10, 1.0,
|
|
|
|
|
20, "1d6", 0, 0, 0, 0, 0,
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_CANNOTMOVE|RCF_NOTEACH,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
( BF_EQUIPMENT | BF_MAGIC_EQUIPMENT ),
|
|
|
|
|
CANGUARD,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Wolf", "W<EFBFBD>lfe", "W<EFBFBD>lfen", "Wolfs"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
50, 0, 5000, 5, 1.0,
|
|
|
|
|
20, "2d4", 0, 0, 0, 3, 1,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d4"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_NOTEACH), (0), GIVEPERSON,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/*************************************************************/
|
|
|
|
|
/* Vertraute ! */
|
|
|
|
|
/*************************************************************/
|
|
|
|
|
/* RC_HOUSECAT */
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Luchs", "Luchse", "Luchsen", "Luchs"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
50, 0, 99999, 5, 1.0,
|
|
|
|
|
20, "2d3", 0, 0, 0, 4, 5,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d3"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, 1, 0, 1,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 3,-99,-99, -99, 3,-99,-99, -99, 4,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_TUNNELWORM */
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Tunnelwurm", "Tunnelw<EFBFBD>rmer", "Tunnelw<EFBFBD>rmern", "Tunnelwurm"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.80, 0.00, 0.00,
|
|
|
|
|
50, 0, 99999, 30000, 1.0,
|
|
|
|
|
300, "3d20", 6, 0, 0, 6, 1,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"3d20"}, 0}, {AT_STRUCTURAL, {"1d10"}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99, 50,-99, -99,-99, 50,-99, -99, 0,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99,-99, 50,-99, -99,-99,-99,-99, -99,-99,-99, 2, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_SCAREPEASANTS|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_EAGLE */
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Adler", "Adler", "Adlern", "Adler"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
50, 0, 9999, 5, 1.5,
|
|
|
|
|
15, "2d3", 0, 0, 0, 6, 2,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d3"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 0,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 0,-99,-99, -99,-99,-99,-99, -99, 2,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_FLY|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_RAT */
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Ratte", "Ratten", "Ratten", "Ratten"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
50, 0, 9999, 1, 1.0,
|
|
|
|
|
5, "1d2", 0, 0, 0, 1, 1,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d2"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 0,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 5,-99,-99, -99, 4,-99,-99, -99, 2,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_PSEUDODRAGON */
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Singdrache", "Singdrachen", "Singdrachen", "Singdrachen"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.99, 1.00, 1.00,
|
|
|
|
|
50, 0, 9999, 10, 1.5,
|
|
|
|
|
40, "2d4", 1, 0, 0, 3, 1,
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{AT_NATURAL, {"2d4"}, 0}, {AT_NATURAL, {"2d4"}, 0}, {AT_NATURAL, {"2d4"}, 0},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
{AT_SPELL, {(void*)SPL_FIREDRAGONODEM}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 1,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 0,-99,-99, -99, 0,-99,-99, -99, 0,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_FLY|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_NYMPH */
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Nymphe", "Nymphen", "Nymphen", "Nymphen"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.90, 1.00, 1.50,
|
|
|
|
|
50, 0, 9999, 10, 1.0,
|
|
|
|
|
15, "1d4", 0, 0, 0, 3, 1,
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_DRAIN_EXP, {"2d20"}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0,-99, 2, -99,-2,-99,-99, 4, 1, 5, 5, -2,-99, 0,-2,
|
|
|
|
|
0, 2,-99,-99, -2, 3, 10, -2, -2, 2,-2,-1, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_NOTEACH),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
(BF_EQUIPMENT|BF_MAGIC_EQUIPMENT),
|
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_UNICORN */
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Einhorn", "Einh<EFBFBD>rner", "Einh<EFBFBD>rnern", "Einhorn"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.90, 1.50, 1.50,
|
|
|
|
|
50, 0, 9999, 50, 2.0,
|
|
|
|
|
40, "2d4", 0, 0, 0, 6, 4,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"3d12"}, 0}, {AT_NATURAL, {"2d4"}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 2,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 0,-99,-99, 0, 4,-99,-99, -99, 5,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_WARG */
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Warg", "Warge", "Wargen", "Warg"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
50, 0, 5000, 5, 1.0,
|
|
|
|
|
25, "2d6", 0, 0, 0, 6, 3,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d6"}, 0}, {AT_NATURAL, {"1d4"}, 0}, {AT_NATURAL, {"1d4"}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 0,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 0,-99,-99, 0, 0,-99,-99, -99, 2,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_SCAREPEASANTS|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_WRAITH */
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Geist", "Geister", "Geistern", "Geister"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.80, 0.50, 0.10,
|
|
|
|
|
50, 0, 5000, 5, 1.0,
|
|
|
|
|
30, "2d6", 5, 0, 0, 5, 8,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d5"}, 0}, {AT_NATURAL, {"1d5"}, 0}, {AT_STANDARD, {NULL}, 0},
|
|
|
|
|
{AT_DRAIN_EXP, {"2d30"}, 0}, {AT_DRAIN_ST, {"1d1"}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 1,-99, -2, -99,-99, 0,-99,
|
|
|
|
|
0, 0,-99,-99, -99, 0,-99,-99, -99, 0,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_FLY|RCF_SCAREPEASANTS|RCF_NOTEACH),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
(BF_EQUIPMENT|BF_MAGIC_EQUIPMENT|BF_INV_NONMAGIC),
|
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_IMP */
|
|
|
|
|
{
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Teufelchen", "Teufelchen", "Teufelchen", "Teufelchen-"},
|
2001-01-25 10:37:55 +01:00
|
|
|
|
0.50, 1.00, 0.00,
|
|
|
|
|
50, 0, 5000, 5, 1.0,
|
|
|
|
|
10, "1d4", 1, 0, 0, 5, 4,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d4"}, 0}, {AT_NATURAL, {"1d4"}, 0}, {AT_STANDARD, {NULL}, 0},
|
|
|
|
|
{AT_SPELL, {(void*)SPL_FIREDRAGONODEM}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 1,-99, -1, -99,-99, 0,-99,
|
|
|
|
|
0, 1,-99,-99, -99, 1,-99,-99, -99, 1, 1, 0, 0
|
|
|
|
|
},
|
2001-02-03 14:45:35 +01:00
|
|
|
|
true, (RCF_FLY|RCF_WALK|RCF_NOTEACH), (BF_EQUIPMENT|BF_MAGIC_EQUIPMENT),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_DREAMCAT */
|
|
|
|
|
{
|
|
|
|
|
{"Traumkatze", "Traumkatzen", "Traumkatzen", NULL},
|
|
|
|
|
0.50, 1.00, 1.00,
|
|
|
|
|
50, 0, 5000, 5, 1.0,
|
|
|
|
|
10, "1d5", 0, 0, 0, 5, 6,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d5"}, 0}, {AT_NATURAL, {"1d5"}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 1,-99,-99, -99,-99, 0,-99,
|
|
|
|
|
0, 1,-99,-99, -99, 1,-99,-99, -99, 1, 1, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_FLY|RCF_WALK|RCF_NOTEACH), (BF_INV_NONMAGIC),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_FEY */
|
|
|
|
|
{
|
|
|
|
|
{"Fee", "Feen", "Feen", NULL},
|
|
|
|
|
0.80, 1.00, 1.50,
|
|
|
|
|
50, 0, 5000, 5, 1.0,
|
|
|
|
|
6, "1d3", 0, 0, 0, 6, 14,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d3"}, 0}, {AT_NATURAL, {"1d3"}, 0}, {AT_NATURAL, {"1d3"}, 0},
|
|
|
|
|
{AT_NATURAL, {"1d3"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 1,-99, -1, -99,-99, -1,-99,
|
|
|
|
|
-1, 2,-99,-99, -99, 5,-99,-99, -99, 2,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_FLY|RCF_WALK|RCF_NOTEACH), (BF_EQUIPMENT|BF_MAGIC_EQUIPMENT),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_OWL */
|
|
|
|
|
{
|
|
|
|
|
{"Eule", "Eulen", "Eulen", NULL},
|
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
50, 0, 5000, 5, 1.0,
|
|
|
|
|
9, "1d4", 0, 0, 0, 2, 4,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d4"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 0,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 1,-99,-99, -99, 1,-99,-99, -99, 5,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_FLY|RCF_WALK|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_HELLCAT */
|
|
|
|
|
{
|
|
|
|
|
{"H<EFBFBD>llenkatze", "H<EFBFBD>llenkatzen", "H<EFBFBD>llenkatzen", NULL},
|
|
|
|
|
0.50, 0.00, 0.00,
|
|
|
|
|
50, 0, 5000, 5, 1.0,
|
|
|
|
|
40, "2d6", 0, 0, 0, 6, 4,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d6"}, 0}, {AT_NATURAL, {"1d6"}, 0}, {AT_NATURAL, {"1d6"}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 0,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 0,-99,-99, 0, 0,-99,-99, -99, 1,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_NOTEACH), (RCF_SCAREPEASANTS),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_TIGER */
|
|
|
|
|
{
|
|
|
|
|
{"Tiger", "Tiger", "Tigern", NULL},
|
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
50, 0, 5000, 5, 1.0,
|
|
|
|
|
30, "2d6", 0, 0, 0, 6, 3,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d6"}, 0}, {AT_NATURAL, {"1d6"}, 0}, {AT_NATURAL, {"1d6"}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 0,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 0,-99,-99, 0, 0,-99,-99, -99, 1,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_DOLPHIN */
|
|
|
|
|
{
|
|
|
|
|
{"Delphin", "Delphine", "Delphinen", NULL},
|
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
50, 0, 5000, 5, 2.0,
|
|
|
|
|
24, "1d6", 0, 0, 0, 5, 5,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d6"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 0,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 0,-99,-99, 0, 0,-99,-99, -99, 1,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SWIM|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_OCEANTURTLE */
|
|
|
|
|
{
|
|
|
|
|
{"Riesenschildkr<EFBFBD>te", "Riesenschildkr<EFBFBD>ten", "Riesenschildkr<EFBFBD>ten", NULL},
|
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
50, 0, 5000, 5, 1.0,
|
|
|
|
|
900, "2d50", 7, 0, 0, 10, 5,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d50"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 0,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 0,-99,-99, 0,-99,-99,-99, -99, 1,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SWIM|RCF_WALK|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
}, /* RC_KRAKEN */
|
|
|
|
|
{
|
|
|
|
|
{"Krake", "Kraken", "Kraken", NULL},
|
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
50, 0, 5000, 5, 2.0,
|
|
|
|
|
300, "2d10", 0, 0, 0, 7, 7,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d10"}, 0}, {AT_NATURAL, {"1d10"}, 0}, {AT_NATURAL, {"1d10"}, 0},
|
|
|
|
|
{AT_NATURAL, {"1d10"}, 0}, {AT_NATURAL, {"1d10"}, 0}, {AT_NATURAL, {"1d10"}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99, 0,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
-99, 0,-99,-99, 0,-99,-99,-99, -99, 1,-99, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SWIM|RCF_NOTEACH), (0),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
GIVEITEM | GETITEM,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
/*************************************************************/
|
|
|
|
|
/* Ende Vertraute ! */
|
|
|
|
|
/*************************************************************/
|
|
|
|
|
|
|
|
|
|
/* RC_SEASERPENT */
|
|
|
|
|
{
|
|
|
|
|
{"Seeschlange", "Seeschlangen", "Seeschlangen", NULL},
|
|
|
|
|
0.50, 1.00, 1.00,
|
|
|
|
|
5000, 0, 6, 20000, 1.0,
|
|
|
|
|
600, "2d15", 3, 0, 0, 4, 4,
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"1d30"}, 0}, {AT_NATURAL, {"1d30"}, 0}, {AT_NATURAL, {"1d30"}, 0},
|
|
|
|
|
{AT_SPELL, {(void*)SPL_FIREDRAGONODEM}, 0}, {AT_STRUCTURAL, {"1d10"}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_KILLPEASANTS|RCF_SCAREPEASANTS|RCF_ATTACKRANDOM|RCF_LEARN|RCF_NOTEACH|RCF_SWIM|RCF_MOVERANDOM,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
(0),
|
2001-04-16 16:34:19 +02:00
|
|
|
|
GETITEM | CANGUARD,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
&drachen_name, NULL, &allowed_swim
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Schattenritter, nur tempor<6F>r f<>r einen Kampf. 1 Hitpoint, keine
|
|
|
|
|
* R<EFBFBD>stung, kein Angriff. */
|
|
|
|
|
{
|
|
|
|
|
{"Schattenritter", "Schattenritter", "Schattenrittern", NULL},
|
|
|
|
|
0.00, 0.00, 0.00,
|
|
|
|
|
5, 0, 20000, 1000, 1.0,
|
|
|
|
|
1, "1d1", 0, 0, 0, 1, 1,
|
|
|
|
|
{
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
|
},
|
|
|
|
|
true,
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SCAREPEASANTS|RCF_MOVERANDOM|RCF_WALK|RCF_NOLEARN|RCF_NOTEACH),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
(BF_NOBLOCK),
|
|
|
|
|
0,
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
|
|
|
|
{"Zentaur", "Zentauren", "Zentauren", "Zentauren"},
|
|
|
|
|
|
|
|
|
|
/* Magieresistenz (0=Normal) */
|
|
|
|
|
0.00,
|
|
|
|
|
|
|
|
|
|
/* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
0.75,
|
|
|
|
|
|
|
|
|
|
/* Auraregeneration (1=Durchschnitt) */
|
|
|
|
|
0.75,
|
|
|
|
|
|
|
|
|
|
/* Rekrutierungskosten, Unterhalt pro Runde */
|
|
|
|
|
100, 10,
|
|
|
|
|
|
|
|
|
|
/* Splitsize */
|
|
|
|
|
10000,
|
|
|
|
|
|
|
|
|
|
/* Gewicht */
|
|
|
|
|
5000,
|
|
|
|
|
|
|
|
|
|
/* Multiplikator Geschwindigkeit */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Trefferpunkte */
|
|
|
|
|
30,
|
|
|
|
|
|
|
|
|
|
/* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
"2d5",
|
|
|
|
|
|
|
|
|
|
/* Nat<61>rliche R<>stung */
|
|
|
|
|
0,
|
|
|
|
|
|
|
|
|
|
/* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
0, 0,
|
|
|
|
|
|
|
|
|
|
/* Bonus Angriff, Verteidigung */
|
|
|
|
|
0, 0,
|
|
|
|
|
|
|
|
|
|
/* Angriffe */
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Talentboni
|
|
|
|
|
Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
Sta,Spi,Stei,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK */
|
|
|
|
|
{
|
2001-04-01 08:58:45 +02:00
|
|
|
|
0, 1,-3, 1, -2, 1, 0,-2, 1, 0, 4, 0, -1,-4, 0,-4,
|
|
|
|
|
1,-1,-1, 0, 0,-1, 0, 1, 1, 0, 1, 0, 0
|
2001-01-25 10:37:55 +01:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Nonplayer (bei Gelegenheit entfernen) */
|
2001-04-01 08:58:45 +02:00
|
|
|
|
false,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Flags */
|
2001-02-03 14:45:35 +01:00
|
|
|
|
RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM | RCF_HORSE,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Battle_flags */
|
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
|
|
|
|
|
/* Economic-Flags */
|
- Neue Messages fertig
Messages werden jetzt in einem anderen Meta-Format (message* of
message_type*) gespeichert, das man in beliebige Formate (CR oder NR)
rendern kann. crmessage.c und nrmessage.c sind die render-engines dafür.
Die Messagetypen werden in res/{de,en}/messages.xml gesammelt, ultimativ
kann das aber durchaus eine einzelne Datei sein. Die ist derzeit nicht
wirklich xml (Umlaute drin, keine Definitionsdatei), aber gut lesbar.
- make_message
Diese Funktion ersetzt new_message, und ist etwas einfacher in der Syntax:
make_message("dumb_mistake", "unit region command", u, r, cmd) erzeugt
eine neue Nachricht, die dann einfach mit add_message wie bisher an die
Nachrichtenliste gehängt werden kann.
TODO: Messages könnte man durchaus reference-counten, und in mehrere Listen
einfügen, solang sie a) mehrfachverwendet (Kampf!) und b) vom Betrachter
unabhängig sind. Das spart einigen Speicher.
- CR Version erhöht.
Weil die MESSAGETYPES Blocks anders sind als früher
- OFFENSIVE_DELAY
Verbietet Einheiten, deren Partei eine Reigon niht bewachen, den
Angriff in der Region, wenn sie sich in der Runde zuvor bewegt haben.
Status der letzten Runde wird in neuem Attribut at_moved gespeichert.
- SHORT_ATTACKS
ein define, das angibt ob Kämpfen grundsätzlich keine lange Aktion ist.
- XML Parser
xml.[hc] enthält einen XML-Parser, dem man ein plugin mit callbacks
übergibt, die nach dem Parsen eines tokens aufgerufen werden.
2001-04-12 19:21:57 +02:00
|
|
|
|
GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM | ECF_REC_HORSES,
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Vertraute f<>r den Zauber
|
|
|
|
|
(Generisch, Illaun, Tybied, Cerddor, Gwyrrd, Draig) */
|
|
|
|
|
{RC_EAGLE, RC_FEY, RC_OWL, RC_UNICORN, RC_NYMPH, RC_IMP}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Skelette, einfachste Untotenart */
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
|
|
|
|
{"Skelett", "Skelette", "Skeletten", NULL},
|
|
|
|
|
|
|
|
|
|
/* Magieresistenz (0=Normal) */
|
|
|
|
|
0.10,
|
|
|
|
|
|
|
|
|
|
/* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Auraregeneration (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Rekrutierungskosten, Unterhalt pro Runde */
|
|
|
|
|
0, 0,
|
|
|
|
|
|
|
|
|
|
/* Splitsize */
|
|
|
|
|
10000,
|
|
|
|
|
|
|
|
|
|
/* Gewicht */
|
|
|
|
|
500,
|
|
|
|
|
|
|
|
|
|
/* Multiplikator Geschwindigkeit */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Trefferpunkte */
|
|
|
|
|
20,
|
|
|
|
|
|
|
|
|
|
/* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
"1d7",
|
|
|
|
|
|
|
|
|
|
/* Nat<61>rliche R<>stung */
|
|
|
|
|
1,
|
|
|
|
|
|
|
|
|
|
/* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
1, 1,
|
|
|
|
|
|
|
|
|
|
/* Bonus Angriff, Verteidigung */
|
|
|
|
|
6, 6,
|
|
|
|
|
|
|
|
|
|
/* Angriffe */
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Talentboni
|
|
|
|
|
Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK */
|
|
|
|
|
{
|
|
|
|
|
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0,
|
|
|
|
|
1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Nonplayer (bei Gelegenheit entfernen) */
|
|
|
|
|
true,
|
|
|
|
|
|
|
|
|
|
/* Flags */
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SCAREPEASANTS|RCF_KILLPEASANTS|RCF_ATTACKRANDOM|RCF_MOVERANDOM|RCF_WALK|RCF_NOLEARN|RCF_NOTEACH|RCF_NOHEAL),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Battle_flags */
|
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT | BF_RES_PIERCE | BF_RES_CUT,
|
|
|
|
|
|
|
|
|
|
/* Economic-Flags */
|
|
|
|
|
CANGUARD,
|
|
|
|
|
|
|
|
|
|
/* Vertraute f<>r den Zauber
|
|
|
|
|
(Generisch, Illaun, Tybied, Cerddor, Gwyrrd, Draig) */
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
|
|
|
|
|
/* char *(*generate_name) (unit *) */
|
|
|
|
|
&skeleton_name,
|
|
|
|
|
|
|
|
|
|
/* Altern, wenn u->age%age == 0 */
|
|
|
|
|
&age_skeleton,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Skelette, einfachste Untotenart */
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
|
|
|
|
{"Skelettherr", "Skelettherren", "Skelettherren", NULL},
|
|
|
|
|
|
|
|
|
|
/* Magieresistenz (0=Normal) */
|
|
|
|
|
0.30,
|
|
|
|
|
|
|
|
|
|
/* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Auraregeneration (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Rekrutierungskosten, Unterhalt pro Runde */
|
|
|
|
|
2, 0,
|
|
|
|
|
|
|
|
|
|
/* Splitsize */
|
|
|
|
|
10000,
|
|
|
|
|
|
|
|
|
|
/* Gewicht */
|
|
|
|
|
1000,
|
|
|
|
|
|
|
|
|
|
/* Multiplikator Geschwindigkeit */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Trefferpunkte */
|
|
|
|
|
60,
|
|
|
|
|
|
|
|
|
|
/* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
"1d7",
|
|
|
|
|
|
|
|
|
|
/* Nat<61>rliche R<>stung */
|
|
|
|
|
4,
|
|
|
|
|
|
|
|
|
|
/* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
6, 6,
|
|
|
|
|
|
|
|
|
|
/* Bonus Angriff, Verteidigung */
|
|
|
|
|
8, 8,
|
|
|
|
|
|
|
|
|
|
/* Angriffe */
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Talentboni
|
|
|
|
|
Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK */
|
|
|
|
|
{
|
|
|
|
|
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0,
|
|
|
|
|
1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Nonplayer (bei Gelegenheit entfernen) */
|
|
|
|
|
true,
|
|
|
|
|
|
|
|
|
|
/* Flags */
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SCAREPEASANTS|RCF_ABSORBPEASANTS|RCF_ATTACKRANDOM|RCF_MOVERANDOM|RCF_WALK|RCF_NOLEARN|RCF_NOTEACH|RCF_NOHEAL),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Battle_flags */
|
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT | BF_RES_PIERCE | BF_RES_CUT,
|
|
|
|
|
|
|
|
|
|
/* Economic-Flags */
|
|
|
|
|
CANGUARD,
|
|
|
|
|
|
|
|
|
|
/* Vertraute f<>r den Zauber
|
|
|
|
|
(Generisch, Illaun, Tybied, Cerddor, Gwyrrd, Draig) */
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
|
|
|
|
|
/* char *(*generate_name) (unit *) */
|
|
|
|
|
&skeleton_name,
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Zombies, Untotenart */
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
|
|
|
|
{"Zombie", "Zombies", "Zombies", NULL},
|
|
|
|
|
|
|
|
|
|
/* Magieresistenz (0=Normal) */
|
|
|
|
|
0.20,
|
|
|
|
|
|
|
|
|
|
/* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Auraregeneration (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Rekrutierungskosten, Unterhalt pro Runde */
|
|
|
|
|
4, 0,
|
|
|
|
|
|
|
|
|
|
/* Splitsize */
|
|
|
|
|
10000,
|
|
|
|
|
|
|
|
|
|
/* Gewicht */
|
|
|
|
|
1000,
|
|
|
|
|
|
|
|
|
|
/* Multiplikator Geschwindigkeit */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Trefferpunkte */
|
|
|
|
|
40,
|
|
|
|
|
|
|
|
|
|
/* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
"1d7",
|
|
|
|
|
|
|
|
|
|
/* Nat<61>rliche R<>stung */
|
|
|
|
|
1,
|
|
|
|
|
|
|
|
|
|
/* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
2, 2,
|
|
|
|
|
|
|
|
|
|
/* Bonus Angriff, Verteidigung */
|
|
|
|
|
5, 5,
|
|
|
|
|
|
|
|
|
|
/* Angriffe */
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {"1d7"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Talentboni
|
|
|
|
|
Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK */
|
|
|
|
|
{
|
|
|
|
|
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0,
|
|
|
|
|
1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Nonplayer (bei Gelegenheit entfernen) */
|
|
|
|
|
true,
|
|
|
|
|
|
|
|
|
|
/* Flags */
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SCAREPEASANTS|RCF_KILLPEASANTS|RCF_ATTACKRANDOM|RCF_MOVERANDOM|RCF_WALK|RCF_NOLEARN|RCF_NOTEACH|RCF_NOHEAL),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Battle_flags */
|
|
|
|
|
BF_EQUIPMENT|BF_MAGIC_EQUIPMENT|BF_RES_PIERCE|BF_RES_CUT,
|
|
|
|
|
|
|
|
|
|
/* Economic-Flags */
|
|
|
|
|
CANGUARD,
|
|
|
|
|
|
|
|
|
|
/* Vertraute f<>r den Zauber
|
|
|
|
|
(Generisch, Illaun, Tybied, Cerddor, Gwyrrd, Draig) */
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
|
|
|
|
|
/* char *(*generate_name) (unit *) */
|
|
|
|
|
&zombie_name,
|
|
|
|
|
|
|
|
|
|
/* Altern, wenn u->age%age == 0 */
|
|
|
|
|
&age_zombie,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Juju-Zombies, Untotenart */
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
|
|
|
|
{"Juju-Zombie", "Juju-Zombies", "Juju-Zombies", NULL},
|
|
|
|
|
|
|
|
|
|
/* Magieresistenz (0=Normal) */
|
|
|
|
|
0.50,
|
|
|
|
|
|
|
|
|
|
/* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Auraregeneration (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Rekrutierungskosten, Unterhalt pro Runde */
|
|
|
|
|
8, 0,
|
|
|
|
|
|
|
|
|
|
/* Splitsize */
|
|
|
|
|
10000,
|
|
|
|
|
|
|
|
|
|
/* Gewicht */
|
|
|
|
|
1000,
|
|
|
|
|
|
|
|
|
|
/* Multiplikator Geschwindigkeit */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Trefferpunkte */
|
|
|
|
|
80,
|
|
|
|
|
|
|
|
|
|
/* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
"1d7",
|
|
|
|
|
|
|
|
|
|
/* Nat<61>rliche R<>stung */
|
|
|
|
|
2,
|
|
|
|
|
|
|
|
|
|
/* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
6, 6,
|
|
|
|
|
|
|
|
|
|
/* Bonus Angriff, Verteidigung */
|
|
|
|
|
8, 8,
|
|
|
|
|
|
|
|
|
|
/* Angriffe */
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {"1d7"}, 0}, {AT_DRAIN_ST, {"1d1"}, 0}, {AT_DRAIN_ST, {"1d1"}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Talentboni
|
|
|
|
|
Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK */
|
|
|
|
|
{
|
|
|
|
|
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0,
|
|
|
|
|
1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Nonplayer (bei Gelegenheit entfernen) */
|
|
|
|
|
true,
|
|
|
|
|
|
|
|
|
|
/* Flags */
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SCAREPEASANTS|RCF_ABSORBPEASANTS|RCF_ATTACKRANDOM|RCF_MOVERANDOM|RCF_WALK|RCF_NOLEARN|RCF_NOTEACH|RCF_NOHEAL),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Battle_flags */
|
|
|
|
|
BF_EQUIPMENT|BF_MAGIC_EQUIPMENT|BF_RES_PIERCE|BF_RES_CUT|BF_RES_BASH,
|
|
|
|
|
|
|
|
|
|
/* Economic-Flags */
|
|
|
|
|
CANGUARD,
|
|
|
|
|
|
|
|
|
|
/* Vertraute f<>r den Zauber
|
|
|
|
|
(Generisch, Illaun, Tybied, Cerddor, Gwyrrd, Draig) */
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
|
|
|
|
|
/* char *(*generate_name) (unit *) */
|
|
|
|
|
&zombie_name,
|
|
|
|
|
|
|
|
|
|
/* Altern, wenn u->age%age == 0 */
|
|
|
|
|
NULL,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Ghoule, Untotenart */
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
|
|
|
|
{"Ghoul", "Ghoule", "Ghoulen", NULL},
|
|
|
|
|
|
|
|
|
|
/* Magieresistenz (0=Normal) */
|
|
|
|
|
0.30,
|
|
|
|
|
|
|
|
|
|
/* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Auraregeneration (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Rekrutierungskosten, Unterhalt pro Runde */
|
|
|
|
|
5, 0,
|
|
|
|
|
|
|
|
|
|
/* Splitsize */
|
|
|
|
|
10000,
|
|
|
|
|
|
|
|
|
|
/* Gewicht */
|
|
|
|
|
1000,
|
|
|
|
|
|
|
|
|
|
/* Multiplikator Geschwindigkeit */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Trefferpunkte */
|
|
|
|
|
30,
|
|
|
|
|
|
|
|
|
|
/* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
"1d7",
|
|
|
|
|
|
|
|
|
|
/* Nat<61>rliche R<>stung */
|
|
|
|
|
1,
|
|
|
|
|
|
|
|
|
|
/* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
3, 3,
|
|
|
|
|
|
|
|
|
|
/* Bonus Angriff, Verteidigung */
|
|
|
|
|
3, 3,
|
|
|
|
|
|
|
|
|
|
/* Angriffe */
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d6"}, 0}, {AT_DRAIN_ST, {"1d2"}, 0}, {AT_DRAIN_ST, {"1d2"}, 0},
|
|
|
|
|
{AT_DRAIN_EXP, {"1d30"}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Talentboni
|
|
|
|
|
Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK */
|
|
|
|
|
{
|
|
|
|
|
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0,
|
|
|
|
|
1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Nonplayer (bei Gelegenheit entfernen) */
|
|
|
|
|
true,
|
|
|
|
|
|
|
|
|
|
/* Flags */
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SCAREPEASANTS|RCF_ABSORBPEASANTS|RCF_ATTACKRANDOM|RCF_MOVERANDOM|RCF_WALK|RCF_NOLEARN|RCF_NOTEACH|RCF_NOHEAL),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Battle_flags */
|
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
|
|
|
|
|
/* Economic-Flags */
|
|
|
|
|
CANGUARD,
|
|
|
|
|
|
|
|
|
|
/* Vertraute f<>r den Zauber
|
|
|
|
|
(Generisch, Illaun, Tybied, Cerddor, Gwyrrd, Draig) */
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
|
|
|
|
|
/* char *(*generate_name) (unit *) */
|
|
|
|
|
&ghoul_name,
|
|
|
|
|
|
|
|
|
|
/* Altern, wenn u->age%age == 0 */
|
|
|
|
|
&age_ghoul,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Ghasts, Untotenart */
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
|
|
|
|
{"Ghast", "Ghaste", "Ghasten", NULL},
|
|
|
|
|
|
|
|
|
|
/* Magieresistenz (0=Normal) */
|
|
|
|
|
0.60,
|
|
|
|
|
|
|
|
|
|
/* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Auraregeneration (1=Durchschnitt) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Rekrutierungskosten, Unterhalt pro Runde */
|
|
|
|
|
5, 0,
|
|
|
|
|
|
|
|
|
|
/* Splitsize */
|
|
|
|
|
10000,
|
|
|
|
|
|
|
|
|
|
/* Gewicht */
|
|
|
|
|
1000,
|
|
|
|
|
|
|
|
|
|
/* Multiplikator Geschwindigkeit */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Trefferpunkte */
|
|
|
|
|
60,
|
|
|
|
|
|
|
|
|
|
/* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
"1d7",
|
|
|
|
|
|
|
|
|
|
/* Nat<61>rliche R<>stung */
|
|
|
|
|
2,
|
|
|
|
|
|
|
|
|
|
/* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
6, 6,
|
|
|
|
|
|
|
|
|
|
/* Bonus Angriff, Verteidigung */
|
|
|
|
|
6, 6,
|
|
|
|
|
|
|
|
|
|
/* Angriffe */
|
|
|
|
|
{
|
|
|
|
|
{AT_NATURAL, {"2d8"}, 0}, {AT_DRAIN_ST, {"1d5"}, 0}, {AT_DRAIN_ST, {"1d5"}, 0},
|
|
|
|
|
{AT_DRAIN_EXP, {"1d30"}, 0}, {AT_DRAIN_EXP, {"1d30"}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Talentboni
|
|
|
|
|
Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK */
|
|
|
|
|
{
|
|
|
|
|
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0,
|
|
|
|
|
1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Nonplayer (bei Gelegenheit entfernen) */
|
|
|
|
|
true,
|
|
|
|
|
|
|
|
|
|
/* Flags */
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_SCAREPEASANTS|RCF_ABSORBPEASANTS|RCF_ATTACKRANDOM|RCF_MOVERANDOM|RCF_WALK|RCF_NOLEARN|RCF_NOTEACH|RCF_NOHEAL),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Battle_flags */
|
|
|
|
|
BF_EQUIPMENT | BF_MAGIC_EQUIPMENT,
|
|
|
|
|
|
|
|
|
|
/* Economic-Flags */
|
|
|
|
|
CANGUARD,
|
|
|
|
|
|
|
|
|
|
/* Vertraute f<>r den Zauber
|
|
|
|
|
(Generisch, Illaun, Tybied, Cerddor, Gwyrrd, Draig) */
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE},
|
|
|
|
|
|
|
|
|
|
/* char *(*generate_name) (unit *) */
|
|
|
|
|
&ghoul_name,
|
|
|
|
|
|
|
|
|
|
/* Altern, wenn u->age%age == 0 */
|
|
|
|
|
NULL,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Museumsgeist */
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
|
|
|
|
{"Museumsgeist", "Museumsgeister", "Museumsgeistern", NULL},
|
|
|
|
|
|
|
|
|
|
/* Magieresistenz (0=Normal) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
0.0,
|
|
|
|
|
|
|
|
|
|
/* Auraregeneration (1=Durchschnitt) */
|
|
|
|
|
0.0,
|
|
|
|
|
|
|
|
|
|
/* Rekrutierungskosten, Unterhalt pro Runde */
|
|
|
|
|
5, 0,
|
|
|
|
|
|
|
|
|
|
/* Splitsize */
|
|
|
|
|
10000,
|
|
|
|
|
|
|
|
|
|
/* Gewicht */
|
|
|
|
|
1000,
|
|
|
|
|
|
|
|
|
|
/* Multiplikator Geschwindigkeit */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Trefferpunkte */
|
|
|
|
|
50,
|
|
|
|
|
|
|
|
|
|
/* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
"1d4",
|
|
|
|
|
|
|
|
|
|
/* Nat<61>rliche R<>stung */
|
|
|
|
|
0,
|
|
|
|
|
|
|
|
|
|
/* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
10, 10,
|
|
|
|
|
|
|
|
|
|
/* Bonus Angriff, Verteidigung */
|
|
|
|
|
10, 10,
|
|
|
|
|
|
|
|
|
|
/* Angriffe */
|
|
|
|
|
{
|
|
|
|
|
{AT_DRAIN_EXP, {"5d600"}, 0}, {AT_DRAIN_ST, {"5d5"}, 0}, {AT_DRAIN_EXP, {"5d600"}, 0},
|
|
|
|
|
{AT_DRAIN_EXP, {"5d600"}, 0}, {AT_DRAIN_ST, {"5d5"}, 0}, {AT_DRAIN_EXP, {"5d600"}, 0}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Talentboni
|
|
|
|
|
Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK */
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Nonplayer (bei Gelegenheit entfernen) */
|
|
|
|
|
true,
|
|
|
|
|
|
|
|
|
|
/* Flags */
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_NOTEACH),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Battle_flags */
|
|
|
|
|
(0),
|
|
|
|
|
|
|
|
|
|
/* Economic-Flags */
|
|
|
|
|
CANGUARD,
|
|
|
|
|
|
|
|
|
|
/* Vertraute f<>r den Zauber
|
|
|
|
|
(Generisch, Illaun, Tybied, Cerddor, Gwyrrd, Draig) */
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
|
|
|
|
},
|
|
|
|
|
/* Weihnachtsgnom */
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
|
|
|
|
{"Gnom", "Gnome", "Gnomen", NULL},
|
|
|
|
|
|
|
|
|
|
/* Magieresistenz (0=Normal) */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
0.0,
|
|
|
|
|
|
|
|
|
|
/* Auraregeneration (1=Durchschnitt) */
|
|
|
|
|
0.0,
|
|
|
|
|
|
|
|
|
|
/* Rekrutierungskosten, Unterhalt pro Runde */
|
|
|
|
|
5, 0,
|
|
|
|
|
|
|
|
|
|
/* Splitsize */
|
|
|
|
|
10000,
|
|
|
|
|
|
|
|
|
|
/* Gewicht */
|
|
|
|
|
1000,
|
|
|
|
|
|
|
|
|
|
/* Multiplikator Geschwindigkeit */
|
|
|
|
|
1.0,
|
|
|
|
|
|
|
|
|
|
/* Trefferpunkte */
|
|
|
|
|
50,
|
|
|
|
|
|
|
|
|
|
/* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
"1d4",
|
|
|
|
|
|
|
|
|
|
/* Nat<61>rliche R<>stung */
|
|
|
|
|
0,
|
|
|
|
|
|
|
|
|
|
/* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
10, 10,
|
|
|
|
|
|
|
|
|
|
/* Bonus Angriff, Verteidigung */
|
|
|
|
|
10, 10,
|
|
|
|
|
|
|
|
|
|
/* Angriffe */
|
|
|
|
|
{
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Talentboni
|
|
|
|
|
Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK */
|
|
|
|
|
{
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* Nonplayer (bei Gelegenheit entfernen) */
|
|
|
|
|
true,
|
|
|
|
|
|
|
|
|
|
/* Flags */
|
2001-02-03 14:45:35 +01:00
|
|
|
|
(RCF_WALK|RCF_NOTEACH),
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
/* Battle_flags */
|
|
|
|
|
(0),
|
|
|
|
|
|
|
|
|
|
/* Economic-Flags */
|
|
|
|
|
CANGUARD,
|
|
|
|
|
|
|
|
|
|
/* Vertraute f<>r den Zauber
|
|
|
|
|
(Generisch, Illaun, Tybied, Cerddor, Gwyrrd, Draig) */
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
2001-04-01 08:58:45 +02:00
|
|
|
|
},
|
|
|
|
|
/* Template */
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
2001-09-05 21:40:40 +02:00
|
|
|
|
{"Schablone", "Schablonen", "Schablonen", "Schablonen"},
|
2001-04-01 08:58:45 +02:00
|
|
|
|
1.0, /* Magieresistenz (0=Normal) */
|
|
|
|
|
0.0, /* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
0.0, /* Auraregeneration (1=Durchschnitt) */
|
2001-04-26 19:41:06 +02:00
|
|
|
|
0, 0, /* Rekrutierungskosten, Unterhalt pro Runde */
|
2001-04-01 08:58:45 +02:00
|
|
|
|
10000, /* Splitsize */
|
|
|
|
|
0, /* Gewicht */
|
|
|
|
|
10.0, /* Multiplikator Geschwindigkeit */
|
|
|
|
|
10, /* Trefferpunkte */
|
|
|
|
|
"1d4", /* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
0, /* Nat<61>rliche R<>stung */
|
|
|
|
|
-2, -2, /* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
0, 0, /* Bonus Angriff, Verteidigung */
|
|
|
|
|
{ /* Angriffe */
|
|
|
|
|
{AT_STANDARD, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{ /* Talentboni */
|
|
|
|
|
/* Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<4B>,Mag,Pfe,Rei, R<>s,Sba,Hie,Seg, */
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
/* Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wah,Ste,Aus, WlK */
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
|
|
|
},
|
2001-04-26 19:41:06 +02:00
|
|
|
|
false, /* Nonplayer (bei Gelegenheit entfernen) */
|
|
|
|
|
(RCF_SHAPESHIFTANY | RCF_SHAPESHIFT | RCF_FLY | RCF_SWIM | RCF_WALK | RCF_LEARN | RCF_MOVERANDOM | RCF_ATTACKRANDOM), /* flags */
|
2001-04-01 08:58:45 +02:00
|
|
|
|
(BF_EQUIPMENT | BF_MAGIC_EQUIPMENT), /* battle */
|
- Neue Messages fertig
Messages werden jetzt in einem anderen Meta-Format (message* of
message_type*) gespeichert, das man in beliebige Formate (CR oder NR)
rendern kann. crmessage.c und nrmessage.c sind die render-engines dafür.
Die Messagetypen werden in res/{de,en}/messages.xml gesammelt, ultimativ
kann das aber durchaus eine einzelne Datei sein. Die ist derzeit nicht
wirklich xml (Umlaute drin, keine Definitionsdatei), aber gut lesbar.
- make_message
Diese Funktion ersetzt new_message, und ist etwas einfacher in der Syntax:
make_message("dumb_mistake", "unit region command", u, r, cmd) erzeugt
eine neue Nachricht, die dann einfach mit add_message wie bisher an die
Nachrichtenliste gehängt werden kann.
TODO: Messages könnte man durchaus reference-counten, und in mehrere Listen
einfügen, solang sie a) mehrfachverwendet (Kampf!) und b) vom Betrachter
unabhängig sind. Das spart einigen Speicher.
- CR Version erhöht.
Weil die MESSAGETYPES Blocks anders sind als früher
- OFFENSIVE_DELAY
Verbietet Einheiten, deren Partei eine Reigon niht bewachen, den
Angriff in der Region, wenn sie sich in der Runde zuvor bewegt haben.
Status der letzten Runde wird in neuem Attribut at_moved gespeichert.
- SHORT_ATTACKS
ein define, das angibt ob Kämpfen grundsätzlich keine lange Aktion ist.
- XML Parser
xml.[hc] enthält einen XML-Parser, dem man ein plugin mit callbacks
übergibt, die nach dem Parsen eines tokens aufgerufen werden.
2001-04-12 19:21:57 +02:00
|
|
|
|
(ECF_REC_ETHEREAL | ECF_REC_UNLIMITED | CANGUARD | GIVEITEM | GIVEPERSON | GIVEUNIT | GETITEM), /* economy */
|
2001-04-01 08:58:45 +02:00
|
|
|
|
/* Vertraute f<>r den Zauber (Gen, Ill, Tyb, Cer, Gwy, Dra) */
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
2001-09-05 21:40:40 +02:00
|
|
|
|
},
|
|
|
|
|
/* Klon */
|
|
|
|
|
{
|
|
|
|
|
/* const char *name[4] */
|
|
|
|
|
{"Klon", "Klone", "Klonen", "Klonen"},
|
|
|
|
|
0.9, /* Magieresistenz (0=Normal) */
|
|
|
|
|
0.0, /* Maximale Aura (1=Durchschnitt) */
|
|
|
|
|
0.0, /* Auraregeneration (1=Durchschnitt) */
|
|
|
|
|
0, 0, /* Rekrutierungskosten, Unterhalt pro Runde */
|
|
|
|
|
10000, /* Splitsize */
|
|
|
|
|
1000, /* Gewicht */
|
|
|
|
|
1.0, /* Multiplikator Geschwindigkeit */
|
|
|
|
|
40, /* Trefferpunkte */
|
|
|
|
|
"0d0", /* Schaden AT_STANDARD unbewaffnet */
|
|
|
|
|
0, /* Nat<61>rliche R<>stung */
|
|
|
|
|
-2, -2, /* Angriff, Verteidigung unbewaffnet */
|
|
|
|
|
0, 0, /* Bonus Angriff, Verteidigung */
|
|
|
|
|
{ /* Angriffe */
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
{AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0}, {AT_NONE, {NULL}, 0},
|
|
|
|
|
},
|
|
|
|
|
{ /* Talentboni */
|
|
|
|
|
/* Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<4B>,Mag,Pfe,Rei, R<>s,Sba,Hie,Seg, */
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99,-99,-99,-99, -99,-99,-99,-99,
|
|
|
|
|
/* Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wah,Ste,Aus, WlK */
|
|
|
|
|
-99,-99,-99,-99, -99,-99,-99,-99, -99,-99,-99,-99, -99
|
|
|
|
|
},
|
|
|
|
|
false, /* Nonplayer (bei Gelegenheit entfernen) */
|
|
|
|
|
(RCF_WALK|RCF_NOLEARN|RCF_NOTEACH|RCF_NOHEAL),
|
|
|
|
|
(0), /* battle */
|
|
|
|
|
(0), /* economy */
|
|
|
|
|
/* Vertraute f<>r den Zauber (Gen, Ill, Tyb, Cer, Gwy, Dra) */
|
|
|
|
|
{NORACE,NORACE,NORACE,NORACE,NORACE,NORACE}
|
2001-01-25 10:37:55 +01:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* magres, {3 namen},
|
|
|
|
|
* heimat, rekr.kost, unterhalt, splitsize, weight,
|
|
|
|
|
* hitpoints, damage, armor, at_default, df_default, at_bonus, df_bonus
|
|
|
|
|
* Alc,Arm,Ber,Bog, Bur,Han,Hol,Kat, Kr<EFBFBD>u,Mag,Pfer,Rei, R<EFBFBD>s,Sbau,Hie,Seg,
|
|
|
|
|
* Sta,Spi,Ste,Str, Tak,Tar,Unt,Waf, Wag,Wahr,Steu,Aus, WlK
|
|
|
|
|
* nonplayer,use_armor,
|
|
|
|
|
* flags,
|
|
|
|
|
* battle_flags,
|
|
|
|
|
* generate_name
|
|
|
|
|
* */
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
set_show_item(faction *f, item_t i)
|
|
|
|
|
{
|
|
|
|
|
attrib *a = a_add(&f->attribs, a_new(&at_showitem));
|
|
|
|
|
a->data.v = olditemtype[i];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
give_starting_equipment(struct region *r, struct unit *u)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
switch(u->race) {
|
|
|
|
|
case RC_DWARF:
|
|
|
|
|
set_skill(u, SK_SWORD, 30);
|
|
|
|
|
set_item(u, I_AXE, 1);
|
|
|
|
|
set_item(u, I_CHAIN_MAIL, 1);
|
|
|
|
|
break;
|
|
|
|
|
case RC_ELF:
|
|
|
|
|
set_item(u, I_FEENSTIEFEL, 1);
|
|
|
|
|
set_show_item(u->faction, I_FEENSTIEFEL);
|
|
|
|
|
break;
|
|
|
|
|
case RC_ORC:
|
|
|
|
|
set_skill(u, SK_SPEAR, 300);
|
|
|
|
|
set_skill(u, SK_SWORD, 300);
|
|
|
|
|
set_skill(u, SK_CROSSBOW, 300);
|
|
|
|
|
set_skill(u, SK_LONGBOW, 300);
|
|
|
|
|
set_skill(u, SK_CATAPULT, 300);
|
|
|
|
|
break;
|
|
|
|
|
case RC_GOBLIN:
|
|
|
|
|
set_item(u, I_RING_OF_INVISIBILITY, 1);
|
|
|
|
|
set_show_item(u->faction, I_RING_OF_INVISIBILITY);
|
|
|
|
|
scale_number(u, 10);
|
|
|
|
|
break;
|
|
|
|
|
case RC_HUMAN:
|
|
|
|
|
{
|
|
|
|
|
building *b = new_building(&bt_castle, r, u->faction->locale);
|
2001-09-05 21:40:40 +02:00
|
|
|
|
b->size = 10;
|
2001-01-25 10:37:55 +01:00
|
|
|
|
u->building = b;
|
|
|
|
|
fset(u, FL_OWNER);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case RC_TROLL:
|
|
|
|
|
set_skill(u, SK_BUILDING, 30);
|
|
|
|
|
set_skill(u, SK_OBSERVATION, 180);
|
2001-09-05 21:40:40 +02:00
|
|
|
|
set_item(u, I_STONE, 50);
|
2001-01-25 10:37:55 +01:00
|
|
|
|
break;
|
|
|
|
|
case RC_DAEMON:
|
|
|
|
|
set_skill(u, SK_AUSDAUER, 3600);
|
|
|
|
|
u->hp = unit_max_hp(u);
|
|
|
|
|
break;
|
|
|
|
|
case RC_INSECT:
|
|
|
|
|
/* TODO: Potion-Beschreibung ausgeben */
|
|
|
|
|
i_change(&u->items, oldpotiontype[P_WARMTH]->itype, 9);
|
|
|
|
|
break;
|
|
|
|
|
case RC_HALFLING:
|
|
|
|
|
set_skill(u, SK_TRADE, 30);
|
|
|
|
|
set_skill(u, SK_RIDING, 90);
|
|
|
|
|
set_item(u, I_HORSE, 2);
|
|
|
|
|
set_item(u, I_WAGON, 1);
|
|
|
|
|
set_item(u, I_BALM, 5);
|
|
|
|
|
set_item(u, I_SPICES, 5);
|
|
|
|
|
set_item(u, I_JEWELERY, 5);
|
|
|
|
|
set_item(u, I_MYRRH, 5);
|
|
|
|
|
set_item(u, I_OIL, 5);
|
|
|
|
|
set_item(u, I_SILK, 5);
|
|
|
|
|
set_item(u, I_INCENSE, 5);
|
|
|
|
|
break;
|
|
|
|
|
case RC_CAT:
|
|
|
|
|
set_item(u, I_RING_OF_INVISIBILITY, 1);
|
|
|
|
|
set_show_item(u->faction, I_RING_OF_INVISIBILITY);
|
|
|
|
|
break;
|
|
|
|
|
case RC_AQUARIAN:
|
|
|
|
|
{
|
2001-02-18 11:06:10 +01:00
|
|
|
|
ship *sh = new_ship(&st_boat, r);
|
2001-01-25 10:37:55 +01:00
|
|
|
|
sh->size = sh->type->construction->maxsize;
|
|
|
|
|
addlist(&r->ships, sh);
|
|
|
|
|
u->ship = sh;
|
|
|
|
|
fset(u, FL_OWNER);
|
|
|
|
|
}
|
|
|
|
|
set_skill(u, SK_SAILING, 30);
|
|
|
|
|
break;
|
2001-04-01 08:58:45 +02:00
|
|
|
|
case RC_CENTAUR:
|
|
|
|
|
rsethorses(r, 250+rand()%51+rand()%51);
|
|
|
|
|
break;
|
2001-01-25 10:37:55 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set_money(u, 2000 + turn * 10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
give_latestart_bonus(region *r, unit *u, int b)
|
|
|
|
|
{
|
|
|
|
|
change_skill(u, SK_OBSERVATION, b*30*u->number);
|
|
|
|
|
change_money(u, 200*b);
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
unit *u2 = createunit(r, u->faction, 1, u->race);
|
|
|
|
|
change_skill(u2, SK_TACTICS, ((b*30)/2) * u2->number);
|
|
|
|
|
u2->irace = u->irace;
|
2001-02-03 14:45:35 +01:00
|
|
|
|
fset(u2, FL_PARTEITARNUNG);
|
2001-01-25 10:37:55 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
unit *u2 = createunit(r, u->faction, 2*b, u->race);
|
|
|
|
|
change_skill(u2, SK_SPEAR, 180 * u2->number);
|
|
|
|
|
change_skill(u2, SK_TAXING, 180 * u2->number);
|
|
|
|
|
change_item(u2, I_SPEAR, u2->number);
|
|
|
|
|
u2->irace = u->irace;
|
2001-02-03 14:45:35 +01:00
|
|
|
|
fset(u2, FL_PARTEITARNUNG);
|
2001-01-25 10:37:55 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
unit_max_hp(const unit * u)
|
|
|
|
|
{
|
|
|
|
|
int h;
|
|
|
|
|
double p;
|
|
|
|
|
h = race[u->race].hitpoints;
|
|
|
|
|
|
|
|
|
|
p = pow(effskill(u, SK_AUSDAUER) / 2.0, 1.5) * 0.2;
|
|
|
|
|
h += (int) (h * p + 0.5);
|
|
|
|
|
|
2001-02-28 19:25:25 +01:00
|
|
|
|
if(fspecial(u->faction, FS_UNDEAD)) {
|
|
|
|
|
h *= 2;
|
|
|
|
|
}
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
|
|
|
|
return h;
|
|
|
|
|
}
|
|
|
|
|
|
2001-01-31 18:40:53 +01:00
|
|
|
|
boolean is_undead(const unit *u)
|
2001-01-25 10:37:55 +01:00
|
|
|
|
{
|
|
|
|
|
return u->race == RC_UNDEAD || u->race == RC_SKELETON
|
|
|
|
|
|| u->race == RC_SKELETON_LORD || u->race == RC_ZOMBIE
|
|
|
|
|
|| u->race == RC_ZOMBIE_LORD || u->race == RC_GHOUL
|
|
|
|
|
|| u->race == RC_GHOUL_LORD;
|
|
|
|
|
}
|
2001-02-03 14:45:35 +01:00
|
|
|
|
|
- Neue Messages fertig
Messages werden jetzt in einem anderen Meta-Format (message* of
message_type*) gespeichert, das man in beliebige Formate (CR oder NR)
rendern kann. crmessage.c und nrmessage.c sind die render-engines dafür.
Die Messagetypen werden in res/{de,en}/messages.xml gesammelt, ultimativ
kann das aber durchaus eine einzelne Datei sein. Die ist derzeit nicht
wirklich xml (Umlaute drin, keine Definitionsdatei), aber gut lesbar.
- make_message
Diese Funktion ersetzt new_message, und ist etwas einfacher in der Syntax:
make_message("dumb_mistake", "unit region command", u, r, cmd) erzeugt
eine neue Nachricht, die dann einfach mit add_message wie bisher an die
Nachrichtenliste gehängt werden kann.
TODO: Messages könnte man durchaus reference-counten, und in mehrere Listen
einfügen, solang sie a) mehrfachverwendet (Kampf!) und b) vom Betrachter
unabhängig sind. Das spart einigen Speicher.
- CR Version erhöht.
Weil die MESSAGETYPES Blocks anders sind als früher
- OFFENSIVE_DELAY
Verbietet Einheiten, deren Partei eine Reigon niht bewachen, den
Angriff in der Region, wenn sie sich in der Runde zuvor bewegt haben.
Status der letzten Runde wird in neuem Attribut at_moved gespeichert.
- SHORT_ATTACKS
ein define, das angibt ob Kämpfen grundsätzlich keine lange Aktion ist.
- XML Parser
xml.[hc] enthält einen XML-Parser, dem man ein plugin mit callbacks
übergibt, die nach dem Parsen eines tokens aufgerufen werden.
2001-04-12 19:21:57 +02:00
|
|
|
|
extern void
|
2001-02-03 14:45:35 +01:00
|
|
|
|
init_races(void)
|
|
|
|
|
{
|
|
|
|
|
a_add(&race[RC_TROLL].attribs, make_skillmod(NOSKILL, SMF_RIDING, NULL, 0.0, -1));
|
|
|
|
|
}
|
2001-09-05 21:40:40 +02:00
|
|
|
|
|
|
|
|
|
boolean
|
|
|
|
|
r_insectstalled(const region * r)
|
|
|
|
|
{
|
|
|
|
|
if (rterrain(r)==T_GLACIER || rterrain(r)==T_ICEBERG_SLEEP
|
|
|
|
|
|| rterrain(r)==T_ICEBERG)
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const char *
|
|
|
|
|
racename(const locale *loc, const unit *u, const race_t r)
|
|
|
|
|
{
|
|
|
|
|
static char lbuf[80];
|
|
|
|
|
attrib *a, *a2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a = a_find(u->attribs, &at_group);
|
|
|
|
|
if(a) {
|
|
|
|
|
a2 = a_find(((group *)(a->data.v))->attribs, &at_raceprefix);
|
|
|
|
|
} else {
|
|
|
|
|
a2 = a_find(u->faction->attribs, &at_raceprefix);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
a = a_find(u->faction->attribs, &at_synonym);
|
|
|
|
|
|
|
|
|
|
if(a2) {
|
|
|
|
|
char s[32];
|
|
|
|
|
|
|
|
|
|
strcpy(lbuf, locale_string(loc, (char *)a2->data.v));
|
|
|
|
|
if(a) {
|
|
|
|
|
strcpy(s, locale_string(loc,
|
|
|
|
|
((frace_synonyms *)(a->data.v))->synonyms[u->number != 1]));
|
|
|
|
|
} else {
|
|
|
|
|
strcpy(s, locale_string(loc,
|
|
|
|
|
race[r].name[u->number != 1]));
|
|
|
|
|
}
|
|
|
|
|
s[0] = tolower(s[0]);
|
|
|
|
|
strcat(lbuf, s);
|
|
|
|
|
return lbuf;
|
|
|
|
|
}
|
|
|
|
|
if(a) {
|
|
|
|
|
return(locale_string(loc,
|
|
|
|
|
((frace_synonyms *)(a->data.v))->synonyms[u->number != 1]));
|
|
|
|
|
}
|
|
|
|
|
return(locale_string(loc, race[r].name[u->number != 1]));
|
|
|
|
|
}
|
|
|
|
|
|