mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-01-23 15:36:59 +00:00
further cleanup
This commit is contained in:
parent
05bd7a905c
commit
65c4e6a31c
@ -5,6 +5,7 @@ namespace hr {
|
|||||||
|
|
||||||
EX int steplimit = 0;
|
EX int steplimit = 0;
|
||||||
EX int cstep;
|
EX int cstep;
|
||||||
|
EX bool buggyGeneration = false;
|
||||||
|
|
||||||
EX vector<cell*> buggycells;
|
EX vector<cell*> buggycells;
|
||||||
|
|
||||||
@ -34,8 +35,6 @@ cell *pathTowards(cell *pf, cell *pt) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool buggyGeneration = false;
|
|
||||||
|
|
||||||
bool errorReported = false;
|
bool errorReported = false;
|
||||||
|
|
||||||
void describeCell(cell *c) {
|
void describeCell(cell *c) {
|
||||||
@ -575,7 +574,7 @@ void test_distances(int max) {
|
|||||||
println(hlog, "ok=", ok, " bad=", bad);
|
println(hlog, "ok=", ok, " bad=", bad);
|
||||||
}
|
}
|
||||||
|
|
||||||
void raiseBuggyGeneration(cell *c, const char *s) {
|
EX void raiseBuggyGeneration(cell *c, const char *s) {
|
||||||
|
|
||||||
printf("procgen error (%p): %s\n", c, s);
|
printf("procgen error (%p): %s\n", c, s);
|
||||||
|
|
||||||
|
@ -315,13 +315,13 @@ bool survivesFall(eMonster m) {
|
|||||||
return isBird(m) || m == moAirElemental || m == moSkeleton || isDragon(m) || m == moShadow || isGhostAether(m);
|
return isBird(m) || m == moAirElemental || m == moSkeleton || isDragon(m) || m == moShadow || isGhostAether(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool checkOrb(eMonster m1, eItem orb) {
|
EX bool checkOrb(eMonster m1, eItem orb) {
|
||||||
if(m1 == moPlayer) return markOrb(orb);
|
if(m1 == moPlayer) return markOrb(orb);
|
||||||
if(isFriendly(m1)) return markEmpathy(orb);
|
if(isFriendly(m1)) return markEmpathy(orb);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool checkOrb2(eMonster m1, eItem orb) {
|
EX bool checkOrb2(eMonster m1, eItem orb) {
|
||||||
if(m1 == moPlayer) return markOrb2(orb);
|
if(m1 == moPlayer) return markOrb2(orb);
|
||||||
if(isFriendly(m1)) return markEmpathy2(orb);
|
if(isFriendly(m1)) return markEmpathy2(orb);
|
||||||
return false;
|
return false;
|
||||||
|
56
game.cpp
56
game.cpp
@ -87,7 +87,8 @@ int safetyseed;
|
|||||||
|
|
||||||
int showid = 0;
|
int showid = 0;
|
||||||
|
|
||||||
bool invismove = false, invisfish = false; // last move was invisible [due to Fish]
|
EX bool invismove = false;
|
||||||
|
EX bool invisfish = false; // last move was invisible [due to Fish]
|
||||||
|
|
||||||
int noiseuntil; // noise until the given turn
|
int noiseuntil; // noise until the given turn
|
||||||
|
|
||||||
@ -107,8 +108,8 @@ bool eq(short a, short b) { return a==b; }
|
|||||||
EX array<int, ittypes> items;
|
EX array<int, ittypes> items;
|
||||||
EX array<int, motypes> kills;
|
EX array<int, motypes> kills;
|
||||||
|
|
||||||
int explore[10], exploreland[10][landtypes], landcount[landtypes];
|
EX int explore[10], exploreland[10][landtypes], landcount[landtypes];
|
||||||
map<modecode_t, array<int, ittypes> > hiitems;
|
EX map<modecode_t, array<int, ittypes> > hiitems;
|
||||||
bool orbused[ittypes], lastorbused[ittypes];
|
bool orbused[ittypes], lastorbused[ittypes];
|
||||||
EX bool playermoved = true; // center on the PC?
|
EX bool playermoved = true; // center on the PC?
|
||||||
bool flipplayer = true; // flip the player image after move, do not flip after attack
|
bool flipplayer = true; // flip the player image after move, do not flip after attack
|
||||||
@ -142,7 +143,7 @@ vector<cell*> movesofgood[MAX_EDGE+1];
|
|||||||
|
|
||||||
int first7; // the position of the first monster at distance 7 in dcal
|
int first7; // the position of the first monster at distance 7 in dcal
|
||||||
|
|
||||||
cellwalker cwt; // single player character position
|
EX cellwalker cwt; // single player character position
|
||||||
|
|
||||||
EX inline cell*& singlepos() { return cwt.at; }
|
EX inline cell*& singlepos() { return cwt.at; }
|
||||||
EX inline bool singleused() { return !(shmup::on || multi::players > 1); }
|
EX inline bool singleused() { return !(shmup::on || multi::players > 1); }
|
||||||
@ -311,6 +312,13 @@ EX void countLocalTreasure() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if HDR
|
||||||
|
static const int NO_TREASURE = 1;
|
||||||
|
static const int NO_YENDOR = 2;
|
||||||
|
static const int NO_GRAIL = 4;
|
||||||
|
static const int NO_LOVE = 8;
|
||||||
|
#endif
|
||||||
|
|
||||||
EX int gold(int no IS(0)) {
|
EX int gold(int no IS(0)) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
if(!(no & NO_YENDOR)) i += items[itOrbYendor] * 50;
|
if(!(no & NO_YENDOR)) i += items[itOrbYendor] * 50;
|
||||||
@ -565,6 +573,44 @@ EX bool anti_alchemy(cell *w, cell *from) {
|
|||||||
return alch1;
|
return alch1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if HDR
|
||||||
|
#define P_MONSTER Flag(0) // can move through monsters
|
||||||
|
#define P_MIRROR Flag(1) // can move through mirrors
|
||||||
|
#define P_REVDIR Flag(2) // reverse direction movement
|
||||||
|
#define P_WIND Flag(3) // can move against the wind
|
||||||
|
#define P_GRAVITY Flag(4) // can move against the gravity
|
||||||
|
#define P_ISPLAYER Flag(5) // player-only moves (like the Round Table jump)
|
||||||
|
#define P_ONPLAYER Flag(6) // always can step on the player
|
||||||
|
#define P_FLYING Flag(7) // is flying
|
||||||
|
#define P_BULLET Flag(8) // bullet can fly through more things
|
||||||
|
#define P_MIRRORWALL Flag(9) // mirror images go through mirror walls
|
||||||
|
#define P_JUMP1 Flag(10) // first part of a jump
|
||||||
|
#define P_JUMP2 Flag(11) // second part of a jump
|
||||||
|
#define P_TELE Flag(12) // teleport onto
|
||||||
|
#define P_BLOW Flag(13) // Orb of Air -- blow, or push
|
||||||
|
#define P_AETHER Flag(14) // aethereal
|
||||||
|
#define P_FISH Flag(15) // swimming
|
||||||
|
#define P_WINTER Flag(16) // fire resistant
|
||||||
|
#define P_USEBOAT Flag(17) // can use boat
|
||||||
|
#define P_NOAETHER Flag(18) // disable AETHER
|
||||||
|
#define P_FRIENDSWAP Flag(19) // can move on friends (to swap with tem)
|
||||||
|
#define P_ISFRIEND Flag(20) // is a friend (can use Empathy + Winter/Aether/Fish combo)
|
||||||
|
#define P_LEADER Flag(21) // can push statues and use boats
|
||||||
|
#define P_MARKWATER Flag(22) // mark Orb of Water as used
|
||||||
|
#define P_EARTHELEM Flag(23) // Earth Elemental
|
||||||
|
#define P_WATERELEM Flag(24) // Water Elemental
|
||||||
|
#define P_IGNORE37 Flag(25) // ignore the triheptagonal board
|
||||||
|
#define P_CHAIN Flag(26) // for chaining moves with boats
|
||||||
|
#define P_DEADLY Flag(27) // suicide moves allowed
|
||||||
|
#define P_ROSE Flag(28) // rose smell
|
||||||
|
#define P_CLIMBUP Flag(29) // allow climbing up
|
||||||
|
#define P_CLIMBDOWN Flag(30) // allow climbing down
|
||||||
|
#define P_REPTILE Flag(31) // is reptile
|
||||||
|
#define P_VOID Flag(32) // void beast
|
||||||
|
#define P_PHASE Flag(33) // phasing movement
|
||||||
|
#define P_PULLMAGNET Flag(34) // pull the other part of the magnet
|
||||||
|
#endif
|
||||||
|
|
||||||
EX bool passable(cell *w, cell *from, flagtype flags) {
|
EX bool passable(cell *w, cell *from, flagtype flags) {
|
||||||
bool revdir = (flags&P_REVDIR);
|
bool revdir = (flags&P_REVDIR);
|
||||||
bool vrevdir = revdir ^ bool(flags&P_VOID);
|
bool vrevdir = revdir ^ bool(flags&P_VOID);
|
||||||
@ -2514,7 +2560,7 @@ EX void fightmessage(eMonster victim, eMonster attacker, bool stun, flagtype fla
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX void fallMonster(cell *c, flagtype flags) {
|
EX void fallMonster(cell *c, flagtype flags IS(0)) {
|
||||||
attackMonster(c, flags, moNone);
|
attackMonster(c, flags, moNone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,9 +10,9 @@ int last_firelimit, firelimit;
|
|||||||
|
|
||||||
EX int inmirrorcount = 0;
|
EX int inmirrorcount = 0;
|
||||||
|
|
||||||
bool spatial_graphics;
|
EX bool spatial_graphics;
|
||||||
bool wmspatial, wmescher, wmplain, wmblack, wmascii;
|
EX bool wmspatial, wmescher, wmplain, wmblack, wmascii;
|
||||||
bool mmspatial, mmhigh, mmmon, mmitem;
|
EX bool mmspatial, mmhigh, mmmon, mmitem;
|
||||||
|
|
||||||
EX int detaillevel = 0;
|
EX int detaillevel = 0;
|
||||||
|
|
||||||
@ -620,7 +620,7 @@ void animallegs(const transmatrix& V, eMonster mo, color_t col, double footphase
|
|||||||
EX bool noshadow;
|
EX bool noshadow;
|
||||||
|
|
||||||
#if CAP_SHAPES
|
#if CAP_SHAPES
|
||||||
void ShadowV(const transmatrix& V, const hpcshape& bp, PPR prio) {
|
EX void ShadowV(const transmatrix& V, const hpcshape& bp, PPR prio IS(PPR::MONSTER_SHADOW)) {
|
||||||
if(WDIM == 2 && GDIM == 3 && bp.shs != bp.she) {
|
if(WDIM == 2 && GDIM == 3 && bp.shs != bp.she) {
|
||||||
auto& p = queuepolyat(V, bp, 0x18, PPR::TRANSPARENT_SHADOW);
|
auto& p = queuepolyat(V, bp, 0x18, PPR::TRANSPARENT_SHADOW);
|
||||||
p.outline = 0;
|
p.outline = 0;
|
||||||
|
11
hud.cpp
11
hud.cpp
@ -58,7 +58,16 @@ EX int subclass(int i) {
|
|||||||
#define GLYPH_TARGET 512
|
#define GLYPH_TARGET 512
|
||||||
#define GLYPH_INSQUARE 1024
|
#define GLYPH_INSQUARE 1024
|
||||||
|
|
||||||
eGlyphsortorder glyphsortorder;
|
#if HDR
|
||||||
|
enum eGlyphsortorder {
|
||||||
|
gsoFirstTop, gsoFirstBottom,
|
||||||
|
gsoLastTop, gsoLastBottom,
|
||||||
|
gsoLand, gsoValue,
|
||||||
|
gsoMAX
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
EX eGlyphsortorder glyphsortorder;
|
||||||
|
|
||||||
int zero = 0;
|
int zero = 0;
|
||||||
|
|
||||||
|
212
hyper.h
212
hyper.h
@ -1165,64 +1165,6 @@ namespace polygonal {
|
|||||||
|
|
||||||
// passable flags
|
// passable flags
|
||||||
|
|
||||||
#define P_MONSTER Flag(0) // can move through monsters
|
|
||||||
#define P_MIRROR Flag(1) // can move through mirrors
|
|
||||||
#define P_REVDIR Flag(2) // reverse direction movement
|
|
||||||
#define P_WIND Flag(3) // can move against the wind
|
|
||||||
#define P_GRAVITY Flag(4) // can move against the gravity
|
|
||||||
#define P_ISPLAYER Flag(5) // player-only moves (like the Round Table jump)
|
|
||||||
#define P_ONPLAYER Flag(6) // always can step on the player
|
|
||||||
#define P_FLYING Flag(7) // is flying
|
|
||||||
#define P_BULLET Flag(8) // bullet can fly through more things
|
|
||||||
#define P_MIRRORWALL Flag(9) // mirror images go through mirror walls
|
|
||||||
#define P_JUMP1 Flag(10) // first part of a jump
|
|
||||||
#define P_JUMP2 Flag(11) // second part of a jump
|
|
||||||
#define P_TELE Flag(12) // teleport onto
|
|
||||||
#define P_BLOW Flag(13) // Orb of Air -- blow, or push
|
|
||||||
#define P_AETHER Flag(14) // aethereal
|
|
||||||
#define P_FISH Flag(15) // swimming
|
|
||||||
#define P_WINTER Flag(16) // fire resistant
|
|
||||||
#define P_USEBOAT Flag(17) // can use boat
|
|
||||||
#define P_NOAETHER Flag(18) // disable AETHER
|
|
||||||
#define P_FRIENDSWAP Flag(19) // can move on friends (to swap with tem)
|
|
||||||
#define P_ISFRIEND Flag(20) // is a friend (can use Empathy + Winter/Aether/Fish combo)
|
|
||||||
#define P_LEADER Flag(21) // can push statues and use boats
|
|
||||||
#define P_MARKWATER Flag(22) // mark Orb of Water as used
|
|
||||||
#define P_EARTHELEM Flag(23) // Earth Elemental
|
|
||||||
#define P_WATERELEM Flag(24) // Water Elemental
|
|
||||||
#define P_IGNORE37 Flag(25) // ignore the triheptagonal board
|
|
||||||
#define P_CHAIN Flag(26) // for chaining moves with boats
|
|
||||||
#define P_DEADLY Flag(27) // suicide moves allowed
|
|
||||||
#define P_ROSE Flag(28) // rose smell
|
|
||||||
#define P_CLIMBUP Flag(29) // allow climbing up
|
|
||||||
#define P_CLIMBDOWN Flag(30) // allow climbing down
|
|
||||||
#define P_REPTILE Flag(31) // is reptile
|
|
||||||
#define P_VOID Flag(32) // void beast
|
|
||||||
#define P_PHASE Flag(33) // phasing movement
|
|
||||||
#define P_PULLMAGNET Flag(34) // pull the other part of the magnet
|
|
||||||
|
|
||||||
bool passable(cell *w, cell *from, flagtype flags);
|
|
||||||
|
|
||||||
bool anti_alchemy(cell *w, cell *from);
|
|
||||||
bool isElemental(eLand l);
|
|
||||||
int coastval(cell *c, eLand base);
|
|
||||||
int getHauntedDepth(cell *c);
|
|
||||||
eLand randomElementalLand();
|
|
||||||
bool notDippingForExtra(eItem i, eItem x);
|
|
||||||
void placePrizeOrb(cell *c);
|
|
||||||
void wandering();
|
|
||||||
bool isSealand(eLand l);
|
|
||||||
int newRoundTableRadius();
|
|
||||||
bool grailWasFound(cell *c);
|
|
||||||
extern bool buggyGeneration;
|
|
||||||
int buildIvy(cell *c, int children, int minleaf);
|
|
||||||
int celldistAltRelative(cell *c);
|
|
||||||
int roundTableRadius(cell *c);
|
|
||||||
eLand pickLandRPM(eLand old);
|
|
||||||
bool bearsCamelot(eLand l);
|
|
||||||
|
|
||||||
extern bool safety;
|
|
||||||
|
|
||||||
#define SAGEMELT .1
|
#define SAGEMELT .1
|
||||||
#define TEMPLE_EACH (among(geometry, gHoroRec, gHoroHex, gKiteDart3) ? 3 : (sol && binarytiling) ? 6 : (WDIM == 3 && binarytiling) ? 2 : geometry == gSpace435 ? 4 : (WDIM == 3 && hyperbolic) ? 3 : 6)
|
#define TEMPLE_EACH (among(geometry, gHoroRec, gHoroHex, gKiteDart3) ? 3 : (sol && binarytiling) ? 6 : (WDIM == 3 && binarytiling) ? 2 : geometry == gSpace435 ? 4 : (WDIM == 3 && hyperbolic) ? 3 : 6)
|
||||||
#define PT(x, y) ((tactic::on || quotient == 2 || daily::on) ? (y) : inv::on ? min(2*(y),x) : (x))
|
#define PT(x, y) ((tactic::on || quotient == 2 || daily::on) ? (y) : inv::on ? min(2*(y),x) : (x))
|
||||||
@ -1240,58 +1182,10 @@ extern bool safety;
|
|||||||
#define BUGLEV 15
|
#define BUGLEV 15
|
||||||
// #define BARLEV 9
|
// #define BARLEV 9
|
||||||
|
|
||||||
bool isKillable(cell *c);
|
|
||||||
bool isKillableSomehow(cell *c);
|
|
||||||
|
|
||||||
bool isAlchAny(eWall w);
|
|
||||||
bool isAlchAny(cell *c);
|
|
||||||
|
|
||||||
#define YDIST 101
|
#define YDIST 101
|
||||||
#define MODECODES (1ll<<61)
|
#define MODECODES (1ll<<61)
|
||||||
|
|
||||||
extern cellwalker cwt; // player character position
|
|
||||||
|
|
||||||
extern array<int, ittypes> items;
|
|
||||||
extern array<int, motypes> kills;
|
|
||||||
|
|
||||||
extern int explore[10], exploreland[10][landtypes], landcount[landtypes];
|
|
||||||
|
|
||||||
typedef flagtype modecode_t;
|
typedef flagtype modecode_t;
|
||||||
extern map<modecode_t, array<int, ittypes> > hiitems;
|
|
||||||
|
|
||||||
extern eLand firstland, specialland;
|
|
||||||
bool pseudohept(cell *c);
|
|
||||||
bool pureHardcore();
|
|
||||||
extern int cheater;
|
|
||||||
int airdist(cell *c);
|
|
||||||
bool eq(short a, short b);
|
|
||||||
extern vector<cell*> dcal; // queue for cpdist
|
|
||||||
bool isPlayerOn(cell *c);
|
|
||||||
bool isFriendly(eMonster m);
|
|
||||||
bool isFriendly(cell *c);
|
|
||||||
bool isChild(cell *w, cell *killed); // is w killed if killed is killed?
|
|
||||||
|
|
||||||
static const int NO_TREASURE = 1;
|
|
||||||
static const int NO_YENDOR = 2;
|
|
||||||
static const int NO_GRAIL = 4;
|
|
||||||
static const int NO_LOVE = 8;
|
|
||||||
|
|
||||||
bool markOrb(eItem it); // mark the orb as 'used', return true if exists
|
|
||||||
bool markEmpathy(eItem it); // mark both the given orb and Empathy as 'used', return true if exists
|
|
||||||
bool markEmpathy2(eItem it); // as above, but next turn
|
|
||||||
|
|
||||||
bool isMimic(eMonster m);
|
|
||||||
bool isMimic(cell *c);
|
|
||||||
|
|
||||||
void fallMonster(cell *c, flagtype flags = 0); // kill monster due to terrain
|
|
||||||
|
|
||||||
bool attackMonster(cell *c, flagtype flags, eMonster killer);
|
|
||||||
|
|
||||||
bool isWorm(eMonster m);
|
|
||||||
bool isWorm(cell *c);
|
|
||||||
void empathyMove(cell *c, cell *cto, int dir);
|
|
||||||
bool isIvy(eMonster m);
|
|
||||||
bool isIvy(cell *c);
|
|
||||||
|
|
||||||
#define GUNRANGE 3
|
#define GUNRANGE 3
|
||||||
|
|
||||||
@ -1301,41 +1195,6 @@ bool isIvy(cell *c);
|
|||||||
#define IC_ORB 2
|
#define IC_ORB 2
|
||||||
#define IC_NAI 3
|
#define IC_NAI 3
|
||||||
|
|
||||||
bool playerInPower();
|
|
||||||
void activateFlash();
|
|
||||||
void activateLightning();
|
|
||||||
bool markOrb(eItem it);
|
|
||||||
bool markOrb2(eItem it);
|
|
||||||
void drainOrb(eItem it, int target = 0);
|
|
||||||
void useupOrb(eItem it, int qty);
|
|
||||||
|
|
||||||
void initgame();
|
|
||||||
bool haveRangedTarget();
|
|
||||||
eItem targetRangedOrb(cell *c, orbAction a);
|
|
||||||
void reduceOrbPowers();
|
|
||||||
int realstuntime(cell *c);
|
|
||||||
|
|
||||||
extern bool invismove, invisfish;
|
|
||||||
bool attackingForbidden(cell *c, cell *c2);
|
|
||||||
void killOrStunMonster(cell *c2, eMonster who_killed);
|
|
||||||
|
|
||||||
void useup(cell *c); // useup thumpers/bonfires
|
|
||||||
cell *playerpos(int i);
|
|
||||||
|
|
||||||
bool makeflame(cell *c, int timeout, bool checkonly);
|
|
||||||
bool isPlayerInBoatOn(cell *c);
|
|
||||||
bool isPlayerInBoatOn(cell *c, int i);
|
|
||||||
void destroyBoats(cell *c, cell *cf, bool strandedToo);
|
|
||||||
extern int lastexplore;
|
|
||||||
extern int asteroids_generated, asteroid_orbs_generated;
|
|
||||||
extern eLand lastland;
|
|
||||||
bool againstRose(cell *cfrom, cell *cto);
|
|
||||||
bool withRose(cell *cfrom, cell *cto);
|
|
||||||
|
|
||||||
extern ld bounded_mine_percentage;
|
|
||||||
extern int bounded_mine_quantity, bounded_mine_max;
|
|
||||||
void generate_mines();
|
|
||||||
|
|
||||||
// loops
|
// loops
|
||||||
|
|
||||||
#define fakecellloop(ct) for(cell *ct = (cell*)1; ct; ct=NULL)
|
#define fakecellloop(ct) for(cell *ct = (cell*)1; ct; ct=NULL)
|
||||||
@ -1387,17 +1246,6 @@ void generate_mines();
|
|||||||
#define AF_SIDE Flag(30) // side attack
|
#define AF_SIDE Flag(30) // side attack
|
||||||
#define AF_CRUSH Flag(31) // Crusher's delayed attack
|
#define AF_CRUSH Flag(31) // Crusher's delayed attack
|
||||||
|
|
||||||
bool canAttack(cell *c1, eMonster m1, cell *c2, eMonster m2, flagtype flags);
|
|
||||||
|
|
||||||
extern int chaosmode;
|
|
||||||
extern bool chaosUnlocked;
|
|
||||||
extern bool chaosAchieved;
|
|
||||||
bool isTechnicalLand(eLand l);
|
|
||||||
int getGhostcount();
|
|
||||||
|
|
||||||
void raiseBuggyGeneration(cell *c, const char *s);
|
|
||||||
void verifyMutantAround(cell *c);
|
|
||||||
|
|
||||||
#if CAP_SDL
|
#if CAP_SDL
|
||||||
|
|
||||||
#if CAP_PNG
|
#if CAP_PNG
|
||||||
@ -1411,28 +1259,12 @@ void IMAGESAVE(SDL_Surface *s, const char *fname);
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void drawscreen();
|
|
||||||
|
|
||||||
void buildAirmap();
|
|
||||||
|
|
||||||
// currently works for worms only
|
|
||||||
bool sameMonster(cell *c1, cell *c2);
|
|
||||||
cell *wormhead(cell *c);
|
|
||||||
eMonster getMount(int player_id);
|
|
||||||
eMonster haveMount();
|
|
||||||
|
|
||||||
bool isDragon(eMonster m);
|
|
||||||
|
|
||||||
// for some reason I need this to compile under OSX
|
// for some reason I need this to compile under OSX
|
||||||
|
|
||||||
#if ISMAC
|
#if ISMAC
|
||||||
extern "C" { void *_Unwind_Resume = 0; }
|
extern "C" { void *_Unwind_Resume = 0; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void mountmove(cell *c, int spin, bool fp);
|
|
||||||
void mountmove(cell *c, int spin, bool fp, cell *ppos);
|
|
||||||
void mountswap(cell *c1, int spin1, bool fp1, cell *c2, int spin2, bool fp2);
|
|
||||||
|
|
||||||
template<class T> struct dynamicval {
|
template<class T> struct dynamicval {
|
||||||
T& where;
|
T& where;
|
||||||
T backup;
|
T backup;
|
||||||
@ -1463,11 +1295,6 @@ namespace stalemate {
|
|||||||
bool isPushto(cell *c);
|
bool isPushto(cell *c);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int turncount;
|
|
||||||
|
|
||||||
bool reduceOrbPower(eItem it, int cap);
|
|
||||||
bool checkOrb(eMonster m1, eItem orb);
|
|
||||||
|
|
||||||
namespace tortoise {
|
namespace tortoise {
|
||||||
extern int seekbits;
|
extern int seekbits;
|
||||||
int getRandomBits();
|
int getRandomBits();
|
||||||
@ -1613,10 +1440,6 @@ namespace mapeditor {
|
|||||||
bool drawUserShape(const transmatrix& V, eShapegroup group, int id, color_t color, cell *c, PPR prio = PPR::DEFAULT);
|
bool drawUserShape(const transmatrix& V, eShapegroup group, int id, color_t color, cell *c, PPR prio = PPR::DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CAP_SHAPES
|
|
||||||
void ShadowV(const transmatrix& V, const struct hpcshape& bp, PPR prio = PPR::MONSTER_SHADOW);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define OUTLINE_NONE 0x000000FF
|
#define OUTLINE_NONE 0x000000FF
|
||||||
#define OUTLINE_FRIEND 0x00FF00FF
|
#define OUTLINE_FRIEND 0x00FF00FF
|
||||||
#define OUTLINE_ENEMY 0xFF0000FF
|
#define OUTLINE_ENEMY 0xFF0000FF
|
||||||
@ -1629,46 +1452,15 @@ void ShadowV(const transmatrix& V, const struct hpcshape& bp, PPR prio = PPR::MO
|
|||||||
#define OUTLINE_FORE ((forecolor << 8) + 0xFF)
|
#define OUTLINE_FORE ((forecolor << 8) + 0xFF)
|
||||||
#define OUTLINE_BACK ((backcolor << 8) + 0xFF)
|
#define OUTLINE_BACK ((backcolor << 8) + 0xFF)
|
||||||
|
|
||||||
extern bool audio;
|
|
||||||
extern string musiclicense;
|
|
||||||
extern string musfname[landtypes];
|
|
||||||
extern int musicvolume, effvolume;
|
|
||||||
void initAudio();
|
|
||||||
bool loadMusicInfo();
|
|
||||||
void handlemusic();
|
|
||||||
void playSeenSound(cell *c);
|
|
||||||
void playSound(cell *c, const string& fname, int vol = 100);
|
|
||||||
|
|
||||||
inline string pick123() { return cts('1' + rand() % 3); }
|
inline string pick123() { return cts('1' + rand() % 3); }
|
||||||
inline string pick12() { return cts('1' + rand() % 2); }
|
inline string pick12() { return cts('1' + rand() % 2); }
|
||||||
|
|
||||||
bool playerInBoat(int i);
|
|
||||||
|
|
||||||
extern int lowfar;
|
extern int lowfar;
|
||||||
extern bool wmspatial, wmescher, wmplain, wmblack, wmascii;
|
|
||||||
extern bool mmspatial, mmhigh, mmmon, mmitem;
|
|
||||||
extern bool spatial_graphics;
|
|
||||||
extern int maxreclevel, reclevel;
|
extern int maxreclevel, reclevel;
|
||||||
|
|
||||||
string explain3D(ld *param);
|
|
||||||
|
|
||||||
extern int detaillevel;
|
extern int detaillevel;
|
||||||
extern bool quitmainloop;
|
extern bool quitmainloop;
|
||||||
|
|
||||||
enum eGlyphsortorder {
|
|
||||||
gsoFirstTop, gsoFirstBottom,
|
|
||||||
gsoLastTop, gsoLastBottom,
|
|
||||||
gsoLand, gsoValue,
|
|
||||||
gsoMAX
|
|
||||||
};
|
|
||||||
|
|
||||||
extern eGlyphsortorder glyphsortorder;
|
|
||||||
|
|
||||||
void explodeMine(cell *c);
|
|
||||||
bool mayExplodeMine(cell *c, eMonster who);
|
|
||||||
void explosion(cell *c, int power, int central);
|
|
||||||
void explodeBarrel(cell *c);
|
|
||||||
|
|
||||||
enum eGravity { gsNormal, gsLevitation, gsAnti };
|
enum eGravity { gsNormal, gsLevitation, gsAnti };
|
||||||
extern eGravity gravity_state, last_gravity_state;
|
extern eGravity gravity_state, last_gravity_state;
|
||||||
|
|
||||||
@ -2269,6 +2061,8 @@ namespace princess {
|
|||||||
#define GRAIL_FOUND 0x4000
|
#define GRAIL_FOUND 0x4000
|
||||||
#define GRAIL_RADIUS_MASK 0x3FFF
|
#define GRAIL_RADIUS_MASK 0x3FFF
|
||||||
|
|
||||||
|
extern vector<cell*> dcal;
|
||||||
|
|
||||||
struct hrmap {
|
struct hrmap {
|
||||||
virtual heptagon *getOrigin() { return NULL; }
|
virtual heptagon *getOrigin() { return NULL; }
|
||||||
virtual cell *gamestart() { return getOrigin()->c7; }
|
virtual cell *gamestart() { return getOrigin()->c7; }
|
||||||
@ -2680,6 +2474,8 @@ template<> struct saver<ld> : dsaver<ld> {
|
|||||||
#if CAP_SHAPES
|
#if CAP_SHAPES
|
||||||
struct floorshape;
|
struct floorshape;
|
||||||
|
|
||||||
|
struct hpcshape;
|
||||||
|
|
||||||
struct qfloorinfo {
|
struct qfloorinfo {
|
||||||
transmatrix spin;
|
transmatrix spin;
|
||||||
const hpcshape *shape;
|
const hpcshape *shape;
|
||||||
|
@ -8,9 +8,9 @@ namespace hr {
|
|||||||
|
|
||||||
EX bool safety = false;
|
EX bool safety = false;
|
||||||
|
|
||||||
eLand lastland;
|
EX eLand lastland;
|
||||||
|
|
||||||
int lastexplore;
|
EX int lastexplore;
|
||||||
|
|
||||||
EX bool randomPatternsMode = false;
|
EX bool randomPatternsMode = false;
|
||||||
EX int randompattern[landtypes];
|
EX int randompattern[landtypes];
|
||||||
@ -34,7 +34,7 @@ EX bool notDippingFor(eItem i) {
|
|||||||
return v >= hrand(10) + 10;
|
return v >= hrand(10) + 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool notDippingForExtra(eItem i, eItem x) {
|
EX bool notDippingForExtra(eItem i, eItem x) {
|
||||||
if(peace::on) return false;
|
if(peace::on) return false;
|
||||||
if(chaosmode > 1) return true;
|
if(chaosmode > 1) return true;
|
||||||
int v = items[i] - min(items[x], currentLocalTreasure);
|
int v = items[i] - min(items[x], currentLocalTreasure);
|
||||||
|
@ -69,7 +69,8 @@ EX eLand oppositeElement(eLand l, eLand l2) {
|
|||||||
|
|
||||||
// land unlocking
|
// land unlocking
|
||||||
|
|
||||||
EX eLand firstland = laIce, specialland = laIce;
|
EX eLand firstland = laIce;
|
||||||
|
EX eLand specialland = laIce;
|
||||||
|
|
||||||
EX int chaosmode = 0;
|
EX int chaosmode = 0;
|
||||||
|
|
||||||
|
@ -229,7 +229,7 @@ EX int getGhostTimer() {
|
|||||||
return shmup::on ? (shmup::curtime - lastexplore) / 350 : turncount - lastexplore;
|
return shmup::on ? (shmup::curtime - lastexplore) / 350 : turncount - lastexplore;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getGhostcount() {
|
EX int getGhostcount() {
|
||||||
if(peace::on) return 0;
|
if(peace::on) return 0;
|
||||||
int t = getGhostTimer();
|
int t = getGhostTimer();
|
||||||
int ghostcount = 0;
|
int ghostcount = 0;
|
||||||
|
2
orbs.cpp
2
orbs.cpp
@ -43,7 +43,7 @@ EX void useupOrb(eItem it, int qty) {
|
|||||||
if(items[it] < 0) items[it] = 0;
|
if(items[it] < 0) items[it] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX void drainOrb(eItem it, int target) {
|
EX void drainOrb(eItem it, int target IS(0)) {
|
||||||
if(items[it] > target) useupOrb(it, items[it] - target);
|
if(items[it] > target) useupOrb(it, items[it] - target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1335,7 +1335,7 @@ int pattern_threecolor(cell *c) {
|
|||||||
// returns ishept in the normal tiling;
|
// returns ishept in the normal tiling;
|
||||||
// in the 'pure heptagonal' tiling, returns true for a set of cells
|
// in the 'pure heptagonal' tiling, returns true for a set of cells
|
||||||
// which roughly corresponds to the heptagons in the normal tiling
|
// which roughly corresponds to the heptagons in the normal tiling
|
||||||
bool pseudohept(cell *c) {
|
EX bool pseudohept(cell *c) {
|
||||||
#if CAP_IRR
|
#if CAP_IRR
|
||||||
if(IRREGULAR) return irr::pseudohept(c);
|
if(IRREGULAR) return irr::pseudohept(c);
|
||||||
#endif
|
#endif
|
||||||
|
13
sound.cpp
13
sound.cpp
@ -3,11 +3,12 @@
|
|||||||
|
|
||||||
namespace hr {
|
namespace hr {
|
||||||
|
|
||||||
const char *musicfile = "";
|
EX const char *musicfile = "";
|
||||||
bool audio;
|
EX bool audio;
|
||||||
string musiclicense;
|
EX string musiclicense;
|
||||||
string musfname[landtypes];
|
EX string musfname[landtypes];
|
||||||
EX int musicvolume = 60, effvolume = 60;
|
EX int musicvolume = 60;
|
||||||
|
EX int effvolume = 60;
|
||||||
|
|
||||||
EX eLand getCurrentLandForMusic() {
|
EX eLand getCurrentLandForMusic() {
|
||||||
eLand id = ((anims::center_music()) && centerover.at) ? centerover.at->land : cwt.at->land;
|
eLand id = ((anims::center_music()) && centerover.at) ? centerover.at->land : cwt.at->land;
|
||||||
@ -206,7 +207,7 @@ string wheresounds = HYPERPATH "sounds/";
|
|||||||
|
|
||||||
hookset<bool(const string& s, int vol)> *hooks_sound;
|
hookset<bool(const string& s, int vol)> *hooks_sound;
|
||||||
|
|
||||||
EX void playSound(cell *c, const string& fname, int vol) {
|
EX void playSound(cell *c, const string& fname, int vol IS(100)) {
|
||||||
if(effvolume == 0) return;
|
if(effvolume == 0) return;
|
||||||
if(callhandlers(false, hooks_sound, fname, vol)) return;
|
if(callhandlers(false, hooks_sound, fname, vol)) return;
|
||||||
// printf("Play sound: %s\n", fname.c_str());
|
// printf("Play sound: %s\n", fname.c_str());
|
||||||
|
Loading…
Reference in New Issue
Block a user