HyperRogue  11.3d
game/visualization engine based on non-Euclidean geometry
Classes | Namespaces | Macros | Functions | Variables
landlock.cpp File Reference

unlocking lands, which lands could be found beyond the wall, validity of various lands depending on the settings More...

#include "hyper.h"
#include "content.cpp"

Classes

struct  hr::land_validity_t
 

Namespaces

 hr
 

Macros

#define LAND(a, b, c, d, e, f, g)   case c:
 
#define NATIVE(x)   return x;
 
#define LAND(a, b, c, d, e, f, g)   case c:
 
#define REQ(x)   x return true;
 
#define REQAS(x, y)   l = x; goto back;
 
#define GOLD(x)   if(gold() < x) return false;
 
#define ITEMS(kind, number)   if(items[kind] < number) return false;
 
#define NEVER   if(1) return false;
 
#define ALWAYS   ;
 
#define KILLS(x)   if(tkills() < x) return false;
 
#define KILL(x, where)   if(!kills[x]) return false;
 
#define AKILL(x, where)   if(kills[x]) return true;
 
#define ORD(a, b)   a b
 
#define NUMBER(val, required, description)   if(val < required) return false;
 
#define COND(x, y)   if(!(x)) return false;
 
#define ITEMS_TOTAL(list, z)   { int total = 0; for(eItem x: list) total += items[x]; if(total < z) return false; }
 
#define ACCONLY(x)
 
#define ACCONLY2(x, y)
 
#define ACCONLYF(x)
 
#define LIKELY   for(int u=0; u<5; u++)
 
#define LIKELY2   for(int u=0; u<2; u++)
 

Functions

EX bool hr::in_full_game ()
 
EX bool hr::nodisplay (eMonster m)
 
EX int hr::isNative (eLand l, eMonster m)
 
EX eItem hr::treasureType (eLand l)
 
EX eItem hr::treasureTypeUnlock (eLand l, eItem u)
 
EX eLand hr::landof (eItem it)
 
EX int hr::landMultiplier (eLand l)
 
EX bool hr::isCrossroads (eLand l)
 
EX bool hr::bearsCamelot (eLand l)
 
EX bool hr::inmirror (const cellwalker &cw)
 
EX eLand hr::oppositeElement (eLand l, eLand l2)
 
EX bool hr::landUnlockedRPM (eLand n)
 
EX int hr::variant_unlock_value ()
 
EX bool hr::landUnlocked (eLand l)
 
EX bool hr::required_for_hyperstones (eItem ttype)
 
EX void hr::countHyperstoneQuest (int &i1, int &i2)
 
EX bool hr::hyperstonesUnlocked ()
 
EX int hr::isRandland (eLand l)
 
EX bool hr::incompatible1 (eLand l1, eLand l2)
 
EX eLand hr::randomElementalLand ()
 
EX int hr::elementalKills ()
 
EX eLand hr::randomElementalLandWeighted ()
 
EX bool hr::incompatible (eLand nw, eLand old)
 
EX bool hr::rlyehComplete ()
 
bool hr::lchance (eLand l)
 
EX eLand hr::pickLandRPM (eLand old)
 
EX eLand hr::pickluck (eLand l1, eLand l2)
 
EX eLand hr::getNewSealand (eLand old)
 
EX bool hr::createOnSea (eLand old)
 
EX eLand hr::getNewLand (eLand old)
 
template<class T >
void hr::generateLandList (T t)
 
EX eLand hr::getLandForList (cell *c)
 
EX bool hr::isLandIngame (eLand l)
 
EX land_validity_t & hr::land_validity (eLand l)
 

Variables

EX eLand hr::firstland = laIce
 
EX eLand hr::specialland = laIce
 
EX int hr::chaosmode = 0
 
EX hookset< eLand(eLand)> * hr::hooks_nextland
 
EX vector< eLand > hr::land_over
 
EX vector< eLand > hr::landlist
 
flagtype hr::lv::q0 = lv::display_error_message | lv::display_in_help | lv::appears_in_geom_exp
 
flagtype hr::lv::q1 = lv::display_error_message | lv::appears_in_geom_exp | lv::appears_in_full | lv::display_in_help
 
flagtype hr::lv::q2 = lv::appears_in_geom_exp | lv::appears_in_full | lv::display_in_help | lv::appears_in_ptm
 
flagtype hr::lv::q3 = lv::appears_in_geom_exp | lv::appears_in_full | lv::display_in_help | lv::appears_in_ptm
 
flagtype hr::lv::qm2 = q2 | lv::display_error_message
 
flagtype hr::lv::qm3 = q3 | lv::display_error_message
 
land_validity_t hr::lv::hedgehogs = { 1, qm2 &~ lv::appears_in_full, "Cannot kill Hedgehog Warriors in this geometry."}
 
land_validity_t hr::lv::no_randpattern_version = { 0, q0, "No random pattern version."}
 
land_validity_t hr::lv::no_great_walls = { 0, q0, "Great Walls not implemented."}
 
land_validity_t hr::lv::pattern_incompatibility = { 0, q0, "Pattern incompatible."}
 
land_validity_t hr::lv::pattern_not_implemented_random = { 1, q1 | one_and_half, "Pattern not implemented -- using random."}
 
land_validity_t hr::lv::pattern_not_implemented_weird = { 1, q1, "Pattern not implemented."}
 
land_validity_t hr::lv::pattern_not_implemented_exclude = { 1, q1 & ~ lv::appears_in_full, "Pattern not implemented."}
 
land_validity_t hr::lv::not_enough_space = { 0, q0, "Not enough space."}
 
land_validity_t hr::lv::dont_work = { 0, q0, "Does not work in this geometry."}
 
land_validity_t hr::lv::bounded_only = { 0, q0, "This land is designed for bounded worlds."}
 
land_validity_t hr::lv::unbounded_only = { 0, q0, "This land is designed for infinite worlds."}
 
land_validity_t hr::lv::unbounded_only_except_bigsphere = { 0, q0, "This land is designed for infinite worlds or big spheres."}
 
land_validity_t hr::lv::out_of_theme = { 3, qm2 &~ lv::appears_in_full, "Out of theme for the full game."}
 
land_validity_t hr::lv::no_game = { 2, q2 &~ lv::appears_in_full, "No game here."}
 
land_validity_t hr::lv::not_in_chaos = { 0, q0, "Does not work in chaos mode."}
 
land_validity_t hr::lv::not_in_full_game = {2, qm2 &~ lv::appears_in_full, "Not in the full game."}
 
land_validity_t hr::lv::not_in_full_game3 = {3, qm2 &~ lv::appears_in_full, "Not in the full game."}
 
land_validity_t hr::lv::special_chaos = { 2, qm2, "Special construction in the Chaos mode." }
 
land_validity_t hr::lv::special_euclidean = { 2, qm2, "Special construction in the Euclidean mode." }
 
land_validity_t hr::lv::special_geo = { 2, qm2, "Special construction in this geometry." }
 
land_validity_t hr::lv::special_geo3 = { 3, qm2, "Special construction in this geometry." }
 
land_validity_t hr::lv::not_implemented = {0, q0, "Not implemented."}
 
land_validity_t hr::lv::partially_implemented = {1, q1 | one_and_half, "Partially implemented."}
 
land_validity_t hr::lv::ok = {2, q2 &~ lv::display_in_help, "No comments."}
 
land_validity_t hr::lv::not_in_ptm = {0, q0, "Does not work in pure tactics mode."}
 
land_validity_t hr::lv::technical = {0, q0 &~ lv::appears_in_geom_exp, "Technical."}
 
land_validity_t hr::lv::full_game = {3, q3 &~ lv::display_in_help, "Full game."}
 
land_validity_t hr::lv::inaccurate = {1, q1, "Somewhat inaccurate."}
 
land_validity_t hr::lv::great_walls_missing = {1, q1 | one_and_half, "Mercury rivers not implemented (or could not work) in this geometry."}
 
land_validity_t hr::lv::pattern_compatibility = {3, qm3, "Patterns compatible."}
 
land_validity_t hr::lv::pattern_defined = {3, qm3, "Pattern defined."}
 
land_validity_t hr::lv::pattern_compatibility_sole = {3, qm3 &~ lv::appears_in_full, "Patterns compatible."}
 
land_validity_t hr::lv::pattern_compatibility_notrec = {2, qm2 &~ lv::appears_in_full, "Patterns compatible."}
 
land_validity_t hr::lv::specially_designed = {3, qm3, "This land is specially designed for this geometry."}
 
land_validity_t hr::lv::needs_threecolor = {0, q0, "Three-colorability required."}
 
land_validity_t hr::lv::land_not_implemented = {0, q0 &~ lv::appears_in_geom_exp, "Land not implemented."}
 
land_validity_t hr::lv::interesting = {3, q3, "Special interest."}
 
land_validity_t hr::lv::better_version_exists = {0, q0, "Better version exists."}
 
land_validity_t hr::lv::dont_work_but_ingame = {1, q0 | lv::appears_in_full, "Does not work in this geometry."}
 
land_validity_t hr::lv::ugly_version_infull = {1, q1 | lv::appears_in_full, "Grid does not work in this geometry."}
 
land_validity_t hr::lv::ugly_version_nofull = {1, q1, "Grid does not work in this geometry."}
 
land_validity_t hr::lv::bad_graphics = {1, q1, "Graphics not implemented in this geometry."}
 
land_validity_t hr::lv::some0 = {0, q0, "This land does not work in the current settings. Reason not available."}
 
land_validity_t hr::lv::some1 = {1, q1, "This land does not work well in the current settings. Reason not available."}
 
land_validity_t hr::lv::known_buggy = {1, q1, "This combination is known to be buggy at the moment."}
 
land_validity_t hr::lv::sloppy_pattern = {1, q1 | one_and_half, "Somewhat sloppy pattern."}
 
land_validity_t hr::lv::no_fractal_landscapes = {1, q1 | one_and_half, "Fractal landscapes not implemented in this geometry."}
 
land_validity_t hr::lv::simplified_walls = { 1, q1, "Only simplified walls implemented."}
 
land_validity_t hr::lv::no_walls = { 0, q0, "No walls implemented."}
 
land_validity_t hr::lv::disabled = {0, q0, "This land has been disabled with compilation flags."}
 
land_validity_t hr::lv::pattern_special = {3, qm3, "Special pattern implemented for this geometry."}
 
land_validity_t hr::lv::not_3d = {0, q0, "This land does not make much sense in 3D."}
 
land_validity_t hr::lv::not_binary = {0, q0, "This land does not make much sense in binary tiling."}
 
land_validity_t hr::lv::shmup_only = {0, q0, "This land works only in the shmup mode."}
 
land_validity_t hr::lv::not_in_shmup = {0, q0, "This land is not available in the shmup mode."}
 
land_validity_t hr::lv::not_in_multi = {0, q0, "This land is not available in multiplayer."}
 
EX int hr::old_daily_id = 1000000
 
const int hr::landscapes_when = 177
 
const EX int hr::frog_when = 205
 

Detailed Description

unlocking lands, which lands could be found beyond the wall, validity of various lands depending on the settings