1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-11-22 08:34:50 +00:00

fixed some inconsistencies in how Orb of Speed works in shmup

This commit is contained in:
Zeno Rogue
2025-10-10 12:44:53 +02:00
parent 4f3f1a9553
commit efc97b280e

View File

@@ -1428,7 +1428,7 @@ void movePlayer(monster *m, int delta) {
} }
playerfire[cpid] = true; playerfire[cpid] = true;
m->nextshot = curtime + (250 + 250 * players) * (bow::crossbow_mode() ? 4 : 1); m->nextshot = curtime + (250 + 250 * players) * (bow::crossbow_mode() ? 4 : 1) / (items[itOrbSpeed] ? 2 : 1);
turncount++; turncount++;
shootBullet(m); shootBullet(m);
@@ -2600,6 +2600,8 @@ EX int pvp_delay = 2000;
EX int count_pauses; EX int count_pauses;
EX bool in_pause; EX bool in_pause;
EX int speed_saving;
EX void turn(int delta) { EX void turn(int delta) {
if(split_screen && subscreens::split( [delta] () { turn(delta); })) return; if(split_screen && subscreens::split( [delta] () { turn(delta); })) return;
@@ -2653,6 +2655,11 @@ EX void turn(int delta) {
collisions.clear(); collisions.clear();
curtime += delta; curtime += delta;
if(items[itOrbSpeed]) {
curtime += speed_saving / 2;
speed_saving += delta;
curtime -= speed_saving / 2;
}
handleInput(delta); handleInput(delta);
@@ -2763,7 +2770,7 @@ EX void turn(int delta) {
if(items[itOrbBull]) for(int p=0; p<players; p++) if(items[itOrbBull]) for(int p=0; p<players; p++)
if(bulltime[p] < curtime - 600) orbbull::gainBullPowers(); if(bulltime[p] < curtime - 600) orbbull::gainBullPowers();
if(!((items[itOrbSpeed]/players) & 1)) { if(true) {
if(havewhat&HF_KRAKEN) kraken::attacks(), groupmove(moKrakenH, 0); if(havewhat&HF_KRAKEN) kraken::attacks(), groupmove(moKrakenH, 0);
moveworms(); moveworms();
moveivy(); moveivy();
@@ -2952,6 +2959,7 @@ EX void clearMemory() {
clearMonsters(); clearMonsters();
while(!traplist.empty()) traplist.pop(); while(!traplist.empty()) traplist.pop();
curtime = 0; curtime = 0;
speed_saving = 0;
nextmove = 0; nextmove = 0;
nextdragon = 0; nextdragon = 0;
visibleAt = 0; visibleAt = 0;