![]() |
#41 | |
Knight
Join Date: Aug 2009
Posts: 670
![]() |
Quote:
|
|
![]() |
![]() |
![]() |
#42 | |
Knight
Join Date: Sep 2010
Location: England
Posts: 958
![]() |
Quote:
|
|
![]() |
![]() |
![]() |
#43 | |
Prophet
Join Date: May 2012
Location: Adelaide, Australia
Posts: 2,602
![]() |
Quote:
The trouble I find with guaranteeing a win is that it's very hard to do without guaranteed escape. Guaranteed escapes mean no feeling of danger or challenge if you play carefully. I think if you ask an experienced player what their major cause of dying is, then the answer will be carelessness. Carelessness borne of a tedium of 99% of the time being completely safe, then quickly bashing buttons while not paying much attention. It's how I die. It's why I play the start of V over & over then quit halfway through because the current game has become boring. Sorry if my post contains too much negativity but it is the major reason I rarely play V. I love so much about it. What frustrates me is challenge via tedium. Edit: 2 examples of non-guaranteed escapes. Sil: Few imperfect escapes (excange places, song of elbereth/lorien, sprinting etc.) Tome 4: Escapes can be shut down (stuns, confusion etc.) but you can stack the deck with multiple escapes Last edited by wobbly; November 14, 2013 at 17:54. |
|
![]() |
![]() |
![]() |
#44 |
Adept
Join Date: Sep 2010
Location: Indianapolis IN, USA
Posts: 246
![]() |
Chiming in... I agree with the poster above. I beat Angband three times and left it late last year, solely because of the tedium. With guaranteed escapes and endless stair-scumming, it's mostly an exercise in concentration. Every character can win, IF you are paying attention.
That said, there's nothing WRONG with that. If you implement a timer of any sort, you're moving Angband to be a more direct competitor with other games like Sil (timer = mindepth), ADOM (timer = death by mutation), and Crawl (timer = only so many permalevels to grind). Is that what you want? Can you be competitive with those games? i.e. if you make Angband like those other games, will Angband be interesting in comparison? What will differentiate it? |
![]() |
![]() |
![]() |
#45 |
Adept
Join Date: Apr 2011
Posts: 103
![]() |
I don't know if this directly applies to the conversation, but a while back I wrote code to skip dungeon levels to help with testing.
It is from March 2012, so the diff cannot be directly applied, but it was: Code:
commit 4088eba4f6f2cb961c707c607bb73c679d05e41c Date: Tue Mar 13 12:14:26 2012 -0400 First pass at skipping dungeon levels. diff --git a/src/cmd2.c b/src/cmd2.c index e9c75a8..9f60bf9 100644 --- a/src/cmd2.c +++ b/src/cmd2.c @@ -62,7 +62,7 @@ void do_cmd_go_up(cmd_code code, cmd_arg args[]) p_ptr->create_down_stair = TRUE; /* Change level */ - dungeon_change_level(p_ptr->depth - 1); + dungeon_change_level(p_ptr->depth - level_change_step); } @@ -89,7 +89,11 @@ void do_cmd_go_down(cmd_code code, cmd_arg args[]) p_ptr->create_down_stair = FALSE; /* Change level */ - dungeon_change_level(p_ptr->depth + 1); + if (p_ptr->depth == 0) { + dungeon_change_level(1); + } else { + dungeon_change_level(p_ptr->depth + level_change_step); + } } diff --git a/src/dungeon.c b/src/dungeon.c index dcb9271..5ef5322 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -39,6 +39,26 @@ */ void dungeon_change_level(int dlev) { + int i; + + /* check for special levels */ + if (dlev > p_ptr->depth) { + for (i = p_ptr->depth; i < dlev; i++) { + if (is_quest(i)) break; + if (i >= MAXDEPTH - 1) break; + } + } else { + for (i = p_ptr->depth-1; i > dlev; i--) { + if (is_quest(i)) break; + if (i <= 0) break; + } + } + dlev = i; + + /* make sure dlev is in the valid range */ + if (dlev < 0) dlev = 0; + if (dlev > MAXDEPTH - 1) dlev = MAXDEPTH - 1; + /* New depth */ p_ptr->depth = dlev; diff --git a/src/effects.c b/src/effects.c index 7a4d163..667e738 100644 --- a/src/effects.c +++ b/src/effects.c @@ -1930,7 +1930,7 @@ bool effect_do(effect_type effect, bool *ident, bool aware } wieldeds_notice_flag(p_ptr, OF_FEATHER); - dungeon_change_level(p_ptr->depth + 1); + dungeon_change_level(p_ptr->depth + level_change_step); return TRUE; } diff --git a/src/externs.h b/src/externs.h index 65229b0..963b99e 100644 --- a/src/externs.h +++ b/src/externs.h @@ -54,6 +54,7 @@ extern u32b seed_flavor; extern u32b seed_town; extern s16b num_repro; extern s32b turn; +extern byte level_change_step; extern int use_graphics; extern bool use_graphics_nice; extern s16b signal_count; @@ -194,7 +195,7 @@ extern int int_to_roman(int n, char *roman, size_t bufsize); extern void flush(void); extern void flush_fail(void); extern struct keypress inkey(void); -extern ui_event inkey_m(void); +extern ui_event inkey_m(void); extern ui_event inkey_ex(void); extern void anykey(void); extern void bell(const char *reason); diff --git a/src/variable.c b/src/variable.c index c7af4ac..795b0ca 100644 --- a/src/variable.c +++ b/src/variable.c @@ -66,7 +66,10 @@ u32b seed_town; /* Hack -- consistent to s16b num_repro; /* Current reproducer count */ -s32b turn; /* Current game turn */ +s32b turn; /* Current game turn */ + +byte level_change_step = 3; /* how many levels to skip when going up or down +/* should be moved to player_other struct */ int use_graphics; /* The "graphics" mode is enabled */ bool use_graphics_nice; /* The 'nice' "graphics" mode is enabled Code:
/* change level */ if (p_ptr->depth == 0) { dungeon_change_level(1); } else if (level_change_step > 1) { int i, target_depth = p_ptr->depth; /* Calculate target_depth */ for (i = level_change_step; i > 0; i--) { if (target_depth >= MAX_DEPTH-1) break; if (is_quest(++target_depth)) break; } dungeon_change_level(target_depth); } else { dungeon_change_level(p_ptr->depth + 1); } For anti-grinding, something I considered in the past, and that I still want to try, is to just cache the last 4 dungeon levels visited, for short term persistent levels. Last edited by Blue Baron; November 14, 2013 at 19:50. Reason: removed email |
![]() |
![]() |
![]() |
#46 | |
Angband Devteam member
|
Quote:
(I never agree with him, yet this is all gold.)
__________________
"3.4 is much better than 3.1, 3.2 or 3.3. It still is easier than 3.0.9, but it is more convenient to play without being ridiculously easy, so it is my new favorite of the versions." - Timo Pietila |
|
![]() |
![]() |
![]() |
#47 |
Ironband/Quickband Maintainer
Join Date: Nov 2007
Posts: 1,009
![]() |
Dunno what you're on about Magnate, you normally agree with me, I could find any number of examples
A.
__________________
Ironband - http://angband.oook.cz/ironband/ |
![]() |
![]() |
![]() |
#48 |
Veteran
Join Date: Oct 2011
Location: Toronto, Canada
Posts: 2,400
![]() |
Metadisagreement
__________________
Glaurung, Father of the Dragons says, 'You cannot avoid the ballyhack.' |
![]() |
![]() |
![]() |
#49 |
Vanilla maintainer
Join Date: Apr 2007
Location: Canberra, Australia
Age: 57
Posts: 9,464
Donated: $60
![]() ![]() |
Thanks everyone for the excellent posts in the last 12 hours. It's helping a lot.
__________________
One for the Dark Lord on his dark throne In the Land of Mordor where the Shadows lie. |
![]() |
![]() |
![]() |
#50 |
Ironband/Quickband Maintainer
Join Date: Nov 2007
Posts: 1,009
![]() |
More thoughts on facilitating diving without preventing grinding... Reduce dungeon to 50 levels corresponding to existing 2, 4, 6... 100. When a character descends to a new maxdepth that exceeds their clvl, give them a random stat boost.
Also, adopt semi-connected stairs to prevent stairscumming. A.
__________________
Ironband - http://angband.oook.cz/ironband/ |
![]() |
![]() |
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Display Modes | |
|
|