HyperRogue  11.3d
game/visualization engine based on non-Euclidean geometry
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
hr Namespace Reference

Namespaces

 reg3
 

Classes

struct  always_false
 
struct  animation
 
struct  bandfixer
 
struct  basic_textureinfo
 
struct  bignum
 
struct  blizzardcell
 
struct  cdata
 
struct  cell
 
struct  celldrawer
 
struct  celllister
 
struct  changes_t
 
struct  charstyle
 
struct  charstyle_old
 
struct  colortable
 
struct  comma_printer
 
struct  connection_table
 
struct  cth_t
 
struct  debugScreen
 
struct  display_data
 
struct  downseek_t
 
struct  dqi_action
 
struct  dqi_circle
 
struct  dqi_line
 
struct  dqi_poly
 
struct  dqi_sky
 
struct  dqi_string
 
struct  drawqueueitem
 
struct  dsaver
 
struct  dynamicval
 
struct  escher_floorshape
 
struct  exp_parser
 
struct  expansion_analyzer
 
struct  fallanim
 
struct  fhstream
 
struct  flashdata
 
struct  floorshape
 
struct  fullnoun
 
struct  gamedata
 
struct  gcell
 
struct  genderswitch_t
 
struct  geometry_filter
 
struct  geometry_information
 
struct  geometryinfo
 
struct  geometryinfo1
 
struct  glfont_t
 
struct  grow_vector
 
struct  help_extension
 
struct  heptagon
 
struct  hint
 
class  hookset
 
struct  horo_distance
 
struct  hpcshape
 
struct  hr_exception
 
struct  hr_parse_exception
 
struct  hr_shortest_path_exception
 
struct  hrmap
 
struct  hrmap_hyperbolic
 
struct  hrmap_spherical
 
struct  hrmap_standard
 
struct  hstream
 
struct  hstream_exception
 
struct  hyperpoint
 A point in our continuous space Originally used for representing points in the hyperbolic plane. Currently used for all kinds of supported spaces, as well as for all vector spaces (up to 4 dimensions). We are using the normalized homogeneous coordinates, which allows us to work with most geometries in HyperRogue in a uniform way. More...
 
struct  indenter
 
struct  indenter_finish
 
struct  itemtype
 
struct  land_validity_t
 
struct  landtacinfo
 
struct  landtype
 
struct  logger
 
struct  loopchecker
 
struct  manual_celllister
 
struct  matrixlist
 
struct  mesher
 
struct  modelinfo
 
struct  monstertype
 
struct  movedir
 
struct  movei
 
struct  msginfo
 
struct  noun
 
struct  orbinfo
 
struct  pathdata
 
struct  pcmove
 
struct  plain_floorshape
 
struct  qfloorinfo
 
struct  radarline
 
struct  radarpoint
 
struct  renderbuffer
 
struct  resetbuffer
 
struct  rev_t
 
struct  revstep_t
 
struct  saver
 
struct  saver< bool >
 
struct  saver< char >
 
struct  saver< int >
 
struct  saver< ld >
 
struct  saver< string >
 
struct  saver< unsigned >
 
struct  saverenum
 
struct  score
 
struct  sentence
 
struct  shstream
 
struct  sky_item
 
struct  snowball
 
struct  stalemate1
 
struct  stringpar
 
struct  supersaver
 
struct  texture_triangle
 
struct  textureinfo
 
struct  transmatrix
 A matrix acting on hr::hyperpoint Since we are using homogeneous coordinates for hr::hyperpoint, rotations and translations can be represented as matrix multiplications. Other applications of matrices in HyperRogue (in dimension up to 4) are also implemented using transmatrix. More...
 
struct  usershape
 
struct  usershapelayer
 
struct  videopar
 
struct  walker
 
struct  walltype
 
struct  wmirror_t
 
struct  wstep_t
 

Typedefs

typedef Uint16 texturepixel
 
typedef flagtype modecode_t
 
typedef vector< shared_ptr< supersaver > > saverlist
 
typedef SDL_Event eventtype
 
typedef pair< transmatrix, vector< transmatrix > > matrixitem
 
typedef array< hpcshape, WINGS+1 > hpcshape_animated
 
typedef void(* cfunction) ()
 
typedef double ld
 
typedef complex< ld > cld
 
typedef unsigned color_t
 
typedef hookset< void()> * purehookset
 
typedef function< void()> reaction_t
 
typedef function< bool()> bool_reaction_t
 
typedef function< int(struct cell *)> cellfunction
 
typedef float GLfloat
 
typedef array< GLfloat, 2 > glvec2
 
typedef array< GLfloat, 3 > glvec3
 
typedef array< GLfloat, 4 > glvec4
 
typedef glvec4 glvertex
 
typedef unsigned long long flagtype
 
typedef unsigned hashcode
 
typedef walker< heptagonheptspin
 
typedef walker< cellcellwalker
 
typedef pair< string, reaction_t > named_functionality
 
typedef array< char, 1048576 > reserve_block
 
typedef vector< pair< int, string > > subscoreboard
 

Enumerations

enum  eSlimegroup {
  sgNone, sgCave, sgWater, sgFloorA,
  sgFloorB, sgVine, sgTree
}
 
enum  eMonster { motypes }
 
enum  eOrbshape {
  osNone, osLove, osRanged, osOffensive,
  osFriend, osUtility, osDirectional, osWarping,
  osFrog
}
 
enum  eItem { ittypes }
 
enum  eWall { walltypes }
 
enum  eLand { landtypes }
 
enum  eGeometry {
  gNormal, gEuclid, gSphere, gElliptic,
  gZebraQuotient, gFieldQuotient, gTorus, gOctagon,
  g45, g46, g47, gSmallSphere,
  gTinySphere, gEuclidSquare, gSmallElliptic, gKleinQuartic,
  gBolza, gBolza2, gMinimal, gBinaryTiling,
  gArchimedean, gMacbeath, gBring, gSchmutzM2,
  gSchmutzM3, gCrystal, gOctahedron, gBinary3,
  gCubeTiling, gCell120, gECell120, gRhombic3,
  gBitrunc3, gSpace534, gSpace435, gCell5,
  gCell8, gECell8, gCell16, gECell16,
  gCell24, gECell24, gCell600, gECell600,
  gHoroTris, gHoroRec, gHoroHex, gField435,
  gField534, gBinary4, gSol, gKiteDart2,
  gKiteDart3, gNil, gProduct, gRotSpace,
  gTernary, gNIH, gSolN, gInfOrder,
  gSpace336, gSpace344, gCrystal344, gArnoldCat,
  gArbitrary, gInfOrder4, gCrystal534, gSpace535,
  gSpace536, gSeifertCover, gSeifertWeber, gHomologySphere,
  gInfOrderMixed, gSpace436, gGUARD
}
 
enum  eGeometryClass {
  gcHyperbolic, gcEuclid, gcSphere, gcSolNIH,
  gcNil, gcProduct, gcSL2
}
 
enum  eVariation {
  bitruncated, pure, goldberg, irregular,
  dual
}
 
enum  eModel : int {
  mdDisk, mdHalfplane, mdBand, mdPolygonal,
  mdFormula, mdEquidistant, mdEquiarea, mdBall,
  mdHyperboloid, mdHemisphere, mdBandEquidistant, mdBandEquiarea,
  mdSinusoidal, mdTwoPoint, mdFisheye, mdJoukowsky,
  mdJoukowskyInverted, mdRotatedHyperboles, mdSpiral, mdPerspective,
  mdEquivolume, mdCentralInversion, mdSimulatedPerspective, mdTwoHybrid,
  mdGeodesic, mdMollweide, mdCentralCyl, mdCollignon,
  mdHorocyclic, mdGUARD, mdPixel, mdHyperboloidFlat,
  mdPolynomial, mdManual
}
 
enum  eDistanceFrom { dfPlayer, dfStart, dfWorld }
 
enum  eNumberCoding { ncNone, ncDistance, ncType, ncDebug }
 
enum  eGlyphsortorder {
  gsoFirstTop, gsoFirstBottom, gsoLastTop, gsoLastBottom,
  gsoLand, gsoValue, gsoMAX
}
 
enum  eStereo { sOFF, sAnaglyph, sLR, sODS }
 
enum  PPR {
  ZERO, EUCLIDEAN_SKY, OUTCIRCLE, MOVESTAR,
  MINUSINF, BELOWBOTTOMm, BELOWBOTTOM, BELOWBOTTOMp,
  BELOWBOTTOM_FALLANIM, LAKEBOTTOM, HELLSPIKE, INLAKEWALLm,
  INLAKEWALL, INLAKEWALLp, INLAKEWALL_FALLANIM, BSHALLOW,
  SHALLOW, ASHALLOW, SUBLAKELEV, LAKELEV,
  BOATLEV, BOATLEV2, BOATLEV3, LAKEWALLm,
  LAKEWALL, LAKEWALLp, LAKEWALL_FALLANIM, FLOOR_TOWER,
  FLOOR, FLOOR_DRAGON, FLOORa, FLOORb,
  FLOORc, FLOORd, LIZEYE, BFLOOR,
  GFLOORa, GFLOORb, GFLOORc, WALLSHADOW,
  STRUCT0, STRUCT1, STRUCT2, STRUCT3,
  THORNS, WALL, REDWALLm, REDWALLs,
  REDWALLp, REDWALL, REDWALLm2, REDWALLs2,
  REDWALLp2, REDWALLt2, REDWALLm3, REDWALLs3,
  REDWALLp3, REDWALLt3, HEPTAMARK, ITEM_BELOW,
  ITEM, ITEMa, ITEMb, BIGSTATUE,
  WALL3m, WALL3s, WALL3p, WALL3,
  WALL3A, HIDDEN, GIANTSHADOW, TENTACLE0,
  TENTACLE1, ONTENTACLE, ONTENTACLE_EYES, ONTENTACLE_EYES2,
  MONSTER_SHADOW, MONSTER_FOOT, MONSTER_LEG, MONSTER_GROIN,
  MONSTER_SUBWPN, MONSTER_WPN, MONSTER_BODY, MONSTER_ARMOR0,
  MONSTER_ARMOR1, MONSTER_CLOAK, MONSTER_NECK, MONSTER_HEAD,
  MONSTER_FACE, MONSTER_EYE0, MONSTER_EYE1, MONSTER_HAIR,
  MONSTER_HAT0, MONSTER_HAT1, MONSTER_HOODCLOAK1, MONSTER_HOODCLOAK2,
  STUNSTARS, CARRIED, CARRIEDa, CARRIEDb,
  PARTICLE, SWORDMARK, MAGICSWORD, MISSILE,
  SKY, MINEMARK, ARROW, MOBILE_ARROW,
  LINE, TRANSPARENT_LAKE, TRANSPARENT_SHADOW, TRANSPARENT_WALL,
  SUPERLINE, TEXT, CIRCLE, MAX,
  DEFAULT = -1
}
 
enum  orbAction {
  roMouse, roKeyboard, roCheck, roMouseForce,
  roMultiCheck, roMultiGo
}
 
enum  iePrecision { iLazy, iTable }
 
enum  hstate {
  hsOrigin, hsA, hsB, hsError,
  hsA0, hsA1, hsB0, hsB1,
  hsC
}
 
enum  eGravity { gsNormal, gsLevitation, gsAnti }
 
enum  eOrbLandRelation {
  olrForbidden, olrDangerous, olrUseless, olrNoPrizes,
  olrNoPrizeOrb, olrPrize25, olrPrize3, olrNative,
  olrNative1, olrGuest, olrPNative, olrPBasic,
  olrPPrized, olrPNever, olrHub, olrMonster,
  olrAlways, olrBurns
}
 
enum  cpatterntype {
  cpFootball, cpThree, cpChess, cpSingle,
  cpSingleSym, cpOddEven, cpLarge, cpZebra,
  cpUnknown
}
 
enum  eLastmovetype {
  lmSkip, lmMove, lmAttack, lmPush,
  lmTree, lmInstant
}
 
enum  eForcemovetype {
  fmSkip, fmMove, fmAttack, fmInstant,
  fmActivate
}
 

Functions

hyperpoint get_center (const vector< hyperpoint > &vh)
 
EX ld zc (ld z)
 
vector< hyperpointscaleshape (const vector< hyperpoint > &vh, ld s)
 
ld get_zlevel (hyperpoint h)
 
void disable (hpcshape &sh)
 
hyperpoint yzspin (ld alpha, hyperpoint h)
 
hyperpoint psmin (hyperpoint H)
 
EX void queueball (const transmatrix &V, ld rad, color_t col, eItem what)
 
EX bool haveLeaderboard (int id)
 
EX int get_currentscore (int id)
 
EX void set_priority_board (int id)
 
EX int get_sync_status ()
 
EX bool score_loaded (int id)
 
EX int score_default (int id)
 
EX void upload_score (int id, int v)
 
EX bool wrongMode (char flags)
 
EX void achievement_gain_once (const string &s)
 
EX void achievement_log (const char *s, char flags)
 
EX void achievement_init ()
 
EX string myname ()
 
EX void achievement_close ()
 
EX void achievement_gain (const char *s, char flags IS(0))
 
EX void achievement_collection (eItem it)
 
EX void achievement_count (const string &s, int current, int prev)
 
EX void improve_score (int i, eItem what)
 
EX void achievement_score (int cat, int number)
 
EX void improveItemScores ()
 
EX void achievement_final (bool really_final)
 
EX void check_total_victory ()
 
EX void achievement_victory (bool hyper)
 
EX void achievement_pump ()
 
EX string get_rich_presence_text ()
 
EX void achievement_display ()
 
EX bool isAscending (int i)
 
int zgmod (int a, int b)
 
EX int tkills ()
 
EX int killtypes ()
 
EX bool arrow_stuns (eMonster m)
 
EX bool canAttack (cell *c1, eMonster m1, cell *c2, eMonster m2, flagtype flags)
 
EX bool petrify (cell *c, eWall walltype, eMonster m)
 
EX void killIvy (cell *c, eMonster who)
 
EX void prespill (cell *c, eWall t, int rad, cell *from)
 
EX void spillfix (cell *c, eWall t, int rad)
 
EX void spill (cell *c, eWall t, int rad)
 
EX void degradeDemons ()
 
EX void stunMonster (cell *c2, eMonster killer, flagtype flags)
 
EX bool attackJustStuns (cell *c2, flagtype f, eMonster attacker)
 
EX void minerEffect (cell *c)
 
EX void killMutantIvy (cell *c, eMonster who)
 
EX bignum ivy_total ()
 
EX void killMonster (cell *c, eMonster who, flagtype deathflags IS(0))
 
EX void fightmessage (eMonster victim, eMonster attacker, bool stun, flagtype flags)
 
EX bool notthateasy (eMonster m)
 
EX bool attackMonster (cell *c, flagtype flags, eMonster killer)
 
EX void pushMonster (const movei &mi)
 
EX void killFriendlyIvy ()
 
EX bool monsterPushable (cell *c2)
 
EX bool should_switchplace (cell *c1, cell *c2)
 
EX bool switchplace_prevent (cell *c1, cell *c2, bool checkonly)
 
EX void handle_switchplaces (cell *c1, cell *c2, bool &switchplaces)
 
EX bool flashWouldKill (cell *c, flagtype extra)
 
EX vector< cell * > gun_targets (cell *c)
 
EX void fallMonster (cell *c, flagtype flags IS(0))
 
EX void killHardcorePlayer (int id, flagtype flags)
 
EX void killThePlayer (eMonster m, int id, flagtype flags)
 
EX void killThePlayerAt (eMonster m, cell *c, flagtype flags)
 
template<class T >
void do_swords (cell *mf, cell *mt, eMonster who, const T &f)
 
EX void stabbingAttack (cell *mf, cell *mt, eMonster who, int bonuskill IS(0))
 
EX bool checkBarriersFront (cellwalker bb, int q IS(5), bool cross IS(false))
 
EX bool hasbardir (cell *c)
 
EX void preventbarriers (cell *c)
 
EX bool checkBarriersBack (cellwalker bb, int q IS(5), bool cross IS(false))
 
EX bool warped_version (eLand l1, eLand l2)
 
EX bool checkBarriersNowall (cellwalker bb, int q, int dir, eLand l1 IS(laNone), eLand l2 IS(laNone))
 
EX eWall getElementalWall (eLand l)
 
EX void setbarrier (cell *c)
 
EX void setland (cell *c, eLand l)
 
EX void extendcheck (cell *c)
 
EX bool mirrorwall (cell *c)
 
EX void extendBarrierFront (cell *c)
 
EX void extendBarrierBack (cell *c)
 
EX void extendNowall (cell *c)
 
EX void extendCR5 (cell *c)
 
EX bool isbar4 (cell *c)
 
EX void extendBarrier (cell *c)
 
EX void buildBarrierForce (cell *c, int d, eLand l)
 
EX void buildBarrier (cell *c, int d, eLand l IS(laNone))
 
EX bool buildBarrier6 (cellwalker cw, int type)
 
EX bool buildBarrier4 (cell *c, int d, int mode, eLand ll, eLand lr)
 
EX void buildBarrierStrong (cell *c, int d, bool oldleft, eLand newland)
 
EX void buildBarrierStrong (cell *c, int d, bool oldleft)
 
EX void buildCrossroads2 (cell *c)
 
EX void extend3D (cell *c)
 
EX bool buildBarrier3D (cell *c, eLand l2, int forced_dir)
 
EX bool buildBarrierNowall (cell *c, eLand l2, int forced_dir IS(NODIR))
 
int utfsize (char c)
 
EX int get_sightrange ()
 
EX int get_sightrange_ambush ()
 
bool eqs (const char *x, const char *y)
 
EX int getnext (const char *s, int &i)
 
EX color_t & qpixel (SDL_Surface *surf, int x, int y)
 
void loadfont (int siz)
 
int textwidth (int siz, const string &str)
 
EX int darkenedby (int c, int lev)
 
EX color_t darkened (color_t c)
 
EX color_t darkena3 (color_t c, int lev, int a)
 
EX color_t darkena (color_t c, int lev, int a)
 
EX void eyewidth_translate (int ed)
 
void reset_projection ()
 
EX bool model_needs_depth ()
 
EX void setGLProjection (color_t col IS(backcolor))
 
EX int next_p2 (int a)
 
void sdltogl (SDL_Surface *txt, glfont_t &f, int ch)
 
void init_glfont (int size)
 
int gl_width (int size, const char *s)
 
glhr::textured_vertex charvertex (int x1, int y1, ld tx, ld ty)
 
bool gl_print (int x, int y, int shift, int size, const char *s, color_t color, int align)
 
EX void resetGL ()
 
EX bool displaystr (int x, int y, int shift, int size, const char *str, color_t color, int align)
 
EX bool displaystr (int x, int y, int shift, int size, const string &s, color_t color, int align)
 
EX bool displayfrSP (int x, int y, int sh, int b, int size, const string &s, color_t color, int align, int p)
 
EX bool displayfr (int x, int y, int b, int size, const string &s, color_t color, int align)
 
EX bool displaychr (int x, int y, int shift, int size, char chr, color_t col)
 
EX void flashMessages ()
 
EX string fullmsg (msginfo &m)
 
void addMessageToLog (msginfo &m, vector< msginfo > &log)
 
EX void clearMessages ()
 
EX void addMessage (string s, char spamtype)
 
EX color_t colormix (color_t a, color_t b, color_t c)
 
EX int rhypot (int a, int b)
 
EX ld realradius ()
 
EX void drawmessage (const string &s, int &y, color_t col)
 
EX void drawmessages ()
 
EX color_t gradient (color_t c0, color_t c1, ld v0, ld v, ld v1)
 
EX void drawCircle (int x, int y, int size, color_t color, color_t fillcolor IS(0))
 
EX void displayButton (int x, int y, const string &name, int key, int align, int rad IS(0))
 
EX void displaymm (char c, int x, int y, int rad, int size, const string &title, int align)
 
EX bool displayButtonS (int x, int y, const string &name, color_t col, int align, int size)
 
EX void displayColorButton (int x, int y, const string &name, int key, int align, int rad, color_t color, color_t color2 IS(0))
 
ld textscale ()
 
EX void do_setfsize ()
 
EX void disable_vsync ()
 
EX void setvideomode ()
 
EX void initgraph ()
 
EX void cleargraph ()
 
EX int calcfps ()
 
EX int newRoundTableRadius ()
 
EX int getAnthraxData (cell *c, bool b)
 
EX int roundTableRadius (cell *c)
 
EX int celldistAltRelative (cell *c)
 
EX gp::loc camelot_coords ()
 
EX int euclidAlt (short x, short y)
 
EX int cylinder_alt (cell *c)
 
EX int compassDist (cell *c)
 
EX cellfindcompass (cell *c)
 
EX bool grailWasFound (cell *c)
 
EX int default_levs ()
 
EX int hrandom_adjacent (int d)
 
EX heptagoncreateAlternateMap (cell *c, int rad, hstate firststate, int special IS(0))
 
EX void beCIsland (cell *c)
 
EX void generateTreasureIsland (cell *c)
 
EX cellbuildAnotherEquidistant (cell *c, int radius)
 
EX void buildAnotherEquidistant (cell *c)
 
EX int coastval (cell *c, eLand base)
 
EX bool checkInTree (cell *c, int maxv)
 
EX void buildEquidistant (cell *c)
 
EX cellrandomDown (cell *c)
 
EX int edgeDepth (cell *c)
 
EX int getHauntedDepth (cell *c)
 
EX int towerval (cell *c, const cellfunction &cf)
 
EX void setLandWeird (cell *c)
 
EX void setLandQuotient (cell *c)
 
EX void elementalXY (cell *c, int x, int y, bool make_wall)
 
EX void setLandSphere (cell *c)
 
EX eLand & get_euland (int c)
 
EX void clear_euland (eLand first)
 
bool valid_wall_at (int c)
 
EX eLand switchable (eLand nearland, eLand farland, int c)
 
EX eLand getEuclidLand (int c)
 
EX void setLandSol (cell *c)
 
EX void setLandHybrid (cell *c)
 
EX void setLandNil (cell *c)
 
EX void setLandEuclid (cell *c)
 
EX eLand get_euland3 (int x)
 
EX void set_euland3 (cell *c, int co10, int co11, int alt, int hash)
 
EX bool quickfind (eLand l)
 
EX int wallchance (cell *c, bool deepOcean)
 
EX bool horo_ok ()
 
EX bool gp_wall_test ()
 
EX bool deep_ocean_at (cell *c, cell *from)
 
EX bool good_for_wall (cell *c)
 
EX bool walls_not_implemented ()
 
EX void buildBigStuff (cell *c, cell *from)
 
EX bool openplains (cell *c)
 
EX void buildCamelotWall (cell *c)
 
EX bool no_barriers_in_radius (cell *c, int rad)
 
EX eMonster camelot_monster ()
 
EX void buildCamelot (cell *c)
 
EX int masterAlt (cell *c)
 
EX int temple_layer_size ()
 
EX int horo_gen_distance ()
 
EX void moreBigStuff (cell *c)
 
EX void generate_mines ()
 
EX void pregen ()
 
EX void set_blizzard_frame (cell *c, int frameid)
 
EX blizzardcellgetbcell (cell *c)
 
EX void drawBlizzards ()
 
EX void drawArrowTraps ()
 
void clearfrom (heptagon *)
 
void verifycells (heptagon *)
 
EX int dirdiff (int dd, int t)
 
EX cellnewCell (int type, heptagon *master)
 
EX hrmapnewAltMap (heptagon *o)
 
EX heptagonhyperbolic_origin ()
 
EX cellcreateMov (cell *c, int d)
 
EX void eumerge (cell *c1, int s1, cell *c2, int s2, bool mirror)
 
EX void initcells ()
 
EX void clearcell (cell *c)
 
template<class T >
void subcell (cell *c, const T &t)
 
EX void clearHexes (heptagon *at)
 
void unlink_cdata (heptagon *h)
 
EX void clear_heptagon (heptagon *at)
 
EX void verifycell (cell *c)
 
EX int compdist (int dx[])
 
EX int celldist (cell *c)
 
EX int celldistAlt (cell *c)
 
EX int updir (heptagon *h)
 
EX int updir_alt (heptagon *h)
 
EX bool randpattern (cell *c, int rval)
 
EX string describeRPM (eLand l)
 
EX int randpatternCode (cell *c, int rval)
 
EX void clearMemoRPM ()
 
EX bool randpatternMajority (cell *c, int ival, int iterations)
 
EX bool geometry_supports_cdata ()
 
void affect (cdata &d, short rv, signed char signum)
 
void setHeptagonRval (heptagon *h)
 
EX bool dmeq (int a, int b)
 
cdatagetHeptagonCdata_legacy (heptagon *h)
 
cdatagetHeptagonCdata (heptagon *h)
 
cdatagetEuclidCdata (gp::loc h)
 
int ld_to_int (ld x)
 
EX gp::loc pseudocoords (cell *c)
 
EX cdataarcmCdata (cell *c)
 
EX int getCdata (cell *c, int j)
 
EX int getBits (cell *c)
 
EX cellheptatdir (cell *c, int d)
 
EX int heptdistance (heptagon *h1, heptagon *h2)
 
EX int heptdistance (cell *c1, cell *c2)
 
EX void compute_saved_distances (cell *c1, int max_range, int climit)
 
EX void permanent_long_distances (cell *c1)
 
EX void erase_saved_distances ()
 
EX int max_saved_distance (cell *c)
 
EX cellrandom_in_distance (cell *c, int d)
 
EX int bounded_celldistance (cell *c1, cell *c2)
 
EX int clueless_celldistance (cell *c1, cell *c2)
 
EX int celldistance (cell *c1, cell *c2)
 
EX vector< cell * > build_shortest_path (cell *c1, cell *c2)
 
EX void clearCellMemory ()
 
EX bool isNeighbor (cell *c1, cell *c2)
 
EX bool isNeighborCM (cell *c1, cell *c2)
 
EX int neighborId (cell *ofWhat, cell *whichOne)
 
EX bool geometry_has_alt_mine_rule ()
 
EX vector< cell * > adj_minefield_cells (cell *c)
 
EX vector< int > reverse_directions (cell *c, int dir)
 
EX vector< int > reverse_directions (heptagon *c, int dir)
 
EX bool standard_tiling ()
 
EX int valence ()
 
int coastvalEdge (cell *c)
 
void drawcell (cell *c, const transmatrix &V)
 
void eclectic_red (color_t &col)
 
EX color_t w_monochromatize (color_t x, int d)
 
EX bool pureHardcore ()
 
EX bool hasSafeOrb (cell *c)
 
EX bool krakensafe (cell *c)
 
EX bool monstersnear (stalemate1 &sm)
 
EX bool monstersnear2 ()
 
EX bool monstersnear (cell *c, eMonster who, cell *pushto, cell *comefrom)
 
EX bool onboat (stalemate1 &sm)
 
EX bool multimove ()
 
EX bool swordConflict (const stalemate1 &sm1, const stalemate1 &sm2)
 
EX void checkmove ()
 
EX void initializeCLI ()
 
float & HEAT (cell *c)
 
EX void livecaves ()
 
bool barrierhept (cell *c)
 
template<class T , class U , class V >
void addsaver (T &i, U name, V dft)
 
template<class T >
void addsaver (T &i, string name)
 
template<class T , class U >
void addsaverenum (T &i, U name, T dft)
 
template<class T , class U >
void addsaverenum (T &i, U name)
 
void addparam (ld &val, const string s)
 
EX charstylegetcs (int id IS(multi::cpid))
 
EX void hread (hstream &hs, charstyle &cs)
 
EX void hwrite (hstream &hs, const charstyle &cs)
 
EX string csnameid (int id)
 
EX string csname (charstyle &cs)
 
EX int playergender ()
 
EX int princessgender ()
 
EX int lang ()
 
EX void addsaver (charstyle &cs, string s)
 
EX void initcs (charstyle &cs)
 
EX void savecolortable (colortable &ct, string name)
 
EX void initConfig ()
 
EX bool inSpecialMode ()
 
EX bool have_current_settings ()
 
EX bool have_current_graph_settings ()
 
EX void reset_graph_settings ()
 
EX void resetModes (char leave IS('c'))
 
EX void resetConfig ()
 
EX void saveConfig ()
 
void readf (FILE *f, ld &x)
 
EX void parseline (const string &str)
 
EX void loadNewConfig (FILE *f)
 
EX void loadConfig ()
 
EX void add_cells_drawn (char c IS('C'))
 
string solhelp ()
 
EX void edit_sightrange ()
 
EX void menuitem_sightrange (char c IS('c'))
 
EX void showSpecialEffects ()
 
EX void showGraphConfig ()
 
EX void switchFullscreen ()
 
EX void switchGL ()
 
EX void edit_whatever (char type, int index)
 
EX void configureOther ()
 
EX void configureInterface ()
 
EX void showJoyConfig ()
 
EX void projectionDialog ()
 
EX void explain_detail ()
 
EX void add_edit_fov (char key IS('f'))
 
bool supported_ods ()
 
EX void showStereo ()
 
EX void config_camera_rotation ()
 
EX void add_edit_wall_quality (char c)
 
EX void edit_levellines (char c)
 
EX void show3D ()
 
EX void switchcolor (unsigned int &c, unsigned int *cs)
 
EX void showCustomizeChar ()
 
EX void refresh_canvas ()
 
EX void edit_color_table (colortable &ct, const reaction_t &r IS(reaction_t()), bool has_bit IS(false))
 
EX void show_color_dialog ()
 
EX void resetConfigMenu ()
 
EX void selectLanguageScreen ()
 
EX void configureMouse ()
 
EX void showSettings ()
 
EX int read_color_args ()
 
EX int read_config_args ()
 
EX int read_gamemode_args ()
 
EX bool mouseout ()
 
EX bool mouseout2 ()
 
EX movedir vectodir (hyperpoint P)
 
EX void remission ()
 
EX hyperpoint move_destination_vec (int d)
 
EX void movepckeydir (int d)
 
EX void calcMousedest ()
 
EX void mousemovement ()
 
EX void initJoysticks ()
 
EX void closeJoysticks ()
 
EX void checkjoy ()
 
EX void checkpanjoy (double t)
 
EX bool doexiton (int sym, int uni)
 
transmatrix zforward_push (ld z)
 
EX void handlePanning (int sym, int uni)
 
EX void handleKeyNormal (int sym, int uni)
 
EX void fix_mouseh ()
 
EX void handlekey (int sym, int uni)
 
EX void resize_screen_to (int x, int y)
 
EX void mainloopiter ()
 
EX void handle_event (SDL_Event &ev)
 
EX void mainloop ()
 
EX bool interpret_as_direction (int sym, int uni)
 
EX int get_direction_key (int sym, int uni)
 
EX bool gmodekeys (int sym, int uni)
 
EX bool haveMobileCompass ()
 
EX bool handleCompass ()
 
template<class... T>
void limitgen (T... args)
 
EX cellpathTowards (cell *pf, cell *pt)
 
EX void describeCell (cell *c)
 
eItem nextOrb ()
 
eItem randomTreasure ()
 
eItem randomTreasure2 (int cv)
 
EX void cheatMoveTo (eLand l)
 
EX bool applyCheat (char u, cell *c IS(NULL))
 
template<class T >
string dnameof2 (T x)
 
template<class T >
string dnameof2 (T x, int p)
 
template<class T >
void bitfield_editor (int val, T setter, string help="")
 
EX void push_debug_screen ()
 
EX void showCheatMenu ()
 
EX void viewall ()
 
EX void modalDebug (cell *c)
 
void test_distances (int max)
 
EX void raiseBuggyGeneration (cell *c, const char *s)
 
int read_cheat_args ()
 
EX void breakhere ()
 
EX unsigned char & part (color_t &col, int i)
 
EX void glflush ()
 
void add1 (const hyperpoint &H)
 
bool is_behind (const hyperpoint &H)
 
hyperpoint be_just_on_view (const hyperpoint &H1, const hyperpoint &H2)
 
bool nif_error_in (ld x1, ld y1, ld x2, ld y2)
 
EX bool two_sided_model ()
 
EX int get_side (const hyperpoint &H)
 
EX bool correct_side (const hyperpoint &H)
 
void fixpoint (glvertex &hscr, hyperpoint H)
 
void addpoint (const hyperpoint &H)
 
void coords_to_poly ()
 
void addpoly (const transmatrix &V, const vector< glvertex > &tab, int ofs, int cnt)
 
void aapolylineColor (SDL_Surface *s, int *x, int *y, int polyi, color_t col)
 
void polylineColor (SDL_Surface *s, int *x, int *y, int polyi, color_t col)
 
EX void filledPolygonColorI (SDL_Surface *s, int *px, int *py, int polyi, color_t col)
 
void drawTexturedTriangle (SDL_Surface *s, int *px, int *py, glvertex *tv, color_t col)
 
EX ld scale_at (const transmatrix &T)
 
EX ld linewidthat (const hyperpoint &h)
 
EX void set_width (ld w)
 
ld glhypot2 (glvertex a, glvertex b)
 
void compute_side_by_centerin (dqi_poly *p, bool &nofill)
 
void compute_side_by_area ()
 
ld get_width (dqi_poly *p)
 
void debug_this ()
 
EX void prettypoint (const hyperpoint &h)
 
EX void prettylinesub (const hyperpoint &h1, const hyperpoint &h2, int lev)
 
EX void prettyline (hyperpoint h1, hyperpoint h2, color_t col, int lev, int flags, PPR prio)
 
EX void prettypoly (const vector< hyperpoint > &t, color_t fillcol, color_t linecol, int lev)
 
EX void queuereset (eModel m, PPR prio)
 
EX void initquickqueue ()
 
EX void sortquickqueue ()
 
EX void quickqueue ()
 
ld xintval (const hyperpoint &h)
 
color_t darken_color (color_t &color, bool outline)
 
EX void sort_drawqueue ()
 
EX void reverse_priority (PPR p)
 
EX void reverse_side_priorities ()
 
EX void draw_backside ()
 
EX void reverse_transparent_walls ()
 
EX void draw_main ()
 
EX void drawqueue ()
 
template<class T , class... U>
T & queuea (PPR prio, U... u)
 
EX void apply_neon (color_t &col, int &r)
 
EX color_t magentize (color_t x)
 
EX color_t monochromatize (color_t x)
 
EX dqi_polyqueuepolyat (const transmatrix &V, const hpcshape &h, color_t col, PPR prio)
 
void addfloats (vector< GLfloat > &v, hyperpoint h)
 
EX dqi_polyqueuetable (const transmatrix &V, const vector< glvertex > &f, int cnt, color_t linecol, color_t fillcol, PPR prio)
 
EX dqi_polyqueuepoly (const transmatrix &V, const hpcshape &h, color_t col)
 
void queuepolyb (const transmatrix &V, const hpcshape &h, color_t col, int b)
 
EX void curvepoint (const hyperpoint &H1)
 
EX dqi_polyqueuecurve (color_t linecol, color_t fillcol, PPR prio)
 
EX dqi_actionqueueaction (PPR prio, const reaction_t &action)
 
EX dqi_linequeueline (const hyperpoint &H1, const hyperpoint &H2, color_t col, int prf IS(0), PPR prio IS(PPR::LINE))
 
EX void queuestr (int x, int y, int shift, int size, string str, color_t col, int frame IS(0), int align IS(8))
 
EX void queuecircle (int x, int y, int size, color_t color, PPR prio IS(PPR::CIRCLE), color_t fillcolor IS(0))
 
EX void getcoord0 (const hyperpoint &h, int &xc, int &yc, int &sc)
 
EX ld scale_in_pixels (const transmatrix &V)
 
EX bool getcoord0_checked (const hyperpoint &h, int &xc, int &yc, int &zc)
 
EX void queuestr (const hyperpoint &h, int size, const string &chr, color_t col, int frame IS(0))
 
EX void queuestr (const transmatrix &V, double size, const string &chr, color_t col, int frame IS(0), int align IS(8))
 
EX void queuestrn (const transmatrix &V, double size, const string &chr, color_t col, int frame IS(0), int align IS(8))
 
EX void queuecircle (const transmatrix &V, double size, color_t col)
 
EX int gamerange ()
 
EX void onpath (cell *c, int d)
 
EX void onpath (cell *c, int d, int sp)
 
EX void clear_pathdata ()
 
EX void compute_graphical_distance ()
 
EX void computePathdist (eMonster param)
 
EX void bfs ()
 
EX void moverefresh (bool turn IS(true))
 
EX void settemp (cell *c)
 
EX void findWormIvy (cell *c)
 
EX void monstersTurn ()
 
EX gp::loc euc2_coordinates (cell *c)
 
int subtype (cell *c)
 
void canonicize (vector< int > &t)
 
template<class T , class U >
vector< int > get_children_codes (cell *c, const T &distfun, const U &typefun)
 
template<class T >
int size_upto (vector< T > &v, int s)
 
EX int type_in (expansion_analyzer &ea, cell *c, const cellfunction &f)
 
int type_in_quick (expansion_analyzer &ea, cell *c, const cellfunction &f)
 
EX bool sizes_known ()
 
EX bool trees_known ()
 
bool mod_allowed ()
 
EX int curr_dist (cell *c)
 
EX int type_in_reduced (expansion_analyzer &ea, cell *c, const cellfunction &f)
 
EX int parent_id (cell *c, int which, const cellfunction &cf)
 
EX void generate_around (cell *c)
 
color_t distribute_color (int id)
 
EX void viewdist_configure_dialog ()
 
bool is_descendant (cell *c)
 
EX void enable_viewdists ()
 
bool expansion_handleKey (int sym, int uni)
 
void compute_coefficients ()
 
int expansion_readArgs ()
 
EX void set_sibling_limit ()
 
int celldist0 (cell *c)
 
bool in_segment (cell *left, cell *mid, cell *right)
 
int sibling_distance (cell *a, cell *b, int limit)
 
EX int hyperbolic_celldistance (cell *c1, cell *c2)
 
transmatrix getOrientation ()
 
void playSound (cell *c, const string &fname, int vol)
 
int gdpop ()
 
bool rawdisplaystr (int x, int y, int shift, int size, const char *str, int color, int align)
 
bool currentlyConnecting ()
 
bool currentlyConnected ()
 
void viewAchievements ()
 
void viewLeaderboard (string id)
 
void switchGoogleConnection ()
 
void shareScore (int)
 
void openURL ()
 
EX int currfp_gmul (int a, int b)
 
EX int currfp_inverses (int i)
 
EX int currfp_distwall (int i)
 
EX int currfp_n ()
 
EX int currfp_get_R ()
 
EX int currfp_get_P ()
 
EX int currfp_get_X ()
 
EX void hread_fpattern (hstream &hs, fieldpattern::fpattern &fp)
 
EX void hwrite_fpattern (hstream &hs, fieldpattern::fpattern &fp)
 
const flagtype & classflag (eItem it)
 
const flagtype & classflag (eWall w)
 
const flagtype & classflag (eMonster m)
 
const flagtype & classflag (eLand l)
 
 MONFLAGCHECK (isAngryBird,(flag &CF_BIRD) &&!(flag &CF_FRIENDLY)) eMonster movegroup(eMonster m)
 
EX bool boatStrandable (cell *c)
 
EX bool isFireOrMagma (cell *w)
 
EX int mirrorcolor (bool mirrored)
 
EX bool isMounted (cell *c)
 
EX int itemclass (eItem it)
 
EX bool isFriendly (eMonster m)
 
EX bool isFriendly (cell *c)
 
EX bool isFriendlyOrBug (cell *c)
 
EX bool cellUnstable (cell *c)
 
EX bool cellUnstableOrChasm (cell *c)
 
EX eMonster elementalOf (eLand l)
 
EX eItem localshardof (eLand l)
 
EX int snakelevel (cell *c)
 
EX eSlimegroup slimegroup (cell *c)
 
EX bool isFlying (eMonster m)
 
EX bool survivesChasm (eMonster m)
 
EX bool ignoresPlates (eMonster m)
 
EX bool isInactiveEnemy (cell *w, eMonster forwho)
 
EX bool isActiveEnemy (cell *w, eMonster forwho)
 
EX bool isArmedEnemy (cell *w, eMonster forwho)
 
EX bool eternalFire (cell *c)
 
EX bool haveRangedOrb ()
 
EX bool isFriendlyGhost (eMonster m)
 
EX bool isGhostAether (eMonster m)
 
EX bool survivesWater (eMonster m)
 
EX bool survivesPoison (eMonster m, eWall p)
 
EX bool isPermanentFlying (eMonster m)
 
EX bool survivesFire (eMonster m)
 
EX bool survivesWall (eMonster m)
 
EX bool survivesThorns (eMonster m)
 
EX bool survivesFall (eMonster m)
 
EX bool checkOrb (eMonster m1, eItem orb)
 
EX bool checkOrb2 (eMonster m1, eItem orb)
 
EX bool ignoresSmell (eMonster m)
 
EX bool highwall (cell *c)
 
EX int chasmgraph (cell *c)
 
EX bool conegraph (cell *c)
 
EX eItem frog_power (eMonster m)
 
EX bool hornStuns (cell *c)
 
EX bool do_not_touch_this_wall (cell *c)
 
EX bool is_paired (eMonster m)
 
mesher msh (eGeometry g, int sym, ld main, ld v0, ld v1, ld bspi, ld scale)
 
matrixitem genitem (const transmatrix &m1, const transmatrix &m2, int nsym)
 
bool do_kleinize ()
 
EX hyperpoint kleinize (hyperpoint h)
 
void addmatrix (matrixlist &matrices, hyperpoint o0, hyperpoint o1, hyperpoint o2, hyperpoint n0, hyperpoint n1, hyperpoint n2, int d, int osym, int nsym)
 
void generate_matrices (matrixlist &matrices, const mesher &o, const mesher &n)
 
void generate_matrices_scale (ld scale, int noft)
 
template<class T >
void sizeto (T &t, int n)
 
EX void set_no_floor ()
 
EX void set_floor (floorshape &sh)
 
EX void set_floor (hpcshape &sh)
 
EX void set_floor (const transmatrix &spin, hpcshape &sh)
 
EX int shvid (cell *c)
 
EX struct dqi_polydraw_shapevec (cell *c, const transmatrix &V, const vector< hpcshape > &shv, color_t col, PPR prio IS(PPR::DEFAULT))
 
EX void draw_floorshape (cell *c, const transmatrix &V, const floorshape &fsh, color_t col, PPR prio IS(PPR::DEFAULT))
 
EX void draw_qfi (cell *c, const transmatrix &V, color_t col, PPR prio IS(PPR::DEFAULT), vector< hpcshape > floorshape::*tab IS(&floorshape::b))
 
EX void viewmat ()
 
void draw_shape_for_texture (floorshape *sh)
 
EX void ensure_vertex_number (basic_textureinfo &bti, int qty)
 
EX void ensure_vertex_number (hpcshape &sh)
 
EX void bind_floor_texture (hpcshape &li, int id)
 
EX void make_floor_textures ()
 
EX void shrand (int i)
 
EX int hrandpos ()
 
EX int hrand (int i)
 
template<class T , class... U>
pick (T x, U... u)
 
template<class T >
void hrandom_shuffle (T *x, int n)
 
template<class T >
void hrandom_shuffle (T &container)
 
template<class U >
auto hrand_elt (U &container) -> decltype(container[0])
 
template<class T , class U >
hrand_elt (U &container, T default_value)
 
EX vector< int > hrandom_permutation (int qty)
 
EX ld hrandf ()
 
EX int hrandstate ()
 
EX bool isChild (cell *w, cell *killed)
 
EX eMonster active_switch ()
 
EX int getDistLimit ()
 
EX void activateFlashFrom (cell *cf, eMonster who, flagtype flags)
 
EX bool saved_tortoise_on (cell *c)
 
EX bool normal_gravity_at (cell *c)
 
EX int countMyGolems (eMonster m)
 
EX int savePrincesses ()
 
EX int countMyGolemsHP (eMonster m)
 
EX void restoreGolems (int qty, eMonster m, int hp IS(0))
 
EX bool activateRecall ()
 
EX void saveRecall (cellwalker cw2)
 
EX void activateSafety (eLand l)
 
EX void placeGolem (cell *on, cell *moveto, eMonster m)
 
EX bool multiRevival (cell *on, cell *moveto)
 
EX void checkSwitch ()
 
EX void pushThumper (const movei &mi)
 
EX bool canPushThumperOn (cell *tgt, cell *thumper, cell *player)
 
EX void activateActiv (cell *c, bool msg)
 
EX void fixWormBug (cell *c)
 
EX bool isWormhead (eMonster m)
 
EX cellworm_tohead (cell *c)
 
EX cellwormhead (cell *c)
 
EX bool sameMonster (cell *c1, cell *c2)
 
EX eMonster haveMount ()
 
EX eMonster otherpole (eMonster m)
 
void showQuotientConfig ()
 
void validity_info ()
 
void ge_land_selection ()
 
bool forced_quotient ()
 
void ge_select_filter ()
 
void set_default_filter ()
 
void set_or_configure_geometry (eGeometry g)
 
bool same_tiling (eGeometry g2)
 
void ge_select_tiling ()
 
EX string current_proj_name ()
 
EX string dim_name ()
 
EX void showQuotientConfig3 ()
 
EX string geometry_name ()
 
EX void select_quotient_screen ()
 
EX void select_quotient ()
 
EX string full_geometry_name ()
 
EX void showEuclideanMenu ()
 
EX void runGeometryExperiments ()
 
eGeometry readGeo (const string &ss)
 
int read_geom_args ()
 
EX bool scale_used ()
 
EX transmatrix xspinpush (ld dir, ld dist)
 
EX void check_cgi ()
 
void clear_cgis ()
 
transmatrixggmatrix (cell *c)
 
EX void fixelliptic (transmatrix &at)
 
EX void fixelliptic (hyperpoint &h)
 
EX transmatrix relative_matrix_recursive (heptagon *h2, heptagon *h1)
 
EX transmatrix master_relative (cell *c, bool get_inverse IS(false))
 
EX transmatrix calc_relative_matrix (cell *c2, cell *c1, const hyperpoint &hint)
 
template<class T , class U >
void virtualRebase_cell (cell *&base, T &at, const U &check)
 
template<class T , class U >
void virtualRebase (cell *&base, T &at, const U &check)
 
EX void virtualRebase (cell *&base, transmatrix &at)
 
EX void virtualRebase (cell *&base, hyperpoint &h)
 
EX bool no_easy_spin ()
 
EX transmatrix ddspin (cell *c, int d, ld bonus IS(0))
 
EX transmatrix iddspin (cell *c, int d, ld bonus IS(0))
 
EX ld cellgfxdist (cell *c, int d)
 
EX transmatrix ddspin_side (cell *c, int d, ld bonus IS(0))
 
EX transmatrix iddspin_side (cell *c, int d, ld bonus IS(0))
 
int neighborId (heptagon *h1, heptagon *h2)
 
EX double randd ()
 
EX hyperpoint randomPointIn (int t)
 
EX hyperpoint get_corner_position (cell *c, int cid, ld cf IS(3))
 
EX hyperpoint nearcorner (cell *c, int i)
 
EX hyperpoint farcorner (cell *c, int i, int which)
 
EX hyperpoint midcorner (cell *c, int i, ld v)
 
EX hyperpoint get_warp_corner (cell *c, int cid)
 
EX void glError (const char *GLcall, const char *file, const int line)
 
EX void texture_vertices (GLfloat *f, int qty, int stride IS(2))
 
EX void oldvertices (GLfloat *f, int qty)
 
EX bool in_wallopt ()
 
EX bool in_perspective ()
 
EX bool hide_player ()
 
EX ld ptick (int period, ld phase IS(0))
 
EX ld fractick (int period, ld phase IS(0))
 
EX ld sintick (int period, ld phase IS(0))
 
EX transmatrix spintick (int period, ld phase IS(0))
 
EX bool doHighlight ()
 
ld spina (cell *c, int dir)
 
EX int cloakcolor (int rtr)
 
int firegradient (double p)
 
EX int firecolor (int phase IS(0), int mul IS(1))
 
EX int watercolor (int phase)
 
EX int aircolor (int phase)
 
EX int fghostcolor (cell *c)
 
EX int weakfirecolor (int phase)
 
color_t fc (int ph, color_t col, int z)
 
EX void drawLightning ()
 
EX void drawSafety ()
 
void drawShield (const transmatrix &V, eItem it)
 
void drawSpeed (const transmatrix &V)
 
void drawSafety (const transmatrix &V, int ct)
 
void drawFlash (const transmatrix &V)
 
EX ld cheilevel (ld v)
 
EX transmatrix chei (const transmatrix V, int a, int b)
 
void drawLove (const transmatrix &V, int hdir)
 
void drawWinter (const transmatrix &V, ld hdir)
 
void drawLightning (const transmatrix &V)
 
EX void drawPlayerEffects (const transmatrix &V, cell *c, bool onplayer)
 
void drawStunStars (const transmatrix &V, int t)
 
double footfun (double d)
 
void animallegs (const transmatrix &V, eMonster mo, color_t col, double footphase)
 
EX void ShadowV (const transmatrix &V, const hpcshape &bp, PPR prio IS(PPR::MONSTER_SHADOW))
 
transmatrix otherbodyparts (const transmatrix &V, color_t col, eMonster who, double footphase)
 
EX bool drawstar (cell *c)
 
EX bool drawing_usershape_on (cell *c, mapeditor::eShapegroup sg)
 
EX color_t kind_outline (eItem it)
 
EX transmatrix face_the_player (const transmatrix V)
 
EX hpcshapeorbshape (eOrbshape s)
 
EX color_t orb_auxiliary_color (eItem it)
 
EX bool drawItemType (eItem it, cell *c, const transmatrix &V, color_t icol, int pticks, bool hidden)
 
void humanoid_eyes (const transmatrix &V, color_t ecol, color_t hcol=skincolor)
 
EX void drawTerraWarrior (const transmatrix &V, int t, int hp, double footphase)
 
EX void drawPlayer (eMonster m, cell *where, const transmatrix &V, color_t col, double footphase, bool stop IS(false))
 
EX int wingphase (int period, int phase IS(0))
 
transmatrix wingmatrix (int period, int phase=0)
 
void drawMimic (eMonster m, cell *where, const transmatrix &V, color_t col, double footphase)
 
EX bool drawMonsterType (eMonster m, cell *where, const transmatrix &V1, color_t col, double footphase, color_t asciicol)
 
bool drawMonsterTypeDH (eMonster m, cell *where, const transmatrix &V, color_t col, bool dh, ld footphase, color_t asciicol)
 
EX bool applyAnimation (cell *c, transmatrix &V, double &footphase, int layer)
 
double chainAngle (cell *c, transmatrix &V, cell *c2, double dft, const transmatrix &Vwhere)
 
bool chainAnimation (cell *c, cell *c2, transmatrix &V, const transmatrix &Vwhere, ld &length)
 
EX int cellcolor (cell *c)
 
int taildist (cell *c)
 
void add_segment (int d, const function< void()> &s)
 
void drawWormSegments ()
 
EX bool drawMonster (const transmatrix &Vparam, int ct, cell *c, color_t col, color_t asciicol)
 
EX int haveaura ()
 
EX void clearaura ()
 
void apply_joukowsky_aura (hyperpoint &h)
 
EX void addauraspecial (hyperpoint h, color_t col, int dir)
 
EX void addaura (hyperpoint h, color_t col, int fd)
 
void sumaura (int v)
 
void drawaura ()
 
bool bugsNearby (cell *c, int dist=2)
 
EX int countMinesAround (cell *c)
 
EX transmatrix applyPatterndir (cell *c, const patterns::patterninfo &si)
 
EX transmatrix applyDowndir (cell *c, const cellfunction &cf)
 
void draw_movement_arrows (cell *c, const transmatrix &V, int df)
 
EX int celldistAltPlus (cell *c)
 
bool drawstaratvec (double dx, double dy)
 
EX color_t reptilecolor (cell *c)
 
ld wavefun (ld x)
 
EX void init_floorcolors ()
 
EX color_t magma_color (int id)
 
bool noAdjacentChasms (cell *c)
 
EX bool has_nice_dual ()
 
EX bool is_nice_dual (cell *c)
 
EX bool use_swapped_duals ()
 
EX void floorShadow (cell *c, const transmatrix &V, color_t col)
 
EX bool use_warp_graphics ()
 
EX void escherSidewall (cell *c, int sidepar, const transmatrix &V, color_t col)
 
EX bool placeSidewall (cell *c, int i, int sidepar, const transmatrix &V, color_t col)
 
bool openorsafe (cell *c)
 
EX int gridcolor (cell *c1, cell *c2)
 
EX void pushdown (cell *c, int &q, const transmatrix &V, double down, bool rezoom, bool repriority)
 
EX int shallow (cell *c)
 
bool allemptynear (cell *c)
 
EX int getfd (cell *c)
 
EX int colorhash (color_t i)
 
EX bool isWall3 (cell *c, color_t &wcol)
 
EX bool isWall3 (cell *c)
 
EX bool isSulphuric (eWall w)
 
color_t lcolor (cell *c)
 
EX color_t transcolor (cell *c, cell *c2, color_t wcol)
 
EX int get_darkval (cell *c, int d)
 
EX ld mousedist (transmatrix T)
 
void make_clipping_planes ()
 
EX void gridline (const transmatrix &V1, const hyperpoint h1, const transmatrix &V2, const hyperpoint h2, color_t col, int prec)
 
EX void gridline (const transmatrix &V, const hyperpoint h1, const hyperpoint h2, color_t col, int prec)
 
EX int wall_offset (cell *c)
 
EX void queue_transparent_wall (const transmatrix &V, hpcshape &sh, color_t color)
 
EX int ceiling_category (cell *c)
 
EX void set_detail_level (const transmatrix &V)
 
EX void drawBubble (cell *c, color_t col, string s, ld size)
 
EX void drawFlash (cell *c)
 
EX void drawBigFlash (cell *c)
 
EX void drawParticleSpeed (cell *c, color_t col, int speed)
 
EX void drawParticle (cell *c, color_t col, int maxspeed IS(100))
 
EX void drawDirectionalParticle (cell *c, int dir, color_t col, int maxspeed IS(100))
 
EX void drawParticles (cell *c, color_t col, int qty, int maxspeed IS(100))
 
EX void drawFireParticles (cell *c, int qty, int maxspeed IS(100))
 
EX void fallingFloorAnimation (cell *c, eWall w IS(waNone), eMonster m IS(moNone))
 
EX void fallingMonsterAnimation (cell *c, eMonster m, int id IS(multi::cpid))
 
EX void queuecircleat1 (cell *c, const transmatrix &V, double rad, color_t col)
 
EX void queuecircleat (cell *c, double rad, color_t col)
 
EX cellforwardcell ()
 
EX void drawMarkers ()
 
void drawFlashes ()
 
EX void draw_flash (struct flashdata &f, const transmatrix &V, bool &kill)
 
EX bool allowIncreasedSight ()
 
EX bool allowChangeRange ()
 
EX ld wall_radar (cell *c, transmatrix T, transmatrix LPe, ld max)
 
EX void make_actual_view ()
 
EX transmatrix cview ()
 
EX void precise_mouseover ()
 
EX void drawthemap ()
 
EX void drawmovestar (double dx, double dy)
 
EX void calcparam ()
 
EX void drawfullmap ()
 
EX void gamescreen (int _darken)
 
EX void normalscreen ()
 
template<class T >
void pushScreen (const T &x)
 
void popScreen ()
 
void popScreenAll ()
 
EX cfunction current_screen_cfunction ()
 
EX void drawscreen ()
 
EX void restartGraph ()
 
EX void clearAnimations ()
 
EX int revhint (cell *c, int hint)
 
EX transmatrix adj (const movei &m)
 
EX transmatrix iadj (const movei &m)
 
EX void animateMovement (const movei &m, int layer)
 
EX void animateAttack (const movei &m, int layer)
 
EX void indAnimateMovement (const movei &m, int layer)
 
EX void commitAnimations (int layer)
 
EX void drawBug (const cellwalker &cw, color_t col)
 
EX bool inscreenrange (cell *c)
 
void buildHelpText ()
 
EX string standard_help ()
 
EX void buildCredits ()
 
string pushtext (stringpar p)
 
string princedesc ()
 
EX string helptitle (string s, color_t col)
 
string princessReviveHelp ()
 
void describeOrb (string &help, const orbinfo &oi)
 
string other_geometry ()
 
string other_land ()
 
string other_geometry_land ()
 
string forbidden_marked ()
 
string forbidden_unmarked ()
 
EX string generateHelpForItem (eItem it)
 
void addMinefieldExplanation (string &s)
 
EX string generateHelpForWall (eWall w)
 
void buteol (string &s, int current, int req)
 
EX string generateHelpForMonster (eMonster m)
 
void add_reqs (eLand l, string &s)
 
EX string generateHelpForLand (eLand l)
 
string turnstring (int i)
 
EX string bygen (reaction_t h)
 
void gotoHelpFor (eLand l)
 
void gotoHelpFor (eItem i)
 
void gotoHelpFor (eWall w)
 
void gotoHelpFor (eMonster m)
 
EX void appendHelp (string s)
 
EX void describeMouseover ()
 
EX void showHelp ()
 
EX void gotoHelp (const string &h)
 
EX void subhelp (const string &h)
 
EX hstate transition (hstate s, int dir)
 
EX heptagonbuildHeptagon1 (heptagon *h, heptagon *parent, int d, hstate s, int pard IS(0))
 
heptagonbuildHeptagon (heptagon *parent, int d, hstate s, int pard=0, int fixdistance=COMPUTE)
 
void addSpin (heptagon *h, int d, heptagon *from, int rot, int spin)
 
heptagoncreateStep (heptagon *h, int d)
 
void backtrace (heptagon *pos)
 
void hsshow (const heptspin &t)
 
EX string its (int i)
 
EX string itsh8 (int i)
 
EX string fts (ld x, int prec IS(6))
 
EX string index_pointer (void *v)
 
string ONOFF (bool b)
 
template<class T >
void hwrite_raw (hstream &hs, const T &c)
 
template<class T >
void hread_raw (hstream &hs, T &c)
 
template<class T , typename = typename std::enable_if<std::is_integral<T>::value || std::is_enum<T>::value>::type>
void hwrite (hstream &hs, const T &c)
 
template<class T , typename = typename std::enable_if<std::is_integral<T>::value || std::is_enum<T>::value>::type>
void hread (hstream &hs, T &c)
 
void hwrite (hstream &hs, const string &s)
 
void hread (hstream &hs, string &s)
 
void hwrite (hstream &hs, const ld &h)
 
void hread (hstream &hs, ld &h)
 
template<class T , size_t X>
void hwrite (hstream &hs, const array< T, X > &a)
 
template<class T , size_t X>
void hread (hstream &hs, array< T, X > &a)
 
void hread (hstream &hs, hyperpoint &h)
 
void hwrite (hstream &hs, hyperpoint h)
 
template<class T >
void hwrite (hstream &hs, const vector< T > &a)
 
template<class T >
void hread (hstream &hs, vector< T > &a)
 
template<class T , class U >
void hwrite (hstream &hs, const map< T, U > &a)
 
template<class T , class U >
void hread (hstream &hs, map< T, U > &a)
 
template<class C , class C1 , class... CS>
void hwrite (hstream &hs, const C &c, const C1 &c1, const CS &... cs)
 
template<class C , class C1 , class... CS>
void hread (hstream &hs, C &c, C1 &c1, CS &... cs)
 
void print (hstream &hs)
 
template<class... CS>
string sprint (const CS &... cs)
 
template<class C , class C1 , class... CS>
void print (hstream &hs, const C &c, const C1 &c1, const CS &... cs)
 
template<class... CS>
void println (hstream &hs, const CS &... cs)
 
string spaced (int i)
 
string spaced (color_t col)
 
string spaced (const string &s)
 
string spaced (ld x)
 
template<class T >
string spaced_of (T a[], int q)
 
template<class T , int i>
string spaced (const array< T, i > &a)
 
template<class C , class C1 , class... CS>
string spaced (const C &c, const C1 &c1, const CS &... cs)
 
bool scan (fhstream &hs, int &)
 
bool scan (fhstream &hs, ld &)
 
bool scan (fhstream &hs, string &)
 
bool scan (fhstream &hs, color_t &c)
 
template<class C , class C1 , class... CS>
bool scan (fhstream &hs, C &c, C1 &c1, CS &... cs)
 
string scanline (fhstream &hs)
 
template<class T >
scan (fhstream &hs)
 
template<typename... Ts, typename F >
void for_each_in_tuple (std::tuple< Ts... > const &t, F f)
 
void print (hstream &hs, const string &s)
 
void print (hstream &hs, int i)
 
void print (hstream &hs, ld x)
 
void print (hstream &hs, color_t col)
 
template<class T >
void print (hstream &hs, const walker< T > &w)
 
template<class T , size_t X>
void print (hstream &hs, const array< T, X > &a)
 
template<class T >
void print (hstream &hs, const vector< T > &a)
 
void print (hstream &hs, const hyperpoint h)
 
void print (hstream &hs, const transmatrix T)
 
template<class T , class U >
void print (hstream &hs, const pair< T, U > &t)
 
template<class... T>
void print (hstream &hs, const tuple< T... > &t)
 
void special_log (char c)
 
template<class... T>
void println_log (T... t)
 
template<class... T>
void print_log (T... t)
 
string format (const char *fmt,...)
 
void print (hstream &hs, heptagon *h)
 
void print (hstream &hs, cell *h)
 
void print (hstream &hs, hrmap *h)
 
void print (hstream &hs, cellwalker cw)
 
EX string fts_fixed (ld x, int prec IS(6))
 
EX string cts (char c)
 
EX string llts (long long i)
 
EX string itsh (unsigned int i)
 
EX string itsh (int i)
 
EX string itsh2 (int i)
 
EX string itsh (unsigned long long i)
 
EX ld kz (ld x)
 
EX hyperpoint kz (hyperpoint h)
 
EX transmatrix kz (transmatrix h)
 
EX string pick123 ()
 
EX string pick12 ()
 
template<class T >
string serialize (const T &data)
 
template<class T >
deserialize (const string &s)
 
EX string as_cstring (string o)
 
EX int monsterclass (eMonster m)
 
EX int glyphclass (int i)
 
EX int subclass (int i)
 
int & ikmerge (int i)
 
bool ikappear (int i)
 
void updatesort ()
 
EX void preparesort ()
 
int glyphcorner (int i)
 
bool glyphsort (int i, int j)
 
int glyphflags (int gid)
 
EX bool graphglyph ()
 
bool displayglyph (int cx, int cy, int buttonsize, char glyph, color_t color, int qty, int flags, int id)
 
void displayglyph2 (int cx, int cy, int buttonsize, int i)
 
void drawMobileArrow (int i)
 
EX void drawStats ()
 
EX int hyper_main (int argc, char **argv)
 
template<class T >
void ignore (T &&)
 
template<class T , class V , class... U>
bool among (T x, V y)
 
template<class T , class V , class... U>
bool among (T x, V y, U... u)
 
template<class T >
int isize (const T &x)
 
void IMAGESAVE (SDL_Surface *s, const char *fname)
 
PPR operator+ (PPR x, int y)
 
PPR operator- (PPR x, int y)
 
int operator- (PPR x, PPR y)
 
template<class T , class U >
int addHook (hookset< T > *&m, int prio, const U &hook)
 
template<class T , class... U>
void callhooks (hookset< T > *h, U... args)
 
template<class T , class V , class... U>
callhandlers (V zero, hookset< T > *h, U &... args)
 
string XLAT (string)
 
template<class T , class U >
void eliminate_if (vector< T > &data, U pred)
 
template<class T >
array< T, 4 > make_array (T a, T b, T c, T d)
 
template<class T >
array< T, 3 > make_array (T a, T b, T c)
 
template<class T >
array< T, 2 > make_array (T a, T b)
 
template<class T >
void texture_order (const T &f)
 
bool needConfirmationEvenIfSaved ()
 
constexpr transmatrix diag (ld a, ld b, ld c, ld d)
 
hyperpoint hpxyz (ld x, ld y, ld z)
 
hyperpoint hpxyz3 (ld x, ld y, ld z, ld w)
 
constexpr hyperpoint point3 (ld x, ld y, ld z)
 
constexpr hyperpoint point31 (ld x, ld y, ld z)
 
constexpr hyperpoint point2 (ld x, ld y)
 
EX ld squar (ld x)
 
EX int sig (int z)
 
EX int curvature ()
 
EX ld sin_auto (ld x)
 
EX ld asin_auto (ld x)
 
EX ld acos_auto (ld x)
 
EX ld volume_auto (ld r)
 
EX ld asin_clamp (ld x)
 
EX ld asin_auto_clamp (ld x)
 
EX ld acos_auto_clamp (ld x)
 
EX ld cos_auto (ld x)
 
EX ld tan_auto (ld x)
 
EX ld atan_auto (ld x)
 
EX ld atan2_auto (ld y, ld x)
 
EX ld edge_of_triangle_with_angles (ld alpha, ld beta, ld gamma)
 
EX hyperpoint hpxy (ld x, ld y)
 
EX hyperpoint hpxy3 (ld x, ld y, ld z)
 
EX bool zero_d (int d, hyperpoint h)
 
EX ld intval (const hyperpoint &h1, const hyperpoint &h2)
 
EX ld quickdist (const hyperpoint &h1, const hyperpoint &h2)
 
EX ld sqhypot_d (int d, const hyperpoint &h)
 
EX ld hypot_d (int d, const hyperpoint &h)
 
EX ld zlevel (const hyperpoint &h)
 
EX ld hypot_auto (ld x, ld y)
 
EX hyperpoint normalize (hyperpoint H)
 
EX hyperpoint normalize_flat (hyperpoint h)
 
EX hyperpoint mid (const hyperpoint &H1, const hyperpoint &H2)
 
EX hyperpoint midz (const hyperpoint &H1, const hyperpoint &H2)
 
EX transmatrix cspin (int a, int b, ld alpha)
 
EX transmatrix spin (ld alpha)
 
EX transmatrix random_spin ()
 
EX transmatrix eupush (ld x, ld y)
 
EX transmatrix eupush (hyperpoint h)
 
EX transmatrix eupush3 (ld x, ld y, ld z)
 
EX transmatrix euscalezoom (hyperpoint h)
 
EX transmatrix euaffine (hyperpoint h)
 
EX transmatrix cpush (int cid, ld alpha)
 
EX transmatrix xpush (ld alpha)
 
EX bool eqmatrix (transmatrix A, transmatrix B, ld eps IS(.01))
 
EX hyperpoint orthogonal_move (const hyperpoint &h, ld z)
 
EX transmatrix ypush (ld alpha)
 
EX transmatrix zpush (ld z)
 
EX transmatrix matrix3 (ld a, ld b, ld c, ld d, ld e, ld f, ld g, ld h, ld i)
 
EX transmatrix matrix4 (ld a, ld b, ld c, ld d, ld e, ld f, ld g, ld h, ld i, ld j, ld k, ld l, ld m, ld n, ld o, ld p)
 
EX void swapmatrix (transmatrix &T)
 
EX void swapmatrix (hyperpoint &h)
 
EX transmatrix parabolic1 (ld u)
 
EX transmatrix parabolic13 (ld u, ld v)
 
EX hyperpoint parabolic10 (hyperpoint h)
 
EX hyperpoint deparabolic10 (const hyperpoint h)
 
EX transmatrix spintoc (const hyperpoint &H, int t, int f)
 
EX transmatrix rspintoc (const hyperpoint &H, int t, int f)
 
EX transmatrix spintox (const hyperpoint &H)
 
EX transmatrix rspintox (const hyperpoint &H)
 
EX transmatrix pushxto0 (const hyperpoint &H)
 
EX void set_column (transmatrix &T, int i, const hyperpoint &H)
 
EX transmatrix build_matrix (hyperpoint h1, hyperpoint h2, hyperpoint h3, hyperpoint h4)
 
EX transmatrix rpushxto0 (const hyperpoint &H)
 
EX transmatrix ggpushxto0 (const hyperpoint &H, ld co)
 
EX transmatrix gpushxto0 (const hyperpoint &H)
 
EX transmatrix rgpushxto0 (const hyperpoint &H)
 
EX void fixmatrix (transmatrix &T)
 Fix the numerical inaccuracies in the isometry T The nature of hyperbolic geometry makes the computations numerically unstable. The numerical errors tend to accumulate, eventually destroying the projection. This function fixes this problem by replacing T with a 'correct' isometry.
 
EX ld det (const transmatrix &T)
 
void inverse_error (const transmatrix &T)
 
EX transmatrix inverse (const transmatrix &T)
 
EX pair< ld, hyperpointproduct_decompose (hyperpoint h)
 
EX ld hdist0 (const hyperpoint &mh)
 
EX ld circlelength (ld r)
 
EX ld hdist (const hyperpoint &h1, const hyperpoint &h2)
 
EX hyperpoint mscale (const hyperpoint &t, double fac)
 
EX transmatrix mscale (const transmatrix &t, double fac)
 
EX transmatrix xyscale (const transmatrix &t, double fac)
 
EX transmatrix xyzscale (const transmatrix &t, double fac, double facz)
 
EX transmatrix mzscale (const transmatrix &t, double fac)
 
EX hyperpoint mid3 (hyperpoint h1, hyperpoint h2, hyperpoint h3)
 
EX hyperpoint mid_at (hyperpoint h1, hyperpoint h2, ld v)
 
EX hyperpoint mid_at_actual (hyperpoint h, ld v)
 
EX hyperpoint orthogonal_of_C0 (hyperpoint h0, hyperpoint h1, hyperpoint h2)
 
EX hyperpoint zshift (hyperpoint x, ld z)
 
EX hyperpoint hpxd (ld d, ld x, ld y, ld z)
 
EX ld signum (ld x)
 
EX bool asign (ld y1, ld y2)
 
EX ld xcross (ld x1, ld y1, ld x2, ld y2)
 
EX transmatrix parallel_transport (const transmatrix Position, const transmatrix &ori, const hyperpoint direction, int precision IS(100))
 
EX void apply_parallel_transport (transmatrix &Position, const transmatrix orientation, const hyperpoint direction)
 
EX void rotate_object (transmatrix &Position, transmatrix &orientation, transmatrix R)
 
EX transmatrix spin_towards (const transmatrix Position, transmatrix &ori, const hyperpoint goal, int dir, int back)
 
EX ld ortho_error (transmatrix T)
 
EX transmatrix transpose (transmatrix T)
 
hyperpoint cpush0 (int c, ld x)
 
hyperpoint xspinpush0 (ld alpha, ld x)
 
hyperpoint xpush0 (ld x)
 
hyperpoint ypush0 (ld x)
 
hyperpoint zpush0 (ld x)
 
hyperpoint tC0 (const transmatrix &T)
 
EX hyperpoint ctangent (int c, ld x)
 
EX hyperpoint xtangent (ld x)
 
EX hyperpoint ztangent (ld z)
 
EX hyperpoint tangent_length (hyperpoint dir, ld length)
 
EX hyperpoint direct_exp (hyperpoint v, int steps)
 
EX hyperpoint inverse_exp (const hyperpoint h, iePrecision p, bool just_direction IS(true))
 
EX ld geo_dist (const hyperpoint h1, const hyperpoint h2, iePrecision p)
 
EX hyperpoint lp_iapply (const hyperpoint h)
 
EX hyperpoint lp_apply (const hyperpoint h)
 
EX hyperpoint smalltangent ()
 
EX void cyclefix (ld &a, ld b)
 
EX ld raddif (ld a, ld b)
 
EX int bucketer (ld x)
 
EX int bucketer (hyperpoint h)
 
void initweb ()
 
void emscripten_get_commandline ()
 
void loadCompressedChar (int &otwidth, int &otheight, int *tpix)
 
std::string get_value (std::string name)
 
string get_value (string name)
 
EX void open_url (string s)
 
void toggleanim (bool v)
 
void showDemo ()
 
EM_BOOL fsc_callback (int eventType, const EmscriptenFullscreenChangeEvent *fullscreenChangeEvent, void *userData)
 
bool sphereflipped ()
 
void ghcheck (hyperpoint &ret, const hyperpoint &H)
 
EX void camrotate (ld &hx, ld &hy)
 
EX bool non_spatial_model ()
 
EX hyperpoint perspective_to_space (hyperpoint h, ld alpha IS(vid.alpha), eGeometryClass gc IS(ginf[geometry].cclass))
 
EX hyperpoint space_to_perspective (hyperpoint z, ld alpha IS(vid.alpha))
 
EX hyperpoint gethyper (ld x, ld y)
 
void ballmodel (hyperpoint &ret, double alpha, double d, double zl)
 
void apply_depth (hyperpoint &f, ld z)
 
bool hypot_zlev (ld zlev, ld &d, ld &df, ld &zf)
 
ld find_zlev (hyperpoint &H)
 
ld get_tz (hyperpoint H)
 
EX ld atan2 (hyperpoint h)
 
pair< ld, ld > move_z_to_y (hyperpoint &H)
 
void move_y_to_z (hyperpoint &H, pair< ld, ld > coef)
 
template<class T >
void makeband (hyperpoint H, hyperpoint &ret, const T &f)
 
void band_conformal (ld &x, ld &y)
 
void make_twopoint (ld &x, ld &y)
 
hyperpoint mobius (hyperpoint h, ld angle, ld scale=1)
 
hyperpoint compute_hybrid (hyperpoint H, int rootid)
 
EX ld signed_sqrt (ld x)
 
EX void applymodel (hyperpoint H, hyperpoint &ret)
 
EX bool outofmap (hyperpoint h)
 
EX hyperpoint mirrorif (const hyperpoint &V, bool b)
 
EX transmatrix mirrorif (const transmatrix &V, bool b)
 
EX int away (const transmatrix &V2)
 
EX double zgrad0 (double l1, double l2, int nom, int den)
 
EX bool behindsphere (const hyperpoint &h)
 
ld to01 (ld a0, ld a1, ld x)
 
EX ld spherity (const hyperpoint &h)
 
EX bool behindsphere (const transmatrix &V)
 
EX ld spherity (const transmatrix &V)
 
EX bool confusingGeometry ()
 
EX ld master_to_c7_angle ()
 
EX transmatrix actualV (const heptspin &hs, const transmatrix &V)
 
EX bool point_behind (hyperpoint h)
 
void raise_error ()
 
EX bool invalid_matrix (const transmatrix T)
 
EX bool invalid_point (const hyperpoint h)
 
EX bool in_smart_range (const transmatrix &T)
 
EX bool drawcell_subs (cell *c, transmatrix V)
 
EX void spinEdge (ld aspd)
 
EX void centerpc (ld aspd)
 
EX void optimizeview ()
 
void addball (ld a, ld b, ld c)
 
void ballgeometry ()
 
EX void resetview ()
 
EX void panning (hyperpoint hf, hyperpoint ht)
 
EX void fullcenter ()
 
transmatrix screenpos (ld x, ld y)
 
EX eModel flat_model ()
 
EX transmatrix atscreenpos (ld x, ld y, ld size)
 
void circle_around_center (ld radius, color_t linecol, color_t fillcol, PPR prio)
 
EX void draw_model_elements ()
 
void queuestraight (hyperpoint X, int style, color_t lc, color_t fc, PPR p)
 
EX void draw_boundary (int w)
 
EX void fix_the_band (transmatrix &T)
 
EX bool do_draw (cell *c)
 
bool limited_generation (cell *c)
 
EX bool do_draw (cell *c, const transmatrix &T)
 
EX int cone_side (const hyperpoint H)
 
EX transmatrixget_view_orientation ()
 
EX void rotate_view (transmatrix T)
 
EX transmatrix get_shift_view_of (const hyperpoint H, const transmatrix V)
 
EX void shift_view (hyperpoint H)
 
void multiply_view (transmatrix T)
 
EX void shift_view_to (hyperpoint H)
 
EX void shift_view_towards (hyperpoint H, ld l)
 
EX void initAll ()
 
EX void finishAll ()
 
EX bool cannotPickupItem (cell *c, bool telekinesis)
 
EX bool canPickupItemWithMagnetism (cell *c, cell *from)
 
EX bool doPickupItemsWithMagnetism (cell *c)
 
EX void pickupMovedItems (cell *c)
 
EX bool collectItem (cell *c2, bool telekinesis IS(false))
 
EX void glance_message ()
 
EX void dropGreenStone (cell *c)
 
EX void moveItem1 (cell *from, cell *to, bool activateYendor)
 
EX void moveItem (cell *from, cell *to, bool activateYendor)
 
EX bool itemHidden (cell *c)
 
EX eItem localTreasureType ()
 
EX void countLocalTreasure ()
 
EX int gold (int no IS(0))
 
EX int maxgold ()
 
EX void updateHi (eItem it, int v)
 
EX void gainItem (eItem it)
 
EX string itemcounter (int qty)
 
EX void gainShard (cell *c2, const char *msg)
 
EX void placeItems (int qty, eItem it)
 
EX bool cantGetGrimoire (cell *c2, bool verbose IS(true))
 
EX void gainLife ()
 
EX void collectMessage (cell *c2, eItem which)
 
EX bool itemHiddenFromSight (cell *c)
 
EX void doOvergenerate ()
 
EX bool notDippingFor (eItem i)
 
EX bool notDippingForExtra (eItem i, eItem x)
 
void buildRedWall (cell *c, int gemchance)
 
bool blizzard_no_escape1 (cell *c, manual_celllister &cl)
 
bool blizzard_no_escape (cell *c)
 
bool out_ruin (cell *c)
 
EX eMonster genRuinMonster (cell *c)
 
void gen_brownian (cell *c)
 
EX void createArrowTrapAt (cell *c, eLand land)
 
EX eMonster emerald_monster ()
 
EX void build_pool (cell *c, bool with_boat)
 
EX void place_elemental_wall (cell *c)
 
EX int hrand_monster (int x)
 
EX bool is_zebra_trapdoor (cell *c)
 
EX void gen_eclectic_monster (cell *c)
 
EX void giantLandSwitch (cell *c, int d, cell *from)
 
EX void repairLandgen (cell *c)
 
EX void setland_randomwalk (cell *c)
 
EX void setdist (cell *c, int d, cell *from)
 
EX bool in_full_game ()
 
EX bool nodisplay (eMonster m)
 
EX int isNative (eLand l, eMonster m)
 
EX eItem treasureType (eLand l)
 
EX eItem treasureTypeUnlock (eLand l, eItem u)
 
EX eLand landof (eItem it)
 
EX int landMultiplier (eLand l)
 
EX bool isCrossroads (eLand l)
 
EX bool bearsCamelot (eLand l)
 
EX bool inmirror (const cellwalker &cw)
 
EX eLand oppositeElement (eLand l, eLand l2)
 
EX bool landUnlockedRPM (eLand n)
 
EX int variant_unlock_value ()
 
EX bool landUnlocked (eLand l)
 
EX bool required_for_hyperstones (eItem ttype)
 
EX void countHyperstoneQuest (int &i1, int &i2)
 
EX bool hyperstonesUnlocked ()
 
EX int isRandland (eLand l)
 
EX bool incompatible1 (eLand l1, eLand l2)
 
EX eLand randomElementalLand ()
 
EX int elementalKills ()
 
EX eLand randomElementalLandWeighted ()
 
EX bool incompatible (eLand nw, eLand old)
 
EX bool rlyehComplete ()
 
bool lchance (eLand l)
 
EX eLand pickLandRPM (eLand old)
 
EX eLand pickluck (eLand l1, eLand l2)
 
EX eLand getNewSealand (eLand old)
 
EX bool createOnSea (eLand old)
 
EX eLand getNewLand (eLand old)
 
template<class T >
void generateLandList (T t)
 
EX eLand getLandForList (cell *c)
 
EX bool isLandIngame (eLand l)
 
EX land_validity_tland_validity (eLand l)
 
const EX string dnameof (eMonster m)
 
const EX string dnameof (eLand l)
 
const EX string dnameof (eWall w)
 
const EX string dnameof (eItem i)
 
void rep (string &pattern, string what, string to)
 
void reponce (string &pattern, string what, string to)
 
hashcode langhash (const string &s)
 
template<class T >
const T * findInHashTableS (string s, const T *table, int size)
 
string choose3 (int g, string a, string b, string c)
 
string choose4 (int g, string a, string b, string c, string d)
 
void basicrep (string &x)
 
void parrep (string &x, string w, stringpar p)
 
void postrep (string &s)
 
EX string XLAT (string x, stringpar p1)
 
EX string XLAT (string x, stringpar p1, stringpar p2)
 
EX string XLAT (string x, stringpar p1, stringpar p2, stringpar p3)
 
EX string XLAT (string x, stringpar p1, stringpar p2, stringpar p3, stringpar p4)
 
EX string XLAT (string x, stringpar p1, stringpar p2, stringpar p3, stringpar p4, stringpar p5)
 
EX string XLATN (string x)
 
EX string XLAT1 (string x)
 
EX string XLATT1 (stringpar p)
 
EX bool shapename_available (int id)
 
EX string shapename (int id)
 
int gmod (int i, int j)
 
template<class T >
T * tailored_alloc (int degree)
 
template<class T >
void tailored_delete (T *x)
 
heptspin operator+ (cellwalker cw, cth_t)
 
cellwalker operator+ (heptspin hs, cth_t)
 
EX movei moveimon (cell *c)
 
EX movei match (cell *f, cell *t)
 
int read_editor_args ()
 
EX void initcell (cell *c)
 
EX bool doesnotFall (cell *c)
 
EX bool doesFall (cell *c)
 
EX bool doesFallSound (cell *c)
 
EX void destroyBoats (cell *c, cell *c2, bool strandedToo)
 
EX bool bird_disruption (cell *c)
 
EX bool in_gravity_zone (cell *c)
 
EX int gravity_zone_diff (cell *c)
 
EX bool isJWall (cell *c)
 
EX eGravity get_static_gravity (cell *c)
 
EX eGravity get_move_gravity (cell *c, cell *c2)
 
EX bool isWarped (cell *c)
 
EX bool nonAdjacent (cell *c, cell *c2)
 
EX bool nonAdjacentPlayer (cell *c, cell *c2)
 
EX bool thruVine (cell *c, cell *c2)
 
EX void useup (cell *c)
 
EX bool earthFloor (cell *c)
 
EX bool earthWall (cell *c)
 
EX bool snakepile (cell *c, eMonster m)
 
EX bool makeflame (cell *c, int timeout, bool checkonly)
 
EX void explosion (cell *c, int power, int central)
 
EX void explodeMine (cell *c)
 
EX void explodeBarrel (cell *c)
 
EX bool mayExplodeMine (cell *c, eMonster who)
 
EX void flameHalfvine (cell *c, int val)
 
EX bool destroyHalfvine (cell *c, eWall newwall IS(waNone), int tval IS(6))
 
EX int gravityLevel (cell *c)
 
EX int gravityLevelDiff (cell *c, cell *d)
 
EX bool canUnstable (eWall w, flagtype flags)
 
EX bool cellEdgeUnstable (cell *c, flagtype flags IS(0))
 
EX void calcTidalPhase ()
 
EX int tidespeed ()
 
EX int lavatide (cell *c, int t)
 
EX void checkTide (cell *c)
 
EX bool makeEmpty (cell *c)
 
EX void toggleGates (cell *c, eWall type, int rad)
 
EX void toggleGates (cell *ct, eWall type)
 
EX void destroyTrapsOn (cell *c)
 
EX void destroyTrapsAround (cell *c)
 
EX void destroyWeakBranch (cell *cf, cell *ct, eMonster who)
 
EX bool isCentralTrap (cell *c)
 
EX array< cell *, 5 > traplimits (cell *c)
 
EX void activateArrowTrap (cell *c)
 
template<class T >
movei determinePush (cellwalker who, int subdir, const T &valid)
 
EX void explodeAround (cell *c)
 
EX bool earthMove (const movei &mi)
 
EX bool cellDangerous (cell *c)
 
int PREC (ld x)
 
EX void showOverview ()
 
EX void showMainMenu ()
 
EX void editScale ()
 
EX void showGraphQuickKeys ()
 
EX void enable_cheat ()
 
EX void switchHardcore ()
 
EX void showCreative ()
 
EX void show_chaos ()
 
EX void showChangeMode ()
 
EX bool showHalloween ()
 
void announce_random ()
 
void announce_nothing ()
 
void announce_seasonal ()
 
EX void showStartMenu ()
 
named_functionality named_dialog (string x, reaction_t dialog)
 
EX named_functionality get_o_key ()
 
EX string gettimestamp (msginfo &m)
 
EX void showMessageLog ()
 
int read_menu_args ()
 
bool mdAzimuthalEqui ()
 
bool mdBandAny ()
 
bool mdPseudocylindrical ()
 
EX int buildIvy (cell *c, int children, int minleaf)
 
EX void chasmify (cell *c)
 
EX void chasmifyEarth (cell *c)
 
EX void chasmifyElemental (cell *c)
 
EX eMonster crossroadsMonster ()
 
EX eMonster wanderingCrossroadsMonster ()
 
EX int palaceHP ()
 
EX int hardness_empty ()
 
EX bool redtrolls (cell *c)
 
EX eMonster pickTroll (cell *c)
 
EX void dieTroll (cell *c, eMonster m)
 
EX int reptilemax ()
 
bool wchance (int a, int of, int reduction=0)
 
void wanderingZebra (cell *start)
 
EX int getGhostTimer ()
 
EX int getGhostcount ()
 
int getSeepcount ()
 
EX bool canReachPlayer (cell *cf, eMonster m)
 
EX bool haveOrbPower ()
 
EX bool haveKraken ()
 
EX eItem wanderingTreasure (cell *c)
 
EX void wandering ()
 
EX void generateSnake (cell *c, int i, int snakecolor)
 
EX void addButterfly (cell *c)
 
EX void makeTrollFootprints (cell *c)
 
EX bool hasPrincessWeapon (eMonster m)
 
EX void sageheat (cell *c, double v)
 
EX void moveEffect (const movei &mi, eMonster m)
 
EX void moveMonster (const movei &mi)
 
EX bool cannotGo (eMonster m, cell *c)
 
EX bool wantsToStay (eMonster m)
 
EX bool batsAfraid (cell *c)
 
EX int angledist (int t, int d1, int d2)
 
EX int angledistButterfly (int t, int d1, int d2)
 
EX int angledist (cell *c, int d1, int d2)
 
EX bool anglestraight (cell *c, int d1, int d2)
 
EX int bulldist (cell *c)
 
EX int bulldistance (cell *c, cell *d)
 
EX int landheattype (cell *c)
 
EX int moveval (cell *c1, cell *c2, int d, flagtype mf)
 
EX int stayval (cell *c, flagtype mf)
 
EX int totalbulldistance (cell *c, int k)
 
EX void determinizeBull (cell *c, vector< int > &posdir)
 
EX int determinizeBullPush (cellwalker bull)
 
EX int pickMoveDirection (cell *c, flagtype mf)
 
EX int pickDownDirection (cell *c, flagtype mf)
 
EX void beastAttack (cell *c, bool player, bool targetdir)
 
EX cellmoveNormal (cell *c, flagtype mf)
 
EX void mountmove (const movei &mi, bool fp)
 
EX void moveWorm (cell *c)
 
EX void ivynext (cell *c)
 
EX void removeIvy (cell *c)
 
EX void moveivy ()
 
EX bool isTargetOrAdjacent (cell *c)
 
EX void groupmove2 (const movei &mi, eMonster movtype, flagtype mf)
 
EX void groupmove (eMonster movtype, flagtype mf)
 
EX void moveHexSnake (const movei &mi, bool mounted)
 
EX void snakeAttack (cell *c, bool mounted)
 
EX bool goodmount (cell *c, bool mounted)
 
EX int inpair (cell *c, int colorpair)
 
EX int snake_pair (cell *c)
 
EX void hexvisit (cell *c, cell *from, int d, bool mounted, int colorpair)
 
EX void movehex (bool mounted, int colorpair)
 
EX void movehex_rest (bool mounted)
 
EX void movemutant ()
 
EX void clearshadow ()
 
EX void moveshadow ()
 
EX void moveghosts ()
 
EX int stayvalue (eMonster m, cell *c)
 
EX int movevalue (eMonster m, cell *c, cell *c2, flagtype flags)
 
EX void movegolems (flagtype flags)
 
EX void moveButterflies ()
 
EX void specialMoves ()
 
EX void moveworms ()
 
EX void refreshFriend (cell *c)
 
EX void consMove (cell *c, eMonster param)
 
EX void moveNormals (eMonster param)
 
EX void movehex_all ()
 
EX void movemonsters ()
 
EX bool nogoSlow (cell *to, cell *from)
 
EX void beastcrash (cell *c, cell *beast)
 
EX void stayEffect (cell *c)
 
EX int realstuntime (cell *c)
 
void gamedata_all (gamedata &gd)
 
reaction_t mayboth (reaction_t what)
 
EX bool in_s2xe ()
 
EX bool in_h2xe ()
 
EX bool in_e2xe ()
 
EX eItem nativeOrbType (eLand l)
 
const orbinfogetNativityOrbInfo (eItem orb)
 
EX eOrbLandRelation getOLR (eItem it, eLand l)
 
EX int orbsUnlocked ()
 
EX ld orbprizefun (int tr)
 
EX ld orbcrossfun (int tr)
 
EX bool buildPrizeMirror (cell *c, int freq)
 
EX eLand getPrizeLand (cell *c IS(cwt.at))
 
EX void placePrizeOrb (cell *c)
 
EX int treasureForLocal ()
 
EX bool extra_safety_for_memory (cell *c)
 
EX void placeLocalOrbs (cell *c)
 
EX void placeLocalSpecial (cell *c, int outof, int loc IS(1), int priz IS(1))
 
EX void placeCrossroadOrbs (cell *c)
 
EX void placeOceanOrbs (cell *c)
 
EX bool markOrb (eItem it)
 
EX bool markEmpathy (eItem it)
 
EX bool markEmpathy2 (eItem it)
 
EX bool markOrb2 (eItem it)
 
EX int fixpower (int qty)
 
EX void useupOrb (eItem it, int qty)
 
EX void drainOrb (eItem it, int target IS(0))
 
EX void empathyMove (const movei &mi)
 
EX int intensify (int val)
 
EX bool reduceOrbPower (eItem it, int cap)
 
EX void reduceOrbPowerAlways (eItem it)
 
EX void reduceOrbPowers ()
 
EX void flashAlchemist (cell *c)
 
EX void flashCell (cell *c, eMonster killer, flagtype flags)
 
EX bool distanceBound (cell *c1, cell *c2, int d)
 
EX void checkFreedom (cell *cf)
 
EX void activateFlash ()
 
EX bool reflectingBarrierAt (cell *c)
 
EX bool reflectingBarrierAt (cellwalker &c, int d)
 
EX void killAdjacentSharks (cell *c)
 
EX void castLightningBolt (cellwalker lig)
 
EX void castLightningBoltFrom (cell *c)
 
EX void activateLightning ()
 
EX bool haveRangedTarget ()
 
void checkmoveO ()
 
int teleportAction ()
 
EX void teleportTo (cell *dest)
 
EX bool jumpTo (orbAction a, cell *dest, eItem byWhat, int bonuskill IS(0), eMonster dashmon IS(moNone))
 
void growIvyTo (const movei &mi)
 
pair< int, bool > spacedrain (cell *c)
 
void telekinesis (cell *dest)
 
EX eMonster summonedAt (cell *dest)
 
void summonAt (cell *dest)
 
bool tempWallPossibleAt (cell *dest)
 
void tempWallAt (cell *dest)
 
void psi_attack (cell *dest)
 
bool gun_attack (orbAction a, cell *dest)
 
EX void checkStunKill (cell *dest)
 
void stun_attack (cell *dest)
 
void poly_attack (cell *dest)
 
void placeIllusion (cell *c)
 
void blowoff (const movei &mi)
 
void useOrbOfDragon (cell *c)
 
EX bool monstersnearO (orbAction a, cell *c, eMonster who, cell *pushto, cell *comefrom)
 
EX bool isCheck (orbAction a)
 
EX bool isWeakCheck (orbAction a)
 
EX movei blowoff_destination (cell *c, int &di)
 
EX int check_jump (cell *cf, cell *ct, flagtype flags, cell *&jumpthru)
 
EX int check_phase (cell *cf, cell *ct, flagtype flags, cell *&jumpthru)
 
EX cellcommon_neighbor (cell *cf, cell *ct)
 
EX void apply_impact (cell *c)
 
EX int check_vault (cell *cf, cell *ct, flagtype flags, cell *&jumpthru)
 
EX eItem targetRangedOrb (cell *c, orbAction a)
 
EX int orbcharges (eItem it)
 
EX bool isShmupLifeOrb (eItem it)
 
EX void makelava (cell *c, int i)
 
EX void orboflava (int i)
 
EX bool againstCurrent (cell *w, cell *from)
 
EX bool boatGoesThrough (cell *c)
 
EX void become_water (cell *c)
 
EX void placeWater (cell *c, cell *c2)
 
EX int incline (cell *cfrom, cell *cto)
 
EX bool checkflags (flagtype flags, flagtype x)
 
EX bool strictlyAgainstGravity (cell *w, cell *from, bool revdir, flagtype flags)
 
EX bool anti_alchemy (cell *w, cell *from)
 
EX bool passable (cell *w, cell *from, flagtype flags)
 
EX int airdist (cell *c)
 
EX ld calcAirdir (cell *c)
 
EX bool againstWind (cell *cto, cell *cfrom)
 
EX bool ghostmove (eMonster m, cell *to, cell *from)
 
bool slimepassable (cell *w, cell *c)
 
bool sharkpassable (cell *w, cell *c)
 
EX bool canPushStatueOn (cell *c)
 
EX void moveBoat (const movei &mi)
 
EX void moveBoatIfUsingOne (const movei &mi)
 
bool againstMagnet (cell *c1, cell *c2, eMonster m)
 
EX bool againstPair (cell *c1, cell *c2, eMonster m)
 
EX bool notNearItem (cell *c)
 
EX bool isNeighbor1 (cell *f, cell *w)
 
EX bool passable_for (eMonster m, cell *w, cell *from, flagtype extra)
 
EX eMonster movegroup (eMonster m)
 
EX bool logical_adjacent (cell *c1, eMonster m1, cell *c2)
 
EX void buildAirmap ()
 
EX int rosedist (cell *c)
 
EX bool againstRose (cell *cfrom, cell *cto)
 
EX bool withRose (cell *cfrom, cell *cto)
 
EX void buildRosemap ()
 
EX bool scentResistant ()
 
EX int ctof (cell *c)
 
EX int ctof012 (cell *c)
 
int gp_threecolor ()
 
int eupattern (cell *c)
 
int eupattern4 (cell *c)
 
EX bool ishept (cell *c)
 
EX bool ishex1 (cell *c)
 
bool ishex2 (cell *c)
 
int chessvalue (cell *c)
 
EX int emeraldval (heptagon *h)
 
EX int emeraldval (cell *c)
 
unsigned bitmajority (unsigned a, unsigned b, unsigned c)
 
int eufifty (cell *c)
 
int fiftyval (cell *c)
 
EX int cdist50 (cell *c)
 
int land50 (cell *c)
 
EX bool polara50 (cell *c)
 
EX bool polarb50 (cell *c)
 
EX int fiftyval049 (heptagon *h)
 
EX int fiftyval049 (cell *c)
 
EX int fiftyval200 (cell *c)
 
int dir_bitrunc457 (cell *c)
 
int val46 (cell *c)
 
EX int zebra40 (cell *c)
 
EX int zebra3 (cell *c)
 
EX int getHemisphere (heptagon *h, int which)
 
EX int getHemisphere (cell *c, int which)
 
EX bool geosupport_chessboard ()
 
EX int geosupport_threecolor ()
 
EX int geosupport_football ()
 
EX int pattern_threecolor (cell *c)
 
EX bool pseudohept (cell *c)
 
EX bool kraken_pseudohept (cell *c)
 
EX bool warptype (cell *c)
 
color_t random_landscape (cell *c, int mul, int div, int step, color_t base)
 
EX bool is_master (cell *c)
 
int read_pattern_args ()
 
EX int emerald_heptagon (int parent, int dir)
 
EX int emerald_hexagon (int a, int b, int c)
 
EX int firstfiftyval (int d)
 
EX int nextfiftyval (int par, int gpar, int d)
 
EX int land50 (int x)
 
EX bool polara50 (int x)
 
EX bool polarb50 (int x)
 
EX int cdist50 (int x)
 
EX int zebra_heptagon (int parent, int dir)
 
EX int fifty_38 (int f, int d)
 
EX void fail_survivalist ()
 
EX cell *& singlepos ()
 
EX bool singleused ()
 
EX void createNoise (int t)
 
EX bool checkNeedMove (bool checkonly, bool attacking)
 
EX bool movepcto (int d, int subdir IS(1), bool checkonly IS(false))
 
EX void copy_metadata (cell *x, const gcell *y)
 
bool switch_lhu_in (eLand l)
 
void apply_chaos ()
 
EX bool chaos_forbidden (cell *c)
 
bool movepcto (const movedir &md)
 
EX bool warningprotection (const string &s)
 
EX bool warningprotection_hit (eMonster m)
 
EX bool playerInWater ()
 
EX int numplayers ()
 
EX cellplayerpos (int i)
 
EX bool allPlayersInBoats ()
 
EX int whichPlayerOn (cell *c)
 
EX bool isPlayerOn (cell *c)
 
EX bool isPlayerInBoatOn (cell *c, int i)
 
EX bool playerInBoat (int i)
 
EX bool isPlayerInBoatOn (cell *c)
 
EX bool playerInPower ()
 
EX void playerMoveEffects (cell *c1, cell *c2)
 
EX void afterplayermoved ()
 
EX void produceGhost (cell *c, eMonster victim, eMonster who)
 
EX bool swordAttack (cell *mt, eMonster who, cell *c, int bb)
 
EX void swordAttackStatic (int bb)
 
EX void swordAttackStatic ()
 
EX void spread_plague (cell *mf, cell *mt, int dir, eMonster who)
 
EX void sideAttackAt (cell *mf, int dir, cell *mt, eMonster who, eItem orb, cell *pf)
 
EX void sideAttack (cell *mf, int dir, eMonster who, int bonus, eItem orb)
 
EX void sideAttack (cell *mf, int dir, eMonster who, int bonuskill)
 
EX eMonster do_we_stab_a_friend (cell *mf, cell *mt, eMonster who)
 
EX void wouldkill (const char *msg)
 
EX bool havePushConflict (cell *pushto, bool checkonly)
 
EX void movecost (cell *from, cell *to, int phase)
 
ld gsca ()
 
ld grot ()
 
template<class... T>
ld gsca (bool geometry, ld factor, T... t)
 
template<class... T>
ld grot (bool geometry, ld factor, T... t)
 
vector< ld > equal_weights (20, 1)
 
hyperpoint ray_kleinize (hyperpoint h, int id, ld pz)
 
vector< hyperpointmake4 (hyperpoint a, hyperpoint b, hyperpoint c)
 
vector< hyperpointmake5 (hyperpoint a, hyperpoint b, hyperpoint c)
 
EX bool quitsaves ()
 
EX bool needConfirmation ()
 
EX int getgametime ()
 
EX string getgametime_s (int timespent IS(getgametime()))
 
string timeline ()
 
EX void noaction ()
 
string contstr ()
 
eLand nextHyperstone ()
 
EX void showMission ()
 
EX void handleKeyQuit (int sym, int uni)
 
EX int counthints ()
 
EX void showMissionScreen ()
 
pair< bool, hyperpointmakeradar (hyperpoint h)
 
EX void addradar (const transmatrix &V, char ch, color_t col, color_t outline)
 
EX void addradar (const hyperpoint h1, const hyperpoint h2, color_t col)
 
EX void draw_radar (bool cornermode)
 
EX void destroycellcontents (cell *c)
 
void degrade (cell *c)
 
void slow_delete_cell (cell *c)
 
void delete_heptagon (heptagon *h2)
 
void recursive_delete (heptagon *h, int i)
 
bool unsafeLand (cell *c)
 
EX void save_memory ()
 
EX bool is_cell_removed (cell *c)
 
EX void set_if_removed (cell *&c, cell *val)
 
void reserve_handler ()
 
EX void apply_memory_reserve ()
 
EX void memory_for_lib ()
 
EX void show_memory_menu ()
 
EX bool protect_memory ()
 
EX bool memory_issues ()
 
glhr::glmatrix model_orientation_gl ()
 
shared_ptr< glhr::GLprogramwrite_shader (flagtype shader_flags)
 
EX void add_if (string &shader, const string &seek, const string &function)
 
EX void add_fixed_functions (string &shader)
 
EX flagtype get_shader_flags ()
 
EX void glapplymatrix (const transmatrix &V)
 
ld sqdist (hyperpoint a, hyperpoint b)
 
EX int get_skybrightness (int mul IS(1))
 
EX void prepare_sky ()
 
color_t skycolor (cell *c)
 
EX eLand getCurrentLandForMusic ()
 
EX void playSeenSound (cell *c)
 
int read_sound_args ()
 
EX void playSound (cell *c, const string &fname, int vol IS(100))
 
EX void resetmusic ()
 
EX int spherecells ()
 
EX heptagongetDodecahedron (int i)
 
EX hrmapnew_spherical_map ()
 
EX bool verless (string v, string cmp)
 
bool do_use_special_land ()
 
EX void welcomeMessage ()
 
EX void initgame ()
 
void applyBox (int &t)
 
void applyBoxBignum (bignum &tb)
 
EX void applyBoxNum (int &i, string name IS(""))
 
void applyBoxBool (bool &b, string name="")
 
void applyBoxSave (int i, string name="")
 
int applyBoxLoad (string name="")
 
void applyBoxI (eItem it, bool f=false)
 
void addinv (eItem it)
 
void applyBoxOrb (eItem it)
 
void list_invorb ()
 
void applyBoxM (eMonster m, bool f=false)
 
EX void applyBoxes ()
 
EX void saveBox ()
 
void loadBox ()
 
void loadBoxHigh ()
 
EX void remove_emergency_save ()
 
EX void saveStats (bool emergency IS(false))
 
EX void loadsave ()
 
EX void stop_game ()
 
eModel default_model ()
 
EX void set_geometry (eGeometry target)
 
EX void set_variation (eVariation target)
 
void stop_tour ()
 
EX void switch_game_mode (char switchWhat)
 
EX void start_game ()
 
EX void restart_game (char switchWhat IS(rg::nothing))
 
EX void stop_game_and_switch_mode (char switchWhat IS(rg::nothing))
 
EX void clearMemory ()
 
EX void initShape (int sg, int id)
 
EX long double sqr (long double x)
 
EX ld round_nearest (ld x)
 
EX ld round_nearest (ld x, ld multiple_of)
 
EX int gcd (int i, int j)
 
EX int szgmod (int a, int b)
 
EX int gdiv (int i, int j)
 
EX ld frac (ld x)
 
EX ld lerp (ld a0, ld a1, ld x)
 
EX ld ilerp (ld a0, ld a1, ld x)
 
EX string simplify (const string &s)
 
EX bool appears (const string &haystack, const string &needle)
 
EX ld parseld (const string &s)
 
EX string parser_help ()
 
EX bignum hrand (bignum b)
 
EX void operator++ (bignum &b, int)
 
EX void operator-- (bignum &b, int)
 
EX string short_form (bignum b)
 
EX string compress_string (string s)
 
EX string decompress_string (string s)
 
EX int hiitemsMax (eItem it)
 
EX modecode_t modecode ()
 
void displayScore (subscoreboard &s, int x)
 
int read_mode_args ()
 

Variables

ld eyepos
 
hyperpoint shcenter
 
EX hyperpoint front_leg
 
EX hyperpoint rear_leg
 
EX transmatrix front_leg_move
 
EX transmatrix rear_leg_move
 
EX transmatrix front_leg_move_inverse
 
EX transmatrix rear_leg_move_inverse
 
EX ld leg_length
 
renderbufferfloor_textures
 
EX bool offlineMode = false
 
const EX char * leadernames [NUMLEADER]
 
string achievementMessage [3]
 
int achievementTimer
 
EX vector< string > achievementsReceived
 
EX set< string > got_achievements
 
int specific_improved = 0
 
int specific_what = 0
 
int next_stat_tick
 
EX bool hadtotalvictory
 
EX array< int, motypes > kills
 
int * killtable []
 
int lastdouble = -3
 
bool gotit = false
 
bool built = false
 
EX int fontscale = 100
 
EX display_data default_display
 
EX display_datacurrent_display = &default_display
 
EX unsigned backcolor = 0
 
EX unsigned bordcolor = 0
 
EX unsigned forecolor = 0xFFFFFF
 
TTF_Font * font [256]
 
EX SDL_Surface * s
 
EX SDL_Surface * s_screen
 
EX color_t qpixel_pixel_outside
 
EX string fontpath = ISWEB ? "sans-serif" : HYPERPATH "DejaVuSans-Bold.ttf"
 
bool fading = false
 
ld fadeout = 1
 
tuple< int, eModel, display_data *, int > last_projection
 
EX bool new_projection_needed
 
EX ld lband_shift
 
glfont_tglfont [256]
 
int curx = 0
 
int cury = 0
 
int theight = 0
 
texturepixel fontdata [FONTTEXTURESIZE][FONTTEXTURESIZE]
 
vector< glhr::textured_vertextver
 
EX purehookset hooks_resetGL
 
EX vector< msginfomsgs
 
EX vector< msginfogamelog
 
EX char mousekey = 'n'
 
EX char newmousekey
 
EX bool setfsize = true
 
EX bool vsync_off
 
EX bool noGUI = false
 
const int NOCOMPASS = 1000000
 
EX bool generatingEquidistant = false
 
int loopval = 0
 
vector< eLand > euland
 
map< int, eLand > euland3
 
map< int, eLand > euland3_hash
 
EX vector< eLand > currentlands
 
auto ccm_bigstuff
 
EX map< cell *, blizzardcellblizzardcells
 
EX vector< blizzardcell * > bcells
 
int blizzard_N
 
EX vector< cell * > arrowtraps
 
auto ccm_blizzard
 
EX int cellcount = 0
 
EX hrmapcurrentmap
 
EX vector< hrmap * > allmaps
 
EX hookset< hrmap *()> * hooks_newmap
 
EX heptagon deletion_marker
 
char rpm_memoize [3][256][RANDITER+1]
 
cdata orig_cdata
 
map< pair< cell *, cell * >, int > saved_distances
 
EX set< cell * > keep_distances_from
 
set< cell * > dists_computed
 
int perma_distances
 
auto cellhooks = addHook(clearmemory, 500, clearCellMemory)
 
EX int mine_adjacency_rule = 0
 
EX map< cell *, vector< cell * > > adj_memo
 
EX downseek_t downseek
 
EX bool hardcore = false
 
EX int hardcoreAt
 
EX bool canmove = true
 
EX eMonster who_kills_me
 
EX int lastkills
 
EX vector< bool > legalmoves
 
const char * wormdes
 
const char * cocytushelp
 
const char * tentdes
 
const char * gameboardhelp
 
const char * ivydes
 
const char * slimehelp
 
const char * gdemonhelp
 
const char * ldemonhelp
 
const char * trollhelp
 
const EX char * trollhelp2
 
const char * trollhelpX
 
const char * camelothelp
 
const char * templehelp
 
const char * barrierhelp
 
const char * cavehelp
 
const char * vinehelp
 
const char * hvinehelp
 
const char * deadcavehelp
 
const char * foresthelp
 
const char * hivehelp
 
const char * redrockhelp
 
const char * caribbeanhelp
 
const char * cislandhelp
 
const char * redsnakedes
 
const char * minedesc
 
const char * palacedesc
 
const char * gatedesc
 
const char * princessdesc
 
const char * elemdesc
 
const char * wildwestdesc
 
const char * elecdesc
 
const char * overdesc
 
const char * cleardesc
 
const char * winddesc
 
const char * warningdesc
 
const char * hauntdesc
 
const char * bulldashdesc
 
const char * prairiedesc
 
const char * cadesc
 
const char * huntingdesc
 
const char * terradesc
 
const char * terraldesc
 
const char * arrowtrapdesc
 
const char * lavadesc
 
const char * blizzarddesc
 
const char * crystaldesc
 
const char * NODESC = "No description yet."
 
const char * NODESCYET = "No description yet."
 
const char * GENDERSWITCH = NODESC
 
const EX char * rosedesc
 
const EX char * warpdesc
 
const char * warplanddesc
 
const char * roselanddesc
 
const char * dragondesc
 
const char * tortoisedesc
 
const char * krakendesc
 
const char * halloweendesc
 
const char * reptiledesc
 
const char * naturedesc
 
const char * mirroreddesc
 
const char * tamebomberdesc
 
const char * gargdesc
 
const char * lakeDesc = "Hell has these lakes everywhere... They are shaped like evil stars, and filled with burning sulphur."
 
const char * thumpdesc = "A device that attracts sandworms and other enemies. You need to activate it."
 
const char * twdesc = "This structure will disappear after some time."
 
const char * jellydesc
 
const char * ruindesc
 
const char * rock_description
 
EX monstertype minf [motypes]
 
EX genderswitch_t genderswitch [NUM_GS]
 
EX itemtype iinf [ittypes]
 
EX walltype winf [walltypes]
 
color_t floorcolors [landtypes]
 
const EX landtype linf [landtypes]
 
EX vector< landtacinfoland_tac
 
EX vector< eLand > randlands
 
eGeometry geometry
 
eVariation variation
 
EX geometryinfo1 giEuclid2 = { gcEuclid, 2, 2, 3, {1,1, 0,0 } }
 
EX geometryinfo1 giHyperb2 = { gcHyperbolic, 2, 2, 3, {1,1,-1,0 } }
 
EX geometryinfo1 giSphere2 = { gcSphere, 2, 2, 3, {1,1,+1,0 } }
 
EX geometryinfo1 giEuclid3 = { gcEuclid, 3, 3, 4, {1,1, 1,0 } }
 
EX geometryinfo1 giHyperb3 = { gcHyperbolic, 3, 3, 4, {1,1, 1,-1} }
 
EX geometryinfo1 giSphere3 = { gcSphere, 3, 3, 4, {1,1, 1,+1} }
 
EX geometryinfo1 giSolNIH = { gcSolNIH, 3, 3, 4, {1,1, 1,0 } }
 
EX geometryinfo1 giNil = { gcNil, 3, 3, 4, {1,1, 1,0 } }
 
EX geometryinfo1 giProduct = { gcSL2, 3, 3, 4, {1,1, 1,0 } }
 
EX geometryinfo1 giSL2 = { gcSL2, 3, 3, 4, {1,1,-1,-1} }
 
EX vector< geometryinfoginf
 
EX vector< modelinfomdinf
 
const eLand NOWALLSEP = laNone
 
const eLand NOWALLSEP_USED = laWhirlpool
 
const EX char * scorefile = "hyperrogue.log"
 
EX purehookset hooks_config
 
EX hookset< int()> * hooks_args
 
bool gardener = false
 
bool lifebrought = false
 
auto ccm
 
int windcodes18920 [] = {164,182,171,158,148,155,163,174,188,205,193,160,167,160,140,128,146,153,159,161,167,180,190,186,202,229,234,24,120,146,165,177,179,169,146,125,113,93,131,157,147,155,158,161,162,157,157,162,173,187,204,198,176,163,242,249,234,238,1,30,77,120,140,153,165,173,173,204,200,184,165,150,130,119,104,86,70,71,54,208,168,141,133,167,169,158,161,161,166,171,165,142,144,153,159,166,175,186,203,225,221,216,191,168,149,114,70,26,10,241,220,229,244,251,7,19,50,85,110,129,143,148,145,173,180,178,174,166,144,54,248,215,182,170,166,153,134,116,118,122,114,96,77,57,47,69,78,62,18,228,189,164,148,126,110,81,250,217,169,151,156,163,168,156,154,170,183,192,182,149,118,120,138,152,158,156,158,164,169,171,181,202,217,234,252,241,243,235,206,182,169,159,149,125,97,77,53,40,28,24,4,237,218,192,204,220,244,246,248,250,1,4,12,31,56,98,120,127,129,134,148,156,161,139,105,153,209,205,187,177,180,177,174,167,152,117,81,44,4,232,201,160,162,161,168,174,165,153,139,115,94,103,120,129,127,125,118,94,66,50,40,28,10,50,78,89,97,81,76,54,16,230,195,174,162,157,151,139,122,98,81,58,27,249,245,2,7,89,127,132,146,158,162,174,191,230,64,124,150,173,193,209,224,211,203,174,146,119,87,90,93,118,139,159,167,164,157,149,150,155,165,172,169,159,161,172,195,214,219,221,206,26,19,252,253,11,9,253,225,206,187,170,168,166,155,149,141,124,101,83,81,68,55,48,45,38,29,29,43,24,254,232,219,199,171,159,174,187,208,249,17,219,241,250,248,241,244,248,1,1,3,17,30,37,63,128,134,147,141,135,125,124,134,150,157,161,173,186,161,114,79,52,50,236,241,243,236,163,169,168,181,186,184,184,178,171,172,170,149,131,108,91,73,64,41,10,233,216,202,112,119,144,154,152,161,177,186,182,176,166,152,145,133,106,85,67,76,85,112,135,142,129,124,134,132,139,125,89,71,42,32,26,32,45,227,220,243,26,71,91,97,112,127,106,89,83,88,88,65,30,255,229,201,174,171,164,157,154,161,153,146,142,139,137,93,78,75,67,57,36,3,232,233,241,255,26,30,48,73,93,105,116,121,132,147,161,169,157,151,180,201,219,232,6,32,94,129,142,159,177,190,207,220,241,252,237,226,223,212,193,170,144,119,95,72,56,60,62,70,96,124,136,149,170,177,183,178,171,154,149,144,141,144,150,157,168,175,184,178,167,146,139,143,148,180,196,208,228,229,232,231,209,170,117,73,52,48,251,241,251,6,26,41,37,26,242,232,217,212,191,169,155,160,167,174,177,161,147,145,144,150,147,130,100,75,65,83,79,79,75,40,45,49,48,49,46,45,35,18,19,41,83,56,19,255,239,220,221,219,208,184,155,138,133,145,160,167,179,185,226,14,46,119,196,237,243,251,8,1,243,232,231,234,235,249,9,5,248,245,247,7,18,21,21,21,29,33,223,187,158,154,168,167,153,142,128,115,118,114,116,133,167,159,162,162,170,184,194,216,208,209,109,92,65,45,19,13,255,241,247,253,255,14,26,82,139,164,157,144,167,183,193,192,188,192,197,189,179,173,167,169,173,184,191,172,151,138,123,108,98,87,81,75,78,70,51,29,248,222,213,198,230,39,67,83,91,123,146,157,156,140,140,151,176,195,198,187,185,185,182,175,159,145,144,146,150,141,96,68,57,51,50,54,54,63,99,129,153,157,160,140,124,114,89,153,144,133,140,158,162,146,59,58,72,60,18,3,6,6,16,22,45,75,123,170,197,219,228,245,50,102,98,102,98,100,110,149,166,132,108,84,80,82,87,90,102,120,108,92,254,11,248,236,226,205,171,147,159,161,163,163,153,145,141,154,185,165,146,146,144,142,143,150,174,224,57,69,68,66,63,68,69,64,49,42,15,226,206,217,228,232,231,245,27,49,47,43,37,50,71,90,102,100,103,106,117,113,117,126,136,148,165,177,199,246,63,107,124,217,215,225,230,225,221,238,2,15,13,1,171,134,132,135,147,165,179,185,191,202,212,227,244,9,18,24,1,248,240,242,233,221,220,209,192,178,161,143,125,108,96,79,64,53,37,29,34,38,51,53,68,86,116,140,130,136,154,173,189,190,194,193,191,191,189,164,139,145,149,144,141,140,129,128,143,154,145,159,174,173,173,186,203,193,183,177,158,129,126,120,121,116,113,165,195,207,214,207,201,20,239,229,239,251,248,225,198,178,149,133,93,76,72,73,101,137,214,221,227,242,253,1,14,31,51,79,73,78,114,201,238,243,210,212,220,226,209,189,167,147,142,145,156,166,173,173,194,199,171,152,142,137,138,134,134,154,165,166,152,141,118,88,64,35,15,101,91,76,72,78,103,163,251,11,33,45,52,56,42,20,87,58,42,49,57,23,244,2,14,8,221,138,125,95,86,40,255,4,246,224,206,203,213,221,224,220,204,185,165,146,124,108,115,117,127,127,138,148,161,165,163,152,165,201,243,35,54,79,118,160,201,238,20,248,228,253,10,24,25,255,234,231,221,224,221,223,224,223,233,254,16,28,21,7,236,227,232,236,241,254,15,26,22,18,13,10,9,19,19,12,254,254,228,205,183,163,150,161,188,194,194,173,160,147,131,118,105,99,114,119,108,97,93,54,215,185,161,156,163,167,162,158,164,176,197,196,209,229,246,238,238,0,23,54,135,85,38,49,35,13,249,251,243,244,233,224,253,0,254,1,2,10,25,34,59,92,114,146,167,181,171,126,109,136,177,193,199,207,201,196,188,183,193,206,210,204,194,183,165,172,169,158,161,169,159,171,190,209,214,199,174,153,140,143,143,120,114,115,102,83,84,83,75,72,79,90,87,90,81,73,49,254,228,215,209,208,202,180,148,66,58,49,52,66,60,63,66,94,122,144,155,168,166,169,208,49,109,129,126,172,199,215,215,212,193,183,183,184,187,188,195,196,181,166,152,141,131,135,142,143,152,185,246,69,117,77,26,31,37,51,45,43,40,38,28,31,35,73,105,127,150,169,177,177,179,172,153,132,114,112,106,89,47,244,180,142,120,125,138,155,172,179,191,196,247,30,39,34,56,97,88,29,250,235,220,235,245,252,2,7,5,15,37,61,78,99,125,135,165,198,212,216,219,220,221,217,221,150,130,111,112,113,102,97,101,104,90,114,213,202,216,168,126,122,119,84,52,69,73,78,88,91,85,80,100,125,149,147,135,142,165,198,4,41,13,235,241,239,232,217,189,156,128,101,150,154,154,155,160,174,164,156,147,139,126,129,137,146,230,228,212,133,137,141,144,145,143,141,140,142,149,157,171,208,242,16,58,67,64,63,68,62,51,52,77,80,78,79,65,51,46,58,50,245,184,186,177,197,204,220,233,234,237,219,195,201,47,50,54,71,69,64,54,24,29,39,55,72,87,99,106,119,107,97,96,95,93,114,132,146,66,94,114,126,131,135,139,151,175,180,166,197,248,15,25,35,63,86,80,44,3,222,224,238,247,238,227,221,211,202,216,239,9,18,22,24,6,247,217,178,148,131,125,131,130,131,139,156,174,187,185,184,193,201,205,205,212,221,233,249,8,18,37,58,86,4,7,6,1,236,248,9,0,239,217,216,226,233,221,217,208,193,180,170,159,153,135,125,110,103,96,82,74,69,57,52,50,42,25,15,255,5,11,33,40,44,45,45,50,56,71,108,144,168,161,90,117,125,139,157,178,193,205,205,206,209,201,196,191,197,203,212,213,182,151,119,110,130,150,159,146,137,134,142,146,142,126,100,113,146,166,170,149,128,121,187,178,176,177,169,169,188,210,232,211,197,195,189,185,178,152,117,95,108,115,110,109,102,89,96,83,71,243,207,203,210,226,231,233,216,173,116,69,51,2,213,220,234,0,25,14,7,245,232,213,195,190,164,113,136,133,49,67,75,77,78,75,89,124,135,149,174,197,202,212,216,230,242,252,252,245,4,18,24,31,50,81,119,108,97,97,103,124,154,174,204,2,25,75,167,189,210,223,229,240,242,227,209,188,169,135,115,145,134,129,130,143,157,161,180,187,166,162,242,230,228,195,166,150,143,139,131,130,135,131,124,120,110,139,168,180,191,176,164,161,155,138,132,114,77,55,28,1,250,221,188,151,115,93,77,65,64,57,63,92,131,165,199,214,238,254,16,42,56,39,52,72,72,56,22,244,187,130,79,44,20,31,52,64,82,99,196,220,237,249,0,34,43,219,213,195,160,144,134,118,100,101,124,212,227,3,24,10,250,230,205,194,192,185,199,215,226,228,228,230,237,221,205,192,159,161,163,142,115,85,92,96,99,106,118,121,120,114,121,128,132,153,166,168,163,155,143,129,128,141,181,208,233,17,62,74,69,60,80,123,146,179,204,199,233,30,57,78,169,196,237,9,14,15,18,35,45,57,42,216,227,235,223,210,207,218,223,213,211,216,217,219,215,213,217,242,6,22,35,43,43,34,22,248,218,210,203,214,224,238,237,230,241,4,21,31,44,27,22,20,14,14,3,251,253,7,14,21,27,4,246,237,6,39,9,243,222,210,200,193,177,156,122,144,165,187,219,223,224,216,191,175,171,159,149,141,127,117,111,108,80,71,111,124,133,124,106,89,78,84,74,52,14,228,201,169,155,142,147,163,169,170,175,168,154,148,158,157,141,216,214,197,189,200,216,234,251,19,13,251,248,254,18,23,17,4,218,181,177,1,7,14,46,65,36,255,241,234,234,236,232,228,232,229,219,219,213,185,83,21,254,246,255,9,0,4,6,18,36,36,37,43,80,107,110,115,126,177,182,193,199,195,202,27,71,79,100,111,145,211,208,210,206,213,222,214,207,203,196,188,181,171,180,209,222,219,220,217,217,207,201,194,166,122,170,179,172,163,145,144,150,171,184,112,145,170,191,213,238,234,228,225,222,197,173,150,131,126,130,160,167,166,73,100,117,135,133,107,73,64,76,85,88,86,77,64,63,75,86,100,106,97,96,102,103,100,106,93,100,2,230,222,208,209,212,194,202,202,206,206,179,147,121,97,79,71,46,33,31,53,66,66,46,37,39,42,60,73,89,123,160,159,148,163,191,179,170,166,179,209,244,26,79,119,134,123,102,82,252,216,219,229,234,233,245,206,192,184,175,177,179,175,185,191,188,179,192,224,217,197,183,170,163,159,145,141,132,120,116,135,147,145,139,134,131,178,244,28,43,30,202,177,168,244,252,251,0,12,57,63,50,34,36,49,38,26,29,24,18,1,2,2,21,51,84,116,132,144,158,167,180,184,201,198,191,186,187,185,166,148,131,113,98,105,107,114,116,104,73,37,5,223,192,163,133,111,87,101,118,134,155,164,169,189,190,201,210,196,231,21,23,32,36,30,26,15,7,228,152,153,187,3,11,23,201,209,199,186,204,219,235,249,251,248,253,1,252,249,254,2,23,56,66,69,77,87,95,108,115,109,127,162,199,230,223,217,217,215,218,226,219,211,205,204,209,198,187,165,138,112,107,119,128,126,108,98,91,90,98,117,147,68,59,72,47,15,239,227,233,247,10,101,112,120,125,132,139,120,20,4,52,71,63,65,75,84,95,100,98,85,65,56,85,116,138,150,174,177,178,162,159,148,150,154,141,154,2,30,80,111,199,218,236,251,249,248,243,238,230,230,208,179,151,118,77,33,253,176,162,153,147,149,152,148,127,195,195,175,161,155,153,144,136,125,100,103,120,145,142,104,63,5,242,245,1,47,96,125,140,137,136,142,149,150,143,145,145,135,137,137,138,148,154,153,145,151,189,220,235,1,255,238,64,78,71,62,58,56,54,70,79,70,35,28,16,60,106,95,89,86,91,97,78,70,49,34,33,57,76,79,86,79,145,146,158,164,145,151,188,187,191,210,227,241,243,236,236,246,252,164,142,161,165,139,105,71,54,44,56,100,97,84,73,79,105,10,243,5,21,34,44,57,69,77,88,101,102,108,120,135,139,122,104,86,89,95,91,84,75,84,123,143,162,182,223,17,62,94,116,123,130,133,132,127,128,134,138,141,143,235,209,185,146,111,23,15,17,28,35,29,11,11,35,48,65,76,85,64,32,24,36,214,205,211,254,5,21,6,236,226,225,225,218,207,195,183,189,209,232,2,26,26,26,27,38,44,24,255,244,236,228,204,175,152,137,131,117,111,126,136,136,124,116,120,134,146,165,179,188,202,195,186,181,179,184,198,207,211,209,201,200,205,218,222,222,226,254,16,18,12,13,30,51,73,108,142,179,236,5,5,10,26,48,213,208,239,8,33,36,6,239,9,198,196,209,226,239,250,244,228,217,222,227,210,195,185,178,175,172,162,162,169,148,119,123,114,99,97,105,105,97,81,69,70,75,67,55,48,47,43,54,55,33,20,20,10,249,233,233,235,234,13,51,47,34,35,40,42,47,40,38,41,33,44,55,77,104,155,179,191,196,243,41,87,107,116,117,125,139,151,168,186,192,202,209,224,211,214,219,221,218,211,202,198,198,188,182,204,211,217,233,238,245,213,185,160,141,92,80,83,107,130,164,174,178,159,143,134,126,125,133,145,156,153,150,149,161,73,57,75,87,184,184,199,226,146,153,146,122,85,19,214,187,171,170,179,182,186,178,165,145,155,198,209,245,14,254,230,214,179,191,220,186,179,192,197,200,178,153,102,72,60,83,102,114,123,93,101,109,101,77,61,82,92,90,68,53,23,251,228,207,199,197,206,222,239,249,1,5,246,6,177,157,135,98,70,61,70,86,170,180,194,225,224,224,243,34,68,40,23,16,13,2,243,238,227,203,190,194,202,209,246,66,63,98,153,173,213,7,39,70,89,75,73,88,85,73,67,49,131,146,143,146,144,142,160,177,182,187,195,199,205,205,211,221,229,239,1,10,2,235,220,243,4,13,19,21,22,22,39,65,81,124,174,146,130,114,110,99,97,110,114,125,146,163,161,163,191,34,47,45,62,88,123,159,172,191,218,227,233,228,236,252,255,1,249,230,216,202,187,175,188,141,72,14,179,155,138,116,113,111,122,131,142,175,157,131,175,195,201,215,186,152,127,73,20,5,1,2,239,217,189,155,136,134,140,145,145,130,119,120,120,134,139,133,124,118,114,104,82,77,114,152,184,196,205,225,223,150,160,163,169,182,174,134,128,137,141,160,79,67,61,47,23,247,233,236,227,209,200,199,187,170,144,111,98,86,75,60,53,61,53,30,38,49,65,84,118,146,131,218,224,211,219,226,236,250,7,10,11,89,92,31,1,218,137,104,97,72,78,67,242,252,250,221,190,163,152,110,76,51,13,242,1,23,44,80,70,77,91,103,133,189,209,210,221,230,235,236,237,252,55,95,143,186,205,216,220,219,191,164,143,138,142,136,116,94,88,90,115,140,171,197,194,246,28,46,44,34,14,248,241,212,182,188,190,184,191,178,160,178,194,208,221,232,238,233,227,223,230,242,5,248,212,203,215,235,151,127,131,203,182,147,138,142,53,30,70,102,94,83,79,84,104,116,126,124,122,118,110,101,107,114,119,108,111,147,161,170,175,176,174,162,153,143,135,126,116,107,96,106,105,158,200,192,197,217,1,37,66,97,106,116,68,41,37,24,119,137,140,147,157,205,230,212,190,156,64,56,57,73,86,105,119,144,174,222,255,19,27,26,26,12,7,15,26,56,62,66,78,87,126,169,205,229,245,251,231,213,203,194,191,207,226,237,222,202,198,197,207,216,215,215,219,221,210,200,190,197,229,254,9,13,24,38,48,47,49,53,61,58,55,37,4,233,212,193,192,185,185,196,205,213,231,251,249,240,226,213,224,232,247,17,34,27,54,85,56,32,19,21,26,16,7,12,20,25,245,230,233,250,2,9,13,16,19,35,61,21,236,235,222,207,233,41,80,89,48,12,247,230,219,215,207,203,209,213,179,189,194,95,71,116,144,151,162,178,212,247,2,0,255,232,238,217,188,175,177,184,171,154,138,153,152,140,124,112,103,106,123,130,100,44,31,2,105,133,132,136,147,148,133,116,93,80,65,54,80,85,78,72,63,35,19,4,235,215,176,151,144,132,117,126,136,158,173,174,174,165,170,186,186,165,140,135,134,150,163,168,133,105,58,251,221,214,204,182,171,186,203,212,222,236,247,252,15,49,52,46,7,248,248,247,3,25,40,40,40,16,251,228,213,201,183,173,184,227,238,0,7,7,234,129,99,59,35,23,194,217,221,227,233,228,226,225,220,218,215,226,230,227,218,206,208,216,227,226,193,143,106,44,3,242,245,237,233,243,31,24,253,246,253,7,250,2,27,47,53,45,39,49,21,26,116,116,126,118,117,109,87,30,203,202,205,204,211,208,209,210,200,202,234,10,30,53,63,78,82,82,91,112,122,50,22,239,217,223,214,209,219,231,241,226,219,216,212,206,201,199,190,180,185,173,153,154,151,201,250,225,225,230,225,218,221,229,230,215,209,212,208,205,204,231,65,81,87,3,206,183,170,171,165,138,123,127,124,131,171,191,218,13,66,108,136,159,173,183,197,215,236,7,17,241,214,228,239,248,244,219,195,180,163,150,132,110,106,104,109,140,188,195,198,220,243,3,62,102,110,125,152,166,170,207,17,44,39,46,64,74,82,95,95,93,90,86,67,44,49,49,67,79,82,91,110,120,121,107,97,96,101,112,113,118,116,121,129,122,110,114,149,180,221,214,209,202,188,191,202,226,253,179,170,194,204,202,194,199,235,236,14,91,126,130,119,84,84,88,88,91,64,30,16,3,9,34,60,73,84,84,56,30,25,11,13,12,26,49,62,68,61,63,87,97,186,200,184,162,111,136,183,223,226,198,181,172,159,156,160,185,214,226,231,246,6,47,88,117,145,154,134,113,107,98,66,33,8,236,221,221,229,232,243,1,243,251,18,36,122,170,186,181,176,164,165,175,179,177,163,164,191,202,200,191,180,166,157,117,28,3,220,209,196,189,179,170,155,153,176,153,132,137,151,138,129,123,118,103,76,114,155,155,150,151,160,123,117,121,115,23,57,70,84,33,230,209,194,191,190,205,225,245,247,241,220,222,212,176,100,81,75,67,58,46,23,6,38,75,67,45,23,5,19,25,16,13,19,21,197,223,234,237,248,15,29,61,83,101,134,140,148,146,151,165,169,176,192,191,182,194,223,229,213,197,186,183,188,197,199,203,182,163,156,148,133,110,93,80,82,96,100,97,112,128,143,131,119,99,80,53,32,15,251,245,217,195,177,151,133,125,106,75,52,64,93,113,121,127,145,172,180,152,151,185,213,205,194,214,226,236,209,181,154,58,44,34,28,23,38,44,39,23,16,19,18,6,249,229,213,197,178,181,186,208,226,245,0,14,55,119,165,181,185,180,178,141,175,199,193,204,245,250,2,4,249,239,237,0,6,254,242,239,240,245,246,249,246,251,243,71,80,67,62,68,73,80,86,90,89,97,118,111,98,87,94,97,126,159,201,246,9,252,230,211,213,227,216,208,209,221,243,238,218,203,198,192,194,197,204,208,210,210,206,195,187,218,61,95,89,91,120,138,145,140,146,122,98,95,98,91,80,76,76,89,112,139,167,197,239,25,37,59,63,61,48,38,15,253,237,233,236,236,248,24,70,107,113,103,109,117,126,132,135,142,156,165,191,219,237,221,211,125,90,79,45,42,57,72,83,83,83,101,113,113,113,98,91,72,46,32,20,55,81,107,138,150,149,167,180,187,205,208,195,163,130,143,156,145,123,105,109,127,89,50,33,255,167,134,146,166,198,213,227,246,1,10,4,0,252,252,251,248,236,228,235,7,230,203,183,164,151,140,113,60,25,4,251,236,212,181,165,156,152,147,134,139,147,157,153,139,127,90,30,228,208,187,169,156,154,155,152,164,155,139,135,131,129,118,66,62,83,96,124,158,184,225,55,79,80,56,221,241,247,242,245,0,13,31,64,96,111,133,153,152,140,131,126,138,147,156,158,161,144,135,142,155,156,139,115,132,138,135,130,130,144,153,154,165,187,112,124,127,134,170,213,234,239,245,3,27,23,243,193,146,106,99,82,70,68,60,48,56,56,49,22,66,89,95,98,120,24,241,223,142,131,124,114,104,88,84,93,100,106,131,95,65,76,86,66,39,21,5,0,55,77,80,82,101,106,108,96,106,121,132,130,128,135,163,153,116,107,67,223,190,169,171,177,197,211,222,234,252,3,251,236,233,232,236,246,12,43,74,102,109,122,139,161,186,169,147,128,99,69,49,43,37,20,224,136,122,116,125,111,88,52,69,111,132,161,188,212,210,229,252,13,32,33,35,40,45,59,77,75,75,85,106,116,106,99,99,110,123,131,145,158,158,141,125,107,86,68,71,81,96,101,94,80,70,62,66,66,34,203,160,166,184,182,184,194,210,234,255,31,57,78,102,136,127,127,133,133,137,144,137,126,130,143,142,117,121,113,72,44,0,221,202,169,133,110,82,54,23,13,20,30,27,19,54,56,63,237,240,240,7,22,32,39,52,62,67,88,107,93,72,41,15,15,41,64,123,185,202,180,114,34,26,19,21,56,49,14,234,209,214,216,225,233,228,223,214,208,199,185,176,168,171,165,180,200,229,0,19,36,46,41,35,24,25,36,53,61,69,50,35,9,243,237,233,239,242,243,225,201,187,159,144,130,126,132,123,104,94,89,114,125,140,152,147,126,136,97,92,105,126,140,134,136,158,178,185,187,199,212,221,213,199,182,176,176,181,175,171,180,204,220,222,220,215,217,207,192,189,190,199,211,225,235,225,213,211,210,228,21,8,6,0,2,23,36,51,76,107,140,151,164,164,169,197,251,10,20,9,252,251,30,60,80,91,119,152,181,227,251,11,34,62,48,62,95,196,219,251,42,108,163,178,193,203,218,230,241,1,9,6,1,233,217,206,207,213,251,251,229,208,189,184,182,182,173,171,177,190,159,151,162,178,192,178,159,120,77,109,136,122,106,86,81,85,107,121,117,115,104,81,62,53,62,60,80,85,78,66,49,45,44,43,37,28,35,75,69,71,65,247,18,32,23,10,254,237,226,218,219,215,214,203,193,236,27,69,92,73,51,18,12,42,39,32,39,52,56,49,37,27,28,37,31,13,16,30,38,56,66,59,21,204,203,199,198,215,246,27,66,103,116,117,114,112,110,113,115,126,139,144,157,179,196,197,194,202,212,207,225,245,253,222,198,218,233,234,236,226,222,219,220,210,197,191,202,210,191,167,143,187,227,217,219,218,225,246,2,10,20,9,241,210,188,159,139,154,170,253,47,52,59,56,84,102,111,119,210,200,195,196,190,176,154,134,131,124,115,115,116,128,128,132,145,161,175,168,158,147,153,164,184,200,234,17,34,43,50,36,7,227,195,192,209,242,24,65,120,145,160,164,148,128,98,72,35,240,203,190,181,174,156,152,162,196,186,186,197,195,184,184,204,111,100,55,231,213,193,173,3,35,51,37,15,230,241,10,174,149,151,100,151,174,193,206,209,218,225,204,182,182,160,57,56,38,37,24,50,76,92,100,104,138,168,11,57,83,104,122,117,95,56,35,24,57,81,97,106,106,82,58,41,29,17,6,250,242,233,211,191,200,197,187,193,211,224,238,251,251,9,21,38,31,248,1,18,48,105,150,160,147,122,98,79,62,52,47,66,76,82,98,126,158,173,172,153,56,248,224,217,209,214,240,84,88,117,101,18,29,29,13,11,24,19,254,236,237,246,246,245,214,180,178,191,196,199,207,217,237,4,26,39,35,34,55,65,239,204,196,194,226,9,17,9,51,100,113,99,71,44,80,122,104,96,71,67,67,47,5,209,166,152,153,153,154,151,149,141,128,127,143,176,191,178,176,172,182,210,187,192,198,198,197,202,208,216,221,221,231,234,226,209,192,195,221,249,14,15,16,21,22,20,18,19,20,9,11,25,67,74,77,63,227,215,201,183,159,132,121,118,125,123,85,81,86,105,118,103,105,118,146,165,175,166,155,146,131,131,97,67,59,72,71,64,65,73,87,107,124,141,160,167,167,187,235,240,233,245,251,223,221,230,249,10,9,10,4,8,13,16,249,231,216,210,203,197,180,164,155,247,240,45,34,23,249,214,182,171,161,144,117,99,96,90,83,107,125,128,130,125,124,225,243,76,84,84,179,201,206,206,223,247,243,216,181,138,114,97,80,41,2,11,22,24,28,26,3,241,232,218,203,172,143,125,105,115,122,141,152,153,155,155,136,111,105,114,104,96,118,135,145,148,138,129,118,113,118,117,108,104,94,63,41,38,79,125,155,182,200,204,216,214,221,240,13,70,124,143,152,156,159,169,173,217,222,226,125,104,114,115,130,145,143,157,210,2,53,73,65,63,60,53,29,246,213,215,215,226,230,228,221,200,188,188,198,203,208,189,170,181,158,120,95,100,101,81,68,65,47,39,37,54,70,67,41,244,3,28,47,53,51,50,70,110,146,173,156,56,44,9,240,245,232,202,185,240,211,215,233,246,3,5,18,132,129,193,220,213,210,183,139,128,137,190,33,73,81,91,107,155,205,242,3,14,8,241,217,193,158,161,174,189,138,84,74,61,32,246,227,202,220,235,3,6,224,134,100,77,71,74,86,97,101,108,110,102,15,224,212,204,196,206,223,234,231,226,222,226,224,230,221,216,137,109,136,147,168,186,194,205,216,223,228,246,245,216,189,171,149,129,132,133,141,152,152,153,135,110,81,70,70,69,81,104,130,141,157,196,194,183,165,148,57,41,64,69,49,55,59,51,33,242,237,249,11,230,183,160,144,214,204,175,171,164,242,186,153,132,136,155,174,199,206,211,222,231,235,240,254,251,229,233,217,214,224,234,244,4,31,37,49,209,186,183,218,234,244,24,75,118,110,92,45,4,224,198,160,127,119,125,154,178,215,245,238,3,107,129,121,103,89,85,58,54,57,90,117,111,116,128,141,131,127,125,122,120,113,97,87,95,98,94,110,134,111,76,78,53,147,164,162,168,174,174,175,186,189,188,173,154,155,150,140,133,148,116,114,128,116,94,76,76,81,87,85,81,74,247,229,190,175,170,186,202,226,12,31,45,63,90,122,135,151,174,171,246,194,155,145,138,140,148,149,143,125,35,251,4,249,211,201,200,170,135,99,69,59,58,68,74,77,91,111,124,111,110,108,133,153,198,235,0,21,26,30,39,37,40,45,27,255,253,250,255,2,14,34,85,92,76,67,75,88,93,100,110,131,153,182,209,226,237,254,19,20,246,219,203,205,206,192,178,180,173,185,199,222,248,2,242,214,198,188,181,181,189,195,209,225,221,210,209,211,216,226,237,221,209,195,180,159,164,174,206,233,254,15,16,8,8,12,32,44,55,58,56,51,46,49,55,64,73,75,78,85,68,51,20,253,239,222,212,195,172,171,174,165,167,173,188,190,190,194,203,220,239,3,18,13,4,242,229,209,194,200,211,220,228,232,246,33,45,53,42,20,245,149,120,85,56,34,15,3,14,24,23,9,10,8,11,24,45,81,170,194,200,206,239,6,2,3,3,12,17,14,14,13,4,26,55,82,100,108,200,219,224,221,208,197,179,175,133,64,80,111,122,129,117,21,13,15,240,233,224,221,219,220,214,206,197,198,210,244,56,140,150,194,237,239,249,36,39,32,59,155,155,146,146,149,160,161,188,219,243,17,22,38,31,35,49,225,237,255,3,248,221,203,188,178,163,142,119,113,192,172,157,146,132,119,114,106,94,76,84,138,148,161,148,122,117,201,248,250,224,189,167,146,155,150,141,133,140,158,164,173,160,144,119,103,84,70,59,50,46,22,31,120,109,88,72,80,87,99,56,37,23,14,26,12,248,228,229,222,136,140,138,141,133,126,111,92,100,111,117,135,155,175,185,182,183,185,171,152,153,162,182,201,204,212,195,146,122,119,116,113,131,143,153,164,99,110,87,74,45,238,209,201,225,219,196,163,153,147,167,179,195,206,209,215,221,225,248,254,252,238,254,30,57,82,85,97,101,4,248,236,242,0,247,235,241,1,35,50,53,56,62,82,39,0,7,249,214,210,210,210,200,185,176,165,149,110,13,235,212,217,34,8,1,10,28,2,228,186,143,118,79,38,17,26,44,88,140,185,205,205,216,224,233,242,233,220,221,218,218,218,217,209,203,199,211,221,231,235,228,222,216,205,189,197,196,206,221,238,246,251,224,169,132,133,128,104,255,250,232,222,239,249,244,222,218,198,148,79,85,124,199,234,238,234,240,255,21,25,206,227,239,14,42,58,66,67,56,48,27,31,64,134,136,144,135,126,120,122,122,103,77,46,2,230,201,196,208,221,231,219,215,221,223,215,204,207,221,238,171,184,194,234,2,12,11,9,32,42,56,72,87,84,71,53,67,79,92,104,117,96,49,55,59,31,234,194,209,255,236,216,199,201,220,239,251,6,1,238,221,218,222,221,220,212,203,202,200,201,206,200,191,177,159,227,189,156,141,136,138,133,122,119,42,38,45,145,206,232,242,250,220,214,213,216,227,245,247,247,223,211,209,211,222,222,214,206,202,207,220,220,1,48,44,115,88,57,29,239,205,183,169,160,166,178,186,189,100,106,110,112,115,106,98,76,170,190,194,207,217,241,28,53,64,83,108,134,161,171,170,175,184,182,187,225,230,239,1,28,34,56,74,169,200,220,227,242,5,19,11,8,243,185,170,157,156,154,137,117,94,79,83,83,91,91,100,98,194,222,217,220,214,227,245,241,242,235,228,219,129,108,105,109,115,136,168,184,195,193,211,233,246,1,11,16,8,22,33,54,66,68,70,76,92,108,105,101,98,91,88,94,100,89,39,14,32,39,36,36,55,82,86,85,78,80,100,118,129,141,136,136,123,109,93,91,94,96,104,113,126,123,121,145,144,147,128,100,32,192,154,152,200,242,223,200,199,200,198,186,171,169,171,153,233,230,250,40,99,144,141,155,186,205,213,209,199,184,167,117,20,9,1,13,23,51,79,96,116,133,148,193,37,58,73,86,93,101,97,99,118,102,45,11,253,240,226,237,247,16,27,41,71,91,70,90,124,104,68,42,17,9,17,245,246,237,250,7,50,51,53,66,79,88,54,20,49,71,82,87,81,36,244,218,67,65,89,99,161,223,251,10,2,221,190,177,178,178,165,145,137,135,145,162,186,216,245,233,225,221,226,233,235,252,24,61,98,125,147,170,174,182,158,142,117,128,139,48,35,21,22,21,250,228,220,215,215,228,244,241,205,233,16,56,237,245,249,12,35,40,53,77,106,134,162,186,202,172,164,186,238,78,133,163,183,184,181,183,176,157,130,106,200,190,205,225,219,207,187,181,175,165,152,151,136,105,82,60,69,226,202,208,217,205,195,194,185,176,171,159,144,127,72,228,206,171,137,108,110,146,179,168,147,131,127,122,120,127,126,109,79,36,11,190,177,164,160,153,148,151,162,180,205,37,83,104,119,128,40,62,80,93,115,122,124,202,210,214,213,199,188,192,200,196,195,198,204,210,244,255,248,242,245,228,181,194,198,187,177,153,143,128,102,87,80,73,70,65,58,57,42,15,254,222,205,115,93,90,85,58,34,16,255,233,242,25,36,28,8,0,2,6,25,48,97,146,183,207,222,231,224,226,222,245,31,26,13,19,97,82,72,117,159,153,152,157,161,153,146,143,157,178,178,172,169,182,206,215,209,168,173,184,213,245,254,14,245,218,195,180,178,181,180,185,191,206,211,211,218,224,202,172,149,151,157,160,149,135,122,95,82,72,72,61,69,90,99,103,94,78,94,113,131,154,170,161,144,128,115,113,105,92,60,34,22,31,34,8,255,211,195,197,191,181,164,136,117,138,131,108,81,51,35,15,38,113,114,117,116,124,135,146,193,210,226,63,108,117,175,192,204,222,190,164,251,245,250,10,7,229,199,177,151,104,61,45,48,59,34,29,10,55,62,55,50,33,14,3,253,13,25,25,19,4,243,228,211,209,207,210,204,193,189,190,187,198,212,221,224,232,250,246,247,250,21,55,97,137,154,166,168,169,172,166,167,183,182,100,90,79,240,255,248,253,9,18,12,2,253,233,217,208,236,16,22,20,7,250,233,224,227,232,246,243,235,239,251,239,229,248,246,232,204,163,115,103,82,51,59,68,71,75,84,88,93,94,88,89,76,57,137,141,109,87,81,76,74,76,93,120,140,166,173,7,30,25,42,30,21,251,226,195,186,222,2,243,222,197,197,214,240,9,10,9,229,221,200,184,188,188,183,181,184,190,201,203,203,207,219,216,210,208,201,204,215,245,93,87,81,68,70,66,97,132,154,165,155,145,152,167,170,145,108,75,78,89,104,112,96,84,78,59,57,54,71,81,93,113,134,191,209,230,255,12,18,20,41,67,72,65,75,69,55,49,47,35,21,254,238,230,232,235,243,237,220,229,235,2,34,68,108,124,124,129,89,75,94,107,114,125,135,138,134,128,140,147,144,166,179,187,182,187,226,220,203,190,161,132,106,104,116,63,5,16,14,33,54,78,84,91,91,81,63,75,116,126,132,126,129,135,108,96,100,104,84,59,37,11,250,235,254,29,59,85,96,126,162,166,164,145,133,158,188,193,170,150,241,240,240,218,131,108,102,115,159,178,158,130,99,87,86,83,69,83,173,153,67,70,77,57,244,208,178,162,151,148,156,162,182,201,208,215,212,216,250,255,250,16,27,18,10,6,1,253,249,1,6,7,0,245,206,163,69,45,3,232,215,205,180,168,150,147,156,152,155,194,14,14,250,249,245,245,237,236,233,229,214,195,177,162,155,149,146,154,157,139,114,120,134,142,155,167,168,164,145,134,137,134,81,43,6,231,217,221,202,183,174,160,149,160,165,148,135,210,177,150,131,127,129,128,129,131,131,136,142,222,11,19,50,68,86,93,92,183,192,209,219,236,0,24,69,104,86,89,133,173,202,225,251,6,242,234,237,245,254,24,37,54,87,115,105,100,120,146,178,170,161,145,135,126,119,108,127,165,165,170,181,175,148,129,128,123,149,179,168,164,162,170,88,140,143,146,139,120,119,122,119,141,156,166,152,152,165,192,230,16,62,97,120,114,119,211,231,236,249,248,249,241,241,254,19,46,72,53,222,208,170,154,136,130,120,113,98,78,61,61,71,75,76,31,19,90,67,53,57,68,29,226,222,146,115,110,94,100,121,149,174,201,218,193,177,154,135,126,132,133,124,117,101,83,70,69,92,107,106,99,120,149,170,181,19,51,72,88,102,108,89,64,31,6,250,234,231,150,102,95,88,61,45,132,130,126,115,132,111,89,90,103,117,123,126,134,138,104,182,186,195,104,91,95,89,86,72,20,228,202,171,149,146,153,159,175,191,221,227,228,240,6,18,27,12,3,239,221,226,231,228,226,231,234,241,8,44,68,83,99,105,95,102,121,159,196,175,163,148,142,125,110,82,57,35,33,39,43,44,26,245,203,170,142,128,113,118,132,150,142,128,131,40,19,26,247,153,155,196,187,194,191,191,184,201,209,229,250,255,38,55,49,5,22,39,44,36,37,50,78,100,83,72,70,68,74,71,105,139,105,100,91,88,86,113,131,138,134,124,157,167,182,179,176,157,145,141,136,74,62,48,51,53,75,100,110,116,108,100,86,71,64,55,49,59,63,73,66,232,185,144,154,195,205,194,188,185,175,179,188,206,218,227,238,3,14,36,64,73,78,88,125,174,171,98,119,132,139,139,127,134,150,164,153,122,117,124,143,169,222,63,96,111,124,144,73,74,79,84,48,21,245,229,218,189,158,133,112,100,87,74,53,33,15,9,4,9,19,35,50,65,225,185,108,75,62,73,95,144,189,213,213,213,243,26,24,30,30,39,52,59,53,41,81,109,130,124,119,111,76,44,17,245,31,60,55,52,78,118,166,201,218,222,127,101,82,66,44,33,31,31,22,248,156,100,87,56,17,218,195,181,194,203,204,213,225,240,248,239,233,209,204,215,207,192,180,167,159,156,167,166,156,145,149,166,179,207,230,250,15,20,30,41,54,62,59,53,47,28,12,17,19,29,46,62,78,86,92,81,69,60,48,18,250,237,231,227,236,244,250,254,254,2,228,213,204,197,183,138,127,122,113,115,113,131,93,76,67,48,74,117,113,116,138,160,172,171,191,107,99,132,252,45,67,105,122,136,156,159,135,113,117,151,174,191,192,191,183,181,194,224,235,238,223,207,186,172,173,166,167,174,189,194,169,156,154,159,187,215,227,244,240,236,223,216,218,224,229,220,202,179,174,175,176,186,196,206,212,214,215,255,5,238,220,202,195,200,202,202,204,255,254,2,2,249,238,229,19,37,28,33,49,63,80,105,139,163,174,178,176,167,170,158,157,160,189,33,41,30,32,37,27,4,235,226,45,75,103,92,89,103,105,106,103,132,151,217,242,248,2,3,26,61,90,103,62,104,163,195,202,204,223,244,12,36,90,116,136,159,173,181,188,193,205,213,237,0,20,19,18,13,19,20,20,249,223,213,206,198,193,194,175,138,51,32,6,193,175,179,178,180,183,191,183,164,176,188,208,236,77,122,138,157,184,196,205,212,204,194,183,130,88,56,30,17,181,150,132,121,111,91,65,75,71,51,132,135,128,128,134,123,113,97,75,52,35,35,57,64,37,14,93,97,88,89,87,76,53,35,40,41,41,42,44,44,36,24,0,170,115,84,73,72,95,148,191,233,40,47,57,41,19,14,4,1,249,211,213,212,209,208,209,206,195,179,173,149,166,247,3,48,83,116,130,113,87,66,229,166,75,52,42,25,6,246,83,68,62,68,60,53,50,28,13,6,23,36,46,40,5,252,250,246,6,20,29,40,59,77,69,52,27,214,197,208,207,198,187,194,212,222,250,24,49,67,90,127,133,138,128,121,111,109,109,108,106,107,106,108,111,127,144,145,137,137,149,172,196,210,209,207,190,198,204,211,242,208,178,215,251,3,1,148,174,199,222,243,0,248,249,250,237,223,221,231,219,221,232,224,203,190,190,208,222,231,213,194,166,133,96,91,16,2,229,220,220,226,234,255,12,19,23,41,43,26,21,12,242,205,196,198,178,144,120,103,200,221,252,22,38,44,44,38,26,39,66,91,109,111,100,76,40,1,226,221,211,212,207,193,201,198,178,153,132,117,127,134,123,113,108,107,104,100,114,129,135,122,117,126,135,152,165,191,177,164,146,130,147,156,161,177,199,205,205,211,232,244,13,40,35,25,14,9,3,223,203,182,180,203,234,9,27,51,45,34,118,143,168,183,179,170,157,148,121,101,83,77,53,254,232,210,179,183,182,181,168,138,131,123,76,237,214,197,184,178,184,211,217,202,183,178,170,207,11,32,56,76,58,29,12,244,222,207,198,168,126,81,44,67,74,85,62,57,59,96,182,199,232,21,72,104,134,136,133,138,128,138,153,176,202,210,214,217,223,232,240,0,235,214,193,185,200,215,249,24,27,36,28,22,15,10,5,255,7,52,84,94,98,97,93,180,183,206,10,43,49,61,84,104,122,143,137,137,120,98,32,1,246,235,9,35,107,115,121,121,128,107,81,63,56,39,17,20,19,16,7,254,250,248,245,222,186,150,184,220,209,198,186,177,172,172,206,215,224,236,255,12,3,250,252,13,80,123,207,227,248,8,23,25,135,153,166,176,164,156,138,116,97,77,66,60,57,47,27,18,57,82,85,69,75,87,97,109,135,155,169,180,178,170,153,28,230,213,215,216,210,192,194,127,112,115,131,154,162,202,233,13,52,48,23,2,254,253,18,42,41,40,14,242,240,249,252,2,8,5,3,170,148,157,166,185,197,198,195,194,200,207,218,232,246,250,14,19,40,11,253,74,67,26,244,229,227,210,180,166,183,236,26,34,29,8,236,216,130,123,125,139,128,120,97,74,35,247,242,168,163,73,33,74,82,67,51,26,249,220,195,188,170,140,137,169,159,162,166,156,145,153,158,147,134,114,110,118,123,131,216,188,168,167,169,163,155,170,19,56,148,179,193,196,196,194,192,190,195,198,202,205,211,217,221,218,204,220,240,245,224,201,196,184,173,172,170,193,227,251,14,34,25,18,14,16,27,27,24,23,18,15,14,18,24,22,11,235,197,111,87,71,70,84,89,76,25,247,230,211,206,216,203,183,136,124,121,118,116,120,133,149,171,11,50,61,59,71,101,121,60,88,91,96,104,135,162,172,186,195,177,164,159,148,139,125,113,105,96,81,77,72,66,60,68,66,62,64,72,78,89,105,118,125,132,145,162,173,173,154,141,154,156,77,19,236,2,18,34,238,192,200,207,222,16,23,19,4,1,4,10,20,40,49,11,245,237,224,209,209,212,211,212,210,193,180,162,125,109,80,42,18,8,255,242,219,185,167,174,176,177,166,154,130,101,89,83,92,87,77,58,118,144,134,124,135,143,119,103,64,37,64,88,64,38,6,223,216,211,215,213,254,17,15,5,248,224,196,155,121,106,89,92,94,94,83,245,227,18,34,43,46,52,47,49,25,8,247,233,235,239,235,230,220,187,131,128,86,77,94,98,103,124,149,159,164,160,158,154,163,174,156,121,86,121,131,101,70,70,94,122,143,148,137,133,127,116,99,104,116,132,128,95,107,111,86,51,25,255,2,255,32,54,111,138,142,189,210,212,203,208,221,235,5,36,63,104,136,139,143,152,154,152,150,148,169,182,165,136,56,18,2,255,1,38,73,80,95,105,175,147,133,126,183,247,252,6,20,81,53,52,75,64,56,67,57,39,252,202,182,189,196,202,215,216,224,234,230,177,168,174,178,190,199,208,221,233,217,184,144,85,238,203,179,121,89,69,78,110,119,122,100,71,65,74,29,17,20,22,32,42,60,86,91,89,118,197,205,222,229,1,30,57,63,53,54,32,12,34,55,88,118,146,182,205,202,29,56,47,22,253,232,217,42,13,238,196,151,84,20,223,177,183,195,220,234,220,26,4,254,11,30,145,160,157,167,171,181,188,191,208,217,218,222,134,122,130,123,125,178,208,233,46,99,94,87,85,83,113,137,151,173,198,9,21,33,26,24,7,229,221,225,8,106,139,155,165,180,197,233,240,54,63,73,78,72,69,56,19,214,206,195,222,254,11,6,242,217,191,167,132,95,82,71,67,63,68,82,95,107,98,100,109,112,111,106,95,69,29,246,224,216,210,204,191,179,183,239,233,219,211,214,219,216,210,223,225,220,179,183,106,109,121,170,174,168,169,179,195,192,188,195,203,216,230,229,216,249,220,203,189,181,157,130,113,114,122,129,127,132,148,162,159,159,155,140,124,81,70,61,45,50,53,59,64,69,91,118,144,148,141,177,168,165,162,138,87,36,40,66,98,98,117,41,38,80,87,122,195,215,226,236,243,5,41,67,153,172,173,150,126,88,48,171,155,157,156,130,72,38,32,110,137,125,106,111,147,158,185,217,216,210,202,204,225,239,237,238,230,234,246,11,25,15,187,202,207,213,223,230,236,240,253,18,40,54,62,81,150,174,11,250,241,225,250,35,73,107,131,123,107,91,77,61,34,238,221,193,168,135,105,93,87,65,153,162,178,184,195,219,229,183,157,151,137,139,118,97,83,79,83,119,221,19,30,38,46,134,147,123,111,127,144,159,157,142,129,127,128,127,124,120,75,71,81,102,101,88,66,77,110,132,162,192,37,56,67,52,22,253,222,186,173,166,166,169,172,180,179,176,171,166,179,199,208,201,199,149,159,156,136,123,113,128,181,193,21,74,126,151,143,124,88,61,41,54,64,83,57,64,78,80,77,78,68,38,252,237,145,153,149,155,158,175,204,205,199,212,61,52,38,32,50,60,69,85,126,143,140,153,177,200,205,202,220,236,241,192,178,160,145,137,134,135,143,158,159,148,150,148,126,86,43,11,254,8,30,28,42,127,180,212,231,155,130,101,72,64,68,54,49,51,65,80,77,66,70,89,108,126,137,146,135,95,90,91,73,98,121,126,143,178,226,247,4,32,27,32,28,38,56,45,36,46,59,58,60,17,232,234,240,239,245,246,240,236,250,5,22,23,9,62,53,69,82,91,97,102,104,100,103,113,118,130,145,164,178,196,216,233,232,25,51,52,48,16,247,224,200,185,199,171,164,170,172,164,156,165,176,194,208,242,23,15,17,21,14,219,202,190,190,194,161,156,163,182,192,241,221,203,199,201,203,210,210,213,228,249,9,238,219,214,212,201,187,177,158,138,150,177,188,213,238,0,25,36,25,251,250,20,42,53,60,69,65,61,60,49,38,41,46,54,60,68,77,83,77,84,92,102,106,99,82,74,4,247,237,226,216,216,219,208,195,174,150,152,151,162,167,156,143,177,187,197,193,177,179,180,187,196,210,219,227,243,15,23,35,38,33,235,238,236,213,180,171,189,193,199,230,222,222,211,121,71,61,64,63,63,244,207,180,152,135,113,95,72,50,41,25,10,248,241,252,21,46,26,16,22,9,1,251,9,13,15,43,76,115,147,177,178,169,168,172,195,200,25,30,8,3,4,6,255,250,11,7,22,17,253,231,250,22,51,105,119,122,144,200,218,217,218,220,221,218,206,186,178,171,166,161,138,106,82,144,155,146,151,152,177,206,243,12,30,61,166,217,231,229,218,216,216,219,225,229,220,217,213,207,183,187,196,228,37,67,94,111,131,136,120,33,27,13,1,228,195,243,29,43,24,253,2,235,203,175,162,149,140,137,134,141,154,138,163,198,227,244,10,31,41,39,47,65,60,52,55,59,91,140,185,222,251,17,16,14,18,26,64,222,213,202,188,180,176,158,138,124,105,93,69,26,231,199,180,170,162,150,138,127,117,108,110,111,110,94,71,45,32,239,164,172,184,183,163,131,107,103,143,182,215,236,245,236,227,181,150,153,150,151,161,174,168,167,155,140,119,123,145,195,186,176,166,135,107,108,106,95,75,68,59,49,40,41,47,41,22,243,232,192,161,150,131,81,62,57,69,84,95,110,131,147,231,17,23,60,47,27,251,225,216,220,242,6,127,143,142,138,129,122,116,105,88,62,76,84,92,95,106,119,131,152,172,184,186,195,199,185,164,149,130,131,136,153,175,196,214,211,214,229,233,63,107,111,112,106,102,96,91,112,145,141,147,155,151,114,140,132,90,83,89,83,80,156,192,198,202,186,209,199,121,130,126,114,140,156,163,173,192,204,209,208,203,209,214,215,227,21,15,11,9,241,205,221,240,17,42,54,141,133,146,177,223,249,234,217,224,237,4,37,7,232,218,222,224,75,59,52,60,71,65,89,125,138,217,228,253,11,26,205,203,218,228,195,176,178,182,164,146,136,128,114,74,37,251,94,33,8,254,248,245,28,68,53,27,255,230,206,174,153,33,5,249,2,18,37,55,67,93,118,159,181,196,203,190,196,222,225,216,226,252,223,211,207,214,209,211,213,220,184,181,198,215,217,225,238,242,246,234,225,222,220,218,212,189,160,176,188,193,185,187,205,221,234,246,252,6,10,26,8,250,215,108,84,160,186,211,225,227,218,205,191,220,240,0,196,216,218,202,182,157,115,95,88,118,131,144,162,187,206,229,220,225,228,240,0,32,63,114,165,200,203,205,221,253,32,57,60,62,69,83,83,80,63,55,60,61,236,0,4,230,164,137,144,153,164,151,131,134,124,115,120,122,132,144,126,99,72,52,27,254,226,222,207,191,178,183,204,249,254,237,220,215,218,225,235,240,233,213,198,185,201,222,241,23,85,146,172,180,169,140,47,16,15,12,16,19,23,37,62,68,69,86,107,98,94,78,49,12,37,59,73,86,82,83,95,122,144,185,8,28,54,71,78,150,169,183,181,104,54,12,241,224,182,174,182,204,220,236,252,5,17,22,207,211,214,224,229,228,228,228,200,203,195,195,204,213,214,210,204,192,180,160,120,65,20,230,194,157,123,139,138,125,123,127,127,114,101,43,82,118,152,186,221,242,253,5,19,38,142,192,209,218,211,204,210,219,19,1,230,207,203,206,205,203,219,217,204,196,194,202,211,226,238,50,16,208,150,119,70,64,59,60,14,232,219,201,180,163,155,153,162,182,199,216,244,20,61,84,89,100,112,106,96,106,115,104,245,208,200,200,205,211,211,210,215,223,7,44,56,60,57,65,85,129,157,182,185,181,163,160,172,192,7,246,234,231,230,248,19,43,48,45,94,125,154,177,201,217,226,226,222,225,237,21,30,40,35,24,21,18,7,183,166,154,151,161,166,171,146,121,110,113,86,57,44,59,69,74,77,82,81,87,87,76,57,21,239,235,220,223,237,252,17,2,243,238,224,223,209,172,129,109,99,103,101,99,100,106,113,140,167,188,211,210,209,206,248,250,252,255,250,0,3,244,242,251,8,16,35,49,64,78,68,63,59,67,68,77,94,112,107,102,94,84,78,86,95,106,113,113,127,207,238,236,9,31,35,33,29,27,26,25,73,117,98,85,87,103,80,53,64,137,149,158,153,147,146,142,136,132,122,77,76,83,96,95,89,91,97,103,111,123,143,143,123,119,152,146,156,165,167,154,137,139,42,8,246,242,152,138,138,127,114,32,19,246,216,187,176,184,189,204,202,189,179,172,151,106,56,7,236,234,240,14,50,83,119,134,138,121,116,131,188,205,216,217,224,220,216,206,197,185,164,144,23,9,18,30,22,11,27,53,73,81,80,82,99,115,137,150,165,182,203,243,37,58,58,71,92,103,94,84,125,133,70,94,127,145,146,251,232,223,210,202,206,219,225,245,11,56,102,115,160,251,11,179,173,151,118,78,62,52,30,3,245,245,10,229,226,212,217,230,226,194,96,69,48,39,54,59,60,94,124,217,221,245,80,73,86,96,96,76,41,19,238,47,48,67,72,251,244,247,8,30,58,196,170,170,176,185,192,180,173,161,136,113,112,113,125,138,150,148,160,7,22,216,210,215,217,219,213,217,58,81,106,126,147,155,172,185,195,200,202,204,181,155,141,145,166,177,218,10,26,16,6,15,33,46,203,215,78,148,164,209,235,39,71,108,156,206,240,50,41,43,52,56,58,84,106,104,113,131,160,188,206,229,165,212,247,29,65,185,196,194,192,185,181,192,192,184,174,155,120,27,13,102,163,199,246,231,223,198,176,166,154,137,138,159,87,89,87,93,189,189,193,190,212,251,219,196,190,195,176,166,177,175,162,149,145,10,240,158,91,87,70,188,185,159,137,119,117,108,122,136,138,136,127,103,13,246,219,221,206,180,169,166,165,163,157,150,143,142,153,167,174,182,200,227,251,24,51,67,83,101,126,137,51,64,81,88,102,137,158,144,138,126,136,165,196,213,206,217,225,221,205,183,196,208,197,199,200,193,189,206,35,21,11,245,248,8,55,135,141,167,179,189,186,159,139,134,145,119,95,82,74,73,74,75,69,67,65,59,64,252,6,229,204,181,155,131,105,82,93,110,110,26,20,250,234,219,108,69,50,248,238,242,246,253,83,108,130,158,170,179,198,227,215,208,199,73,45,23,255,236,188,141,104,76,57,37,29,206,187,160,153,161,165,140,165,183,168,158,160,172,200,224,226,235,246,47,132,139,152,4,9,11,32,56,34,249,220,207,173,192,179,173,179,187,187,185,218,224,226,239,253,175,178,152,120,136,140,156,161,154,142,133,57,49,70,91,55,25,41,58,83,99,101,106,112,71,93,118,132,150,173,183,199,183,185,173,152,129,109,103,119,121,111,84,53,24,13,12,12,25,33,35,45,125,175,177,207,214,203,174,163,120,104,88,105,193,160,134,122,107,37,18,0,234,243,18,108,113,106,115,121,131,136,127,111,27,237,229,230,10,57,78,84,65,31,205,199,197,190,223,133,100,69,37,8,255,1,39,48,249,215,198,186,177,169,152,120,79,44,33,26,16,61,83,112,210,240,228,149,99,76,64,68,61,41,28,19,0,245,233,231,41,34,31,22,28,27,209,194,196,195,194,212,218,221,210,196,191,192,195,199,188,180,185,209,216,221,233,228,226,222,228,20,14,228,227,234,231,88,127,159,167,172,175,166,163,161,162,146,148,154,173,190,74,51,33,7,249,241,243,242,245,13,29,38,33,14,254,255,8,12,245,222,176,203,241,24,55,49,41,7,255,243,216,220,241,9,0,234,216,220,229,250,12,10,191,205,243,9,1,243,228,208,189,186,174,148,127,113,101,44,59,72,73,68,68,71,80,94,88,90,97,105,104,83,85,97,105,81,43,15,228,184,180,149,89,78,64,69,69,71,72,64,74,95,110,134,154,168,169,145,100,59,76,61,53,39,14,253,239,205,172,172,154,136,55,39,253,1,243,175,169,214,241,1,18,31,29,43,101,202,230,243,225,200,174,181,186,185,178,176,185,197,209,208,205,199,198,222,219,216,207,204,203,203,201,217,216,83,67,50,53,50,39,45,70,102,145,193,197,175,160,141,134,149,185,193,72,38,53,62,74,87,110,71,84,116,44,36,40,33,52,72,85,80,77,85,118,137,204,208,221,238,249,7,12,8,6,4,96,90,47,52,59,49,41,49,12,240,249,226,217,215,34,0,229,191,197,235,227,217,234,3,36,70,104,138,160,184,3,39,52,111,109,116,126,138,148,141,137,132,109,109,135,130,125,170,193,195,189,176,163,229,213,194,181,166,109,76,103,131,228,224,232,250,252,248,5,24,41,70,85,100,105,105,91,73,40,145,148,132,153,73,87,110,127,111,66,58,50,226,209,198,221,242,10,34,104,94,79,100,195,188,186,166,146,125,109,211,210,220,190,158,133,96,72,48,20,12,8,242,99,85,243,207,185,169,143,56,52,126,81,69,33,245,204,254,84,121,122,158,220,214,212,194,173,150,147,148,155,166,160,156,169,197,214,222,223,211,33,14,218,0,41,42,46,32,26,9,250,238,241,6,18,18,24,15,3,252,247,160,127,92,80,228,208,211,167,182,151,121,143,155,177,215,236,248,0,249,230,242,236,226,239,243,234,215,201,187,180,169,152,157,153,142,141,144,139,146,151,167,170,183,126,133,143,151,171,179,0,38,36,20,239,247,229,184,173,175,168,159,166,182,189,154,126,94,50,136,118,117,122,122,121,122,127,126,131,132,133,144,169,202,236,245,49,67,83,106,75,69,62,19,233,224,238,246,129,156,129,42,70,85,113,145,161,176,203,214,224,31,5,231,219,221,234,243,241,22,23,27,24,82,112,133,149,120,104,126,134,179,224,193,180,172,171,156,136,122,84,107,177,171,195,192,212,157,122,106,120,134,128,104,72,225,195,182,172,165,206,247,149,153,160,156,152,126,94,98,114,65,145,150,161,176,195,163,138,138,141,156,246,253,21,49,114,110,103,95,77,33,243,239,241,248,1,7,221,237,247,10,23,28,153,195,224,198,162,135,143,136,139,132,121,121,119,109,88,67,52,71,81,83,85,99,109,192,224,54,63,201,202,202,194,166,131,128,117,77,97,162,204,193,172,175,172,166,153,128,115,117,125,137,146,150,126,114,102,93,72,55,40,113,127,119,141,161,172,190,195,222,1,33,53,63,74,87,104,110,114,138,119,94,77,51,24,3,234,233,210,130,105,105,108,114,73,34,25,3,226,185,158,155,140,111,106,185,167,135,67,81,94,112,122,119,122,121,116,121,170,228,232,207,214,241,16,51,87,96,88,101,89,47,251,211,206,195,151,142,135,132,152,160,173,192,230,229,217,222,241,6,24,31,44,51,31,12,8,13,251,208,224,238,234,226,221,228,231,229,83,79,62,72,85,126,159,190,175,171,159,151,155,149,136,135,131,67,56,39,12,17,17,31,48,62,217,188,173,134,139,157,176,168,165,149,172,213,250,253,8,15,11,250,203,249,228,196,185,191,195,181,242,215,144,221,226,55,55,42,27,17,126,130,101,74,66,65,62,59,66,72,70,58,32,196,104,107,95,82,65,148,139,146,151,158,148,103,71,230,188,174,205,193,190,184,170,145,157,165,59,43,30,33,33,98,118,122,125,113,106,102,92,77,65,56,54,51,37,58,56,64,80,104,146,106,126,213,193,190,176,162,165,170,169,189,213,204,214,13,10,3,12,86,86,79,68,99,152,190,220,226,11,57,140,138,146,146,152,146,97,111,129,151,173,190,175,117,113,176,203,8,40,69,120,132,147,178,240,94,106,233,243,240,236,213,192,171,150,129,86,69,86,87,73,59,40,30,20,255,0,253,254,37,51,116,148,176,184,168,151,145,52,92,120,157,185,198,201,192,192,187,204,230,12,24,30,26,57,70,63,250,152,116,130,177,159,113,65,52,33,19,247,85,84,35,47,65,103,173,199,216,218,226,242,17,54,93,104,85,60,11,201,178,106,68,224,194,189,172,164,150,172,183,193,213,230,245,5,7,251,243,237,191,205,238,229,200,185,187,139,143,159,176,176,161,146,140,129,129,122,137,189,217,29,31,34,39,52,68,72,72,67,75,63,9,13,33,50,56,62,80,98,104,115,112,92,83,81,76,69,39,8,247,233,228,235,226,243,250,248,248,9,14,232,238,215,215,202,200,206,210,181,76,101,109,102,96,121,5,16,253,180,131,92,98,100,119,142,167,190,190,169,193,212,67,100,0,16,4,99,119,121,127,186,150,113,79,78,175,194,205,192,183,170,165,229,233,233,6,9,248,234,213,189,169,158,159,165,180,199,208,225,212,125,196,226,231,231,6,0,254,238,220,209,212,218,218,238,235,227,209,182,160,163,160,162,207,212,208,180,125,43,39,233,219,208,183,173,204,198,247,248,251,2,7,1,247,236,221,216,199,186,102,4,5,30,48,58,60,65,131,161,165,201,188,158,128,203,163,143,129,135,103,66,60,45,40,41,21,200,94,120,152,142,60,76,119,110,88,68,66,94,112,99,67,248,255,1,10,255,65,90,105,118,135,92,181,204,197,193,195,202,13,215,123,115,118,129,142,151,167,178,177,181,198,213,212,251,18,44,37,27,21,20,14,12,27,35,40,47,30,202,206,203,197,186,168,148,131,33,173,173,177,178,188,205,203,158,182,186,192,200,214,238,31,73,112,122,139,152,169,214,229,198,195,220,47,201,174,145,131,135,132,118,111,67,28,47,63,86,145,245,146,149,136,128,131,141,152,12,41,1,252,226,94,81,83,91,108,19,18,30,41,42,38,36,38,45,45,47,53,44,25,224,198,155,115,65,54,72,107,132,158,172,187,202,136,93,45,6,248,14,1,1,254,212,219,214,200,197,212,207,192,176,153,137,114,107,61,12,236,250,82,76,151,165,146,141,121,101,188,76,48,28,239,162,131,107,68,49,72,59,62,70,52,20,253,28,34,54,214,246,2,244,235,227,225,14,23,22,28,28,39,58,85,107,98,61,55,38,178,217,194,188,175,179,192,219,249,16,40,50,76,103,134,130,114,101,106,107,106,106,112,104,102,95,103,110,103,92,106,137,151,140,123,118,172,215,216,222,252,174,169,206,25,32,124,149,166,5,27,15,12,9,1,171,185,197,205,19,6,255,255,245,226,209,206,218,234,245,248,249,206,190,189,210,244,227,222,208,162,147,121,90,54,64,68,60,41,19,248,210,238,245,25,82,63,62,45,26,19,26,32,36,18,197,221,205,173,133,99,75,41,205,226,254,22,30,31,38,13,254,11,26,48,75,96,107,119,127,129,100,55,36,234,229,228,215,196,179,181,223,221,219,155,90,159,114,107,102,104,108,103,98,86,86,96,112,132,104,98,109,120,127,138,159,212,200,184,171,150,127,101,105,164,177,192,216,218,218,212,205,199,198,229,74,60,60,225,218,207,182,161,163,159,181,202,226,2,26,38,54,72,245,203,176,202,216,195,184,181,183,112,94,83,74,79,220,232,237,152,165,176,183,180,142,114,114,114,117,100,66,26,233,220,183,162,193,232,241,246,228,173,37,31,41,36,65,69,45,30,13,8,10,20,255,200,212,195,160,130,107,98,74,49,86,54,83,100,104,131,164,240,42,76,111,112,143,127,151,113,132,150,170,193,217,222,217,216,222,216,220,229,249,6,22,27,11,245,178,173,189,19,29,17,7,22,23,23,242,242,249,3,255,205,113,85,103,90,206,201,186,173,85,55,42,46,66,89,105,121,141,162,165,154,145,128,127,127,215,198,194,225,19,131,128,128,137,149,144,129,64,74,46,13,248,255,12,17,22,19,13,249,252,249,244,195,144,105,87,255,237,229,223,215,199,182,177,178,177,208,200,231,223,218,29,22,5,249,224,242,253,8,19,31,36,141,156,173,182,192,193,178,168,167,132,114,109,101,80,62,59,249,235,3,100,86,96,107,87,101,121,160,170,175,182,191,190,183,172,163,251,197,185,179,207,213,220,128,133,146,174,218,214,223,196,108,252,243,241,234,233,0,32,58,62,58,64,62,38,5,250,0,252,251,13,4,16,47,91,129,125,129,142,151,168,202,192,187,188,216,219,227,247,7,249,242,0,38,79,61,222,225,193,153,108,221,241,243,59,37,39,53,241,241,221,212,125,126,133,142,117,103,94,239,203,206,194,186,192,200,230,238,73,214,193,167,193,94,38,210,191,163,150,162,179,152,154,145,139,123,99,90,91,104,118,127,122,230,202,150,152,130,118,78,62,94,161,181,188,187,183,188,191,192,198,203,204,206,211,216,225,207,176,179,220,245,6,11,242,210,174,166,143,253,13,27,16,9,39,31,26,27,29,23,16,12,32,33,33,50,61,68,119,127,33,17,1,247,237,238,8,98,117,124,120,115,113,107,112,221,9,44,53,48,81,114,43,76,94,88,77,80,80,94,123,156,179,218,156,145,135,123,97,76,70,71,74,74,75,72,66,50,52,59,56,60,56,60,70,78,73,122,132,151,124,118,128,147,153,137,117,55,235,11,38,51,63,62,67,150,166,173,182,187,204,215,26,28,11,8,10,38,69,76,89,243,244,245,236,216,198,199,202,207,219,216,207,175,8,11,7,2,255,144,188,185,176,172,154,139,128,78,65,70,66,76,90,94,87,73,141,178,171,140,100,121,148,152,166,96,92,5,25,111,125,78,45,33,19,22,16,248,233,219,210,215,226,58,40,30,28,40,34,253,2,15,4,242,212,162,133,117,102,95,82,70,101,120,157,194,29,66,61,66,77,61,41,25,10,249,237,223,217,228,238,248,215,133,150,241,35,80,90,107,122,141,182,174,173,172,168,165,165,153,141,155,167,180,201,190,175,49,135,153,155,141,48,29,42,47,69,83,101,126,149,145,123,134,135,132,95,64,84,96,112,135,151,147,138,131,109,86,72,22,6,245,223,223,224,216,234,16,7,217,120,204,190,202,217,231,160,137,155,153,147,138,124,135,162,191,213,187,140,74,56,51,35,23,11,244,64,96,221,200,115,118,106,90,85,19,18,11,10,16,7,253,71,34,17,223,122,88,60,44,51,166,157,224,224,206,211,218,230,249,242,156,157,158,164,171,176,184,195,199,206,240,210,175,139,110,192,49,38,53,140,141,136,142,141,127,98,72,107,109,3,13,26,34,32,174,200,199,198,199,206,229,1,24,84,38,241,233,251,57,75,98,77,81,76,207,181,137,90,60,27,3,225,62,35,242,158,184,198,240,18,150,165,182,177,176,179,163,153,169,159,173,202,212,219,224,229,39,99,105,115,131,137,215,212,137,129,90,101,94,55,151,177,191,32,28,67,45,32,28,34,42,52,221,212,54,158,151,158,175,186,184,187,231,36,61,67,75,186,184,213,242,16,27,26,13,252,204,206,197,75,72,66,64,54,63,73,83,93,114,79,92,97,93,81,213,212,211,208,205,207,176,169,166,170,246,247,213,198,194,202,203,192,203,243,233,222,217,221,28,83,97,81,68,172,209,207,209,182,170,184,200,219,204,183,201,214,233,247,245,239,219,192,174,205,204,197,189,194,200,178,156,131,103,93,108,104,108,123,136,132,117,120,124,132,168,175,167,163,163,153,40,60,72,75,60,41,48,59,62,55,53,52,74,174,156,148,139,37,248,5,19,55,126,116,122,161,215,12,28,101,106,117,144,153,161,184,208,239,237,240,249,24,64,148,180,192,182,166,125,117,95,67,73,131,154,140,66,47,38,44,50,76,102,79,87,89,142,166,196,231,251,238,227,214,196,232,244,13,248,228,250,232,241,254,14,38,57,61,150,174,215,211,194,199,213,234,235,235,234,241,134,119,126,100,220,186,212,226,15,31,74,126,116,99,85,72,47,27,233,212,188,171,148,125,111,86,70,53,12,218,174,176,187,194,188,185,181,183,203,227,241,178,176,172,168,146,127,147,172,141,70,73,108,161,13,8,24,37,33,5,220,185,177,149,107,133,147,161,178,175,170,156,130,131,132,131,123,118,62,68,56,57,101,122,114,114,99,73,130,145,30,6,251,211,202,185,171,167,168,171,169,172,173,162,208,231,240,181,201,208,154,173,100,208,225,255,29,165,163,151,141,106,68,46,24,44,21,60,82,87,81,71,67,75,86,20,30,128,144,130,144,157,218,174,174,158,44,59,62,53,149,158,160,148,138,126,205,230,217,207,212,222,243,246,222,239,187,148,132,170,179,163,166,143,247,236,0,38,57,48,158,206,253,77,87,41,54,77,101,92,108,120,126,155,162,156,151,159,52,82,108,108,108,121,133,144,248,235,32,43,36,49,74,81,63,38,16,45,224,226,227,230,217,219,232,243,248,8,20,35,29,9,21,40,58,67,78,91,97,91,95,161,166,175,186,204,218,229,248,244,48,74,88,84,77,53,33,12,248,227,208,187,175,159,161,153,151,155,161,173,184,164,73,40,29,26,18,3,32,78,109,186,206,12,246,207,188,194,218,21,46,37,2,226,207,206,215,222,216,206,194,180,177,109,131,172,203,174,182,208,233,246,38,60,60,34,234,217,253,52,63,64,63,76,82,77,68,61,46,37,25,28,35,43,40,48,59,60,62,66,86,73,73,84,115,82,250,207,204,221,234,204,181,154,132,133,138,131,191,198,211,213,171,175,206,208,214,221,220,220,40,35,24,31,51,49,58,255,235,187,141,142,137,185,191,191,189,188,227,213,210,212,137,97,74,65,68,76,64,59,78,206,193,172,158,144,130,125,115,101,83,62,42,35,45,37,21,227,79,247,0,28,1,100,129,159,179,185,173,159,144,132,207,191,168,120,70,51,20,241,37,42,28,255,229,202,232,34,54,131,129,122,111,29,243,227,222,165,162,159,146,91,75,177,179,165,157,157,158,160,178,201,208,245,165,194,216,229,237,242,237,225,217,218,219,217,213,170,185,70,66,80,129,237,39,133,150,167,12,36,244,237,221,195,157,151,139,123,169,200,42,45,55,56,54,54,60,66,61,60,157,169,16,72,237,219,216,175,176,189,154,130,123,119,108,90,81,51,13,237,220,216,201,130,124,119,99,107,115,117,48,247,215,185,188,196,206,220,197,171,150,127,98,72,247,232,226,239,1,87,132,137,146,166,175,98,127,222,203,199,187,153,82,101,111,57,65,63,42,33,34,42,55,220,200,250,30,44,104,106,118,132,147,149,173,191,214,246,78,99,89,68,53,21,195,209,230,246,10,147,157,150,144,143,135,128,120,114,117,66,36,28,48,68,88,104,113,115,117,120,140,160,171,192,209,208,214,207,200,167,161,151,136,109,102,110,115,131,146,165,178,191,215,242,219,203,243,109,115,108,107,109,81,68,78,92,134,175,178,149,86,100,98,184,190,200,206,200,219,27,87,118,118,113,100,163,155,151,157,161,211,206,195,192,202,209,218,136,55,53,39,172,190,49,41,162,153,153,211,8,197,210,210,218,223,196,250,203,207,200,209,215,209,101,46,54,76,65,94,127,156,156,216,163,168,170,172,183,198,193,129,133,125,97,74,123,206,245,243,245,254,243,208,123,98,77,68,52,27,4,240,228,220,211,191,235,237,228,235,239,0,15,28,65,122,152,216,202,175,160,146,231,242,235,212,198,49,216,205,209,199,193,196,201,204,206,218,163,165,178,191,212,231,223,209,242,228,123,124,181,207,197,170,166,208,225,234,243,17,29,5,255,26,61,70,48,187,191,221,202,224,241,133,164,1,237,223,206,189,135,146,149,150,150,155,172,189,196,62,85,101,196,186,174,56,66,97,87,66,54,137,233,250,208,149,169,104,101,122,152,37,25,5,214,202,205,149,155,157,218,245,255,255,183,232,235,249,23,68,117,149,159,139,112,22,2,3,14,75,93,80,69,110,132,126,110,104,108,213,91,103,85,67,187,204,213,242,5,40,54,69,83,84,152,160,174,178,177,161,130,97,228,233,250,3,12,24,34,31,29,191,201,204,202,215,227,233,235,232,234,235,237,207,186,219,217,216,203,190,170,117,66,54,45,27,4,231,196,160,114,27,55,87,109,131,252,72,134,162,173,195,211,222,239,38,134,178,195,211,217,45,30,9,238,206,184,193,198,204,197,186,202,212,197,195,186,196,202,205,206,219,7,39,19,248,209,161,130,170,207,36,57,71,93,68,224,218,145,142,165,16,254,39,56,84,84,102,123,93,72,232,214,202,212,218,213,203,198,204,219,53,61,63,66,58,47,45,47,202,207,207,197,173,151,145,144,154,165,186,10,252,239,228,241,9,44,58,60,61,54,153,164,176,191,221,227,230,230,236,227,216,218,217,203,152,62,19,25,29,94,116,152,20,19,17,30,66,69,76,77,73,75,254,217,225,241,0,16,40,5,234,228,217,209,194,154,111,97,92,97,174,127,25,235,215,208,254,252,249,253,12,6,240,222,241,4,24,40,58,68,70,57,59,70,97,117,105,68,66,75,88,217,239,14,55,42,33,29,242,171,158,123,70,73,90,153,161,152,146,147,144,138,140,158,56,77,100,84,89,162,134,133,180,181,181,222,4,6,247,246,73,111,130,152,130,126,235,204,171,173,170,173,193,178,146,58,71,46,30,13,243,225,223,222,152,147,129,104,98,86,79,223,228,220,223,152,142,248,35,52,41,247,5,16,74,66,64,145,152,159,190,217,103,121,133,181,227,30,66,84,120,154,157,160,162,240,220,205,197,189,195,207,210,223,241,10,146,115,108,157,211,225,4,14,11,230,187,216,30,61,57,13,244,236,219,220,224,251,18,221,222,213,189,192,192,207,215,226,226,203,152,105,79,57,43,32,63,27,227,121,149,112,99,81,97,113,112,112,102,15,69,76,252,252,11,39,170,140,146,174,176,166,175,178,175,155,130,99,113,126,151,156,153,130,41,32,43,203,208,193,201,74,86,95,163,166,192,196,199,172,150,139,125,140,171,164,192,232,18,6,2,250,243,188,109,116,114,116,100,206,103,104,116,147,182,32,40,52,58,59,59,40,117,119,108,94,95,105,111,134,159,185,205,209,219,233,248,9,30,201,201,184,218,197,205,182,168,161,26,26,45,170,15,248,240,241,222,180,162,160,102,51,83,177,198,169,254,179,188,190,156,185,168,150,247,97,86,197,206,209,180,157,141,122,147,150,143,141,245,168,162,156,146,174,192,26,41,57,112,145,149,61,91,190,174,118,208,238,231,231,192,201,171,74,52,39,29,5,34,110,113,132,189,126,115,113,122,78,71,67,77,82,64,225,0,52,147,138,127,84,46,70,83,101,130,139,51,38,253,230,227,217,213,236,225,223,229,232,245,253,53,82,107,116,170,162,176,206,44,25,8,246,204,154,124,101,94,22,9,145,118,164,171,155,216,233,241,247,14,50,87,105,123,125,136,25,29,11,11,24,50,70,99,26,237,204,203,183,216,218,170,172,184,194,201,162,224,229,227,222,227,236,12,148,196,116,126,128,166,172,226,43,93,143,238,2,30,44,104,109,58,89,111,166,187,237,204,180,204,209,189,133,114,91,86,81,106,136,76,247,251,254,6,10,10,253,36,59,175,184,161,129,32,239,225,213,35,80,83,71,66,67,28,246,228,138,128,131,129,123,207,220,253,128,101,72,4,248,233,217,79,83,74,60,56,42,37,82,85,66,49,47,251,255,3,94,198,186,177,42,228,140,107,113,193,187,169,165,141,109,70,32,13,42,38,47,33,19,9,24,67,188,173,177,202,221,211,192,178,179,164,170,250,223,220,203,75,50,56,108,139,183,174,161,157,158,156,127,125,180,240,235,226,41,60,57,39,234,236,14,24,33,28,3,233,246,32,86,72,61,202,206,224,237,5,41,31,91,135,169,178,219,1,20,243,231,209,186,115,65,81,83,61,63,63,93,81,85,134,90,50,129,114,208,191,183,51,61,62,64,69,78,76,63,52,55,83,88,81,113,179,182,168,142,101,105,90,78,77,63,30,12,5,180,145,144,162,166,86,129,220,242,255,10,29,145,123,118,0,254,254,10,25,52,47,34,41,74,115,160,15,0,229,182,175,192,197,205,222,219,185,213,204,196,184,185,205,81,65,41,28,44,46,43,68,84,117,193,188,136,133,119,114,195,205,212,255,17,61,96,28,30,57,44,90,138,142,149,199,211,231,2,14,14,18,12,115,44,54,62,76,68,184,250,6,15,90,28,251,244,203,13,251,222,196,208,225,242,16,35,56,83,106,230,6,17,95,105,153,137,131,134,80,74,81,39,74,206,194,188,146,137,247,225,179,171,18,208,209,247,237,7,27,62,82,117,103,92,163,243,38,109,124,148,163,204,28,53,188,206,223,209,144,130,111,248,214,66,73,77,6,251,3,207,164,165,248,216,156,203,206,142,145,163,177,183,168,231,232,237,40,184,168,75,61,65,248,220,26,38,40,16,253,253,254,250,250,165,149,136,121,110,110,181,202,119,147,144,161,182,231,231,252,248,1,250,228,210,186,182,164,136,166,126,161,178,181,167,133,140,207,223,232,251,18,47,41,27,72,21,3,0,5,90,147,171,171,167,167,175,187,209,121,120,103,85,67,115,100,98,123,122,121,111,122,131,135,138,165,51,65,65,241,32,59,80,14,225,224,196,29,54,64,96,156,158,156,179,228,218,215,192,194,205,223,237,246,254,14,11,248,173,133,123,136,164,185,178,117,108,27,19,245,214,190,177,174,177,183,173,150,59,67,77,147,132,100,66,193,190,179,174,165,156,165,173,170,167,168,108,64,51,216,161,178,202,134,254,241,249,48,104,110,100,85,70,70,7,228,4,25,28,28,165,186,164,118,99,158,139,132,119,98,80,95,86,78,100,113,146,54,190,200,203,188,162,138,131,158,148,171,169,168,201,116,120,128,150,157,164,109,102,44,24,179,162,176,196,99,118,123,118,96,81,164,100,86,69,44,102,105,116,118,25,245,234,188,186,83,112,125,126,114,97,96,222,241,251,223,207,213,248,250,167,111,106,253,224,182,133,135,127,126,151,156,189,239,242,220,204,206,221,241,9,32,41,53,62,66,59,2,235,226,227,229,229,46,15,133,149,171,188,167,167,189,173,157,152,25,252,9,253,167,163,166,179,182,200,20,16,25,233,190,224,201,180,202,213,192,181,36,193,209,210,59,51,41,155,64,57,52,53,62,84,69,75,71,42,21,246,113,107,95,159,148,178,126,66,229,207,184,237,213,192,152,171,185,193,50,45,20,23,116,104,105,84,53,26,51,65,123,139,12,117,172,159,145,152,156,162,158,49,57,34,148,3,160,154,38,78,104,208,196,124,133,142,152,119,250,193,176,48,7,94,76,61,16,8,254,248,61,138,145,159,175,168,74,98,181,173,173,169,176,179,0,16,24,31,37,21,197,146,222,219,199,219,46,58,25,9,245,29,31,46,17,228,227,221,215,33,102,177,181,188,186,186,148,140,121,119,153,170,181,201,210,235,251,7,29,25,20,248,247,240,11,6,213,173,174,184,121,149,154,168,193,196,151,119,119,111,206,29,35,38,78,85,72,8,10,65,85,98,118,130,104,88,81,87,86,244,233,230,223,218,251,27,12,253,26,42,62,137,174,150,228,207,189,170,211,222,224,37,69,86,79,76,70,104,112,137,111,146,201,214,218,253,237,203,129,127,185,53,34,213,196,188,174,140,232,202,154,57,30,28,146,213,216,228,250,5,14,254,236,206,198,227,215,249,210,183,141,153,211,143,97,73,64,69,247,11,1,249,203,198,188,174,34,62,210,175,146,127,116,97,83,55,62,69,39,36,162,186,200,60,139,123,55,23,32,100,108,99,139,149,75,29,239,228,185,255,198,120,114,123,179,187,183,179,199,215,219,13,29,26,62,48,36,30,15,30,18,3,247,14,43,71,201,200,150,142,132,165,167,199,216,215,222,137,172,204,194,185,63,157,147,182,220,195,170,125,78,116,156,195,230,153,144,146,160,249,241,229,69,77,5,51,31,26,32,52,47,47,47,52,64,57,31,224,192,163,21,44,163,167,164,169,134,217,16,9,4,1,207,220,203,184,224,142,118,102,176,157,151,78,106,159,153,149,134,127,138,86,72,41,228,222,12,21,65,89,121,80,222,251,15,29,79,95,107,106,106,94,110,126,100,144,131,111,218,235,15,26,57,40,14,234,44,22,179,187,186,185,12,0,184,247,242,248,2,95,190,226,236,250,123,83,54,77,242,234,66,67,5,8,18,38,46,53,55,186,157,63,250,210,186,157,31,18,25,43,37,31,22,238,242,248,9,21,90,49,4,244,228,169,240,247,102,80,83,81,95,124,84,89,102,113,127,237,231,163,149,129,104,77,66,74,180,187,199,220,245,238,231,199,192,97,98,143,158,183,202,41,50,60,220,251,188,192,86,58,71,140,144,155,196,121,107,86,88,96,110,223,42,20,4,30,37,71,4,253,59,52,196,159,100,14,104,89,105,135,65,190,206,209,223,236,25,32,25,12,252,226,236,255,15,6,253,110,84,210,169,59,31,30,177,146,156,157,200,113,156,147,138,136,167,102,108,249,239,229,34,28,1,0,245,165,108,97,76,58,35,255,235,230,233,230,182,181,252,234,36,44,26,244,249,25,32,125,135,158,176,191,174,80,60,91,109,177,191,179,169,168,171,158,155,206,212,135,135,159,191,221,235,216,19,52,81,68,63,73,88,83,63,57,25,9,0,252,251,7,127,107,107,147,154,179,182,221,216,228,254,24,34,8,248,252,234,249,94,213,13,24,32,156,202,116,129,128,137,148,167,184,205,226,173,138,108,41,247,222,214,190,166,142,130,143,177,65,95,78,45,5,192,194,187,200,205,117,41,248,5,15,26,40,30,27,34,42,47,55,46,48,147,8,11,114,129,140,235,68,62,49,74,155,74,99,112,102,64,70,185,195,157,150,142,138,68,63,63,70,81,76,68,80,73,30,52,48,52,68,81,96,72,143,119,102,95,161,158,217,244,16,42,68,164,22,22,66,108,114,252,252,251,229,221,222,8,2,15,127,188,173,32,54,61,51,52,100,101,98,143,180,210,78,43,164,158,163,174,115,163,164,16,39,245,233,220,83,40,66,81,212,16,108,143,160,171,64,59,14,240,246,129,142,170,226,171,116,145,157,179,213,167,166,176,13,24,163,121,141,147,159,2,40,82,95,157,165,163,127,118,105,98,186,231,233,229,194,58,108,208,183,198,153,153,176,203,229,0,81,73,65,248,204,104,39,24,5,250,241,11,242,75,54,33,150,10,233,202,180,1,20,9,140,156,180,170,174,192,198,196,199,156,127,120,115,45,27,157,150,145,148,134,86,121,112,254,8,21,38,218,192,182,216,25,224,71,83,125,113,116,128,148,114,127,157,182,205,189,213,86,109,97,150,142,101,134,137,150,172,190,201,193,181,176,161,23,99,75,182,174,46,6,74,66,59,62,49,94,65,42,96,145,159,157,161,167,0,18,2,164,174,176,189,189,183,214,216,2,11,91,233,181,191,190,6,188,196,179,158,134,95,87,92,113,169,25,42,53,71,63,39,236,1,152,128,104,99,137,134,177,149,140,2,40,72,104,39,130,176,200,239,2,236,247,254,252,14,44,65,202,170,178,191,208,234,233,194,191,137,40,20,96,77,61,51,202,51,30,249,148,200,212,204,197,193,166,189,139,118,162,92,30,245,192,68,92,140,154,181,179,172,133,132,141,120,115,64,80,93,53,6,125,248,216,165,176,171,165,164,252,159,191,227,244,14,175,172,163,161,156,126,90,62,19,66,66,128,141,62,67,161,148,207,73,205,241,28,68,132,42,29,115,90,138,94,122,137,129,240,205,62,69,78,100,7,243,221,223,225,222,202,209,218,235,230,210,22,5,44,11,12,31,48,104,109,93,166,179,176,221,237,44,60,90,105,128,196,148,160,146,22,25,34,42,116,141,168,196,231,70,207,227,236,226,201,197,185,72,91,152,248,239,98,86,216,80,85,96,89,97,31,17,30,187,172,121,198,199,202,220,60,47,248,57,19,196,121,100,70,69,96,163,123,125,130,128,23,36,233,240,109,159,173,166,158,226,46,19,193,126,91,50,142,77,161,160,162,161,75,62,204,159,161,162,204,219,219,187,170,120,209,219,250,230,221,223,224,225,154,173,76,64,41,139,105,38,192,75,47,53,165,159,145,218,127,38,5,227,122,130,252,226,207,214,8,30,133,118,103,175,82,84,75,56,218,190,188,235,131,121,123,106,89,47,191,201,121,14,90,107,218,226,27,130,87,78,72,84,7,119,55,51,184,183,191,49,131,113,145,149,143,195,163,159,211,204,172,190,197,191,183,193,214,44,46,42,7,92,133,165,164,177,190,152,106,87,88,154,152,137,77,30,238,228,223,227,220,226,25,159,203,185,105,138,182,181,189,198,196,204,144,157,164,165,168,243,138,145,232,233,235,244,197,228,238,107,74,44,31,7,244,223,207,143,155,63,50,62,138,175,186,130,130,113,243,166,253,131,92,75,146,111,125,110,117,212,220,205,203,227,4,68,65,93,148,144,172,131,116,3,2,8,41,40,180,194,200,222,198,185,13,29,62,224,172,100,132,182,232,3,56,174,188,203,60,4,173,196,182,205,191,189,188,193,255,31,196,197,229,188,62,20,216,79,56,163,246,250,245,239,57,79,253,3,0,62,57,244,219,211,208,209,120,123,85,63,202,201,4,153,247,19,30,8,128,53,58,198,154,143,138,85,95,111,80,90,94,207,164,155,143,123,84,242,129,58,37,10,154,186,172,170,217,199,182,181,203,198,30,234,252,194,168,171,175,187,224,184,153,129,44,98,110,239,241,119,151,173,80,79,196,140,139,123,101,107,138,166,196,224,127,121,86,82,105,143,176,199,148,126,79,90,132,222,242,12,203,165,23,21,243,247,195,122,146,162,194,186,179,99,88,226,234,240,221,197,142,152,34,54,190,229,197,109,83,60,54,52,209,153,142,158,241,240,69,82,170,89,88,210,218,228,215,210,235,252,51,74,254,243,107,8,162,250,14,50,120,121,121,58,9,82,193,202,204,217,225,24,249,248,125,117,146,109,211,75,54,56,34,250,2,2,6,121,111,20,55,52,36,20,114,146,161,210,179,166,185,0,36,42,46,120,142,160,170,243,65,66,146,63,48,22,71,109,91,189,194,111,113,253,11,1,249,80,71,29,168,165,120,83,10,246,165,147,147,185,195,211,232,68,18,30,61,22,248,207,31,89,92,29,217,26,8,222,14,44,72,12,38,118,132,146,163,182,157,226,193,1,122,81,217,26,38,4,232,3,251,173,123,130,153,160,217,202,204,20,107,69,60,6,114,100,89,78,44,207,176,101,230,103,251,73,236,220,56,13,35,152,172,72,206,209,110,106,112,144,82,94,10,23,197,228,201,199,180,138,202,31,49,65,139,151,190,25,24,35,60,219,200,180,167,51,46,39,49,54,24,155,16,193,37,31,41,30,2,65,112,140,124,137,139,134,52,246,159,160,71,162,158,245,39,230,228,254,32,23,108,159,165,174,6,55,164,21,8,218,88,202,45,127,198,190,117,28,48,113,89,53,166,155,52,158,25,195,39,35,20,2,229,185,147,10,13,50,78,11,217,120,120,90,159,150,18,99,220,185,173,252,245,14,65,70,22,40,73,187,21,194,136,224,37,28,90,12,19,22,24,168,147,39,237,244,32,131,62,71,91,183,44,20,13,195,162,135,12,123,118,91,232,167,119,32,58,53,127,130,117,153,12,53,37,77,97,175,180,77,89,47,127,39,108,20,236,228,16,165,173,89,126,167,95,150,61,50,26,6,249,230,225,141,49,41,134,145,163,167,250,254,122,136,212,182,186,69,58,157,159,168,185,190,217,169,70,78,34,61,104,39,229,177,51,251,149,181,114,107,133,218,228,177,7,176,175,223,151,139,104,117,222,10,199,218,133,160,251,205,112,116,43,151,163,166,70,42,219,223,83,48,121,195,252,177,125,192,189,239,31,209,158,77,134,46,52,198,205,198,158,21,43,230,178,114,29,192,243,228,8,191,52,41,74,205,2,27,170,189,148,22,74,128,188,}
 
int windcodes5676 [] = {152,138,172,172,141,158,157,124,119,130,125,143,190,206,205,187,171,175,136,86,111,80,0,210,177,155,125,96,80,66,162,135,121,119,150,136,86,91,93,193,201,212,203,213,227,230,243,228,210,186,138,68,242,217,216,172,145,199,31,43,57,82,110,119,95,49,31,4,13,17,254,198,173,161,182,204,108,133,122,87,88,103,64,47,44,29,26,255,235,192,133,122,156,154,84,67,68,129,169,191,181,182,140,91,49,51,62,52,76,79,52,19,241,207,175,208,225,235,225,202,207,193,192,235,236,236,224,242,250,237,252,23,13,250,231,230,217,194,193,209,173,105,76,52,39,11,246,236,233,245,240,1,246,206,177,151,91,98,170,212,207,238,5,22,29,34,43,44,45,57,74,80,85,142,153,157,129,126,110,52,13,27,44,41,2,241,248,5,11,18,34,58,59,37,16,216,191,168,172,169,165,167,137,127,231,222,228,251,24,47,81,113,147,163,142,122,82,38,59,80,81,109,154,156,55,33,36,19,42,43,30,16,12,15,24,33,20,13,2,3,6,5,252,231,191,139,91,90,82,103,158,195,205,223,229,57,90,55,42,16,20,30,37,72,128,161,184,207,200,213,220,204,198,206,212,213,185,153,132,103,75,49,23,21,23,24,50,63,53,40,25,25,45,77,92,96,75,69,54,25,23,23,21,2,243,236,220,180,133,134,162,212,241,238,247,236,246,252,250,249,234,196,169,203,221,220,206,162,168,161,106,11,247,241,246,253,242,213,17,235,193,193,240,1,13,22,0,241,228,215,238,10,29,53,31,53,47,12,9,254,234,232,235,249,234,235,228,218,205,167,182,199,208,174,255,247,237,151,184,16,74,73,59,38,23,46,76,10,31,24,252,232,240,253,252,5,222,199,228,9,13,253,241,242,3,42,27,1,12,21,242,213,177,159,186,191,167,112,58,28,47,46,67,119,196,222,238,231,219,195,195,191,16,249,250,3,12,15,18,22,34,31,24,26,41,44,39,45,44,36,23,45,54,44,43,50,88,115,38,53,38,64,105,158,192,191,194,161,189,186,161,152,91,158,144,155,162,111,71,28,1,230,234,7,28,21,28,46,88,76,42,1,224,238,227,233,224,235,251,8,4,2,4,9,26,22,1,20,54,58,57,83,97,120,83,38,31,32,36,109,195,200,202,208,216,130,148,166,191,168,169,180,169,158,161,168,182,197,158,125,131,93,52,34,17,17,250,231,231,243,230,218,235,47,30,16,25,30,21,41,55,96,104,102,113,133,180,196,216,185,142,113,145,150,108,105,63,34,253,250,13,46,63,73,111,85,74,54,77,103,159,197,219,133,191,216,243,16,26,14,15,21,28,38,205,244,32,48,58,44,44,52,40,22,247,254,5,251,8,19,16,255,4,25,35,43,51,34,1,12,20,15,9,255,247,1,17,16,25,4,10,18,14,12,45,17,245,239,228,220,174,150,124,94,87,41,51,68,80,52,45,80,89,104,87,249,196,205,223,224,237,246,240,228,218,211,3,32,62,154,137,79,47,22,24,24,25,6,237,229,234,7,19,32,30,26,12,19,36,85,117,158,175,180,173,157,244,221,220,234,222,204,196,209,233,239,242,232,220,223,196,183,208,206,231,234,224,203,221,237,233,221,209,179,160,138,137,142,132,118,91,76,78,71,56,31,19,9,2,11,14,17,11,3,0,249,19,35,37,80,79,65,53,51,39,26,22,19,12,5,13,16,19,22,45,66,113,102,103,113,135,104,73,60,63,82,65,74,90,50,21,19,1,3,18,24,17,19,35,38,48,249,240,252,244,224,246,253,244,247,223,206,179,138,92,118,139,89,120,126,162,214,243,252,3,3,2,253,236,210,45,25,194,226,255,3,2,254,1,8,5,5,5,14,245,240,248,234,148,161,120,121,180,224,219,230,236,233,225,229,217,233,211,103,110,143,171,157,184,146,102,86,46,16,6,236,250,241,230,238,250,255,253,6,13,5,252,244,229,161,106,53,29,15,246,204,175,173,144,146,247,250,9,2,243,24,30,31,40,52,21,4,246,242,237,237,238,237,191,158,202,239,232,3,14,19,28,38,52,98,152,244,249,43,63,94,100,93,39,21,6,253,2,23,36,50,207,225,213,233,245,226,221,233,14,3,236,198,228,1,251,228,226,220,205,222,228,226,188,129,89,185,167,171,213,211,218,245,36,137,131,85,48,11,241,250,11,14,34,63,87,133,177,193,217,235,8,54,101,90,76,62,57,67,59,41,13,1,6,23,29,41,80,134,168,223,11,31,31,41,38,27,23,16,236,201,194,222,233,237,0,10,4,249,251,14,40,31,7,236,167,136,172,171,15,28,40,44,36,14,5,14,253,234,234,242,244,239,230,0,34,74,88,69,69,16,245,253,248,222,55,61,91,4,5,252,239,217,213,200,150,131,139,145,160,185,209,220,228,210,202,170,131,108,11,246,242,14,27,26,25,28,34,45,60,64,90,151,246,229,236,255,247,253,2,243,235,229,244,10,177,173,195,198,185,202,187,135,103,81,31,246,232,245,241,250,246,251,10,17,16,6,15,21,10,10,19,18,23,29,59,46,31,19,14,20,24,22,10,24,62,57,58,45,28,27,42,58,48,43,53,38,47,38,10,249,15,17,36,68,69,47,29,31,47,12,17,31,48,52,62,121,140,174,210,254,22,47,56,29,2,234,53,39,48,80,88,121,162,179,203,214,223,214,212,229,254,215,158,112,161,208,228,222,218,184,171,158,174,217,242,51,32,156,130,127,156,189,199,210,194,157,105,77,94,64,37,18,14,6,230,217,207,203,224,224,201,230,11,18,38,55,33,18,3,9,16,34,19,218,145,145,120,90,85,66,51,39,20,238,209,173,180,253,245,219,218,237,238,231,232,197,184,236,254,248,240,252,14,30,13,254,4,255,246,254,8,253,4,233,7,36,53,36,33,30,9,12,33,65,85,80,71,52,39,47,61,77,121,112,92,153,144,154,148,115,63,8,20,25,25,19,41,34,30,15,207,101,75,170,169,188,209,201,201,177,207,217,216,199,214,229,254,28,56,102,137,163,167,149,205,163,130,145,159,191,203,188,171,194,164,148,165,128,141,179,189,150,165,170,184,226,234,221,193,227,60,88,134,165,150,143,102,59,43,29,20,17,22,28,23,21,23,27,45,39,20,224,225,237,227,225,243,255,253,252,231,188,180,214,211,218,229,153,124,78,33,17,13,3,3,25,31,46,33,7,251,3,22,30,31,24,40,71,122,79,15,177,111,86,100,117,105,169,207,199,206,220,237,251,247,231,221,177,178,98,98,60,73,134,182,173,182,176,144,64,60,113,149,97,47,36,38,24,254,218,225,242,241,229,221,166,76,39,25,45,69,109,156,187,87,77,86,89,91,31,17,33,67,62,65,67,106,136,204,213,210,207,216,11,17,36,72,101,15,233,224,231,243,250,251,252,25,28,23,11,1,11,4,253,16,21,11,4,13,29,53,69,109,171,198,237,229,18,55,52,68,37,48,111,68,45,41,33,30,45,63,77,67,59,27,26,39,94,189,218,234,238,6,10,244,246,25,24,20,41,34,6,255,248,246,234,229,12,34,36,29,36,56,38,38,47,74,72,56,39,39,190,224,254,12,12,20,36,24,7,11,22,47,220,205,50,30,7,207,201,20,26,32,28,13,236,67,19,2,243,254,3,13,19,16,29,30,31,8,253,1,29,79,113,71,72,225,234,252,2,254,234,220,237,0,3,226,209,181,132,133,155,150,98,84,57,76,129,169,10,25,6,16,17,33,49,72,101,101,65,40,30,22,10,16,52,95,93,84,78,80,104,138,124,79,46,25,251,211,171,183,224,207,207,230,255,243,229,238,242,251,0,244,232,228,233,226,219,224,187,169,159,254,2,3,15,22,61,47,247,190,169,183,189,161,105,67,52,63,40,19,247,4,14,9,255,30,30,20,36,32,21,236,243,238,215,198,188,197,189,239,245,254,12,5,34,30,46,33,23,27,33,25,18,7,246,244,241,4,12,16,47,87,108,120,105,115,159,201,212,218,171,99,10,214,113,65,22,27,6,232,201,202,213,3,252,238,238,244,230,220,186,175,181,190,182,223,229,231,5,247,1,5,9,242,233,237,249,225,201,235,0,236,215,182,170,164,148,196,229,239,202,177,218,244,249,3,6,228,182,166,188,245,247,247,251,248,251,234,225,241,238,1,189,197,180,167,175,162,144,133,124,117,129,147,145,169,134,123,154,123,123,124,80,61,77,53,58,78,97,90,58,63,74,50,43,36,9,7,4,9,5,0,242,241,0,5,14,15,10,12,21,22,20,8,242,241,22,248,245,235,219,203,19,8,21,32,39,46,63,253,88,68,96,94,61,49,40,66,49,28,73,61,23,21,21,25,12,18,15,12,25,22,14,0,254,242,233,3,43,25,16,10,7,10,5,2,15,25,38,42,35,62,91,160,170,126,109,93,95,107,118,112,147,122,86,68,56,49,47,59,53,48,46,75,123,102,54,27,45,79,116,122,127,90,52,36,8,229,18,43,18,4,1,231,238,254,1,29,46,26,16,12,17,10,10,5,32,74,39,20,35,69,113,99,201,230,223,230,241,13,14,10,239,211,192,207,223,4,27,22,240,243,248,8,23,18,226,217,220,227,214,201,200,178,151,77,66,80,104,144,200,241,45,40,52,93,116,119,123,94,103,140,180,216,235,249,3,248,12,20,12,11,10,2,12,4,10,26,10,15,4,243,237,223,191,162,110,76,90,66,57,100,157,173,184,222,245,25,7,5,9,11,12,2,252,244,0,240,252,26,27,8,4,5,11,17,10,4,248,17,50,40,3,234,230,232,1,231,250,47,107,125,169,211,116,104,86,86,75,89,125,193,228,1,253,227,211,219,225,248,241,245,246,238,251,239,193,208,253,246,2,185,204,243,253,0,245,251,21,39,83,94,68,74,126,154,109,9,205,153,209,203,181,164,125,85,76,88,97,95,71,23,9,10,11,21,26,251,193,200,247,255,11,255,242,225,219,222,222,236,243,246,2,8,18,251,246,1,255,9,14,14,22,26,18,21,5,243,250,4,255,254,251,217,121,132,111,99,87,70,33,28,15,33,43,36,10,0,255,233,188,155,138,144,220,206,146,125,88,87,94,191,253,231,230,27,37,17,8,0,251,198,142,56,37,44,46,21,31,34,47,36,33,58,92,84,44,15,10,0,7,1,242,230,237,229,246,226,233,237,252,224,239,247,253,20,8,209,152,139,119,102,141,195,0,173,213,248,23,24,18,10,13,21,23,24,36,43,44,43,25,40,80,113,102,132,144,175,215,245,250,242,216,206,130,57,62,104,113,96,130,150,133,132,129,72,31,254,11,18,15,7,8,241,228,246,246,16,37,25,39,65,65,77,82,140,160,172,193,228,243,160,173,224,238,244,9,9,250,223,208,203,203,215,223,244,14,36,34,17,3,5,241,201,160,142,186,225,3,27,20,10,28,1,222,234,227,224,231,205,182,180,210,230,244,250,254,241,214,203,169,130,90,72,41,27,0,233,204,177,133,120,74,244,218,197,206,247,254,10,29,44,93,149,171,233,46,70,87,85,69,46,39,29,1,232,215,220,242,37,25,37,55,63,61,65,87,103,148,179,195,207,195,164,205,220,211,202,241,238,242,13,25,51,105,137,97,80,85,77,73,73,44,39,40,61,63,85,87,70,47,39,31,46,83,169,222,22,27,26,22,31,51,87,126,143,174,177,207,227,246,10,29,37,53,41,31,19,21,55,46,43,24,14,24,37,39,47,24,3,245,226,196,152,142,162,186,210,221,224,231,204,234,3,13,10,8,26,27,1,251,2,236,254,10,16,35,56,82,55,35,26,106,69,88,151,169,151,146,140,88,48,23,30,69,61,51,40,49,85,74,59,28,16,254,242,11,40,32,17,3,251,234,206,217,196,7,247,239,245,249,242,246,211,191,214,3,9,19,43,94,79,79,101,122,102,47,18,252,224,188,235,7,9,1,251,230,195,182,123,73,72,92,124,153,12,11,7,4,253,249,252,247,229,190,190,224,226,221,228,201,174,75,91,103,97,173,127,133,123,148,174,202,174,189,237,251,237,244,253,241,228,212,220,213,219,7,90,120,116,124,112,107,246,235,221,237,190,222,254,21,32,26,14,33,20,20,21,24,35,41,53,45,42,43,25,184,143,76,56,244,235,218,231,2,18,21,12,246,20,11,252,253,218,230,195,223,246,252,8,32,99,130,158,193,158,136,229,225,209,208,199,176,203,161,95,87,92,120,55,44,24,8,231,188,134,43,8,245,236,232,241,5,248,230,237,251,12,16,29,29,21,27,23,3,252,0,17,47,31,18,10,249,4,248,22,10,236,59,74,97,75,44,47,41,18,6,12,8,6,17,27,31,29,19,8,22,44,234,5,45,94,104,62,59,54,55,91,63,7,13,20,18,20,23,48,51,76,51,30,31,27,52,83,59,52,23,14,48,38,17,250,205,234,29,100,86,68,59,41,32,20,11,8,82,103,11,247,243,244,247,6,17,27,47,50,35,30,24,43,77,139,173,167,150,162,204,190,207,237,254,252,253,36,47,75,90,67,28,13,188,130,32,12,18,9,106,90,61,65,90,92,99,141,186,165,155,196,230,224,215,253,217,209,206,201,231,255,10,40,47,19,245,207,172,177,77,60,89,181,190,224,248,255,249,244,238,240,151,175,183,220,65,135,187,209,253,255,240,23,26,45,39,10,120,146,117,227,177,218,226,230,209,207,217,197,139,115,76,58,101,111,70,34,29,27,19,4,6,20,14,12,234,197,187,202,182,161,200,237,227,207,178,160,176,36,13,7,24,46,38,55,78,95,56,26,3,8,22,49,57,254,226,160,162,174,163,180,145,171,124,66,54,124,84,70,55,44,40,46,249,215,229,231,146,127,147,181,190,151,88,27,4,234,249,231,223,224,224,243,254,241,132,133,57,17,6,15,13,2,247,249,226,208,4,40,45,55,17,1,217,246,12,1,2,245,237,230,245,6,1,243,243,246,45,138,176,228,251,21,92,48,44,31,46,28,6,21,15,24,40,84,115,118,68,116,108,83,61,55,47,38,61,64,46,54,72,62,83,140,127,123,54,6,203,155,133,128,165,182,206,178,134,101,101,96,16,22,36,32,11,247,67,66,39,44,24,31,30,30,15,252,223,171,59,44,170,179,174,163,187,218,253,206,215,220,207,185,132,112,18,222,224,241,184,171,195,207,226,216,212,10,16,28,25,27,51,75,116,128,147,192,170,192,184,150,104,126,92,87,132,117,146,222,204,177,159,168,219,237,232,91,236,217,160,109,66,95,156,186,208,212,226,43,97,164,155,157,118,25,245,1,250,235,223,216,253,7,20,49,70,83,93,109,222,106,74,26,19,23,22,5,5,12,242,252,46,45,35,17,33,22,37,22,46,70,67,62,68,87,180,211,227,229,217,255,197,213,219,3,253,248,8,240,196,131,133,154,236,226,174,175,208,233,218,188,144,147,58,36,5,3,16,26,7,4,237,221,5,49,43,19,62,59,69,19,0,236,230,248,246,26,33,22,0,13,19,140,122,117,69,24,255,235,206,128,94,77,63,69,66,79,107,69,68,3,233,241,228,199,217,223,208,239,251,7,3,9,15,9,247,244,0,9,247,186,157,101,121,28,24,24,24,98,138,186,223,219,197,182,172,217,183,166,217,145,216,134,169,199,201,162,91,61,26,25,23,31,41,34,31,11,0,212,205,216,218,223,247,253,251,218,216,200,143,121,129,84,54,23,13,249,37,35,39,35,134,158,229,255,53,76,63,132,155,170,245,255,10,1,250,71,76,55,43,49,55,45,82,126,132,95,89,227,244,250,223,218,203,190,40,22,19,18,33,38,41,108,116,75,24,255,251,246,233,14,241,250,247,3,29,54,51,18,13,37,28,3,241,251,16,252,234,10,41,25,17,29,19,223,10,26,252,254,66,84,59,100,113,242,220,203,205,222,52,57,90,73,98,109,60,30,8,135,140,155,48,21,21,51,244,9,18,21,42,52,70,98,101,66,90,68,33,10,4,15,25,26,25,55,205,233,228,215,226,14,252,221,235,26,25,16,254,34,89,245,240,255,236,233,194,222,247,24,33,47,44,37,44,37,21,8,34,76,62,39,95,67,74,88,74,35,19,57,88,120,144,173,212,238,9,18,27,63,38,32,9,6,15,29,30,45,150,187,177,172,138,118,48,58,55,158,174,156,92,32,17,24,48,24,29,35,31,22,252,170,138,3,11,245,2,30,8,0,13,39,44,43,43,53,40,235,246,251,244,21,49,101,130,177,113,70,96,135,148,159,0,9,12,15,14,5,247,239,239,241,3,36,24,29,107,109,152,183,191,178,108,56,93,47,28,32,40,40,83,142,224,6,28,32,13,239,255,255,253,12,8,12,26,28,52,146,135,143,85,50,18,246,0,2,244,19,36,74,127,109,103,90,81,68,72,85,166,132,81,39,47,45,35,33,31,225,221,205,183,167,129,11,113,183,208,222,7,240,223,227,252,227,11,10,3,238,249,11,242,137,190,159,12,0,247,239,254,254,195,92,42,204,211,206,219,215,199,156,127,30,22,250,162,124,219,34,27,11,10,242,205,229,42,46,42,5,22,52,52,49,56,47,253,234,204,183,148,183,178,126,141,85,9,251,242,247,243,12,12,32,62,77,53,30,20,40,41,36,25,19,15,21,19,251,9,208,240,221,2,3,3,30,63,85,107,114,113,134,112,66,70,113,141,171,215,210,248,214,103,78,75,58,19,38,4,250,232,197,156,180,57,46,22,0,248,251,229,244,248,242,230,239,241,213,163,152,145,155,203,206,193,0,158,235,1,7,7,12,22,245,244,0,254,162,156,188,223,254,11,251,243,239,227,229,213,136,168,120,96,109,165,217,222,244,187,154,118,138,200,203,249,32,24,17,19,21,5,251,5,3,252,2,6,9,1,206,240,12,255,243,250,106,178,208,160,147,195,170,166,162,142,133,114,154,116,138,189,152,119,94,193,179,127,107,168,130,32,31,30,28,37,38,37,48,108,126,100,117,70,33,29,47,40,54,41,32,252,2,245,5,234,225,208,237,6,2,14,11,22,19,10,255,17,22,30,212,207,228,61,160,219,252,251,201,201,170,241,249,10,114,60,47,91,130,85,49,39,36,112,76,30,22,0,36,3,4,254,33,23,12,254,251,14,43,22,44,17,253,252,243,243,7,1,200,189,211,9,45,86,73,10,252,8,16,7,0,17,15,15,18,24,41,41,41,30,11,245,92,72,73,158,125,106,91,127,118,58,117,109,98,122,149,118,92,86,72,45,58,72,86,52,40,62,58,26,102,151,182,147,77,14,2,11,27,3,161,128,156,178,130,33,53,54,63,23,169,97,72,70,230,236,255,3,254,40,48,92,5,254,1,19,13,11,255,253,6,233,20,92,119,61,14,252,2,71,121,137,201,228,242,214,227,2,45,24,26,9,254,218,217,207,183,100,63,44,59,100,201,243,238,237,244,253,62,94,196,209,192,44,183,210,210,192,109,17,21,16,117,98,107,145,66,82,63,162,243,8,2,241,19,11,20,7,9,16,18,11,26,253,10,4,247,229,244,238,234,158,78,65,98,79,69,40,47,184,172,183,142,112,231,3,255,12,8,4,255,243,227,226,251,14,200,224,53,36,249,12,7,45,7,9,225,230,252,45,60,81,90,65,228,238,252,45,146,232,246,2,38,72,108,65,77,58,56,68,63,83,234,246,4,17,26,226,213,195,213,221,254,222,224,23,47,71,163,243,89,141,103,31,20,13,6,12,10,255,242,85,106,117,67,136,176,204,143,82,137,68,54,54,99,122,102,13,243,236,240,17,16,39,99,18,250,242,7,34,30,205,204,219,213,222,230,244,12,24,23,5,219,16,253,247,244,13,10,23,49,34,225,228,232,17,23,105,149,147,126,108,87,176,1,31,21,12,17,245,51,1,253,241,235,18,89,139,143,126,250,226,177,246,128,81,44,26,19,12,253,216,152,39,68,61,65,35,8,51,30,24,34,8,129,41,26,253,19,14,18,249,221,211,230,3,243,239,225,227,251,161,180,254,248,255,254,7,222,227,172,122,98,136,101,99,155,223,8,27,12,247,248,37,23,13,30,43,38,67,56,8,37,73,62,70,114,145,120,129,153,209,254,2,248,251,82,207,161,75,57,189,188,146,168,139,96,60,255,11,25,22,10,3,1,224,198,59,38,12,28,46,67,128,90,60,117,227,68,130,179,214,247,250,0,18,13,216,8,248,21,30,17,9,74,1,211,201,159,189,146,219,249,237,195,207,99,58,40,1,237,255,251,243,178,147,120,94,98,21,206,6,19,239,242,21,130,173,227,20,47,64,131,125,31,32,56,53,40,42,195,31,1,31,61,78,78,66,67,94,117,186,203,187,14,231,215,209,225,218,209,236,10,24,40,81,143,84,87,54,76,60,73,68,20,25,92,82,106,117,36,26,16,31,56,206,33,33,95,95,125,157,218,236,10,10,19,22,59,44,33,20,7,37,65,26,13,251,4,45,47,47,52,255,192,160,129,118,145,194,184,194,223,154,208,228,23,14,253,240,208,122,29,230,25,7,4,19,15,40,65,175,198,161,135,113,111,57,52,47,98,68,33,38,29,119,127,112,245,234,217,243,17,44,241,207,222,39,3,10,4,223,244,253,0,244,230,251,186,169,184,7,18,7,67,116,136,20,17,14,172,124,135,249,9,13,5,242,238,70,42,53,94,19,17,11,2,0,1,8,6,18,254,143,145,2,239,192,202,170,104,76,215,130,22,231,242,249,1,14,219,5,32,29,27,15,33,63,201,179,252,203,200,17,16,29,15,17,44,239,36,169,217,147,4,33,142,100,105,124,102,8,189,95,117,147,20,43,50,36,14,172,136,162,153,90,22,225,223,34,237,221,209,218,21,56,39,25,12,27,43,250,253,204,111,53,9,255,234,246,35,228,183,27,23,35,52,249,21,38,24,7,248,12,40,79,121,135,70,73,65,153,241,5,20,3,21,25,5,0,26,28,130,124,76,43,46,33,15,39,40,46,6,253,3,193,247,223,241,216,250,252,231,67,44,19,24,18,50,177,33,8,106,164,250,8,6,233,239,47,26,27,128,12,241,13,251,240,135,120,81,24,70,103,86,109,100,144,193,246,179,192,203,182,153,18,9,9,18,35,76,47,225,241,40,0,13,15,254,178,188,199,230,226,229,235,90,12,18,33,26,7,12,19,234,205,189,171,189,244,215,168,241,245,16,47,138,81,90,104,3,12,232,172,199,170,147,79,111,219,52,70,72,50,61,81,240,205,206,2,106,178,168,207,92,58,21,8,13,18,31,15,189,155,46,71,64,14,33,77,6,19,239,224,239,255,138,177,119,247,152,17,29,150,58,42,59,41,74,58,37,35,26,246,157,3,216,227,246,88,136,59,55,107,97,71,20,61,33,29,234,207,26,160,177,172,139,49,51,132,234,89,108,33,202,201,9,26,14,9,35,124,118,24,225,236,244,36,55,52,140,47,13,13,229,248,255,250,13,36,26,17,236,200,250,56,3,2,31,60,21,73,72,82,164,254,238,199,34,29,90,102,66,81,238,248,177,161,60,15,248,238,247,24,161,200,52,211,12,31,80,57,154,248,10,6,32,21,3,235,229,31,132,9,9,98,102,248,150,160,73,6,201,224,41,63,67,15,52,27,197,200,201,142,36,21,57,76,82,71,2,249,18,229,51,128,119,4,254,251,19,29,13,42,236,16,236,66,15,178,247,211,91,115,111,77,57,10,134,236,34,40,220,230,1,63,97,206,2,214,235,213,251,4,46,44,50,49,30,23,221,0,14,63,97,181,21,82,113,134,144,255,6,8,24,23,20,18,209,169,80,98,116,180,170,153,70,45,14,15,22,31,41,5,244,54,47,45,52,254,253,241,24,142,27,117,137,151,11,39,17,9,14,177,200,200,43,33,20,37,24,11,23,35,244,13,46,9,14,241,244,8,32,51,46,234,16,23,30,96,17,60,127,30,16,48,45,54,63,65,190,180,152,207,229,219,233,222,136,237,249,8,116,181,185,36,28,17,40,74,81,10,235,163,217,43,49,32,17,4,250,37,11,26,242,8,244,39,103,132,143,150,136,236,54,31,219,186,114,105,69,34,7,251,6,213,204,185,225,165,200,216,11,8,18,248,92,181,9,16,243,231,248,154,185,123,74,242,11,8,237,141,161,121,221,172,143,13,24,23,2,30,31,55,77,31,253,17,10,167,207,140,38,242,224,243,246,15,193,120,161,17,19,121,84,218,2,6,225,125,41,13,23,7,229,23,1,213,245,244,212,233,216,133,113,64,39,46,221,38,81,66,62,253,16,192,226,2,51,52,95,29,214,185,86,221,42,89,5,38,46,68,37,44,43,59,248,237,222,171,63,59,52,35,4,1,224,216,168,25,33,34,29,32,221,40,38,75,220,26,74,181,105,32,7,245,247,142,59,110,198,49,162,56,23,51,17,17,194,151,224,21,180,168,69,62,109,176,222,64,93,121,73,177,118,255,253,48,61,56,9,185,41,9,254,196,43,42,136,33,41,33,216,194,169,29,14,0,32,32,30,65,128,120,144,101,39,241,127,15,64,240,248,124,40,119,226,2,118,173,100,41,39,166,15,21,37,9,60,24,239,166,139,7,235,142,88,39,}
 
saverlist savers
 
EX ld bounded_mine_percentage = 0.1
 
EX int bounded_mine_quantity
 
EX int bounded_mine_max
 
const EX char * conffile = "hyperrogue.ini"
 
EX array< ld, gGUARD > sightranges
 
EX videopar vid
 
EX int default_language
 
EX bool autojoy = true
 
unsigned int skincolors [] = { 7, 0xD0D0D0FF, 0xEFD0C9FF, 0xC77A58FF, 0xA58869FF, 0x602010FF, 0xFFDCB1FF, 0xEDE4C8FF }
 
unsigned int haircolors [] = { 8, 0x686868FF, 0x8C684AFF, 0xF2E1AEFF, 0xB55239FF, 0xFFFFFFFF, 0x804000FF, 0x502810FF, 0x301800FF }
 
unsigned int dresscolors [] = { 6, 0xC00000FF, 0x00C000FF, 0x0000C0FF, 0xC0C000FF, 0xC0C0C0FF, 0x202020FF }
 
unsigned int dresscolors2 [] = { 7, 0x8080FFC0, 0x80FF80C0, 0xFF8080C0, 0xFFFF80C0, 0xFF80FFC0, 0x80FFFFC0, 0xFFFFFF80 }
 
unsigned int swordcolors [] = { 6, 0xC0C0C0FF, 0xFFFFFFFF, 0xFFC0C0FF, 0xC0C0FFFF, 0x808080FF, 0x202020FF }
 
unsigned int eyecolors [] = { 4, 0x00C000FF, 0x0000C0FF, 0xC00000FF, 0xC0C000FF, 0x804010FF, 0x00C000FF }
 
EX purehookset hooks_configfile
 
map< string, shared_ptr< supersaver > > allconfigs
 
double cc_footphase
 
int lmousex
 
int lmousey
 
auto ah_config = addHook(hooks_args, 0, read_config_args) + addHook(hooks_args, 0, read_gamemode_args) + addHook(hooks_args, 0, read_color_args)
 
EX unordered_map< string, ld & > params
 
EX int frames
 
EX bool outoffocus = false
 
EX int mousex
 
EX int mousey
 
EX hyperpoint mouseh
 
EX hyperpoint mouseoh
 
EX bool leftclick
 
EX bool rightclick
 
EX bool targetclick
 
EX bool hiliteclick
 
EX bool anyshiftclick
 
EX bool wheelclick
 
EX bool forcetarget
 
EX bool lshiftclick
 
EX bool lctrlclick
 
EX bool numlock_on
 
EX bool gtouched
 
EX bool holdmouse
 
EX int getcstat
 
EX int lgetcstat
 
EX ld getcshift
 
EX bool inslider
 
EX function< void(int sym, int uni)> keyhandler = [] (int sym, int uni) {}
 
EX function< bool(SDL_Event &ev)> joyhandler = [] (SDL_Event &ev) {return false;}
 
EX bool mousing = true
 
EX bool mousepressed = false
 
EX bool mousemoved = false
 
EX bool actonrelease = false
 
EX bool mousepan
 
EX bool oldmousepan
 
EX ld mouseaim_x
 
EX ld mouseaim_y
 
EX ld mouseaim_sensitivity = 0.01
 
EX int timetowait
 
EX int joyx
 
EX int joyy
 
EX int panjoyx
 
EX int panjoyy
 
EX movedir joydir
 
EX movedir mousedest
 
EX ld shiftmul = 1
 
EX cellmouseover
 
EX cellmouseover2
 
EX celllmouseover
 
EX ld modist
 
EX ld modist2
 
EX int lastt
 
EX SDL_Joystick * sticks [8]
 
EX int numsticks
 
int joytime
 
EX bool joy_ignore_next = false
 
EX bool quitmainloop = false
 
EX bool didsomething
 
EX bool smooth_scrolling = false
 
EX purehookset hooks_fixticks
 
EX bool need_mouseh = false
 
int cframelimit = 1000
 
int lastframe
 
EX int steplimit = 0
 
EX int cstep
 
EX bool buggyGeneration = false
 
EX vector< cell * > buggycells
 
bool errorReported = false
 
EX eLand cheatdest
 
EX vector< pair< cellwalker, int > > drawbugs
 
bool debugmode = false
 
int bitfield_v
 
auto ah_cheat = addHook(hooks_args, 0, read_cheat_args)
 
EX bool ldebug = false
 
const EX char * COLORBAR = "###"
 
bool fatborder
 
EX color_t poly_outline
 
EX vector< unique_ptr< drawqueueitem > > ptds
 
EX color_t text_color
 
EX int text_shift
 
EX GLuint text_texture
 
EX int texts_merged
 
EX int shapes_merged
 
SDL_Surface * aux
 
EX vector< glvertex > glcoords
 
EX int spherespecial
 
EX int spherephase
 
int polyi
 
EX int polyx [POLYMAX]
 
EX int polyxr [POLYMAX]
 
EX int polyy [POLYMAX]
 
int poly_flags
 
bool last_infront
 
bool knowgood
 
hyperpoint goodpoint
 
vector< pair< int, hyperpoint > > tofix
 
hyperpoint Hlast
 
EX int global_projection
 
int min_slr
 
int max_slr = 0
 
bool in_twopoint = false
 
glvertex junk = glhr::makevertex(0,0,1)
 
vector< glvertex > prettylinepoints
 
vector< glvertex > curvedata
 
int curvestart = 0
 
bool keep_curvedata = false
 
EX ld backbrightness = .25
 
purehookset hook_drawqueue
 
constexpr int PMAX = int(PPR::MAX)
 
int qp [PMAX]
 
int qp0 [PMAX]
 
EX int neon_mode = 0
 
EX flagtype havewhat
 
EX flagtype hadwhat
 
EX vector< cell * > worms
 
EX vector< cell * > ivies
 
EX vector< cell * > ghosts
 
EX vector< cell * > golems
 
EX vector< cell * > hexsnakes
 
vector< pair< cell *, eMonster > > tempmonsters
 
EX vector< int > reachedfrom
 
EX int first7
 
EX vector< cell * > dcal
 
EX vector< cell * > pathq
 
EX int statuecount
 
EX int wetslime
 
EX vector< cell * > pathqm
 
EX set< int > snaketypes
 
EX int gamerange_bonus = 0
 
EX cellpd_from
 
EX int pd_range
 
EX int pathlock = 0
 
ld growth
 
string dfnames [3] = { "player", "start", "land" }
 
eDistanceFrom distance_from = dfPlayer
 
string ncnames [4] = { "NO", "distance", "type", "debug" }
 
eNumberCoding number_coding = ncDistance
 
int position
 
EX bool viewdists = false
 
EX bool use_color_codes = true
 
EX bool use_analyzer = true
 
EX bool show_distance_lists = true
 
int first_distance = 0
 
int scrolltime = 0
 
bool scrolling_distances = false
 
EX map< int, color_t > expcolors
 
const int scrollspeed = 100
 
bool not_only_descendants = false
 
int expansion_hook = addHook(hooks_handleKey, 0, expansion_handleKey)
 
auto ea_hook = addHook(hooks_args, 100, expansion_readArgs)
 
EX expansion_analyzer expansion
 
EX int sibling_limit = 0
 
transmatrix Orient = Id
 
int lasttick = 0
 
int gdpos = 0
 
char action
 
qfloorinfo qfi
 
EX vector< basic_textureinfofloor_texture_vertices
 
EX vector< glvertex > floor_texture_map
 
matrixlist hex_matrices
 
matrixlist hept_matrices
 
int nsym0
 
EX bool floorshape_debug
 
auto floor_hook
 
const int FLOORTEXTURESIZE = 4096
 
EX std::mt19937 hrngen
 
EX int lastsafety
 
EX bool usedSafety = false
 
EX eLand safetyland
 
EX int safetyseed
 
EX bool childbug = false
 
EX vector< cell * > crush_now
 
EX vector< cell * > crush_next
 
EX cellwalker recallCell
 
EX display_data recallDisplay
 
EX eMonster passive_switch = moSwitch2
 
int eupage = 0
 
int euperpage = 21
 
string euchelp
 
EX string bitruncnames [5] = {" (b)", " (n)", " (g)", " (i)", " (d)"}
 
EX bool showquotients
 
string validclasses [4] = {" (X)", " (½)", "", " (!)"}
 
EX geometry_filtercurrent_filter
 
EX geometry_filter gf_hyperbolic = {"hyperbolic", [] { return (arcm::in() || arb::in() || hyperbolic) && !forced_quotient(); }}
 
EX geometry_filter gf_spherical = {"spherical", [] { return (arcm::in() || arb::in() || sphere) && !forced_quotient(); }}
 
EX geometry_filter gf_euclidean = {"Euclidean", [] { return (arcm::in() || arb::in() || euclid) && !forced_quotient(); }}
 
EX geometry_filter gf_other = {"non-isotropic", [] { return prod || nonisotropic; }}
 
EX geometry_filter gf_regular_2d
 
EX geometry_filter gf_regular_3d
 
EX geometry_filter gf_quotient
 
vector< geometry_filter * > available_filters = { &gf_hyperbolic, &gf_spherical, &gf_euclidean, &gf_other, &gf_regular_2d, &gf_regular_3d, &gf_quotient }
 
auto ah_geom = addHook(hooks_args, 0, read_geom_args)
 
int usershape_changes
 
vector< hpcshapeshPlainWall3D
 
vector< hpcshapeshWireframe3D
 
vector< hpcshapeshWall3D
 
vector< hpcshapeshMiniWall3D
 
vector< ld > equal_weights
 
EX purehookset hooks_swapdim
 
EX geometry_informationcgip
 
EX map< string, geometry_informationcgis
 
EX int last_texture_step
 
int ntimestamp
 
auto ah_clear_geo = addHook(hooks_clear_cache, 0, clear_cgis)
 
EX bool approx_nearcorner = false
 
EX vector< glhr::textured_vertextext_vertices
 
EX int last_firelimit
 
EX int firelimit
 
EX int inmirrorcount = 0
 
EX bool wallopt
 
EX bool spatial_graphics
 
EX bool wmspatial
 
EX bool wmescher
 
EX bool wmplain
 
EX bool wmblack
 
EX bool wmascii
 
EX bool wmascii3
 
EX bool mmspatial
 
EX bool mmhigh
 
EX bool mmmon
 
EX bool mmitem
 
EX int detaillevel = 0
 
EX bool first_cell_to_draw = true
 
EX hookset< bool(int sym, int uni)> * hooks_handleKey
 
EX hookset< bool(cell *c, const transmatrix &V)> * hooks_drawcell
 
EX purehookset hooks_frame
 
EX purehookset hooks_markers
 
EX ld animation_factor = 1
 
EX int animation_lcm = 0
 
int colorbar
 
EX bool inHighQual
 
EX bool auraNOGL
 
int axestate
 
EX int ticks
 
EX int frameid
 
EX bool camelotcheat
 
EX bool nomap
 
EX eItem orbToTarget
 
EX eMonster monsterToSummon
 
EX int sightrange_bonus = 0
 
EX string mouseovers
 
EX int darken = 0
 
map< cell *, fallanimfallanims
 
int dlit
 
EX int lightat
 
EX int safetyat
 
EX bool ivoryz
 
EX bool noshadow
 
color_t skincolor = 0xD0C080FF
 
EX transmatrix playerV
 
int last_wormsegment = -1
 
vector< vector< function< void()> > > wormsegments
 
EX bool dont_face_pc = false
 
array< array< int, 4 >, AURA+1 > aurac
 
int haveaura_cached
 
vector< pair< int, int > > auraspecials
 
int auramemo
 
vector< glhr::colored_vertexauravertices
 
EX colortable minecolors
 
EX colortable distcolors
 
const char * minetexts [8]
 
EX colortable nestcolors = { 0x800000, 0x008000, 0x000080, 0x404040, 0x700070, 0x007070, 0x707000, 0x606060 }
 
EX color_t stdgridcolor = 0x202020FF
 
EX bool bright
 
EX bool just_gmatrix
 
vector< hyperpointclipping_planes
 
EX int noclipped
 
EX ld precise_width = .5
 
int grid_depth = 0
 
EX bool fat_edges = false
 
vector< flashdataflashes
 
always_false static_bubbles
 
EX purehookset hooks_drawmap
 
EX transmatrix actual_view_transform
 
EX transmatrix Viewbase
 
EX bool no_wall_rendering
 
EX bool dronemode
 
purehookset hooks_calcparam
 
EX int corner_centering
 
EX bool permaside
 
function< void()> wrap_drawfullmap = drawfullmap
 
bool force_sphere_outline = false
 
EX bool nohelp
 
EX vector< function< void()> > screens = { normalscreen }
 
EX int cmode
 
auto graphcm
 
EX array< map< cell *, animation >, ANIMLAYERS > animations
 
vector< pair< cell *, animation > > animstack
 
auto hooksw = addHook(hooks_swapdim, 100, [] { clearAnimations(); gmatrix.clear(); gmatrix0.clear(); current_display->all_drawn_copies.clear(); })
 
EX string help
 
EX function< void()> help_delegate
 
EX vector< help_extensionhelp_extensions
 
vector< string > extra_keys
 
string hyperstone_optional = "Completing the quest in this land is not necessary for the Hyperstone Quest."
 
string power_help
 
EX bool instat
 
reaction_t helpgenerator
 
unsigned char lastval
 
int windtotal
 
EX hookset< void(cell *)> * hooks_mouseover
 
EX hookset< bool()> * hooks_default_help
 
int heptacount = 0
 
int recsteps
 
EX hookset< void(heptagon *, int)> * hooks_createStep
 
EX FILE * debugfile
 
EX int debugflags = DF_INIT | DF_ERROR | DF_WARN | DF_MSG | DF_TIME | DF_LOG
 
EX string s0
 
map< void *, int > pointer_indices
 
logger hlog
 
EX purehookset hooks_stats
 
EX eGlyphsortorder glyphsortorder
 
int zero = 0
 
const int glyphs = ittypes + motypes
 
int gfirsttime [glyphs]
 
int glasttime [glyphs]
 
int gcopy [glyphs]
 
int ikland [glyphs]
 
int glyphorder [glyphs]
 
int glyphphase [glyphs]
 
int glyph_lastticks
 
int glyphsortkey = 0
 
EX bool nohud
 
EX bool nomenukey
 
EX hookset< bool()> * hooks_prestats
 
EX bool nofps = false
 
EX color_t crosshair_color = 0xFFFFFFC0
 
EX ld crosshair_size = 0
 
EX bool long_kills
 
EX hookset< bool(int argc, char **argv)> * hooks_main
 
int andmode
 
bool longclick
 
bool useRangedOrb
 
int emeraldtable [100][7]
 
constexpr hyperpoint Hypc = hyperpoint(0, 0, 0, 0)
 
constexpr transmatrix Id = diag(1,1,1,1)
 
constexpr transmatrix Zero = diag(0,0,0,0)
 
constexpr transmatrix Mirror = diag(1,-1,1,1)
 
constexpr transmatrix MirrorY = diag(1,-1,1,1)
 
constexpr transmatrix MirrorX = diag(-1,1,1,1)
 
constexpr transmatrix MirrorZ = diag(1,1,-1,1)
 
constexpr transmatrix pispin = diag(-1,-1,1,1)
 
constexpr transmatrix centralsym = diag(-1,-1,-1,-1)
 
constexpr hyperpoint C02 = hyperpoint(0,0,1,0)
 
constexpr hyperpoint C03 = hyperpoint(0,0,0,1)
 
constexpr hyperpoint Cx12 = hyperpoint(1,0,1.41421356237,0)
 
constexpr hyperpoint Cx13 = hyperpoint(1,0,0,1.41421356237)
 
const char * wheresounds
 
bool demoanim
 
int bak_xres
 
int bak_yres
 
ld ghx
 
ld ghy
 
ld ghgx
 
ld ghgy
 
hyperpoint ghpm = C0
 
int twopoint_sphere_flips
 
bool twopoint_do_flips
 
EX transmatrix sphereflip
 
EX bool playerfound
 
vector< tuple< heptspin, hstate, transmatrix, ld > > drawn_cells
 
bool in_multi = false
 
EX int cells_drawn
 
EX int cells_generated
 
EX color_t periodcolor = 0x00FF0080
 
EX color_t ringcolor = darkena(0xFF, 0, 0xFF)
 
EX color_t modelcolor = 0
 
EX ld band_shift = 0
 
EX ld extra_generation_distance = 99
 
EX bool fixseed = false
 
EX int startseed = 0
 
EX eLand firstland0
 
EX int currentLocalTreasure
 
EX array< int, ittypes > items
 
EX map< modecode_t, array< int, ittypes > > hiitems
 
EX int explore [10]
 
EX int exploreland [10][landtypes]
 
EX int landcount [landtypes]
 
EX bool safety = false
 
EX eLand lastland
 
EX int lastexplore
 
EX bool randomPatternsMode = false
 
EX int randompattern [landtypes]
 
EX int genrange_bonus = 0
 
EX bool chaosUnlocked = false
 
EX bool chaosAchieved = false
 
EX bool reptilecheat = false
 
EX eLand firstland = laIce
 
EX eLand specialland = laIce
 
EX int chaosmode = 0
 
EX hookset< eLand(eLand)> * hooks_nextland
 
EX vector< eLand > land_over
 
EX vector< eLand > landlist
 
EX int old_daily_id = 1000000
 
const int landscapes_when = 177
 
const EX int frog_when = 205
 
set< string > warnshown
 
constexpr int global_distance_limit = 32000
 
constexpr int iteration_limit = 10000000
 
constexpr int STRONGWIND = 99
 
constexpr int FALL = 98
 
constexpr int NO_SPACE = 97
 
constexpr int TELEPORT = 96
 
constexpr int JUMP = 95
 
EX string levelfile = "hyperrogue.lev"
 
const EX char * loadlevel = NULL
 
EX string picfile = "hyperrogue.pic"
 
auto ah_editor = addHook(hooks_args, 0, read_editor_args)
 
EX eGravity gravity_state
 
EX eGravity last_gravity_state
 
int tidalphase
 
EX int tidalsize
 
EX int tide [200]
 
EX bool recalcTide
 
int numgates = 0
 
EX ld whatever [16]
 
EX int whateveri [16]
 
EX bool showstartmenu
 
int daily_mode
 
EX hookset< named_functionality()> * hooks_o_key
 
EX int messagelogpos
 
EX int timeformat
 
EX int stampbase
 
auto ah_menu = addHook(hooks_args, 0, read_menu_args)
 
EX int avengers
 
EX int mirrorspirits
 
EX int wandering_jiangshi
 
EX int jiangshi_on_screen
 
EX bool timerghost = true
 
EX bool gen_wandering = true
 
EX int turncount
 
EX int mutantphase
 
EX int sagephase = 0
 
EX vector< cell * > targets
 
grow_vector< vector< cell * > > movesofgood
 
EX vector< pair< cell *, int > > butterflies
 
bool sagefresh = true
 
vector< int > global_posdir
 
EX bool quantum
 
vector< cell * > gendfs
 
int targetcount
 
vector< cell * > hexdfs
 
EX vector< array< cell *, MAXPLAYER > > shpos
 
EX int cshpos = 0
 
EX celllastmountpos [MAXPLAYER]
 
EX hookset< void(gamedata *)> * hooks_gamedata
 
EX vector< orbinfoorbinfos
 
EX string olrDescriptions []
 
cellwalker cwt
 
EX bool orbused [ittypes]
 
EX bool lastorbused [ittypes]
 
EX vector< pair< cell *, int > > airmap
 
EX int rosewave
 
EX int rosephase
 
EX map< cell *, int > rosemap
 
int elhextable [28][3]
 
EX map< char, colortablecolortables
 
auto ah_pattern = addHook(hooks_args, 0, read_pattern_args) + addHook(clearmemory, 100, [] { patterns::computed_nearer_map.clear(); patterns::computed_furthest_map.clear(); })
 
int fiftytable [480][7]
 
int zebratable [12][7]
 
EX int zebratable6 [28][3]
 
EX bool keepLightning = false
 
EX bool seenSevenMines = false
 
EX bool hauntedWarning
 
EX bool survivalist
 
EX bool invismove = false
 
EX bool invisfish = false
 
EX bool flipplayer = true
 
EX bool playermoved = true
 
EX int cheater = 0
 
EX bool landvisited [landtypes]
 
EX int noiseuntil
 
eLastmovetype lastmovetype
 
eLastmovetype nextmovetype
 
eForcemovetype forcedmovetype
 
EX celllastmove
 
EX cellglobal_pushto
 
EX changes_t changes
 
EX int plague_kills
 
bool got_crossroads
 
EX vector< long double > polydata
 
EX function< void()> cancel = noaction
 
EX hint hints []
 
EX int hinttoshow
 
EX vector< radarpointradarpoints
 
EX vector< radarlineradarlines
 
EX transmatrix radar_transform
 
EX int current_rbuffer = -1
 
EX bool rug_failure = false
 
EX bool memory_saving_mode = true
 
EX bool show_memory_warning = true
 
EX bool ignored_memory_warning
 
EX heptagonlast_cleared
 
EX vector< cell * > removed_cells
 
EX purehookset hooks_removecells
 
EX int reserve_count = 0
 
EX int reserve_limit = 128
 
const int max_reserve = 4096
 
array< reserve_block *, max_reserve > reserve
 
std::new_handler default_handler
 
EX purehookset hooks_clear_cache
 
bool hide_hud = true
 
EX ld levellines
 
EX bool disable_texture
 
constexpr flagtype GF_TEXTURE = 1
 
constexpr flagtype GF_VARCOLOR = 2
 
constexpr flagtype GF_LIGHTFOG = 4
 
constexpr flagtype GF_LEVELS = 8
 
constexpr flagtype GF_which = 15
 
constexpr flagtype SF_PERS3 = 256
 
constexpr flagtype SF_BAND = 512
 
constexpr flagtype SF_USE_ALPHA = 1024
 
constexpr flagtype SF_DIRECT = 2048
 
constexpr flagtype SF_PIXELS = 4096
 
constexpr flagtype SF_HALFPLANE = 8192
 
constexpr flagtype SF_ORIENT = 16384
 
constexpr flagtype SF_BOX = 32768
 
constexpr flagtype SF_ZFOG = 65536
 
constexpr flagtype SF_ODSBOX = (1<<17)
 
constexpr int aPosition = 0
 
constexpr int aColor = 3
 
constexpr int aTexture = 8
 
constexpr int INVERSE_EXP_BINDING = 2
 
EX map< string, shared_ptr< glhr::GLprogram > > compiled_programs
 
EX map< unsigned, shared_ptr< glhr::GLprogram > > matched_programs
 
EX ld camera_level
 
EX struct dqi_skysky
 
const EX char * musicfile = ""
 
EX bool audio
 
EX string musiclicense
 
EX string musfname [landtypes]
 
EX int musicvolume = 60
 
EX int effvolume = 60
 
EX vector< int > siblings
 
EX bool game_active
 
EX bool cblind
 
EX bool autocheat
 
EX eWall canvas_default_wall = waNone
 
EX int truelotus
 
EX int gamecount
 
EX int asteroids_generated
 
EX int asteroid_orbs_generated
 
EX time_t timerstart
 
EX time_t savetime
 
EX bool timerstopped
 
EX int savecount
 
EX bool showoff = false
 
EX bool doCross = false
 
EX bool gamegen_failure
 
EX eLand top_land
 
EX hookset< bool()> * hooks_welcome_message
 
int trailer_cash0 = 5
 
int trailer_cash1 = 15
 
bool trailer_safety = true
 
EX hookset< void()> * hooks_initgame
 
bool havesave = true
 
EX int savebox [MAXBOX]
 
EX int boxid
 
EX bool saving
 
EX bool loading
 
EX bool loadingHi
 
EX string boxname [MAXBOX]
 
EX bool fakebox [MAXBOX]
 
EX bool monsbox [MAXBOX]
 
vector< eItem > invorb
 
long long saveposition = -1
 
EX purehookset on_geometry_change
 
EX purehookset clearmemory
 
EX purehookset final_cleanup
 
auto cgm
 
EX array< map< int, usershape * >, mapeditor::USERSHAPEGROUPS > usershapes
 
EX basic_textureinfo user_triangles_texture
 
EX purehookset hooks_tests
 
int modecodetable [42][6]
 
auto ah = addHook(hooks_args, 0, read_mode_args)
 

Detailed Description

the main namespace of HyperRogue

Typedef Documentation

◆ heptspin

abbreviations

Function Documentation

◆ psmin()

hyperpoint hr::psmin ( hyperpoint  H)

res[0] and res[1] place H on the plane, while res[2] is the altitude

◆ wrongMode()

EX bool hr::wrongMode ( char  flags)

Returns true if the given achievement cannot be obtained in the current mode.

Parameters
flagsMode requested by the achievement.

◆ achievement_gain()

void hr::achievement_gain ( const char *  s,
char flags   IS
)

gain the given achievement.

Parameters
sname of the achievement, e.g., DIAMOND1
flagsone of the constants from namespace rg. The achievement is only awarded if special modes are matched exactly.

◆ achievement_count()

EX void hr::achievement_count ( const string &  s,
int  current,
int  prev 
)

This function awards 'counting' achievements, such as kill 10 monsters at the same time.

Parameters
sname of the group of achievements, e.g. GOLEM.
currentour score, e.g., the the achievement GOLEM2 will be awared with current >= 5.
prevprevious value of the score.

◆ achievement_final()

EX void hr::achievement_final ( bool  really_final)

gain the final achievements.

Parameters
reallyfalse: the user is simply looking at the score; true: the game really ended.

◆ achievement_victory()

EX void hr::achievement_victory ( bool  hyper)

gain the victory achievements.

Parameters
hypertrue for the Hyperstone victory, and false for the Orb of Yendor victory.

◆ achievement_pump()

void hr::achievement_pump ( )

call the achievement callbacks

◆ achievement_display()

EX void hr::achievement_display ( )

display the last achievement gained.

◆ hasbardir()

EX bool hr::hasbardir ( cell c)

return true if the cell c is not allowed to generate barriers because of other large things already existing nearby.

◆ warped_version()

EX bool hr::warped_version ( eLand  l1,
eLand  l2 
)

warp coasts use a different algorithm for nowall barriers when has_nice_dual() is on. Check whether we should use this different algorithm when the lands are l1 and l2

◆ horo_ok()

EX bool hr::horo_ok ( )

should we generate the horocycles in the current geometry?

◆ temple_layer_size()

EX int hr::temple_layer_size ( )

the distance between two layers of Temple of Cthulhu

◆ createMov()

struct cell * hr::createMov ( cell c,
int  d 
)

very similar to createMove in heptagon.cpp

◆ initcells()

EX void hr::initcells ( )

create a map in the current geometry

◆ updir()

EX int hr::updir ( heptagon h)

direction upwards in the tree

◆ updir_alt()

EX int hr::updir_alt ( heptagon h)

direction upwards in the alt-tree

◆ showCheatMenu()

EX void hr::showCheatMenu ( )

show the cheat menu

◆ viewall()

EX void hr::viewall ( )

view all the monsters and items

◆ modalDebug()

EX void hr::modalDebug ( cell c)

launch a debugging screen, and continue normal working only after this screen is closed

◆ bfs()

EX void hr::bfs ( )

calculate cpdist, 'have' flags, and do general fixings

◆ hyperbolic_celldistance()

EX int hr::hyperbolic_celldistance ( cell c1,
cell c2 
)

An algorithm for computing distance between two cells. This algorithm runs correctly in O(d) assuming that:

  • distances from the origin are known
  • the set of cells in distance d from the origin forms a cycle
  • the map is Gromov hyperbolic (with sibling_limit computed correctly) and planar
  • all vertices have valence <= 4
  • each vertex has at most two parents

◆ frog_power()

EX eItem hr::frog_power ( eMonster  m)

Determine the power of a frog monster. Also used to determine whether monster is a frog.

◆ do_not_touch_this_wall()

EX bool hr::do_not_touch_this_wall ( cell c)

changing this wall for whatever reason may cause the game to crash

◆ ensure_vertex_number() [1/2]

EX void hr::ensure_vertex_number ( basic_textureinfo bti,
int  qty 
)

copy the texture vertices so that there are at least qty of them

◆ ensure_vertex_number() [2/2]

EX void hr::ensure_vertex_number ( hpcshape sh)

ensure_vertex_number for a hpcshape

◆ shrand()

EX void hr::shrand ( int  i)

initialize hrngen

◆ hrandpos()

EX int hr::hrandpos ( )

generate a large number with hrngen

◆ hrand()

int hr::hrand ( int  i)

A random integer from [0..i), generated from hrngen. We are using our own implementations rather than ones from <random>, to make sure that they return the same values on different compilers.

◆ hrandf()

EX ld hr::hrandf ( )

Use hrngen to generate a floating point number between 0 and 1.

◆ hrandstate()

EX int hr::hrandstate ( )

Returns an integer corresponding to the current state of hrngen.

◆ isChild()

EX bool hr::isChild ( cell w,
cell killed 
)

Is w killed if the part of an ivy killed is killed?

◆ sameMonster()

EX bool hr::sameMonster ( cell c1,
cell c2 
)

currently works for worms only

◆ same_tiling()

bool hr::same_tiling ( eGeometry  g2)

is g2 the same tiling as the current geometry (geometry)?

◆ relative_matrix_recursive()

EX transmatrix hr::relative_matrix_recursive ( heptagon h2,
heptagon h1 
)

find relative_matrix via recursing the tree structure

◆ haveaura()

EX int hr::haveaura ( )

0 = no aura, 1 = standard aura, 2 = Joukowsky aura

◆ transition()

EX hstate hr::transition ( hstate  s,
int  dir 
)

the automaton is used to generate each heptagon in an unique way. See http://roguetemple.com/z/dev.php for more help. From the origin we can go further in any direction, and from other heptagons we can go in directions 3 and 4 (0 is back to origin, so 3 and 4 go forward), and sometimes in direction 5

◆ ignore()

template<class T >
void hr::ignore ( T &&  )

placate GCC's overzealous -Wunused-result

◆ among()

template<class T , class V , class... U>
bool hr::among ( x,
y 
)

Is the value of first parameter equal to one of the remaining parameters?

◆ XLAT()

EX string hr::XLAT ( string  x)

translate the string @x

◆ diag()

constexpr transmatrix hr::diag ( ld  a,
ld  b,
ld  c,
ld  d 
)
constexpr

returns a diagonal matrix

◆ edge_of_triangle_with_angles()

EX ld hr::edge_of_triangle_with_angles ( ld  alpha,
ld  beta,
ld  gamma 
)

This function returns the length of the edge opposite the angle alpha in a triangle with angles alpha, beta, gamma. This is called the cosine rule, and of course works only in non-Euclidean geometry.

◆ intval()

EX ld hr::intval ( const hyperpoint h1,
const hyperpoint h2 
)

this function returns approximate square of distance between two points (in the spherical analogy, this would be the distance in the 3D space, through the interior, not on the surface) also used to verify whether a point h1 is on the hyperbolic plane by using Hypc for h2

◆ sqhypot_d()

EX ld hr::sqhypot_d ( int  d,
const hyperpoint h 
)

square Euclidean hypotenuse in the first d dimensions

◆ hypot_d()

EX ld hr::hypot_d ( int  d,
const hyperpoint h 
)

Euclidean hypotenuse in the first d dimensions

◆ normalize()

EX hyperpoint hr::normalize ( hyperpoint  H)

normalize the homogeneous coordinates

◆ normalize_flat()

EX hyperpoint hr::normalize_flat ( hyperpoint  h)

normalize, and in product geometry, also flatten

◆ mid()

EX hyperpoint hr::mid ( const hyperpoint H1,
const hyperpoint H2 
)

get the center of the line segment from H1 to H2

◆ midz()

EX hyperpoint hr::midz ( const hyperpoint H1,
const hyperpoint H2 
)

like mid, but take 3D into account

◆ cspin()

EX transmatrix hr::cspin ( int  a,
int  b,
ld  alpha 
)

rotate by alpha degrees in the coordinates a, b

◆ spin()

EX transmatrix hr::spin ( ld  alpha)

rotate by alpha degrees in the XY plane

◆ rspintoc()

EX transmatrix hr::rspintoc ( const hyperpoint H,
int  t,
int  f 
)

an Euclidean rotation in the axes (t,f) which rotates the point H to the positive 't' axis

◆ spintox()

EX transmatrix hr::spintox ( const hyperpoint H)

an isometry which takes the point H to the positive X axis

See also
rspintox

◆ rspintox()

EX transmatrix hr::rspintox ( const hyperpoint H)

inverse of hr::spintox

◆ pushxto0()

EX transmatrix hr::pushxto0 ( const hyperpoint H)

for H on the X axis, this matrix pushes H to C0

See also
gpushxto0

◆ set_column()

EX void hr::set_column ( transmatrix T,
int  i,
const hyperpoint H 
)

set the i-th column of T to H

◆ build_matrix()

EX transmatrix hr::build_matrix ( hyperpoint  h1,
hyperpoint  h2,
hyperpoint  h3,
hyperpoint  h4 
)

build a matrix using the given vectors as columns

◆ rpushxto0()

EX transmatrix hr::rpushxto0 ( const hyperpoint H)

for H on the X axis, this matrix pushes C0 to H

See also
rgpushxto0

◆ gpushxto0()

EX transmatrix hr::gpushxto0 ( const hyperpoint H)

a translation matrix which takes H to 0

◆ rgpushxto0()

EX transmatrix hr::rgpushxto0 ( const hyperpoint H)

a translation matrix which takes 0 to H

◆ det()

EX ld hr::det ( const transmatrix T)

determinant

◆ inverse_error()

void hr::inverse_error ( const transmatrix T)

warning about incorrect inverse

◆ inverse()

EX transmatrix hr::inverse ( const transmatrix T)

inverse

◆ hdist0()

EX ld hr::hdist0 ( const hyperpoint mh)

distance from mh and 0

◆ circlelength()

EX ld hr::circlelength ( ld  r)

length of a circle of radius r

◆ orthogonal_of_C0()

EX hyperpoint hr::orthogonal_of_C0 ( hyperpoint  h0,
hyperpoint  h1,
hyperpoint  h2 
)

in 3D, an orthogonal projection of C0 on the given triangle

◆ tC0()

hyperpoint hr::tC0 ( const transmatrix T)
inline

T * C0, optimized

◆ ctangent()

EX hyperpoint hr::ctangent ( int  c,
ld  x 
)

tangent vector in the given direction

◆ xtangent()

EX hyperpoint hr::xtangent ( ld  x)

tangent vector in direction X

◆ ztangent()

EX hyperpoint hr::ztangent ( ld  z)

tangent vector in direction Y

◆ tangent_length()

EX hyperpoint hr::tangent_length ( hyperpoint  dir,
ld  length 
)

change the length of the targent vector

◆ direct_exp()

EX hyperpoint hr::direct_exp ( hyperpoint  v,
int  steps 
)

exponential function: follow the geodesic given by v

◆ inverse_exp()

EX hyperpoint hr::inverse_exp ( const hyperpoint  h,
iePrecision  p,
bool just_direction   IStrue 
)

inverse exponential function

See also
hr::direct_exp

◆ flat_model()

EX eModel hr::flat_model ( )

In 3D, we use the standard translation matrices to place stuff on the screen. In 2D, this does not work (as HyperRogue reduces matrices to 3x3) so we use the native disk projection

◆ get_view_orientation()

EX transmatrix& hr::get_view_orientation ( )

get the current orientation of the view

◆ rotate_view()

EX void hr::rotate_view ( transmatrix  T)

rotate the view using the given rotation matrix

◆ get_shift_view_of()

EX transmatrix hr::get_shift_view_of ( const hyperpoint  H,
const transmatrix  V 
)

shift the view according to the given tangent vector

◆ shift_view()

EX void hr::shift_view ( hyperpoint  H)

shift the view according to the given tangent vector

◆ isNative()

EX int hr::isNative ( eLand  l,
eMonster  m 
)

returns: 2 = treasure increaser, 1 = just appears, 0 = does not appear

◆ gmod()

EX int hr::gmod ( int  i,
int  j 
)

Connection tables are used by heptagon and cell structures. They basically describe the structure of the graph on the given manifold. We assume that the class T has a field c of type connection_table<T>, as its last field. Edges are listed in the clockwise order (for 2D tilings, for 3D tilings the order is more arbitrary). For each edge we remember which other T we are connected to, as well as the index of this edge in the other T, and whether it is mirrored (for graphs on non-orientable manifolds). To conserve memory, these classes need to be allocated with tailored_alloc and freed with tailored_free.

◆ tailored_alloc()

template<class T >
T* hr::tailored_alloc ( int  degree)

Allocate a class T with a connection_table, but with only degree connections. Also set yet unknown connections to NULL.

Generating the hyperbolic world consumes lots of RAM, so we really need to be careful on low memory devices.

◆ tailored_delete()

template<class T >
void hr::tailored_delete ( T *  x)

Counterpart to tailored_alloc().

◆ chasmify()

EX void hr::chasmify ( cell c)

the 'chasmify' functions create a simulation of the path the monster came by

◆ crossroadsMonster()

EX eMonster hr::crossroadsMonster ( )

generate a monster appropriate for the Crossroads

◆ wandering()

EX void hr::wandering ( )

generate the wandering monsters

◆ moveEffect()

EX void hr::moveEffect ( const movei mi,
eMonster  m 
)

effect of moving monster m from cf to ct this is called from moveMonster, or separately from moveIvy/moveWorm, or when a dead bird falls (then m == moDeadBird)

◆ moveval()

EX int hr::moveval ( cell c1,
cell c2,
int  d,
flagtype  mf 
)

for the monster at c1, evaluation of the move to c2

Parameters
mfwhat moves are allowed

◆ stayvalue()

EX int hr::stayvalue ( eMonster  m,
cell c 
)

for an ally m at c, evaluate staying in place

◆ movevalue()

EX int hr::movevalue ( eMonster  m,
cell c,
cell c2,
flagtype  flags 
)

for an ally m at c, evaluate moving to c2

◆ moveButterflies()

EX void hr::moveButterflies ( )

note: butterflies don't use moveNormal for two reasons: 1) to make sure that they move AFTER bulls 2) to make sure that they move offscreen

◆ switch_lhu_in()

bool hr::switch_lhu_in ( eLand  l)

Auxiliary function for hr::apply_chaos(). Returns whether the cell attribute LHU should be switched.

◆ apply_chaos()

void hr::apply_chaos ( )

Apply the Orb of Chaos. We assume that the player moves from cwt.peek, in in the direction given by cwt.spin.

Variable Documentation

◆ achievementsReceived

EX vector<string> hr::achievementsReceived

achievements received this game

◆ kills

EX array<int, motypes> hr::kills

how many instances of each monster type has been killed

◆ backcolor

EX unsigned hr::backcolor = 0

Color of the background.

◆ ccm_bigstuff

auto hr::ccm_bigstuff
Initial value:
= addHook(hooks_gamedata, 0, [] (gamedata* gd) {
gd->store(euland);
gd->store(euland3);
gd->store(euland3_hash);
})

◆ ccm_blizzard

auto hr::ccm_blizzard
Initial value:
= addHook(clearmemory, 0, [] () {
arrowtraps.clear();
blizzardcells.clear();
bcells.clear();
}) +
+ addHook(hooks_gamedata, 0, [] (gamedata* gd) {
gd->store(arrowtraps);
gd->store(blizzardcells);
gd->store(bcells);
gd->store(blizzard_N);
})
+ addHook(hooks_removecells, 0, [] () {
eliminate_if(arrowtraps, is_cell_removed);
})

◆ hardcore

EX bool hr::hardcore = false

are we in the hardcore mode

◆ hardcoreAt

EX int hr::hardcoreAt

when did we switch to the hardcore mode

◆ canmove

EX bool hr::canmove = true

can we still move?

◆ wormdes

const char* hr::wormdes
Initial value:
=
"These huge monsters normally live below the sand, but your movements have "
"disturbed them. They are too big to be slain with your "
"weapons, but you can defeat them by making them unable to move. "
"This also produces some Spice. They move two times slower than you."

◆ cocytushelp

const char* hr::cocytushelp
Initial value:
=
"This frozen lake is a hellish version of the Icy Land. Now, your body heat melts the floor, not the walls."

◆ tentdes

const char* hr::tentdes
Initial value:
=
"The tentacles of Cthulhu are like sandworms, but longer. "
"They also withdraw one cell at a time, instead of exploding instantly."

◆ gameboardhelp

const char* hr::gameboardhelp
Initial value:
=
"Ever wondered how some boardgame would look on the hyperbolic plane? "
"I wondered about Go, so I have created this feature. Now you can try yourself!\n"
"Enter = pick up an item (and score), space = clear an item\n"
"Other keys place orbs and terrain features of various kinds\n"
"In the periodic editor, press 0-4 to switch walls in different ways\n"

◆ ivydes

const char* hr::ivydes
Initial value:
=
"A huge plant growing in the Jungle. Each Ivy has many branches, "
"and one branch grows per each of your moves. Branches grow in a clockwise "
"order. The root itself is vulnerable."

◆ slimehelp

const char* hr::slimehelp
Initial value:
=
"The Alchemists produce magical potions from pools of blue and red slime. You "
"can go through these pools, but you cannot move from a blue pool to a red "
"pool, or vice versa. Pools containing items count as colorless, and "
"they change color to the PC's previous color when the item is picked up. "
"Slime beasts also have to keep to their own color, "
"but when they are killed, they explode, destroying items and changing "
"the color of the slime and slime beasts around them."

◆ gdemonhelp

const char* hr::gdemonhelp
Initial value:
=
"These creatures are slow, but very powerful... more powerful than you. "
"You need some more experience in demon fighting before you will be able to defeat them. "
"Even then, you will be able to slay this one, but more powerful demons will come...\n\n"
"Each 10 lesser demons you kill, you become powerful enough to kill all the greater "
"demons on the screen, effectively turning them into lesser demons."

◆ ldemonhelp

const char* hr::ldemonhelp
Initial value:
=
"These creatures are slow, but they often appear in large numbers."

◆ trollhelp

const char* hr::trollhelp
Initial value:
=
"A big monster from the Living Caves. A dead Troll will be reunited "
"with the rocks, causing some walls to grow around its body."

◆ trollhelp2

const EX char* hr::trollhelp2
Initial value:
=
" Additionally, all items around the killed Troll will be destroyed."

◆ trollhelpX

const char* hr::trollhelpX
Initial value:
=
"There are several species of trolls living in the hyperbolic world. "
"Some of them leave this wall behind them when they die."

◆ camelothelp

const char* hr::camelothelp
Initial value:
=
"The Knights of the Round Table are the greatest warriors of these lands. "
"They are not very inventive with names though, as they call each of their "
"castles Camelot. "
"You are probably worthy of joining them, but they will surely give you "
"some quest to prove yourself...\n\n"
"Each castle contains a single treasure, the Holy Grail, in the center. "
"The radius of the Round Table is usually 28, but after you find a Holy Grail "
"successfully, each new castle (and each Round Table) you find will be bigger."

◆ templehelp

const char* hr::templehelp
Initial value:
=
"The temple of Cthulhu consists of many concentric circles of columns. "
"You will surely encounter many Cultists there, who believe that a pilgrimage "
"to the inner circles will bring them closer to Cthulhu himself, and Grimoires "
"which surely contain many interesting secrets.\n\n"
"The circles in the temple of Cthulhu are actually horocycles. They are "
"infinite, and there is an infinite number of them."

◆ barrierhelp

const char* hr::barrierhelp
Initial value:
=
"Huge, impassable walls which separate various lands."

◆ cavehelp

const char* hr::cavehelp
Initial value:
=
"This cave contains walls which are somehow living. After each turn, each cell "
"counts the number of living wall and living floor cells around it, and if it is "
"currently of a different type than the majority of cells around it, it switches. "
"Items count as three floor cells, and dead Trolls count as five wall cells. "
"Some foreign monsters also count as floor or wall cells.\n"

◆ vinehelp

const char* hr::vinehelp
Initial value:
=
"The Vineyard is filled with vines. A very dense pattern of straight lines here...\n\n"
"Vine Beasts and Vine Spirits change vine cells to grass, and vice versa."

◆ hvinehelp

const char* hr::hvinehelp
Initial value:
=
"A vine is growing here... but only on a half of the cell. How is that even possible?!"
"Most monsters cannot move from this cell to the cell containing the other half. "
"Vine spirits can move only to the adjacent cells which are also adjacent to the "
"other half."

◆ deadcavehelp

const char* hr::deadcavehelp
Initial value:
=
"Somehow, this cave has not received the spark of Life yet."

◆ foresthelp

const char* hr::foresthelp
Initial value:
=
"This forest is quite dry. Beware the bushfires!\n"
"Trees catch fire on the next turn. The temperature of the grass cells "
"rises once per turn for each fire nearby, and becomes fire itself "
"when its temperature has risen 10 times.\n"
"You can also chop down the trees. Big trees take two turns to chop down."

◆ hivehelp

const char* hr::hivehelp
Initial value:
=
"The Hive is filled with Hyperbugs. They are huge insects which look a bit like "
"ants, a bit like bees, and a bit like roaches. "
"They live in circular nests, and an army of Hyperbugs will attack any intruder, "
"including you and enemy Hyperbugs. Will you manage to get to the "
"heart of such a nest, and get the precious Royal Jelly?"

◆ redrockhelp

const char* hr::redrockhelp
Initial value:
=
"This land contains high rock formations. Most of the valley is at level 0, "
"while items are found at level 3. It is impossible to gain two or more levels, "
"or to lose three levels, in a single move, (attacks are possible at any "
"difference, though). Kill Red Trolls and Rock Snakes to make a cell higher."

◆ caribbeanhelp

const char* hr::caribbeanhelp
Initial value:
=
"This dangerous sea contains nasty sharks and pirates. "

◆ cislandhelp

const char* hr::cislandhelp
Initial value:
=
"The islands of Caribbean are infinite and circular, and "
"the pirates probably have hidden their treasures somewhere far from the coast."

◆ redsnakedes

const char* hr::redsnakedes
Initial value:
=
"Rock snakes are similar to Sandworms, but they move each turn. However, they "
"only move on the hexagonal cells. They are also somewhat longer than the Sandworms."

◆ minedesc

const char* hr::minedesc
Initial value:
=
"This minefield has been created by the Bomberbirds to protect their valuable eggs. "
"Mines explode when they are stepped on, creating fire all around them "
"(this fire never expires in the Minefield). If you don't step on a mine, you "
"know the number of mines in cells around you. These numbers are marked with "
"color codes on the cells you have visited."

◆ palacedesc

const char* hr::palacedesc
Initial value:
=
"So better just to concentrate on collecting treasure. "
"Beware the traps, and the guards, who are hard to kill!"

◆ gatedesc

const char* hr::gatedesc
Initial value:
=
"Green pressure plates open all gates in radius 3 around them. "
"Similarly, red pressure plates close all gates in this radius."

◆ princessdesc

const char* hr::princessdesc
Initial value:
=
"A mouse squeaks at you. It seems that it wants you to go somewhere. "
"That's interesting, what could you find here?\n\n"
"Note: in the part of the Palace that you are exploring during this "
"quest, the distribution of monsters, pressure plates, and items has been "
"changed somewhat, to make it a bit more suitable for less "
"experienced players. The number of monsters does not depend on the "
"number of Hypersian Rugs you have collected, and there are more "
"opening plates.\n\n"
"However, even with the normal distribution, it appears that it should be "
"always possible to reach your goal. If you want this challenge, "
"select it from the special game modes menu."

◆ elemdesc

const char* hr::elemdesc
Initial value:
=
"The Elemental Planes are divided into four subzones: Planes of Fire, Water, Air, and Earth. "
"You need to collect a Shard from each Plane to construct an Elemental Gem. "
"It is dangerous to collect too many Shards of the same type without constructing a Gem."

◆ wildwestdesc

const char* hr::wildwestdesc
Initial value:
=
"Take a revolver, kill outlaws, collect bounties.\n\n"
"Note: since this land is anachronistic, it is not available in normal game. "
"It is only available in special modes."

◆ elecdesc

const char* hr::elecdesc
Initial value:
=
"Whenever after your move there is a connection between a charged and a "
"grounded cell, there is a short circuit. All cells on any "
"path connecting a charged and a grounded cell (without repeated cells, "
"or two consecutive grounded/charged cells) become damaged.\n\n"
"Sandstone walls and most creatures are conductive. Great Walls are "
"isolators, but lands beyond them count as grounded.\n\n"
"Fulgurite, the treasure, is created when you manage to short circuit "
"a sandstone wall, or a Rich Metal Beast.\n\n"
"Trolls leave conductive rocks when killed, and Metal Beasts can only "
"be killed by electricity -- your attacks only stun them, or push "
"them away if already stunned."

◆ overdesc

const char* hr::overdesc
Initial value:
=
"The Overgrown Woods are filled with mutant ivies! These plants "
"grow very fast. Each leaf, after being grown, can grow itself "
"on the next turn. However, each part is only able to grow "
"once in 16 turns. Outside of the Overgrown Woods, the Mutant Ivy "
"may grow only on hexagonal cells.\n\n"
"Maybe such fast growing plants could help you solve the problem "
"of hunger in your world? Kill the Mutant Ivies to collect Mutant Saplings."

◆ cleardesc

const char* hr::cleardesc
Initial value:
=
"A clearing in the Overgrown Woods. Obviously, this gives "
"the Mutant Ivies an infinite space to grow...\n\n"
"Mutant Fruits rot if they are not adjacent to a Mutant Ivy."

◆ winddesc

const char* hr::winddesc
Initial value:
=
"Someone has put air fans in these plains, causing strong winds everywhere. "
"You think that the purpose is to harness the magical power of Air Elementals, but "
"you are not sure.\n\n"
"All cells except fans are grouped into three colors according to a pattern. "
"Wind blows counterclockwise around each group of cells of a single color. "
"Cells which are blocked by walls, or at distance at most 2 from an Air Elemental, "
"do not count for this.\n\n"
"It is illegal to move in a direction which is closer to incoming wind than to "
"outcoming wind. However, you can move two cells with the wind in a single turn, "
"and so can the birds."

◆ warningdesc

const char* hr::warningdesc
Initial value:
=
"Warnings are issued when you try to do something that appears dangerous, "
"like stepping on a known mine, or getting your boat destroyed by "
"a Kraken without having Orb of the Fish. In some cases the action "
"might actually be safe -- so you can ignore the warning and do it anyway, "
"simply by repeating the action."

◆ hauntdesc

const char* hr::hauntdesc
Initial value:
=
"A dark forest filled with ghosts and graves. But there is also treasure hidden "
"deep within... But don't let greed make you stray from your path, as "
"you can get lost!\n\n"
"The Haunted Woods are bounded by a single equidistant curve. It is not a circle or horocycle.\n\n"

◆ bulldashdesc

const char* hr::bulldashdesc
Initial value:
=
"Butterflies don't pursue you -- unless you get next to them, they just spin around the obstacles. "
"They cannot be killed conventionally, but you get treasure when a Raging Bull crashes into a Butterfly. "

◆ prairiedesc

const char* hr::prairiedesc
Initial value:
=
"You can find safety in some places in the Prairie, but if you want treasures, "
"they can be found only on the other side of a giant herd of bulls."

◆ cadesc

const char* hr::cadesc
Initial value:
=
"A land for people wanting to experiment with cellular automata in the HyperRogue grid. "
"Rules can be given on the command line; the default rules are:\n"
"-c07 00100000 -c06 0010000 -c17 00011000 -c16 0001100 -caprob 0.3\n"
"(-c0 or -c1 can be given if the same rule is to be used for hexagonal "
"and heptagonal cells)."

◆ huntingdesc

const char* hr::huntingdesc
Initial value:
=
"The Happy Hunting Ground is the place where hunting is easy; "
"the spirits of hunters go here after their death, if their life was deemed worthy. "
"You did not qualify though, so you will not ever be able to find your way to the places "
"where the hunter spirits and game are... "
"and their hunting dogs will hunt you instead!\n\n"
"You hope to use this to learn some "
"skills in fighting in open hyperbolic space, though."

◆ terradesc

const char* hr::terradesc
Initial value:
=
"Spending 3-5 turns next to the Terracotta Warriors will cause them to awaken. "
"They have 7 HP, and get stunned for longer and longer time with each attack."

◆ terraldesc

const char* hr::terraldesc
Initial value:
=
"The Emperor's mausoleum. The army "
"of Terracotta Warriors is supposed to protect him in his "
"afterlife, while the traps are to protect the treasures "
"in the mausoleum from thieves."

◆ arrowtrapdesc

const char* hr::arrowtrapdesc
Initial value:
=
"The arrow traps will automatically launch a deadly arrow when stepped on. They are quite old though, so the arrow will "
"actually fly at the end of the next turn."

◆ lavadesc

const char* hr::lavadesc
Initial value:
=
"The volcanic activity in this land is extremely unstable. "
"Lava is too hot to walk on. It cools quickly, but another "
"flow will come soon..."

◆ blizzarddesc

const char* hr::blizzarddesc
Initial value:
=
"Once in the past there lived a tribe whose prophets warned about the great blizzard that was to come and freeze the world. "
"They thought it was the wrath of the gods, so they put some altars, so that the gods could hear their pleas. "
"The mighty golems guarded those altars, making sure nobody steals the jewels, because a robbed god is a angry god. "
"Unfortunately winter has come (maybe because only the monks knew how to stop the golems, and they were said to had escaped earlier with some of the jewels). "
"The tribe has frozen to death, altars got covered with snow and ice. Only ice golems still guard them waiting for the spring."

◆ crystaldesc

const char* hr::crystaldesc
Initial value:
=
"Yes, this is definitely a crystal. A very regular crystalline structure.\n\n"
"This land has been designed as a tool to play with various geometries, and it does not appear during a normal gameplay."

◆ rosedesc

const EX char* hr::rosedesc
Initial value:
=
"Each eight turns, each rosebush at distance at most 5 from you will "
"release a wave of alluring scent. Creatures on the frontwave "
"will move towards where the scent came from. Even if it causes them "
"to attack their friends or beautiful creatures, or move into water, fire, chasm, or thorns of the rosebush. "
"Ivies, Ghosts, Rock Snakes, Rose Ladies and Lords, and monsters restricted to a specific "
"terrain are immune to scents."

◆ warpdesc

const EX char* hr::warpdesc
Initial value:
=
"This part of the world is warped, restricting the movement somewhat. "
"\"Diagonal\" movement and attacking between triangular cells is not allowed. "
"Flash, Storms, and Freedom spells ignore this, and Ghosts can move, attack, and "
"be attacked diagonally."

◆ warplanddesc

const char* hr::warplanddesc
Initial value:
=
"This land is warped. Ironically, the coast is completely straight..."

◆ roselanddesc

const char* hr::roselanddesc
Initial value:
=
"This land is filled with beautiful, but dangerous, creatures and plants."

◆ dragondesc

const char* hr::dragondesc
Initial value:
=
"Dragons are powerful monsters. They are slow, but evil, "
"and love to pick on creatures who are even slower than "
"them. They must be stopped!\n\n"
"A Dragon moves each two turns. It may attack with all its segments, "
"or move its whole body forwards or "
"backwards, it may also move a frontal part backwards. To kill a Dragon, "
"you need to hit each of its segments. "
"The head will regenerate on the "
"turns the Dragon is not moving, so you will usually have to hit it with "
"your last attack; otherwise, if the head is healthy, it may breathe "
"fire (at range 3), losing the hitpoint. Killing the Dragon "
"while still in the Dragon Chasms gives you treasure."

◆ tortoisedesc

const char* hr::tortoisedesc
Initial value:
=
"Galápagos is the land of Tortoises. "
"They are very slow, which allows the Dragons to pick on them by "
"stealing and eating their young. Bring the Baby Tortoises back, "
"but, there is a catch: the Tortoises come in many varieties, depending "
"on the part of Galápagos they live in -- there are 21 binary environmental "
"factors, and thus "
"2097152 varieties. You'll have to find a "
"Tortoise which matches the baby exactly!\n\n"
"Tortoises move each 3 turns, and attacks only stun them.\n\n"
"Bringing back a Baby Tortoise counts as 5 $$$. The more factors agree in "
"the given location of Galápagos, the brighter it is shown on your screen."

◆ krakendesc

const char* hr::krakendesc
Initial value:
=
"There are Krakens in your homeland, too... huge sea monsters which "
"could easily destroy ships. The geometry of this strange world "
"prevents quick movement of huge objects, "
"so there are no large ships, only small boats, and "
"hyperbolic Krakens are relatively small too. Still, you suppose they might be "
"the widest creatures which could still move at considerable speed...\n\n"
"Kraken heads can move only on hexagons. You need to attack all the tentacles to "
"kill the Kraken. A tentacle cannot attack if it has been attacked on the "
"same turn. When a Kraken attacks you while you are in a boat, it "
"destroys the boat, but does not kill you."

◆ halloweendesc

const char* hr::halloweendesc
Initial value:
=
"Halloween is a special land, that is available only in the spherical "
"or elliptic geometry (press 'o' to switch). You play on the surface of "
"a jack-o'-lantern, "
"and have to collect as many Treats as possible. Each Treat you collect "
"brings new monsters to fight, and new magical powers for you. You "
"have to fight the monsters while effectively managing your limited "
"resources."

◆ reptiledesc

const char* hr::reptiledesc
Initial value:
=
"These reptiles are quite strange creatures. They "
"spend most of their lives sleeping as floors "
"that other creatures can walk on. "
"Sometimes they wake up to hunt their prey, "
"but they will happily go back to sleep if they "
"happen to move into a hole on their way. "
"Your attacks do not kill the Reptiles, but "
"you can push and stun them."

◆ naturedesc

const char* hr::naturedesc
Initial value:
=
"This Orb allows you to grow like an Ivy. "
"The Ivy is always rooted in your current location; "
"moving among the Ivy cells will move the root. "
"Moving to a new location will cause the Ivy to grow "
", if an Ivy could make that movement "
"(otherwise it breaks). "
"You can also target one of the cells adjacent to your ivy "
"(not to you) to grow or attack there."

◆ mirroreddesc

const char* hr::mirroreddesc
Initial value:
=
"A perfect mirror wall. It is unbreakable "
"and impassable "
"even for aethereal beings, and everything "
"you see inside is just an image of "
"the real world; you can swing your sword "
"at them, but that will not destroy them "
"in the real world. "
"Mirror walls reflect Mimics, lightning bolts, and "
"missiles perfectly."

◆ tamebomberdesc

const char* hr::tamebomberdesc
Initial value:
=
"This bomberbird will follow you at some distance, and attack your enemies. "
"You can kill it to place a mine."

◆ gargdesc

const char* hr::gargdesc
Initial value:
=
"A being made of stone, who likes high buildings. It becomes normal stone when "
"killed, but only if next to something stable -- otherwise it falls."

◆ jellydesc

const char* hr::jellydesc
Initial value:
=
"Some of the Slime Beasts have decided to revolt against the color rules in the "
"Alchemist Lab. They have changed their shape and consistency, declared independence, and established their own Kingdom.\n\n"
"Jellies switch between being a wall and being a monster after every treasure you pick."

◆ ruindesc

const char* hr::ruindesc
Initial value:
=
"Once a beautiful city... but now overrun by the mighty Raiders of unknown origin.\n\n"
"Raiders cannot be harmed with mundane weapons, but each color has its movement restrictions."

◆ rock_description

const char* hr::rock_description
Initial value:
=
"Shoot the Space Rocks for score. Large Rocks will split into two smaller rocks."

◆ minf

EX monstertype hr::minf[motypes]
Initial value:
= {
#define MONSTER(a,b,c,d,e,f,g,h)
}

◆ genderswitch

EX genderswitch_t hr::genderswitch[NUM_GS]
Initial value:
= {
{ GEN_F, moFalsePrincess, "False Princess",
"Don't be fooled by this red-haired girl, or you will be stabbed if you come too close!"},
{ GEN_M, moFalsePrincess, "False Prince",
"Don't be fooled by this red-haired boy, or you will be stabbed if you come too close!"},
{ GEN_F, moRoseLady, "Rose Lady",
"This false princess is immune to the alluring scent of roses."},
{ GEN_M, moRoseLady, "Rose Lord",
"This false prince is immune to the alluring scent of roses."},
{ GEN_F, moRoseBeauty, "Rose Beauty",
"She has flowers in her long fair hair. You could not bring yourself to attack such a beautiful woman."},
{ GEN_M, moRoseBeauty, "Handsome Gardener",
"Tall, strong, and holding a flower in his hand. You could "
"not bring yourself to attack such a handsome man."},
{ GEN_F, moRusalka, "Rusałka",
"A malicious water being. When you kill her, she changes the tile you are standing on, from land to shallow water, or from shallow water to deep water."},
{ GEN_M, moRusalka, "Topielec",
"A malicious water being. When you kill him, he changes the tile you are standing on, from land to shallow water, or from shallow water to deep water."},
}

◆ iinf

EX itemtype hr::iinf[ittypes]
Initial value:
= {
#define ITEM(a,b,c,d,e,f,g,h,i)
}

◆ winf

EX walltype hr::winf[walltypes]
Initial value:
= {
#define WALL(a,b,c,d,e,f,g,h,i)
}

◆ linf

const EX landtype hr::linf[landtypes]
Initial value:
= {
#define LAND(a,b,c,d,e,f,g)
}

◆ randlands

EX vector<eLand> hr::randlands
Initial value:
= {
laIce, laDesert, laCaves, laAlchemist, laGraveyard, laPower, laLivefjord, laZebra,
laRlyeh, laDryForest, laEmerald, laWineyard, laDeadCaves, laRedRock,
laOvergrown, laWildWest, laWarpCoast, laRuins, laBull, laDragon, laReptile, laDocks
}

◆ ginf

EX vector<geometryinfo> hr::ginf

list of available geometries

◆ mdinf

EX vector<modelinfo> hr::mdinf

list of available models (i.e., projections)

◆ worms

EX vector<cell*> hr::worms

monsters of specific types to move

◆ tempmonsters

vector<pair<cell*, eMonster> > hr::tempmonsters

temporary changes during bfs

◆ reachedfrom

EX vector<int> hr::reachedfrom

additional direction information for BFS algorithms. It remembers from where we have got to this location the opposite cell will be added to the queue first, which helps the AI.

◆ first7

EX int hr::first7

The position of the first cell in dcal in distance 7. New wandering monsters can be generated in dcal[first7..].

◆ dcal

vector< cell * > hr::dcal

the list of all nearby cells, according to cpdist

◆ pathq

EX vector<cell*> hr::pathq

the list of all nearby cells, according to current pathdist

◆ statuecount

EX int hr::statuecount

the number of big statues – they increase monster generation

◆ wetslime

EX int hr::wetslime

the number of slimes in Wetland – they create ghosts

◆ pathqm

EX vector<cell*> hr::pathqm

list of monsters to move (pathq restriced to monsters)

◆ snaketypes

EX set<int> hr::snaketypes

which hex snakes are there

◆ floor_hook

auto hr::floor_hook
Initial value:
=
addHook(hooks_args, 100, [] () {
using namespace arg;
if(argis("-floordebug")) { floorshape_debug = true; return 0; }
else return 1;
})

◆ hrngen

EX std::mt19937 hr::hrngen

the main random number generator for the game.

All the random calls related to the game mechanics (land generation, AI...) should use hrngen.

Random calls not related to the game mechanics (graphical effects) should not use hrngen.

This ensures that the game should unfold exactly the same if given the same seed and the same input.

◆ euchelp

string hr::euchelp
Initial value:
=
"If you want to know how much the gameplay is affected by the "
"hyperbolic geometry in HyperRogue, this mode is for you!\n\n"
"You can try many different geometries here. We start by gluing "
"n-gons in such a way that k of them meet in every vertex. "
"Depending on n and k, this either folds into a sphere, unfolds into a plane, "
"or requires a hyperbolic space. The result may be then 'bitrunc' by "
"replacing each vertex by a 2k-gon. Furthermore, you can play "
"with quotient geometries. For example, the elliptic geometry is "
"obtained from the sphere by making the antipodes be the same point, "
"so you return to the same spot (but as a mirror image) after going there. "
"Have fun experimenting! "
"Achievements and leaderboards do not work in geometry experiments, "
"except some specific ones.\n\n"
"In standard geometry (bitrunc or not), you can play the full game, but in other geometries "
"you select a particular land. Lands are unlocked by visiting them in this "
"session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean "
"or chaos mode in non-standard non-quotient hyperbolic to visit many lands. "
"Highlights:\n"
"* Crystal World and Warped Coast can be understood as extra geometries.\n"
"* Halloween is specially designed for spherical geometry.\n"
"* To see the difference, try Hunting Grounds in Euclidean -- it is impossible.\n"

◆ gf_regular_2d

EX geometry_filter hr::gf_regular_2d
Initial value:
= {"regular 2D tesselations", [] {
return standard_tiling() && WDIM == 2 && !forced_quotient();
}}

◆ gf_regular_3d

EX geometry_filter hr::gf_regular_3d
Initial value:
= {"regular 3D honeycombs", [] {
if(euclid) return geometry == gCubeTiling;
return !bt::in() && !kite::in() && WDIM == 3 && !forced_quotient() && !nonisotropic && !prod;
}}

◆ gf_quotient

EX geometry_filter hr::gf_quotient
Initial value:
= {"interesting quotient spaces", [] {
return forced_quotient() && !elliptic;
}}

◆ wallopt

EX bool hr::wallopt

wall optimization: do not draw things beyond walls

◆ minecolors

EX colortable hr::minecolors
Initial value:
= {
0xFFFFFF, 0xF0, 0xF060, 0xF00000,
0x60, 0x600000, 0x00C0C0, 0x000000, 0x808080, 0xFFD500
}

◆ distcolors

EX colortable hr::distcolors
Initial value:
= {
0xFFFFFF, 0xF0, 0xF060, 0xF00000,
0xA0A000, 0xA000A0, 0x00A0A0, 0xFFD500
}

◆ minetexts

const char* hr::minetexts[8]
Initial value:
= {
"No mines next to you.",
"A mine is next to you!",
"Two mines next to you!",
"Three mines next to you!",
"Four mines next to you!",
"Five mines next to you!",
"Six mines next to you!",
"Seven mines next to you!"
}

◆ graphcm

auto hr::graphcm
Initial value:
= addHook(clearmemory, 0, [] () {
DEBBI(DF_MEMORY, ("clear graph memory"));
mouseover = centerover = lmouseover = NULL;
gmatrix.clear(); gmatrix0.clear(); current_display->all_drawn_copies.clear();
clearAnimations();
})
+ addHook(hooks_gamedata, 0, [] (gamedata* gd) {
gd->store(mouseover);
gd->store(lmouseover);
gd->store(animations);
gd->store(flashes);
gd->store(fallanims);
gd->store(radar_transform);
gd->store(actual_view_transform);
})

◆ power_help

string hr::power_help
Initial value:
=
"The amount of Orbs obtained by using Orbs of Mirroring is "
"multiplied by sqrt(1+p/20), where p is the number of Powerstones "
"collected. This also affects the mirrorings which happened before "
"collecting the Powerstones."

◆ Id

constexpr transmatrix hr::Id = diag(1,1,1,1)
constexpr

identity matrix

◆ Zero

constexpr transmatrix hr::Zero = diag(0,0,0,0)
constexpr

zero matrix

◆ Mirror

constexpr transmatrix hr::Mirror = diag(1,-1,1,1)
constexpr

mirror image

◆ MirrorY

constexpr transmatrix hr::MirrorY = diag(1,-1,1,1)
constexpr

mirror image: flip in the Y coordinate

◆ MirrorX

constexpr transmatrix hr::MirrorX = diag(-1,1,1,1)
constexpr

mirror image: flip in the X coordinate

◆ MirrorZ

constexpr transmatrix hr::MirrorZ = diag(1,1,-1,1)
constexpr

mirror image: flip in the Z coordinate

◆ pispin

constexpr transmatrix hr::pispin = diag(-1,-1,1,1)
constexpr

rotate by PI in the XY plane

◆ centralsym

constexpr transmatrix hr::centralsym = diag(-1,-1,-1,-1)
constexpr

central symmetry matrix

◆ items

EX array<int, ittypes> hr::items

for treasures, the number collected; for orbs, the number of charges

◆ land_over

EX vector<eLand> hr::land_over
Initial value:
= {
laIce, laCaves, laDesert, laHunting, laMotion, laJungle, laAlchemist,
laCrossroads,
laMirror, laMirrorOld, laMinefield, laPalace, laPrincessQuest, laZebra, laSwitch, laReptile, laWet,
laOcean, laDocks, laWarpCoast, laLivefjord, laKraken, laCaribbean, laBrownian, laWhirlpool, laRlyeh, laTemple,
laIvoryTower, laEndorian, laWestWall, laDungeon, laMountain,
laCrossroads2,
laDryForest, laWineyard, laDeadCaves, laGraveyard, laHaunted, laHive,
laRedRock, laVolcano,
laDragon, laTortoise,
laOvergrown, laClearing, laStorms, laBurial, laWhirlwind,
laBlizzard,
laFrog, laEclectic,
laRuins, laEmerald, laVariant, laCamelot,
laPrairie, laBull, laTerracotta, laRose,
laElementalWall, laTrollheim,
laHell, laCrossroads3, laCocytus, laPower, laCrossroads4,
laCrossroads5,
laWildWest, laHalloween, laDual, laSnakeNest, laMagnetic, laCA, laAsteroids
}

◆ global_distance_limit

constexpr int hr::global_distance_limit = 32000
constexpr

Limit on the 'distance' value in heptagon. This value is signed (negative distances are used in horocycle implementation. Distance is currently a short, and we need a bit of breathing room. It would not be a technical problem to use a larger type, but 32000 is close to what fits in the memory of a normal computer. Farlands appear close to this limit.

◆ iteration_limit

constexpr int hr::iteration_limit = 10000000
constexpr

This value is used in iterative algorithms to prevent infinite loops created by incorrect data (e.g., circular dragon). It should be larger than global_distance_limit

◆ STRONGWIND

constexpr int hr::STRONGWIND = 99
constexpr

a structure for representing movements mostly for 'proper' moves where s->move(d) == t, but also sometimes for other moves

◆ targets

EX vector<cell*> hr::targets

list of cells that the monsters are targetting (PCs, allies, Thumpers, etc.)

◆ movesofgood

grow_vector<vector<cell*> > hr::movesofgood

monsters to move, ordered by the number of possible good moves

◆ olrDescriptions

EX string hr::olrDescriptions[]
Initial value:
= {
"forbidden to find in %the1",
"too dangerous to use in %the1",
"useless in %the1",
"only native Orbs allowed in %the1",
"this Orb is never unlocked globally (only hubs)",
"collect 25 %2 to unlock it in %the1",
"collect 3 %2 to unlock it in %the1",
"native to %the1 (collect 10 %2)",
"native to %the1 (collect 1 %2)",
"secondary in %the1 (collect 10 %3, or 25 %2)",
"the native Orb of %the1",
"this Orb appears on floors and is used by witches",
"a prized Orb, it appears only in cabinets",
"this Orb never appears in %the1",
"Hub Land: orbs appear here if unlocked in their native land",
"kill a monster, or collect 25 %2",
"always available",
"would be destroyed in %the1"
}

◆ cwt

EX cellwalker hr::cwt

Cellwalker describing the single player. Also used temporarily in shmup and multiplayer modes.

◆ rosemap

EX map<cell*, int> hr::rosemap

current state of the rose scent rosemap[c] &3 can be: 0 - wave not reached 1 - wave expanding 2 - wave phase 1 3 - wave phase 2

◆ elhextable

int hr::elhextable[28][3]
Initial value:
= {
{0,1,2}, {1,2,9}, {1,9,-1}, {1,8,-1}, {1,-1,-1}
}

◆ colortables

EX map<char, colortable> hr::colortables
Initial value:
= {
{'A', {
0xF04040, 0x40F040, 0x4040F0,
0xD0D000, 0xD000D0, 0x00D0D0,
0xC0C0C0, 0x404040, 0x808080,
0xF08040, 0xF04080, 0x40F080,
0x4080F0, 0x8040F0, 0x80F040,
0xFFD500 }},
{'B', {
0, 0, 0xFFFFFF, 0xFFFF00,
0xFF0000, 0xC000C0 , 0x00FF00, 0x00C0C0 , 0xFF8000,
0xFFFF80, 0xC040C0, 0xFFD500, 0x000080,
0x404040, 0x606060, 0x808080
}},
{'a', {0x800000, 0x503000, 0x206000, 0x007010, 0x004040, 0x001070, 0x200060, 0x500030}},
{'e', {0x404040, 0x1800000, 0x1008000, 0x000080 }},
{'b', {0x404040, 0x1800000, 0x1008000, 0x000080 }},
{'z', {0x1C0C0C0, 0x1E0E0E0, 0x404040, 0x606060 }},
{'x', {0xC0C0C0, 0x1800000, 0x1008000, 0x000080 }},
{'t', {0x804040, 0x1408040, 0x404080, 0x1808040 }},
{'c', {0x202020, 0x1C0C0C0}},
{'F', {0x1C0C0C0, 0x202020}},
{'w', {0x303030, 0x1C0C0C0}},
{'v', {0xC00000, 0xC08000, 0xC0C000, 0x00C000, 0xC0C0, 0x00C0, 0xC000C0}},
{'j', {0x100FFFF, 0x100FF00, 0x1FFFF00, 0x1FF8000, 0x1FF0000, 0x1FF00FF}},
{'!', {0x1202020, 0x1000080, 0x1008000, 0x1008080, 0x1800000, 0x1800080, 0x1808000, 0x1C0C0C0,
0x1808080, 0x10000FF, 0x100FF00, 0x100FFFF, 0x1FF0000, 0x1FF00FF, 0x1FFFF00, 0x1FFFFFF}},
}

◆ zebratable

int hr::zebratable[12][7]
Initial value:
= {
{50, 70, 60, 120, 80, 100, 64},
{40, 65, 72, 130, 90, 110, 76},
{45, 71, 56, 41, 101, 140, 126},
{46, 51, 111, 150, 136, 55, 66},
{43, 121, 145, 103, 93, 114, 106},
{53, 131, 155, 113, 83, 104, 116},
{42, 81, 115, 92, 84, 146, 63},
{52, 91, 105, 82, 94, 156, 75},
{44, 61, 141, 134, 152, 144, 86},
{54, 73, 151, 124, 142, 154, 96},
{62, 102, 85, 122, 153, 133, 125},
{74, 112, 95, 132, 143, 123, 135}
}

◆ zebratable6

EX int hr::zebratable6[28][3]
Initial value:
= {
{4,10,6}, {5,11,7}, {4,6,12}, {5,7,13},
{8,14,10}, {9,15,11}, {4,8,10}, {5,9,11},
{6,14,12}, {7,15,13}, {8,12,14}, {9,13,15},
{4,7,6}, {5,6,7}, {4,6,5}, {4,5,7},
{8,11,10}, {9,10,11}, {8,10,9}, {8,9,11},
{12,15,14}, {13,14,15}, {12,14,13}, {12,13,15},
{6,10,14}, {7,11,15}, {4,12,8}, {5,13,9}
}

◆ hauntedWarning

EX bool hr::hauntedWarning

have we been warned about the Haunted Woods?

◆ survivalist

EX bool hr::survivalist

is the Survivalist achievement still valid? have we received it?

◆ invismove

EX bool hr::invismove = false

last move was invisible

◆ invisfish

EX bool hr::invisfish = false

last move was invisible due to Orb of Fish (thus Fish still see you)

◆ flipplayer

EX bool hr::flipplayer = true

if false, make the PC look in direction cwt.spin (after attack); otherwise, make them look the other direction (after move)

◆ playermoved

EX bool hr::playermoved = true

should we center the screen on the PC?

◆ cheater

EX int hr::cheater = 0

did the player cheat? how many times?

◆ landvisited

EX bool hr::landvisited[landtypes]

lands visited – unblock some modes

◆ changes

EX changes_t hr::changes

The only instance of hr::changes_t

hr::display_data::all_drawn_copies
unordered_map< cell *, vector< transmatrix > > all_drawn_copies
Definition: basegraph.cpp:53