mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-27 06:27:17 +00:00
bringris:: BSHIFT achievement
This commit is contained in:
parent
8a0ff206d5
commit
ca23a13fc5
@ -680,6 +680,27 @@ bool shape_conflict(cellwalker cw) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool check_bshift(cellwalker c0, cellwalker c1) {
|
||||
if(c0.at->type != 6) return false;
|
||||
auto shape0 = build_from(piecelist[shape_id].code, c0);
|
||||
auto shape1 = build_from(piecelist[shape_id].code, c1);
|
||||
for(int i=0; i<isize(shape0); i++) {
|
||||
if(isNeighbor(shape0[i].at, c0.at))
|
||||
if(isNeighbor(shape1[i].at, c1.at))
|
||||
if(shape0[i].at != shape1[i].at)
|
||||
if(!isNeighbor(shape0[i].at, shape1[i].at)) {
|
||||
cell *cfound = nullptr;
|
||||
forCellEx(c, shape0[i].at) if(isNeighbor(c, shape1[i].at)) {
|
||||
cfound = c;
|
||||
}
|
||||
if(!cfound) continue;
|
||||
if(!cfound->wall) continue;
|
||||
if(shape1[i].at->cmove(up_dir())->wall) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
ld current_move_time_limit() {
|
||||
// return 50000 * pow(.9, completed) + 10000. / (1 + completed);
|
||||
return 3500 * pow(.995, completed * isize(level));
|
||||
@ -1007,6 +1028,7 @@ void shift_block(int dir, bool camera_only) {
|
||||
|
||||
if(camera_only || !shape_conflict(at1)) {
|
||||
// playSound(cwt.at, "hit-crush1");
|
||||
if(check_bshift(at, at1)) rv_achievement("BSHIFT");
|
||||
at = at1;
|
||||
if(solnil) {
|
||||
pView = pView * currentmap->adj(cwt.at, nilmap(dir));
|
||||
|
Loading…
Reference in New Issue
Block a user