Opened 4 years ago

Last modified 4 years ago

#1693 new change

Playable (full) troll race

Reported by: daniel.santos Owned by:
Milestone: Future Keywords: player
Cc:

Description

Hello guys. This is really just a "screwing around" thing. I added a playable troll race. Here's the summary:

  • Is vulnerable to light
  • Takes damage from casting "Light Area" (you can kill yourself)
  • Light damage is mitigated by having light resistance (not yet tested)
  • Takes light damage from the flash of using Destruction
  • Troll player takes damage when in town during day (double if midday).
  • When player is troll (i.e., has OF_VULN_LIGHT flag), the time of day is printed at the bottom of the screen. "Sunset", "Evening", "Midnight" and "Early Morning" are displayed in green, "Sunrise" in yellow and "Morning", "Midday" and "Afternoon" in red.

I think it needs balancing. If you guys are interested, I can work on it more or leave it up to somebody else to balance it better. I haven't played it very much to see how it actually plays. I think the hit-dice may be too high (16 atm), and it would be nice if I could modify it further for better night vision, and give him limited day vision (inverse of normal "infravision").

Anyway, let me know if you guys are interested and I can fix it up further.

Oh, also, I'm unsure I've implemented the corresponding changes in borg correctly.

Attachments (13)

0001-Add-troll-player-race.patch (12.1 KB) - added by daniel.santos 4 years ago.
initial implementation
0001-Add-Trolls-Orcs-with-light-vulnerability.patch (10.0 KB) - added by daniel.santos 4 years ago.
0002-Do-not-allow-stats-below-3-and-force-usage-of-points.patch (1.9 KB) - added by daniel.santos 4 years ago.
0003-Possibly-correct-changes-to-borg.patch (2.3 KB) - added by daniel.santos 4 years ago.
0001-Anomalous-races-Use-points-to-keep-stats-above-3.patch (2.4 KB) - added by daniel.santos 4 years ago.
0002-Anomalous-races-Larger-races-to-eat-more-food.patch (1.7 KB) - added by daniel.santos 4 years ago.
0003-Anomalous-races-Add-new-flag-VULN_LIGHT.patch (13.3 KB) - added by daniel.santos 4 years ago.
0004-Possibly-correct-changes-to-borg-for-VULN_LIGHT-flag.patch (2.2 KB) - added by daniel.santos 4 years ago.
0006-Refactor-get_obj_num_by_kind.patch (2.0 KB) - added by daniel.santos 4 years ago.
This is a function that I touch later in the raw meat patches, but it can use some refactoring w/o my other changes
0007-Add-ability-to-specify-sval-in-make_object-et.-al.patch (7.2 KB) - added by daniel.santos 4 years ago.
I'm not so sure on this one and I may implement the raw meat as its own tval (instead of adding it to the FOOD_GOOD group)
0008-Add-raw-meat-to-help-offset-troll-appetite.patch (7.8 KB) - added by daniel.santos 4 years ago.
0009-fix-expand-size-of-player_race-weight-fields.patch (1.1 KB) - added by daniel.santos 4 years ago.
fix problem with troll weight not fitting into byte value
0005-Finally-add-full-Troll-race.patch (705 bytes) - added by daniel.santos 4 years ago.
fix: Correct race index of troll

Download all attachments as: .zip

Change History (22)

Changed 4 years ago by daniel.santos

initial implementation

comment:1 Changed 4 years ago by daniel.santos

            _______________________                i) Information
           /                       \         ___   m) Messages
          /                         \ ___   /   \  f) File dump
         /            RIP            \   \  :   :  v) View scores
        /                             \  : _;,,,;_ x) Examine items
       /              Nug              \,;_        h) History
      |               the               |   ___    s) Spoilers
      |             Gallant             |  /   \   r) Keep randarts
      |                                 |  :   :   q) Quit
      |             Paladin             | _;,,,;_   ____
      |            Level: 1             |          /    \
      |             Exp: 0              |          :    :
      |             AU: 61              |          :    :
      |        Killed on Level 0        |         _;,,,,;_
      |           by the sun.           |
      |                                 |
      |   by Sat Oct 13 10:57:22 2012   |
     *|   *     *     *    *   *     *  | *
_____)/\\_)_/___(\/___(//_\)/_\//__\\(/_|_)__________________________

comment:2 follow-up: Changed 4 years ago by magnate

Wow! This is interesting. Just commenting to note that you may not get a detailed response for a while, as most active devs are working on Pyrel at the moment. 3.4.0 is out (and 3.4.1 is due out very soon), but nobody has stepped up to lead development or release of 3.5 yet. When they do, it'll be their call.

Thanks for the contribution.

comment:3 in reply to: ↑ 2 Changed 4 years ago by daniel.santos

Replying to magnate:

Thanks for the reply!

I'm going to play with it some more. I've already tweaked a number of things, but I think I need to look at some old D&D references and find a better place for their stats to be. Ideally, they will enjoy some nice advantages in some places and suffer penalties elsewhere. I think that the in-town sun penalty should probably scale somehow with level and perhaps create a "you've been in the sun too long, you die" result. Maybe even cause some vendors to refuse to deal with them (depending upon race?) but offer them a less convenient or cost-effective means to trade, similar to the black market (maybe they will always deal with a troll, while some other store owners will always refuse?). Hmm, better yet, perhaps the existing black market can be extended to keep the player going when others wont deal with them (food, scrolls of recall, etc.). My other thought was that they have to find random encounters in town who will deal with them.

Anyway, I think there should also be a few more penalties in the dungeon -- nuking myself to death with Light Area was fun, but it still doesn't feel different enough from normal play with another race. I'll play with it some more and post when I come up with something else.

comment:4 Changed 4 years ago by daniel.santos

I've read up on a little on that Pyrel project and I'm glad to see Angband moving to a more modern and *maintainable* architecture! I played with the thought, on and off, of porting it to C++ with XML with all of the rules, stats, etc in xml. Hopefully, the end result will allow for multiple interfaces to the abstract Python game? (like a 3d one written in C++ hopefully?)

Anyway, here's version two of my patches. Troll seems pretty descent now, although it would be better to start their game at night, but that would mean switching day & night through out the whole code. That wouldn't be too hard, the day/night code is all hacky and it should really use some simple inline function somewhere to determine the time of day.

Lastly, I added Orc and haven't tested him yet, but it seemed logical to add him (also light-sensitive).

Changed 4 years ago by daniel.santos

Changed 4 years ago by daniel.santos

comment:5 Changed 4 years ago by daniel.santos

Hmm, is there not a way to mark a previous attachment as obsolete? These three replace the original attachment

comment:6 Changed 4 years ago by daniel.santos

Oh yeah, I also thought about requiring their food consumption to increase (double the half-troll) and add something so that some animals in the dungeon will yield mutton, which they can eat, since that's probably one of the parts that hurts the most, not being able to go shop at any given time.

comment:7 Changed 4 years ago by daniel.santos

So after playing a troll to level 27 (making changes in code as I go), I find it quite fun! There's still a lot that needs to be done and I think I need to redo my "raw meat" patches (I added them to the TV_FOOD tval, but I think I need to give them their own tval).

I have a new patch set now, the first three are pretty much ready, the rest is preliminary. First off, I've modified it so that heavy races consume more food. More accurately, food just nourishes them less, so they require more of it. Satisfy Hunger still knocks it out.

To help offset this, I've added some "raw meat" objects that drop randomly from animals. I think the drop rate is too high at the moment however, I'll have to play it more.

So far, it seems mostly balanced, although I'm still uncertain about the hit die of 14. I'm not concerned about it being so high, I'm just not convinced yet that the bonus is offset by the liabilities.

  [Angband v3.5-dev-33-g037beb1-dirty Character Dump]

 Name   Nug                                      Self  RB  CB  EB   Best
 Sex    Male         Age             37   STR:     16 +10  -1  +3 18/100
 Race   Troll        Height         111   INT:     14  -8  -3  +0      3
 Class  Priest       Weight         340   WIS:     16  -4  +3  +0     15
 Title  Curate       Social     Unknown   DEX:     15  -7  -1  +3     10
 HP     305/305      Maximize         Y   CON:     10  +7  +1  +1  18/10
 SP     33/33                             CHR:     11  -9  +2  +3      7

 Level               27   Armor    [40,+39]     Saving Throw         50%
 Cur Exp          44560   Fight    (+40,+6)     Stealth              Bad
 Max Exp          44560   Melee   (+43,+13)     Fighting          Superb
 Adv Exp          56000   Shoot    (+45,+8)     Shooting            Good
 MaxDepth   1400' (L28)   Blows    3.3/turn     Disarming            28%
 Game Turns      752455   Shots      1/turn     Magic Device          41
 Standard Turns   73457   Infra       60 ft     Perception       1 in 37
 Resting Turns     5852   Speed      Normal     Searching            15%
 Gold             12074   Burden  111.2 lbs

 Your mother was a Cave-Troll Warrior.  You have puke-yellow eyes,
 mangy sea-weed green hair, and blue ulcerous skin.

Here is the race as-is:

N:12:Troll
S:10:-8:-4:-7:7:-9
R:-10:-16:-16:-6:-1:5:40:-20:-20:0
X:14:150:6
I:21:26:14
H:125:16:107:10
W:425:85:375:60
F:SUST_STR | REGEN | VULN_LIGHT | RES_DARK
C:0|2

I think I'll use a table instead of a few paragraphs of what I think about current bonuses/penalties:

Stats-11 total penalty
Hit/Shoot/Throw?+40/-20/-20 - Perhaps throwing should be better than shooting
Hit die14 - For the race to really "fit the bill", I don't think hit die should be lowered. Instead, I think more liabilities need to be added to offset any imbalance.
DisarmThe penalty to disarm is largely offset by hit points & regeneration, as long as you don't try to disarm a trap door when you aren't ready to leave the level. In fact, many of the liabilities are offset by the combination of the hit points and regeneration.
SaveThe -16 to saving throws means that you get hit by spells very regularly.
XP mod:I originally had this at 140, which is where I think it's best. I put it to 150 for now until I can find some other things to nerf.
DevicesWith -16, using devices seems to fail about as much as it should.
StealthAt -6, it may be low enough, but can probably endure more nerfing.
Infravision60 ft. The problem is that you still can't see objects in darkness, but casting light hurts. This is probably OK, but trolls (as do some other races) have a strong sense of smell and this perception should be accounted for in some way. However, such a change would be fairly large and should probably involve telling the player what they smell and in which direction they smell it (relative to the path towards the smell). Additionally, they would have to learn smells as they go, just as they do with monster knowledge. That said, I think it's enough to give them really high infravision and omit the smelling.
DiggingI didn't see any reason to adjust this
Searchopen to comment (is this at all affected by intelligence?)

Edit: Also, I'm finding a few other problems with the daytime town thing. I've needed to leave a level (quickly) and used recall and arrived in town in the morning. I submerged to level 1 dungeon and waited out the day. The problem is that then the shops inventory was adjusted for that level. I'm considering some mechanism to allow a troll player to get to their house during the day and possibly to not take sun damage when they are in a building (their house or a shop). Rather or not you can make it to one depends upon where the dungeon entrance ends up being put in the town. So possibly one hack for this would be to always cause the dungeon entrance to appear within 4 squares of the home entrance when playing a troll? This would allow you to get there alive and then you could possibly wait out the day there?

This hack would seem to make sense from a story-line standpoint, as a troll would probably want their home near a cave (like the dungeon) anyway.

Last edited 4 years ago by daniel.santos (previous) (diff)

Changed 4 years ago by daniel.santos

Changed 4 years ago by daniel.santos

This is a function that I touch later in the raw meat patches, but it can use some refactoring w/o my other changes

Changed 4 years ago by daniel.santos

I'm not so sure on this one and I may implement the raw meat as its own tval (instead of adding it to the FOOD_GOOD group)

Changed 4 years ago by daniel.santos

comment:8 Changed 4 years ago by daniel.santos

I forgot to mention that in the patch set above, I've modified the town & sun damage. You no longer take sun damage while in a shop or your home and I've made is so that the dungeon stairs will always be within 5 spaces of the home entrance when playing a race that has the VUNL_LIGHT flag. I think this will work pretty well. This allows the troll to still get to their home to at least unload some items (if they have room) or pick some up and maybe even make it to one other nearby store during the day without killing themselves, but still keeps the town far from fully functional during the day.

Changed 4 years ago by daniel.santos

fix problem with troll weight not fitting into byte value

Changed 4 years ago by daniel.santos

fix: Correct race index of troll

comment:9 Changed 4 years ago by takkaria

  • Milestone changed from Triage to Future

Like with the Pixie race, I'd post it to the forums to see if people like the idea.

Note: See TracTickets for help on using tickets.