diff --git a/achievement.cpp b/achievement.cpp index f83f6a07..1b5f8257 100644 --- a/achievement.cpp +++ b/achievement.cpp @@ -144,6 +144,7 @@ EX bool wrongMode(char flags) { dls = land_structure; if(land_structure != dls) return true; + if(shmup::on && vid.creature_scale != 1) return true; if(numplayers() > 1 && !multi::friendly_fire) return true; if(numplayers() > 1 && multi::pvp_mode) return true; if(numplayers() > 1 && multi::split_screen) return true; @@ -804,6 +805,7 @@ EX void achievement_final(bool really_final) { if(bow::crossbow_mode() && bow::style == bow::cbBull) specialcode += 32; if(bow::crossbow_mode() && bow::style == bow::cbGeodesic) specialcode += 64; if(bow::crossbow_mode() && bow::style == bow::cbGeometric) specialcode += 96; + if(shmup::on && vid.creature_scale != 1) return; if(sphere && specialland == laHalloween) { if(specialcode) return; diff --git a/config.cpp b/config.cpp index 744571fd..0ef04666 100644 --- a/config.cpp +++ b/config.cpp @@ -2955,8 +2955,7 @@ EX void show3D() { dialog::addSelItem(XLAT("3D detailed settings"), "", 'D'); dialog::add_action_push(show3D_height_details); - if(scale_used()) - add_edit(vid.creature_scale); + add_edit(vid.creature_scale); } else { add_edit(vid.creature_scale); @@ -3105,7 +3104,9 @@ EX int config3 = addHook(hooks_configfile, 100, [] { }, "context help", 'H'); param_f(vid.creature_scale, "creature_scale", "3d-creaturescale", 1) - ->editable(0, 1, .1, "Creature scale", "", 'C'); + ->editable(0, 1, .1, "Creature scale", "", 'C') + ->set_extra([] { dialog::addInfo(XLAT("changing this during shmup is counted as cheating")); }) + ->set_reaction([] { if(shmup::on) cheater++; }); param_f(vid.height_width, "heiwi", "3d-heightwidth", 1.5) ->editable(0, 1, .1, "Height to width", "", 'h'); param_f(vid.yshift, "yshift", "Y shift", 0) diff --git a/geometry.cpp b/geometry.cpp index 4a8dd44a..51edf769 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -576,8 +576,6 @@ EX void add_wall(int i, const vector& h) { static constexpr ld hcrossf7 = 0.620672, hexf7 = 0.378077, tessf7 = 1.090550, hexhexdist7 = 0.566256; #endif -EX bool scale_used() { return (shmup::on && geometry == gNormal && BITRUNCATED) ? (cheater || autocheat) : true; } - EX bool is_subcube_based(eVariation var) { return among(var, eVariation::subcubes, eVariation::dual_subcubes, eVariation::bch, eVariation::bch_oct); } @@ -784,13 +782,13 @@ void geometry_information::prepare_basics() { if(msphere && geuclid) scalefactor *= (1 + vid.depth); if(msphere && ghyperbolic) scalefactor *= sinh(1 + vid.depth); - if(scale_used()) { + if(true) { scalefactor *= vid.creature_scale; orbsize *= vid.creature_scale; } zhexf = BITRUNCATED ? hexf : crossf* .55; - if(scale_used()) zhexf *= vid.creature_scale; + zhexf *= vid.creature_scale; if(WDIM == 2 && GDIM == 3) zhexf *= 1.5, orbsize *= 1.2; if(cgi.emb->is_euc_in_hyp()) { @@ -1314,7 +1312,7 @@ EX string cgi_string() { V("RS:", fts(geom3::euclid_embed_rotate)); } - if(scale_used()) V("CS", fts(vid.creature_scale)); + if(vid.creature_scale != 1) V("CS", fts(vid.creature_scale)); if(WDIM == 3) V("HTW", fts(vid.height_width));