forked from github/server
Speedups:
- side::alive und battle::alive wird kontinuierlich mitgeführt - Aufpassen! - erste Ideen für FAST_GETUNITROW -- klappt aber noch nicht mit nonblockers, d.h. es disabled sich ist in Kämpfen mit denen selbsttätig
This commit is contained in:
parent
1f0e649185
commit
e211a578eb
|
@ -1,6 +1,5 @@
|
||||||
/* vi: set ts=2:
|
/* vi: set ts=2:
|
||||||
*
|
*
|
||||||
* $Id: alchemy.h,v 1.2 2001/01/26 16:19:39 enno 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)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* vi: set ts=2:
|
/* vi: set ts=2:
|
||||||
*
|
*
|
||||||
* $Id: battle.c,v 1.13 2001/02/14 08:35:12 katze Exp $
|
* $Id: battle.c,v 1.14 2001/02/14 09:17:56 enno 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)
|
||||||
|
@ -22,11 +22,8 @@
|
||||||
|
|
||||||
|
|
||||||
typedef enum combatmagic {
|
typedef enum combatmagic {
|
||||||
|
|
||||||
DO_PRECOMBATSPELL,
|
DO_PRECOMBATSPELL,
|
||||||
|
|
||||||
DO_POSTCOMBATSPELL
|
DO_POSTCOMBATSPELL
|
||||||
|
|
||||||
} combatmagic_t;
|
} combatmagic_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -461,6 +458,11 @@ get_unitrow(const fighter * af)
|
||||||
int front = 0;
|
int front = 0;
|
||||||
size_t bsize;
|
size_t bsize;
|
||||||
|
|
||||||
|
#ifdef FAST_GETUNITROW
|
||||||
|
if (!b->nonblockers && b->alive==af->row.alive) {
|
||||||
|
return af->row.cached;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
bsize = cv_size(&b->sides);
|
bsize = cv_size(&b->sides);
|
||||||
|
|
||||||
if (csize<bsize) {
|
if (csize<bsize) {
|
||||||
|
@ -504,6 +506,10 @@ get_unitrow(const fighter * af)
|
||||||
*/
|
*/
|
||||||
result = max(FIRST_ROW, row - retreat);
|
result = max(FIRST_ROW, row - retreat);
|
||||||
|
|
||||||
|
#ifdef FAST_GETUNITROW
|
||||||
|
af->row.alive = b->alive;
|
||||||
|
af->row.cached = result;
|
||||||
|
#endif
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -797,6 +803,8 @@ rmtroop(troop dt)
|
||||||
side *ds = df->side;
|
side *ds = df->side;
|
||||||
|
|
||||||
--df->alive;
|
--df->alive;
|
||||||
|
--df->side->alive;
|
||||||
|
--df->side->battle->alive;
|
||||||
assert(dt.index >= 0 && dt.index < df->unit->number);
|
assert(dt.index >= 0 && dt.index < df->unit->number);
|
||||||
assert(df->alive < df->unit->number);
|
assert(df->alive < df->unit->number);
|
||||||
df->person[dt.index] = df->person[df->alive - df->removed];
|
df->person[dt.index] = df->person[df->alive - df->removed];
|
||||||
|
@ -2162,16 +2170,23 @@ aftermath(battle * b)
|
||||||
#ifdef TROLLSAVE
|
#ifdef TROLLSAVE
|
||||||
/* Trolle können regenerieren */
|
/* Trolle können regenerieren */
|
||||||
if (df->alive > 0 && dead && du->race == RC_TROLL)
|
if (df->alive > 0 && dead && du->race == RC_TROLL)
|
||||||
for (i = 0; i != dead; ++i)
|
for (i = 0; i != dead; ++i) {
|
||||||
if (chance(TROLL_REGENERATION))
|
if (chance(TROLL_REGENERATION)) {
|
||||||
++df->alive;
|
++df->alive;
|
||||||
|
++df->side->alive;
|
||||||
|
++df->side->battle->alive;
|
||||||
|
}
|
||||||
|
}
|
||||||
trollsave[df->side->index] += dead - du->number + df->alive;
|
trollsave[df->side->index] += dead - du->number + df->alive;
|
||||||
#endif
|
#endif
|
||||||
/* Regeneration durch PR_MERCY */
|
/* Regeneration durch PR_MERCY */
|
||||||
if (dead && pr_mercy)
|
if (dead && pr_mercy)
|
||||||
for (i = 0; i != dead; ++i)
|
for (i = 0; i != dead; ++i)
|
||||||
if (rand()%100 < pr_mercy)
|
if (rand()%100 < pr_mercy) {
|
||||||
++df->alive;
|
++df->alive;
|
||||||
|
++df->side->alive;
|
||||||
|
++df->side->battle->alive;
|
||||||
|
}
|
||||||
|
|
||||||
/* Tote, die wiederbelebt werde können */
|
/* Tote, die wiederbelebt werde können */
|
||||||
if (!nonplayer(df->unit)) {
|
if (!nonplayer(df->unit)) {
|
||||||
|
@ -2212,7 +2227,6 @@ aftermath(battle * b)
|
||||||
if (s->bf->lastturn+(b->has_tactics_turn?1:0)>1) {
|
if (s->bf->lastturn+(b->has_tactics_turn?1:0)>1) {
|
||||||
relevant = true;
|
relevant = true;
|
||||||
}
|
}
|
||||||
s->alive = 0;
|
|
||||||
s->flee = 0;
|
s->flee = 0;
|
||||||
s->dead = 0;
|
s->dead = 0;
|
||||||
|
|
||||||
|
@ -2235,7 +2249,6 @@ aftermath(battle * b)
|
||||||
|
|
||||||
s->dead += dead;
|
s->dead += dead;
|
||||||
s->flee += df->run_number;
|
s->flee += df->run_number;
|
||||||
s->alive += df->alive;
|
|
||||||
|
|
||||||
if (df->alive == du->number) continue; /* nichts passiert */
|
if (df->alive == du->number) continue; /* nichts passiert */
|
||||||
|
|
||||||
|
@ -2707,6 +2720,8 @@ make_fighter(battle * b, unit * u, boolean attack)
|
||||||
fig->status = u->status;
|
fig->status = u->status;
|
||||||
fig->side = s1;
|
fig->side = s1;
|
||||||
fig->alive = u->number;
|
fig->alive = u->number;
|
||||||
|
fig->side->alive += u->number;
|
||||||
|
fig->side->battle->alive += u->number;
|
||||||
fig->catmsg = -1;
|
fig->catmsg = -1;
|
||||||
|
|
||||||
/* Freigeben nicht vergessen! */
|
/* Freigeben nicht vergessen! */
|
||||||
|
@ -2838,6 +2853,9 @@ make_fighter(battle * b, unit * u, boolean attack)
|
||||||
s1->size[SUM_ROW] += u->number;
|
s1->size[SUM_ROW] += u->number;
|
||||||
if (race[u->race].battle_flags & BF_NOBLOCK) {
|
if (race[u->race].battle_flags & BF_NOBLOCK) {
|
||||||
s1->nonblockers[fig->status + FIGHT_ROW] += u->number;
|
s1->nonblockers[fig->status + FIGHT_ROW] += u->number;
|
||||||
|
#ifdef FAST_GETUNITROW
|
||||||
|
b->nonblockers = true;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (race[fig->unit->race].flags & RCF_HORSE) {
|
if (race[fig->unit->race].flags & RCF_HORSE) {
|
||||||
|
@ -3094,14 +3112,6 @@ battle_report(battle * b)
|
||||||
bfaction *bf;
|
bfaction *bf;
|
||||||
|
|
||||||
buf[0] = 0;
|
buf[0] = 0;
|
||||||
for_each(s, b->sides) {
|
|
||||||
fighter *f;
|
|
||||||
|
|
||||||
s->alive = 0;
|
|
||||||
for_each(f, s->fighters) {
|
|
||||||
s->alive += f->alive;
|
|
||||||
} next(f);
|
|
||||||
} next(s);
|
|
||||||
|
|
||||||
for_each(s, b->sides) {
|
for_each(s, b->sides) {
|
||||||
for_each(s2, b->sides) {
|
for_each(s2, b->sides) {
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* vi: set ts=2:
|
/* vi: set ts=2:
|
||||||
*
|
*
|
||||||
* $Id: battle.h,v 1.3 2001/02/14 01:38:50 enno 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)
|
||||||
|
@ -15,11 +14,18 @@
|
||||||
#ifndef BATTLE_H
|
#ifndef BATTLE_H
|
||||||
#define BATTLE_H
|
#define BATTLE_H
|
||||||
|
|
||||||
|
/** new code defines **/
|
||||||
|
#define FAST_GETUNITROW
|
||||||
|
#define FASTENEMY
|
||||||
|
|
||||||
|
/** more defines **/
|
||||||
#define FS_ENEMY 1
|
#define FS_ENEMY 1
|
||||||
#define FS_HELP 2
|
#define FS_HELP 2
|
||||||
|
|
||||||
#define NUMROWS 5 /* Eressea hat 4 Verteidigungslinien. 1 ist
|
/***** Verteidigungslinien.
|
||||||
* * * vorn */
|
* Eressea hat 4 Verteidigungslinien. 1 ist vorn, 5. enthält Summen
|
||||||
|
*/
|
||||||
|
#define NUMROWS 5
|
||||||
#define SUM_ROW 0
|
#define SUM_ROW 0
|
||||||
#define FIGHT_ROW 1
|
#define FIGHT_ROW 1
|
||||||
#define BEHIND_ROW 2
|
#define BEHIND_ROW 2
|
||||||
|
@ -51,7 +57,11 @@ typedef struct battle {
|
||||||
int keeploot;
|
int keeploot;
|
||||||
boolean reelarrow;
|
boolean reelarrow;
|
||||||
int dh;
|
int dh;
|
||||||
|
int alive;
|
||||||
boolean small;
|
boolean small;
|
||||||
|
#ifdef FAST_GETUNITROW
|
||||||
|
boolean nonblockers;
|
||||||
|
#endif
|
||||||
} battle;
|
} battle;
|
||||||
|
|
||||||
typedef struct tactics {
|
typedef struct tactics {
|
||||||
|
@ -66,7 +76,6 @@ typedef struct side {
|
||||||
struct faction *faction; /* Die Partei, die hier kämpft */
|
struct faction *faction; /* Die Partei, die hier kämpft */
|
||||||
struct bfaction * bf; /* Die Partei, die hier kämpft */
|
struct bfaction * bf; /* Die Partei, die hier kämpft */
|
||||||
const struct group * group;
|
const struct group * group;
|
||||||
#define FASTENEMY
|
|
||||||
#ifdef FASTENEMY
|
#ifdef FASTENEMY
|
||||||
# define E_ENEMY 1
|
# define E_ENEMY 1
|
||||||
# define E_ATTACKING 2
|
# define E_ATTACKING 2
|
||||||
|
@ -168,6 +177,12 @@ typedef struct fighter {
|
||||||
int run_hp; /* accumulated hp of fleeing people */
|
int run_hp; /* accumulated hp of fleeing people */
|
||||||
struct region *run_to; /* destination of fleeing people */
|
struct region *run_to; /* destination of fleeing people */
|
||||||
int action_counter; /* number of active actions the struct unit did in the fight */
|
int action_counter; /* number of active actions the struct unit did in the fight */
|
||||||
|
#ifdef FAST_GETUNITROW
|
||||||
|
struct {
|
||||||
|
int alive;
|
||||||
|
int cached;
|
||||||
|
} row;
|
||||||
|
#endif
|
||||||
} fighter;
|
} fighter;
|
||||||
|
|
||||||
typedef struct troop {
|
typedef struct troop {
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* vi: set ts=2:
|
/* vi: set ts=2:
|
||||||
*
|
*
|
||||||
* $Id: build.h,v 1.2 2001/01/26 16:19:39 enno 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)
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* vi: set ts=2:
|
/* vi: set ts=2:
|
||||||
*
|
*
|
||||||
* $Id: building.h,v 1.2 2001/01/26 16:19:39 enno 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)
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* vi: set ts=2:
|
/* vi: set ts=2:
|
||||||
*
|
*
|
||||||
* $Id: curse.h,v 1.4 2001/02/03 13:45:32 enno 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)
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* vi: set ts=2:
|
/* vi: set ts=2:
|
||||||
*
|
*
|
||||||
* $Id: eressea.h,v 1.17 2001/02/12 22:39:56 enno 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)
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* vi: set ts=2:
|
/* vi: set ts=2:
|
||||||
*
|
*
|
||||||
* $Id: faction.h,v 1.2 2001/01/26 16:19:39 enno 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)
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* vi: set ts=2:
|
/* vi: set ts=2:
|
||||||
*
|
*
|
||||||
* $Id: group.h,v 1.2 2001/01/26 16:19:39 enno 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)
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* vi: set ts=2:
|
/* vi: set ts=2:
|
||||||
*
|
*
|
||||||
* $Id: item.h,v 1.5 2001/02/14 07:44:57 enno 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)
|
||||||
|
|
|
@ -155,18 +155,10 @@ SOURCE=.\building.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\creation.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\curse.h
|
SOURCE=.\curse.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\economy.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\eressea.h
|
SOURCE=.\eressea.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
Binary file not shown.
|
@ -44,7 +44,7 @@ RSC=rc.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||||
# ADD CPP /nologo /Za /W4 /GX /Z7 /O2 /I ".." /I "../common" /I "../common/util" /I "../common/kernel" /I "../common/gamecode" /D "_CONSOLE" /D "_MBCS" /D "WIN32" /D "NDEBUG" /D "CONVERT_TRIGGER" /YX /FD /c
|
# ADD CPP /nologo /Za /W4 /GX /Z7 /O2 /I ".." /I "../common" /I "../common/util" /I "../common/kernel" /I "../common/gamecode" /D "_CONSOLE" /D "_MBCS" /D "WIN32" /D "NDEBUG" /D "CONVERT_TRIGGER" /FR /YX /FD /c
|
||||||
# ADD BASE RSC /l 0x407 /d "NDEBUG"
|
# ADD BASE RSC /l 0x407 /d "NDEBUG"
|
||||||
# ADD RSC /l 0x407 /d "NDEBUG"
|
# ADD RSC /l 0x407 /d "NDEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
|
|
Loading…
Reference in New Issue