Angband Forums

Angband Forums (http://angband.oook.cz/forum/index.php)
-   Vanilla (http://angband.oook.cz/forum/forumdisplay.php?f=3)
-   -   Really Want To Fight Ancestors (http://angband.oook.cz/forum/showthread.php?t=4120)

tuppe666 February 10, 2011 10:02

Really Want To Fight Ancestors
 
I have played these things for about forever and Angband and its Variants(Zangand really) and the only feature I truly miss is ghosts from my savefile. I have never come close to completing any of these games, and never cheated, but the sting of permanent death lessened by the chance of a killing really fun unique with a good drop.

Philip February 10, 2011 10:09

They are gone now, but O and FA among others still have them. I suggest you look there. Are you perhaps asking for it as an option ala NPP? I don't think that will happen for some reason.

CunningGabe February 10, 2011 12:17

takkaria is (or at least was) interesting in having them return: see ticket #39 on the issue tracker. http://trac.rephial.org/ticket/39

d_m February 10, 2011 15:12

I am also interested in having player ghosts.

Takkaria and I have tried to figure out a good way to support them without the problems that they (apparently) had.

nppangband February 10, 2011 22:28

Quote:

Originally Posted by d_m (Post 48408)
I am also interested in having player ghosts.

Takkaria and I have tried to figure out a good way to support them without the problems that they (apparently) had.

Check out NPP. I am happy with the way they are generated, and their strength, and most of the code is clean and "Vanilla Angbandworthy". I think they are finally balanced to 1) dangerous, but not unfair/instadeath, 2) give an appropriate reward that make them worth fighting.

The only part that extremely ugly code (which I inherited from the old patch) is the way it stores the player_ghost names and depths of death. There are just a bunch of files in a folder that can be loaded. Instead, I want to changed so all of the default ghost templated are in an edit file that is loaded along with everything else in init.2. And then additional ghosts resulting from player deaths are added as a part of the savefile.

I plan on changing/improving this for NPP 0.6.0 when I break savefile compatibility. Unless, of course, you all beat me to it and do your own player ghost patch. In that case, I will shamelessly piggyback on all your hard work. :)

Consistent with with any and all items on the Angband wishlist that are current features of NPP, I will happily code a patch for your consideration.

Derakon February 10, 2011 22:43

I should note for the record that in my OSX builds of NPPAngband, all ghosts are named "Nobody". I'd guess this has something to do with the ghost files not getting written properly, but I never bothered to investigate.

In my ideal world, player ghosts' abilities would be based on the class of the character. Otherwise ghosts basically are semirandom unique monsters whose only connection to the dead character is the name. In a really really ideal world, you'd have a template for each class which would apply multipliers to various stats based on the level of the character at death. Then you'd end up with player ghosts that actually fight something like they did when they were alive.

Of course, that'd mean the early levels would be littered with the ghosts of young mages...

d_m February 10, 2011 22:56

Quote:

Originally Posted by nppangband (Post 48421)
Check out NPP. I am happy with the way they are generated, and their strength, and most of the code is clean and "Vanilla Angbandworthy". I think they are finally balanced to 1) dangerous, but not unfair/instadeath, 2) give an appropriate reward that make them worth fighting.

The only part that extremely ugly code (which I inherited from the old patch) is the way it stores the player_ghost names and depths of death. There are just a bunch of files in a folder that can be loaded. Instead, I want to changed so all of the default ghost templated are in an edit file that is loaded along with everything else in init.2. And then additional ghosts resulting from player deaths are added as a part of the savefile.

I plan on changing/improving this for NPP 0.6.0 when I break savefile compatibility. Unless, of course, you all beat me to it and do your own player ghost patch. In that case, I will shamelessly piggyback on all your hard work. :)

Consistent with with any and all items on the Angband wishlist that are current features of NPP, I will happily code a patch for your consideration.

Awesome!

I will totally look at how these work in NPP and maybe try to code up something for V to test out. If I can get ghosts saved into the savefile properly, I will try to make sure NPP can pull this feature back.

If I have any ideas for how to improve player ghosts I'll definitely bounce those off you first.

Nick February 10, 2011 23:05

Quote:

Originally Posted by Derakon (Post 48424)
In my ideal world, player ghosts' abilities would be based on the class of the character. Otherwise ghosts basically are semirandom unique monsters whose only connection to the dead character is the name.

This is how they work in FA/O.

Quote:

In a really really ideal world, you'd have a template for each class which would apply multipliers to various stats based on the level of the character at death. Then you'd end up with player ghosts that actually fight something like they did when they were alive.
Now that is a cool idea. I must put it on one of my lists of things to do...

nppangband February 11, 2011 02:10

Quote:

Originally Posted by Derakon (Post 48424)
I should note for the record that in my OSX builds of NPPAngband, all ghosts are named "Nobody". I'd guess this has something to do with the ghost files not getting written properly, but I never bothered to investigate.

Yes, this is the one part of the player ghost code taht is garbage. Because I intend to nuke that part of the code in the next month or two, I looked at it, didn't see an obvious problem, and shifted to higher priority items. In windows, it fills us the bones directory with 127 bogus templates. I don't know why.

Quote:

Originally Posted by Derakon (Post 48424)
In my ideal world, player ghosts' abilities would be based on the class of the character. Otherwise ghosts basically are semirandom unique monsters whose only connection to the dead character is the name. In a really really ideal world, you'd have a template for each class which would apply multipliers to various stats based on the level of the character at death. Then you'd end up with player ghosts that actually fight something like they did when they were alive.

That's exactly how they work in NPP! When a player dies, it saves a file with the player's name, the depth they died, and their gender, race and class. There are a bunch of ghost race templates (vampire, skepaton, Lich, ghost, skelaton, wraith etc...) in monster.txt. When a player ghost is generated, it looks for a character ghost template that died around the dungeon depth (prepare_ghost function). It reads the player gender, race, and text, and starts making changes to the monster (prepare_ghost_race, and prepare_ghost_class). A troll ghost would get a boost in hit points and the rgeneration flag, a race with resist poison would make a ghost resist poison, the combat damage dice and sides are adjusted with the race's fighting abilities, etc... Then it does the same thing for class. A mage ghost would get spells similar to the mage spellset, depending on the spell level and ghost template level. Priest ghosts get spells similar to their spellset...fighting abilities are adjusted again according to the class's fighting abilities.

Essentially, every single race/class combination will produce a different player ghost. And this player ghost will also be different the deeper in the dungeon it is created. This part was rather difficult to balance, but I think after many years it is finally there. Note there are no random numbers involved in these adjustments, so the ghost is the exact same when a player exits/saves the game, then re-opens the savefile.

If, when a player ghost monster is created, and there has been no player death in that part of the dungeon, it generates a ghost using the name of one of the maintainers of Angband or NPPAngband. Race and class for the maintainer templates are randomly chosen, and the ghost template is taken from there.

CunningGabe February 11, 2011 02:42

Quote:

Originally Posted by nppangband (Post 48430)
That's exactly how they work in NPP! When a player dies, it saves a file with the player's name, the depth they died, and their gender, race and class. There are a bunch of ghost race templates (vampire, skepaton, Lich, ghost, skelaton, wraith etc...) in monster.txt. When a player ghost is generated, it looks for a character ghost template that died around the dungeon depth (prepare_ghost function). It reads the player gender, race, and text, and starts making changes to the monster (prepare_ghost_race, and prepare_ghost_class). A troll ghost would get a boost in hit points and the rgeneration flag, a race with resist poison would make a ghost resist poison, the combat damage dice and sides are adjusted with the race's fighting abilities, etc... Then it does the same thing for class. A mage ghost would get spells similar to the mage spellset, depending on the spell level and ghost template level. Priest ghosts get spells similar to their spellset...fighting abilities are adjusted again according to the class's fighting abilities.

That is really, really cool.

buzzkill February 11, 2011 02:42

Quote:

Originally Posted by Derakon (Post 48424)
Of course, that'd mean the early levels would be littered with the ghosts of young mages...

Casper and friends?

Nick February 11, 2011 04:30

The other thing to point out about the O/NPP/FA system (and I think they are all essentially the same) is that the player (a) gets a message when the ghost spawns and (b) has full knowledge of it. These are really important, as they give you a chance to fight, or avoid, or leave the level immediately.

Philip February 11, 2011 07:34

Not instadeath? Well, probably not, but my most succesful character in O, a high-elf assasin, was killed by a Nether Wraith Ranger player ghost. 2 rounds and I was gone. Since it can go into walls, and I didn't know this, I was trying to teleport it. Kinda annoying. Still, player ghosts in the early levels are quite useful to kill, since they have drops. Unless they were a druid and go crazy summoning and stuff.

nppangband February 11, 2011 13:56

Quote:

Originally Posted by Nick (Post 48442)
The other thing to point out about the O/NPP/FA system (and I think they are all essentially the same) is that the player (a) gets a message when the ghost spawns and (b) has full knowledge of it. These are really important, as they give you a chance to fight, or avoid, or leave the level immediately.

Excellent points! I knew I forgot something.

I actually don't remember where I got the player ghost option from. Was it a patch? Has it always been a part of Oangband? Or may be from the old, old, old Angband source.

d_m February 11, 2011 14:16

Quote:

Originally Posted by nppangband (Post 48485)
Excellent points! I knew I forgot something.

I actually don't remember where I got the player ghost option from. Was it a patch? Has it always been a part of Oangband? Or may be from the old, old, old Angband source.

I think player ghosts used to exist in V, or at least, code to support them used to exist in V.

Derakon February 11, 2011 15:14

Back in the frog-knows days, yes, but they went out before Ben took over, so if you took them from old V source then you must've done a lot of updating to make the code work. :)

(I once got the Trident of Ulmo from a player ghost around 400' in frog-knows. That was a fun character)

LostTemplar February 12, 2011 13:34

Quote:

If I can get ghosts saved into the savefile properly
does not look like good idea, same as why high scores are not in savefile, ghosts should be stored separately.

Philip February 12, 2011 14:01

But seriously, I would like to see them in V at least as an option(not likely).

Nomad February 12, 2011 15:30

Quote:

Originally Posted by LostTemplar (Post 48589)
Quote:

Originally Posted by d_m (Post 48425)
If I can get ghosts saved into the savefile properly

does not look like good idea, same as why high scores are not in savefile, ghosts should be stored separately.

Could you not pull ghost data from the high scores file? You've got a list of dead characters with race, class, clevel, dungeon level and final gold stored right there. (And even the cause of death, if you want to get really clever and generate the type of monster that made the kill along with the ghost.)

d_m February 12, 2011 16:50

Quote:

Originally Posted by Nomad (Post 48597)
Could you not pull ghost data from the high scores file? You've got a list of dead characters with race, class, clevel, dungeon level and final gold stored right there. (And even the cause of death, if you want to get really clever and generate the type of monster that made the kill along with the ghost.)

I think you're right, but you also want to know whether that ghost has been seen before and/or killed before, and you may actually want to store more things on player death (e.g. items carried).

But certainly as a first pass it could be possible.

Derakon February 12, 2011 16:52

You could mark the highscores file to indicate if a given character was ghost-eligible. Adding a bit to each entry doesn't seem like too bad a hack to me.

d_m February 12, 2011 17:03

Quote:

Originally Posted by Derakon (Post 48607)
You could mark the highscores file to indicate if a given character was ghost-eligible. Adding a bit to each entry doesn't seem like too bad a hack to me.

That's a good point...it would also have the nice property that you could reduce the chance that a level 2 mage becomes a ghost (to avoid having dlvl 1 litered with howling ghosts and corpses of newbies)

nppangband February 12, 2011 19:11

Quote:

Originally Posted by d_m (Post 48610)
That's a good point...it would also have the nice property that you could reduce the chance that a level 2 mage becomes a ghost (to avoid having dlvl 1 litered with howling ghosts and corpses of newbies)

At least the way it is in NPP, player ghosts wouldn't appear that shallow. The earlist ghost has a dative depth of 300'. There is alot of special code to handle this (if you want to find the relevant code in NPP, grep the flag RF2_PLAYER_GHOST to see all the special handling they get throughout the source code)

myshkin February 12, 2011 21:59

Quote:

Originally Posted by nppangband (Post 48617)
The earlist ghost has a dative depth of 300'.

I like the typo. "I give 300' this novice rogue ghost."

tuppe666 February 18, 2011 14:12

Having thought about it for a little while. I would rather the characters come back as undead at least in the early levels...and weakened, to be able to actually be invisible and go through walls seems very powerful especially on the early levels, but I so think it is important that you get as a portion of the items that you lost ammo excluded.

Bodkin February 18, 2011 17:28

Quote:

Originally Posted by myshkin (Post 48627)
I like the typo. "I give 300' this novice rogue ghost."

Nicely played.

Astaroth February 18, 2011 21:28

So much cool ideas... I like especially the different undead types... a noob character would either spawn as a Zangband-style pile of bones (I would really like to see that), or at most a skeleton or a zombie. When the level and the depth become higher, you have more chance to meet your older incarnations resurrected into higher forms of unlife!


All times are GMT +1. The time now is 21:38.

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