Nemesis System

Nemesis System

23.7k Downloads

Traits ... Strengths ... Weaknesses ... Skills ...???

frodare opened this issue ยท 6 comments

commented

In our current direction, it is not always clear how to categorize the attributes we are assigning to nemeses. This is a proposal to improve it.

All nemesis attributes will be considered traits. TraitType will still be an enumeration replacing the ones we currently have for the legacy traits and weaknesses. TraitType will have a getter to return whether or not it is a positive or negative trait (strength or weakness) and the maximum level supported. Traits will be stored as instances of the Trait class which will have TraitType type and int level fields. Think of the Trait class like the ItemStack class as it will have TraitType like ItemStack as item.

Traits will cover majority of nemesis behavior, except for personality. Personality will be neither positive or negative, but more like how they act. For instance one might cause the nemesis to panic for a second after giving or taking damage, another might cause the nemesis to change attack targets after every attack.

Traits will become stronger as their level is increased, not the level of the nemesis. One example might be:
Fire:

  • I - single fireball
  • II - three fireballs
  • III - 10 fireballs in a 120 degree spread
  • IV - random patches of ground start on fire
  • V - player are set on fire within a give radius

Not all traits would need to support multiple levels. Weakness could be affected by level as well.

Hand held items no longer need to be determined by primary trait.

Every time a nemesis is promoted, a routine will either upgrade one of the existing traits, or have a chance to add an additional trait. Unless all the current traits are max'ed out, in which case a new trait must be added.

Weakness will not be added until level 5, at which point the nemesis is stuck with it. We could add a game mechanic to allow player to curse nemeses with weakness, but that would be a discussion for a later date.

Traits will be saved on the Nemesis object in two different lists, one for strengths and one for weaknesses.

commented

Ok, so FIREBALL, HYDROPHOBIA, and FIREPROOF would all be traits, one determines his skill, one a weakness, and one a strength?

I think there should always be at least one weakness. But I'm negotiable on that.

If there's a getter that tells whether it's positive or negative, do we need two different lists?

commented

I like the idea of a separate personality for each. Can lead to Mudrat-esque hatred if we can make them expressive enough.

Levels are a great idea, too. We'll need to do some brainstorming about how that impacts each different skill.

commented

The weaknesses may need to go through an inverse leveling process. They start with Chicken V at level 1 and they panic around a chicken for 10 seconds. At level 3, they are Chicken IV and only panic for 8 seconds, and so on.

commented

I don't like like the idea of inverting the weakness levels, seems like it would be confusing.

The Traits would't need to be in different lists, that would just be for convenience so the weaknesses wouldn't need to be removed when working with them.

The problem I have with given weaknesses to early, is that it limits uniqueness. That might sound counter intuitive, but if we only make 5 weaknesses it would be pretty easy to just guess one. However if we have around 100 of them and they were more obscure, I would completely agree with you.

commented

The level doesn't have to be inverse, but the effect would be. So Level 1 weakness would be a bigger weakness than level 5. I can also see that making early nemeses too easy and late nemeses too hard. I just wouldn't want a level 10 nemesis to have a super exploitable weakness and make him too easy.

Yeah, convenience is good.

That's why a lot of the strengths are reverse of weaknesses. If you guess and throw an egg at a nemesis, he may freak out or he may become stronger and kick your ass.

commented

I see, I would want the weakness to get stronger as the number when up to avoid confusion, so for that logic it we could just start with it max'ed out like you were first thinking.