1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-06-25 14:43:01 +00:00

ru:: 'chill time' power

This commit is contained in:
Zeno Rogue 2025-05-14 17:56:20 +02:00
parent 4f0a662e05
commit 0ffb805ce8
5 changed files with 22 additions and 9 deletions

View File

@ -39,7 +39,7 @@ struct power {
power& while_paused(); power& while_paused();
power& while_dead(); power& while_dead();
power& identified_name(string, string); power& identified_name(string, string);
power& be_wearable(string wear_effect, string remove_effect); power& be_wearable(string wear_effect, string remove_effect, string worn = " (worn)");
power& be_jewelry(string jtype, string desc); power& be_jewelry(string jtype, string desc);
power& be_potion(); power& be_potion();
}; };

View File

@ -238,7 +238,7 @@ HINT 564 256 60 60
Hint: to read signs, stay near them for a second. Hint: to read signs, stay near them for a second.
NPC 564 256 0 NPC 564 256 0
@Forest Sign @Forest Sign
The sign reads, BEWARE THE WILD BOARS\n\nThis forest path feels somehow hostile indeed. You feel you will need to use your figthing skills soon.\n\nFights may be difficult if you try to handle them at the same speed as exploration. Press [key:dexmode] to slow down time when expecting combat. If you want to resume quick exploration, press [key:dexmode] again. The sign reads, BEWARE THE WILD BOARS\n\nThis forest path feels somehow hostile indeed. You feel you will need to use your figthing skills soon.\n\nFights may be difficult if you try to handle them at the same speed as exploration. Press [key:chill time] to slow down time when expecting combat. If you want to resume quick exploration, press [key:chill time] again.
OK OK
MOVE 2 Forest Path MOVE 2 Forest Path

View File

@ -71,11 +71,11 @@ power& power::be_jewelry(string jtype, string xdesc) {
return self; return self;
} }
power& power::be_wearable(string wear_effect, string remove_effect) { power& power::be_wearable(string wear_effect, string remove_effect, string worn) {
auto gn = get_name; auto gn = get_name;
get_name = [this, gn] { get_name = [this, gn, worn] {
string s = gn(); string s = gn();
if(flags & ACTIVE) s += " (worn)"; if(flags & ACTIVE) s += worn;
return s; return s;
}; };
auto ac = act; auto ac = act;
@ -145,6 +145,7 @@ power& gen_power(int key, string name, string desc, string glyph, color_t color,
power *extra_life; power *extra_life;
int gold_id; int gold_id;
power *dexmode;
void power_death_revert(power& p) { void power_death_revert(power& p) {
int q0 = p.qty_filled; int q0 = p.qty_filled;
@ -242,13 +243,20 @@ void gen_powers() {
).is_starting(), ).is_starting(),
gen_power('p', "pause", gen_power('p', "pause",
"Becoming an alchemist requires intelligence: thinking quickly to react to surprising effects of experiments. " "Becoming an alchemist requires intelligence: thinking quickly to react to surprising effects of experiments. "
"To reflect this, you can use this power at any time to give yourself more time to think about the situation.", "To reflect this, you can use this power at any time to give yourself more time to think about the situation.",
"-", 0xFF0000FF, "-", 0xFF0000FF,
[] (data& d) { [] (data& d) {
if(d.keystate == 1) cmode = (cmode == mode::paused ? mode::playing : mode::paused); if(d.keystate == 1) cmode = (cmode == mode::paused ? mode::playing : mode::paused);
}).is_starting().while_paused(), }).is_starting().while_paused(),
dexmode = &gen_power('c', "chill time",
"Concentrate to make the timing of your moves perfect.\n\n"
"From the player's point of view, this makes the game run slower.\n\nThe higher your Dexterity, the slower the game becomes.",
"-", 0xFF0000FF,
[] (data& d) {
}).is_starting().while_paused().be_wearable("You concentrate.", "You calm down.", " (on)"),
gen_power(' ', "dagger", gen_power(' ', "dagger",
"This sharp dagger is very useful during the preparation of alchemical ingredients, but it works as a basic weapon too.", "This sharp dagger is very useful during the preparation of alchemical ingredients, but it works as a basic weapon too.",
")", 0xFFFFFFFF, ")", 0xFFFFFFFF,

View File

@ -409,7 +409,12 @@ void add_platf_hooks() {
}); });
rogueviz::rv_hook(shmup::hooks_turn, 90, [=] (int d) { rogueviz::rv_hook(shmup::hooks_turn, 90, [=] (int d) {
gtime += d;
ld tscale = 1;
if(dexmode->flags & ACTIVE)
tscale *= 10. / (10 + m.current_stats[stat::dex]);
gtime += d * tscale;
while(gtime > 1000. / game_fps) { while(gtime > 1000. / game_fps) {
gtime -= 1000. / game_fps; gtime -= 1000. / game_fps;

View File

@ -10,10 +10,10 @@ statarray<statinfo> statdata;
void draw_stats() { void draw_stats() {
statdata[stat::str] = {'s', "Strength", "Affects the strength of your mundane melee attacks."}; statdata[stat::str] = {'s', "Strength", "Affects the strength of your physical attacks."};
statdata[stat::con] = {'t', "Toughness", "Affects the amount of hitpoints you have."}; statdata[stat::con] = {'t', "Toughness", "Affects the amount of hitpoints you have."};
statdata[stat::wis] = {'w', "Wisdom", "Affects the power of your alchemy."}; statdata[stat::wis] = {'w', "Wisdom", "Affects the power of your alchemy."};
statdata[stat::dex] = {'d', "Dexterity", "Affects the strength of your mundane missile attacks."}; statdata[stat::dex] = {'d', "Dexterity", "Improves your 'chill time' power."};
render_the_map(); render_the_map();
draw_inventory_frame(); draw_inventory_frame();