From 012cdf5066b4eaf1b4429ef6e19e0a53703ea142 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Thu, 1 Oct 2009 20:57:22 +0000 Subject: [PATCH] multiple errors in dragon-magic (power-related) --- src/common/gamecode/creport.c | 32 +++++++++++++++++--------------- src/common/kernel/battle.c | 5 ++--- src/common/kernel/magic.c | 2 +- src/common/kernel/magic.h | 2 ++ src/common/spells/combatspells.c | 4 ++-- 5 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/common/gamecode/creport.c b/src/common/gamecode/creport.c index 90a36961f..b408f8d84 100644 --- a/src/common/gamecode/creport.c +++ b/src/common/gamecode/creport.c @@ -1146,21 +1146,23 @@ cr_output_region(FILE * F, report_context * ctx, seen_region * sr) pnormalize(&nx, &ny, pl); } - if (ny==pl->maxy) { - oc[o][0] = nx; - oc[o++][1] = pl->miny-1; - } - if (nx==pl->maxx) { - oc[o][0] = pl->minx-1; - oc[o++][1] = ny; - } - if (ny==pl->miny) { - oc[o][0] = nx; - oc[o++][1] = pl->maxy+1; - } - if (nx==pl->minx) { - oc[o][0] = pl->maxx+1; - oc[o++][1] = ny; + if (pl) { + if (ny==pl->maxy) { + oc[o][0] = nx; + oc[o++][1] = pl->miny-1; + } + if (nx==pl->maxx) { + oc[o][0] = pl->minx-1; + oc[o++][1] = ny; + } + if (ny==pl->miny) { + oc[o][0] = nx; + oc[o++][1] = pl->maxy+1; + } + if (nx==pl->minx) { + oc[o][0] = pl->maxx+1; + oc[o++][1] = ny; + } } while (o--) { cr_region_header(F, plid, oc[o][0], oc[o][1], r->uid); diff --git a/src/common/kernel/battle.c b/src/common/kernel/battle.c index 540027690..022a79abc 100644 --- a/src/common/kernel/battle.c +++ b/src/common/kernel/battle.c @@ -1873,10 +1873,9 @@ do_extra_spell(troop at, const att *a) const spell *sp = a->data.sp; fighter *fi = at.fighter; unit *au = fi->unit; - int power; + double power; - /* nur bei Monstern können mehrere 'Magier' in einer Einheit sein */ - power = sp->level * au->number; + power = sp->level * MagicPower(); if (sp->sp_function==NULL) { log_error(("spell '%s' has no function.\n", sp->sname)); } else { diff --git a/src/common/kernel/magic.c b/src/common/kernel/magic.c index 1c0f93b09..e7b4d601c 100644 --- a/src/common/kernel/magic.c +++ b/src/common/kernel/magic.c @@ -105,7 +105,7 @@ MagicRegeneration(void) return value; } -static double +double MagicPower(void) { static double value = -1.0; diff --git a/src/common/kernel/magic.h b/src/common/kernel/magic.h index 686309fd1..236ddb6c1 100644 --- a/src/common/kernel/magic.h +++ b/src/common/kernel/magic.h @@ -384,6 +384,8 @@ extern struct spell_list ** get_spelllist(struct sc_mage * mage, struct faction extern void write_spelllist(const struct spell_list * slist, struct storage * store); extern void read_spellist(struct spell_list ** slistp, struct storage * store); +extern double MagicPower(void); + #ifdef __cplusplus } #endif diff --git a/src/common/spells/combatspells.c b/src/common/spells/combatspells.c index 61554381a..fd5e2e39d 100644 --- a/src/common/spells/combatspells.c +++ b/src/common/spells/combatspells.c @@ -601,7 +601,7 @@ sp_dragonodem(fighter * fi, int level, double power, spell * sp) /* 11-26 HP */ damage = spell_damage(4); /* Jungdrache 3->54, Drache 6->216, Wyrm 12->864 Treffer */ - force = lovar(get_force(level,6)); + force = lovar(get_force(power, 6)); enemies = count_enemies(b, fi, FIGHT_ROW, BEHIND_ROW-1, SELECT_ADVANCE); @@ -697,7 +697,7 @@ sp_drainodem(fighter * fi, int level, double power, spell * sp) /* 11-26 HP */ damage = spell_damage(4); /* Jungdrache 3->54, Drache 6->216, Wyrm 12->864 Treffer */ - force = lovar(get_force(level,6)); + force = lovar(get_force(power, 6)); enemies = count_enemies(b, fi, FIGHT_ROW, BEHIND_ROW-1, SELECT_ADVANCE);