Angband.oook.cz
Angband.oook.cz
AboutVariantsLadderForumCompetitionComicScreenshotsFunniesLinks

Go Back   Angband Forums > Angband > Vanilla

Reply
 
Thread Tools Display Modes
Old September 9, 2020, 15:42   #1
PowerWyrm
Prophet
 
PowerWyrm's Avatar
 
Join Date: Apr 2008
Posts: 2,816
PowerWyrm is on a distinguished road
Stupid monster behavior when facing damaging terrain

Let's say you're in a corridor with a monster than can breathe fire powerfully and another monster that doesn't resist fire but is powerful enough to tank one breath. The monster breathes fire and lays down a lava tile like this (marked as '*'):

Code:
#x#
#.#########
#..@...*M.D
###########
For this case, the code will make M move towards the player and then since the tile is damaging, try to put it to safety, which is out of sight of the player (marked as 'x' in the corridor behind). M will then continue properly as if there was no damaging tile.

Now let's look at the opposite case:

Code:
#x#
#.#########
#..D..M*..@
###########
The same code will trigger, so when reaching the damaging tile, M will try to run to the "safe" spot which, being behind it, will make it move away from the player, going back to its previous location. We enter then an endless loop where M moves east to the damaging tile then west then east again.

This is absurd. Once on the damaging tile, the first check that should be made is "can M move forward normally?" If so there's no reason to force the monster to flee, it should simply continue forward.

EDIT: this doesn't happen in V, as "monster hates grid" and "monster is damaged by terrain" are both identical; to properly fix a potential problem, just replace code for monster_taking_terrain_damage() by

Code:
bool monster_taking_terrain_damage(struct monster *mon)
{
	return monster_hates_grid(cave, mon, mon->grid);
}
And this also removes duplicate code...
__________________
PWMAngband variant maintainer - check http://powerwyrm.monsite-orange.fr (or http://www.mangband.org/forum/viewforum.php?f=9) to learn more about this new variant!

Last edited by PowerWyrm; September 10, 2020 at 11:57.
PowerWyrm is offline   Reply With Quote
Old September 10, 2020, 11:38   #2
PowerWyrm
Prophet
 
PowerWyrm's Avatar
 
Join Date: Apr 2008
Posts: 2,816
PowerWyrm is on a distinguished road
Another stupid case:

Code:
#####
.....
M.#.@
.....
#####
When you have something unpassable like a wall or door, M easily uses the openings to come to you.

Code:
#####
.....
M.*.@
.....
#####
If the blockade is some damaging terrain, M simply stays stuck behind it and doesn't even try to look for the openings.

EDIT: in get_move_advance(), player is chosen as target if player is in LOS of the monster; a check should be made vs damaging terrain to use an alternate route if it's the case.
__________________
PWMAngband variant maintainer - check http://powerwyrm.monsite-orange.fr (or http://www.mangband.org/forum/viewforum.php?f=9) to learn more about this new variant!

Last edited by PowerWyrm; September 10, 2020 at 12:00.
PowerWyrm is offline   Reply With Quote
Old September 19, 2020, 19:10   #3
Egavactip
Swordsman
 
Join Date: Mar 2012
Posts: 364
Egavactip is on a distinguished road
In the game I just finished I was surprised to see even some of the most powerful uniques afraid to step into a single square of lava in order to get to me.
Egavactip is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Terrain Nick Vanilla 45 November 13, 2016 22:54
Monster behavior fizzix Vanilla 4 October 16, 2015 20:16
Terrain Nick Vanilla 14 February 23, 2014 00:07
Adding terrain to V Therem Harth Development 14 March 22, 2013 22:15
3.1.0beta monster behavior and a few other things tigen Vanilla 3 January 17, 2009 08:30


All times are GMT +1. The time now is 20:08.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, vBulletin Solutions Inc.