From b23529f73107c0b8a5ccb6e4bcdda19a72aa8ca9 Mon Sep 17 00:00:00 2001 From: Katja Zedel Date: Sun, 5 May 2002 18:41:15 +0000 Subject: [PATCH] spoils die 2. --- src/common/items/racespoils.c | 2 +- src/common/kernel/magic.c | 3 +- src/common/kernel/race.c | 135 ++++++++++++++++++++++++++++++++-- src/common/kernel/race.h | 2 + src/res/races.xml | 5 ++ 5 files changed, 139 insertions(+), 8 deletions(-) diff --git a/src/common/items/racespoils.c b/src/common/items/racespoils.c index 7b15dacfc..fd9044610 100644 --- a/src/common/items/racespoils.c +++ b/src/common/items/racespoils.c @@ -31,7 +31,7 @@ resource_type rt_elfspoil = { &res_changeitem }; -item_type it_elfspoil = { +item_type it_elvenspoil = { &rt_elfspoil, /* resourcetype */ 0, 1, 0, /* flags, weight, capacity */ NULL, /* construction */ diff --git a/src/common/kernel/magic.c b/src/common/kernel/magic.c index 3049e9d4c..81252efe0 100644 --- a/src/common/kernel/magic.c +++ b/src/common/kernel/magic.c @@ -3256,4 +3256,5 @@ spell_name(const struct spell * sp, const struct locale * lang) return LOC(lang, mkname("spell", sp->sname)); } return sp->sname; -} \ No newline at end of file +} + diff --git a/src/common/kernel/race.c b/src/common/kernel/race.c index c63296d89..4c6dbc04a 100644 --- a/src/common/kernel/race.c +++ b/src/common/kernel/race.c @@ -41,6 +41,10 @@ #include "karma.h" #include "group.h" +/* item includes */ +#include + + /* util includes */ #include #include @@ -525,6 +529,105 @@ dragon_drops(const struct race * rc, int size) } return itm; } +static item * +elf_spoil(const struct race * rc, int size) +{ + item * itm = NULL; + if (rand()%100 < RACESPOILCHANCE){ + i_add(&itm, i_new(&it_elvenspoil, size)); + } + return itm; +} +static item * +demon_spoil(const struct race * rc, int size) +{ + item * itm = NULL; + if (rand()%100 < RACESPOILCHANCE){ + i_add(&itm, i_new(&it_demonspoil, size)); + } + return itm; +} +static item * +goblin_spoil(const struct race * rc, int size) +{ + item * itm = NULL; + if (rand()%100 < RACESPOILCHANCE){ + i_add(&itm, i_new(&it_goblinspoil, size)); + } + return itm; +} +static item * +dwarf_spoil(const struct race * rc, int size) +{ + item * itm = NULL; + if (rand()%100 < RACESPOILCHANCE){ + i_add(&itm, i_new(&it_dwarfspoil, size)); + } + return itm; +} +static item * +halfling_spoil(const struct race * rc, int size) +{ + item * itm = NULL; + if (rand()%100 < RACESPOILCHANCE){ + i_add(&itm, i_new(&it_halflingspoil, size)); + } + return itm; +} +static item * +human_spoil(const struct race * rc, int size) +{ + item * itm = NULL; + if (rand()%100 < RACESPOILCHANCE){ + i_add(&itm, i_new(&it_humanspoil, size)); + } + return itm; +} +static item * +aquarian_spoil(const struct race * rc, int size) +{ + item * itm = NULL; + if (rand()%100 < RACESPOILCHANCE){ + i_add(&itm, i_new(&it_aquarianspoil, size)); + } + return itm; +} +static item * +insect_spoil(const struct race * rc, int size) +{ + item * itm = NULL; + if (rand()%100 < RACESPOILCHANCE){ + i_add(&itm, i_new(&it_insectspoil, size)); + } + return itm; +} +static item * +cat_spoil(const struct race * rc, int size) +{ + item * itm = NULL; + if (rand()%100 < RACESPOILCHANCE){ + i_add(&itm, i_new(&it_catspoil, size)); + } + return itm; +} +static item * +orc_spoil(const struct race * rc, int size) +{ + item * itm = NULL; + if (rand()%100 < RACESPOILCHANCE){ + i_add(&itm, i_new(&it_orcspoil, size)); + } + return itm; +} +static item * +troll_spoil(const struct race * rc, int size) +{ + item * itm = NULL; + if (rand()%100 < RACESPOILCHANCE){ + i_add(&itm, i_new(&it_trollspoil, size)); + } + return itm; +} int rc_specialdamage(const race * ar, const race * dr, const struct weapon_type * wtype) @@ -781,20 +884,26 @@ static xml_callbacks xml_races = { tagbegin, tagend, NULL }; +/* Die Funktionen werden über den hier registrierten Namen in races.xml + * in die jeweilige Rassendefiniton eingebunden */ void register_races(void) { char zBuffer[MAX_PATH]; - /* init_familiar functions */ + /* function initfamiliar */ register_function((pf_generic)oldfamiliars, "oldfamiliars"); - /* move_allowed functions */ + /* function move + * into which regiontyp moving is allowed for this race + * race->move_allowed() */ register_function((pf_generic)allowed_swim, "moveswimming"); register_function((pf_generic)allowed_walk, "movewalking"); register_function((pf_generic)allowed_fly, "moveflying"); register_function((pf_generic)allowed_dragon, "movedragon"); - /* generate_name functions */ + /* function name + * generate a name for a nonplayerunit + * race->generate_name() */ register_function((pf_generic)untoten_name, "nameundead"); register_function((pf_generic)skeleton_name, "nameskeleton"); register_function((pf_generic)zombie_name, "namezombie"); @@ -803,7 +912,8 @@ register_races(void) register_function((pf_generic)dracoid_name, "namedracoid"); register_function((pf_generic)shadow_name, "nameshadow"); - /* aging functions */ + /* function age + * race->age() */ register_function((pf_generic)age_undead, "ageundead"); register_function((pf_generic)age_illusion, "ageillusion"); register_function((pf_generic)age_skeleton, "ageskeleton"); @@ -812,9 +922,22 @@ register_races(void) register_function((pf_generic)age_dragon, "agedragon"); register_function((pf_generic)age_firedragon, "agefiredragon"); - /* itemdrop functions */ + /* function itemdrop + * to generate battle spoils + * race->itemdrop() */ register_function((pf_generic)dragon_drops, "dragondrops"); - sprintf(zBuffer, "%s/races.xml", resourcepath()); + register_function((pf_generic)elf_spoil, "elfspoil"); + register_function((pf_generic)demon_spoil, "demonspoil"); + register_function((pf_generic)goblin_spoil, "goblinspoil"); + register_function((pf_generic)dwarf_spoil, "dwarfspoil"); + register_function((pf_generic)halfling_spoil, "halflingspoil"); + register_function((pf_generic)human_spoil, "humanspoil"); + register_function((pf_generic)aquarian_spoil, "aquarianspoil"); + register_function((pf_generic)insect_spoil, "insectspoil"); + register_function((pf_generic)cat_spoil, "catspoil"); + register_function((pf_generic)orc_spoil, "orcspoil"); + register_function((pf_generic)troll_spoil, "trollspoil"); + sprintf(zBuffer, "%s/races.xml", resourcepath()); xml_register(&xml_races, "eressea races", 0); } diff --git a/src/common/kernel/race.h b/src/common/kernel/race.h index a1d55f397..cc75d424c 100644 --- a/src/common/kernel/race.h +++ b/src/common/kernel/race.h @@ -35,6 +35,8 @@ #define GOLEM_IRON 4 /* Anzahl Eisen in einem Eisengolem */ #define GOLEM_STONE 4 /* Anzahl Steine in einem Steingolem */ +#define RACESPOILCHANCE 5 /* Chance auf rassentypische Beute */ + typedef struct att { int type; union { diff --git a/src/res/races.xml b/src/res/races.xml index 3ff3b3771..528c46601 100644 --- a/src/res/races.xml +++ b/src/res/races.xml @@ -965,6 +965,7 @@ + @@ -1025,6 +1026,7 @@ + @@ -1101,6 +1103,7 @@ + @@ -1184,6 +1187,7 @@ + @@ -1210,6 +1214,7 @@ +