- Neuer Draig-Zauber

This commit is contained in:
Christian Schlittchen 2001-01-31 14:32:59 +00:00
parent 74604e5806
commit 301109f949
5 changed files with 114 additions and 19 deletions

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: spell.c,v 1.3 2001/01/31 13:03:18 corwin Exp $ * $Id: spell.c,v 1.4 2001/01/31 14:32:58 corwin Exp $
* Eressea PB(E)M host Copyright (C) 1998-2000 * Eressea PB(E)M host Copyright (C) 1998-2000
* Christian Schlittchen (corwin@amber.kn-bremen.de) * Christian Schlittchen (corwin@amber.kn-bremen.de)
* Katja Zedel (katze@felidae.kn-bremen.de) * Katja Zedel (katze@felidae.kn-bremen.de)
@ -3016,6 +3016,78 @@ sp_wisps(castorder *co)
return cast_level; return cast_level;
} }
#endif #endif
/* ------------------------------------------------------------- */
/* Name: Unheilige Kraft
* Stufe: 10
* Gebiet: Draig
* Kategorie: Untote Einheit, positiv
*
* Wirkung:
* transformiert (Stufe)W10 Untote in ihre stärkere Form
*
*
* Flag:
* (SPELLLEVEL | TESTCANSEE)
*/
static int
sp_unholypower(castorder *co)
{
unit *mage = (unit *)co->magician;
int cast_level = co->level;
spellparameter *pa = co->par;
int i;
int n;
n = dice(cast_level, 10);
for (i = 0; i < pa->length && n > 0; i++) {
race_t target_race;
unit *u = pa->param[n]->data.u;
switch(u->race) {
case RC_SKELETON:
target_race = RC_SKELETON_LORD; break;
case RC_ZOMBIE:
target_race = RC_ZOMBIE_LORD; break;
case RC_GHOUL:
target_race = RC_GHOUL_LORD; break;
default:
cmistake(mage, strdup(co->order), 280, MSG_MAGIC);
continue;
}
if(u->number <= n) {
n -= u->number;
u->race = target_race;
add_message(&co->rt->msgs, new_message(mage->faction,
"unholypower_effect%u:mage%u:target%s:targetrace", mage, u));
} else {
unit *un;
/* Wird hoffentlich niemals vorkommen. Es gibt im Source
* vermutlich eine ganze Reihe von Stellen, wo das nicht
* korrekt abgefangen wird. Besser (aber nicht gerade einfach)
* wäre es, eine solche Konstruktion irgendwie zu kapseln. */
if(fval(u, FL_LOCKED) || fval(u, FL_HUNGER)
|| is_cursed(u->attribs, C_SLAVE, 0)) {
cmistake(mage, strdup(co->order), 74, MSG_MAGIC);
continue;
}
un = createunit(co->rt, u->faction, n, target_race);
scale_number(u, u->number - n);
add_message(&co->rt->msgs, new_message(mage->faction,
"unholypower_limitedeffect%u:mage%u:target%s:race%i:amount",
mage, u, race[u->race].name[n==1?0:1], n));
n = 0;
}
}
return cast_level;
}
/* ------------------------------------------------------------- */ /* ------------------------------------------------------------- */
/* Name: Todeswolke /* Name: Todeswolke
* Stufe: 11 * Stufe: 11
@ -7830,6 +7902,24 @@ spell spelldaten[] =
{0, 0, 0}}, {0, 0, 0}},
(spell_f)sp_destroy_magic, patzer (spell_f)sp_destroy_magic, patzer
}, },
{SPL_UNHOLYPOWER, "Unheilige Kraft",
"Nur geflüstert wird dieses Ritual an den dunklen Akademien an die "
"Adepten weitergegeben, gehört es doch zu den finstersten, die je "
"niedergeschrieben wurden. Durch die Anrufung unheiliger Dämonen "
"wird die Kraft der lebenden Toten verstärkt und sie verwandeln "
"sich in untote Monster großer Kraft.",
NULL,
"u+",
M_CHAOS, (SPELLLEVEL | TESTCANSEE), 5, 10,
{
{R_AURA, 8, SPC_LEVEL},
{R_PEASANTS, 50, SPC_LEVEL},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0}},
(spell_f)sp_unholypower, patzer
},
{SPL_DEATHCLOUD, "Todeswolke", {SPL_DEATHCLOUD, "Todeswolke",
"Mit einem düsteren Ritual und unter Opferung seines eigenen Blutes " "Mit einem düsteren Ritual und unter Opferung seines eigenen Blutes "
@ -8001,14 +8091,15 @@ spell spelldaten[] =
}, },
{SPL_PUTTOREST, "Seelenfrieden", {SPL_PUTTOREST, "Seelenfrieden",
"Dieses magische Ritual beruhigt die gequälten Seelen der gewaltsam zu Tode " "Dieses magische Ritual beruhigt die gequälten Seelen der gewaltsam "
"gekommenen und ermöglicht es ihnen so, ihre letzte Reise in die Anderlande " "zu Tode gekommenen und ermöglicht es ihnen so, ihre letzte Reise in "
"zu beginnen. Je Stufe des Zaubers werden ungefähr 50 Seelen ihre Ruhe " "die Anderlande zu beginnen. Je Stufe des Zaubers werden ungefähr 50 "
"finden. Der Zauber vermag nicht, bereits wieder auferstandene lebende Tote " "Seelen ihre Ruhe finden. Der Zauber vermag nicht, bereits wieder "
"zu erlösen, da deren Bindung an diese Welt zu stark ist.", "auferstandene lebende Tote zu erlösen, da deren Bindung an diese "
"Welt zu stark ist.",
NULL, NULL,
NULL, NULL,
M_TRAUM, (0), 5, 2, M_TRAUM, (SPELLLEVEL), 5, 2,
{ {
{R_AURA, 3, SPC_LEVEL}, {R_AURA, 3, SPC_LEVEL},
{R_TREES, 1, SPC_FIX}, {R_TREES, 1, SPC_FIX},
@ -8019,10 +8110,10 @@ spell spelldaten[] =
}, },
{SPL_ICASTLE, "Traumschlößchen", {SPL_ICASTLE, "Traumschlößchen",
"Mit Hilfe dieses Zaubers kann der Traumweber die Illusion eines beliebigen " "Mit Hilfe dieses Zaubers kann der Traumweber die Illusion eines "
"Gebäudes erzeugen. Die Illusion kann betreten werden, ist aber ansonsten " "beliebigen Gebäudes erzeugen. Die Illusion kann betreten werden, ist "
"funktionslos und benötigt auch keinen Unterhalt. Sie wird einige Wochen " "aber ansonsten funktionslos und benötigt auch keinen Unterhalt. Sie "
"bestehen bleiben.", "wird einige Wochen bestehen bleiben.",
"ZAUBERE \"Traumschlößchen\" <Gebäude-Typ>", "ZAUBERE \"Traumschlößchen\" <Gebäude-Typ>",
"c", "c",
M_TRAUM, (0), 5, 3, M_TRAUM, (0), 5, 3,

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: spell.h,v 1.3 2001/01/31 13:03:19 corwin Exp $ * $Id: spell.h,v 1.4 2001/01/31 14:32:58 corwin Exp $
* Eressea PB(E)M host Copyright (C) 1998-2000 * Eressea PB(E)M host Copyright (C) 1998-2000
* Christian Schlittchen (corwin@amber.kn-bremen.de) * Christian Schlittchen (corwin@amber.kn-bremen.de)
* Katja Zedel (katze@felidae.kn-bremen.de) * Katja Zedel (katze@felidae.kn-bremen.de)
@ -192,6 +192,7 @@ enum {
SPL_BECOMEWYRM, SPL_BECOMEWYRM,
SPL_ETERNIZEWALL, SPL_ETERNIZEWALL,
SPL_PUTTOREST, SPL_PUTTOREST,
SPL_UNHOLYPOWER,
MAXALLSPELLS, MAXALLSPELLS,
NO_SPELL = (spellid_t) -1 NO_SPELL = (spellid_t) -1
}; };

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: zombies.c,v 1.2 2001/01/26 16:19:41 enno Exp $ * $Id: zombies.c,v 1.3 2001/01/31 14:32:58 corwin Exp $
* Eressea PB(E)M host Copyright (C) 1998-2000 * Eressea PB(E)M host Copyright (C) 1998-2000
* Christian Schlittchen (corwin@amber.kn-bremen.de) * Christian Schlittchen (corwin@amber.kn-bremen.de)
* Katja Zedel (katze@felidae.kn-bremen.de) * Katja Zedel (katze@felidae.kn-bremen.de)
@ -85,7 +85,7 @@ age_undead(unit *u)
void void
age_skeleton(unit *u) age_skeleton(unit *u)
{ {
if (rand()%100 < age_chance(u->age, 27, 1)) { if (u->faction->no == 0 && rand()%100 < age_chance(u->age, 27, 1)) {
double q = (double) u->hp / (double) (unit_max_hp(u) * u->number); double q = (double) u->hp / (double) (unit_max_hp(u) * u->number);
u->race = RC_SKELETON_LORD; u->race = RC_SKELETON_LORD;
u->irace = RC_SKELETON_LORD; u->irace = RC_SKELETON_LORD;
@ -97,7 +97,7 @@ age_skeleton(unit *u)
void void
age_zombie(unit *u) age_zombie(unit *u)
{ {
if (rand()%100 < age_chance(u->age, 27, 1)) { if (u->faction->no == 0 && rand()%100 < age_chance(u->age, 27, 1)) {
double q = (double) u->hp / (double) (unit_max_hp(u) * u->number); double q = (double) u->hp / (double) (unit_max_hp(u) * u->number);
u->race = RC_ZOMBIE_LORD; u->race = RC_ZOMBIE_LORD;
u->irace = RC_ZOMBIE_LORD; u->irace = RC_ZOMBIE_LORD;
@ -109,7 +109,7 @@ age_zombie(unit *u)
void void
age_ghoul(unit *u) age_ghoul(unit *u)
{ {
if (rand()%100 < age_chance(u->age, 27, 1)) { if (u->faction->no == 0 && rand()%100 < age_chance(u->age, 27, 1)) {
double q = (double) u->hp / (double) (unit_max_hp(u) * u->number); double q = (double) u->hp / (double) (unit_max_hp(u) * u->number);
u->race = RC_GHOUL_LORD; u->race = RC_GHOUL_LORD;
u->irace = RC_GHOUL_LORD; u->irace = RC_GHOUL_LORD;

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: korrektur.c,v 1.7 2001/01/31 13:03:20 corwin Exp $ * $Id: korrektur.c,v 1.8 2001/01/31 14:32:59 corwin Exp $
* Eressea PB(E)M host Copyright (C) 1998-2000 * Eressea PB(E)M host Copyright (C) 1998-2000
* Christian Schlittchen (corwin@amber.kn-bremen.de) * Christian Schlittchen (corwin@amber.kn-bremen.de)
* Katja Zedel (katze@felidae.kn-bremen.de) * Katja Zedel (katze@felidae.kn-bremen.de)
@ -998,7 +998,7 @@ show_newspells(void)
/* Alle geänderten Zauber in das array newspellids[]. mit SPL_NOSPELL /* Alle geänderten Zauber in das array newspellids[]. mit SPL_NOSPELL
* terminieren */ * terminieren */
spellid_t newspellids[] = { SPL_ETERNIZEWALL, SPL_PUTTOREST, SPL_NOSPELL }; spellid_t newspellids[] = { SPL_ETERNIZEWALL, SPL_PUTTOREST, SPL_UNHOLYPOWER, SPL_NOSPELL };
/* die id's der neuen oder veränderten Sprüche werden in newspellids[] /* die id's der neuen oder veränderten Sprüche werden in newspellids[]
* abgelegt */ * abgelegt */

View File

@ -1,5 +1,5 @@
# Kommentare sind erlaubt. Endlich. # Kommentare sind erlaubt. Endlich.
# $Id: messages.de,v 1.2 2001/01/31 13:03:20 corwin Exp $ # $Id: messages.de,v 1.3 2001/01/31 14:32:59 corwin Exp $
# Fehlermeldungen: # Fehlermeldungen:
msg_errors;errors:0;de;{string} msg_errors;errors:0;de;{string}
@ -279,6 +279,7 @@ error276;errors:0;de;{unit} in {region}: '{command}' - Hier kann man keine Schif
error277;errors:0;de;{unit} in {region}: '{command}' - Das kann die Einheit nicht. error277;errors:0;de;{unit} in {region}: '{command}' - Das kann die Einheit nicht.
error278;errors:0;de;{unit} in {region}: '{command}' - Der Name des Gebäudes kann nicht geändert werden. error278;errors:0;de;{unit} in {region}: '{command}' - Der Name des Gebäudes kann nicht geändert werden.
error279;errors:0;de;{unit} in {region}: '{command}' - Die Beschreibung des Gebäudes kann nicht geändert werden. error279;errors:0;de;{unit} in {region}: '{command}' - Die Beschreibung des Gebäudes kann nicht geändert werden.
error280;errors:0;de;{unit} in {region}: '{command}' - Nur Untote können das Ziel dieses Zaubers sein.
# Meldungen und Ereignisse # Meldungen und Ereignisse
msg_event;events:0;de;{string} msg_event;events:0;de;{string}
@ -481,6 +482,8 @@ firewall_effect;magic:0;de;{mage} erschafft in {region} eine Wand aus Feuer.
wisps_effect;magic:0;de;{mage} ruft Irrlichter in {region}. wisps_effect;magic:0;de;{mage} ruft Irrlichter in {region}.
becomewyrm;magic;2;de;{mage} verwandelt sich in einen Wyrm. becomewyrm;magic;2;de;{mage} verwandelt sich in einen Wyrm.
puttorest;magic;0;de;{mage} befreit die gequälten Seelen der Toten. puttorest;magic;0;de;{mage} befreit die gequälten Seelen der Toten.
unholypower_effect;0;de;{mage} verwandelt {target}.
unholypower_effect;0;de;{mage} verwandelt {amount} {race} aus {target}.
# Kämpfe # Kämpfe
msg_battle;battle:0;de;{string} msg_battle;battle:0;de;{string}