remove the obsolete dungeons module.

I don't think this has ever been used, and it has fallen victim to entropy since it was first written. good riddance!
This commit is contained in:
Enno Rehling 2014-12-13 00:03:24 +01:00
parent 3d24764e08
commit a8849f2b91
8 changed files with 19 additions and 376 deletions

View File

@ -58,9 +58,6 @@ void game_init(void)
register_resources(); register_resources();
register_buildings(); register_buildings();
register_itemfunctions(); register_itemfunctions();
#if DUNGEON_MODULE
register_dungeon();
#endif
#if MUSEUM_MODULE #if MUSEUM_MODULE
register_museum(); register_museum();
#endif #endif

View File

@ -28,9 +28,6 @@
#include <modules/arena.h> #include <modules/arena.h>
#endif #endif
#include <modules/autoseed.h> #include <modules/autoseed.h>
#if DUNGEON_MODULE
#include <modules/dungeon.h>
#endif
#include <kernel/building.h> #include <kernel/building.h>
#include <kernel/calendar.h> #include <kernel/calendar.h>

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 1998-2010, Enno Rehling <enno@eressea.de> Copyright (c) 1998-2014, Enno Rehling <enno@eressea.de>
Katja Zedel <katze@felidae.kn-bremen.de Katja Zedel <katze@felidae.kn-bremen.de
Christian Schlittchen <corwin@amber.kn-bremen.de> Christian Schlittchen <corwin@amber.kn-bremen.de>

View File

@ -1,61 +1,21 @@
/* vi: set ts=2:
+-------------------+
| | Enno Rehling <enno@eressea.de>
| Eressea PBEM host | Katja Zedel <katze@felidae.kn-bremen.de>
| (c) 1998 - 2007 | Christian Schlittchen <corwin@amber.kn-bremen.de>
| |
+-------------------+
This program may not be used, modified or distributed
without prior permission by the authors of Eressea.
*/
/* changes from->to: 72->73: struct unit::lock entfernt.
* 73->74: struct unit::flags eingeführt.
* 74->75: parteitarnung als flag.
* 75->76: #ifdef NEW_HP: hp
* 76->77: ship->damage
* 77->78: neue Message-Option "Orkvermehrung" (MAX_MSG +1)
* 78->79: showdata nicht mehr speichern
* 79->HEX_VERSION: hex
* 80->82: ATTRIB_VERSION
* 90: Ebenen
* 92: Magiegebiet-Auswahl f->magiegebiet
* 94: f->attribs wird gespeichert
* 100: NEWMAGIC, neue Message-Option "Zauber" (MAX_MSG +1)
* 108: Speichern von Timeouts
* 193: curse bekommen id aus struct unit-nummernraum
*/
/* /*
#define HEX_VERSION 81 Copyright (c) 1998-2014, Enno Rehling <enno@eressea.de>
#define GROWTREE_VERSION 305 Katja Zedel <katze@felidae.kn-bremen.de
#define RANDOMIZED_RESOURCES_VERSION 306 Christian Schlittchen <corwin@amber.kn-bremen.de>
#define NEWRACE_VERSION 307
#define INTERIM_VERSION 309 Permission to use, copy, modify, and/or distribute this software for any
#define NEWSKILL_VERSION 309 purpose with or without fee is hereby granted, provided that the above
#define WATCHERS_VERSION 310 copyright notice and this permission notice appear in all copies.
#define OVERRIDE_VERSION 311
*/ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
#define CURSETYPE_VERSION 312 /* turn 287 */ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
#define ALLIANCES_VERSION 313 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
#define DBLINK_VERSION 314 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
#define CURSEVIGOURISFLOAT_VERSION 315 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
#define SAVEXMLNAME_VERSION 316 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
#define SAVEALLIANCE_VERSION 317 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define CLAIM_VERSION 318 **/
/* 319 is the HSE4 data version */
#define BACTION_VERSION 319 /* building action gets a param string */
#define NOLASTORDER_VERSION 320 /* do not use lastorder */
#define SPELLNAME_VERSION 321 /* reference spells by name */
#define TERRAIN_VERSION 322 /* terrains are a full type and saved by name */
#define REGIONITEMS_VERSION 323 /* regions have items */
#define ATTRIBREAD_VERSION 324 /* remove a_readint */
#define CURSEFLAGS_VERSION 325 /* remove a_readint */
#define UNICODE_VERSION 326 /* 2007-06-27 everything is stored as UTF8 */
#define UID_VERSION 327 /* regions have a unique id */
#define STORAGE_VERSION 328 /* with storage.h, some things are stored smarter (ids as base36, fractions as float) */
#define INTPAK_VERSION 329 /* in binary, ints can get packed */ #define INTPAK_VERSION 329 /* in binary, ints can get packed */
#define NOZEROIDS_VERSION 330 /* 2008-05-16 zero is not a valid ID for anything (including factions) */ #define NOZEROIDS_VERSION 330 /* 2008-05-16 zero is not a valid ID for anything (including factions) */
#define NOBORDERATTRIBS_VERSION 331 /* 2008-05-17 connection::attribs has been moved to userdata */ #define NOBORDERATTRIBS_VERSION 331 /* 2008-05-17 connection::attribs has been moved to userdata */
@ -74,6 +34,7 @@
#define SAVEGAMEID_VERSION 343 /* instead of XMLNAME, save the game.id parameter from the config */ #define SAVEGAMEID_VERSION 343 /* instead of XMLNAME, save the game.id parameter from the config */
#define BUILDNO_VERSION 344 /* storing the build number in the save */ #define BUILDNO_VERSION 344 /* storing the build number in the save */
#define AUTO_RACENAME_VERSION 345 /* NPC units with name==NULL will automatically get their race for a name */ #define AUTO_RACENAME_VERSION 345 /* NPC units with name==NULL will automatically get their race for a name */
#define MIN_VERSION INTPAK_VERSION /* minimal datafile we support */ #define MIN_VERSION INTPAK_VERSION /* minimal datafile we support */
#define RELEASE_VERSION AUTO_RACENAME_VERSION /* current datafile */ #define RELEASE_VERSION AUTO_RACENAME_VERSION /* current datafile */

View File

@ -2,7 +2,6 @@ PROJECT(modules C)
SET(_FILES SET(_FILES
arena.c arena.c
autoseed.c autoseed.c
dungeon.c
gmcmd.c gmcmd.c
museum.c museum.c
score.c score.c

View File

@ -1,273 +0,0 @@
/* vi: set ts=2:
+-------------------+ Christian Schlittchen <corwin@amber.kn-bremen.de>
| | Enno Rehling <enno@eressea.de>
| Eressea PBEM host | Katja Zedel <katze@felidae.kn-bremen.de>
| (c) 1998 - 2003 | Henning Peters <faroul@beyond.kn-bremen.de>
| | Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
+-------------------+ Stefan Reich <reich@halbling.de>
This program may not be used, modified or distributed
without prior permission by the authors of Eressea.
*/
#include <platform.h>
#include <kernel/config.h>
#if DUNGEON_MODULE
#include "dungeon.h"
#include "gmcmd.h"
#include <triggers/gate.h>
#include <triggers/unguard.h>
/* kernel includes */
#include <building.h>
#include <item.h>
#include <plane.h>
#include <race.h>
#include <region.h>
#include <skill.h>
#include <terrain.h>
#include <unit.h>
/* util includes */
#include <event.h>
#include <xml.h>
/* libc includes */
#include <stdlib.h>
#include <string.h>
#include <limits.h>
typedef struct treasure {
const struct item_type *itype;
int amount;
struct treasure *next;
} treasure;
typedef struct monster {
const struct race *race;
double chance;
int maxunits;
int avgsize;
struct treasure *treasures;
struct monster *next;
struct itemtype_list *weapons;
} monster;
typedef struct skilllimit {
skill_t skill;
int minskill;
int maxskill;
struct skilllimit *next;
} skilllimit;
typedef struct dungeon {
int level;
int radius;
int size;
int maxpeople;
struct skilllimit *limits;
double connect;
struct monster *boss;
struct monster *monsters;
struct dungeon *next;
} dungeon;
dungeon *dungeonstyles;
region *make_dungeon(const dungeon * data)
{
int nb[2][3][2] = {
{{-1, 0}, {0, 1}, {1, -1}},
{{1, 0}, {-1, 1}, {0, -1}}
};
const struct race *bossrace = data->boss->race;
char name[128];
int size = data->size;
int iterations = size * size;
unsigned int flags = PFL_NORECRUITS;
int n = 0;
struct faction *fmonsters = get_monsters();
plane *p;
region *r, *center;
region *rnext;
region_list *iregion, *rlist = NULL;
const terrain_type *terrain_hell = get_terrain("hell");
assert(terrain_hell != NULL);
sprintf(name, "Die Höhlen von %s", bossrace->generate_name(NULL));
p = gm_addplane(data->radius, flags, name);
center =
findregion(p->minx + (p->maxx - p->minx) / 2,
p->miny + (p->maxy - p->miny) / 2);
assert(center);
terraform_region(center, terrain_hell);
add_regionlist(&rlist, center);
rnext = r = center;
while (size > 0 && iterations--) {
int d, o = rng_int() % 3;
for (d = 0; d != 3; ++d) {
int index = (d + o) % 3;
region *rn = findregion(r->x + nb[n][index][0], r->y + nb[n][index][1]);
assert(r->terrain == terrain_hell);
if (rn) {
if (rn->terrain == terrain_hell) {
rnext = rn;
} else if (fval(rn->terrain, SEA_REGION)) {
if (rng_int() % 100 < data->connect * 100) {
terraform_region(rn, terrain_hell);
--size;
rnext = rn;
add_regionlist(&rlist, rn);
} else
terraform(rn, T_FIREWALL);
}
if (size == 0)
break;
}
rn =
findregion(r->x + nb[(n + 1) % 2][index][0],
r->y + nb[(n + 1) % 2][index][1]);
if (rn && fval(rn->terrain, SEA_REGION)) {
terraform(rn, T_FIREWALL);
}
}
if (size == 0)
break;
if (r == rnext) {
/* error */
break;
}
r = rnext;
n = (n + 1) % 2;
}
for (iregion = rlist; iregion; iregion = iregion->next) {
monster *m = data->monsters;
region *r = iregion->data;
while (m) {
if ((rng_int() % 100) < (m->chance * 100)) {
/* TODO: check maxunits. */
treasure *loot = m->treasures;
struct itemtype_list *weapon = m->weapons;
int size = 1 + (rng_int() % m->avgsize) + (rng_int() % m->avgsize);
unit *u = createunit(r, fmonsters, size, m->race);
while (weapon) {
i_change(&u->items, weapon->type, size);
weapon = weapon->next;
}
while (loot) {
i_change(&u->items, loot->itype, loot->amount * size);
loot = loot->next;
}
}
m = m->next;
}
}
return center;
}
void make_dungeongate(region * source, region * target, const struct dungeon *d)
{
building *bsource, *btarget;
if (source == NULL || target == NULL || d == NULL)
return;
bsource = new_building(bt_find("castle"), source, default_locale);
set_string(&bsource->name, "Pforte zur Hölle");
bsource->size = 50;
add_trigger(&bsource->attribs, "timer", trigger_gate(bsource, target));
add_trigger(&bsource->attribs, "create", trigger_unguard(bsource));
fset(bsource, BLD_UNGUARDED);
btarget = new_building(bt_find("castle"), target, default_locale);
set_string(&btarget->name, "Pforte zur Außenwelt");
btarget->size = 50;
add_trigger(&btarget->attribs, "timer", trigger_gate(btarget, source));
add_trigger(&btarget->attribs, "create", trigger_unguard(btarget));
fset(btarget, BLD_UNGUARDED);
}
static int tagbegin(xml_stack * stack)
{
xml_tag *tag = stack->tag;
if (strcmp(tag->name, "dungeon") == 0) {
dungeon *d = (dungeon *) calloc(sizeof(dungeon), 1);
d->maxpeople = xml_ivalue(tag, "maxpeople");
if (d->maxpeople == 0)
d->maxpeople = INT_MAX;
d->level = xml_ivalue(tag, "level");
d->radius = xml_ivalue(tag, "radius");
d->connect = xml_fvalue(tag, "connect");
d->size = xml_ivalue(tag, "size");
stack->state = d;
} else {
dungeon *d = (dungeon *) stack->state;
if (strcmp(tag->name, "skilllimit") == 0) {
skill_t sk = findskill(xml_value(tag, "name"));
if (sk != NOSKILL) {
skilllimit *skl = calloc(sizeof(skilllimit), 1);
skl->skill = sk;
if (xml_value(tag, "max") != NULL) {
skl->maxskill = xml_ivalue(tag, "max");
} else
skl->maxskill = INT_MAX;
if (xml_value(tag, "min") != NULL) {
skl->minskill = xml_ivalue(tag, "min");
} else
skl->maxskill = INT_MIN;
skl->next = d->limits;
d->limits = skl;
}
} else if (strcmp(tag->name, "monster") == 0) {
monster *m = calloc(sizeof(monster), 1);
m->race = rc_find(xml_value(tag, "race"));
m->chance = xml_fvalue(tag, "chance");
m->avgsize = _max(1, xml_ivalue(tag, "size"));
m->maxunits = _min(1, xml_ivalue(tag, "maxunits"));
if (m->race) {
if (xml_bvalue(tag, "boss")) {
d->boss = m;
} else {
m->next = d->monsters;
d->monsters = m;
}
}
} else if (strcmp(tag->name, "weapon") == 0) {
monster *m = d->monsters;
itemtype_list *w = calloc(sizeof(itemtype_list), 1);
w->type = it_find(xml_value(tag, "type"));
if (w->type) {
w->next = m->weapons;
m->weapons = w;
}
}
}
return XML_OK;
}
static int tagend(xml_stack * stack)
{
xml_tag *tag = stack->tag;
if (strcmp(tag->name, "dungeon")) {
dungeon *d = (dungeon *) stack->state;
stack->state = NULL;
d->next = dungeonstyles;
dungeonstyles = d;
}
return XML_OK;
}
xml_callbacks xml_dungeon = {
tagbegin, tagend, NULL
};
void register_dungeon(void)
{
xml_register(&xml_dungeon, "eressea dungeon", 0);
}
#endif

View File

@ -1,37 +0,0 @@
/* vi: set ts=2:
+-------------------+ Christian Schlittchen <corwin@amber.kn-bremen.de>
| | Enno Rehling <enno@eressea.de>
| Eressea PBEM host | Katja Zedel <katze@felidae.kn-bremen.de>
| (c) 1998 - 2003 | Henning Peters <faroul@beyond.kn-bremen.de>
| | Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
+-------------------+ Stefan Reich <reich@halbling.de>
This program may not be used, modified or distributed
without prior permission by the authors of Eressea.
*/
#ifndef H_MOD_DUNGEON
#define H_MOD_DUNGEON
#ifdef __cplusplus
extern "C" {
#endif
#if DUNGEON_MODULE == 0
#error "must define DUNGEON_MODULE to use this module"
#endif
struct region;
struct plane;
struct building;
struct dungeon;
extern struct dungeon *dungeonstyles;
extern struct region *make_dungeon(const struct dungeon *);
extern void make_dungeongate(struct region *source, struct region *target,
const struct dungeon *);
extern void register_dungeon(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -41,7 +41,6 @@
#define SCORE_MODULE 1 #define SCORE_MODULE 1
#define MUSEUM_MODULE 1 #define MUSEUM_MODULE 1
#define ARENA_MODULE 1 #define ARENA_MODULE 1
#define DUNGEON_MODULE 0
#define CHANGED_CROSSBOWS 0 /* use the WTF_ARMORPIERCING flag */ #define CHANGED_CROSSBOWS 0 /* use the WTF_ARMORPIERCING flag */
#undef GLOBAL_WARMING /* number of turns before global warming sets in */ #undef GLOBAL_WARMING /* number of turns before global warming sets in */